import dearpygui.dearpygui as dpg
from src.ui.scanner_window import create_scanner_window
from src.ui.logger_window import create_logger_window
from src.core.models.models import Session
from src.utils.logger import get_logger

logger = get_logger("config_window")

def create_configuration_window(db, session: Session):
    """Окно конфигурации сессии"""
    with dpg.window(
        tag="config_window",
        label=f"Session: {session.name}",
        no_collapse=True,
        no_resize=True,
        no_close=True,
        no_title_bar=True,
        no_scrollbar=True,
        no_move=True,
        no_scroll_with_mouse=True
    ):
        # Главная горизонтальная группа для разделения на панели
        with dpg.group(horizontal=True):
            # Боковая панель навигации
            with dpg.child_window(
                tag="sidebar", 
                width=270,
                height=-1,
                border=False
            ):
                dpg.add_text("Меню", color=(200, 200, 200))
                dpg.add_separator()
                
                dpg.add_button(
                    label="Сканирование",
                    callback=lambda: show_scanner_window(db, session),
                    width=-1,
                    height=50
                )
                dpg.add_spacer(height=10)
                
                dpg.add_button(
                    label="Эксплуатация",
                    callback=lambda: show_attack_window(db, session),
                    width=-1,
                    height=50
                )
                dpg.add_spacer(height=10)
                
                dpg.add_button(
                    label="Генерация отчета",
                    callback=lambda: show_report_window(db, session),
                    width=-1,
                    height=50
                )
                dpg.add_spacer(height=10)
                
                dpg.add_button(
                    label="Лог приложения",
                    callback=lambda: show_logger_window(db, session),
                    width=-1,
                    height=50
                )
                
                dpg.add_spacer(height=30)
                dpg.add_text(f"Сессия: {session.name}", color=(150, 150, 150))
                created_at = session.created_at.strftime(
                    """%Y-%m-%d 
                    %H:%M"""
                ) if session.created_at else "Unknown"
                dpg.add_text(f"Дата создания: {created_at}", color=(150, 150, 150))
            
            # Основная область контента (контейнер)
            with dpg.child_window(
                tag="content_area", 
                width=-1,
                height=-1,
                border=False
            ):
                # Начальное содержимое
                dpg.add_text("Выберите подмодуль", tag="initial_content")
        
        # Установить окно конфигурации как основное
        dpg.set_primary_window("config_window", True)

def show_scanner_window(db, session):
    """Показать окно сканирования"""
    # Очистить контентную область
    if dpg.does_item_exist("content_area"):
        dpg.delete_item("content_area", children_only=True)
    
    # Создать окно сканирования внутри контентной области
    create_scanner_window(db, session, parent="content_area")

def show_logger_window(db, session):
    """Показать окно логов"""
    # Очистить контентную область
    if dpg.does_item_exist("content_area"):
        dpg.delete_item("content_area", children_only=True)
    
    # Создать окно логов внутри контентной области
    create_logger_window(db, session, parent="content_area")

def show_attack_window(db, session):
    """Показать окно эксплуатации"""
    # Очистить контентную область
    if dpg.does_item_exist("content_area"):
        dpg.delete_item("content_area", children_only=True)
    
    # Создать новую контентную область
    # with dpg.child_window(parent="config_window", tag="content_area", width=-1, height=-1):
    from src.ui.attack_window import create_attack_window
    create_attack_window(db, session, parent="content_area")

def show_report_window(db, session):
    """Показать окно эксплуатации"""
    # Очистить контентную область
    if dpg.does_item_exist("content_area"):
        dpg.delete_item("content_area", children_only=True)
    
    # Создать новую контентную область
    # with dpg.child_window(parent="config_window", tag="content_area", width=-1, height=-1):
    from src.ui.report_window import create_report_window
    create_report_window(db, session, parent="content_area")