from django.contrib import admin
from .models import (
    Candidate,
    Skill,
    Language,
    CandidateDocument,
    CandidateProject,
    CandidateReference,
    CandidateEducation,
    CandidateExperience,
)


class CandidateExperienceInline(admin.TabularInline):
    model = CandidateExperience
    extra = 0


class CandidateEducationInline(admin.TabularInline):
    model = CandidateEducation
    extra = 0


class CandidateProjectInline(admin.TabularInline):
    model = CandidateProject
    extra = 0


class CandidateReferenceInline(admin.TabularInline):
    model = CandidateReference
    extra = 0


class CandidateDocumentInline(admin.TabularInline):
    model = CandidateDocument
    extra = 0


@admin.register(Candidate)
class CandidateAdmin(admin.ModelAdmin):
    list_display = ("first_name", "last_name", "user", "phone_number", "status", "created_at")
    list_filter = ("status", "fresher", "created_at")
    search_fields = ("first_name", "last_name", "phone_number", "user__email")
    raw_id_fields = ("user", "created_by", "updated_by")
    filter_horizontal = ("languages", "skills")
    inlines = [
        CandidateExperienceInline,
        CandidateEducationInline,
        CandidateProjectInline,
        CandidateReferenceInline,
        CandidateDocumentInline,
    ]


@admin.register(Skill)
class SkillAdmin(admin.ModelAdmin):
    list_display = ("name",)
    search_fields = ("name",)


@admin.register(Language)
class LanguageAdmin(admin.ModelAdmin):
    list_display = ("name",)
    search_fields = ("name",)


@admin.register(CandidateDocument)
class CandidateDocumentAdmin(admin.ModelAdmin):
    list_display = ("candidate", "document_type", "verification_status")
    list_filter = ("document_type", "verification_status")
    search_fields = ("candidate__first_name", "candidate__last_name", "document_type")
