from django.contrib import admin
from simple_history.admin import SimpleHistoryAdmin

from apps.mel.reports.models import (
    ComplianceAlert,
    Report,
    ReportArtifact,
    ReportDistribution,
    ReportTemplate,
)


@admin.register(ReportTemplate)
class ReportTemplateAdmin(SimpleHistoryAdmin):
    list_display = ("name", "slug", "report_type", "is_active", "updated_at")
    list_filter = ("report_type", "is_active")
    search_fields = ("name", "slug")
    prepopulated_fields = {"slug": ("name",)}
    filter_horizontal = ("default_recipients",)


@admin.register(Report)
class ReportAdmin(SimpleHistoryAdmin):
    list_display = ("template", "period_label", "status", "generated_by", "generated_at")
    list_filter = ("status", "template")
    search_fields = ("template__name", "period_label")
    readonly_fields = ("consolidated_data", "generated_at", "approved_at", "published_at")


class ReportArtifactInline(admin.TabularInline):
    model = ReportArtifact
    extra = 0
    readonly_fields = ("format", "file", "checksum", "size_bytes", "generated_at")


@admin.register(ReportArtifact)
class ReportArtifactAdmin(admin.ModelAdmin):
    list_display = ("report", "format", "size_bytes", "generated_at")
    list_filter = ("format",)


@admin.register(ReportDistribution)
class ReportDistributionAdmin(admin.ModelAdmin):
    list_display = ("report", "recipient_user", "recipient_email", "channel", "status", "sent_at")
    list_filter = ("status", "channel")
    search_fields = ("recipient_email",)


@admin.register(ComplianceAlert)
class ComplianceAlertAdmin(admin.ModelAdmin):
    list_display = ("code", "severity", "report", "resolved", "created_at")
    list_filter = ("severity", "resolved")
    search_fields = ("code", "message")
