"""Projects Django admin registrations."""

from __future__ import annotations

from django.contrib import admin

from simorgh.apps.projects.models import (
    Milestone,
    Project,
    ProjectMember,
    ProjectPhase,
    ProjectTag,
)


class ProjectMemberInline(admin.TabularInline):
    model = ProjectMember
    extra = 0
    fields = ("user", "role", "joined_at")
    readonly_fields = ("joined_at",)


class ProjectPhaseInline(admin.TabularInline):
    model = ProjectPhase
    extra = 0
    fields = ("name", "order", "status", "start_date", "end_date")


class MilestoneInline(admin.TabularInline):
    model = Milestone
    extra = 0
    fields = ("name", "due_date", "is_completed", "completed_at")
    readonly_fields = ("completed_at",)


@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
    list_display = ("name", "code", "status", "owner", "tenant", "is_billable", "start_date", "end_date")
    list_filter = ("status", "is_billable", "tenant")
    search_fields = ("name", "code")
    raw_id_fields = ("tenant", "organization_node", "owner")
    filter_horizontal = ("tags",)
    inlines = [ProjectMemberInline, ProjectPhaseInline, MilestoneInline]


@admin.register(ProjectTag)
class ProjectTagAdmin(admin.ModelAdmin):
    list_display = ("name", "color", "tenant")
    list_filter = ("tenant",)
    search_fields = ("name",)
