from django.db import models


class Education(models.Model):
    """Master list of qualifications (10th, 12th, BA, Btech, MBA, …).
    Admin-managed; drives the candidate 'Qualification' dropdown."""
    name = models.CharField(max_length=150, unique=True)
    is_active = models.BooleanField(default=True)
    sort_order = models.PositiveIntegerField(default=0)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        db_table = "master_educations"
        ordering = ["sort_order", "name"]

    def __str__(self):
        return self.name


class Country(models.Model):
    name = models.CharField(max_length=300)
    iso2 = models.CharField(max_length=6, null=True, blank=True)
    status = models.SmallIntegerField(null=True, blank=True)
    phone_code = models.CharField(max_length=15, null=True, blank=True)
    iso3 = models.CharField(max_length=9, null=True, blank=True)
    region = models.CharField(max_length=300, null=True, blank=True)
    subregion = models.CharField(max_length=300, null=True, blank=True)

    class Meta:
        db_table = "countries"
        ordering = ["name"]

    def __str__(self):
        return self.name


class State(models.Model):
    country = models.ForeignKey(
        Country,
        on_delete=models.CASCADE,
        db_column="country_id",
        related_name="states",
    )
    name = models.CharField(max_length=300)
    country_code = models.CharField(max_length=9, null=True, blank=True)

    class Meta:
        db_table = "states"
        ordering = ["name"]

    def __str__(self):
        return self.name


class City(models.Model):
    country = models.ForeignKey(
        Country,
        on_delete=models.CASCADE,
        db_column="country_id",
        related_name="cities",
    )
    state = models.ForeignKey(
        State,
        on_delete=models.CASCADE,
        db_column="state_id",
        related_name="cities",
    )
    name = models.CharField(max_length=300)
    country_code = models.CharField(max_length=9, null=True, blank=True)

    class Meta:
        db_table = "cities"
        ordering = ["name"]

    def __str__(self):
        return self.name


class NoticePeriod(models.Model):
    value = models.IntegerField(unique=True)
    label = models.CharField(max_length=100)
    is_active = models.BooleanField(default=True)
    sort_order = models.PositiveIntegerField(default=0)

    class Meta:
        db_table = "master_notice_periods"
        ordering = ["sort_order", "value"]

    def __str__(self):
        return self.label


class AnnualCTC(models.Model):
    value = models.DecimalField(max_digits=12, decimal_places=2, unique=True)
    label = models.CharField(max_length=100)
    is_active = models.BooleanField(default=True)
    sort_order = models.PositiveIntegerField(default=0)

    class Meta:
        db_table = "master_annual_ctc"
        ordering = ["sort_order", "value"]

    def __str__(self):
        return self.label


class Language(models.Model):
    """Master list of languages known by candidates."""
    name = models.CharField(max_length=100, unique=True)
    is_active = models.BooleanField(default=True)
    sort_order = models.PositiveIntegerField(default=0)

    class Meta:
        db_table = "master_languages"
        ordering = ["sort_order", "name"]

    def __str__(self):
        return self.name

