from django.db import models

class installer(models.Model):  # installer table #
    hmac = models.CharField(max_length=5000)
    host = models.CharField(max_length=5000)
    shop = models.CharField(max_length=5000)
    code = models.CharField(max_length=5000)
    access_token = models.CharField(max_length=5000)
    admin_email =  models.CharField(max_length=500)
    install_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.shop

class Sender(models.Model):  
    smtp_host = models.CharField(max_length=255)
    smtp_port = models.IntegerField()
    smtp_username = models.CharField(max_length=255)
    smtp_password = models.CharField(max_length=255)
    use_tls = models.CharField(max_length=255)
    spine_soft_template_user = models.TextField()
    spine_soft_subject_user = models.CharField(max_length=5000)
    spine_medium_template_user = models.TextField()
    spine_medium_subject_user = models.CharField(max_length=5000)
    spine_firm_template_user = models.TextField()
    spine_firm_subject_user = models.CharField(max_length=5000)
    spine_xfirm_template_user = models.TextField()
    spine_xfirm_subject_user = models.CharField(max_length=5000)
    spine_soft_template_admin = models.TextField()
    spine_soft_subject_admin = models.CharField(max_length=5000)
    spine_medium_template_admin = models.TextField()
    spine_medium_subject_admin = models.CharField(max_length=5000)
    spine_firm_template_admin = models.TextField()
    spine_firm_subject_admin = models.CharField(max_length=5000)
    spine_xfirm_template_admin = models.TextField()
    spine_xfirm_subject_admin = models.CharField(max_length=5000)
    smtp_shop = models.ForeignKey("installer", on_delete=models.CASCADE, related_name="Shopsmtp")

    def __str__(self):
        return self.smtp_username

class customer(models.Model):
    name = models.CharField(max_length=255)
    contact_number = models.CharField(max_length=255)
    city = models.CharField(max_length=255)
    email = models.EmailField()
    gender = models.CharField(max_length=255)
    age = models.IntegerField()
    height = models.FloatField()
    weight = models.FloatField()
    date = models.DateField(auto_now_add=True)
    shop = models.ForeignKey("installer", on_delete=models.CASCADE, related_name="ShopCustomer")

    def __str__(self):
        return self.name

class Matress(models.Model):
    matressfor_choice = [
        ("kids_bed", "kids_bed"),
        ("single_bed", "single_bed"),
        ("double_bed", "double_bed")
    ]
    
    customer = models.ForeignKey('customer', on_delete=models.CASCADE, related_name="MatressCustomer")
    shop = models.ForeignKey("installer", on_delete=models.CASCADE, related_name="ShopMatress")
    getting_out_of_bed= models.CharField(max_length=255)
    driving_and_sitting_in_a_car_or_bus =models.CharField(max_length=255)
    climbing_15_to_20_stairs  = models.CharField(max_length=255)
    lifting_and_carrying_bag_luggage = models.CharField(max_length=255)
    matressfor = models.CharField(max_length=10, choices=matressfor_choice)

    def __str__(self):
        return f"{self.customer.name}"
    
class Physical_Age_Field(models.Model):
    field_name = models.CharField(max_length=255)
    field_value = models.CharField(max_length=255)
    def __str__(self):
       return f"{self.field_name}: {self.field_value}"    
    
class Physical_Age_Values(models.Model):
    Physical_Age_Field= models.ForeignKey('Physical_Age_Field', on_delete=models.CASCADE, related_name="PhysicAF")
    spine_soft = models.FloatField()
    spine_medium = models.FloatField()
    spine_firm = models.FloatField()
    spine_xfirm = models.FloatField()
    def __str__(self):
         return f"{self.Physical_Age_Field.field_name}: {self.Physical_Age_Field.field_value}"

class Age_analyze(models.Model):
    Age = models.IntegerField(primary_key=True)
    spine_soft = models.FloatField()
    spine_medium = models.FloatField()
    spine_firm = models.FloatField()
    spine_xfirm = models.FloatField()

    def __str__(self):
        return str(self.Age)

class Weight_analyze(models.Model):
    weight = models.IntegerField(primary_key=True)
    spine_soft = models.FloatField()
    spine_medium = models.FloatField()
    spine_firm = models.FloatField()
    spine_xfirm = models.FloatField()

    def __str__(self):
        return  str(self.weight)
         
class Height_analyze(models.Model):
    height= models.IntegerField(primary_key=True)
    spine_soft = models.FloatField()
    spine_medium = models.FloatField()
    spine_firm = models.FloatField()
    spine_xfirm = models.FloatField()
    def __str__(self):
        return  str(self.height)
    
class uninstall_data(models.Model):     # uninstall_data table #
    uninstall_shop = models.CharField(max_length=500)
    uninstall_time = models.CharField(max_length=200)
    uninstall_log = models.CharField(max_length=3000)