from django.contrib import admin
from .models import (
    Role, StaffProfile, Client, Project, Task,
    TaskComment, DocumentRequest, AssetRequest, CompanyDocument,
    ActivityLog, ApprovalRequest, SystemNotification
)


@admin.register(Role)
class RoleAdmin(admin.ModelAdmin):
    list_display = ['name', 'is_active', 'created_at']


@admin.register(StaffProfile)
class StaffProfileAdmin(admin.ModelAdmin):
    list_display = ['user', 'role', 'job_title', 'is_active']
    list_filter = ['role', 'is_active']


@admin.register(Client)
class ClientAdmin(admin.ModelAdmin):
    list_display = ['name', 'company_name', 'email', 'status', 'is_active']
    list_filter = ['status', 'is_active']
    search_fields = ['name', 'company_name', 'email']


@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
    list_display = ['name', 'client', 'status', 'priority', 'start_date', 'end_date']
    list_filter = ['status', 'priority']


@admin.register(Task)
class TaskAdmin(admin.ModelAdmin):
    list_display = ['title', 'project', 'status', 'priority', 'due_date', 'progress_percentage', 'is_active']
    list_filter = ['status', 'priority', 'is_active']
    search_fields = ['title', 'description']


@admin.register(TaskComment)
class TaskCommentAdmin(admin.ModelAdmin):
    list_display = ['task', 'user', 'created_at']


@admin.register(DocumentRequest)
class DocumentRequestAdmin(admin.ModelAdmin):
    list_display = ['title', 'project', 'requires_signature', 'status', 'deadline']
    list_filter = ['status', 'requires_signature']


@admin.register(AssetRequest)
class AssetRequestAdmin(admin.ModelAdmin):
    list_display = ['title', 'project', 'required', 'status', 'deadline']
    list_filter = ['status', 'required']


@admin.register(CompanyDocument)
class CompanyDocumentAdmin(admin.ModelAdmin):
    list_display = ['title', 'uploaded_by', 'created_at', 'is_active']
    list_filter = ['is_active']
    search_fields = ['title', 'description']


@admin.register(ActivityLog)
class ActivityLogAdmin(admin.ModelAdmin):
    list_display = ['user', 'action', 'target_type', 'target_title', 'created_at']
    list_filter = ['action', 'target_type']
    readonly_fields = ['user', 'action', 'target_type', 'target_id', 'target_title', 'project', 'details', 'created_at']


@admin.register(ApprovalRequest)
class ApprovalRequestAdmin(admin.ModelAdmin):
    list_display = ['module', 'action', 'summary', 'status', 'requested_by', 'created_at']
    list_filter = ['module', 'status', 'action']


@admin.register(SystemNotification)
class SystemNotificationAdmin(admin.ModelAdmin):
    list_display = ['recipient', 'category', 'title', 'is_read', 'created_at']
    list_filter = ['category', 'is_read']
    search_fields = ['title', 'message', 'recipient__username']
