"""
config.py – Configuración centralizada de la aplicación.
Lee todas las variables sensibles desde el archivo .env
"""
import os
from dotenv import load_dotenv

load_dotenv()


class Config:
    # Flask
    SECRET_KEY = os.environ.get('SECRET_KEY', 'dev-secret-key-change-in-production')
    WTF_CSRF_ENABLED = True

    # SQLAlchemy – MySQL vía PyMySQL
    _db_user = os.environ.get('DB_USER', 'root')
    _db_pass = os.environ.get('DB_PASSWORD', '')
    _db_host = os.environ.get('DB_HOST', 'localhost')
    _db_port = os.environ.get('DB_PORT', '3306')
    _db_name = os.environ.get('DB_NAME', 'ibso')

    SQLALCHEMY_DATABASE_URI = (
        f"mysql+pymysql://{_db_user}:{_db_pass}@{_db_host}:{_db_port}/{_db_name}"
        f"?charset=utf8mb4"
    )
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    # Flask-Mail
    MAIL_SERVER   = os.environ.get('MAIL_HOST', 'localhost')
    MAIL_PORT     = int(os.environ.get('MAIL_SMTP_PORT', 465))
    MAIL_USE_SSL  = os.environ.get('MAIL_SECURE', 'ssl').lower() == 'ssl'
    MAIL_USE_TLS  = os.environ.get('MAIL_SECURE', 'ssl').lower() == 'tls'
    MAIL_USERNAME = os.environ.get('MAIL_USERNAME', '')
    MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD', '')
    MAIL_DEFAULT_SENDER = (
        os.environ.get('MAIL_FROM_NAME', 'Control de Cambios'),
        os.environ.get('MAIL_USERNAME', ''),
    )

    # Paginación
    ITEMS_POR_PAGINA = 15


class DevelopmentConfig(Config):
    DEBUG = True


class ProductionConfig(Config):
    DEBUG = False


config_map = {
    'development': DevelopmentConfig,
    'production':  ProductionConfig,
    'default':     DevelopmentConfig,
}
