from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from .models import User, Notice, Event, Program, Faculty, GalleryImage, AdmissionInquiry, ContactMessage


@admin.register(User)
class UserAdmin(BaseUserAdmin):
    ordering         = ["-created_at"]
    list_display     = ["email", "full_name", "role", "is_active", "created_at"]
    list_filter      = ["role", "is_active"]
    search_fields    = ["email", "full_name"]
    fieldsets        = (
        (None,           {"fields": ("email", "password")}),
        ("Personal",     {"fields": ("full_name",)}),
        ("Role & Access",{"fields": ("role", "is_active", "is_staff", "is_superuser")}),
        ("Permissions",  {"fields": ("groups", "user_permissions")}),
    )
    add_fieldsets    = (
        (None, {"fields": ("email", "full_name", "role", "password1", "password2")}),
    )


@admin.register(Notice)
class NoticeAdmin(admin.ModelAdmin):
    list_display  = ["title", "category", "date", "is_new", "created_by"]
    list_filter   = ["category", "is_new"]
    search_fields = ["title"]


@admin.register(Event)
class EventAdmin(admin.ModelAdmin):
    list_display  = ["title", "date", "time", "location", "is_past"]
    list_filter   = ["is_past"]
    search_fields = ["title", "location"]


@admin.register(Program)
class ProgramAdmin(admin.ModelAdmin):
    list_display  = ["name", "department", "duration"]
    search_fields = ["name", "department"]


@admin.register(Faculty)
class FacultyAdmin(admin.ModelAdmin):
    list_display  = ["full_name", "designation", "department", "qualification"]
    list_filter   = ["department"]
    search_fields = ["full_name", "designation"]


@admin.register(GalleryImage)
class GalleryImageAdmin(admin.ModelAdmin):
    list_display = ["caption", "category", "created_at"]
    list_filter  = ["category"]


@admin.register(AdmissionInquiry)
class AdmissionInquiryAdmin(admin.ModelAdmin):
    list_display  = ["full_name", "email", "program", "status", "created_at"]
    list_filter   = ["status"]
    search_fields = ["full_name", "email"]


@admin.register(ContactMessage)
class ContactMessageAdmin(admin.ModelAdmin):
    list_display  = ["full_name", "email", "subject", "status", "created_at"]
    list_filter   = ["status"]
    search_fields = ["full_name", "email", "subject"]
