from django.contrib.auth.models import AbstractUser
from django.db import models


class User(AbstractUser):
    """Utilizador da GAP com papel (admin, formador ou estudante)."""

    class Role(models.TextChoices):
        ADMIN = "admin", "Administrador"
        INSTRUCTOR = "instructor", "Formador"
        STUDENT = "student", "Estudante"

    role = models.CharField(
        "papel", max_length=20, choices=Role.choices, default=Role.STUDENT
    )
    phone = models.CharField("telefone", max_length=20, blank=True, default="")

    class Meta:
        verbose_name = "utilizador"
        verbose_name_plural = "utilizadores"

    @property
    def is_admin(self) -> bool:
        return self.role == self.Role.ADMIN

    @property
    def is_instructor(self) -> bool:
        return self.role == self.Role.INSTRUCTOR

    @property
    def is_student(self) -> bool:
        return self.role == self.Role.STUDENT
