CARIA.2.1

MAJ 2.1
Formulaires :
- Ajout mutliple conditions de validation  BACK-END
- Amélioration des conditions de réservations de véhicule
- MAJ Front-End
- Modification des règles pour les caractères accépté dans l'inscription
- bug d'enregistrement d'image résolu
DB :
- Modification des règles dans réservations
- Ajout de nouvelles entrée en base
General :
- Ajout de nouveaux messages d'erreurs possible
- Deplacement du bloc de visualisation des utilisateurs
- Ajout carte des vehicule sur la page de connexion
- Ajout de nouvelles images au véhicules
- Ajout des mentions légals
---
Résolution de bugs...
This commit is contained in:
ccunatbrule
2024-05-31 15:24:31 +02:00
parent b2f6dd412b
commit 121bade1a9
117 changed files with 1321 additions and 902 deletions

View File

@@ -2,6 +2,12 @@
require '../../config/connexion_sql.php';
global $bdd;
// Fonction de validation des dates
function validateDateTime($dateTime, $format = 'Y-m-d H:i:s') {
$d = DateTime::createFromFormat($format, $dateTime);
return $d && $d->format($format) === $dateTime;
}
// Récupération et validation des entrées
$start = isset($_POST['start']) ? $_POST['start'] : null;
$end = isset($_POST['end']) ? $_POST['end'] : null;
@@ -13,6 +19,57 @@ if (!$id_user || !$id_vehicule || !$start || !$end) {
die(json_encode(['status' => 'error', 'message' => 'Tous les champs sont requis.']));
}
// Vérification que l'ID du véhicule est un entier positif
if ($id_vehicule <= 0) {
die(json_encode(['status' => 'error', 'message' => 'ID du véhicule invalide.']));
}
// Vérification que l'ID du véhicule existe dans la base de données
$stmtVehicule = $bdd->prepare("SELECT COUNT(*) FROM Vehicules WHERE id = :id_vehicule");
$stmtVehicule->bindParam(':id_vehicule', $id_vehicule, PDO::PARAM_INT);
$stmtVehicule->execute();
if ($stmtVehicule->fetchColumn() == 0) {
die(json_encode(['status' => 'error', 'message' => 'Le véhicule spécifié n\'existe pas.']));
}
// Validation des formats de date
if (!validateDateTime($start) || !validateDateTime($end)) {
die(json_encode(['status' => 'error', 'message' => 'Les dates doivent être dans un format valide (YYYY-MM-DD HH:MM:SS).']));
}
// Vérification que la date de début est postérieure à la date actuelle
$currentDateTime = new DateTime();
$startDateTime = new DateTime($start);
if ($startDateTime <= $currentDateTime) {
die(json_encode(['status' => 'error', 'message' => 'Vous ne pouvez réserver que pour le jour même ou les jours suivants.']));
}
// Vérification que la date de fin est postérieure à la date de début
$endDateTime = new DateTime($end);
if ($endDateTime <= $startDateTime) {
die(json_encode(['status' => 'error', 'message' => 'La date de fin doit être postérieure à la date de début.']));
}
// Vérification que l'ID du client existe dans la base de données
$stmtResUser = $bdd->prepare("SELECT COUNT(*) FROM Reservations WHERE id_user = :id_user AND start < :end AND end > :start");
$stmtResUser->bindParam(':id_user', $id_user , PDO::PARAM_INT);
$stmtResUser->bindParam(':start', $start, PDO::PARAM_STR);
$stmtResUser->bindParam(':end', $end, PDO::PARAM_STR);
$stmtResUser->execute();
if ($stmtResUser->fetchColumn() > 0) {
die(json_encode(['status' => 'error', 'message' => 'L\'utilisateur à déjà réservé un véhicule pendant cette période.']));
}
// Vérification que l'ID du véhicule existe dans la base de données
$stmtResVehicule = $bdd->prepare("SELECT COUNT(*) FROM Reservations WHERE id_vehicule = :id_vehicule AND start < :end AND end > :start");
$stmtResVehicule->bindParam(':id_vehicule', $id_vehicule, PDO::PARAM_INT);
$stmtResVehicule->bindParam(':start', $start, PDO::PARAM_STR);
$stmtResVehicule->bindParam(':end', $end, PDO::PARAM_STR);
$stmtResVehicule->execute();
if ($stmtResVehicule->fetchColumn() > 0) {
die(json_encode(['status' => 'error', 'message' => 'Le véhicule est déjà réservé pendant cette période.']));
}
try {
// Démarrer la transaction
$bdd->beginTransaction();

View File

@@ -6,8 +6,6 @@ global $bdd;
if (!isset($id_session)) {
die(json_encode(['status' => 'error', 'message' => 'Utilisateur non connecté.']));
}
$id_user = $id_session; // Récupérer l'ID de l'utilisateur depuis la session
// Fonction de validation des dates
function validateDateTime($dateTime, $format = 'Y-m-d H:i:s') {
$d = DateTime::createFromFormat($format, $dateTime);
@@ -15,20 +13,67 @@ function validateDateTime($dateTime, $format = 'Y-m-d H:i:s') {
}
// Récupération et validation des entrées
$id_user = intval($_SESSION['id_session']);
$start = isset($_POST['start']) ? $_POST['start'] : null;
$end = isset($_POST['end']) ? $_POST['end'] : null;
$id_vehicule = isset($_POST['id_vehicule']) ? intval($_POST['id_vehicule']) : null;
// Vérification que toutes les entrées sont présentes et valides
if (!$id_vehicule || !$start || !$end) {
if (!$id_user || !$id_vehicule || !$start || !$end) {
die(json_encode(['status' => 'error', 'message' => 'Tous les champs sont requis.']));
}
// Vérification que l'ID du véhicule est un entier positif
if ($id_vehicule <= 0) {
die(json_encode(['status' => 'error', 'message' => 'ID du véhicule invalide.']));
}
// Vérification que l'ID du véhicule existe dans la base de données
$stmtVehicule = $bdd->prepare("SELECT COUNT(*) FROM Vehicules WHERE id = :id_vehicule");
$stmtVehicule->bindParam(':id_vehicule', $id_vehicule, PDO::PARAM_INT);
$stmtVehicule->execute();
if ($stmtVehicule->fetchColumn() == 0) {
die(json_encode(['status' => 'error', 'message' => 'Le véhicule spécifié n\'existe pas.']));
}
// Validation des formats de date
if (!validateDateTime($start) || !validateDateTime($end)) {
die(json_encode(['status' => 'error', 'message' => 'Les dates doivent être dans un format valide (YYYY-MM-DD HH:MM:SS).']));
}
// Vérification que la date de début est postérieure à la date actuelle
$currentDateTime = new DateTime();
$startDateTime = new DateTime($start);
if ($startDateTime <= $currentDateTime) {
die(json_encode(['status' => 'error', 'message' => 'Vous ne pouvez réserver que pour le jour même ou les jours suivants.']));
}
// Vérification que la date de fin est postérieure à la date de début
$endDateTime = new DateTime($end);
if ($endDateTime <= $startDateTime) {
die(json_encode(['status' => 'error', 'message' => 'La date de fin doit être postérieure à la date de début.']));
}
// Vérification que l'ID du client existe dans la base de données
$stmtResUser = $bdd->prepare("SELECT COUNT(*) FROM Reservations WHERE id_user = :id_user AND start < :end AND end > :start");
$stmtResUser->bindParam(':id_user', $id_user , PDO::PARAM_INT);
$stmtResUser->bindParam(':start', $start, PDO::PARAM_STR);
$stmtResUser->bindParam(':end', $end, PDO::PARAM_STR);
$stmtResUser->execute();
if ($stmtResUser->fetchColumn() > 0) {
die(json_encode(['status' => 'error', 'message' => 'Vous avez déjà réservé un véhicule pendant cette période.']));
}
// Vérification que l'ID du véhicule existe dans la base de données
$stmtResVehicule = $bdd->prepare("SELECT COUNT(*) FROM Reservations WHERE id_vehicule = :id_vehicule AND start < :end AND end > :start");
$stmtResVehicule->bindParam(':id_vehicule', $id_vehicule, PDO::PARAM_INT);
$stmtResVehicule->bindParam(':start', $start, PDO::PARAM_STR);
$stmtResVehicule->bindParam(':end', $end, PDO::PARAM_STR);
$stmtResVehicule->execute();
if ($stmtResVehicule->fetchColumn() > 0) {
die(json_encode(['status' => 'error', 'message' => 'Le véhicule est déjà réservé pendant cette période.']));
}
try {
// Démarrer la transaction
$bdd->beginTransaction();