-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdateBooking.php
85 lines (76 loc) · 3.38 KB
/
updateBooking.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
session_start();
require_once('./libs/config.php');
require_once('./libs/utils.php');
require_once('./src/models/Booking.php');
require_once('./src/models/BookingManager.php');
$errors = [];
$messages = [];
// Rendre la page 'admin.php' inaccessible si l'utilisateur n'est pas connecté OU si connecté en tant que 'client'
if (is_admin() == false) {
header('location: ./index.php');
}
// Vérification si il y a bien une variable $id passée en GET et qu'elle n'est pas vide
if (isset($_GET['id']) && !empty($_GET['id'])) {
// "Nettoyage" l'Id envoyé
$id = strip_tags($_GET['id']);
$manager = new BookingManager();
$booking = $manager->readBookingById($id);
// Nb de couverts restants à la date considérée
$date = $booking->getDate();
$capacity = $manager->getCapacity($date);
// On fait d'abord les vérifications avant d'envoyer les modifications
if ($_POST) {
// Vérification si les champs sont définis et NON vides
if (
isset($_POST['id']) && !empty($_POST['id'])
&& isset($_POST['date']) && !empty($_POST['date'])
&& isset($_POST['seat']) && !empty($_POST['seat'])
&& isset($_POST['name']) && !empty($_POST['name'])
&& isset($_POST['hour']) && !empty($_POST['hour'])
&& isset($_POST['allergies']) && !empty($_POST['allergies'])
) {
// On nettoie les données envoyées
$id = strip_tags($_POST['id']);
$date = strip_tags($_POST['date']);
$seat = strip_tags($_POST['seat']);
$name = strip_tags($_POST['name']);
$hour = strip_tags($_POST['hour']);
$allergies = strip_tags($_POST['allergies']);
// Nb de couverts restants sans tenir compte de la réservation déjà faite
$newCapacity = $capacity + $booking->getSeat();
// Vérification nb de couverts restants sans tenir compte de la réservation actuelle
// Nécessaire pour pouvoir valider la demande de modification
if ($seat > $newCapacity) {
$errors[] = 'Passssss assez de couverts disponibles à cette date';
} else {
// Mise à jour de la réservation
$modifiedBooking = new Booking();
$modifiedBooking->setId($id);
$modifiedBooking->setDate($date);
$modifiedBooking->setSeat($seat);
$modifiedBooking->setName($name);
$modifiedBooking->setHour($hour);
$modifiedBooking->setAllergies($allergies);
$check = $manager->updateBooking($modifiedBooking);
if ($check) {
// Message de confirmation
$messages[] = 'Votre réservation à été modifié.';
} else {
$errors[] = 'Une erreur est survenue pendant la modification';
}
// Pour afficher les places disponibles juste APRÈS une réservation
if (isset($_POST['date']) && !empty($_POST['date'])) {
$capacity = $manager->getCapacity($_POST['date']);
}
}
} else {
// Il manque des champs
$errors[] = 'Le formulaire est incomplet';
}
}
} else {
// URL invalide
header('location: ./404.php');
}
require_once('./templates/booking/updateBooking.php');