"""
Configuración de la aplicación Balotario Licencia A-I
"""

import os

class Config:
    """Configuración base de la aplicación"""

    # Configuración de Flask
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'balotario_secret_key_2024_super_secure'
    DEBUG = os.environ.get('FLASK_DEBUG', 'True').lower() == 'true'

    # Configuración de la aplicación
    APP_NAME = "Balotario Licencia Clase A - Categoría I"
    APP_VERSION = "1.0.0"
    APP_DESCRIPTION = "Aplicación interactiva para estudiar el balotario oficial del MTC Perú"

    # Configuración del balotario
    MARKDOWN_FILE = 'data/balotario_clase_a_cat_I.md'
    TOTAL_QUESTIONS = 200

    # Configuración de límites
    MAX_PRACTICE_QUESTIONS = 50
    MAX_EXAM_QUESTIONS = 40
    DEFAULT_EXAM_TIME = 30  # minutos

    # Configuración de la interfaz
    ITEMS_PER_PAGE = 20
    ANIMATION_DURATION = 300  # milisegundos

    # URLs de imágenes
    IMAGE_BASE_URL = "https://sierdgtt.mtc.gob.pe/Content/img-data/"

    # Configuración de estadísticas
    STATS_RETENTION_DAYS = 30

    # Configuración de temas
    DEFAULT_THEME = "light"
    AVAILABLE_THEMES = ["light", "dark"]

    # Configuración de sonidos
    SOUND_ENABLED = True

    # Configuración de accesibilidad
    HIGH_CONTRAST_MODE = False
    LARGE_TEXT_MODE = False

    @staticmethod
    def init_app(app):
        """Inicializar configuración específica de la aplicación"""
        pass

class DevelopmentConfig(Config):
    """Configuración para desarrollo"""
    DEBUG = True

class ProductionConfig(Config):
    """Configuración para producción"""
    DEBUG = False
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'production_secret_key_change_this'

class TestingConfig(Config):
    """Configuración para testing"""
    TESTING = True
    DEBUG = True

# Configuraciones disponibles
config = {
    'development': DevelopmentConfig,
    'production': ProductionConfig,
    'testing': TestingConfig,
    'default': DevelopmentConfig
}
