diff --git a/src/API/requests.php b/src/API/requests.php index 42e4ae4..144d77a 100644 --- a/src/API/requests.php +++ b/src/API/requests.php @@ -16,10 +16,6 @@ $pdo = dbConnect(); $router = new Router(); -$router->GET('/api/requests', ["test"], function($test){ - echo json_encode($test); -}); - $router->GET('/api/search-type', ["type"], function($type){ global $pdo; searchDoctor($pdo, $type); @@ -58,9 +54,6 @@ $router->PUT('/api/rdv', ["rdv_id", "patient_id"], function($rdv_id, $patient_id global $pdo; takeRDV($pdo, $rdv_id, $patient_id); }); -$router->POST('/api/requests', ["test"], function($test){ - echo json_encode($test); -}); $router->POST('/api/login/patient', ["mail", "password"], function($mail, $password){ global $pdo; @@ -117,13 +110,10 @@ $router->PUT('/api/change/mail', ["id", "currentMail", "newMail"], function($id, Patient::updateMail($pdo, $id, $currentMail, $newMail); }); -$router->PUT('/api/requests', ["test"], function($test){ - echo json_encode($test); -}); -$router->DELETE('/api/requests', ["test"], function($test){ - echo json_encode($test); -}); +//Yanis Part + + $router->GET('/api/rdv-praticient', ["id"], function($id){ global $pdo; @@ -135,20 +125,19 @@ $router->GET('/api/rdv-praticient/getAllLieux', [], function(){ getAllLieux($pdo); }); -$router->GET('/api/rdv-patient', ["id"], function($id){ +$router->GET('/api/next-rdv-patient', ["id"], function($id){ global $pdo; dbRequestRdvPatient($pdo, $id); +}); + +$router->GET('/api/past-rdv-patient', ["id"], function($id){ + global $pdo; getPastRdvByPatient($pdo, $id); }); -$router->DELETE('/api/delete-empty', ["id"], function($id){ +$router->DELETE('/api/cancel-empty-rdv', ["id"], function($id){ global $pdo; - DeleteEmptyRdv($pdo, $id); -}); - -$router->DELETE('/api/cancel-rdv', ["id"], function($id){ - global $pdo; - CancelRDV($pdo, $id); + CancelEmptyRDV($pdo, $id); }); $router->POST('/api/create-rdv', ["medID", "date", "time", "lieu"], function($medID, $date, $time, $lieu){ @@ -156,4 +145,11 @@ $router->POST('/api/create-rdv', ["medID", "date", "time", "lieu"], function($me CreateRDV($pdo, $medID, $date, $time, $lieu); }); +$router->PUT('/api/cancel-rdv-patient', ["id"], function($id){ + global $pdo; + CancelRDVFromPatient($pdo, $id); +}); + +//End of Yanis Part + $router->run(); diff --git a/src/API/test/database.php b/src/API/test/database.php index 6c0b3e8..74f9dfd 100644 --- a/src/API/test/database.php +++ b/src/API/test/database.php @@ -1,22 +1,6 @@ setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - } - catch (PDOException $exception) - { - error_log('Connection error: '.$exception->getMessage()); - return false; - } - return $db; -}*/ - - function dbRequestRdvPraticien($pdo, $id){ $statement = $pdo->prepare("SELECT rdv_date, rdv_time, concat(p_name,' ', p_surname) as patient, p_mail, p_phone FROM rendez_vous @@ -32,16 +16,11 @@ function dbRequestRdvPraticien($pdo, $id){ $statement->execute(); $result = $statement->fetchAll(PDO::FETCH_ASSOC); - if (!empty($result)) { - Response::HTTP200($result); - } else { - Response::HTTP404(["error" => "No data found"]); - } - + Response::HTTP200($result); } function dbRequestRdvPatient($pdo, $id){ - $statement = $pdo->prepare("SELECT rdv_date, rdv_time, concat(m_name, ' ', m_surname) as medecin, medecin.m_specialty, medecin.m_id, concat(p_name, ' ', p_surname) as patient, l_adress as adresse, concat(l_postal, ' ', l_city) as ville + $statement = $pdo->prepare("SELECT rendez_vous.rdv_id, rdv_date, rdv_time, concat(m_name, ' ', m_surname) as medecin, medecin.m_specialty as med_spe, medecin.m_id, concat(p_name, ' ', p_surname) as patient, l_adress as adresse, concat(l_postal, ' ', l_city) as ville FROM rendez_vous INNER JOIN patient ON rendez_vous.p_id = patient.p_id INNER JOIN propose ON rendez_vous.rdv_id = propose.rdv_id @@ -49,21 +28,18 @@ function dbRequestRdvPatient($pdo, $id){ INNER JOIN lieu on lieu.l_id = rendez_vous.l_id WHERE NOW() <= (rdv_date + rdv_time) AND patient.p_id = :id - ORDER BY rdv_date ASC, rdv_time ASC"); + ORDER BY rdv_date ASC, rdv_time ASC + LIMIT 5"); $statement->bindParam(':id', $id); $statement->execute(); $result = $statement->fetchAll(PDO::FETCH_ASSOC); - if (!empty($result)) { - Response::HTTP200($result); - } else { - Response::HTTP404(["error" => "No data found"]); - } + Response::HTTP200($result); } function getPastRdvByPatient($pdo, $id){ - $statement = $pdo->prepare("SELECT rdv_date, rdv_time, concat(m_name, ' ', m_surname) as medecin, medecin.m_specialty, medecin.m_id, concat(p_name, ' ', p_surname) as patient, l_adress as adresse, concat(l_postal, ' ', l_city) as ville + $statement = $pdo->prepare("SELECT rdv_date, rdv_time, concat(m_name, ' ', m_surname) as medecin, medecin.m_specialty as med_spe, medecin.m_id, concat(p_name, ' ', p_surname) as patient, l_adress as adresse, concat(l_postal, ' ', l_city) as ville FROM rendez_vous INNER JOIN patient ON rendez_vous.p_id = patient.p_id INNER JOIN propose ON rendez_vous.rdv_id = propose.rdv_id @@ -137,17 +113,19 @@ function CreateRDV($pdo, $medID, $date, $time, $lieu){ } } -function DeleteEmptyRdv($pdo, $id) -{ - $statement = $pdo->prepare("SELECT p_id FROM rendez_vous WHERE rdv_id = :id"); +function CancelEmptyRDV($pdo, $id){ + $statement = $pdo->prepare("DELETE FROM propose WHERE rdv_id = :id"); $statement->bindParam(':id', $id); $statement->execute(); - $result = $statement->fetch(PDO::FETCH_ASSOC); - if ($result['p_id'] == null) { - $statement = $pdo->prepare("DELETE FROM rendez_vous WHERE rdv_id = :id"); - $statement->bindParam(':id', $id); - $statement->execute(); - Response::HTTP200(["Success" => "RDV deleted"]); - } - Response::HTTP403(["Forbidden" => "This RDV is not empty"]); + $statement = $pdo->prepare("DELETE FROM rendez_vous WHERE rdv_id = :id"); + $statement->bindParam(':id', $id); + $statement->execute(); + Response::HTTP200(["Success" => "RDV deleted"]); +} + +function CancelRDVFromPatient($pdo, $id){ + $statement = $pdo->prepare("UPDATE public.rendez_vous SET p_id = null WHERE rdv_id = :id"); + $statement->bindParam(':id', $id); + $statement->execute(); + Response::HTTP200(["Success" => "RDV deleted"]); } \ No newline at end of file diff --git a/src/API/test/request.php b/src/API/test/request.php deleted file mode 100644 index 11aedc2..0000000 --- a/src/API/test/request.php +++ /dev/null @@ -1,26 +0,0 @@ - -

+

Doct'ISEN

-
+
avatar " +} + + +function attachEventListener(i, id) { + document.getElementById("retake-rdv-" + i + "-" + id).addEventListener("click", function () { + let today = new Date(); + let date = today.getFullYear() + "-" + (today.getMonth() + 1).toString().padStart(2, "0") + "-" + today.getDate().toString().padStart(2, "0"); + ajaxRequest('GET', "src/API/requests.php/api/rdv-date?date=" + date + "&id=" + id, function (data) { + displayCalendar(data); + }); + }); +} + + +function DisplayPastRDVPatient(past_rdv, rdv) { + past_rdv.innerHTML = "
Vos rendez-vous passés
"; + if(rdv.length === 0){ + past_rdv.innerHTML += "

Vous n'avez pas de rendez-vous passé

"; + } + else{ + for(let i = 0; i < rdv.length; i++) { + past_rdv.innerHTML += "
" + + "
" + + "
" + + "

" + rdv[i].rdv_date + "

" + + "

" + rdv[i].rdv_time + "

" + + "
" + + "
" + rdv[i].medecin + "
" + + "
" + rdv[i].med_spe + "
" + + "
" + + " " + + "
"; + } + for(let i = 0; i < rdv.length; i++) { + document.getElementById("retake-rdv-" + i + "-" + rdv[i].m_id).addEventListener("click", function () { + attachEventListener(i, rdv[i].m_id); + }); + } + } +} + + +function attachEventListenerDeplacer(rdv){ + document.getElementById("deplacer_button").addEventListener("click", function () { + let id = rdv[0].m_id; + let rdv_id = rdv[0].rdv_id; + let data = "id=" + rdv_id + let today = new Date(); + let date = today.getFullYear() + "-" + (today.getMonth() + 1).toString().padStart(2, "0") + "-" + today.getDate().toString().padStart(2, "0"); + console.log(data); + ajaxRequest('PUT', "src/API/requests.php/api/cancel-rdv-patient", function () { + console.log("Rendez-vous annulé"); + ajaxRequest('GET', "src/API/requests.php/api/rdv-date?date=" + date + "&id=" + id, function (data) { + displayCalendar(data); + }); + }, data); + + }); +} + +function attachEventListenerAnnuler(rdv){ + document.getElementById("cancel_button").addEventListener("click", function () { + let id = rdv[0].rdv_id; + let data = "id=" + id + console.log(data); + ajaxRequest('PUT', "src/API/requests.php/api/cancel-rdv-patient", function (id) { + console.log("Rendez-vous annulé"); + DisplayRDVPatientPage(); + },data); + }); + +} + +function DisplayRDV(the_rdv, rdv){ + if(rdv.length === 0){ + the_rdv.innerHTML = "
" + + "
" + + "
" + + "

" + + "
" + + "
Vous n'avez pas de rendez-vous à venir
" + + "
"; + } + else{ + the_rdv.innerHTML += "
" + + "
" + + "
" + + "

" + rdv[0].rdv_date + "

" + + "

" + rdv[0].rdv_time + "

" + + "
" + + "
" + + "
" + + "
" + rdv[0].medecin + "
" + + "
" + rdv[0].med_spe + "
" + + "" + + "
" + + "
" + + "
" + + "
" + + "
Préparer la consulation
" + + "
Pour gagner du temps et améliorer votre prise en charge.
" + + "
" + + "" + + "" + + "" + + "

" + + "" + + "
Maintenance en cours.
" + + "
" + + "
" + + "
" + + "
" + + "
" + + "
Patient
" + + "
" + rdv[0].patient + "
" + + "
" + + "
" + + "
" + + "
" + + "
Lieu de la consulation
" + + "
" + rdv[0].adresse + "
" + + rdv[0].ville + "
" + + "
" + + "
" + attachEventListenerDeplacer(rdv); + attachEventListenerAnnuler(rdv); + } +} + +export {ButtonShowRdvPatient}; \ No newline at end of file diff --git a/src/js/AJAX/rdv-praticien.js b/src/js/AJAX/rdv-praticien.js index 3ac7a73..4a59dd5 100644 --- a/src/js/AJAX/rdv-praticien.js +++ b/src/js/AJAX/rdv-praticien.js @@ -1,4 +1,5 @@ import {TokenDecode} from "./lib.js"; +import {attachReturnHomeEventListener} from "./home.js"; function ButtonShowRdvPraticient() { try { @@ -6,6 +7,7 @@ function ButtonShowRdvPraticient() { let user = TokenDecode(sessionStorage.getItem("token")); ajaxRequest('GET', "src/API/requests.php/api/rdv-praticient?id=" + user.id, function (data) { DisplayRDVPraticient(data); + attachReturnHomeEventListener(); console.log(data); }); }); @@ -16,20 +18,62 @@ function ButtonShowRdvPraticient() { } } +function attachCancelEventListener(rdv_id, i) { + const idBtn = "cancel_button" + i; + console.log(idBtn); + console.log(i); + let Btn = document.getElementById(idBtn); + if(Btn !== null){ + console.log("je suis là"); + console.log(Btn); + Btn.addEventListener("click", function (event) { + console.log("hello"); + let data = 'rdv_id=' + rdv_id; + console.log(data); + /* + ajaxRequest('DELETE', "src/API/requests.php/api/cancel-rdv", function (data) { + console.log(data); + ButtonShowRdvPraticient(); + attachReturnHomeEventListener(); + ajaxRequest('GET', "src/API/requests.php/api/rdv-praticient?id=" + user.id, function (data) { + DisplayRDVPraticient(data); + console.log(data); + }); + }, data);*/ + }); + } + else{ + console.log("je suis pas là") + } +} + + function DisplayRDVPraticient(rdv){ let count = rdv.length; let content = document.getElementById("content"); content.innerHTML = ""; - content.innerHTML = '
'; + let h100 = document.createElement("div"); + h100.classList.add("h-100"); + let container = document.createElement("div"); + container.classList.add("d-flex", "flex-row", "flex-wrap", "my-5", "mx-5", "gap-5", "justify-content-center", "text-center"); if(count === 0){ - content.append('

Vous n\'avez pas de rendez-vous

'); + container.innerHTML += '
' + + '
' + + '
' + + '

' + + '
' + '
' + + '
' + + '
Vous n\'avez pas de créneaux de planifié
' + + '
' + '
'; } else { for (let i = 0; i < count; i++) { console.log(rdv[i]); + + let card = document.createElement("div"); + card.classList.add("card", "rounded-4", "mx-2", "pointer"); if (rdv[i].p_mail !== null) { - content.innerHTML += '
' + - '
' + + card.innerHTML += '
' + '
' + '

' + rdv[i].rdv_date + '

' + '

' + rdv[i].rdv_time + '

' + @@ -41,18 +85,27 @@ function DisplayRDVPraticient(rdv){ '' + '0' + rdv[i].p_phone + '' + '
' + '
'; } else { - content.innerHTML += '
' + - '
' + + card.innerHTML += '
' + '
' + '

' + rdv[i].rdv_date + '

' + '

' + rdv[i].rdv_time + '

' + '
' + '
' + '
' + '
Vous n\'avez pas de' + '
' + 'patient pour ce créneau
' + + '' + '
' + '
'; } + container.appendChild(card); } + } + h100.appendChild(container); + content.appendChild(h100); + for (let i = 0; i < count; i++) { + attachCancelEventListener(rdv[i].rdv_id, i); + } + content.innerHTML += '
'; ShowAddRDV(); } @@ -100,11 +153,13 @@ function DisplayAddRDV(lieux) { ajaxRequest('POST', "src/API/requests.php/api/create-rdv", function (data) { console.log(data); ButtonShowRdvPraticient(); + attachReturnHomeEventListener(); + ajaxRequest('GET', "src/API/requests.php/api/rdv-praticient?id=" + user.id, function (data) { + DisplayRDVPraticient(data); + console.log(data); + }); }, data); - ajaxRequest('GET', "src/API/requests.php/api/rdv-praticient?id=" + user.id, function (data) { - DisplayRDVPraticient(data); - console.log(data); - }); + }); } diff --git a/src/js/AJAX/search.js b/src/js/AJAX/search.js index 1c0820f..ea55392 100644 --- a/src/js/AJAX/search.js +++ b/src/js/AJAX/search.js @@ -119,4 +119,4 @@ function attachSearchEventListener() { } } -export {removeSearchTopBar, attachSearchEventListener}; \ No newline at end of file +export {removeSearchTopBar, attachSearchEventListener, displaySearchTopBar}; \ No newline at end of file diff --git a/src/js/AJAX/take-rdv.js b/src/js/AJAX/take-rdv.js index 092db49..0caee0b 100644 --- a/src/js/AJAX/take-rdv.js +++ b/src/js/AJAX/take-rdv.js @@ -156,4 +156,4 @@ function attachPrendreRDVEventListener() { }); } -export {attachRDVEventListener}; \ No newline at end of file +export {attachRDVEventListener, displayCalendar}; \ No newline at end of file