"""Django admin registrations for SME-Hub onboarding models.

Only registers the Phase 6.1 Innovation lane models — the rest of the
onboarding entities are managed through the dashboard UI.
"""
from __future__ import annotations

from django.contrib import admin

from apps.smehub.onboarding.models import (
    EvaluatorAssignment,
    Innovation,
    VettingRecord,
    VettingScore,
)


class EvaluatorAssignmentInline(admin.TabularInline):
    model = EvaluatorAssignment
    extra = 0
    readonly_fields = ("assigned_at", "completed_at")


class VettingRecordInline(admin.TabularInline):
    model = VettingRecord
    extra = 0
    readonly_fields = ("started_at", "closed_at")


@admin.register(Innovation)
class InnovationAdmin(admin.ModelAdmin):
    list_display = (
        "innovation_id",
        "title",
        "business",
        "sector",
        "stage",
        "lifecycle_status",
        "is_public",
        "submitted_at",
    )
    list_filter = ("lifecycle_status", "sector", "country", "is_public", "stage")
    search_fields = ("innovation_id", "title", "description", "business__name")
    readonly_fields = (
        "innovation_id",
        "submitted_at",
        "vetting_started_at",
        "decided_at",
        "published_at",
        "created_at",
        "updated_at",
    )
    inlines = [EvaluatorAssignmentInline, VettingRecordInline]


class VettingScoreInline(admin.TabularInline):
    model = VettingScore
    extra = 0
    readonly_fields = ("submitted_at",)


@admin.register(VettingRecord)
class VettingRecordAdmin(admin.ModelAdmin):
    list_display = ("innovation", "round_no", "recommendation", "started_at", "closed_at")
    list_filter = ("recommendation",)
    search_fields = ("innovation__innovation_id", "innovation__title")
    inlines = [VettingScoreInline]


@admin.register(EvaluatorAssignment)
class EvaluatorAssignmentAdmin(admin.ModelAdmin):
    list_display = ("innovation", "evaluator", "status", "assigned_at", "due_at", "completed_at")
    list_filter = ("status",)
    search_fields = ("innovation__innovation_id", "evaluator__email")
