import dearpygui.dearpygui as dpg
from src.utils.logger import get_logger
import os

logger = get_logger("logger_window")

LOG_FILE_PATH = "/home/lodqa/attack_module_data/logs/security-scanner.log"

def create_logger_window(db, session, parent=None):
    """Окно просмотра логов приложения"""
    try:
        # Создаем дочернее окно внутри родительского контейнера (если указан)
        with dpg.child_window(
            parent=parent,
            tag="logger_window",
            width=-1,
            height=-1,
            border=False
        ):
            build_logger_content(db, session)
    except Exception as e:
        logger.error(f"Failed to create logger window: {e}")
        dpg.add_text(f"Ошибка при создании окна логов: {str(e)}", color=(255, 100, 100))

def build_logger_content(db, session):
    """Построение содержимого окна логов"""
    dpg.add_text("Лог приложения", color=(255, 255, 255))
    dpg.add_separator()
    dpg.add_spacer(height=10)
    
    # Кнопка для обновления логов
    dpg.add_button(
        label="Обновить лог",
        callback=lambda: refresh_log(),
        width=150,
        height=40
    )
    dpg.add_spacer(height=10)
    
    # Область вывода логов
    dpg.add_text("Содержимое лога:")
    log_output = dpg.add_input_text(
        tag="log_output",
        multiline=True,
        height=-1,
        width=-1,
        readonly=True
    )
    
    # Первоначальная загрузка логов
    refresh_log()

def refresh_log():
    """Чтение и обновление содержимого лог-файла"""
    try:
        if not os.path.exists(LOG_FILE_PATH):
            logger.warning(f"Log file not found: {LOG_FILE_PATH}")
            dpg.set_value("log_output", f"Ошибка: Файл лога не найден по пути {LOG_FILE_PATH}")
            return
        
        with open(LOG_FILE_PATH, 'r', encoding='utf-8') as log_file:
            log_content = log_file.read()
        
        if not log_content.strip():
            logger.info("Log file is empty")
            dpg.set_value("log_output", "Лог-файл пуст")
        else:
            dpg.set_value("log_output", log_content)
            logger.info("Log file loaded successfully")
            
    except PermissionError:
        logger.error(f"Permission denied accessing log file: {LOG_FILE_PATH}")
        dpg.set_value("log_output", f"Ошибка: Нет прав доступа к файлу {LOG_FILE_PATH}")
    except UnicodeDecodeError:
        logger.error(f"Failed to decode log file: {LOG_FILE_PATH}")
        dpg.set_value("log_output", f"Ошибка: Не удалось декодировать файл лога {LOG_FILE_PATH}")
    except Exception as e:
        logger.error(f"Failed to read log file: {e}")
        dpg.set_value("log_output", f"Ошибка при чтении лога: {str(e)}")