/** * Récupère la réservation en cours du client * * @param Utilisateur $unClient * * @return Reservation * * @throws CollectionException * @throws ErrorSQLException */ public static function getReservationClient(Utilisateur $unClient) { $uneReservation = new Reservation(); try { $conn = MConnexion::getBdd(); $reqPrepare = $conn->prepare('SELECT reservation.numVol, reservation.numRes, dateRes, nbPers, montant, dateEcheance FROM reservation LEFT JOIN echeance ON reservation.numRes = echeance.numRes INNER JOIN vol ON reservation.numVol = vol.numVol WHERE NumClt = ? AND curdate() < vol.dateVol'); $reqPrepare->execute([$unClient->getId()]); $fetch = $reqPrepare->fetch(); $unVol = MVol::getUnVol($fetch['numVol']); $uneReservation->setId($fetch['numRes'])->setUnVol($unVol)->setUnClient($unClient)->setDateRes($fetch['dateRes'])->setNbPers($fetch['nbPers'])->setValid(true); $lesEcheances = MEcheance::getEcheances($uneReservation); $uneReservation->setLesEcheance($lesEcheances); $conn = null; } catch (PDOException $e) { echo $e->getMessage(); throw new ErrorSQLException('Impossible de récupérer la réservation de ' . $unClient->getMail() . ' Détails : ' . $e->getMessage()); } return $uneReservation; }
break; // Fin Partie // Fin Partie case 'voirCommandes': try { if (array_key_exists('Utilisateur', $_SESSION)) { $lesCommandes = MCommande::getCommandes($_SESSION['Utilisateur']); if (array_key_exists('cde', $_GET) && !empty($_GET['cde'])) { $uneCommande = MCommande::getUneCommande($_GET['cde']); } $title = 'Mes commandes'; require_once ROOT . 'src/Views/Compte/v_GabCompte.php'; require_once ROOT . 'src/Views/Compte/v_VoirCommandes.php'; } else { header('Location:?page=connexion'); } } catch (InvalidArgumentException $e) { Connexion::setFlashMessage($e->getMessage()); header('Location:?page=monCompte'); } break; case 'getTimer': if (array_key_exists('Reservation', $_SESSION)) { $monTimer = MVol::getTimer($_SESSION['Reservation']->getUnVol()); require_once ROOT . 'src/Views/Compte/v_Timer.php'; } break; default: header('Location:?page=compte'); break; }
?> </h4> <h5>Prix : <?php echo Build::fEuro($unVol->getPrice()); ?> </h5> <?php if (Connexion::sessionOuverte()) { ?> <p><a href="?page=reserver&action=reserverVol&vol=<?php echo $unVol->getNumVol(); ?> " <?php if (MVol::getPlaceRestante($unVol) === 0) { echo 'disabled'; } ?> class="btn btn-primary" role="button">Réserver </a> </p> <?php } ?> </div> </div> </div> <?php }
} catch (Exception $e) { MConnexion::setFlashMessage($e->getMessage(), 'error'); header('Location:?page=reserver'); } break; case 'validReserverVol': try { if (!MConnexion::sessionOuverte()) { throw new NotConnectedException(); } if (array_key_exists('Reservation', $_SESSION) && $_SESSION['Reservation']->isValid()) { throw new InvalidArgumentException('Vous avez déjà une réservation.'); } if (array_key_exists('vol', $_GET) && array_key_exists('nbPers', $_POST)) { $unVol = MVol::getUnVol($_GET['vol']); if ($_POST['nbPers'] !== 0 || $_POST['nbPers'] <= MVol::getPlaceRestante($unVol)) { if (array_key_exists('pointsUtilise', $_POST) && $_POST['pointsUtilise'] > MUtilisateur::getPoints($_SESSION['Utilisateur'])) { throw new UnexpectedValueException('Vous n\'avez pas assez de points'); } $_SESSION['Reservation'] = new Reservation(); $_SESSION['Reservation']->setId(MConnexion::getLastIdReservation())->setNbPers($_POST['nbPers'])->setValid(false)->setUnClient($_SESSION['Utilisateur'])->setUnVol($unVol); if (array_key_exists('pointsUtilise', $_POST) && !empty($_POST['pointsUtilise'])) { $_SESSION['Reservation']->setReduction($_POST['pointsUtilise']); } } else { MConnexion::setFlashMessage('Il n\'y a plus assez de place pour ce vol, veuillez réduire le nombre de personnes', 'error'); if ($_POST['nbPers'] === 0) { MConnexion::setFlashMessage('La valeur ne peut être zéro, veuillez recommencer', 'error'); } header('Location:?page=reserver&action=reserverVol&vol=' . $unVol->getNumVol()); }