"""CRM IAM permission definitions."""

from __future__ import annotations


def register_all() -> None:
    """Register all CRM permissions into the IAM registry."""
    from simorgh.apps.iam.registry import register_permission

    # ── Contact ─────────────────────────────────────────────────────────────
    register_permission("crm.contact.view",   label="مشاهده مخاطبین",    description="View contacts.")
    register_permission("crm.contact.add",    label="ایجاد مخاطب",       description="Create new contacts.")
    register_permission("crm.contact.change", label="ویرایش مخاطب",      description="Edit contact fields.")
    register_permission("crm.contact.delete", label="حذف مخاطب",         description="Soft-delete contacts.")
    register_permission("crm.contact.merge",  label="ادغام مخاطبین",     description="Merge duplicate contacts.")
    register_permission("crm.contact.export", label="خروجی مخاطبین",    description="Export contact list.")

    # ── Tag ──────────────────────────────────────────────────────────────────
    register_permission("crm.tag.view",   label="مشاهده برچسب‌ها",   description="View contact tags.")
    register_permission("crm.tag.manage", label="مدیریت برچسب‌ها",   description="Create, edit, delete tags.")

    # ── Pipeline ─────────────────────────────────────────────────────────────
    register_permission("crm.pipeline.view",   label="مشاهده خطوط فروش",   description="View pipelines and stages.")
    register_permission("crm.pipeline.manage", label="مدیریت خطوط فروش",   description="Create/edit/delete pipelines and stages.")

    # ── Lead ─────────────────────────────────────────────────────────────────
    register_permission("crm.lead.view",   label="مشاهده سرنخ‌ها",    description="View leads.")
    register_permission("crm.lead.create", label="ایجاد سرنخ",        description="Create leads.")
    register_permission("crm.lead.update", label="ویرایش سرنخ",       description="Update lead fields.")
    register_permission("crm.lead.delete", label="حذف سرنخ",          description="Soft-delete leads.")
    register_permission("crm.lead.assign", label="تخصیص سرنخ",        description="Reassign lead owner.")

    # ── Opportunity ──────────────────────────────────────────────────────────
    register_permission("crm.opportunity.view",   label="مشاهده فرصت‌ها",   description="View opportunities.")
    register_permission("crm.opportunity.create", label="ایجاد فرصت",        description="Create opportunities.")
    register_permission("crm.opportunity.update", label="ویرایش فرصت",       description="Update opportunity fields.")
    register_permission("crm.opportunity.delete", label="حذف فرصت",          description="Soft-delete opportunities.")
    register_permission("crm.opportunity.assign", label="تخصیص فرصت",        description="Reassign opportunity owner.")
    register_permission("crm.opportunity.export", label="خروجی فرصت‌ها",    description="Export opportunity list.")

    # ── Activity ─────────────────────────────────────────────────────────────
    register_permission("crm.activity.view",   label="مشاهده فعالیت‌ها",   description="View CRM activities.")
    register_permission("crm.activity.create", label="ثبت فعالیت",          description="Log CRM activities.")
    register_permission("crm.activity.update", label="ویرایش فعالیت",       description="Update activity fields.")
    register_permission("crm.activity.delete", label="حذف فعالیت",          description="Delete CRM activities.")


# Convenience constants for use in services / views
PERM_CONTACT_VIEW   = "crm.contact.view"
PERM_CONTACT_ADD    = "crm.contact.add"
PERM_CONTACT_CHANGE = "crm.contact.change"
PERM_CONTACT_DELETE = "crm.contact.delete"
PERM_CONTACT_MERGE  = "crm.contact.merge"
PERM_TAG_MANAGE     = "crm.tag.manage"

PERM_PIPELINE_VIEW   = "crm.pipeline.view"
PERM_PIPELINE_MANAGE = "crm.pipeline.manage"

PERM_LEAD_VIEW   = "crm.lead.view"
PERM_LEAD_CREATE = "crm.lead.create"
PERM_LEAD_UPDATE = "crm.lead.update"
PERM_LEAD_DELETE = "crm.lead.delete"
PERM_LEAD_ASSIGN = "crm.lead.assign"

PERM_OPP_VIEW   = "crm.opportunity.view"
PERM_OPP_CREATE = "crm.opportunity.create"
PERM_OPP_UPDATE = "crm.opportunity.update"
PERM_OPP_DELETE = "crm.opportunity.delete"
PERM_OPP_ASSIGN = "crm.opportunity.assign"
PERM_OPP_EXPORT = "crm.opportunity.export"

PERM_ACTIVITY_VIEW   = "crm.activity.view"
PERM_ACTIVITY_CREATE = "crm.activity.create"
PERM_ACTIVITY_UPDATE = "crm.activity.update"
PERM_ACTIVITY_DELETE = "crm.activity.delete"
