from django.contrib.auth.hashers import make_password
from django.db import models

from django.utils.translation import gettext_lazy as _
from django.contrib.auth import models as auth_models

from django.utils import timezone

from my holiday.accounts.managers import MyHolidayUserManager

class MyHolidayUser(auth_models.AbstractBaseUser, auth_models.PermissionsMixin):
    email = models.EmailField(
        _("email address"),
        unique=True,
        error_messages={
            "unique": _("A user with that email already exists."),
        },
    )

    date_joined = models.DateTimeField(_("date joined"), default=timezone.now)

    is_staff = models.BooleanField(
        default=False,
    )

    is_active = models.BooleanField(
        default=True,
    )

    USERNAME_FIELD = "email"

    objects = MyHolidayUserManager()
    
    
class Profile(models.Model):
    MAX_USERNAME_LENGTH = 20


    first_name = models.CharField(
        max_length=50,
        null=True,
        blank=True,
        verbose_name='First Name',
    )

    last_name = models.CharField(
        max_length=50,
        null=True,
        blank=True,
        verbose_name='Last Name',
    )

    age = models.IntegerField(
        null=False,
        blank=False,
        verbose_name='Age',
    )

    profile_photo = models.URLField(
        null=True,
        blank=True,
        verbose_name='Profile Photo',
    )
    
    user = models.OneToOneField(
        MyHolidayUser,
        primary_key=True,
        on_delete=models.CASCADE,
    )