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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
| public function checkerExistenceCreneau(string $dateClient, string $heureClient)
{
//$heureClient = new \DateTime($heureClient);
//$dateClient = new \DateTime($dateClient);
//Rechercher si la date choisie par le client est comprise dans un possible intervalle de créneaux
//et récupérer l'id du créneau
$q1 = $this->createQueryBuilder('d')
->setParameter('val', $dateClient)
->where('d.date_debut <= :val AND d.date_fin >= :val')
->getQuery()
->getOneOrNullResult();
//Si résultat de requête $q1 non vide alors :
if ($q1 != null) {
//Récupération de la ligne de la table dans laquelle se trouve le créneau actif
$idCreneau = $q1->getId();
//Recherche du numéro de jour de la semaine correspondant à la date entrée par le client:
$jour = date("N", strtotime($dateClient));
//Rapatriement de tous les créneaux correspondants au jour choisi
//Recherche linéaire dans la table tabulaire des créneaux pour récupérer les intervalles d'horaires et nombre de couverts
switch ($jour) {
case 1:
$colHeureDepartMidi = "c.lundi_midi_debut";
$colHeureFinMidi = "c.lundi_midi_fin";
$colNbrCouvertsMidi = "c.nbr_couverts_lundi_midi";
$colHeureDepartSoir = "c.lundi_soir_debut";
$colHeureFinSoir = "c.lundi_soir_fin";
$colNbrCouvertsSoir = "c.nbr_couverts_lundi_soir";
break;
case 2:
$colHeureDepartMidi = "c.mardi_midi_debut";
$colHeureFinMidi = "c.mardi_midi_fin";
$colNbrCouvertsMidi = "c.nbr_couverts_mardi_midi";
$colHeureDepartSoir = "c.mardi_soir_debut";
$colHeureFinSoir = "c.mardi_soir_fin";
$colNbrCouvertsSoir = "c.nbr_couverts_mardi_soir";
break;
case 3:
$colHeureDepartMidi = "c.mercredi_midi_debut";
$colHeureFinMidi = "c.mercredi_midi_fin";
$colNbrCouvertsMidi = "c.nbr_couverts_mercredi_midi";
$colHeureDepartSoir = "c.mercredi_soir_debut";
$colHeureFinSoir = "c.mercredi_soir_fin";
$colNbrCouvertsSoir = "c.nbr_couverts_mercredi_soir";
break;
case 4:
$colHeureDepartMidi = "c.jeudi_midi_debut";
$colHeureFinMidi = "c.jeudi_midi_fin";
$colNbrCouvertsMidi = "c.nbr_couverts_jeudi_midi";
$colHeureDepartSoir = "c.jeudi_soir_debut";
$colHeureFinSoir = "c.jeudi_soir_fin";
$colNbrCouvertsSoir = "c.nbr_couverts_jeudi_soir";
break;
case 5:
$colHeureDepartMidi = "c.vendredi_midi_debut";
$colHeureFinMidi = "c.vendredi_midi_fin";
$colNbrCouvertsMidi = "c.nbr_couverts_vendredi_midi";
$colHeureDepartSoir = "c.vendredi_soir_debut";
$colHeureFinSoir = "c.vendredi_soir_fin";
$colNbrCouvertsSoir = "c.nbr_couverts_vendredi_soir";
break;
case 6:
$colHeureDepartMidi = "c.samedi_midi_debut";
$colHeureFinMidi = "c.samedi_midi_fin";
$colNbrCouvertsMidi = "c.nbr_couverts_samedi_midi";
$colHeureDepartSoir = "c.samedi_soir_debut";
$colHeureFinSoir = "c.samedi_soir_fin";
$colNbrCouvertsSoir = "c.nbr_couverts_samedi_soir";
break;
case 7:
$colHeureDepartMidi = "c.dimanche_midi_debut";
$colHeureFinMidi = "c.dimanche_midi_fin";
$colNbrCouvertsMidi = "c.nbr_couverts_dimanche_midi";
$colHeureDepartSoir = "c.dimanche_soir_debut";
$colHeureFinSoir = "c.dimanche_soir_fin";
$colNbrCouvertsSoir = "c.nbr_couverts_dimanche_soir";
break;
default:
return;
}
//Requête qui rapatrie les créneaux et nbr de couverts pour le jour et heure choisis :
$heureClient=new \DateTime($heureClient);
$q2 = $this->createQueryBuilder('c')
->select($colHeureDepartMidi, $colHeureFinMidi, $colHeureDepartSoir, $colHeureFinSoir, $colNbrCouvertsMidi, $colNbrCouvertsSoir)
->setParameters([
'idcreneau' => $idCreneau,
'heureclient'=>$heureClient,
'heuredepartmidi'=> $colHeureDepartMidi,
// 'heurefinmidi'=> $colHeureFinMidi,
// 'nbrcouvertsmidi'=> $colNbrCouvertsMidi,
// 'heuredepartsoir'=> $colHeureDepartSoir,
// 'heurefinsoir'=> $colHeureFinSoir,
// 'nbrcouvertssoir'=> $colNbrCouvertsSoir,
])
->andWhere(':heureclient <= :heuredepartmidi')
// ->orWhere(':heureclient >= :heuredepartsoir and :heureclient <= :heurefinsoir')
->andWhere('c.id = :idcreneau')
->getQuery()
->getResult();
echo ('idCreneau =' . $idCreneau);
dd($q2);
echo ('Des résultats ont été trouvés'), die;
return $q1;
return $q2;
} else {
echo ("Aucun créneau libre de réservation n'a été trouvé, veuillez choisir un autre jour ou consulter la liste des créneaux disponibles en cliquant sur le link qui s'affiche en bas de ce formulaire.");
} |
Partager