from django.db import models

# Definindo as opções para tipo de parede
TIPO_PAREDE_CHOICES = [
    ('externa', 'Externa'),
    ('interna_nao_climatizada', 'Interna com Área Não Climatizada'),
    ('interna_climatizada', 'Interna com Área Climatizada'),
]

# Opções específicas para cada orientação
TIPO_DIFERENCIAL_INSOLACAO_NORTE = [
    ('parede_clara_norte', 'Parede Clara Norte'),
    ('parede_media_norte', 'Parede Média Norte'),
    ('parede_escura_norte', 'Parede Escura Norte'),
] 

TIPO_DIFERENCIAL_INSOLACAO_SUL = [
    ('parede_clara_sul', 'Parede Clara Sul'),
    ('parede_media_sul', 'Parede Média Sul'),
    ('parede_escura_sul', 'Parede Escura Sul'),
]

TIPO_DIFERENCIAL_INSOLACAO_LESTE = [
    ('parede_clara_leste', 'Parede Clara Leste'),
    ('parede_media_leste', 'Parede Média Leste'),
    ('parede_escura_leste', 'Parede Escura Leste'),
]

TIPO_DIFERENCIAL_INSOLACAO_OESTE = [
    ('parede_clara_oeste', 'Parede Clara Oeste'),
    ('parede_media_oeste', 'Parede Média Oeste'),
    ('parede_escura_oeste', 'Parede Escura Oeste'),
]

class Parede(models.Model):
    ambiente = models.ForeignKey('ctermica.Ambiente', on_delete=models.CASCADE, related_name='paredes_ambiente_n')

    # Campos para paredes e diferencial de insolação para a orientação norte
    area_parede_norte = models.FloatField()
    coeficiente_parede_norte = models.FloatField()
    tipo_parede_norte = models.CharField(max_length=30, choices=TIPO_PAREDE_CHOICES)
    diferencial_insolacao_norte = models.CharField(max_length=30, choices=TIPO_DIFERENCIAL_INSOLACAO_NORTE, blank=True, null=True)

    # Campos para paredes e diferencial de insolação para a orientação sul
    area_parede_sul = models.FloatField()
    coeficiente_parede_sul = models.FloatField()
    tipo_parede_sul = models.CharField(max_length=30, choices=TIPO_PAREDE_CHOICES)
    diferencial_insolacao_sul = models.CharField(max_length=30, choices=TIPO_DIFERENCIAL_INSOLACAO_SUL, blank=True, null=True)

    # Campos para paredes e diferencial de insolação para a orientação leste
    area_parede_leste = models.FloatField()
    coeficiente_parede_leste = models.FloatField()
    tipo_parede_leste = models.CharField(max_length=30, choices=TIPO_PAREDE_CHOICES)
    diferencial_insolacao_leste = models.CharField(max_length=30, choices=TIPO_DIFERENCIAL_INSOLACAO_LESTE, blank=True, null=True)

    # Campos para paredes e diferencial de insolação para a orientação oeste
    area_parede_oeste = models.FloatField()
    coeficiente_parede_oeste = models.FloatField()
    tipo_parede_oeste = models.CharField(max_length=30, choices=TIPO_PAREDE_CHOICES)
    diferencial_insolacao_oeste = models.CharField(max_length=30, choices=TIPO_DIFERENCIAL_INSOLACAO_OESTE, blank=True, null=True)

    def __str__(self):
        return f'Paredes do Ambiente {self.ambiente.nome_ambiente}'
