from django.contrib import admin
from .models import (
    Course, CourseEligibility, CourseFee, FeeDetail, HostelFee, 
    Semester, Subject, CareerProspect,
    Recruiter, WhyJoin, CourseHighlight, CourseImage, Testimonial
)


class SubjectInline(admin.TabularInline):
    model = Subject
    extra = 1


class SemesterAdmin(admin.ModelAdmin):
    list_display = ('name', 'number', 'course')
    list_filter = ('course',)
    inlines = [SubjectInline]


class SemesterInline(admin.TabularInline):
    model = Semester
    extra = 1
    show_change_link = True


class FeeDetailInline(admin.TabularInline):
    model = FeeDetail
    extra = 1


class CourseFeeAdmin(admin.ModelAdmin):
    list_display = ('course', 'domestic', 'international')
    inlines = [FeeDetailInline]


class CourseEligibilityInline(admin.StackedInline):
    model = CourseEligibility


class CourseFeeInline(admin.StackedInline):
    model = CourseFee
    show_change_link = True


class HostelFeeInline(admin.StackedInline):
    model = HostelFee


class CareerProspectInline(admin.TabularInline):
    model = CareerProspect
    extra = 1



class RecruiterInline(admin.TabularInline):
    model = Recruiter
    extra = 1


class WhyJoinInline(admin.TabularInline):
    model = WhyJoin
    extra = 1


class CourseHighlightInline(admin.TabularInline):
    model = CourseHighlight
    extra = 1


class CourseImageInline(admin.TabularInline):
    model = CourseImage
    extra = 1


class TestimonialInline(admin.TabularInline):
    model = Testimonial
    extra = 1


@admin.register(Course)
class CourseAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug', 'category', 'duration', 'created_at', 'updated_at')
    list_filter = ('category', 'created_at', 'updated_at')
    search_fields = ('title', 'short_description', 'overview')
    prepopulated_fields = {'slug': ('title',)}
    inlines = [
        CourseEligibilityInline, CourseFeeInline, HostelFeeInline, SemesterInline,
        CareerProspectInline, RecruiterInline, WhyJoinInline, CourseHighlightInline, CourseImageInline,
        TestimonialInline
    ]


admin.site.register(Semester, SemesterAdmin)
admin.site.register(Subject)
admin.site.register(CourseFee, CourseFeeAdmin)
admin.site.register(FeeDetail)
admin.site.register(HostelFee)
admin.site.register(CourseEligibility)
admin.site.register(CareerProspect)
admin.site.register(Recruiter)
admin.site.register(WhyJoin)
admin.site.register(CourseHighlight)
admin.site.register(CourseImage)
admin.site.register(Testimonial)