You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web/Sources/src/data/model/User.php

314 lines
7.7 KiB

<?php
/**
* Nom du fichier: User.php
*
* @author PEREDERII Antoine
* @date 2023-11-25
* @description Classe représentant un utilisateur.
*
* @package model
*/
namespace Model;
/**
* @class User
* @brief Classe représentant un utilisateur.
*/
class User {
private int $id;
private String $username;
private string $nom;
private string $prenom;
private string $email;
private string $motDePasse;
private string $sexe;
private float $taille;
private float $poids;
private \DateTime $dateNaissance;
private Role $role;
protected array $notifications = [];
private array $listFriend = [];
/**
* @return array
*/
public function getNotifications(): array
{
return $this->notifications;
}
/**
* @param int $id
* @param string $nom
* @param string $prenom
* @param string $username
* @param string $email
* @param string $motDePasse
* @param string $sexe
* @param float $taille
* @param float $poids
* @param \DateTime $dateNaissance
* @param \Model\Role $role
*/
public function __construct(int $id, string $nom, string $prenom, string $username, string $email,
string $motDePasse, string $sexe, float $taille, float $poids, \DateTime $dateNaissance,
Role $role)
{
$this->id = $id;
$this->nom = $nom;
$this->prenom = $prenom;
$this->username = $username;
$this->email = $email;
$this->motDePasse = $motDePasse;
$this->sexe = $sexe;
$this->taille = $taille;
$this->poids = $poids;
$this->dateNaissance = $dateNaissance;
$this->role = $role;
}
public function addNotification($notification): void {
$this->notifications[] = $notification;
}
// Method to delete a notification by its index
public function deleteNotification($index): void {
if (array_key_exists($index, $this->notifications)) {
unset($this->notifications[$index]);
}
}
/**
* Obtient l'identifiant de l'utilisateur.
*
* @return int L'identifiant de l'utilisateur.
*/
public function getId(): int {
return $this->id;
}
/**
* @return string
*/
public function getUsername(): string
{
return $this->username;
}
/**
* @param string $username
*/
public function setUsername(string $username): void
{
$this->username = $username;
}
/**
* Définit l'identifiant de l'utilisateur.
*
* @param int $id Le nouvel identifiant de l'utilisateur.
*/
public function setId(int $id): void {
$this->id = $id;
}
/**
* Obtient le nom d'utilisateur de l'utilisateur.
*
* @return string Le nom d'utilisateur de l'utilisateur.
*/
public function getNom(): string {
return $this->nom;
}
/**
* Définit le nom de l'utilisateur.
*
* @param string $nom Le nouveau nom de l'utilisateur.
*/
public function setNom(string $nom): void {
$this->nom = $nom;
}
/**
* Obtient le prénom de l'utilisateur.
*
* @return string Le prénom de l'utilisateur.
*/
public function getPrenom(): string {
return $this->prenom;
}
/**
* Définit le prénom de l'utilisateur.
*
* @param string $prenom Le nouveau prénom de l'utilisateur.
*/
public function setPrenom(string $prenom): void {
$this->prenom = $prenom;
}
/**
* Obtient l'adresse e-mail de l'utilisateur.
*
* @return string L'adresse e-mail de l'utilisateur.
*/
public function getEmail(): string {
return $this->email;
}
/**
* Définit l'adresse e-mail de l'utilisateur.
*
* @param string $email La nouvelle adresse e-mail de l'utilisateur.
*/
public function setEmail(string $email): void {
$this->email = $email;
}
/**
* Obtient le mot de passe haché de l'utilisateur.
*
* @return string Le mot de passe haché de l'utilisateur.
*/
public function getMotDePasse(): string {
return $this->motDePasse;
}
/**
* Définit le mot de passe haché de l'utilisateur.
*
* @param string $motDePasse Le nouveau mot de passe haché de l'utilisateur.
*/
public function setMotDePasse(string $motDePasse): void {
$this->motDePasse = $motDePasse;
}
/**
* Obtient le sexe de l'utilisateur.
*
* @return string Le sexe de l'utilisateur.
*/
public function getSexe(): string {
return $this->sexe;
}
/**
* Définit le sexe de l'utilisateur.
*
* @param string $sexe Le nouveau sexe de l'utilisateur.
*/
public function setSexe(string $sexe): void {
$this->sexe = $sexe;
}
/**
* Obtient la taille de l'utilisateur.
*
* @return float La taille de l'utilisateur.
*/
public function getTaille(): float {
return $this->taille;
}
/**
* Définit la taille de l'utilisateur.
*
* @param float $taille La nouvelle taille de l'utilisateur.
*/
public function setTaille(float $taille): void {
$this->taille = $taille;
}
/**
* Obtient le poids de l'utilisateur.
*
* @return float Le poids de l'utilisateur.
*/
public function getPoids(): float {
return $this->poids;
}
/**
* Définit le poids de l'utilisateur.
*
* @param float $poids Le nouveau poids de l'utilisateur.
*/
public function setPoids(float $poids): void {
$this->poids = $poids;
}
/**
* Obtient la date de naissance de l'utilisateur.
*
* @return \DateTime La date de naissance de l'utilisateur.
*/
public function getDateNaissance(): \DateTime {
return $this->dateNaissance;
}
/**
* Définit la date de naissance de l'utilisateur.
*
* @param \DateTime $dateNaissance La nouvelle date de naissance de l'utilisateur.
*/
public function setDateNaissance(\DateTime $dateNaissance): void {
$this->dateNaissance = $dateNaissance;
}
/**
* Obtient le rôle de l'utilisateur.
*
* @return Role Le rôle de l'utilisateur.
*/
public function getRole(): Role {
return $this->role;
}
/**
* Définit le rôle de l'utilisateur.
*
* @param Role $role Le nouveau rôle de l'utilisateur.
*/
public function setRole(Role $role): void {
$this->role = $role;
}
/**
* Vérifie si le mot de passe fourni est valide.
*
* @param string $password Le mot de passe à vérifier.
* @return bool True si le mot de passe est valide, sinon false.
*/
public function isValidPassword(string $password): bool {
// TODO: Implémenter la vérification du mot de passe (hachage).
return $this->motDePasse === $password;
}
/**
* Obtient une représentation textuelle de l'utilisateur.
*
* @return string La représentation textuelle de l'utilisateur.
*/
public function __toString() {
return "Athlete [ID: {$this->id}, Username : $this->username, Nom: {$this->nom}, Prénom: {$this->prenom}, Email: {$this->email}]";
}
/**
* Donne la liste des amis de l'utilisateur
*
* @return string Les amis de l'utilisateur.
*/
public function getListFriend(): array {
return $this->listFriend;
}
/**
* Ajoute un utilisateur a sa liste d'amis.
*
* @param User L'utilisateur a ajouter.
*/
public function addFriend(User $user){
array_push($this->listFriend, $user);
}
}
?>