/** * @brief Génération d'une alerte prédéfinie * @param int $idMember ID du membre concerné * @param Schedule $Schedule Représente un rendez-vous * @param int $idAlert Numéro de l'alerte voulue * @return Void * * Liste des possibilités pour @b $idAlert : * - 0 : alerte PATIENT pour ANNULATION du rendez-vous (à la demande du patient) * - 1 : alerte PATIENT pour ANNULATION et FACTURATION du rendez-vous (annulation à moins de 24h du rdv) * - 2 : alerte MEDECIN pour ANNULATION du rendez-vous * - 3 : alerte MEDECIN pour ANNULATION et FACTURATION du rendez-vous * - 4 : alerte PATIENT pour ANNULATION du rendez-vous (à le demande du médecin) * - 5 : alerte PATIENT pour CONFIRMATION du rendez-vous (par le médecin) * - 6 : alerte PATIENT pour CONFIRMATION de son rendez-vous, sans attente de confirmation du médecin * - 7 : alerte PATIENT pour PRISE EN COMPTE de son rendez-vous, avec attente de confirmation de la part du médecin * - 8 : alerte MEDECIN pour NOUVEAU Rendez-vous sans confirmation * - 9 : alerte MEDECIN pour NOUVEAU Rendez-vous avec confirmation * - 10 : alerte PATIENT demande à être PRATICIEN */ public function generateAutomaticMessage($idMember, $Schedule, $idAlert) { $alert = new Alert(); switch ($idAlert) { case 0: $title = "Annulation de votre rendez-vous"; $alertMessage = 'Votre rendez-vous du ' . date("j-m à H:i", $Schedule->getDateStart()) . ' a bien été annulé.'; break; case 1: $title = "Annulation de votre rendez-vous à moins de 24h"; $alertMessage = 'Votre rendez-vous du ' . date("j-m à H:i", $Schedule->getDateStart()) . ' a été annulé dans les 24 heures qui le précèdent. Conformément aux conditions générales d\'utilisation, le rendez-vous peut vous être facturé au tarif réglementaire. Veuillez contacter votre praticien'; break; case 2: $title = "Annulation de rendez-vous par le patient"; $alertMessage = 'Le rendez-vous du ' . date("j-m à H:i", $Schedule->getDateStart()) . ' de M./Mme ' . $_SESSION['user']->getProfile('nom') . ' ' . $_SESSION['user']->getProfile('prénom') . ' a été annulé.'; break; case 3: $title = "Annulation de rendez-vous par le patient à moins de 24h"; $alertMessage = 'Le rendez-vous du ' . date("j-m à H:i", $Schedule->getDateStart()) . ' de M./Mme ' . $_SESSION['user']->getProfile('nom') . ' ' . $_SESSION['user']->getProfile('prénom') . ' a été annulé. Conformément aux conditions générales d\'utilisation, le rendez-vous pourra lui être facturé au tarif réglementaire.'; break; case 4: $title = "Annulation de votre rendez-vous par le médecin"; $alertMessage = 'Votre médecin, M./Mme ' . $_SESSION['user']->getProfile('nom') . ' ' . $_SESSION['user']->getProfile('prénom') . ' ne peut malheureusement pas confirmer votre rendez-vous du ' . date("j-m à H:i", $Schedule->getDateStart()) . ', en raison d\'un imprévu. Nous vous invitons à reconsulter son emploi du temps si vous souhaitez prendre un autre rendez-vous. Toutes nos excuses pour la gène occasionnée.'; break; case 5: $title = "Confirmation de votre rendez-vous par le médecin"; $alertMessage = 'Votre médecin, M./Mme ' . $_SESSION['user']->getProfile('nom') . ' ' . $_SESSION['user']->getProfile('prénom') . ' a bien confirmé votre rendez-vous du ' . date("j-m à H:i", $Schedule->getDateStart()); break; case 6: $title = "Confirmation de votre rendez-vous"; $alertMessage = 'Votre rendez-vous du ' . date("j-m à H:i", $Schedule->getDateStart()) . ' à bien été confirmé. Retrouvez les détails de vos rendez-vous sur votre page personnelle.'; break; case 7: $title = "Attente de confirmation de votre rendez-vous"; $alertMessage = 'Votre rendez-vous du ' . date("j-m à H:i", $Schedule->getDateStart()) . ' à bien été pris en compte. Vous serez informé(e) prochainement de la confirmation de votre rendez-vous par le médecin. Retrouvez les détails de vos rendez-vous sur votre page personnelle.'; break; case 8: $title = "Nouveau rendez-vous"; $alertMessage = 'Un nouveau rendez-vous a été pris par M./Mme ' . $_SESSION['user']->getProfile('nom') . ' ' . $_SESSION['user']->getProfile('prénom') . ' pour le ' . date("j-m à H:i", $Schedule->getDateStart()) . ' prochain.'; break; case 9: $title = "Nouveau rendez-vous en attente de votre confirmation"; $alertMessage = 'Un nouveau rendez-vous a été pris pas M./Mme ' . $_SESSION['user']->getProfile('nom') . ' ' . $_SESSION['user']->getProfile('prénom') . ' pour le ' . date("j-m à H:i", $Schedule->getDateStart()) . ' prochain. N\'oubliez pas de confirmer le rendez-vous sur votre page dédiée.'; break; } if (isset($alertMessage)) { $alert->setMessage($alertMessage); $alert->setTitle($title); $alert->setIdMember($idMember); $this->add($alert); } }
/** * @brief Ajoute un blocage à la base de données * @param Schedule $block Bloquage à enregistrer dans la base de données * @return Error Retourne une information avec le message de succès */ public function addBlock($block) { $req = $this->bdd->prepare('INSERT INTO block_schedule (id_doctor, date_start, date_stop, note, recursion) VALUES (:idDoctor , :dstart, :dstop, :note, :recursion) '); $req->bindValue(':dstart', $block->getDateStart(), PDO::PARAM_STR); $req->bindValue(':dstop', $block->getDateStop(), PDO::PARAM_STR); $req->bindValue(':note', $block->getNote(), PDO::PARAM_STR); $req->bindValue(':idDoctor', $block->getIdDoctor(), PDO::PARAM_INT); $req->bindValue(':recursion', $block->getRecursion(), PDO::PARAM_INT); $req->execute(); return new Error("Le blocage a été ajouté", "info"); }
$dateStart = new DateTime(date("Y-m-d H:i:s")); } } else { Tools::redirect("home"); } } else { Tools::redirect("home"); } //PRISE D'UN RENDEZ-VOUS if (isset($_POST['date-rdv']) and isset($_POST['time-rdv']) and isset($_POST['tk']) and $_POST['tk'] == $_SESSION['token2'] and $_SESSION['user']->getIdMember() != $_GET['doctor']) { if (Tools::checkDate($_POST['date-rdv']) and Tools::checkTime($_POST['time-rdv']) and isset($_POST['valid-rdv'])) { $sc = new Schedule(); $sc->setIdDoctor($doctor->getIdMember()); $sc->setIdMember($_SESSION['user']->getIdMember()); $sc->setDateStart(strtotime($_POST['date-rdv'] . " " . $_POST['time-rdv'] . ":00")); $sc->setDateStop($sc->getDateStart() + $doctor->getRdvDuration() * 60); if ($doctor->getRdvConfirm() == 0) { $sc->setValidate(1); } if (isset($_POST['note'])) { $sc->setNote(Tools::secure($_POST['note'])); } $dayStartHour = strtotime($_POST['date-rdv'] . " " . $doctor->getStartHour('h') . ":" . $doctor->getStartHour('m') . ":00"); $result = SchedulesManager::instance()->getLastBlockedBlockHour($doctor->getIdMember(), $dayStartHour, $sc->getDateStart()); $calage = abs($sc->getDateStart() - $result); $calage = $calage % ($doctor->getRdvDuration() * 60); if ($calage != 0) { $errors['rdv'] = new Error("Vous ne pouvez pas prendre un rendez-vous en dehors des heures fixées par le calendrier."); } else { $result = SchedulesManager::instance()->add($sc); if (Tools::getClass($result) == "Error") {