from django.contrib import admin

from apps.alumni.careers.models import (
    AlumniHandoff,
    CVProfile,
    CVSection,
    CareerResource,
    CareerResourceAccessLog,
    JobApplication,
    JobListing,
    SavedJob,
)


class CVSectionInline(admin.TabularInline):
    model = CVSection
    extra = 0


@admin.register(JobListing)
class JobListingAdmin(admin.ModelAdmin):
    list_display = ("title", "company", "job_type", "listing_status", "is_active", "created_at")
    list_filter = ("job_type", "listing_status", "is_active")
    search_fields = ("title", "company")


@admin.register(CVProfile)
class CVProfileAdmin(admin.ModelAdmin):
    list_display = ("user", "headline", "is_public")
    inlines = [CVSectionInline]


@admin.register(JobApplication)
class JobApplicationAdmin(admin.ModelAdmin):
    list_display = ("applicant", "listing", "status", "applied_at")
    list_filter = ("status",)


@admin.register(SavedJob)
class SavedJobAdmin(admin.ModelAdmin):
    list_display = ("user", "listing", "created_at")
    search_fields = ("user__email", "listing__title", "listing__company")


@admin.register(CareerResource)
class CareerResourceAdmin(admin.ModelAdmin):
    list_display = ("title", "resource_type", "career_stage", "is_published", "created_at")
    list_filter = ("resource_type", "is_published", "career_stage")
    search_fields = ("title", "tags", "career_stage")


@admin.register(CareerResourceAccessLog)
class CareerResourceAccessLogAdmin(admin.ModelAdmin):
    list_display = ("resource", "user", "accessed_at")


@admin.register(AlumniHandoff)
class AlumniHandoffAdmin(admin.ModelAdmin):
    list_display = ("created_at", "learner", "status", "attempts",
                    "alumni_module_reference", "sent_at", "confirmed_at")
    list_filter = ("status",)
    search_fields = ("learner__email", "alumni_module_reference", "last_error")
    autocomplete_fields = ("learner",)
    readonly_fields = ("learner", "enrolment_ref", "payload", "status", "attempts",
                       "last_error", "alumni_module_reference",
                       "created_at", "sent_at", "confirmed_at")
    date_hierarchy = "created_at"

    def has_add_permission(self, request):
        return False  # rows are system-generated only
