from django.apps import AppConfig


class CRMConfig(AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "simorgh.apps.crm"
    label = "crm"
    verbose_name = "CRM"

    def ready(self) -> None:
        from simorgh.apps.crm.permissions import register_all as _register_permissions
        _register_permissions()
        from simorgh.apps.crm.events import register_all as _register_events
        _register_events()
        from simorgh.apps.crm import search as _  # noqa: F401
        from simorgh.apps.modules.contributions import register_contributions
        from simorgh.core.semantic import EntitySpec, FieldSpec

        register_contributions(
            module="crm",
            entities=(
                EntitySpec(
                    key="crm.contact",
                    label_key="crm.contacts.title",
                    fields=(FieldSpec(name="name", type="string", label_key="crm.contacts.fields.name"),),
                ),
                EntitySpec(
                    key="crm.lead",
                    label_key="crm.leads.title",
                    fields=(FieldSpec(name="title", type="string", label_key="crm.leads.fields.title"),),
                ),
                EntitySpec(
                    key="crm.opportunity",
                    label_key="crm.opportunities.title",
                    fields=(FieldSpec(name="title", type="string", label_key="crm.opportunities.fields.title"),),
                ),
                EntitySpec(
                    key="crm.pipeline",
                    label_key="crm.pipelines.title",
                    fields=(FieldSpec(name="name", type="string", label_key="crm.pipelines.fields.name"),),
                ),
                EntitySpec(
                    key="crm.activity",
                    label_key="crm.activities.title",
                    fields=(FieldSpec(name="title", type="string", label_key="crm.activities.fields.title"),),
                ),
            ),
        )
