from datetime import datetime

from pydantic import BaseModel, EmailStr


# ── Requests ──────────────────────────────────────────────────────────────────

class CompteCreate(BaseModel):
    email: EmailStr
    motDePasse: str
    nom: str
    prenom: str
    telephone: str | None = None
    bureauGenreId: str | None = None
    typeUtilisateur: str = "UTILISATEUR"


class CompteUpdate(BaseModel):
    email: EmailStr | None = None
    nom: str | None = None
    prenom: str | None = None
    telephone: str | None = None
    filiere: str | None = None
    campus: str | None = None
    avatarUrl: str | None = None


class ChangePasswordRequest(BaseModel):
    ancienMotDePasse: str
    nouveauMotDePasse: str


class ResetPasswordAdminRequest(BaseModel):
    nouveauMotDePasse: str


# ── Responses ─────────────────────────────────────────────────────────────────

class CompteResponse(BaseModel):
    id: str
    email: str
    nom: str
    prenom: str
    typeUtilisateur: str
    bureauGenreId: str | None = None
    telephone: str | None = None
    filiere: str | None = None
    campus: str | None = None
    avatarUrl: str | None = None
    estActif: bool
    dateCreation: datetime
    dateModification: datetime | None = None
    dernierConnexion: datetime | None = None
