from django.db import models
from django.utils.timezone import now
from django.contrib.auth.models import User
from phonenumber_field.modelfields import PhoneNumberField
from mainsite.models import Client

@classmethod
def model_field_exists(cls, field):
    try:
        cls._meta.get_field(field)
        return True
    except:
            return False

models.Model.field_exists = model_field_exists

class Area(models.Model):
    nombre = models.CharField(max_length=24,blank=False,null=False,unique=True)
    responsables = models.ManyToManyField(User,blank=True)
    parent = models.ForeignKey('self',on_delete=models.DO_NOTHING,null=True,blank=True)

    def __str__(self):
        return self.nombre
    
    class Meta:
        ordering = ['nombre']
        verbose_name_plural = "Áreas"

class UserProfile(models.Model):
    usuario = models.OneToOneField(User,on_delete=models.CASCADE,null=True,blank=True)
    nombre = models.CharField(max_length=64,blank=False,null=False,default='--')
    apellido = models.CharField(max_length=64,blank=False,null=False,default='--')
    cliente = models.ForeignKey(Client,on_delete=models.CASCADE,null=True,blank=True)
    nss = models.CharField(max_length=12,blank=True,unique=True,null=True)
    fecha_nacimiento = models.DateField(null=True,blank=True)
    area = models.ForeignKey(Area,on_delete=models.CASCADE,null=True,blank=True)
    direccion = models.CharField(max_length=128,blank=True,null=True)
    telefono = PhoneNumberField(null=True,blank=True,unique=True)
    contacto_emergencia = models.CharField(max_length=64,blank=True)
    telefono_emergencia = PhoneNumberField(null=True,blank=True,unique=True)
    fecha_ingreso = models.DateField(null=True,blank=True)
    linkedin = models.CharField(max_length=512,blank=True,null=True)
    foto = models.ImageField(upload_to ='uprofile/',null=True,blank=True)
    status = models.BooleanField(null=False,blank=False)

    def __str__(self):
        return self.nombre + " " + self.apellido
    
    class Meta:
        ordering = ['usuario']
        verbose_name_plural = "Perfiles"