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.
314 lines
7.7 KiB
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);
|
|
}
|
|
}
|
|
?>
|