379 lines
20 KiB
PHP
Executable File
379 lines
20 KiB
PHP
Executable File
<?php
|
|
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: seekdasky
|
|
* Date: 10/12/15
|
|
* Time: 09:52
|
|
*/
|
|
class RDV
|
|
{
|
|
public function add($params){
|
|
if(StaticRepo::checkParam($params['date_naissance'],'Date')) {
|
|
$params['date'] = DateTime::createFromFormat('d/m/Y', $params['date']);
|
|
if (RDVRepo::add($params['date']->format('Y-m-d') . ' ' . $params['heure'] . ':00', $params['duree'], $params['id_patient'], $params['id_medecin']) !== FALSE) {
|
|
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ){
|
|
$response = new Response();
|
|
$response->setHeader('Location',"http://".$_SERVER['HTTP_HOST']."/Consultations.php?type=creation");
|
|
$response->send();
|
|
}else{
|
|
Response::quickResponse(200, json_encode([
|
|
'status' => 'success',
|
|
'title' => 'Création effectuée!',
|
|
'message' => 'La consultation du '.$params['date']->format('d/m/Y').' à '.$params['heure'].' a bien été créée.'
|
|
]));
|
|
}
|
|
}else{
|
|
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ){
|
|
$response = new Response();
|
|
$response->setHeader('Location',"http://".$_SERVER['HTTP_HOST']."/Consultations.php?type=error");
|
|
$response->send();
|
|
}else{
|
|
Response::quickResponse(200, json_encode([
|
|
'status' => 'error',
|
|
'title' => 'Erreur de création!'
|
|
]));
|
|
}
|
|
}
|
|
}else{
|
|
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ){
|
|
$response = new Response();
|
|
$response->setHeader('Location',"http://".$_SERVER['HTTP_HOST']."/Consultations.php?type=error");
|
|
$response->send();
|
|
}else{
|
|
Response::quickResponse(200, json_encode([
|
|
'status' => 'error',
|
|
'title' => 'Erreur de paramètre',
|
|
'message' => 'Date incorrecte'
|
|
]));
|
|
}
|
|
}
|
|
}
|
|
|
|
public function delete($params){
|
|
if(RDVRepo::delete($params['id_consultation']) !==FALSE){
|
|
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ){
|
|
$response = new Response();
|
|
$response->setHeader('Location',"http://".$_SERVER['HTTP_HOST']."/Consultations.php?type=supression");
|
|
$response->send();
|
|
}else{
|
|
Response::quickResponse(200, json_encode([
|
|
'status' => 'success',
|
|
'title' => 'Supression effectuée!',
|
|
'message' => 'La consultation a bien été supprimée.'
|
|
]));
|
|
}
|
|
}else{
|
|
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ){
|
|
$response = new Response();
|
|
$response->setHeader('Location',"http://".$_SERVER['HTTP_HOST']."/Consultations.php?type=error");
|
|
$response->send();
|
|
}else{
|
|
Response::quickResponse(200, json_encode([
|
|
'status' => 'error',
|
|
'title' => 'Erreur lors de la supression!'
|
|
]));
|
|
}
|
|
}
|
|
}
|
|
|
|
public function update($params){
|
|
if(StaticRepo::checkParam($params['date_naissance'],'Date')) {
|
|
$params['date'] = DateTime::createFromFormat('d/m/Y', $params['date']);
|
|
if (RDVRepo::updateDateTime($params['id_consultation'], $params['date']->format('Y-m-d') . ' ' . $params['heure'] . ':00') !== FALSE) {
|
|
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ){
|
|
$response = new Response();
|
|
$response->setHeader('Location',"http://".$_SERVER['HTTP_HOST']."/Consultations.php?type=maj");
|
|
$response->send();
|
|
}else{
|
|
Response::quickResponse(200, json_encode([
|
|
'status' => 'success',
|
|
'title' => 'Modification effectuée!',
|
|
'message' => 'La consultation du '.$params['date']->format('d/m/Y').' à '.$params['heure'].'a bien été mis àjour.'
|
|
]));
|
|
}
|
|
}else{
|
|
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ){
|
|
$response = new Response();
|
|
$response->setHeader('Location',"http://".$_SERVER['HTTP_HOST']."/Consultations.php?type=error");
|
|
$response->send();
|
|
}else{
|
|
Response::quickResponse(200, json_encode([
|
|
'status' => 'error',
|
|
'title' => 'Erreur de mise a jour!'
|
|
]));
|
|
}
|
|
}
|
|
}else{
|
|
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ){
|
|
$response = new Response();
|
|
$response->setHeader('Location',"http://".$_SERVER['HTTP_HOST']."/Consultations.php?type=error");
|
|
$response->send();
|
|
}else{
|
|
Response::quickResponse(200, json_encode([
|
|
'status' => 'error',
|
|
'title' => 'Erreur de paramètre',
|
|
'message' => 'Date incorrecte'
|
|
]));
|
|
}
|
|
}
|
|
}
|
|
|
|
public function getSVG($params){
|
|
$days = ['Mon'=>0,'Tue'=>1,'Wed'=>2,'Thu'=>3,'Fri'=>4,'Sat'=>5,'Sun'=>6];
|
|
$svgCalendar = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>
|
|
<!-- Created with PHP Maggle -->
|
|
|
|
<svg
|
|
xmlns:svg=\"http://www.w3.org/2000/svg\"
|
|
xmlns=\"http://www.w3.org/2000/svg\"
|
|
xmlns:xlink=\"http://www.w3.org/1999/xlink\"
|
|
version=\"1.1\"
|
|
width=\"7700\"
|
|
height=\"6000\"
|
|
id=\"svg2\">
|
|
<metadata
|
|
id=\"metadata7\">
|
|
<rdf:RDF>
|
|
<cc:Work
|
|
rdf:about=\"\">
|
|
<dc:format>image/svg+xml</dc:format>
|
|
<dc:type
|
|
rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" />
|
|
<dc:title>Calendar</dc:title>
|
|
</cc:Work>
|
|
</rdf:RDF>
|
|
</metadata>
|
|
";
|
|
|
|
$current = strtotime($params['mois']);
|
|
|
|
|
|
//on range les rendez-vous dans un tableau avec leur jour comme clé
|
|
$RDVTemp = RDVRepo::getByMonth($params['mois'].'-01');
|
|
$RDVs = [];
|
|
foreach($RDVTemp as $rdv){
|
|
if(!isset($RDVs[date('j',strtotime($rdv['DateRDV']))])){
|
|
$RDVs[date('j',strtotime($rdv['DateRDV']))] = [];
|
|
}
|
|
|
|
array_push($RDVs[date('j',strtotime($rdv['DateRDV']))],$rdv);
|
|
}
|
|
foreach(range(1,date('t',strtotime($params['mois']))) as $day) {
|
|
|
|
//génération du SVG de la journée
|
|
|
|
//selon si on a une date sur un ou deux chiffres, on adapte
|
|
$date = strftime("%B %Y", $current);
|
|
if ($day >= 10) {
|
|
$xDate = 1500;
|
|
} else {
|
|
$xDate = 1000;
|
|
}
|
|
|
|
//fond général + affichage de la date
|
|
$svgCalendar .= '<g id="Day_' . $day . '">
|
|
|
|
<rect
|
|
width="7700"
|
|
height="6000"
|
|
x="0"
|
|
y="0"
|
|
id="backgroundDay_' . $day . '"
|
|
style="fill:#fff;fill-opacity:1;stroke:none" />
|
|
|
|
<text
|
|
x="300"
|
|
y="1000"
|
|
id="TextDay_' . $day . '"
|
|
xml:space="preserve"
|
|
style="font-size:750px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee">
|
|
<tspan
|
|
x="300"
|
|
y="1000"
|
|
id="TextSpanDay_' . $day . '">' . $day . '
|
|
</tspan>
|
|
</text>
|
|
|
|
<text
|
|
x="' . $xDate . '"
|
|
y="1000"
|
|
id="TextMonthDay_' . $day . '"
|
|
xml:space="preserve"
|
|
style="font-size:400px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"><tspan
|
|
x="' . $xDate . '"
|
|
y="1000"
|
|
id="TextSpanMonthDay_' . $day . '">' . $date . '
|
|
</tspan>
|
|
</text>
|
|
';
|
|
|
|
//on défini le tableau si jamais
|
|
if (!isset($RDVs[$day])) {
|
|
$RDVs[$day] = [];
|
|
}
|
|
|
|
//on parcours les consultations du jour pour les afficher
|
|
foreach ($RDVs[$day] as $key => $rdv) {
|
|
$patient = PatientRepo::getById(intval($rdv['Patient_Id']));
|
|
$medecin = MedecinRepo::getById(intval($rdv['Medecin_id']));
|
|
|
|
//couleur suivant le nombre de consultation
|
|
if ($key % 2 == 0) {
|
|
$color = 'f9f9f9';
|
|
} else {
|
|
$color = 'ececec';
|
|
}
|
|
|
|
//du svg blablabla
|
|
$yConsult = 1500 + 700 * $key;
|
|
$svgCalendar .= '<g
|
|
id="ConsultationGroupDay' . $day . 'Consult' . $key . '"
|
|
data-patient="' . $rdv['Patient_Id'] . '"
|
|
data-medecin="' . $rdv['Medecin_id'] . '">
|
|
<rect
|
|
width="7000"
|
|
height="700"
|
|
x="300"
|
|
y="' . $yConsult . '"
|
|
id="ConsultationBackgroundDay' . $day . 'Consult' . $key . '"
|
|
style="fill:#' . $color . ';fill-opacity:1;stroke:none" />
|
|
<text
|
|
x="400"
|
|
y="' . $yConsult . '"
|
|
id="ConsultationTextHourDay' . $day . 'Consult' . $key . '"
|
|
xml:space="preserve"
|
|
style="font-size:400px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"><tspan
|
|
x="400"
|
|
y="' . ($yConsult + 500) . '"
|
|
id="ConsultationTextSpanHourDay' . $day . 'Consult' . $key . '">' . date('G:i', strtotime($rdv['DateRDV'])) . '</tspan></text>
|
|
<g
|
|
id="g5136">
|
|
<text
|
|
x="6100"
|
|
y="' . ($yConsult + 500) . '"
|
|
id="text5084"
|
|
xml:space="preserve"
|
|
style="font-size:400px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#999999;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"><tspan
|
|
x="6100"
|
|
y="' . ($yConsult + 500) . '"
|
|
id="tspan5086">' . $rdv['Minute'] . 'mn</tspan></text>
|
|
<g
|
|
id="g5224">
|
|
<text
|
|
x="2500"
|
|
y="' . ($yConsult + 270) . '"
|
|
id="text5072"
|
|
xml:space="preserve"
|
|
style="font-size:250px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"><tspan
|
|
x="2500"
|
|
y="' . ($yConsult + 270) . '"
|
|
id="tspan5074">' . $medecin['Prenom'] . '</tspan></text>
|
|
<text
|
|
x="3800"
|
|
y="' . ($yConsult + 270) . '"
|
|
id="text5186"
|
|
xml:space="preserve"
|
|
style="font-size:250px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"><tspan
|
|
x="3800"
|
|
y="' . ($yConsult + 270) . '"
|
|
id="tspan5188"
|
|
style="font-size:250;fill:#4d4d4d;fill-opacity:1">' . $medecin['Nom'] . '</tspan></text>
|
|
</g>
|
|
<g
|
|
id="g5230">
|
|
<text
|
|
x="2500"
|
|
y="' . ($yConsult + 600) . '"
|
|
id="text5080"
|
|
xml:space="preserve"
|
|
style="font-size:250px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"><tspan
|
|
x="2500"
|
|
y="' . ($yConsult + 600) . '"
|
|
id="tspan5082">' . $patient['Prenom'] . '</tspan></text>
|
|
<text
|
|
x="3800"
|
|
y="' . ($yConsult + 600) . '"
|
|
id="text5194"
|
|
xml:space="preserve"
|
|
style="font-size:250px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"><tspan
|
|
x="3800"
|
|
y="' . ($yConsult + 600) . '"
|
|
id="tspan5196">' . $patient['Nom'] . '</tspan></text>
|
|
</g>
|
|
</g>';
|
|
}
|
|
$svgCalendar .= '</g></g>';
|
|
|
|
}
|
|
|
|
//on met u fond (sinon on voit les consultation en arrière plan)
|
|
$svgCalendar .= '</g></g><g id="Calendar">';
|
|
$svgCalendar.='<rect
|
|
width="7700"
|
|
height="6000"
|
|
x="0"
|
|
y="0"
|
|
id="BackgroundCalendar"
|
|
style="fill:#fff";fill-opacity:1;stroke:none" />';
|
|
|
|
//position x;y de base des jours du calendrier
|
|
$x=1100*$days[date('D',$current)];
|
|
$y=0;
|
|
|
|
//initialisation de variables
|
|
$cal = [];
|
|
$week=[];
|
|
|
|
|
|
//obligé de séparer la génération des consultation et du calendrier pour organiser le svg
|
|
foreach(range(1,date('t',strtotime($params['mois']))) as $day){
|
|
//génération du svg du calendrier
|
|
$day = date('D',$current);
|
|
$day_nbr = date('d',$current);
|
|
$week[$days[$day]] = date('d',$current);
|
|
$current = strtotime("+1 day",$current);
|
|
if($y/1100 % 2 == 0){
|
|
if($days[$day] % 2 == 0){$color='f0f0f0';}else{$color='fff';}
|
|
$svgCalendar.='<rect
|
|
width="1000"
|
|
height="1000"
|
|
ry="90"
|
|
x="'.$x.'"
|
|
y="'.$y.'"
|
|
id="day_'.$days[$day].'"
|
|
style="fill:#'.$color.';fill-opacity:1;stroke:none" />';
|
|
}else{
|
|
if($days[$day] % 2 != 0){$color='f0f0f0';}else{$color='fff';}
|
|
$svgCalendar.='<rect
|
|
width="1000"
|
|
height="1000"
|
|
ry="90"
|
|
x="'.$x.'"
|
|
y="'.$y.'"
|
|
id="day_'.$days[$day].'"
|
|
style="fill:#'.$color.';fill-opacity:1;stroke:none" />';
|
|
}
|
|
$svgCalendar.='<text
|
|
x="'.($x-700).'"
|
|
y="'.(($y+1100)-700).'"
|
|
id="Textday_'.$days[$day].'"
|
|
xml:space="preserve"
|
|
style="font-size:400px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee"><tspan
|
|
x="'.($x+260).'"
|
|
y="'.($y+1100-470).'"
|
|
id="TextDay_'.$days[$day].'">'.$day_nbr.'</tspan></text>';
|
|
$x+=1100;
|
|
if($days[$day] == 6){
|
|
$i=0;
|
|
array_push($cal,$week);
|
|
$week = [];
|
|
$y+=1100;
|
|
$x=0;
|
|
}
|
|
}
|
|
$svgCalendar .= '</g>';
|
|
return $svgCalendar;
|
|
}
|
|
|
|
} |