"""Registro de permisos del módulo CRM.

Se importa desde ``router.py`` para que los permisos queden registrados en el
``PermissionRegistry`` al arrancar la app. Persistir en BD se hace con el
endpoint ``POST /v1/core/permissions/sync`` o el CLI de sincronización.
"""

from api.v1.modules.core.permissions.registry import registry

MODULE = "crm"

# (entidad, etiqueta legible)
_ENTITIES = [
    ("account", "clientes/prospectos"),
    ("supplier", "proveedores"),
    ("contact", "contactos"),
    ("address", "direcciones"),
    ("document", "documentos"),
    ("service_request", "solicitudes de servicio"),
    ("rate_request", "solicitudes de tarifa"),
    ("quote", "cotizaciones"),
    ("lead", "prospectos"),
    ("opportunity", "oportunidades"),
    ("pipeline", "embudos"),
    ("activity", "actividades"),
]

# (acción, verbo para la descripción)
_ACTIONS = [
    ("view", "Ver"),
    ("create", "Crear"),
    ("edit", "Editar"),
    ("delete", "Eliminar"),
]


def register_permissions() -> None:
    """Da de alta los permisos del CRM en el registro central."""
    registry.register(code=f"{MODULE}.access", description="Acceso al módulo CRM", module=MODULE, action="access")
    for entity, label in _ENTITIES:
        for action, verb in _ACTIONS:
            registry.register(
                code=f"{MODULE}.{entity}.{action}",
                description=f"{verb} {label}",
                module=MODULE,
                action=action,
            )


register_permissions()
