from django.contrib import admin
from payroll.models import (
    PayrollIntegration,
    EmployeeMapping,
    ProjectMapping,
    PayrollSubmission,
    PayrollSubmissionStamp
)


@admin.register(PayrollIntegration)
class PayrollIntegrationAdmin(admin.ModelAdmin):
    list_display = ['company', 'provider', 'is_active', 'sync_frequency', 'last_sync', 'created_at']
    list_filter = ['provider', 'is_active', 'sync_frequency']
    search_fields = ['company__name']
    readonly_fields = ['id', 'created_at', 'updated_at', 'last_sync']


@admin.register(EmployeeMapping)
class EmployeeMappingAdmin(admin.ModelAdmin):
    list_display = ['user', 'payroll_integration', 'external_employee_id', 'is_active', 'created_at']
    list_filter = ['is_active', 'payroll_integration']
    search_fields = ['user__firstname', 'user__lastname', 'user__email', 'external_employee_id']
    readonly_fields = ['id', 'created_at', 'updated_at']


@admin.register(ProjectMapping)
class ProjectMappingAdmin(admin.ModelAdmin):
    list_display = ['project', 'payroll_integration', 'external_project_code', 'is_active', 'created_at']
    list_filter = ['is_active', 'payroll_integration']
    search_fields = ['project__name', 'project__code', 'external_project_code']
    readonly_fields = ['id', 'created_at', 'updated_at']


@admin.register(PayrollSubmission)
class PayrollSubmissionAdmin(admin.ModelAdmin):
    list_display = ['user', 'payroll_integration', 'period_start', 'period_end', 'submission_status', 'submitted_at']
    list_filter = ['submission_status', 'payroll_integration', 'submitted_at']
    search_fields = ['user__firstname', 'user__lastname', 'external_reference_id']
    readonly_fields = ['id', 'created_at', 'updated_at']
    date_hierarchy = 'submitted_at'


@admin.register(PayrollSubmissionStamp)
class PayrollSubmissionStampAdmin(admin.ModelAdmin):
    list_display = ['submission', 'stamp', 'created_at']
    list_filter = ['created_at']
    search_fields = ['submission__user__firstname', 'submission__user__lastname']
    readonly_fields = ['id', 'created_at']
