from django.contrib import admin
from .models import EmailTemplate, BulkEmailLog


@admin.register(EmailTemplate)
class EmailTemplateAdmin(admin.ModelAdmin):
    list_display = [
        "name", "subject", "status", "variables_used",
        "created_by", "created_at", "updated_at"
    ]
    list_filter = ["status", "created_at"]
    search_fields = ["name", "subject", "body"]
    readonly_fields = ["uuid", "variables_used", "created_at", "updated_at"]
    ordering = ["-created_at"]

    fieldsets = (
        ("Basic Info", {
            "fields": ("uuid", "name", "subject", "description", "status", "tags")
        }),
        ("Content", {
            "fields": ("body", "variables_used"),
        }),
        ("Audit", {
            "fields": ("created_by", "updated_by", "created_at", "updated_at"),
        }),
    )


@admin.register(BulkEmailLog)
class BulkEmailLogAdmin(admin.ModelAdmin):
    list_display = [
        "uuid", "template_name_snapshot", "to_emails", "status",
        "sent_by", "sent_at", "created_at"
    ]
    list_filter = ["status", "sent_at", "created_at"]
    search_fields = ["to_emails", "cc_emails", "rendered_subject", "template_name_snapshot"]
    readonly_fields = [
        "uuid", "template", "template_name_snapshot", "to_emails", "cc_emails",
        "rendered_subject", "rendered_body", "context_data",
        "status", "error_message", "sent_at", "sent_by", "created_at", "updated_at"
    ]
    ordering = ["-created_at"]

    def has_add_permission(self, request):
        return False  # Logs are created only via the API

    def has_change_permission(self, request, obj=None):
        return False  # Logs are immutable
