from django.contrib import admin

from apps.rims.hr.models import (
    BackToOfficeReport,
    Department,
    LeaveBalance,
    LeaveRequest,
    LeaveType,
    StaffProfile,
    TravelReport,
    TravelRequest,
)


@admin.register(Department)
class DepartmentAdmin(admin.ModelAdmin):
    list_display = ("name", "head")
    search_fields = ("name",)


@admin.register(StaffProfile)
class StaffProfileAdmin(admin.ModelAdmin):
    list_display = ("user", "employee_id", "job_title", "department", "employment_type", "status")
    list_filter = ("employment_type", "status", "department")
    search_fields = ("user__email", "user__first_name", "user__last_name", "employee_id")
    raw_id_fields = ("user", "supervisor")


@admin.register(LeaveType)
class LeaveTypeAdmin(admin.ModelAdmin):
    list_display = ("name", "paid", "max_days_per_year", "requires_approval", "carry_over")


@admin.register(LeaveBalance)
class LeaveBalanceAdmin(admin.ModelAdmin):
    list_display = ("staff", "leave_type", "year", "entitled_days", "used_days", "remaining")
    list_filter = ("year", "leave_type")


@admin.register(LeaveRequest)
class LeaveRequestAdmin(admin.ModelAdmin):
    list_display = ("staff", "leave_type", "start_date", "end_date", "days", "status")
    list_filter = ("status", "leave_type")
    search_fields = ("staff__user__email",)


@admin.register(BackToOfficeReport)
class BackToOfficeAdmin(admin.ModelAdmin):
    list_display = ("staff", "return_date", "submitted_at")


@admin.register(TravelRequest)
class TravelRequestAdmin(admin.ModelAdmin):
    list_display = ("staff", "destination", "departure_date", "return_date", "status")
    list_filter = ("status", "travel_type")
    search_fields = ("staff__user__email", "destination", "purpose")


@admin.register(TravelReport)
class TravelReportAdmin(admin.ModelAdmin):
    list_display = ("travel_request", "actual_cost", "submitted_at")
