from django.contrib import admin

from apps.rims.projects.models import (
    Beneficiary,
    BeneficiaryAttendance,
    Deliverable,
    Milestone,
    MilestoneAudit,
    Project,
    ProjectBudgetLine,
    RiskFlag,
)


class MilestoneInline(admin.TabularInline):
    model = Milestone
    extra = 0
    fields = ("name", "due_date", "status", "completion_percent", "report_due", "report_submitted_at")


class ProjectBudgetLineInline(admin.TabularInline):
    model = ProjectBudgetLine
    extra = 0


@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
    list_display = ("title", "award", "finance_budget", "status", "start_date", "end_date")
    search_fields = ("title",)
    inlines = [ProjectBudgetLineInline, MilestoneInline]


@admin.register(Deliverable)
class DeliverableAdmin(admin.ModelAdmin):
    list_display = ("title", "milestone")


@admin.register(RiskFlag)
class RiskFlagAdmin(admin.ModelAdmin):
    list_display = ("project", "reason", "severity", "cleared")


@admin.register(MilestoneAudit)
class MilestoneAuditAdmin(admin.ModelAdmin):
    list_display = ("milestone", "event", "actor", "created_at")


class BeneficiaryAttendanceInline(admin.TabularInline):
    model = BeneficiaryAttendance
    extra = 0
    fields = ("event_label", "occurred_on", "notes")


@admin.register(Beneficiary)
class BeneficiaryAdmin(admin.ModelAdmin):
    list_display = ("full_name", "project", "role", "joined_on")
    list_filter = ("role",)
    search_fields = ("full_name", "contact_email")
    autocomplete_fields = ("project",)
    inlines = [BeneficiaryAttendanceInline]


@admin.register(BeneficiaryAttendance)
class BeneficiaryAttendanceAdmin(admin.ModelAdmin):
    list_display = ("beneficiary", "event_label", "occurred_on")
    search_fields = ("event_label",)
