diff --git a/src/ninebadge-1.0/src/Controller/RestController.php b/src/ninebadge-1.0/src/Controller/RestController.php index 6f07d95..44bd12c 100644 --- a/src/ninebadge-1.0/src/Controller/RestController.php +++ b/src/ninebadge-1.0/src/Controller/RestController.php @@ -130,6 +130,11 @@ class RestController extends AbstractFOSRestController $datenow=new \DateTime("now"); $datenow->setTime ( $datenow->format("H"), $datenow->format("i"), 0 ); + if(!$em->getRepository("App:Tallyday")->ctrlTallyday($user,$datenow)) { + $view = $this->view("Impossible d'entamer une journée sans avoir terminé les jours précédents", 404); + return $this->handleView($view); + } + // On recherche le dernier pointage de la journée $data = $em->getRepository("App:Tallyday")->findOneBy(["user"=>$user,"dateof"=>$datenow],["datestart"=>"DESC"]); @@ -228,6 +233,11 @@ class RestController extends AbstractFOSRestController } $datenow=new \DateTime("now"); $datenow->setTime ( $datenow->format("H"), $datenow->format("i"), 0 ); + + if(!$em->getRepository("App:Tallyday")->ctrlTallyday($user,$datenow)) { + $view = $this->view("Impossible d'entamer une journée sans avoir terminé les jours précédents", 404); + return $this->handleView($view); + } // On recherche le dernier pointage de la journée $data = $em->getRepository("App:Tallyday")->findOneBy(["user"=>$user,"dateof"=>$datenow],["datestart"=>"DESC"]); @@ -322,6 +332,11 @@ class RestController extends AbstractFOSRestController $datenow=new \DateTime("now"); $datenow->setTime ( $datenow->format("H"), $datenow->format("i"), 0 ); + if(!$em->getRepository("App:Tallyday")->ctrlTallyday($user,$datenow)) { + $view = $this->view("Impossible d'entamer une journée sans avoir terminé les jours précédents", 404); + return $this->handleView($view); + } + // On recherche le dernier pointage de la journée $data = $em->getRepository("App:Tallyday")->findOneBy(["user"=>$user,"dateof"=>$datenow],["datestart"=>"DESC"]); @@ -429,7 +444,12 @@ class RestController extends AbstractFOSRestController $view = $this->view("API Key inconnue", 403); return $this->handleView($view); } - + + if(!$em->getRepository("App:Tallyday")->ctrlTallyday($user,$start)) { + $view = $this->view("Impossible d'entamer une journée sans avoir terminé les jours précédents", 404); + return $this->handleView($view); + } + // Creation du timer $dateof=clone $start; $dateof->setTime(0,0); diff --git a/src/ninebadge-1.0/src/Controller/TallydayController.php b/src/ninebadge-1.0/src/Controller/TallydayController.php index 18e3aa8..429ef8b 100755 --- a/src/ninebadge-1.0/src/Controller/TallydayController.php +++ b/src/ninebadge-1.0/src/Controller/TallydayController.php @@ -844,6 +844,9 @@ class TallydayController extends AbstractController $datenow=new \DateTime("now"); $datenow->setTime ( $datenow->format("H"), $datenow->format("i"), 0 ); + + if(!$em->getRepository("App:Tallyday")->ctrlTallyday($this->getUser(),$datenow)) + return $this->redirectToRoute("app_tallyday",["message"=>"Impossible d'entamer une journée sans avoir terminé les jours précédents"]); $data = $em->getRepository($this->entity)->findOneBy(["user"=>$this->getUser(),"datestart"=>$datenow]); if(!$data) { @@ -874,6 +877,11 @@ class TallydayController extends AbstractController // On recherche le dernier pointage de la journée $datenow=new \DateTime("now"); $datenow->setTime ( $datenow->format("H"), $datenow->format("i"), 0 ); + + if(!$em->getRepository("App:Tallyday")->ctrlTallyday($this->getUser(),$datenow)) + return $this->redirectToRoute("app_tallyday",["message"=>"Impossible d'entamer une journée sans avoir terminé les jours précédents"]); + + // Recherche du créneau en cours $data = $em->getRepository($this->entity)->findOneBy(["user"=>$this->getUser(),"dateof"=>$datenow],["datestart"=>"DESC"]); // Pas normal = on devrait avoir au minimum un tally si on veut faire un pointage de fin @@ -957,6 +965,8 @@ class TallydayController extends AbstractController protected function getErrorForm($id,$form,$request,$data,$mode) { $em = $this->getDoctrine()->getManager(); + if(!$em->getRepository("App:Tallyday")->ctrlTallyday($data->getUser(),$data->getDateof())); + $form->addError(new FormError("Impossible d'entamer une journée sans avoir terminé les jours précédents")); if ($form->get('submit')->isClicked()) { // date début < date fin diff --git a/src/ninebadge-1.0/src/Repository/TallydayRepository.php b/src/ninebadge-1.0/src/Repository/TallydayRepository.php index 3b36458..3c99723 100644 --- a/src/ninebadge-1.0/src/Repository/TallydayRepository.php +++ b/src/ninebadge-1.0/src/Repository/TallydayRepository.php @@ -51,6 +51,19 @@ class TallydayRepository extends ServiceEntityRepository return $datas; } + public function ctrlTallyday($user,$dateof) { + // Controle que l'ensemble des tallyday précédent sont bien complet + $qb = $this->createQueryBuilder('tallydate') + ->Where('tallydate.user=:user') + ->andWhere('tallydate.dateof<:dateof') + ->andWhere('tallydate.datestart IS NOT NULL') + ->andWhere('tallydate.dateend IS NULL') + ->setParameter('user',$user) + ->setParameter('dateof',$dateof->format("Y-m-d 0:0:0")); + $datas = $qb->getQuery()->getResult(); + return !($datas); + } + public function getCapitaltimeinterval($user,$getnovalidate=false) { $datenow=new \DateTime('00:00'); $datas = $this->_em->getRepository('App:Tallyday')->findBy(["user"=>$user],["datestart"=>"DESC"]);