from django.db import models
from django.contrib.auth.models import User # 1. Importamos o modelo User

# Create your models here.

class Empresa(models.Model):
    nome_fantasia = models.CharField(max_length=200, verbose_name="Nome Fantasia")
    razao_social = models.CharField(max_length=200, unique=True, verbose_name="Razão Social")
    # ... outros campos como CNPJ, endereço, etc. ...

    def __str__(self):
        return self.nome_fantasia

class Funcionario(models.Model):
    """
    Este modelo estende o modelo User padrão do Django,
    adicionando informações profissionais com base na imagem de referência.
    """
    
    # Lista de opções para o campo 'Idioma'
    IDIOMA_CHOICES = [
        ('pt-br', 'Português do Brasil'),
        ('en', 'Inglês'),
        ('es', 'Espanhol'),
    ]

    # Lista de opções para 'Perfil Padrão' (Exemplo)
    PERFIL_CHOICES = [
        ('admin', 'Administrador'),
        ('technician', 'Tecnico'),
        ('consulta', 'Consulta'),
    ]

    # --- Campos da Imagem ---

    # Relação 1-para-1 com o User (login, senha, email, nome)
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='funcionario')

    # Foto de Perfil
    # 'upload_to' define a subpasta dentro do seu diretório 'media'
    imagem_perfil = models.ImageField(
        upload_to='fotos_perfil/', 
        null=True, 
        blank=True, 
        verbose_name="Foto de Perfil"
    )

    idioma = models.CharField(
        max_length=10, 
        choices=IDIOMA_CHOICES, 
        default='pt-br', 
        verbose_name="Idioma"
    )
    
    telefone = models.CharField(max_length=20, null=True, blank=True, verbose_name="Telefone")
    celular = models.CharField(max_length=20, null=True, blank=True, verbose_name="Celular")
    telefone_adicional = models.CharField(max_length=20, null=True, blank=True, verbose_name="Telefone 2")
    
    numero_administrativo = models.CharField(max_length=50, null=True, blank=True, verbose_name="Número Administrativo")
    
    perfil_padrao = models.CharField(
        max_length=50, 
        choices=PERFIL_CHOICES, 
        null=True, 
        blank=True, 
        verbose_name="Perfil Padrão"
    )
    empresa = models.ForeignKey(
        Empresa, 
        on_delete=models.SET_NULL, # Se a empresa for apagada, o funcionário fica "sem empresa"
        null=True, 
        blank=True,
        related_name='funcionarios',
        verbose_name="Empresa"
    )
    
    entidade_padrao = models.CharField(max_length=100, null=True, blank=True, verbose_name="Entidade Padrão")

    # --- Configurações do Modelo ---
    
    def __str__(self):
        # Retorna o nome completo do usuário ou, se não houver, o username
        return self.user.get_full_name() or self.user.username
    
    class Meta:
        verbose_name = "Funcionário"
        verbose_name_plural = "Funcionários"
        ordering = ['user__first_name', 'user__last_name'] # Ordena alfabeticamente pelo nome