diff --git a/src/schedule-2.0/src/Controller/EventController.php b/src/schedule-2.0/src/Controller/EventController.php index 411ba35..79d153f 100755 --- a/src/schedule-2.0/src/Controller/EventController.php +++ b/src/schedule-2.0/src/Controller/EventController.php @@ -122,7 +122,7 @@ class EventController extends AbstractController if($am&&$ap) { $datestart->SetTime(0,0,0); $dateend->add(new \DateInterval('P1D')); - $dateend->SetTime(0,0,0); + $dateend->SetTime(0,0,-1); $duration=$dateend->diff($datestart)->d; $allday=true; } @@ -271,6 +271,8 @@ class EventController extends AbstractController $idevent = str_replace("A","",$request->request->get('idevent')); $iduser = $request->request->get('iduser'); $idtask = $request->request->get('idtask'); + $am = ($request->request->get('am')=="true"); + $ap = ($request->request->get('ap')=="true"); $fgastreinte = ($request->request->get('fgastreinte')=="true"); $description = $request->request->get('description'); @@ -327,17 +329,77 @@ class EventController extends AbstractController return new Response(json_encode($output)); } + $datestart=$event->getStart(); + $dateend =$event->getEnd(); + if($am&&$ap) { + $datestart->SetTime(0,0,0); + $dateend->add(new \DateInterval('P1D')); + $dateend->SetTime(0,0,-1); + $duration=$dateend->diff($datestart)->d; + $allday=true; + } + else { + $duration=0.5; + $allday=false; + if($am) { + $datestart->SetTime(9,0,0); + $dateend->SetTime(12,0,0); + } + else { + $datestart->SetTime(13,0,0); + $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') + ->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(); + dump($event->getId()); + if($events) { + $tbevent=[]; + foreach($events as $ev) { + + + if ($event->getId() != $ev->getId()) { + $tmp=[ + "id" => $ev->getId(), + "task" => $ev->getTask()->getName(), + "start" => $ev->getStart(), + "end" => $ev->getEnd(), + ]; + array_push($tbevent,$tmp); + } + } + 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)); + } + + } + + // Modification de l'évenement + $event->setStart($datestart); + $event->setEnd($dateend); $event->setDescription($description); + $event->setDuration($duration); + $event->setAllday($allday); $event->setUser($user); $event->setTask($task); - + $em->persist($event); $em->flush(); $output=$this->formatEvent($event); + dump($event); } - return new Response(json_encode($output)); } diff --git a/src/schedule-2.0/src/Entity/Event.php b/src/schedule-2.0/src/Entity/Event.php index eb026c2..97d7942 100644 --- a/src/schedule-2.0/src/Entity/Event.php +++ b/src/schedule-2.0/src/Entity/Event.php @@ -96,24 +96,24 @@ class Event public function getStart(): ?\DateTimeInterface { - return $this->start; + return clone $this->start; } public function setStart(\DateTimeInterface $start): self { - $this->start = $start; + $this->start = clone $start; return $this; } public function getEnd(): ?\DateTimeInterface { - return $this->end; + return clone $this->end; } public function setEnd(\DateTimeInterface $end): self { - $this->end = $end; + $this->end = clone $end; return $this; } diff --git a/src/schedule-2.0/templates/Event/list.html.twig b/src/schedule-2.0/templates/Event/list.html.twig index 8a87477..7d1de63 100644 --- a/src/schedule-2.0/templates/Event/list.html.twig +++ b/src/schedule-2.0/templates/Event/list.html.twig @@ -157,7 +157,6 @@ {% endif %} -