from django.contrib import admin
from .models import Admission, Qualification


# ===============================
# Qualification Inline
# ===============================
class QualificationInline(admin.TabularInline):
    model = Qualification
    extra = 0
    readonly_fields = ("qualification_type", "marksheet_preview")

    def marksheet_preview(self, obj):
        if obj.marksheet:
            return f'<a href="{obj.marksheet.url}" target="_blank">View Marksheet</a>'
        return "No File"
    
    marksheet_preview.allow_tags = True
    marksheet_preview.short_description = "Marksheet"


# ===============================
# Admission Admin
# ===============================
@admin.register(Admission)
class AdmissionAdmin(admin.ModelAdmin):

    list_display = (
        "id",
        "name",
        "mobile",
        "email",
        "category",
        "medium",
        "declaration",
    )

    list_filter = ("category", "medium", "gender")
    search_fields = ("name", "mobile", "email", "aadhar_number")

    inlines = [QualificationInline]

    readonly_fields = (
        "photo_preview",
        "aadhar_preview",
    )

    fieldsets = (
        ("Student Details", {
            "fields": (
                "user",
                "name",
                "father_name",
                "mother_name",
                "date_of_birth",
                "category",
                "gender",
                "medium",
            )
        }),
        ("Contact Details", {
            "fields": (
                "present_address",
                "permanent_address",
                "mobile",
                "alternate_mobile",
                "email",
            )
        }),
        ("Documents", {
            "fields": (
                "photo",
                "photo_preview",
                "aadhar_number",
                "aadhar_file",
                "aadhar_preview",
            )
        }),
        ("Guardian & Coaching", {
            "fields": (
                "guardian_name",
                "relation",
                "guardian_mobile",
                "coaching_exam",
                "coaching_year",
            )
        }),
        ("Declaration", {
            "fields": ("declaration",)
        }),
    )

    # ===============================
    # Preview Photo
    # ===============================
    def photo_preview(self, obj):
        if obj.photo:
            return f'<img src="{obj.photo.url}" width="100" />'
        return "No Image"
    photo_preview.allow_tags = True
    photo_preview.short_description = "Photo Preview"

    # ===============================
    # Preview Aadhar
    # ===============================
    def aadhar_preview(self, obj):
        if obj.aadhar_file:
            return f'<a href="{obj.aadhar_file.url}" target="_blank">View Aadhar</a>'
        return "No File"
    aadhar_preview.allow_tags = True
    aadhar_preview.short_description = "Aadhar Preview"


# ===============================
# Register Qualification separately (Optional)
# ===============================
@admin.register(Qualification)
class QualificationAdmin(admin.ModelAdmin):
    list_display = (
        "admission",
        "qualification_type",
        "passing_year",
        "marks",
        "board_university",
    )

    list_filter = ("qualification_type", "passing_year")
    search_fields = ("admission__name", "board_university")