import dearpygui.dearpygui as dpg
from src.ui.session_window import create_session_window
from src.core.database.managers.session_manager import SessionManager
from src.utils.logger import get_logger

logger = get_logger("main_window")

def create_main_window(db):
    """Создание главного окна приложения"""
    with dpg.window(
        tag="main_window",
        label="Security Scanner",
        no_collapse=True,
        no_resize=True,
        no_close=True,
        no_title_bar=True,
        no_move=True,
    ):  # Убраны фиксированные размеры
        # Заголовок с увеличенным шрифтом
        dpg.add_text("Модуль тестирования безопасности", color=(255, 255, 255), pos=[500,0])
        dpg.add_spacing(count=10)
        dpg.add_separator()
        
        # Увеличенные размеры кнопки
        dpg.add_button(
            label="Создать новую сессию",
            callback=lambda: create_session_window(db),
            width=300,  # Увеличено с 200
            height=50   # Увеличено с 40
        )
        dpg.add_spacer(height=30)  # Увеличен отступ
        
        # Список сессий с увеличенными размерами
        dpg.add_text("Существующие сессии:")
        session_list = dpg.add_listbox(
            tag="session_list",
            width=1600,    # Растягиваем на всю ширину окна
            num_items=15, # Увеличено количество отображаемых элементов
            # height=500   # Увеличена высота
            callback=lambda s: open_session(s, db)
        )
        
        load_sessions(db, session_list)

def load_sessions(db, session_list):
    """Загрузка списка сессий"""
    session_manager = SessionManager(db)
    sessions = session_manager.get_all_sessions()
    
    session_items = []
    for session in sessions:
        date_str = session.created_at.strftime("%Y-%m-%d %H:%M") if session.created_at else "Unknown"
        session_items.append(f"ID:{session.id} - {session.name or 'Unnamed Session'} - Created at:{date_str}")
    
    dpg.configure_item(session_list, items=session_items)
    logger.info(f"Loaded {len(sessions)} sessions")

def open_session(sender, db):
    """Открытие выбранной сессии"""
    session_manager = SessionManager(db)
    sessions = session_manager.get_all_sessions()
    
    
    if dpg.get_value(sender) and sessions:
        session_id = int(dpg.get_value(sender).split()[0][3:])
        print(session_id)
        print(len(sessions))
        if session_id <= len(sessions):
            session = sessions[session_id-1]
            logger.info(f"Opening session: {session.name} (ID: {session.id})")
            
            # Закрыть текущее окно и открыть окно конфигурации
            dpg.delete_item("main_window")
            from src.ui.configuration_window import create_configuration_window
            create_configuration_window(db, session)