from django.db import models

# Opções para o tipo de porta
TIPO_PORTA_CHOICES = [
    ('externa', 'Externa'),
    ('interna_nao_climatizada', 'Interna com Área Não Climatizada'),
    ('interna_climatizada', 'Interna com Área Climatizada'),
]

# Opções de materiais usados em portas
MATERIAL_PORTA_CHOICES = [
    ('madeira_macica', 'Madeira maciça'),
    ('madeira_semi_oca', 'Madeira semi-oca / leve'),
    ('vidro_temperado', 'Vidro temperado'),
    ('vidro_moldura', 'Vidro comum com moldura'),
    ('aluminio', 'Alumínio'),
    ('aco', 'Aço galvanizado / metálica'),
    ('pvc', 'PVC'),
    ('composta', 'Composta (alumínio + vidro)'),
    ('isolante', 'Isolante térmico/acústico'),
    ('outros', 'Outro'),
]

# Diferenciais unificados para madeira e vidro
DIFERENCIAL_INSOLACAO_PORTA = {
    'norte': [
        # Madeira maciça / semi-oca
        ('porta_madeira_clara_norte', 'Porta de Madeira Clara Norte'),
        ('porta_madeira_media_norte', 'Porta de Madeira Média Norte'),
        ('porta_madeira_escura_norte', 'Porta de Madeira Escura Norte'),

        # Vidro temperado / com moldura
        ('porta_vidro_transparente_norte', 'Porta de Vidro Transparente Norte'),
        ('porta_vidro_cortina_clara_norte', 'Vidro com Cortina Clara Norte'),
        ('porta_vidro_blackout_norte', 'Vidro com Blackout Norte'),

        # Alumínio (acabamento técnico e térmico)
        ('porta_aluminio_anodizado_refletivo_norte', 'Alumínio Anodizado Refletivo Norte'),
        ('porta_aluminio_anodizado_neutro_norte', 'Alumínio Anodizado Neutro Norte'),
        ('porta_aluminio_anodizado_absorvedor_norte', 'Alumínio Anodizado Absorvedor Norte'),

        # Aço (acabamento superficial e térmico)
        ('porta_aco_com_pintura_refletiva_norte', 'Aço com Pintura Refletiva Norte'),
        ('porta_aco_com_pintura_convencional_norte', 'Aço com Pintura Convencional Norte'),
        ('porta_aco_sem_pintura_exposta_norte', 'Aço com Superfície Exposta Norte'),

        # PVC
        ('porta_pvc_refletivo_norte', 'PVC com Superfície Refletiva Norte'),
        ('porta_pvc_neutro_norte', 'PVC com Superfície Neutra Norte'),
        ('porta_pvc_absorvedor_norte', 'PVC com Superfície Absorvedora Norte'),

        # Composta (alumínio + vidro)
        ('porta_composta_termo_refletiva_norte', 'Composta com Vidro Termo-Refletivo Norte'),
        ('porta_composta_termo_neutra_norte', 'Composta com Vidro Neutro Norte'),
        ('porta_composta_termo_absorvedora_norte', 'Composta com Vidro Absorvedor Norte'),

        # Isolante térmico/acústico
        ('porta_isolante_convencional_norte', 'Isolante Convencional Norte'),
        ('porta_isolante_refletivo_norte', 'Isolante com Camada Refletiva Norte'),
        ('porta_isolante_multicamadas_norte', 'Isolante Multicamadas Norte'),

    ],


    'sul': [
        # Madeira
        ('porta_madeira_clara_sul', 'Porta de Madeira Clara Sul'),
        ('porta_madeira_media_sul', 'Porta de Madeira Média Sul'),
        ('porta_madeira_escura_sul', 'Porta de Madeira Escura Sul'),

        # Vidro
        ('porta_vidro_transparente_sul', 'Porta de Vidro Transparente Sul'),
        ('porta_vidro_cortina_clara_sul', 'Vidro com Cortina Clara Sul'),
        ('porta_vidro_blackout_sul', 'Vidro com Blackout Sul'),

        # Alumínio
        ('porta_aluminio_anodizado_refletivo_sul', 'Alumínio Anodizado Refletivo Sul'),
        ('porta_aluminio_anodizado_neutro_sul', 'Alumínio Anodizado Neutro Sul'),
        ('porta_aluminio_anodizado_absorvedor_sul', 'Alumínio Anodizado Absorvedor Sul'),

        # Aço
        ('porta_aco_com_pintura_refletiva_sul', 'Aço com Pintura Refletiva Sul'),
        ('porta_aco_com_pintura_convencional_sul', 'Aço com Pintura Convencional Sul'),
        ('porta_aco_sem_pintura_exposta_sul', 'Aço com Superfície Exposta Sul'),

        # PVC
        ('porta_pvc_refletivo_sul', 'PVC com Superfície Refletiva Sul'),
        ('porta_pvc_neutro_sul', 'PVC com Superfície Neutra Sul'),
        ('porta_pvc_absorvedor_sul', 'PVC com Superfície Absorvedora Sul'),

        # Composta
        ('porta_composta_termo_refletiva_sul', 'Composta com Vidro Termo-Refletivo Sul'),
        ('porta_composta_termo_neutra_sul', 'Composta com Vidro Neutro Sul'),
        ('porta_composta_termo_absorvedora_sul', 'Composta com Vidro Absorvedor Sul'),

        # Isolante
        ('porta_isolante_convencional_sul', 'Isolante Convencional Sul'),
        ('porta_isolante_refletivo_sul', 'Isolante com Camada Refletiva Sul'),
        ('porta_isolante_multicamadas_sul', 'Isolante Multicamadas Sul'),
    ],


    'leste': [
        # Madeira
        ('porta_madeira_clara_leste', 'Porta de Madeira Clara Leste'),
        ('porta_madeira_media_leste', 'Porta de Madeira Média Leste'),
        ('porta_madeira_escura_leste', 'Porta de Madeira Escura Leste'),

        # Vidro
        ('porta_vidro_transparente_leste', 'Porta de Vidro Transparente Leste'),
        ('porta_vidro_cortina_clara_leste', 'Vidro com Cortina Clara Leste'),
        ('porta_vidro_blackout_leste', 'Vidro com Blackout Leste'),

        # Alumínio
        ('porta_aluminio_anodizado_refletivo_leste', 'Alumínio Anodizado Refletivo Leste'),
        ('porta_aluminio_anodizado_neutro_leste', 'Alumínio Anodizado Neutro Leste'),
        ('porta_aluminio_anodizado_absorvedor_leste', 'Alumínio Anodizado Absorvedor Leste'),

        # Aço
        ('porta_aco_com_pintura_refletiva_leste', 'Aço com Pintura Refletiva Leste'),
        ('porta_aco_com_pintura_convencional_leste', 'Aço com Pintura Convencional Leste'),
        ('porta_aco_sem_pintura_exposta_leste', 'Aço com Superfície Exposta Leste'),

        # PVC
        ('porta_pvc_refletivo_leste', 'PVC com Superfície Refletiva Leste'),
        ('porta_pvc_neutro_leste', 'PVC com Superfície Neutra Leste'),
        ('porta_pvc_absorvedor_leste', 'PVC com Superfície Absorvedora Leste'),

        # Composta
        ('porta_composta_termo_refletiva_leste', 'Composta com Vidro Termo-Refletivo Leste'),
        ('porta_composta_termo_neutra_leste', 'Composta com Vidro Neutro Leste'),
        ('porta_composta_termo_absorvedora_leste', 'Composta com Vidro Absorvedor Leste'),

        # Isolante
        ('porta_isolante_convencional_leste', 'Isolante Convencional Leste'),
        ('porta_isolante_refletivo_leste', 'Isolante com Camada Refletiva Leste'),
        ('porta_isolante_multicamadas_leste', 'Isolante Multicamadas Leste'),
    ],


    'oeste': [
        # Madeira
        ('porta_madeira_clara_oeste', 'Porta de Madeira Clara Oeste'),
        ('porta_madeira_media_oeste', 'Porta de Madeira Média Oeste'),
        ('porta_madeira_escura_oeste', 'Porta de Madeira Escura Oeste'),

        # Vidro
        ('porta_vidro_transparente_oeste', 'Porta de Vidro Transparente Oeste'),
        ('porta_vidro_cortina_clara_oeste', 'Vidro com Cortina Clara Oeste'),
        ('porta_vidro_blackout_oeste', 'Vidro com Blackout Oeste'),

        # Alumínio
        ('porta_aluminio_anodizado_refletivo_oeste', 'Alumínio Anodizado Refletivo Oeste'),
        ('porta_aluminio_anodizado_neutro_oeste', 'Alumínio Anodizado Neutro Oeste'),
        ('porta_aluminio_anodizado_absorvedor_oeste', 'Alumínio Anodizado Absorvedor Oeste'),

        # Aço
        ('porta_aco_com_pintura_refletiva_oeste', 'Aço com Pintura Refletiva Oeste'),
        ('porta_aco_com_pintura_convencional_oeste', 'Aço com Pintura Convencional Oeste'),
        ('porta_aco_sem_pintura_exposta_oeste', 'Aço com Superfície Exposta Oeste'),

        # PVC
        ('porta_pvc_refletivo_oeste', 'PVC com Superfície Refletiva Oeste'),
        ('porta_pvc_neutro_oeste', 'PVC com Superfície Neutra Oeste'),
        ('porta_pvc_absorvedor_oeste', 'PVC com Superfície Absorvedora Oeste'),

        # Composta
        ('porta_composta_termo_refletiva_oeste', 'Composta com Vidro Termo-Refletivo Oeste'),
        ('porta_composta_termo_neutra_oeste', 'Composta com Vidro Neutro Oeste'),
        ('porta_composta_termo_absorvedora_oeste', 'Composta com Vidro Absorvedor Oeste'),

        # Isolante
        ('porta_isolante_convencional_oeste', 'Isolante Convencional Oeste'),
        ('porta_isolante_refletivo_oeste', 'Isolante com Camada Refletiva Oeste'),
        ('porta_isolante_multicamadas_oeste', 'Isolante Multicamadas Oeste'),
    ],

}


class Porta(models.Model):
    ambiente = models.ForeignKey(
        'ctermica.Ambiente',
        on_delete=models.CASCADE,
        related_name='portas'
    )

    # NORTE
    tipo_porta_norte = models.CharField(max_length=40, choices=TIPO_PORTA_CHOICES, verbose_name="Tipo de Porta Norte")
    area_porta_norte = models.FloatField()
    coeficiente_porta_norte = models.FloatField()
    diferencial_insolacao_norte = models.CharField(
        max_length=80,
        choices=DIFERENCIAL_INSOLACAO_PORTA['norte'],
        verbose_name="Diferencial de Insolação Norte"
    )

    # SUL
    tipo_porta_sul = models.CharField(max_length=40, choices=TIPO_PORTA_CHOICES, verbose_name="Tipo de Porta Sul")
    area_porta_sul = models.FloatField()
    coeficiente_porta_sul = models.FloatField()
    diferencial_insolacao_sul = models.CharField(
        max_length=80,
        choices=DIFERENCIAL_INSOLACAO_PORTA['sul'],
        verbose_name="Diferencial de Insolação Sul"
    )

    # LESTE
    tipo_porta_leste = models.CharField(max_length=40, choices=TIPO_PORTA_CHOICES, verbose_name="Tipo de Porta Leste")
    area_porta_leste = models.FloatField()
    coeficiente_porta_leste = models.FloatField()
    diferencial_insolacao_leste = models.CharField(
        max_length=80,
        choices=DIFERENCIAL_INSOLACAO_PORTA['leste'],
        verbose_name="Diferencial de Insolação Leste"
    )

    # OESTE
    tipo_porta_oeste = models.CharField(max_length=40, choices=TIPO_PORTA_CHOICES, verbose_name="Tipo de Porta Oeste")
    area_porta_oeste = models.FloatField()
    coeficiente_porta_oeste = models.FloatField()
    diferencial_insolacao_oeste = models.CharField(
        max_length=80,
        choices=DIFERENCIAL_INSOLACAO_PORTA['oeste'],
        verbose_name="Diferencial de Insolação Oeste"
    )

    def __str__(self):
        return f'Portas no Ambiente: {self.ambiente.nome_ambiente}'

# from django.db import models 

# # Opções para o tipo de porta
# TIPO_PORTA_CHOICES = [
#     ('externa', 'Externa'),
#     ('interna_nao_climatizada', 'Interna com Área Não Climatizada'),
#     ('interna_climatizada', 'Interna com Área Climatizada'),
# ]

# # Diferenciais de insolação para portas de madeira por orientação
# DIFERENCIAL_INSOLACAO_MADEIRA_CHOICES = {
#     'norte': [
#         ('porta_madeira_clara_norte', 'Porta de Madeira Clara Norte'),
#         ('porta_madeira_media_norte', 'Porta de Madeira Média Norte'),
#         ('porta_madeira_escura_norte', 'Porta de Madeira Escura Norte'),
#     ],
#     'sul': [
#         ('porta_madeira_clara_sul', 'Porta de Madeira Clara Sul'),
#         ('porta_madeira_media_sul', 'Porta de Madeira Média Sul'),
#         ('porta_madeira_escura_sul', 'Porta de Madeira Escura Sul'),
#     ],
#     'leste': [
#         ('porta_madeira_clara_leste', 'Porta de Madeira Clara Leste'),
#         ('porta_madeira_media_leste', 'Porta de Madeira Média Leste'),
#         ('porta_madeira_escura_leste', 'Porta de Madeira Escura Leste'),
#     ],
#     'oeste': [
#         ('porta_madeira_clara_oeste', 'Porta de Madeira Clara Oeste'),
#         ('porta_madeira_media_oeste', 'Porta de Madeira Média Oeste'),
#         ('porta_madeira_escura_oeste', 'Porta de Madeira Escura Oeste'),
#     ]
# }

# # Diferenciais de insolação para portas de vidro por orientação
# DIFERENCIAL_INSOLACAO_VIDRO_CHOICES = {
#     'norte': [
#         ('porta_vidro_transparente_norte', 'Porta de Vidro Transparente Norte'),
#         ('porta_vidro_cortina_clara_norte', 'Porta de Vidro com Cortina Clara Norte'),
#         ('porta_vidro_blackout_norte', 'Porta de Vidro com Blackout Norte'),
#     ],
#     'sul': [
#         ('porta_vidro_transparente_sul', 'Porta de Vidro Transparente Sul'),
#         ('porta_vidro_cortina_clara_sul', 'Porta de Vidro com Cortina Clara Sul'),
#         ('porta_vidro_blackout_sul', 'Porta de Vidro com Blackout Sul'),
#     ],
#     'leste': [
#         ('porta_vidro_transparente_leste', 'Porta de Vidro Transparente Leste'),
#         ('porta_vidro_cortina_clara_leste', 'Porta de Vidro com Cortina Clara Leste'),
#         ('porta_vidro_blackout_leste', 'Porta de Vidro com Blackout Leste'),
#     ],
#     'oeste': [
#         ('porta_vidro_transparente_oeste', 'Porta de Vidro Transparente Oeste'),
#         ('porta_vidro_cortina_clara_oeste', 'Porta de Vidro com Cortina Clara Oeste'),
#         ('porta_vidro_blackout_oeste', 'Porta de Vidro com Blackout Oeste'),
#     ]
# }

# class PortaMadeira(models.Model):
#     ambiente = models.ForeignKey(
#         'ctermica.Ambiente',
#         on_delete=models.CASCADE,
#         related_name='portas_madeira'
#     )
#     tipo_porta_norte = models.CharField(max_length=30, choices=TIPO_PORTA_CHOICES, verbose_name="Tipo de Porta Norte")
#     area_porta_norte = models.FloatField()
#     coeficiente_porta_norte = models.FloatField()
#     diferencial_insolacao_norte = models.CharField(
#         max_length=50,
#         choices=DIFERENCIAL_INSOLACAO_MADEIRA_CHOICES['norte'],
#         verbose_name="Diferencial de Insolação Norte"
#     )

#     tipo_porta_sul = models.CharField(max_length=30, choices=TIPO_PORTA_CHOICES, verbose_name="Tipo de Porta Sul")
#     area_porta_sul = models.FloatField()
#     coeficiente_porta_sul = models.FloatField()
#     diferencial_insolacao_sul = models.CharField(
#         max_length=50,
#         choices=DIFERENCIAL_INSOLACAO_MADEIRA_CHOICES['sul'],
#         verbose_name="Diferencial de Insolação Sul"
#     )

#     tipo_porta_leste = models.CharField(max_length=30, choices=TIPO_PORTA_CHOICES, verbose_name="Tipo de Porta Leste")
#     area_porta_leste = models.FloatField()
#     coeficiente_porta_leste = models.FloatField()
#     diferencial_insolacao_leste = models.CharField(
#         max_length=50,
#         choices=DIFERENCIAL_INSOLACAO_MADEIRA_CHOICES['leste'],
#         verbose_name="Diferencial de Insolação Leste"
#     )

#     tipo_porta_oeste = models.CharField(max_length=30, choices=TIPO_PORTA_CHOICES, verbose_name="Tipo de Porta Oeste")
#     area_porta_oeste = models.FloatField()
#     coeficiente_porta_oeste = models.FloatField()
#     diferencial_insolacao_oeste = models.CharField(
#         max_length=50,
#         choices=DIFERENCIAL_INSOLACAO_MADEIRA_CHOICES['oeste'],
#         verbose_name="Diferencial de Insolação Oeste"
#     )

#     def __str__(self):
#         return f'Porta de Madeira no Ambiente: {self.ambiente.nome_ambiente}'


# class PortaVidro(models.Model):
#     ambiente = models.ForeignKey(
#         'ctermica.Ambiente',
#         on_delete=models.CASCADE,
#         related_name='portas_vidro'
#     )
#     tipo_porta_norte = models.CharField(max_length=30, choices=TIPO_PORTA_CHOICES, verbose_name="Tipo de Porta Norte")
#     area_porta_norte = models.FloatField()
#     coeficiente_porta_norte = models.FloatField()
#     diferencial_insolacao_norte = models.CharField(
#         max_length=50,
#         choices=DIFERENCIAL_INSOLACAO_VIDRO_CHOICES['norte'],
#         verbose_name="Diferencial de Insolação Norte"
#     )

#     tipo_porta_sul = models.CharField(max_length=30, choices=TIPO_PORTA_CHOICES, verbose_name="Tipo de Porta Sul")
#     area_porta_sul = models.FloatField()
#     coeficiente_porta_sul = models.FloatField()
#     diferencial_insolacao_sul = models.CharField(
#         max_length=50,
#         choices=DIFERENCIAL_INSOLACAO_VIDRO_CHOICES['sul'],
#         verbose_name="Diferencial de Insolação Sul"
#     )

#     tipo_porta_leste = models.CharField(max_length=30, choices=TIPO_PORTA_CHOICES, verbose_name="Tipo de Porta Leste")
#     area_porta_leste = models.FloatField()
#     coeficiente_porta_leste = models.FloatField()
#     diferencial_insolacao_leste = models.CharField(
#         max_length=50,
#         choices=DIFERENCIAL_INSOLACAO_VIDRO_CHOICES['leste'],
#         verbose_name="Diferencial de Insolação Leste"
#     )

#     tipo_porta_oeste = models.CharField(max_length=30, choices=TIPO_PORTA_CHOICES, verbose_name="Tipo de Porta Oeste")
#     area_porta_oeste = models.FloatField()
#     coeficiente_porta_oeste = models.FloatField()
#     diferencial_insolacao_oeste = models.CharField(
#         max_length=50,
#         choices=DIFERENCIAL_INSOLACAO_VIDRO_CHOICES['oeste'],
#         verbose_name="Diferencial de Insolação Oeste"
#     )

#     def __str__(self):
#         return f'Porta de Vidro no Ambiente: {self.ambiente.nome_ambiente}'
