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 not groups:
            return bot.send_message(chat_id, "Нет групп хостов для этого региона.")
        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 not triggers:
            bot.send_message(chat_id, "Нет активных событий.")
            return

        for trigger in triggers:
            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:
        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)
        for group in groups:
            try:
                triggers = fetch_triggers_data(group['groupid'])
                if triggers:
                    all_triggers.extend(triggers)
            except Exception:
                continue

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

        for trigger in all_triggers:
            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:
        bot.send_message(chat_id, f"Ошибка при получении данных: {str(e)}")
