🚧 add Coach management Team
continuous-integration/drone/push Build is passing Details

issue_16_statistics_coach
Antoine PEREDERII 1 year ago
commit 5c925326a9

@ -218,23 +218,33 @@ function ArrayMenu(DataManager $model)
case '1': case '1':
echo "Renseignez le surnom de l'utilisateur : "; echo "Renseignez le surnom de l'utilisateur : ";
$username = trim(fgets(STDIN)); $username = trim(fgets(STDIN));
$model->coachMgr->addUser($model->userMgr->currentUser); if($model->coachMgr->addUser($username)){
sleep(10); echo "Ajout avec succès !";
} else {
echo "Pb ajout !";
}
sleep(2);
break; break;
case '2': case '2':
echo "jsp pour l'instant pour supr un athlete !\n"; echo "Renseignez le surnom de l'utilisateur : ";
$username = trim(fgets(STDIN));
if($model->coachMgr->removeUser($username)){
echo "Suppression avec succès !";
} else {
echo "Pb suppression ou aucun utilisateur de ce nom !";
}
sleep(2); sleep(2);
break; break;
case '3': case '3':
$usersArray = $model->coachMgr->getUsersList(); $usersArray = $model->coachMgr->getUsersList();
if (!empty($usersArray)) { if (!empty($usersArray)) {
foreach ($usersArray as $value) { foreach ($usersArray as $value) {
echo $value->to_String() . "\n"; echo $value->__toString() . "\n";
} }
} else { } else {
echo "Aucun utilisateur dans la liste\n"; echo "Aucun utilisateur dans la liste\n";
} }
sleep(10); sleep(2);
break; break;
case '0': case '0':
return; return;
@ -245,6 +255,19 @@ function ArrayMenu(DataManager $model)
} }
} while($coachChoice); } while($coachChoice);
} }
//function displayCoachMenu()
//{
// clearScreen();
// echo "\n--- Menu Coach ---\n";
// echo "1. Liste des athlètes\n";
// echo "2. Statistiques globales\n";
// echo "3. Analyses par athlète\n";
// echo "4. Gérer la liste de mes athlètes\n";
// // Gérer les athlètes (comprend : Ajouter un athlète, Supprimer un athlète, Consulter les statistiques d'un athlète)
// echo "0. Retour au menu principal\n";
// echo "Choisissez une option: ";
//}
function CoachMenu(DataManager $model) function CoachMenu(DataManager $model)
{ {
do { do {
@ -252,24 +275,88 @@ function CoachMenu(DataManager $model)
$coachChoice = trim(fgets(STDIN)); $coachChoice = trim(fgets(STDIN));
switch ($coachChoice) { switch ($coachChoice) {
case '1': case '1': // echo "1. Liste des athlètes\n";
$userRole = $model->coachMgr->getRole(); $arrayUsers = $model->coachMgr->getUsersList();
if (!empty($userRole)) { if (!empty($arrayUsers)) {
echo $userRole; foreach ($arrayUsers as $value) {
echo $value->__toString() . "\n";
}
} else { } else {
echo "Aucun utilisateur dans la liste\n"; echo "Aucun utilisateur dans la liste\n";
} }
sleep(2); sleep(2);
break; break;
case '2': case '2': // echo "2. Statistiques globales\n";
echo "jsp pour l'instant pour les stats !\n"; $arrayUsers = $model->coachMgr->getUsersList();
if (!empty($arrayUsers)) {
do {
clearScreen();
$cpt = 0;
foreach ($arrayUsers as $value) {
echo $cpt . " - " . $value->__toString() . "\n";
$cpt = $cpt + 1;
}
echo "Renseignez le numéro de l'utilisateur choisi : ";
$usernameNumber = trim(fgets(STDIN));
// Vérifier si l'index saisi est valide
if (isset($arrayUsers[$usernameNumber])) {
$selectedUser = $arrayUsers[$usernameNumber];
if (($arrayStats = $model->coachMgr->getStatistics($selectedUser))) {
foreach ($arrayStats as $value) {
echo $value->__toString() . "\n";
}
} else {
echo "Pas de statistiques valides présentent !\n";
}
} else {
echo "Numéro d'utilisateur non valide.\n";
$cpt = 0;
}
} while($cpt == 0);
} else {
echo "Aucun utilisateur dans la liste.\n";
}
sleep(2); sleep(2);
return; break;
case '3': case '3': // echo "3. Analyses par athlète\n";
echo "jsp pour l'instant pour les analyses !\n"; $arrayUsers = $model->coachMgr->getUsersList();
if (!empty($arrayUsers)) {
do {
clearScreen();
$cpt = 0;
foreach ($arrayUsers as $value) {
echo $cpt . " - " . $value->__toString() . "\n";
$cpt = $cpt + 1;
}
echo "Renseignez le numéro de l'utilisateur choisi : ";
$usernameNumber = trim(fgets(STDIN));
// Vérifier si l'index saisi est valide
if (isset($arrayUsers[$usernameNumber])) {
$selectedUser = $arrayUsers[$usernameNumber];
if (($arrayStats = $model->coachMgr->getAnalyse($selectedUser))) {
foreach ($arrayStats as $value) {
echo $value->__toString() . "\n";
}
} else {
echo "Pas d'Analyses valides présentent !\n";
}
} else {
echo "Numéro d'utilisateur non valide.\n";
$cpt = 0;
}
} while($cpt == 0);
} else {
echo "Aucun utilisateur dans la liste.\n";
}
sleep(2); sleep(2);
return; break;
case '4': case '4': // echo "4. Gérer la liste de mes athlètes\n";
ArrayMenu($model); ArrayMenu($model);
break; break;
case '0': // Quitter case '0': // Quitter
@ -292,6 +379,7 @@ while (true) {
switch ($choice) { switch ($choice) {
case '1': // Se connecter case '1': // Se connecter
$model->userMgr->login("Doe", "password123"); $model->userMgr->login("Doe", "password123");
$loggedIn = true; $loggedIn = true;
// if (loginUser($model)) { // if (loginUser($model)) {

@ -16,7 +16,7 @@ interface IAuthService {
* *
* @return ?User True if authentication is successful, false otherwise. * @return ?User True if authentication is successful, false otherwise.
*/ */
public function login(string $username, string $password): ?User; public function login(string $username, string $password): bool;
/** /**
* Register a new user. * Register a new user.

@ -11,7 +11,7 @@ class Athlete extends Role {
return $this; return $this;
} }
public function getStat():?array{ public function getStatistic():?array{
return $this->arrayStats; return $this->arrayStats;
} }
@ -26,6 +26,9 @@ class Athlete extends Role {
public function getUsersList(): array{ public function getUsersList(): array{
return $this->usersList; return $this->usersList;
} }
public function getUserList(User $user): \Model\User{
return $user;
}
private function CheckAdd(User $user) private function CheckAdd(User $user)
{ {
if($user instanceof \Model\Athlete){ if($user instanceof \Model\Athlete){
@ -34,20 +37,29 @@ class Athlete extends Role {
return false; return false;
} }
} }
public function addUser(\Model\User $user): void public function addUser(\Model\User $user): bool
{ {
if($this->CheckAdd($user)){ if($this->CheckAdd($user)){
$this->usersList[] = $user; $this->usersList[] = $user;
} else { return true;
echo "Impossible de demander en ami autre que des athletes\n"; }
return false;
}
public function removeUser(\Model\User $user): bool
{
if($this->CheckAdd($user)){
$this->usersList[] = $user;
return true;
} }
return false;
} }
public function delUser(\Model\User $user):void{ public function delUser(\Model\User $user):bool{
if($this->CheckAdd($user)){ if($this->CheckAdd($user)){
$this->usersList[] = null; $this->usersList[] = null;
} else { return true;
echo "Impossible de demander en ami autre que des athletes\n";
} }
return false;
} }
} }

@ -2,11 +2,12 @@
namespace Model; namespace Model;
abstract class Coach extends Role { abstract class Coach extends Role {
public abstract function addUser(User $user): void; public abstract function addUser(User $user): bool;
public abstract function removeUser(User $user): bool;
public abstract function CheckAdd(User $user) : bool; public abstract function CheckAdd(User $user) : bool;
// Méthode pour obtenir la liste des utilisateurs // Méthode pour obtenir la liste des utilisateurs
public abstract function getUsersList(): ?array; public abstract function getUsersList(): ?array;
public abstract function getUserList(User $user): \Model\User;
} }
?> ?>

@ -4,28 +4,41 @@ namespace Model;
class CoachAthlete extends Coach { class CoachAthlete extends Coach {
private Training $arrayTraining; private Training $arrayTraining;
public function addUser(User $user): void { public function getUsersList(): ?array {
if($this->CheckAdd($user)){ if (!empty($this->usersList)) {
$this->usersList[] = $user; return $this->usersList;
} else {
echo "Impossible d'ajouter d'autres membres que des athletes !\n";
} }
return null;
}
public function getUserList(User $user): User {
foreach ($this->usersList as $existingUser) {
if ($existingUser->getId() === $user->getId()) {
return $user; // L'utilisateur est présent dans la liste
}
}
return null; // L'utilisateur n'est pas dans la liste
} }
public function CheckAdd(User $user) : bool { public function CheckAdd(User $user) : bool {
if($user instanceof \Model\Athlete){ if($user->getRole() instanceof \Model\Athlete){
return true; return true;
} else {
return false;
} }
return false;
} }
public function addUser(User $user): bool {
public function getUsersList(): ?array { if($this->CheckAdd($user)){
if (!empty($this->usersList)) { array_push($this->usersList, $user);
return $this->usersList; return true;
} else { }
echo "Vous n'avez pas de groupe\n"; return false;
return null; }
public function removeUser(User $user): bool {
if($this->CheckAdd($user)){
$key = array_search($user, $this->usersList);
if ($key !== false) {
array_splice($this->usersList, $key, 1);
}
return true;
} }
return false;
} }
} }

@ -15,7 +15,8 @@ abstract class Role {
* @param User $user * @param User $user
* @return void * @return void
*/ */
public abstract function addUser(User $user): void; public abstract function addUser(User $user): bool;
public abstract function removeUser(User $user): bool;
// public function removeUser(User $user): void { // public function removeUser(User $user): void {
// $this->usersList[] // $this->usersList[]
@ -25,8 +26,10 @@ abstract class Role {
* @return void * @return void
*/ */
public abstract function getUsersList(): ?array; public abstract function getUsersList(): ?array;
public abstract function getUserList(User $user): \Model\User;
} }
?> ?>

@ -14,6 +14,25 @@ class Statistic
private int $minHeartRate; private int $minHeartRate;
private int $maxHeartRate; private int $maxHeartRate;
private int $caloriesBurned; private int $caloriesBurned;
public function __construct(
int $idStatistic,
float $totalDistance,
float $weight,
time $totalTime,
int $avrHeartRate,
int $minHeartRate,
int $maxHeartRate,
int $caloriesBurned
) {
$this->idStatistic = $idStatistic;
$this->totalDistance = $totalDistance;
$this->weight = $weight;
$this->totalTime = $totalTime;
$this->avrHeartRate = $avrHeartRate;
$this->minHeartRate = $minHeartRate;
$this->maxHeartRate = $maxHeartRate;
$this->caloriesBurned = $caloriesBurned;
}
public function getStatistic():Statistic{ public function getStatistic():Statistic{
return $this; return $this;

@ -9,7 +9,8 @@ class Training
{ {
private int $idTraining; private int $idTraining;
private Date $date; private Date $date;
private String $location; private float $latitude;
private float $longitude;
private text $description; private text $description;
private text $feedback; private text $feedback;
public function getId():String { public function getId():String {
@ -19,7 +20,7 @@ class Training
return $this->date; return $this->date;
} }
public function getLocation():String { public function getLocation():String {
return $this->location; return $this->longitude . $this->latitude;
} }
public function getDescription(): Text public function getDescription(): Text
{ {

@ -4,66 +4,74 @@ namespace Manager;
use Model\Coach; use Model\Coach;
use Model\Role; use Model\Role;
use Model\Statistic;
use Model\User; use Model\User;
use Network\IAuthService; use Network\IAuthService;
use Stub\AuthService; use Stub\AuthService;
class CoachManager class CoachManager
{ {
private IAuthService $authService; // public ?User $currentUser = null; // Initialisé à null
public ?User $currentUser = null; // Initialisé à null private AuthService $authService;
function __construct(IAuthService $authService) function __construct(AuthService $authService)
{ {
$this->authService = $authService; $this->authService = $authService;
echo "ntm putain de php";
echo $this->authService;
echo $this->authService->currentUser;
sleep(4);
// Assurez-vous que authService n'est pas null avant d'accéder à currentUser
if ($this->authService->currentUser) {
echo "It's good, current user instencied";
sleep(4);
$this->currentUser = $this->authService->currentUser;
}
} }
public function getRole(): ?Role public function getRole(): void
{ {
// Assurez-vous que currentUser n'est pas null avant d'accéder à getRole() // Assurez-vous que currentUser n'est pas null avant d'accéder à getRole()
if ($this->currentUser && $this->currentUser->getRole()) { // if ($this->authService->currentUser && $this->authService->currentUser->getRole()) {
return $this->currentUser->getRole(); // return $this->authService->currentUser->getRole();
} // }
var_dump($this->authService->currentUser->getRole());
return null; // return null;
} }
public function getUsersList(): ?Role public function getUsersList(): ?array
{ {
// Assurez-vous que currentUser n'est pas null avant d'accéder à getRole() if ($this->authService->currentUser && $this->authService->currentUser->getRole()->getUsersList()) {
if ($this->currentUser && $this->currentUser->getRole()->getUsersList()) { return $this->authService->currentUser->getRole()->getUsersList();
return $this->currentUser->getRole();
} }
return null; return null;
} }
public function addUser(String $username): bool
// faire validation !!!
public function addUser(User $user): void
{ {
echo $this->currentUser; if ($this->authService->currentUser && $this->authService->currentUser->getRole()) {
// Assurez-vous que currentUser n'est pas null avant d'accéder à getRole() if(($user = $this->authService->getUserRepository()->GetItemByName($username,0,1))) { // count 1 seul et debuis 0 (debut)
if ($this->currentUser && $this->currentUser->getRole()) { if ($this->authService->currentUser->getRole()->addUser($user)) {
$this->currentUser->getRole()->addUser($user); return true;
} elseif($this->currentUser && !$this->currentUser->getRole()) { }
echo "Impossible d'ajouter l'utilisateur. role est null."; }
} elseif(!$this->currentUser) { }
echo "Impossible d'ajouter l'utilisateur. currentUser est null."; return false;
} else { }
echo "gros probleme !"; public function removeUser(String $username): bool
{
if ($this->authService->currentUser && $this->authService->currentUser->getRole()) {
if(($user = $this->authService->getUserRepository()->GetItemByName($username,0,1))) { // count 1 seul et debuis 0 (debut)
if ($this->authService->currentUser->getRole()->removeUser($user)) {
return true;
}
}
} }
return false;
} }
// public function getStatistics(User $user) : ?Statistic {
// if ($this->authService->currentUser && $this->authService->currentUser->getRole()) {
// if (($arrayStat = $this->authService->currentUser->getRole()->getUserList($user)->getStatistic())) {
// return $arrayStat;
// }
// }
// return null;
// }
//
// public function getAnalyse(User $user): bool {
// return false;
// }
} }
?> ?>

@ -6,14 +6,15 @@ use Model\Coach;
use Model\User; use Model\User;
use Network\IAuthService; use Network\IAuthService;
use Shared\Validation; use Shared\Validation;
use Stub\AuthService;
// c'est le modéle // c'est le modéle
// should be here try catch ?? // should be here try catch ??
class UserManager class UserManager
{ {
private IAuthService $authService; private AuthService $authService;
public User $currentUser; public User $currentUser;
public function __construct(IAuthService $authService) public function __construct(AuthService $authService)
{ {
$this->authService = $authService; $this->authService = $authService;
} }
@ -22,9 +23,9 @@ class UserManager
{ {
if (!Validation::val_string($passwordUser) || !Validation::val_string($loginUser)) if (!Validation::val_string($passwordUser) || !Validation::val_string($loginUser))
throw new \Exception(" some wrong with cred !!!!!"); throw new \Exception(" some wrong with cred !!!!!");
$user = $this->authService->login($loginUser, $passwordUser);
if ($user) { if ($this->authService->login($loginUser, $passwordUser)) {
$this->currentUser = $user; $this->currentUser = $this->authService->currentUser;
return true; return true;
} }
return false; return false;

@ -13,7 +13,7 @@ class StubData extends DataManager {
$this->userMgr = new UserManager($authService); $this->userMgr = new UserManager($authService);
// if($this->userMgr->currentUser->getRole() instanceof \Model\Coach){ // if($this->userMgr->currentUser != null){
$this->coachMgr = new CoachManager($authService); $this->coachMgr = new CoachManager($authService);
// } // }
} }

@ -13,31 +13,35 @@ class AuthService implements IAuthService {
private $userRepository; private $userRepository;
private $passwordHasher; private $passwordHasher;
public $currentUser; public ?User $currentUser = null ;
public function __construct(UserRepository $userRepository, IHashPassword $passwordHasher) { public function __construct(UserRepository $userRepository, IHashPassword $passwordHasher) {
$this->userRepository = $userRepository; $this->userRepository = $userRepository;
$this->passwordHasher = $passwordHasher; $this->passwordHasher = $passwordHasher;
} }
public function login(string $username,string $password): ?User { public function getUserRepository():UserRepository {
$this->currentUser = $this->userRepository->GetItemByName($username,0,1); return $this->userRepository;
}
public function login(string $username,string $password): bool {
$user = $this->userRepository->GetItemByName($username,0,1);
if($this->currentUser == null || !$this->currentUser instanceof User) { if ($user == null || !$user instanceof User) {
throw new \Exception('Unable to find user with that name'); throw new \Exception('Unable to find user with that name');
} }
if($this->currentUser->isValidPassword($password)) { if ($user->isValidPassword($password)) {
return $this->currentUser; $this->currentUser = $user;
return true;
} }
return null; return false;
} }
public function register(string $loginUser, string $password, $data): bool public function register(string $loginUser, string $password, $data): bool
{ {
$hashedPassword = $this->passwordHasher->hashPassword($password); $hashedPassword = $this->passwordHasher->hashPassword($password);
$existingUser = $this->userRepository->getItemByEmail($loginUser); $existingUser = $this->userRepository->getItemByEmail($loginUser);
if ($existingUser != null || $existingUser instanceof User ) { if ($existingUser != null || $existingUser instanceof User ) {
throw new \Exception('User already exists'); throw new \Exception('User already exists');
} }
@ -58,34 +62,30 @@ class AuthService implements IAuthService {
else if($roleName == "Athlete"){ else if($roleName == "Athlete"){
$role = new Athlete(); $role = new Athlete();
} }
$user = new User( $user = new User(
random_int(0, 100), random_int(0, 100),
$username, $username,
$nom, $nom,
$prenom, $prenom,
$email, $email,
$hashedPassword, $hashedPassword,
$sexe, $sexe,
$taille, $taille,
$poids, $poids,
$dateNaissance, $dateNaissance,
//should use reflexion //should use reflexion
$role $role
); );
$this->userRepository->addItem($user); $this->userRepository->addItem($user);
$this->currentUser = $user;
return true; return true;
} }
public function logoutUser(): void public function logoutUser(): void
{ {
if ($this->currentUser) { print("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! logout method not implemented !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
$this->currentUser = null; // Déconnexion en assignant null à currentUser return;
echo "Déconnexion réussie.\n";
} else {
echo "Aucun utilisateur connecté.\n";
}
} }
} }
Loading…
Cancel
Save