from django.db import models

# Opções de tipo de vidro com correções para consistência
TIPO_VIDRO_CHOICES = [
    ('externo', 'Externo'),
    ('interno_nao_climatizado', 'Interno com Área Não Climatizada'),
    ('interno_climatizado', 'Interno com Área Climatizada'),
]


# Opções de diferencial de insolação para vidros, conforme as orientações e tipos definidos em obter_diferenciais_temperatura_insolacao
DIFERENCIAL_INSOLACAO_NORTE_CHOICES = [
    ('vidro_transparente_norte', 'Vidro Transparente Norte'),
    ('vidro_cortina_clara_norte', 'Vidro com Cortina Clara Norte'),
    ('vidro_blackout_preto_norte', 'Vidro com Blackout Preto Norte'),
]

DIFERENCIAL_INSOLACAO_SUL_CHOICES = [
    ('vidro_transparente_sul', 'Vidro Transparente Sul'),
    ('vidro_cortina_clara_sul', 'Vidro com Cortina Clara Sul'),
    ('vidro_blackout_preto_sul', 'Vidro com Blackout Preto Sul'),
]

DIFERENCIAL_INSOLACAO_LESTE_CHOICES = [
    ('vidro_transparente_leste', 'Vidro Transparente Leste'),
    ('vidro_cortina_clara_leste', 'Vidro com Cortina Clara Leste'),
    ('vidro_blackout_preto_leste', 'Vidro com Blackout Preto Leste'),
]

DIFERENCIAL_INSOLACAO_OESTE_CHOICES = [
    ('vidro_transparente_oeste', 'Vidro Transparente Oeste'),
    ('vidro_cortina_clara_oeste', 'Vidro com Cortina Clara Oeste'),
    ('vidro_blackout_preto_oeste', 'Vidro com Blackout Preto Oeste'),
]

class Vidro(models.Model):
    ambiente = models.ForeignKey('ctermica.Ambiente', on_delete=models.CASCADE, related_name='vidros_ambiente_n')

    # Campos para área, coeficiente, tipo e diferencial de insolação do vidro para o norte
    area_vidro_norte = models.FloatField(null=True, blank=True)
    coeficiente_vidro_norte = models.FloatField(null=True, blank=True)
    tipo_vidro_norte = models.CharField(max_length=30, choices=TIPO_VIDRO_CHOICES, null=True, blank=True)
    diferencial_insolacao_norte = models.CharField(max_length=50, choices=DIFERENCIAL_INSOLACAO_NORTE_CHOICES, null=True, blank=True)

    # Campos para área, coeficiente, tipo e diferencial de insolação do vidro para o sul
    area_vidro_sul = models.FloatField(null=True, blank=True)
    coeficiente_vidro_sul = models.FloatField(null=True, blank=True)
    tipo_vidro_sul = models.CharField(max_length=30, choices=TIPO_VIDRO_CHOICES, null=True, blank=True)
    diferencial_insolacao_sul = models.CharField(max_length=50, choices=DIFERENCIAL_INSOLACAO_SUL_CHOICES, null=True, blank=True)

    # Campos para área, coeficiente, tipo e diferencial de insolação do vidro para o leste
    area_vidro_leste = models.FloatField(null=True, blank=True)
    coeficiente_vidro_leste = models.FloatField(null=True, blank=True)
    tipo_vidro_leste = models.CharField(max_length=30, choices=TIPO_VIDRO_CHOICES, null=True, blank=True)
    diferencial_insolacao_leste = models.CharField(max_length=50, choices=DIFERENCIAL_INSOLACAO_LESTE_CHOICES, null=True, blank=True)

    # Campos para área, coeficiente, tipo e diferencial de insolação do vidro para o oeste
    area_vidro_oeste = models.FloatField(null=True, blank=True)
    coeficiente_vidro_oeste = models.FloatField(null=True, blank=True)
    tipo_vidro_oeste = models.CharField(max_length=30, choices=TIPO_VIDRO_CHOICES, null=True, blank=True)
    diferencial_insolacao_oeste = models.CharField(max_length=50, choices=DIFERENCIAL_INSOLACAO_OESTE_CHOICES, null=True, blank=True)

    def __str__(self):
        return f'Vidros do Ambiente: {self.ambiente.nome_ambiente}'
