"""Correspondence Django admin configuration."""

from django.contrib import admin

from simorgh.apps.correspondence.models import (
    Category,
    Letter,
    LetterAttachment,
    LetterheadTemplate,
    LetterRecipient,
    LetterReference,
    LetterTemplate,
    NumberingTemplate,
)


@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    list_display = ["name", "category_type", "parent", "is_active", "sort_order", "tenant"]
    list_filter = ["category_type", "is_active", "tenant"]
    search_fields = ["name"]


@admin.register(NumberingTemplate)
class NumberingTemplateAdmin(admin.ModelAdmin):
    list_display = ["name", "pattern", "prefix", "letter_type", "is_default", "tenant"]
    list_filter = ["letter_type", "is_default", "tenant"]
    search_fields = ["name"]


@admin.register(LetterheadTemplate)
class LetterheadTemplateAdmin(admin.ModelAdmin):
    list_display = ["name", "is_default", "is_active", "tenant"]
    list_filter = ["is_default", "is_active", "tenant"]
    search_fields = ["name"]


@admin.register(LetterTemplate)
class LetterTemplateAdmin(admin.ModelAdmin):
    list_display = ["name", "letter_type", "is_default", "is_active", "tenant"]
    list_filter = ["letter_type", "is_default", "is_active", "tenant"]
    search_fields = ["name"]


@admin.register(Letter)
class LetterAdmin(admin.ModelAdmin):
    list_display = [
        "registration_number", "subject", "letter_type", "status",
        "priority", "security", "registration_date", "tenant",
    ]
    list_filter = ["letter_type", "status", "priority", "security", "tenant"]
    search_fields = ["registration_number", "subject", "body", "sender_external"]
    raw_id_fields = ["sender", "category", "template", "parent"]


@admin.register(LetterAttachment)
class LetterAttachmentAdmin(admin.ModelAdmin):
    list_display = ["letter", "attachment_type", "description", "sort_order"]
    list_filter = ["attachment_type"]
    raw_id_fields = ["letter", "file"]


@admin.register(LetterRecipient)
class LetterRecipientAdmin(admin.ModelAdmin):
    list_display = ["letter", "recipient", "recipient_name", "recipient_type", "status"]
    list_filter = ["recipient_type", "status"]
    raw_id_fields = ["letter", "recipient"]


@admin.register(LetterReference)
class LetterReferenceAdmin(admin.ModelAdmin):
    list_display = ["from_letter", "to_letter", "reference_type"]
    list_filter = ["reference_type"]
    raw_id_fields = ["from_letter", "to_letter"]
