diff --git a/Sources/src/console/Console.php b/Sources/src/console/Console.php index 299d99e6..ae68f32d 100755 --- a/Sources/src/console/Console.php +++ b/Sources/src/console/Console.php @@ -2,9 +2,11 @@ namespace Console; +use DateTime; use Model\Athlete; use Model\Coach; use Model\Role; +use Model\Training; use Stub\StubData; use Manager\DataManager; @@ -287,22 +289,50 @@ function ArrayTrainingMenu(DataManager $model) switch ($coachChoice) { case '1': - echo "Renseignez l'id de l'entrainement : "; - $idTraining = trim(fgets(STDIN)); - if($model->coachMgr->addTraining($idTraining)){ +// echo "Renseignez l'id de l'entrainement : "; +// $idTraining = trim(fgets(STDIN)); +// if($model->coachMgr->addTraining($idTraining)){ +// echo "Ajout avec succès !"; +// } else { +// echo "Pb ajout !"; +// } +// sleep(2); +// break; + // ... + + // ... + + $existingTrainings = $model->coachMgr->getTrainingsList(); + $lastTraining = end($existingTrainings); + $lastTrainingId = $lastTraining ? $lastTraining->getId() : 0; + $newTrainingId = $lastTrainingId + 1; + + echo "L'ID de l'entraînement sera automatiquement défini sur : $newTrainingId\n"; + $date = new DateTime(); + echo "Renseignez la latitude de l'entraînement : "; + $latitude = trim(fgets(STDIN)); + echo "Renseignez la longitude de l'entraînement : "; + $longitude = trim(fgets(STDIN)); + echo "Renseignez la description de l'entraînement : "; + $description = trim(fgets(STDIN)); + + $training = new Training($newTrainingId, $date, $latitude, $longitude, $description, null); + + if($model->coachMgr->addTraining($training)){ echo "Ajout avec succès !"; } else { echo "Pb ajout !"; } sleep(2); break; + case '2': echo "Renseignez l'id de l'entrainement : "; $idTraining = trim(fgets(STDIN)); if($model->coachMgr->removeTraining($idTraining)){ echo "Suppression avec succès !"; } else { - echo "Pb suppression ou aucun utilisateur de ce nom !"; + echo "Pb suppression ou aucun entrainement de cet id !"; } sleep(2); break; diff --git a/Sources/src/data/model/CoachAthlete.php b/Sources/src/data/model/CoachAthlete.php index 5cdc09a7..cb9e4fd6 100644 --- a/Sources/src/data/model/CoachAthlete.php +++ b/Sources/src/data/model/CoachAthlete.php @@ -18,7 +18,7 @@ class CoachAthlete extends Coach { 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 $existingUser; // L'utilisateur est présent dans la liste } } return null; // L'utilisateur n'est pas dans la liste @@ -35,7 +35,7 @@ class CoachAthlete extends Coach { public function getTrainingList(Training $training): ?Training { foreach ($this->trainingRepository->getTrainingsList() as $existingTraining) { if ($existingTraining->getId() === $training->getId()) { - return $training; // L'utilisateur est présent dans la liste + return $existingTraining; // L'utilisateur est présent dans la liste } } return null; // L'utilisateur n'est pas dans la liste @@ -64,8 +64,8 @@ class CoachAthlete extends Coach { $key = array_search($user, $this->usersList); if ($key !== false) { array_splice($this->usersList, $key, 1); + return true; } - return true; } return false; } @@ -81,10 +81,10 @@ class CoachAthlete extends Coach { $array = (array)$this->trainingRepository->getTrainingsList(); $key = array_search($training, $array); if ($key !== false) { - $trainingsList = $this->trainingRepository->getTrainingsList(); - array_splice($trainingsList, $key, 1); + array_splice($array, $key, 1); + $this->trainingRepository->setTrainingsList($array); + return true; } - return true; } return false; } diff --git a/Sources/src/data/model/Training.php b/Sources/src/data/model/Training.php index 79e26534..06fc5c24 100644 --- a/Sources/src/data/model/Training.php +++ b/Sources/src/data/model/Training.php @@ -11,16 +11,16 @@ class Training private \DateTime $date; private float $latitude; private float $longitude; - private String $description; - private String $feedback; + private ?String $description; + private ?String $feedback; public function __construct( int $idTraining, \DateTime $date, float $latitude, float $longitude, - ?String $description, - ?String $feedback + ?String $description = null, + ?String $feedback = null ) { $this->idTraining = $idTraining; $this->date = $date; @@ -29,32 +29,6 @@ class Training $this->description = $description; $this->feedback = $feedback; } - public function __construct_Coach( - int $idTraining, - \DateTime $date, - float $latitude, - float $longitude, - String $description - ) { - $this->idTraining = $idTraining; - $this->date = $date; - $this->latitude = $latitude; - $this->longitude = $longitude; - $this->description = $description; - } - public function __construct_Athlete( - int $idTraining, - \DateTime $date, - float $latitude, - float $longitude, - String $feedback - ) { - $this->idTraining = $idTraining; - $this->date = $date; - $this->latitude = $latitude; - $this->longitude = $longitude; - $this->feedback = $feedback; - } public function getId():int { return $this->idTraining; } diff --git a/Sources/src/data/model/manager/CoachManager.php b/Sources/src/data/model/manager/CoachManager.php index 20c80847..61513e81 100644 --- a/Sources/src/data/model/manager/CoachManager.php +++ b/Sources/src/data/model/manager/CoachManager.php @@ -16,16 +16,11 @@ class CoachManager { // public ?User $currentUser = null; // Initialisé à null private AuthService $authService; - private TrainingRepository $trainingRepository; function __construct(AuthService $authService) { $this->authService = $authService; } - - public function getTrainingRepository():TrainingRepository { - return $this->trainingRepository; - } public function getUsersList(): ?array { if ($this->authService->currentUser && $this->authService->currentUser->getRole()->getUsersList()) { @@ -48,7 +43,7 @@ class CoachManager } } } - return false; + return false; } public function removeUser(String $username): bool { @@ -61,13 +56,11 @@ class CoachManager } return false; } - public function addTraining(String $trainingId): bool + public function addTraining(Training $training): bool { if ($this->authService->currentUser && $this->authService->currentUser->getRole()) { - if(($training = $this->authService->currentUser->getRole()->getTraining()->getItemById($trainingId))) { // count 1 seul et debuis 0 (debut) - if ($this->authService->currentUser->getRole()->addTraining($training)) { - return true; - } + if ($this->authService->currentUser->getRole()->addTraining($training)) { + return true; } } return false; diff --git a/Sources/src/data/stub/repository/TrainingRepository.php b/Sources/src/data/stub/repository/TrainingRepository.php index f262e261..220198aa 100644 --- a/Sources/src/data/stub/repository/TrainingRepository.php +++ b/Sources/src/data/stub/repository/TrainingRepository.php @@ -22,10 +22,14 @@ class TrainingRepository implements ITrainingRepository { /** * @return array */ - public function getTrainingsList(): array { + public function &getTrainingsList(): array { return $this->trainingsList; } + public function setTrainingsList(array $trainingsList): void { + $this->trainingsList = $trainingsList; + } + public function getItemById(int $id): ?Training { foreach ($this->trainingsList as $training) { if ($training->getId() === $id) {