import datetime
from django.utils.translation.template import blankout
from django.db import models
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from django.utils.text import slugify
from phonenumber_field.modelfields import PhoneNumberField

ICON_CHOICES = (
    ('fas fa-laptop', 'Noutbuk (Laptop)'),
    ('fas fa-book', 'Kitob (Book)'),
    ('fas fa-user-graduate', 'Bitiruvchi (Graduate)'),
    ('fas fa-chalkboard-teacher', "O'qituvchi (Teacher)"),
    ('fas fa-university', 'Universitet (University)'),
    ('fas fa-microscope', 'Mikroskop (Microscope)'),
    ('fas fa-globe', 'Globus (Globe)'),
    ('fas fa-language', 'Til (Language)'),
    ('fas fa-briefcase', 'Portfel (Briefcase)'),
    ('fas fa-chart-line', 'Grafik (Chart Line)'),
    ('fas fa-cogs', 'Mexanizm (Cogs)'),
    ('fas fa-flask', 'Kolba (Flask)'),
    ('fas fa-gavel', "Sudya bolg'asi (Gavel)"),
    ('fas fa-heartbeat', 'Tibbiyot (Heartbeat)'),
    ('fas fa-music', 'Musiqa (Music)'),
    ('fas fa-palette', 'Dizayn (Palette)'),
    ('fas fa-calculator', 'Kalkulyator (Calculator)'),
    ('fas fa-seedling', "Qishloq xo'jalik (Seedling)"),
    ('fas fa-balance-scale', 'Tarozi (Scale)'),
    ('fas fa-code', 'Dasturlash (Code)'),
    ('fas fa-atom', 'Fizika/Atom (Atom)'),
    ('fas fa-building', 'Bino (Building)'),
    ('fas fa-bus', 'Avtobus (Bus)'),
    ('fas fa-camera', 'Kamera (Camera)'),
    ('fas fa-drafting-compass', 'Chizmachilik (Compass)'),
    ('fas fa-futbol', 'Sport (Football)'),
    ('fas fa-history', 'Tarix (History)'),
    ('fas fa-landmark', 'Tarixiy bino (Landmark)'),
    ('fas fa-leaf', 'Ekologiya (Leaf)'),
    ('fas fa-medal', 'Medal (Medal)'),
    ('fas fa-star', 'Yulduz (Star)'),
    ('fas fa-certificate', 'Sertifikat (Certificate)'),
    ('fas fa-trophy', 'Kubok (Trophy)'),
    ('fas fa-users', 'Odamlar guruhi (Users)'),
)


class Author(models.Model):
    full_name = models.CharField(max_length=150)
    position = models.CharField(max_length=150, blank=True)

    def __str__(self):
        return self.full_name


# Ekran Rasmi
class EkranImages(models.Model):
    img = models.ImageField(upload_to='ekran_IMG/')

    class Meta:
        verbose_name = "Ekran Rasmi"
        verbose_name_plural = "Ekran Rasmlari"


# Aloqa User model
class CallLink(models.Model):

    link_facebook = models.CharField(max_length=50,blank=True, verbose_name="facebook-link")
    link_telegram = models.CharField(max_length=50,blank=True, verbose_name="telegram-link")
    link_instagram = models.CharField(max_length=50,blank=True, verbose_name="instagram-link")
    link_youtobe = models.CharField(max_length=50,blank=True, verbose_name="youtobe-link")

    class Meta:
        verbose_name = "Aloqa Linklar"
        verbose_name_plural = "Aloqa Linklar"

    def __str__(self):
        return "Ijtimoiy tarmoqlar"


# Aloqa Categoyasi
class CallUserCategory(models.Model):
    name = models.CharField(max_length=150, verbose_name="F.I.SH")
    rang = models.CharField(max_length=150, verbose_name="lavozimi")
    tell = PhoneNumberField(unique=True, blank=False, null=False, verbose_name="Tell number")
    mail = models.EmailField(max_length=254, verbose_name="email", blank=True, null=True)

    class Meta:
        verbose_name = "Aloqa Bo'limlar bilan bog'lanish"
        verbose_name_plural = "Aloqa Bo'limlar bilan bog'lanish"

    def __str__(self):
        return self.name

# Galareya
class galareyaIMG(models.Model):
    img = models.FileField(upload_to='galareya/')

    class Meta:
        verbose_name = "Galareya rasmi"
        verbose_name_plural = "Galareya rasmi"

    def __str__(self):
        return str(self.id)



# News model
class News(models.Model):
    title = models.CharField(max_length=255,verbose_name="Sarlavha")
    slug = models.SlugField(unique=True, blank=True)

    author = models.ForeignKey(
        Author,
        on_delete=models.SET_NULL,
        null=True,
        related_name="news"
    )

    published_date = models.DateField(verbose_name="Sana")
    main_image = models.ImageField(upload_to="news/main/",verbose_name="Asosiy rasm")
    short_description = models.TextField(verbose_name="Sarlavha")
    quote = models.TextField(blank=True,verbose_name="text")

    created_at = models.DateTimeField(auto_now_add=True)

    def save(self, *args, **kwargs):
        if not self.slug:
            title_to_slug = self.title_uz or self.title
            self.slug = slugify(title_to_slug)

            # Agar slug mavjud bo‘lsa, raqam qo‘shadi
            original_slug = self.slug
            queryset = News.objects.all()
            counter = 1

            while queryset.filter(slug=self.slug).exists():
                self.slug = f"{original_slug}-{counter}"
                counter += 1

        super().save(*args, **kwargs)

    def __str__(self):
        return self.title


class NewsImage(models.Model):
    news = models.ForeignKey(
        News,
        on_delete=models.CASCADE,
        related_name="gallery",
        verbose_name="Yangilik"
    )
    image = models.ImageField(upload_to="news/gallery/",verbose_name="Rasm")
    caption = models.CharField(max_length=255, blank=True,verbose_name="Izoh")

    def __str__(self):
        return f"{self.news.title} - image"


# Elon model
class Elon(models.Model):
    title = models.CharField(max_length=255)
    slug = models.SlugField(unique=True, blank=True)

    author = models.ForeignKey(
        Author,
        on_delete=models.SET_NULL,
        null=True,
        related_name="elons"
    )

    published_date = models.DateField(default=datetime.date.today, verbose_name="Sana")
    main_image = models.ImageField(upload_to="elons/main/", blank=True, null=True)

    short_description = models.TextField()
    content = models.TextField()


    created_at = models.DateTimeField(auto_now_add=True)

    def save(self, *args, **kwargs):
        if not self.slug:
            title_to_slug = self.title_uz or self.title
            self.slug = slugify(title_to_slug)
        super().save(*args, **kwargs)

    def __str__(self):
        return self.title


class ElonImage(models.Model):
    elon = models.ForeignKey(
        Elon,
        on_delete=models.CASCADE,
        related_name="gallery"
    )
    image = models.ImageField(upload_to="elons/gallery/")
    caption = models.CharField(max_length=255, blank=True)

    def __str__(self):
        return f"{self.elon.title} - image"










# Rektorat User Model
class Rector(models.Model):
    full_name = models.CharField(max_length=255, verbose_name="F.I.Sh")
    position = models.CharField(max_length=255, verbose_name="Lavozimi")
    image = models.ImageField(upload_to="rector/photo/", verbose_name="Rasm")

    academic_degree = models.CharField(max_length=255, verbose_name="Ilmiy daraja")
    experience_years = models.PositiveIntegerField(verbose_name="Ish staji (yil)")
    publications_count = models.PositiveIntegerField(verbose_name="Nashrlar soni")

    email = models.EmailField(verbose_name="Elektron pochta")
    phone = models.CharField(max_length=50, verbose_name="Telefon raqami")
    office_location = models.CharField(max_length=255, verbose_name="Qabul joyi")

    reception_days = models.CharField(max_length=255, verbose_name="Qabul kunlari")
    reception_time = models.CharField(max_length=100, verbose_name="Qabul vaqti")

    biography = models.TextField(verbose_name="Tarjimai hol")

    is_active = models.BooleanField(default=True, verbose_name="Faol")
    created_at = models.DateTimeField(auto_now_add=True, verbose_name="Yaratilgan sana")
    order = models.PositiveIntegerField(default=0, verbose_name="Tartib")

    def __str__(self):
        return self.full_name

    class Meta:
        ordering = ["order"]
        verbose_name = "Rektor"
        verbose_name_plural = "Rektor va prorektorlar"

class RectorEducation(models.Model):
    rector = models.ForeignKey(Rector, on_delete=models.CASCADE, related_name="educations", verbose_name="Rektor")
    start_year = models.PositiveIntegerField(verbose_name="Boshlanish yili")
    end_year = models.PositiveIntegerField(verbose_name="Tugash yili")
    degree = models.CharField(max_length=255, verbose_name="Darajasi")
    institution = models.CharField(max_length=255, verbose_name="OTM")
    specialization = models.CharField(max_length=255, verbose_name="Specializatsiya")

    def __str__(self):
        return f"{self.degree} - {self.institution}"
    
    class Meta:
        verbose_name = "Rektor Talim olgan OTM"
        verbose_name_plural = "Rektor Talim olgan OTMLar"


class RectorExperience(models.Model):
    rector = models.ForeignKey(Rector, on_delete=models.CASCADE, related_name="experiences", verbose_name="Rektor")
    start_year = models.CharField(max_length=20, verbose_name="Boshlanish yili")
    position = models.CharField(max_length=255, verbose_name="Lavozimi")
    organization = models.CharField(max_length=255, verbose_name="Ish joyi")
    responsibilities = models.TextField(verbose_name="Ish imkoniyatlari")

    def __str__(self):
        return self.position
    
    class Meta:
        verbose_name = "Rektor Mexnat-faoliyati"
        verbose_name_plural = "Rektor Mexnat-faoliyatlar"


class RectorScientificStat(models.Model):
    rector = models.OneToOneField(
        Rector,
        on_delete=models.CASCADE,
        related_name="scientific_stat",
        verbose_name="Rektor"
    )
    articles = models.PositiveIntegerField(verbose_name="Nashrlar soni")
    books = models.PositiveIntegerField(verbose_name="Kitoblar soni")
    phd_supervisions = models.PositiveIntegerField(verbose_name="PhD taqdim etilgan soni")
    awards = models.PositiveIntegerField(verbose_name="Yoshlar olimi")

    def __str__(self):
        return self.rector.full_name
    
    class Meta:
        verbose_name = "Rektor Ilmiy statistika"
        verbose_name_plural = "Rektor Ilmiy statistikalar"


class RectorSocialLink(models.Model):
    rector = models.ForeignKey(Rector, on_delete=models.CASCADE, related_name="social_links", verbose_name="Rektor")
    platform = models.CharField(max_length=50, verbose_name="Platforma")
    url = models.URLField(verbose_name="Link")

    def __str__(self):
        return self.platform
    
    class Meta:
        verbose_name = "Rektor Ijtimoiy tarmoq linki"
        verbose_name_plural = "Rektor Ijtimoiy tarmoq linklari"








# Fakultetlar
class Faculty(models.Model):
    title = models.CharField(max_length=255, verbose_name="Fakultet nomi")
    name = models.CharField(max_length=255, verbose_name="Fakultet Dekani",blank=True,null=True)
    slug = models.SlugField(unique=True, blank=True, null=True)
    image = models.ImageField(upload_to="faculty/", blank=True, null=True, verbose_name="Rasm")
    description = models.TextField(verbose_name="Qisqacha tavsif")
    content = models.TextField(verbose_name="Keng ma'lumot", blank=True, null=True)
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]
        verbose_name = "Fakultet"
        verbose_name_plural = "Fakultetlar"



    def save(self, *args, **kwargs):
        if not self.slug:
            title_to_slug = self.title_uz or self.title
            self.slug = slugify(title_to_slug)
        super().save(*args, **kwargs)

    def __str__(self):
        return self.title


# Fakultet xodimlari
class FacultyStaff(models.Model):
    faculty = models.ForeignKey(Faculty, on_delete=models.CASCADE, related_name="staffs", verbose_name="Fakultet")
    full_name = models.CharField(max_length=255, verbose_name="F.I.Sh")
    image = models.ImageField(upload_to="faculty_staff/", blank=True, null=True, verbose_name="Rasm")
    position = models.CharField(max_length=255, verbose_name="Lavozimi")
    card_position = models.CharField(max_length=255, blank=True, verbose_name="Card lavozimi")
    is_leader = models.BooleanField(default=False, verbose_name="Rahbar (Dekan/Mudiri)?")
    
    # Yangi qatorlar (Rektor dizayni to'liq ishlashi uchun)
    reception_days = models.CharField(max_length=255, blank=True, null=True, verbose_name="Qabul kunlari")
    reception_time = models.CharField(max_length=255, blank=True, null=True, verbose_name="Qabul vaqti")
    phone = models.CharField(max_length=255, blank=True, null=True, verbose_name="Telefon raqami")
    email = models.EmailField(blank=True, null=True, verbose_name="Elektron pochta")
    
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]
        verbose_name = "Fakultet xodimi"
        verbose_name_plural = "Fakultet xodimlari"

    def __str__(self):
        return f"{self.full_name} ({self.position})"




# Kafedralar
class Department(models.Model):
    faculty = models.ForeignKey(Faculty, on_delete=models.CASCADE, related_name="departments", verbose_name="Fakultet", blank=True, null=True)
    title = models.CharField(max_length=255, verbose_name="Kafedra nomi")
    name = models.CharField(max_length=255, verbose_name="Kafedra Mudiri",blank=True,null=True)
    slug = models.SlugField(unique=True, blank=True, null=True)
    image = models.ImageField(upload_to="department/", blank=True, null=True, verbose_name="Rasm")
    description = models.TextField(verbose_name="Qisqacha tavsif")
    content = models.TextField(verbose_name="Keng ma'lumot", blank=True, null=True)
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]
        verbose_name = "Kafedra"
        verbose_name_plural = "Kafedralar"

    def save(self, *args, **kwargs):
        if not self.slug:
            title_to_slug = self.title_uz or self.title
            self.slug = slugify(title_to_slug)
        super().save(*args, **kwargs)

    def __str__(self):
        return self.title


# Kafedralar xodimlari
class DepartmentStaff(models.Model):
    department = models.ForeignKey(Department, on_delete=models.CASCADE, related_name="staffs", verbose_name="Kafedra",blank=True, null=True)
    full_name = models.CharField(max_length=255, verbose_name="F.I.Sh")
    image = models.ImageField(upload_to="department_staff/", blank=True, null=True, verbose_name="Rasm")
    position = models.CharField(max_length=255, verbose_name="Lavozimi")
    card_position = models.CharField(max_length=255, blank=True, verbose_name="Card lavozimi")
    is_leader = models.BooleanField(default=False, verbose_name="Rahbar (Kafedra mudiri)?")

    reception_days = models.CharField(max_length=255, blank=True, null=True, verbose_name="Qabul kunlari")
    reception_time = models.CharField(max_length=255, blank=True, null=True, verbose_name="Qabul vaqti")
    phone = models.CharField(max_length=255, blank=True, null=True, verbose_name="Telefon raqami")
    email = models.EmailField(blank=True, null=True, verbose_name="Elektron pochta")

    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]
        verbose_name = "Kafedra xodimi"
        verbose_name_plural = "Kafedra xodimlari"

    def __str__(self):
        return f"{self.full_name} ({self.position})"





    
    




# Bo'limlar
class ResearchCenter(models.Model):
    title = models.CharField(max_length=255, verbose_name="Bo'limlar nomi")
    name = models.CharField(max_length=255, verbose_name="Bo'limlar Mudiri",blank=True,null=True)
    slug = models.SlugField(unique=True, blank=True, null=True)
    image = models.ImageField(upload_to="research_center/", blank=True, null=True, verbose_name="Rasm")
    description = models.TextField(verbose_name="Qisqacha tavsif")
    content = models.TextField(verbose_name="Keng ma'lumot", blank=True, null=True)
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]
        verbose_name = "Bo'limlar"
        verbose_name_plural = "Bo'limlar"

    def __str__(self):
        return self.title or "Nomsiz Bo'limlar"

    def save(self, *args, **kwargs):
        if not self.slug:
            title_to_slug = getattr(self, 'title_uz', self.title) or self.title
            self.slug = slugify(title_to_slug)
        super().save(*args, **kwargs)


# Bo'limlar xodimlari
class ResearchCenterStaff(models.Model):
    department = models.ForeignKey(ResearchCenter, on_delete=models.CASCADE, related_name="staffs", verbose_name="Bo'limlar",blank=True, null=True)
    full_name = models.CharField(max_length=255, verbose_name="F.I.Sh",blank=True,null=True)
    image = models.ImageField(upload_to="department_staff/", blank=True, null=True, verbose_name="Rasm")
    position = models.CharField(max_length=255, verbose_name="Lavozimi",blank=True,null=True)
    card_position = models.CharField(max_length=255, blank=True, verbose_name="Card lavozimi",null=True)
    is_leader = models.BooleanField(default=False, verbose_name="Rahbar (Bo'limlar mudiri)?")

    reception_days = models.CharField(max_length=255, blank=True, null=True, verbose_name="Qabul kunlari")
    reception_time = models.CharField(max_length=255, blank=True, null=True, verbose_name="Qabul vaqti")
    phone = models.CharField(max_length=255, blank=True, null=True, verbose_name="Telefon raqami")
    email = models.EmailField(blank=True, null=True, verbose_name="Elektron pochta")

    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]
        verbose_name = "Bo'limlar xodimi"
        verbose_name_plural = "Bo'limlar xodimlari"

    def __str__(self):
        return self.full_name or "Ismsiz xodim"





# Ilmiy faoliyat (ILMIY FAOLIYAT)
class ScientificStat(models.Model):
    title = models.CharField(max_length=150, verbose_name="Ilmiy statistika")  # Masalan: PhD darajali olimlar
    value = models.CharField(max_length=50, verbose_name="Qiymat")   # 50+, 150+ va h.k.
    order = models.PositiveIntegerField(default=0, verbose_name="Tartib")

    class Meta:
        ordering = ["order"]
        verbose_name = "Ilmiy statistika"
        verbose_name_plural = "Ilmiy statistikalar"

    def __str__(self):
        return self.title


class PublicationStat(models.Model):
    title = models.CharField(max_length=255, verbose_name="Nashrlar")  # Scopus, Web of Science
    count = models.PositiveIntegerField(verbose_name="Qiymat")
    year = models.PositiveIntegerField(default=2024, verbose_name="Yil")

    def __str__(self):
        return f"{self.title} - {self.count}"


# O'quv faoliyati hujjatlari
class EducationalDocument(models.Model):
    title = models.CharField(max_length=255, verbose_name="Hujjat nomi")
    description = models.CharField(max_length=255, blank=True, verbose_name="Tavsif (masalan: Bakalavr, Kunduzgi)")
    file = models.FileField(upload_to="edu_documents/", verbose_name="Fayl (PDF, Word)")
    order = models.PositiveIntegerField(default=0, verbose_name="Tartib")

    class Meta:
        ordering = ["order"]
        verbose_name = "O'quv hujjati"
        verbose_name_plural = "O'quv hujjatlari"

    def __str__(self):
        return self.title


# Xalqaro hamkorlik
class PartnerCountry(models.Model):
    name = models.CharField(max_length=150, verbose_name="Davlat")
    flag = models.ImageField(upload_to="countries/", blank=True, null=True, verbose_name="Bayroq")
    university_count = models.PositiveIntegerField(default=0, verbose_name="Universitetlar soni")
    order = models.PositiveIntegerField(default=0, verbose_name="Tartib")

    class Meta:
        ordering = ["order"]
        verbose_name = "Hamkor davlat"
        verbose_name_plural = "Hamkor davlatlar"

    def __str__(self):
        return self.name

class PartnerUniversity(models.Model):
    country = models.ForeignKey(
        PartnerCountry,
        on_delete=models.CASCADE,
        related_name="universities"
    )
    name = models.CharField(max_length=255, verbose_name="Universitet")

    def __str__(self):
        return self.name

class CooperationProgram(models.Model):
    title = models.CharField(max_length=255, verbose_name="Dastur")
    description = models.TextField(verbose_name="Tavsif")
    icon = models.CharField(
        max_length=50,
        choices=ICON_CHOICES,
        blank=True,
        help_text="Ikonkani tanlang"
    )
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]
        verbose_name = "Hamkorlik dasturi"
        verbose_name_plural = "Hamkorlik dasturlari"

    def __str__(self):
        return self.title

PARTNER_CATEGORY_CHOICES = (
    ('xalqaro', 'Xalqaro Hamkor'),
    ('milliy', 'Milliy Hamkor'),
    ('sanoat', 'Sanoat Hamkorlik'),
)

class Partner(models.Model):
    name = models.CharField(max_length=255, verbose_name="Hamkor nomi")
    category = models.CharField(max_length=50, choices=PARTNER_CATEGORY_CHOICES, default='xalqaro', verbose_name="Kategoriya")
    icon = models.CharField(max_length=50, choices=ICON_CHOICES, blank=True, help_text="Ikonkani tanlang")
    country = models.CharField(max_length=255, verbose_name="Davlat/Manzil")
    description = models.TextField(verbose_name="Tavsif")
    order = models.PositiveIntegerField(default=0, verbose_name="Tartib")

    class Meta:
        ordering = ["order"]
        verbose_name = "Hamkor"
        verbose_name_plural = "Hamkorlar"

    def __str__(self):
        return self.name

class ProjectCategory(models.Model):
    name = models.CharField(max_length=100, verbose_name="Loyiha kategoriyasi")  # Davlat, Xalqaro, Start-up

    def __str__(self):
        return self.name
    
    class Meta:
        verbose_name = "FAOLIYAT - Loyiha kategoriyasi"
        verbose_name_plural = "FAOLIYAT - Loyiha kategoriyalari"

# Loyiha modeli
class Project(models.Model):
    category = models.ForeignKey(
        ProjectCategory,
        on_delete=models.SET_NULL,
        null=True,
        related_name="projects"
    )

    title = models.CharField(max_length=255, verbose_name="Loyiha")
    description = models.TextField(verbose_name="Tavsif")

    start_year = models.PositiveIntegerField(verbose_name="Boshlanish yili")
    end_year = models.PositiveIntegerField(verbose_name="Tugash yili")

    budget = models.DecimalField(
        max_digits=12,
        decimal_places=2,
        blank=True,
        null=True
    )

    participants = models.PositiveIntegerField(default=0, verbose_name="Ishtirokchilar")
    location = models.CharField(max_length=255, blank=True, verbose_name="Manzil")

    progress = models.PositiveIntegerField(
        default=0,
        help_text="Foizda (0-100)",
        verbose_name="Jarayon"
    )

    is_active = models.BooleanField(default=True)
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]
        verbose_name = "Loyiha"
        verbose_name_plural = "Loyihalar"

    def __str__(self):
        return self.title





# Bakalavr kategoriya
class BachelorCategory(models.Model):
    title = models.CharField(max_length=255)
    icon = models.CharField(
        max_length=50,
        choices=ICON_CHOICES,
        blank=True,
        help_text="Ikonkani tanlang"
    )
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]
        verbose_name = "Bakalavr kategoriya"
        verbose_name_plural = "Bakalavr kategoriyalar"

    def __str__(self):
        return self.title


# Bakalavr yo‘nalishlari
class BachelorProgram(models.Model):
    category = models.ForeignKey(
        BachelorCategory,
        on_delete=models.CASCADE,
        related_name="programs"
    )
    name = models.CharField(max_length=255)
    code = models.CharField(
        max_length=50,
        blank=True,
        help_text="Yo‘nalish kodi (ixtiyoriy)"
    )
    duration = models.PositiveIntegerField(
        default=4,
        help_text="Yil"
    )
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]
        verbose_name = "Bakalavr yo‘nalishi"
        verbose_name_plural = "Bakalavr yo‘nalishlari"

    def __str__(self):
        return self.name


# Magistratura kategoriya
class MasterCategory(models.Model):
    title = models.CharField(max_length=255)
    description = models.TextField(blank=True)
    duration = models.PositiveIntegerField(default=2)
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]
        verbose_name = "Magistratura turi"
        verbose_name_plural = "Magistratura turlari"

    def __str__(self):
        return self.title


# Magistratura yo‘nalishlari (agar keyin qo‘shmoqchi bo‘lsangiz)
class MasterProgram(models.Model):
    category = models.ForeignKey(
        MasterCategory,
        on_delete=models.CASCADE,
        related_name="programs"
    )
    name = models.CharField(max_length=255)
    duration = models.PositiveIntegerField(default=2)
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]
        verbose_name = "Magistratura yo‘nalishi"
        verbose_name_plural = "Magistratura yo‘nalishlari"

    def __str__(self):
        return self.name


# Universitet tarixi (Timeline)
class UniversityHistory(models.Model):
    year = models.PositiveIntegerField()
    title = models.CharField(max_length=255)
    description = models.TextField()
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["year"]
        verbose_name = "Universitet tarixi"
        verbose_name_plural = "Universitet tarixi"

    def __str__(self):
        return f"{self.year} - {self.title}"


# Yutuqlar va mukofotlar
class UniversityAchievement(models.Model):
    title = models.CharField(max_length=255)
    description = models.CharField(max_length=255, blank=True)
    year = models.PositiveIntegerField(blank=True, null=True)
    icon = models.CharField(max_length=50, choices=ICON_CHOICES, blank=True, help_text="Ikonkani tanlang")
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]
        verbose_name = "Yutuq"
        verbose_name_plural = "Yutuqlar"

    def __str__(self):
        return self.title


# Universitet tuzilmasi
class UniversityStructure(models.Model):
    title = models.CharField(max_length=255)
    description = models.CharField(max_length=255, blank=True)
    count = models.CharField(max_length=50, blank=True)
    icon = models.CharField(max_length=50, choices=ICON_CHOICES, blank=True, help_text="Ikonkani tanlang")
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]
        verbose_name = "Tuzilma"
        verbose_name_plural = "Universitet tuzilmasi"

    def __str__(self):
        return self.title


# Biz haqimizda (asosiy blok)
class AboutUniversity(models.Model):
    title = models.CharField(max_length=255)
    description = models.TextField()
    image = models.ImageField(upload_to="about/", blank=True, null=True)

    def __str__(self):
        return self.title


class AboutFeature(models.Model):
    about = models.ForeignKey(
        AboutUniversity,
        on_delete=models.CASCADE,
        related_name="features"
    )
    title = models.CharField(max_length=255)
    description = models.CharField(max_length=255)
    icon = models.CharField(max_length=50, choices=ICON_CHOICES, blank=True, help_text="Ikonkani tanlang")
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["order"]

    def __str__(self):
        return self.title


# Missiya / Viziya / Qadriyatlar
class UniversityValue(models.Model):
    TYPE_CHOICES = (
        ("mission", "Missiya"),
        ("vision", "Viziya"),
        ("values", "Qadriyatlar"),
    )

    type = models.CharField(max_length=20, choices=TYPE_CHOICES)
    title = models.CharField(max_length=255)
    description = models.TextField()
    order = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ["type", "order"]
        verbose_name = "Missiya/Viziya/Qadriyat"
        verbose_name_plural = "Missiya, Viziya va Qadriyatlar"

    def __str__(self):
        return f"{self.get_type_display()} - {self.title}"


class ContactMessage(models.Model):
    name = models.CharField(max_length=150)
    phone = models.CharField(max_length=50)
    email = models.EmailField()
    message = models.TextField()

    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        verbose_name = "Xabar"
        verbose_name_plural = "Xabarlar"
        ordering = ["-created_at"]

    def __str__(self):
        return f"{self.name} - {self.created_at.strftime('%Y-%m-%d')}"
