🚧 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':
echo "Renseignez le surnom de l'utilisateur : ";
$username = trim(fgets(STDIN));
$model->coachMgr->addUser($model->userMgr->currentUser);
sleep(10);
if($model->coachMgr->addUser($username)){
echo "Ajout avec succès !";
} else {
echo "Pb ajout !";
}
sleep(2);
break;
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);
break;
case '3':
$usersArray = $model->coachMgr->getUsersList();
if (!empty($usersArray)) {
foreach ($usersArray as $value) {
echo $value->to_String() . "\n";
echo $value->__toString() . "\n";
}
} else {
echo "Aucun utilisateur dans la liste\n";
}
sleep(10);
sleep(2);
break;
case '0':
return;
@ -245,6 +255,19 @@ function ArrayMenu(DataManager $model)
}
} 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)
{
do {
@ -252,24 +275,88 @@ function CoachMenu(DataManager $model)
$coachChoice = trim(fgets(STDIN));
switch ($coachChoice) {
case '1':
$userRole = $model->coachMgr->getRole();
if (!empty($userRole)) {
echo $userRole;
case '1': // echo "1. Liste des athlètes\n";
$arrayUsers = $model->coachMgr->getUsersList();
if (!empty($arrayUsers)) {
foreach ($arrayUsers as $value) {
echo $value->__toString() . "\n";
}
} else {
echo "Aucun utilisateur dans la liste\n";
}
sleep(2);
break;
case '2':
echo "jsp pour l'instant pour les stats !\n";
case '2': // echo "2. Statistiques globales\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);
return;
case '3':
echo "jsp pour l'instant pour les analyses !\n";
break;
case '3': // echo "3. Analyses par athlète\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);
return;
case '4':
break;
case '4': // echo "4. Gérer la liste de mes athlètes\n";
ArrayMenu($model);
break;
case '0': // Quitter
@ -292,6 +379,7 @@ while (true) {
switch ($choice) {
case '1': // Se connecter
$model->userMgr->login("Doe", "password123");
$loggedIn = true;
// if (loginUser($model)) {

@ -16,7 +16,7 @@ interface IAuthService {
*
* @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.

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

@ -2,11 +2,12 @@
namespace Model;
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;
// Méthode pour obtenir la liste des utilisateurs
public abstract function getUsersList(): ?array;
public abstract function getUserList(User $user): \Model\User;
}
?>

@ -4,28 +4,41 @@ namespace Model;
class CoachAthlete extends Coach {
private Training $arrayTraining;
public function addUser(User $user): void {
if($this->CheckAdd($user)){
$this->usersList[] = $user;
} else {
echo "Impossible d'ajouter d'autres membres que des athletes !\n";
public function getUsersList(): ?array {
if (!empty($this->usersList)) {
return $this->usersList;
}
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 {
if($user instanceof \Model\Athlete){
if($user->getRole() instanceof \Model\Athlete){
return true;
} else {
}
return false;
}
public function addUser(User $user): bool {
if($this->CheckAdd($user)){
array_push($this->usersList, $user);
return true;
}
public function getUsersList(): ?array {
if (!empty($this->usersList)) {
return $this->usersList;
} else {
echo "Vous n'avez pas de groupe\n";
return null;
return false;
}
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
* @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 {
// $this->usersList[]
@ -25,8 +26,10 @@ abstract class Role {
* @return void
*/
public abstract function getUsersList(): ?array;
public abstract function getUserList(User $user): \Model\User;
}
?>

@ -14,6 +14,25 @@ class Statistic
private int $minHeartRate;
private int $maxHeartRate;
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{
return $this;

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

@ -4,65 +4,73 @@ namespace Manager;
use Model\Coach;
use Model\Role;
use Model\Statistic;
use Model\User;
use Network\IAuthService;
use Stub\AuthService;
class CoachManager
{
private IAuthService $authService;
public ?User $currentUser = null; // Initialisé à null
function __construct(IAuthService $authService)
// public ?User $currentUser = null; // Initialisé à null
private AuthService $authService;
function __construct(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()
if ($this->currentUser && $this->currentUser->getRole()) {
return $this->currentUser->getRole();
}
// if ($this->authService->currentUser && $this->authService->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->currentUser && $this->currentUser->getRole()->getUsersList()) {
return $this->currentUser->getRole();
if ($this->authService->currentUser && $this->authService->currentUser->getRole()->getUsersList()) {
return $this->authService->currentUser->getRole()->getUsersList();
}
return null;
}
// faire validation !!!
public function addUser(User $user): void
public function addUser(String $username): bool
{
echo $this->currentUser;
// Assurez-vous que currentUser n'est pas null avant d'accéder à getRole()
if ($this->currentUser && $this->currentUser->getRole()) {
$this->currentUser->getRole()->addUser($user);
} 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.";
} else {
echo "gros probleme !";
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()->addUser($user)) {
return true;
}
}
}
return false;
}
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 Network\IAuthService;
use Shared\Validation;
use Stub\AuthService;
// c'est le modéle
// should be here try catch ??
class UserManager
{
private IAuthService $authService;
private AuthService $authService;
public User $currentUser;
public function __construct(IAuthService $authService)
public function __construct(AuthService $authService)
{
$this->authService = $authService;
}
@ -22,9 +23,9 @@ class UserManager
{
if (!Validation::val_string($passwordUser) || !Validation::val_string($loginUser))
throw new \Exception(" some wrong with cred !!!!!");
$user = $this->authService->login($loginUser, $passwordUser);
if ($user) {
$this->currentUser = $user;
if ($this->authService->login($loginUser, $passwordUser)) {
$this->currentUser = $this->authService->currentUser;
return true;
}
return false;

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

@ -13,23 +13,27 @@ class AuthService implements IAuthService {
private $userRepository;
private $passwordHasher;
public $currentUser;
public ?User $currentUser = null ;
public function __construct(UserRepository $userRepository, IHashPassword $passwordHasher) {
$this->userRepository = $userRepository;
$this->passwordHasher = $passwordHasher;
}
public function login(string $username,string $password): ?User {
$this->currentUser = $this->userRepository->GetItemByName($username,0,1);
public function getUserRepository():UserRepository {
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');
}
if($this->currentUser->isValidPassword($password)) {
return $this->currentUser;
if ($user->isValidPassword($password)) {
$this->currentUser = $user;
return true;
}
return null;
return false;
}
public function register(string $loginUser, string $password, $data): bool
{
@ -74,18 +78,14 @@ class AuthService implements IAuthService {
);
$this->userRepository->addItem($user);
$this->currentUser = $user;
return true;
}
public function logoutUser(): void
{
if ($this->currentUser) {
$this->currentUser = null; // Déconnexion en assignant null à currentUser
echo "Déconnexion réussie.\n";
} else {
echo "Aucun utilisateur connecté.\n";
}
print("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! logout method not implemented !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
return;
}
}
Loading…
Cancel
Save