"""Admin registration for Reporting Engine models."""

from __future__ import annotations

from django.contrib import admin

from simorgh.apps.reporting.models import (
    DashboardDefinition,
    KPIDefinition,
    ReportDefinition,
    ReportExecution,
    ScheduledReport,
)


@admin.register(ReportDefinition)
class ReportDefinitionAdmin(admin.ModelAdmin):
    list_display = ("code", "name", "module", "tenant", "is_active", "is_builtin", "created_at")
    list_filter = ("module", "is_active", "is_builtin", "tenant")
    search_fields = ("code", "name", "description")
    readonly_fields = ("created_at", "updated_at", "version")


@admin.register(ScheduledReport)
class ScheduledReportAdmin(admin.ModelAdmin):
    list_display = ("report", "cron_expression", "format", "is_active", "next_run_at", "tenant")
    list_filter = ("format", "is_active", "tenant")
    readonly_fields = ("last_run_at", "run_count", "created_at", "updated_at", "version")


@admin.register(KPIDefinition)
class KPIDefinitionAdmin(admin.ModelAdmin):
    list_display = ("code", "name", "module", "format", "tenant", "is_active", "is_builtin")
    list_filter = ("module", "format", "is_active", "is_builtin", "tenant")
    search_fields = ("code", "name", "description")
    readonly_fields = ("created_at", "updated_at", "version")


@admin.register(DashboardDefinition)
class DashboardDefinitionAdmin(admin.ModelAdmin):
    list_display = ("code", "name", "module", "is_default", "is_active", "tenant")
    list_filter = ("module", "is_default", "is_active", "tenant")
    search_fields = ("code", "name", "description")
    readonly_fields = ("created_at", "updated_at", "version")


@admin.register(ReportExecution)
class ReportExecutionAdmin(admin.ModelAdmin):
    list_display = ("report", "status", "format", "row_count", "started_at", "tenant")
    list_filter = ("status", "format", "tenant")
    readonly_fields = ("created_at",)
