diff --git a/src/schedule-2.0/src/Controller/EventController.php b/src/schedule-2.0/src/Controller/EventController.php index 5e3e35c..b9a7c4f 100755 --- a/src/schedule-2.0/src/Controller/EventController.php +++ b/src/schedule-2.0/src/Controller/EventController.php @@ -174,7 +174,13 @@ class EventController extends AbstractController // Astreinte if($astreinte) { - // On regarde si une tache ne commence pas pendant une autre intervention ou qui se termine pendant une autre intervention ou qui a une intervention compris dans ses dates + // Une astreinte ne peut-etre un congès + if($task->getNature()->getIsvacation()) { + $output=["return"=>"KO","error"=>"Une astreinte ne peut être de nature congès","start"=>$datestart,"end"=>$dateend,"events"=>null]; + return new Response(json_encode($output)); + } + + // On regarde si une astreinte ne commence pas pendant une autre astreinte ou qui se termine pendant une autre astreinte ou qui a une astreinte compris dans ses dates $penaltys = $em->createQueryBuilder('penalty') ->select('penalty') ->from('App:Penalty','penalty') @@ -199,6 +205,42 @@ class EventController extends AbstractController return new Response(json_encode($output)); } + // On regarde si un évenement ne commence pas pendant un autre évenement ou qui se termine pendant un autre évenement ou qui a un évenement compris dans ses dates + $events = $em->createQueryBuilder('event') + ->select('event') + ->from('App:Event','event') + ->Where('event.user=:user AND event.start<=:start AND event.end >:start') + ->orWhere('event.user=:user AND event.start<:end AND event.end >=:end') + ->orWhere('event.user=:user AND event.start>:start AND event.end <:end') + ->setParameter('user',$iduser) + ->setParameter('start',$datestart) + ->setParameter('end',$dateend) + ->getQuery()->getResult(); + if($events) { + $tbevent=[]; + $validate=false; + $holiday=false; + foreach($events as $event) { + $tmp=[ + "id" => $event->getId(), + "start" => $event->getStart(), + "end" => $event->getEnd(), + ]; + array_push($tbevent,$tmp); + if($event->getValidate()) $validate=true; + if($event->getTask()->getNature()->getIsvacation()) $holiday=true; + } + + if($validate) { + $output=["return"=>"KO","error"=>"Cet intervant a sa semaine de validé","start"=>$datestart,"end"=>$dateend,"events"=>$tbevent]; + return new Response(json_encode($output)); + } + elseif($holiday) { + $output=["return"=>"KO","error"=>"Cet intervant a posé des congés sur cette période","start"=>$datestart,"end"=>$dateend,"events"=>$tbevent]; + return new Response(json_encode($output)); + } + } + // Création de l'astreinte $penalty = new Penalty(); $penalty->setStart($datestart); @@ -232,6 +274,8 @@ class EventController extends AbstractController ->getQuery()->getResult(); if($events) { $tbevent=[]; + $validate=false; + $holiday=false; foreach($events as $event) { $tmp=[ "id" => $event->getId(), @@ -239,9 +283,26 @@ class EventController extends AbstractController "end" => $event->getEnd(), ]; array_push($tbevent,$tmp); + if($event->getValidate()) $validate=true; + if($event->getTask()->getNature()->getIsvacation()) $holiday=true; } - $output=["return"=>"KO","error"=>"Cet intervant a déjà une tache à cette date","start"=>$datestart,"end"=>$dateend,"events"=>$tbevent]; - return new Response(json_encode($output)); + + if(!$this->isGranted('ROLE_ADMIN')&&!$this->isGranted('ROLE_MASTER')) { + $output=["return"=>"KO","error"=>"Cet intervant a déjà une tache à cette date","start"=>$datestart,"end"=>$dateend,"events"=>$tbevent]; + return new Response(json_encode($output)); + } + elseif($validate) { + $output=["return"=>"KO","error"=>"Cet intervant a sa semaine de validé","start"=>$datestart,"end"=>$dateend,"events"=>$tbevent]; + return new Response(json_encode($output)); + } + elseif($holiday) { + $output=["return"=>"KO","error"=>"Cet intervant a posé des congés sur cette période","start"=>$datestart,"end"=>$dateend,"events"=>$tbevent]; + return new Response(json_encode($output)); + } + elseif($task->getNature()->getIsvacation()) { + $output=["return"=>"KO","error"=>"Vous ne pouvez pas poser de congés à cette date, une intervention y est déjà plannifiée","start"=>$datestart,"end"=>$dateend,"events"=>null]; + return new Response(json_encode($output)); + } } // On regarde si un jour férié ne commence pas pendant une autre intervention ou qui se termine pendant une autre intervention ou qui a une intervention compris dans ses dates @@ -328,6 +389,12 @@ class EventController extends AbstractController // Astreinte if($fgastreinte) { + // Une astreinte ne peut-etre un congès + if($task->getNature()->getIsvacation()) { + $output=["return"=>"KO","error"=>"Une astreinte ne peut être de nature congès"]; + return new Response(json_encode($output)); + } + // Recherche de l'event $penalty = $em->getRepository("App:Penalty")->find($idevent); if(!$penalty) { @@ -394,6 +461,7 @@ class EventController extends AbstractController $dateend->SetTime(17,0,0); } } + // On regarde si une tache ne commence pas pendant une autre intervention ou qui se termine pendant une autre intervention ou qui a une intervention compris dans ses dates $events = $em->createQueryBuilder('event') ->select('event') @@ -407,6 +475,9 @@ class EventController extends AbstractController ->getQuery()->getResult(); if($events) { $tbevent=[]; + $validate=false; + $holiday=false; + foreach($events as $ev) { if ($event->getId() != $ev->getId()) { $tmp=[ @@ -416,11 +487,28 @@ class EventController extends AbstractController "end" => $ev->getEnd(), ]; array_push($tbevent,$tmp); + if($ev->getValidate()) $validate=true; + if($ev->getTask()->getNature()->getIsvacation()) $holiday=true; } } + if (sizeof($tbevent)>0) { - $output=["return"=>"KO","error"=>"Cet intervant a déjà une tache à cette date","start"=>$datestart,"end"=>$dateend,"events"=>$tbevent]; - return new Response(json_encode($output)); + if(!$this->isGranted('ROLE_ADMIN')&&!$this->isGranted('ROLE_MASTER')) { + $output=["return"=>"KO","error"=>"Cet intervant a déjà une tache à cette date","start"=>$datestart,"end"=>$dateend,"events"=>$tbevent]; + return new Response(json_encode($output)); + } + elseif($validate) { + $output=["return"=>"KO","error"=>"Cet intervant a sa semaine de validé","start"=>$datestart,"end"=>$dateend,"events"=>$tbevent]; + return new Response(json_encode($output)); + } + elseif($holiday) { + $output=["return"=>"KO","error"=>"Cet intervant a posé des congés sur cette période","start"=>$datestart,"end"=>$dateend,"events"=>$tbevent]; + return new Response(json_encode($output)); + } + elseif($task->getNature()->getIsvacation()) { + $output=["return"=>"KO","error"=>"Vous ne pouvez pas poser de congés à cette date, une intervention y est déjà plannifiée","start"=>$datestart,"end"=>$dateend,"events"=>null]; + return new Response(json_encode($output)); + } } } diff --git a/src/schedule-2.0/src/Controller/ReportController.php b/src/schedule-2.0/src/Controller/ReportController.php index 162403c..c20cd7a 100755 --- a/src/schedule-2.0/src/Controller/ReportController.php +++ b/src/schedule-2.0/src/Controller/ReportController.php @@ -53,15 +53,7 @@ class ReportController extends AbstractController $tmp["events"][$idday] = [ "date"=>clone $start, - "allday"=>false, - "colorday"=>"", - "descriptionday"=>"", - "am"=>false, - "coloram"=>"", - "descriptionam"=>"", - "ap"=>false, - "colorap"=>"", - "descriptionap"=>"", + "events"=>[], "astreinte"=>false, "colorastreinte"=>"", "descriptionastreinte"=>"", @@ -99,22 +91,16 @@ class ReportController extends AbstractController while($st<$event->getEnd()) { $idday=$st->format("Ymd"); if($event->getAllday()) { - $tmp["events"][$idday]["allday"]=true; - $tmp["events"][$idday]["colorday"]=$event->getTask()->getColor(); - $tmp["events"][$idday]["descriptionday"]=strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription(); + $tmp["events"][$idday]["events"][$event->getId()]=["allday"=>true,"colorday"=>$event->getTask()->getColor(),"descriptionday"=>strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription()]; } else { // Matin ou après-midi ? $time=$event->getStart()->format("H"); if($time==9) { - $tmp["events"][$idday]["am"]=true; - $tmp["events"][$idday]["coloram"]=$event->getTask()->getColor(); - $tmp["events"][$idday]["descriptionam"]=strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription(); + $tmp["events"][$idday]["events"][$event->getId()]=["allday"=>false,"am"=>true,"ap"=>false,"coloram"=>$event->getTask()->getColor(),"descriptionam"=>strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription()]; } else { - $tmp["events"][$idday]["ap"]=true; - $tmp["events"][$idday]["colorap"]=$event->getTask()->getColor(); - $tmp["events"][$idday]["descriptionap"]=strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription(); + $tmp["events"][$idday]["events"][$event->getId()]=["allday"=>false,"am"=>false,"ap"=>true,"colorap"=>$event->getTask()->getColor(),"descriptionap"=>strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription()]; } } diff --git a/src/schedule-2.0/src/Controller/ValidationController.php b/src/schedule-2.0/src/Controller/ValidationController.php index 72c9446..30d3537 100755 --- a/src/schedule-2.0/src/Controller/ValidationController.php +++ b/src/schedule-2.0/src/Controller/ValidationController.php @@ -101,16 +101,7 @@ class ValidationController extends AbstractController $tmp["events"][$idday] = [ "date"=>clone $start, - "allday"=>false, - "colorday"=>"", - "descriptionday"=>"", - "am"=>false, - "coloram"=>"", - "descriptionam"=>"", - "ap"=>false, - "colorap"=>"", - "descriptionap"=>"", - "validate"=>$validate, + "events"=>[], "astreinte"=>false, "colorastreinte"=>"", "descriptionastreinte"=>"", @@ -138,22 +129,16 @@ class ValidationController extends AbstractController while($st<$event->getEnd()) { $idday=$st->format("Ymd"); if($event->getAllday()) { - $tmp["events"][$idday]["allday"]=true; - $tmp["events"][$idday]["colorday"]=$event->getTask()->getColor(); - $tmp["events"][$idday]["descriptionday"]=strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription(); - } + $tmp["events"][$idday]["events"][$event->getId()]=["allday"=>true,"colorday"=>$event->getTask()->getColor(),"descriptionday"=>strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription(),"validate"=>$event->getValidate()]; + } else { // Matin ou après-midi ? $time=$event->getStart()->format("H"); if($time==9) { - $tmp["events"][$idday]["am"]=true; - $tmp["events"][$idday]["coloram"]=$event->getTask()->getColor(); - $tmp["events"][$idday]["descriptionam"]=strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription(); + $tmp["events"][$idday]["events"][$event->getId()]=["allday"=>false,"am"=>true,"ap"=>false,"coloram"=>$event->getTask()->getColor(),"descriptionam"=>strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription(),"validate"=>$event->getValidate()]; } else { - $tmp["events"][$idday]["ap"]=true; - $tmp["events"][$idday]["colorap"]=$event->getTask()->getColor(); - $tmp["events"][$idday]["descriptionap"]=strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription(); + $tmp["events"][$idday]["events"][$event->getId()]=["allday"=>false,"am"=>false,"ap"=>true,"colorap"=>$event->getTask()->getColor(),"descriptionap"=>strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription(),"validate"=>$event->getValidate()]; } } @@ -295,7 +280,7 @@ class ValidationController extends AbstractController } } - if($duration!= 5) { + if($duration< 5) { $output=["return"=>"KO","error"=>"Validation impossible = semaine incomplète"]; return new Response(json_encode($output)); } diff --git a/src/schedule-2.0/templates/Report/synthese.html.twig b/src/schedule-2.0/templates/Report/synthese.html.twig index f758afe..ccbc782 100644 --- a/src/schedule-2.0/templates/Report/synthese.html.twig +++ b/src/schedule-2.0/templates/Report/synthese.html.twig @@ -34,14 +34,16 @@ font-size: 12px; float:left; width:100%; - height: 18px; + height: 18px; + flex: 0 0 auto; } .am, .ap { font-size: 12px; float:left; width:50%; - height: 18px; + height: 18px; + flex: 0 0 auto; } .astreinte { @@ -83,27 +85,30 @@ {% endif %}