from django.db import models
from apps.main.models import modeloBase
from apps.main.models import CustomUserManager

from django.contrib.auth.base_user import AbstractBaseUser
from django.contrib.auth.models import PermissionsMixin
from crum import get_current_request

TIPO_USER_CHOICE = (
    ('','Seleccione un tipo de Usuario'),
    ('Administrador','Administrador'),
    ('Gestor de contenido','Gestor de contenido'),
    ('Cliente','Cliente'),
)

# Create your models here.
class Usuario(AbstractBaseUser, PermissionsMixin, modeloBase):
    email = models.EmailField('Correo Electronico', unique=True)
    password = models.CharField(max_length=150)
    first_name = models.CharField(max_length=45, blank=True, null=True)
    last_name = models.CharField(max_length=45,blank=True, null=True)
    token = models.UUIDField(primary_key=False, editable=False, null=True, blank=True)
    username = models.CharField(max_length=45, blank=True, unique=True)
    num_document = models.CharField(max_length=15, null=True, unique=True)
    phone_number = models.CharField(max_length=20, null=True)
    gender = models.CharField(max_length=20, null=True)
    date_of_birth = models.DateField(auto_now=False, null=True)
    address = models.CharField(max_length=250, blank=True, null=True)
    img_profile = models.ImageField(upload_to='media/', max_length=250, default='profile.png', null=True, blank=True)
    is_superuser = models.BooleanField(default=False)
    tipo_usuario = models.CharField(max_length=100)


    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['first_name', 'last_name', 'username']

    objects = CustomUserManager()

    def __str__(self):
        return f'{self.first_name}' + " " + f'{self.last_name}'


    def get_group_session(self):
        try:
            request = get_current_request()
            groups = self.groups.all()
            if groups.exists():
                if 'group' not in request.session:
                    request.session['group'] = groups[0]
        except:
            pass
