from django.db import models

# Create your models here.
class Country(models.Model):
    name=models.CharField(max_length=64, default=None,
                        verbose_name="Country Name",
                        help_text=f"Values: Enter Country Name.")
    slug=models.SlugField(max_length=128, unique=True,
                        default=None,
                        verbose_name="Country Slug",
                        help_text=f"Values: Enter Country Slug.")
    country_short_name = models.CharField(max_length=16, default=None,
                        verbose_name="Country Short Name",
                        help_text=f"Values: Enter Country Short Name.")
    title=models.CharField(max_length=128, default=None,
                        verbose_name="Country Title",
                        help_text=f"Values: Enter Country Meta Title.")
    description=models.TextField(max_length=165, default=None,
                        verbose_name="Country Description",
                        help_text=f"Values: Enter Country Meta Description.")
    keyword=models.CharField(max_length=255, null=True, blank=True,
                        verbose_name="Country Keyword",
                        help_text=f"Values: Enter Country Meta Keywords.")
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name
    
    class Meta:
        verbose_name_plural = "Country"

class State(models.Model):
    country = models.ForeignKey(Country, related_name='CountryState', 
                        on_delete=models.CASCADE, default=None, 
                        verbose_name="Country Name", help_text=f"Values: Select Country Name.")
    name=models.CharField(max_length=64, default=None,
                        verbose_name="State Name",
                        help_text=f"Values: Enter State Name.")
    slug=models.SlugField(max_length=128, unique=True,
                        default=None,
                        verbose_name="State Slug",
                        help_text=f"Values: Enter State Slug.")
    title=models.CharField(max_length=128, default=None,
                        verbose_name="State Title",
                        help_text=f"Values: Enter State Meta Title.")
    description=models.TextField(max_length=165, default=None,
                        verbose_name="State Description",
                        help_text=f"Values: Enter State Meta Description.")
    keyword=models.CharField(max_length=255, null=True, blank=True,
                        verbose_name="State Keyword",
                        help_text=f"Values: Enter State Meta Keywords.")
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = "State"

class City(models.Model):
    state = models.ForeignKey(State, related_name='StateCity', 
                        on_delete=models.CASCADE, default=None, 
                        verbose_name="City Name", help_text=f"Values: Select City Name.")
    name=models.CharField(max_length=64, default=None,
                        verbose_name="City Name",
                        help_text=f"Values: Enter Category Name.")
    slug=models.SlugField(max_length=128, unique=True,
                        default=None,
                        verbose_name="City Slug",
                        help_text=f"Values: Enter City Slug.")
    title=models.CharField(max_length=128, default=None,
                        verbose_name="City Title",
                        help_text=f"Values: Enter City Meta Title.")
    description=models.TextField(max_length=165, default=None,
                        verbose_name="City Description",
                        help_text=f"Values: Enter City Meta Description.")
    keyword=models.CharField(max_length=255, null=True, blank=True,
                        verbose_name="City Keyword",
                        help_text=f"Values: Enter City Meta Keywords.")
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = "City"