ne pas pouvoir commencer une journée tant que les précédentes ne sont pas terminées (fixes #9)

This commit is contained in:
afornerot 2022-05-16 15:17:59 +02:00
parent 4ec5dceb14
commit d8df23bc5d
3 changed files with 44 additions and 1 deletions

View File

@ -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);

View File

@ -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

View File

@ -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"]);