"""WorkItem Django admin registration."""

from __future__ import annotations

from django.contrib import admin

from simorgh.apps.workbox.models import WorkboxItem as WorkItem
from simorgh.apps.workbox.models import WorkItemTimeline


@admin.register(WorkItem)
class WorkItemAdmin(admin.ModelAdmin):
    list_display  = ("title", "item_type", "status", "priority", "assigned_to_user", "due_date", "is_delegated", "tenant")
    list_filter   = ("item_type", "status", "priority", "is_delegated", "tenant")
    search_fields = ("title", "summary", "description", "source_entity", "source_id")
    raw_id_fields = ("assigned_to_user", "assigned_to_role", "assigned_to_unit", "tenant", "organization_node", "created_by", "updated_by")
    readonly_fields = ("public_id", "created_at", "updated_at")
    fieldsets = (
        (None, {"fields": ("tenant", "organization_node", "title", "summary", "description")}),
        ("Assignment", {"fields": ("assigned_to_user", "assigned_to_role", "assigned_to_unit")}),
        ("Classification", {"fields": ("item_type", "status", "priority")}),
        ("Source", {"fields": ("source_type", "source_entity", "source_id", "source_url")}),
        ("Schedule", {"fields": ("due_date", "completed_at")}),
        ("Flags", {"fields": ("is_delegated", "metadata")}),
        ("Metadata", {"fields": ("public_id", "created_at", "updated_at", "created_by", "updated_by"), "classes": ("collapse",)}),
    )


@admin.register(WorkItemTimeline)
class WorkItemTimelineAdmin(admin.ModelAdmin):
    list_display  = ("work_item", "event", "from_status", "to_status", "actor", "created_at")
    list_filter   = ("event", "from_status", "to_status")
    search_fields = ("work_item__title", "note")
    raw_id_fields = ("work_item", "actor")
    readonly_fields = ("created_at",)
