from django.contrib import admin
from apps.accounts.admin_utils import CompanyScopedAdminMixin
from .models import AttendanceDevice, DeviceEmployeeMap, PunchLog, AttendanceRecord, AttendanceAdjustment, OvertimeEntry, AttendancePeriod, AttendanceDayLedger

class DirectCompany(CompanyScopedAdminMixin, admin.ModelAdmin): company_lookup = "company"
class DeviceChild(CompanyScopedAdminMixin, admin.ModelAdmin): company_lookup = "device__company"
class EmployeeChild(CompanyScopedAdminMixin, admin.ModelAdmin): company_lookup = "employee__company"
class AdjustmentAdmin(CompanyScopedAdminMixin, admin.ModelAdmin):
    company_lookup = "attendance__employee__company"
    fk_company_lookups = {"attendance": "employee__company", "requester_employee": "company"}
    list_display = ("attendance", "requested_by_user", "requester_employee", "requested_by_employee", "status", "created_at")
    list_filter = ("status", "requested_by_employee")
class LedgerAdmin(CompanyScopedAdminMixin, admin.ModelAdmin):
    company_lookup = "company"
    fk_company_lookups = {"attendance_record": "employee__company", "leave_request": "employee__company"}

admin.site.register(AttendanceDevice, DirectCompany)
admin.site.register(DeviceEmployeeMap, DeviceChild)
admin.site.register(PunchLog, DeviceChild)
admin.site.register(AttendanceRecord, EmployeeChild)
admin.site.register(AttendanceAdjustment, AdjustmentAdmin)
admin.site.register(OvertimeEntry, EmployeeChild)
admin.site.register(AttendancePeriod, DirectCompany)
admin.site.register(AttendanceDayLedger, LedgerAdmin)
