/** * 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; }
header('Location:?page=connexion'); } 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());