"""Correspondence IAM permission definitions.

All permissions follow the ``correspondence.<resource>.<action>`` convention.
"""

from __future__ import annotations


def register_all() -> None:
    """Register all correspondence permissions into the IAM registry."""
    from simorgh.apps.iam.registry import register_permission

    # ── Letter ────────────────────────────────────────────────────────────
    register_permission(
        "correspondence.letter.view",
        label="مشاهده نامه‌ها",
        description="View correspondence letters.",
    )
    register_permission(
        "correspondence.letter.add",
        label="ایجاد نامه",
        description="Create new letters.",
    )
    register_permission(
        "correspondence.letter.change",
        label="ویرایش نامه",
        description="Edit letter fields.",
    )
    register_permission(
        "correspondence.letter.delete",
        label="حذف نامه",
        description="Soft-delete letters.",
    )
    register_permission(
        "correspondence.letter.archive",
        label="بایگانی نامه",
        description="Archive letters.",
    )
    register_permission(
        "correspondence.letter.assign",
        label="ارجاع نامه",
        description="Assign/refer letters to users.",
    )

    # ── Category ──────────────────────────────────────────────────────────
    register_permission(
        "correspondence.category.view",
        label="مشاهده دسته‌بندی‌ها",
        description="View correspondence categories.",
    )
    register_permission(
        "correspondence.category.add",
        label="ایجاد دسته‌بندی",
        description="Create new categories.",
    )
    register_permission(
        "correspondence.category.change",
        label="ویرایش دسته‌بندی",
        description="Edit categories.",
    )
    register_permission(
        "correspondence.category.delete",
        label="حذف دسته‌بندی",
        description="Delete categories.",
    )

    # ── Template ──────────────────────────────────────────────────────────
    register_permission(
        "correspondence.template.view",
        label="مشاهده قالب‌ها",
        description="View letter templates.",
    )
    register_permission(
        "correspondence.template.add",
        label="ایجاد قالب",
        description="Create new letter templates.",
    )
    register_permission(
        "correspondence.template.change",
        label="ویرایش قالب",
        description="Edit letter templates.",
    )
    register_permission(
        "correspondence.template.delete",
        label="حذف قالب",
        description="Delete letter templates.",
    )

    # ── Numbering Template ────────────────────────────────────────────────
    register_permission(
        "correspondence.numbering.view",
        label="مشاهده قالب شماره‌گذاری",
        description="View numbering templates.",
    )
    register_permission(
        "correspondence.numbering.add",
        label="ایجاد قالب شماره‌گذاری",
        description="Create new numbering templates.",
    )
    register_permission(
        "correspondence.numbering.change",
        label="ویرایش قالب شماره‌گذاری",
        description="Edit numbering templates.",
    )
    register_permission(
        "correspondence.numbering.delete",
        label="حذف قالب شماره‌گذاری",
        description="Delete numbering templates.",
    )

    # ── Letterhead ────────────────────────────────────────────────────────
    register_permission(
        "correspondence.letterhead.view",
        label="مشاهده سربرگ‌ها",
        description="View letterhead templates.",
    )
    register_permission(
        "correspondence.letterhead.add",
        label="ایجاد سربرگ",
        description="Create new letterhead templates.",
    )
    register_permission(
        "correspondence.letterhead.change",
        label="ویرایش سربرگ",
        description="Edit letterhead templates.",
    )
    register_permission(
        "correspondence.letterhead.delete",
        label="حذف سربرگ",
        description="Delete letterhead templates.",
    )

    # ── Reports ───────────────────────────────────────────────────────────
    register_permission(
        "correspondence.report.view",
        label="مشاهده گزارش‌ها",
        description="View correspondence reports and analytics.",
    )


# Convenience constants
PERM_LETTER_VIEW = "correspondence.letter.view"
PERM_LETTER_ADD = "correspondence.letter.add"
PERM_LETTER_CHANGE = "correspondence.letter.change"
PERM_LETTER_DELETE = "correspondence.letter.delete"
PERM_LETTER_ARCHIVE = "correspondence.letter.archive"
PERM_LETTER_ASSIGN = "correspondence.letter.assign"

PERM_CATEGORY_VIEW = "correspondence.category.view"
PERM_CATEGORY_ADD = "correspondence.category.add"
PERM_CATEGORY_CHANGE = "correspondence.category.change"
PERM_CATEGORY_DELETE = "correspondence.category.delete"

PERM_TEMPLATE_VIEW = "correspondence.template.view"
PERM_TEMPLATE_ADD = "correspondence.template.add"
PERM_TEMPLATE_CHANGE = "correspondence.template.change"
PERM_TEMPLATE_DELETE = "correspondence.template.delete"

PERM_NUMBERING_VIEW = "correspondence.numbering.view"
PERM_NUMBERING_ADD = "correspondence.numbering.add"
PERM_NUMBERING_CHANGE = "correspondence.numbering.change"
PERM_NUMBERING_DELETE = "correspondence.numbering.delete"

PERM_LETTERHEAD_VIEW = "correspondence.letterhead.view"
PERM_LETTERHEAD_ADD = "correspondence.letterhead.add"
PERM_LETTERHEAD_CHANGE = "correspondence.letterhead.change"
PERM_LETTERHEAD_DELETE = "correspondence.letterhead.delete"

PERM_REPORT_VIEW = "correspondence.report.view"
