"""Correspondence app_settings definitions."""

from __future__ import annotations

from simorgh.apps.app_settings.registry import SettingDefinition, register_setting

# Default numbering pattern for outgoing letters.
CORR_DEFAULT_NUMBERING_PATTERN = register_setting(
    SettingDefinition(
        key="correspondence.default_numbering_pattern",
        type="string",
        default="{year}/{counter:04d}",
        label_key="correspondence.settings.default_numbering_pattern.label",
        description_key="correspondence.settings.default_numbering_pattern.description",
        scopes=("system", "tenant"),
    )
)

# Default prefix for registration numbers.
CORR_DEFAULT_PREFIX = register_setting(
    SettingDefinition(
        key="correspondence.default_prefix",
        type="string",
        default="",
        label_key="correspondence.settings.default_prefix.label",
        description_key="correspondence.settings.default_prefix.description",
        scopes=("system", "tenant"),
    )
)

# Maximum attachment size in bytes per letter (default 20 MiB).
CORR_MAX_ATTACHMENT_BYTES = register_setting(
    SettingDefinition(
        key="correspondence.max_attachment_bytes",
        type="int",
        default=20 * 1024 * 1024,
        label_key="correspondence.settings.max_attachment_bytes.label",
        description_key="correspondence.settings.max_attachment_bytes.description",
        scopes=("system", "tenant"),
    )
)

# Maximum number of attachments per letter.
CORR_MAX_ATTACHMENTS = register_setting(
    SettingDefinition(
        key="correspondence.max_attachments",
        type="int",
        default=20,
        label_key="correspondence.settings.max_attachments.label",
        description_key="correspondence.settings.max_attachments.description",
        scopes=("system", "tenant"),
    )
)

# Auto-archive interval in days after completion (0 = disabled).
CORR_AUTO_ARCHIVE_DAYS = register_setting(
    SettingDefinition(
        key="correspondence.auto_archive_days",
        type="int",
        default=0,
        label_key="correspondence.settings.auto_archive_days.label",
        description_key="correspondence.settings.auto_archive_days.description",
        scopes=("system", "tenant"),
    )
)

# Whether to generate registration numbers automatically on creation.
CORR_AUTO_NUMBERING = register_setting(
    SettingDefinition(
        key="correspondence.auto_numbering",
        type="bool",
        default=True,
        label_key="correspondence.settings.auto_numbering.label",
        description_key="correspondence.settings.auto_numbering.description",
        scopes=("system", "tenant"),
    )
)

# Default letter security level.
CORR_DEFAULT_SECURITY = register_setting(
    SettingDefinition(
        key="correspondence.default_security",
        type="string",
        default="normal",
        label_key="correspondence.settings.default_security.label",
        description_key="correspondence.settings.default_security.description",
        scopes=("system", "tenant"),
    )
)

# Enable notification on letter creation/assignment.
CORR_ENABLE_NOTIFICATIONS = register_setting(
    SettingDefinition(
        key="correspondence.enable_notifications",
        type="bool",
        default=True,
        label_key="correspondence.settings.enable_notifications.label",
        description_key="correspondence.settings.enable_notifications.description",
        scopes=("system", "tenant"),
    )
)
