"""
expense/admin.py
"""

from django.contrib import admin

from .models import (
    ExpenseApprovalLog,
    ExpenseApprovalStage,
    ExpenseApprovalWorkflow,
    ExpenseDocument,
    ExpenseRequest,
    KIVRecord,
)


class StageInline(admin.TabularInline):
    model = ExpenseApprovalStage
    extra = 1
    ordering = ["order"]


@admin.register(ExpenseApprovalWorkflow)
class WorkflowAdmin(admin.ModelAdmin):
    list_display = ["name", "is_active"]
    inlines = [StageInline]


@admin.register(ExpenseApprovalStage)
class StageAdmin(admin.ModelAdmin):
    list_display = ["workflow", "order", "name", "group", "is_disbursement_stage", "is_active"]
    list_filter = ["workflow", "is_active"]


@admin.register(ExpenseRequest)
class ExpenseRequestAdmin(admin.ModelAdmin):
    list_display = [
        "reference_number", "employee", "title", "amount", "status", "current_stage", "submitted_at"
    ]
    list_filter = ["status"]
    readonly_fields = ["reference_number", "submitted_at", "resubmit_count"]


@admin.register(ExpenseApprovalLog)
class LogAdmin(admin.ModelAdmin):
    list_display = ["expense", "action", "actor", "stage", "created_at"]
    readonly_fields = ["expense", "stage", "action", "actor", "comment", "created_at"]

    def has_add_permission(self, request):
        return False

    def has_change_permission(self, request, obj=None):
        return False

    def has_delete_permission(self, request, obj=None):
        return False


@admin.register(KIVRecord)
class KIVRecordAdmin(admin.ModelAdmin):
    list_display = ["expense", "set_by", "revisit_date", "is_active"]
    readonly_fields = ["recalled_at", "recalled_by"]
