from telebot import logger
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton

from app.bot.keyboards.groups import create_groups_keyboard
from app.bot.keyboards.main_menu import get_main_menu
from app.bot.utils.tg_formatter import format_trigger_for_tg
from app.bot.utils.zabbix_alt import (
    get_region_groups,
    get_all_groups_for_region,
    fetch_triggers_data)


def process_region_selection(bot, chat_id, region_id):
    try:
        groups = get_region_groups(region_id)
        if groups is None:
            return bot.send_message(chat_id, "❌ Сервер Zabbix временно недоступен. Попробуйте позже.", reply_markup=get_main_menu())
        if not groups:
            return bot.send_message(chat_id, "Нет групп хостов для этого региона.", reply_markup=get_main_menu())

        markup = create_groups_keyboard(groups, region_id)
        bot.send_message(chat_id, "Выберите группу хостов:", reply_markup=markup)

    except Exception as e:
        bot.send_message(chat_id, f"Ошибка при получении групп: {str(e)}", reply_markup=get_main_menu())


def process_group_selection(bot, chat_id, group_id):
    try:
        triggers = fetch_triggers_data(group_id)
        if triggers is None:
            return bot.send_message(chat_id, "❌ Сервер Zabbix временно недоступен. Попробуйте позже.")

        if not triggers:
            return bot.send_message(chat_id, "Нет активных событий.")

        for trigger in triggers:
            try:
                text, url = format_trigger_for_tg(trigger)
                markup = InlineKeyboardMarkup()
                markup.add(InlineKeyboardButton(text="Открыть график", url=url))
                bot.send_message(chat_id, text, reply_markup=markup, parse_mode="HTML")
            except Exception as e:
                logger.error(f"[Bot] Ошибка при отправке сообщения о триггере: {e}")
                continue

    except Exception as e:
        bot.send_message(chat_id, f"Ошибка при получении событий: {str(e)}")



def process_all_groups_request(bot, chat_id, region_id):
    try:
        all_triggers = []
        groups = get_all_groups_for_region(region_id)
        zabbix_error = False

        for group in groups:
            try:
                triggers = fetch_triggers_data(group['groupid'])
                if triggers is None:
                    zabbix_error = True
                    continue
                if triggers:
                    all_triggers.extend(triggers)
            except Exception as e:
                logger.error(f"[Bot] Ошибка при обработке группы {group['name']}: {e}")
                continue

        if zabbix_error and not all_triggers:
            return bot.send_message(chat_id, "❌ Сервер Zabbix временно недоступен. Попробуйте позже.")

        if not all_triggers:
            return bot.send_message(chat_id, "Нет активных событий.")

        for trigger in all_triggers:
            try:
                text, url = format_trigger_for_tg(trigger)
                markup = InlineKeyboardMarkup()
                markup.add(InlineKeyboardButton(text="Открыть график", url=url))
                bot.send_message(chat_id, text, reply_markup=markup, parse_mode="HTML")
            except Exception as e:
                logger.error(f"[Bot] Ошибка при отправке события: {e}")
                continue

    except Exception as e:
        bot.send_message(chat_id, f"Ошибка при получении данных: {str(e)}")

