from django.contrib import admin
from modeltranslation.admin import TranslationAdmin, TranslationStackedInline, TranslationTabularInline
from .translation import *
from .models import (
    Author,
    EkranImages,
    CallLink,
    CallUserCategory,
    galareyaIMG,

    News,
    NewsImage,

    Elon,
    ElonImage,

    Rector,
    RectorEducation,
    RectorExperience,
    RectorScientificStat,
    RectorScientificStat,

    Faculty,
    FacultyStaff,
    Department,
    DepartmentStaff,
    
    ScientificStat,
    ResearchCenter,
    ResearchCenterStaff,
    PublicationStat,

    PartnerCountry,
    PartnerUniversity,
    CooperationProgram,

    ProjectCategory,
    Project,
    
    BachelorCategory,
    BachelorProgram,
    MasterCategory,
    MasterProgram,
    
    UniversityHistory,
    UniversityAchievement,
    UniversityStructure,
    AboutUniversity,
    AboutFeature,
    UniversityValue,

    EducationalDocument,
    Partner,

)



class NewsImageInline(admin.TabularInline):
    model = NewsImage
    extra = 1



@admin.register(News)
class NewsAdmin(admin.ModelAdmin):
    list_display = ("title", "author", "published_date", "created_at")
    list_filter = ("published_date", "author")
    search_fields = ("title", "short_description")
    prepopulated_fields = {"slug": ("title_uz",)}
    date_hierarchy = "published_date"

    inlines = [
        NewsImageInline,
    ]



class ElonImageInline(admin.TabularInline):
    model = ElonImage
    extra = 1



@admin.register(Elon)
class ElonAdmin(admin.ModelAdmin):
    list_display = ("title", "author", "published_date", "created_at")
    list_filter = ("published_date", "author")
    search_fields = ("title", "short_description", "content")
    prepopulated_fields = {"slug": ("title_uz",)}
    date_hierarchy = "published_date"

    inlines = [
        ElonImageInline,
    ]





# Education Inline
class RectorEducationInline(admin.TabularInline):
    model = RectorEducation



# Experience Inline
class RectorExperienceInline(admin.TabularInline):
    model = RectorExperience





# Scientific Stat (faqat 1 ta bo‘lishi kerak)
class RectorScientificStatInline(admin.StackedInline):
    model = RectorScientificStat



@admin.register(Rector)
class RectorAdmin(admin.ModelAdmin):
    list_display = ("full_name", "position", "email", "is_active")
    list_filter = ("position", "is_active")

    inlines = [
        RectorEducationInline,
        RectorExperienceInline,
        RectorScientificStatInline,
    ]




@admin.register(CallLink)
class CallLinkAdmin(admin.ModelAdmin):
    list_display = ('link_facebook','link_telegram','link_instagram','link_youtobe')


@admin.register(ScientificStat)
class ScientificStatAdmin(admin.ModelAdmin):
    list_display = ("title", "value", "order")
    ordering = ("order",)



class FacultyStaffInline(admin.StackedInline):
    model = FacultyStaff
    fk_name = "faculty"
    extra = 1
    # classes = ['collapse']  # vaqtincha o‘chiring

    fieldsets = (
        ("Asosiy", {
            "fields": (
                'full_name_uz', 'full_name_ru', 'full_name_en',
                'image',
                'position_uz', 'position_ru', 'position_en',
                'card_position_uz', 'card_position_ru', 'card_position_en',
                'is_leader',
            )
        }),
        ("Aloqa", {
            "fields": (
                'reception_days_uz', 'reception_days_ru', 'reception_days_en',
                'reception_time_uz', 'reception_time_ru', 'reception_time_en',
                'phone', 'email',
            )
        }),
        ("Tartib", {
            "fields": ('order',)
        }),
    )


@admin.register(Faculty)
class FacultyAdmin(admin.ModelAdmin):
    list_display = ("title", "name", "order")
    ordering = ("order",)
    search_fields = ("title", "name")

    prepopulated_fields = {"slug": ("title_uz",)}

    inlines = [FacultyStaffInline]

    fieldsets = (
        ("Asosiy", {
            "fields": (
                'title_uz', 'title_ru', 'title_en',
                'name_uz', 'name_ru', 'name_en',
                'slug', 'image', 'order',
            )
        }),
        ("Tavsif", {
            "fields": (
                'description_uz', 'description_ru', 'description_en',
            )
        }),
        ("Kontent", {
            "fields": (
                'content_uz', 'content_ru', 'content_en',
            )
        }),
    )
    
    
class DepartmentStaffInline(admin.StackedInline):
    model = DepartmentStaff
    extra = 1

    fieldsets = (
        ("Asosiy", {
            "fields": (
                'full_name_uz', 'full_name_ru', 'full_name_en',
                'image',
                'position_uz', 'position_ru', 'position_en',
                'card_position_uz', 'card_position_ru', 'card_position_en',
                'is_leader',
            )
        }),
        ("Aloqa", {
            "fields": (
                'reception_days_uz', 'reception_days_ru', 'reception_days_en',
                'reception_time_uz', 'reception_time_ru', 'reception_time_en',
                'phone', 'email',
            )
        }),
        ("Tartib", {
            "fields": ("order",)
        }),
    )

@admin.register(Department)
class DepartmentAdmin(admin.ModelAdmin):
    inlines = [DepartmentStaffInline]

    list_display = ("title","name", "faculty", "order")
    ordering = ("order",)
    search_fields = ("title",)
    list_filter = ("faculty",)

    prepopulated_fields = {"slug": ("title_uz",)}

    fieldsets = (
        ("Asosiy", {
            "fields": ("faculty", 'name_uz', 'name_ru', 'name_en', "slug", "image", "order")
        }),
        ("Nomi", {
            "fields": ('title_uz', 'title_ru', 'title_en',)
        }),
        ("Tavsif", {
            "fields": ('description_uz', 'description_ru', 'description_en',)
        }),
        ("Kontent", {
            "fields": ('content_uz', 'content_ru', 'content_en',)
        }),
    )

class ResearchCenterStaffInline(admin.StackedInline):
    model = ResearchCenterStaff
    fk_name = "department"   
    extra = 1
    classes = ['collapse']

    fieldsets = (
        ("Asosiy", {
            "fields": (
                "full_name",
                "image",
                "position",
                "card_position",
                "is_leader",
            )
        }),
        ("Aloqa", {
            "fields": (
                "reception_days",
                "reception_time",
                "phone",
                "email",
            )
        }),
        ("Tartib", {
            "fields": ("order",)
        }),
    )

from django.contrib import admin
from .models import ResearchCenter, ResearchCenterStaff


class ResearchCenterStaffInline(admin.StackedInline):
    model = ResearchCenterStaff
    fk_name = "department"
    extra = 1
    # classes = ['collapse']  # vaqtincha o‘chirib turamiz (muammo bo‘lmasligi uchun)

    fieldsets = (
        ("Asosiy", {
            "fields": (
                'full_name_uz', 'full_name_ru', 'full_name_en',
                'image',
                'position_uz', 'position_ru', 'position_en',
                'card_position_uz', 'card_position_ru', 'card_position_en',
                'is_leader',
            )
        }),
        ("Aloqa", {
            "fields": (
                'reception_days_uz', 'reception_days_ru', 'reception_days_en',
                'reception_time_uz', 'reception_time_ru', 'reception_time_en',
                'phone', 'email',
            )
        }),
        ("Tartib", {
            "fields": ("order",)
        }),
    )


@admin.register(ResearchCenter)
class ResearchCenterAdmin(admin.ModelAdmin):
    list_display = ("title", "name", "order")   # ✅ title qo‘shildi
    ordering = ("order",)
    search_fields = ("title", "name")           # ✅ title qo‘shildi

    prepopulated_fields = {"slug": ("title_uz",)}  # modeltranslation bilan title_uz ishlatiladi

    inlines = [ResearchCenterStaffInline]

    fieldsets = (
        ("Asosiy", {
            "fields": ('title_uz', 'title_ru', 'title_en', 'name_uz', 'name_ru', 'name_en', "slug", "image", "order")
        }),
        ("Tavsif", {
            "fields": ('description_uz', 'description_ru', 'description_en',)
        }),
        ("Kontent", {
            "fields": ('content_uz', 'content_ru', 'content_en',)
        }),
    )

@admin.register(PublicationStat)
class PublicationStatAdmin(admin.ModelAdmin):
    list_display = ("title", "count", "year")
    list_filter = ("year",)


class PartnerUniversityInline(admin.TabularInline):
    model = PartnerUniversity
    extra = 1

@admin.register(PartnerCountry)
class PartnerCountryAdmin(admin.ModelAdmin):
    list_display = ("name", "university_count", "order")
    ordering = ("order",)
    inlines = [PartnerUniversityInline]


@admin.register(Partner)
class PartnerAdmin(admin.ModelAdmin):
    list_display = ("name", "category", "order")
    list_filter = ("category",)
    search_fields = ("name", "description")
    ordering = ("order",)


@admin.register(CooperationProgram)
class CooperationProgramAdmin(admin.ModelAdmin):
    list_display = ("title", "order")
    ordering = ("order",)
    search_fields = ("title",)


@admin.register(ProjectCategory)
class ProjectCategoryAdmin(admin.ModelAdmin):
    list_display = ("name",)


@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
    list_display = (
        "title",
        "category",
        "start_year",
        "end_year",
        "progress",
        "is_active",
    )
    list_filter = ("category", "is_active")
    search_fields = ("title", "description")
    ordering = ("order",)


class BachelorProgramInline(admin.TabularInline):
    model = BachelorProgram
    extra = 1
    fields = ("name", "code", "duration", "order")
    ordering = ("order",)


@admin.register(BachelorCategory)
class BachelorCategoryAdmin(admin.ModelAdmin):
    list_display = ("title", "order")
    ordering = ("order",)
    search_fields = ("title",)
    inlines = [BachelorProgramInline]


@admin.register(BachelorProgram)
class BachelorProgramAdmin(admin.ModelAdmin):
    list_display = ("name", "category", "duration", "order")
    list_filter = ("category",)
    search_fields = ("name",)
    ordering = ("order",)


class MasterProgramInline(admin.TabularInline):
    model = MasterProgram
    extra = 1
    fields = ("name", "duration", "order")
    ordering = ("order",)


@admin.register(MasterCategory)
class MasterCategoryAdmin(admin.ModelAdmin):
    list_display = ("title", "duration", "order")
    ordering = ("order",)
    search_fields = ("title",)
    inlines = [MasterProgramInline]


@admin.register(MasterProgram)
class MasterProgramAdmin(admin.ModelAdmin):
    list_display = ("name", "category", "duration", "order")
    list_filter = ("category",)
    search_fields = ("name",)
    ordering = ("order",)
    

@admin.register(UniversityHistory)
class UniversityHistoryAdmin(admin.ModelAdmin):
    list_display = ("year", "title", "order")
    ordering = ("year",)
    search_fields = ("title", "description")

    
    
@admin.register(UniversityAchievement)
class UniversityAchievementAdmin(admin.ModelAdmin):
    list_display = ("title", "year", "order")
    ordering = ("order",)
    search_fields = ("title",)


@admin.register(UniversityStructure)
class UniversityStructureAdmin(admin.ModelAdmin):
    list_display = ("title", "count", "order")
    ordering = ("order",)
    search_fields = ("title",)



class AboutFeatureInline(admin.TabularInline):
    model = AboutFeature
    extra = 1
    fields = ("title", "description", "icon", "order")
    ordering = ("order",)


@admin.register(AboutUniversity)
class AboutUniversityAdmin(admin.ModelAdmin):
    list_display = ("title",)
    search_fields = ("title", "description")
    inlines = [AboutFeatureInline]



@admin.register(UniversityValue)
class UniversityValueAdmin(admin.ModelAdmin):
    list_display = ("type", "title", "order")
    list_filter = ("type",)
    ordering = ("type", "order")
    search_fields = ("title", "description")



from .models import ContactMessage
@admin.register(ContactMessage)
class ContactMessageAdmin(admin.ModelAdmin):
    list_display = ("name", "phone", "email", "created_at")
    search_fields = ("name", "phone", "email")
    list_filter = ("created_at",)


    
admin.site.register(Author)
admin.site.register(EkranImages)
admin.site.register(CallUserCategory)
admin.site.register(galareyaIMG)
admin.site.register(RectorScientificStat)


@admin.register(EducationalDocument)
class EducationalDocumentAdmin(admin.ModelAdmin):
    list_display = ("title", "description", "order")
    ordering = ("order",)
    search_fields = ("title", "description")
