From 8b0c3e95b4a297b9019e56abe5c1f6637f286f41 Mon Sep 17 00:00:00 2001 From: afornerot Date: Mon, 14 Feb 2022 13:41:30 +0100 Subject: [PATCH] svg --- src/ninebadge-1.0/config/routes.yaml | 4 + .../src/Command/BreakdayCommand.php | 99 ++++++++- .../src/Command/CronInitCommand.php | 19 ++ .../src/Controller/TallydayController.php | 197 ++++++++++++++---- .../src/Repository/TallydayRepository.php | 58 +++++- .../templates/Tallyday/master.html.twig | 20 +- .../templates/Tallyday/month.html.twig | 170 +++++++++++++++ .../templates/Tallyday/tallyday.html.twig | 22 +- 8 files changed, 530 insertions(+), 59 deletions(-) create mode 100644 src/ninebadge-1.0/templates/Tallyday/month.html.twig diff --git a/src/ninebadge-1.0/config/routes.yaml b/src/ninebadge-1.0/config/routes.yaml index b4d31f3..5d40836 100644 --- a/src/ninebadge-1.0/config/routes.yaml +++ b/src/ninebadge-1.0/config/routes.yaml @@ -233,6 +233,10 @@ app_tallyday_masterdevalidate: path: /master/devalidate/{{userid}}/{{weekday}} defaults: { _controller: App\Controller\TallydayController:masterdevalidate } +app_tallyday_mastermonth: + path: /master/month/{monthof} + defaults: { _controller: App\Controller\TallydayController:mastermonth } + app_tallyday_masterexport: path: /master/export defaults: { _controller: App\Controller\TallydayController:masterexport } \ No newline at end of file diff --git a/src/ninebadge-1.0/src/Command/BreakdayCommand.php b/src/ninebadge-1.0/src/Command/BreakdayCommand.php index 0c3bed3..8ea375c 100644 --- a/src/ninebadge-1.0/src/Command/BreakdayCommand.php +++ b/src/ninebadge-1.0/src/Command/BreakdayCommand.php @@ -95,8 +95,8 @@ class BreakdayCommand extends Command while($start<=$end) { $havebreakday=false; foreach($response->body->events as $event) { - $manip=clone $start; if($event->eventallday) { + $manip=clone $start; $manip->setTime(8,0); if(new \Datetime($event->eventstart)<=$manip && $manip < new \Datetime($event->eventend) ) { $this->writeln($start->format("d/m/Y")." >> tallybreakday full day"); @@ -113,7 +113,7 @@ class BreakdayCommand extends Command // Les breakday am sont supprimés $manip=clone $start; - $manip->setTime(9,0); + $manip->setTime(8,30); $tallydays=$this->em->getRepository("App:Tallyday")->findBy(["user"=>$user,"dateof"=>$start,"datestart"=>$manip,"isbreakday"=>true]); foreach($tallydays as $tallyday) { $this->em->remove($tallyday); @@ -154,7 +154,102 @@ class BreakdayCommand extends Command } } else { + $manip=clone $start; + $manip->setTime(10,0); + if(new \Datetime($event->eventstart)<=$manip && $manip < new \Datetime($event->eventend) ) { + $this->writeln($start->format("d/m/Y")." >> tallybreakday AM"); + // On s'assure que la journée n'a pas été validé master + $tallyday=$this->em->getRepository("App:Tallyday")->findOneBy(["user"=>$user,"dateof"=>$start,"validatemaster"=>true]); + if(!$tallyday) { + // Les pointages du matin qui ne sont des congès sont supprimés + $tallydays=$this->em->getRepository("App:Tallyday")->findAM($user,$start,false); + foreach($tallydays as $tallyday) { + $this->em->remove($tallyday); + $this->em->flush(); + } + // Les breakday fullday sont supprimés + $manip=clone $start; + $manip->setTime(10,0); + $tallydays=$this->em->getRepository("App:Tallyday")->findBy(["user"=>$user,"dateof"=>$start,"datestart"=>$manip,"isbreakday"=>true]); + foreach($tallydays as $tallyday) { + $this->em->remove($tallyday); + $this->em->flush(); + } + + // Le breakday est généré s'il n'existe pas + $manip=clone $start; + $manip->setTime(8,30); + $tallyday=$this->em->getRepository("App:Tallyday")->findOneBy(["user"=>$user,"dateof"=>$start,"datestart"=>$manip,"isbreakday"=>true]); + if(!$tallyday) { + $data = new Tallyday(); + $data->setDateof($start); + $data->setUser($user); + $data->setValidateuser(false); + $data->setValidatemaster(false); + $data->setIsbreakday(true); + $data->setName("AM = ".$event->taskname); + $data->setDatestart(clone $manip); + + $manip->add(new \DateInterval("PT3H")); + $manip->add(new \DateInterval("PT30M")); + $data->setDateend(clone $manip); + $this->em->persist($data); + $this->em->flush(); + } + + $havebreakday=true; + } + } + else { + $manip=clone $start; + $manip->setTime(15,0); + if(new \Datetime($event->eventstart)<=$manip && $manip < new \Datetime($event->eventend) ) { + $this->writeln($start->format("d/m/Y")." >> tallybreakday PM"); + // On s'assure que la journée n'a pas été validé master + $tallyday=$this->em->getRepository("App:Tallyday")->findOneBy(["user"=>$user,"dateof"=>$start,"validatemaster"=>true]); + if(!$tallyday) { + // Les pointages de l'aprés midi qui ne sont des congès sont supprimés + $tallydays=$this->em->getRepository("App:Tallyday")->findPM($user,$start,false); + foreach($tallydays as $tallyday) { + $this->em->remove($tallyday); + $this->em->flush(); + } + + // Les breakday fullday sont supprimés + $manip=clone $start; + $manip->setTime(10,0); + $tallydays=$this->em->getRepository("App:Tallyday")->findBy(["user"=>$user,"dateof"=>$start,"datestart"=>$manip,"isbreakday"=>true]); + foreach($tallydays as $tallyday) { + $this->em->remove($tallyday); + $this->em->flush(); + } + + // Le breakday est généré s'il n'existe pas + $manip=clone $start; + $manip->setTime(13,30); + $tallyday=$this->em->getRepository("App:Tallyday")->findOneBy(["user"=>$user,"dateof"=>$start,"datestart"=>$manip,"isbreakday"=>true]); + if(!$tallyday) { + $data = new Tallyday(); + $data->setDateof($start); + $data->setUser($user); + $data->setValidateuser(false); + $data->setValidatemaster(false); + $data->setIsbreakday(true); + $data->setName("PM = ".$event->taskname); + $data->setDatestart(clone $manip); + + $manip->add(new \DateInterval("PT3H")); + $manip->add(new \DateInterval("PT30M")); + $data->setDateend(clone $manip); + $this->em->persist($data); + $this->em->flush(); + } + + $havebreakday=true; + } + } + } } } diff --git a/src/ninebadge-1.0/src/Command/CronInitCommand.php b/src/ninebadge-1.0/src/Command/CronInitCommand.php index 1eb283c..1827a0b 100644 --- a/src/ninebadge-1.0/src/Command/CronInitCommand.php +++ b/src/ninebadge-1.0/src/Command/CronInitCommand.php @@ -78,6 +78,24 @@ class CronInitCommand extends Command $this->em->persist($entity); } + // Job Breakday + // Toute les heures + $entity = $this->em->getRepository('App:Cron')->findOneBy(["command"=>"app:Breakday"]); + if(!$entity) { + $entity = new Cron; + $nextdate=$entity->getSubmitdate(); + $nextdate->setTime($nextdate->format("H"),0); + + $entity->setCommand("app:Breakday"); + $entity->setDescription("Récupération des Breakdays de Schedule"); + $entity->setStatut(2); + $entity->setRepeatcall(0); + $entity->setRepeatexec(0); + $entity->setRepeatinterval(3600); + $entity->setNextexecdate($entity->getSubmitdate()); + $this->em->persist($entity); + } + // Job de purge des fichiers obsolète // Toute les 24h à 3h00 $entity = $this->em->getRepository('App:Cron')->findOneBy(["command"=>"app:purgeFile"]); @@ -85,6 +103,7 @@ class CronInitCommand extends Command $entity = new Cron; $nextdate=$entity->getSubmitdate(); $nextdate->setTime(3,0); + $entity->setCommand("app:purgeFile"); $entity->setDescription("Suppression des fichiers obsolètes"); $entity->setStatut(2); diff --git a/src/ninebadge-1.0/src/Controller/TallydayController.php b/src/ninebadge-1.0/src/Controller/TallydayController.php index e05b466..79dee92 100755 --- a/src/ninebadge-1.0/src/Controller/TallydayController.php +++ b/src/ninebadge-1.0/src/Controller/TallydayController.php @@ -7,6 +7,11 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Form\FormError; use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpKernel\KernelInterface; +use Symfony\Component\Filesystem\Filesystem; +use Symfony\Component\HttpFoundation\BinaryFileResponse; +use Symfony\Component\HttpFoundation\ResponseHeaderBag; + use App\Entity\Tallyday as Entity; use App\Form\TallydayType as Form; @@ -16,13 +21,22 @@ class TallydayController extends AbstractController private $route = "app_tallyday"; private $render = "Tallyday/"; private $entity = "App:Tallyday"; + + private $appKernel; + private $knpSnappy; + + public function __construct(KernelInterface $appKernel,\Knp\Snappy\Pdf $knpSnappy) + { + $this->appKernel = $appKernel; + $this->knpSnappy = $knpSnappy; + } public function tallyday(Request $request) { $datenow=new \DateTime(); $em = $this->getDoctrine()->getManager(); $datas = $em->getRepository($this->entity)->findTallyday($this->getUser(),$datenow); - + // Calcul du temps de la journée $e = new \DateTime('00:00'); $f = clone $e; @@ -40,7 +54,7 @@ class TallydayController extends AbstractController "maxwidth" => true, $this->data."s" => $datas, "timeday" => $timeday, - "capitaltime" => $em->getRepository("App:Tallyday")->getCapitaltime(["user"=>$this->getUser()]), + "capitaltime" => $em->getRepository("App:Tallyday")->getCapitaltime($this->getUser()), "message" => $request->get("message"), ]); } @@ -110,7 +124,7 @@ class TallydayController extends AbstractController "weekprev" => $weekprev, "timeweek" => $timeweek, "firstvalidate" => $firstvalidate, - "capitaltime" => $em->getRepository("App:Tallyday")->getCapitaltime(["user"=>$this->getUser()]), + "capitaltime" => $em->getRepository("App:Tallyday")->getCapitaltime($this->getUser()), "message" => $request->get("message"), ]); } @@ -127,7 +141,7 @@ class TallydayController extends AbstractController "id"=>$user->getId(), "avatar"=>$user->getAvatar(), "displayname"=>$user->getDisplayname(), - "capitaltime"=>$em->getRepository("App:Tallyday")->getCapitaltime(["user"=>$user]), + "capitaltime"=>$em->getRepository("App:Tallyday")->getCapitaltime($user), "validates"=>[], "notvalidates"=>[], ]; @@ -532,7 +546,7 @@ class TallydayController extends AbstractController // Pas normal if(!$user) return $this->redirectToRoute("app_tallyday_masterlist"); - + // Premiere passe de controle $datenow=new \DateTime($weekday); $dateend=clone $datenow; @@ -544,7 +558,7 @@ class TallydayController extends AbstractController // Si aucun enregistrement on initialise le pointage sur la journée à vide if(!$datas) { $data = new Entity(); - $data->setUser($this->getUser()); + $data->setUser($user); $data->setDateof($datenow); $data->setValidateuser(false); @@ -665,6 +679,147 @@ class TallydayController extends AbstractController return $this->redirectToRoute("app_tallyday_masterlist"); } + public function mastermonth($monthof, Request $request) { + // Pour l'ensemble des utlisateurs + $em = $this->getDoctrine()->getManager(); + $users = $em->getRepository("App:User")->findBy([],["firstname"=>"ASC","lastname"=>"ASC"]); + $dates=[]; + + foreach($users as $user) { + if($user->hasRole("ROLE_USER")) { + $dates[$user->getId()] = [ + "id"=>$user->getId(), + "avatar"=>$user->getAvatar(), + "displayname"=>$user->getDisplayname(), + "timemonth"=>"00:00", + "validates"=>[], + ]; + + $datenow=new \DateTime($monthof."01"); + $dateend=clone $datenow; + $dateend->modify("last day of this month"); + + $nextmonth=clone $datenow; + $nextmonth->modify("first day of next month"); + + $prevmonth=clone $datenow; + $prevmonth->modify("first day of previous month"); + + $emonth = new \DateTime('00:00'); + $fmonth = clone $emonth; + + while($datenow<=$dateend) { + $eday = new \DateTime('00:00'); + $fday = clone $eday; + + $datas = $em->getRepository($this->entity)->findTallyday($user,$datenow); + foreach($datas as $data) { + $emonth->add($data->getTimeday()); + $eday->add($data->getTimeday()); + } + + $interval = $fday->diff($eday); + $timeday = (($interval->days*24) + $interval->h).":".sprintf("%02s",$interval->i); + + array_push($dates[$user->getId()]["validates"],[ + "dateof"=>clone $datenow, + "timeday"=>$timeday, + "tallydays"=>$datas + ]); + + $datenow->add(new \DateInterval('P1D')); + } + + $interval = $fmonth->diff($emonth); + $timeweek = (($interval->days*24) + $interval->h).":".sprintf("%02s",$interval->i); + $dates[$user->getId()]["timemonth"]=$timeweek; + } + } + + if($request->get('type')=="pdf") { + $rootdir = $this->appKernel->getProjectDir()."/uploads"; + $filename="Rapport-".$dateend->format("Ym").".pdf"; + $fileloc=$rootdir."/".$filename; + + $fs = new Filesystem(); + $fs->remove(array($fileloc)); + + $render = $this->renderView('Tallyday/month.html.twig',[ + "useheader" => false, + "usesidebar" => false, + "usemonocolor" => false, + "maxwidth" => false, + "monthof" => $dateend, + "nextmonth" => $nextmonth->format("Ym"), + "prevmonth" => $prevmonth->format("Ym"), + "dates" => $dates, + "fgprint" => true, + "message" => $request->get("message"), + ]); + + $appWeburl=$this->getParameter("appWeburl"); + $appAlias=$this->getParameter("appAlias"); + + $render=str_replace("/$appAlias/","https://$appWeburl/$appAlias/",$render); + //dump($render); + + $this->knpSnappy->generateFromHtml($render,$fileloc); + return $this->file($fileloc); + } + else { + return $this->render('Tallyday/month.html.twig',[ + "useheader" => true, + "usesidebar" => false, + "usemonocolor" => false, + "maxwidth" => false, + "monthof" => $dateend, + "nextmonth" => $nextmonth->format("Ym"), + "prevmonth" => $prevmonth->format("Ym"), + "dates" => $dates, + "fgprint" => false, + "message" => $request->get("message"), + ]); + } + } + + public function masterexport() { + $em = $this->getDoctrine()->getManager(); + $rootdir = $this->appKernel->getProjectDir()."/uploads"; + + $dateof=new \DateTime(); + $filename="Export-".$dateof->format("Ymd").".csv"; + + $fs = new Filesystem(); + $fs->mkdir($rootdir); + $csvh = fopen($rootdir."/".$filename, 'w'); + $d = ';'; // this is the default but i like to be explicit + $e = '"'; // this is the default but i like to be explicit + + $csvh = fopen($rootdir."/".$filename, 'w'); + + $csv=["Utilisateur",utf8_decode("Début"),"Fin","Temps",utf8_decode("Libellé")]; + fputcsv($csvh, $csv, $d, $e); + + $datas = $em->getRepository($this->entity)->findBy([],["user"=>"ASC","dateof"=>"ASC"]); + foreach($datas as $data) { + if($data->getDatestart() || $data->getDateend()) { + $csv=[ + utf8_decode($data->getUser()->getDisplayname()), + $data->getDatestart()->format("d/m/Y H:i"), + ($data->getDateend()?$data->getDateend()->format("d/m/Y H:i"):""), + $data->getTimedayformatted(), + utf8_decode(($data->getName()?$data->getName():"")) + + ]; + fputcsv($csvh, $csv, $d, $e); + } + } + + $response = new BinaryFileResponse($rootdir."/".$filename); + $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT); + return $response; + } + public function start() { $em = $this->getDoctrine()->getManager(); @@ -723,37 +878,7 @@ class TallydayController extends AbstractController return $this->redirectToRoute("app_tallyday"); } - public function startpm() { - $em = $this->getDoctrine()->getManager(); - $data = $em->getRepository($this->entity)->findTallyday($this->getUser(),new \DateTime("now")); - // Pas normal - if(!$data) - return $this->redirectToRoute("app_tallyday"); - - $datenow=new \DateTime("now"); - $datenow->setTime ( $datenow->format("H"), $datenow->format("i"), 0 ); - $data->setDatestartpm($datenow); - $em->persist($data); - $em->flush(); - return $this->redirectToRoute("app_tallyday"); - } - - public function endpm() { - $em = $this->getDoctrine()->getManager(); - $data = $em->getRepository($this->entity)->findTallyday($this->getUser(),new \DateTime("now")); - - // Pas normal - if(!$data) - return $this->redirectToRoute("app_tallyday"); - - $datenow=new \DateTime("now"); - $datenow->setTime ( $datenow->format("H"), $datenow->format("i"), 0 ); - $data->setDateendpm($datenow); - $em->persist($data); - $em->flush(); - return $this->redirectToRoute("app_tallyday"); - } protected function getErrorForm($id,$form,$request,$data,$mode) { $em = $this->getDoctrine()->getManager(); diff --git a/src/ninebadge-1.0/src/Repository/TallydayRepository.php b/src/ninebadge-1.0/src/Repository/TallydayRepository.php index 7a93b07..fdf9756 100644 --- a/src/ninebadge-1.0/src/Repository/TallydayRepository.php +++ b/src/ninebadge-1.0/src/Repository/TallydayRepository.php @@ -51,30 +51,31 @@ class TallydayRepository extends ServiceEntityRepository return $datas; } - public function getCapitaltime($user) { + public function getCapitaltime($user,$monthof=null) { $datenow=new \DateTime('00:00'); $datas = $this->_em->getRepository('App:Tallyday')->findBy(["user"=>$user],["datestart"=>"DESC"]); $tbweek=[]; $ework = new \DateTime('00:00'); - + $idweeknow=$datenow->format("Y").$datenow->format("W"); $lastdayvalidate=false; + foreach($datas as $data) { if($data->getDateof()<$datenow) { - $idweek=strval($data->getDateof()->format("Y"))."-".strval($data->getDateof()->format("W")); - if(!in_array($idweek,$tbweek)) array_push($tbweek,$idweek); + $idweek=$data->getDateof()->format("Y").$data->getDateof()->format("W"); + if(!in_array($idweek,$tbweek)&&$idweek!=$idweeknow) array_push($tbweek,$idweek); $ework->add($data->getTimeday()); } if($data->getDateof()==$datenow&&($data->getValidateuser()||$data->getValidatemaster())) { $lastdayvalidate=true; - $idweek=strval($data->getDateof()->format("Y"))."-".strval($data->getDateof()->format("W")); - if(!in_array($idweek,$tbweek)) array_push($tbweek,$idweek); + $idweek=$data->getDateof()->format("Y").$data->getDateof()->format("W"); + if(!in_array($idweek,$tbweek)&&$idweek!=$idweeknow) array_push($tbweek,$idweek); $ework->add($data->getTimeday()); } } // Nbday worked - $nbdaywork=(count($tbweek)-1)*5; + $nbdaywork=count($tbweek)*5; if($datenow->format("w")==6||$datenow->format("w")==7) $nbdaywork+=5; else { @@ -162,4 +163,47 @@ class TallydayRepository extends ServiceEntityRepository return true; } + public function findAM($user,$dateof,$isbreakday) { + $start=clone $dateof; + $start->setTime(8,30); + + $end=clone $dateof; + $end->setTime(12,00); + + $datas = $this->createQueryBuilder('tallydate') + ->Where('tallydate.user=:user') + ->andWhere('tallydate.dateof=:day') + ->andWhere('(tallydate.datestart<=:start AND :start<=tallydate.dateend)OR(tallydate.datestart>=:start AND tallydate.datestart<=:end) OR (tallydate.dateend>=:start AND tallydate.dateend<=:end)') + ->andWhere('tallydate.isbreakday=:isbreakday') + ->setParameter('user',$user) + ->setParameter('isbreakday',$isbreakday) + ->setParameter('day',$dateof->format("Y-m-d H:i:s")) + ->setParameter('start',$start->format("Y-m-d H:i:s")) + ->setParameter('end',$end->format("Y-m-d H:i:s")) + ->getQuery()->getResult(); + + return $datas; + } + + public function findPM($user,$dateof,$isbreakday) { + $start=clone $dateof; + $start->setTime(13,30); + + $end=clone $dateof; + $end->setTime(17,00); + + $datas = $this->createQueryBuilder('tallydate') + ->Where('tallydate.user=:user') + ->andWhere('tallydate.dateof=:day') + ->andWhere('(tallydate.datestart<=:start AND :start<=tallydate.dateend)OR(tallydate.datestart>=:start AND tallydate.datestart<=:end) OR (tallydate.dateend>=:start AND tallydate.dateend<=:end)') + ->andWhere('tallydate.isbreakday=:isbreakday') + ->setParameter('user',$user) + ->setParameter('isbreakday',$isbreakday) + ->setParameter('day',$dateof->format("Y-m-d H:i:s")) + ->setParameter('start',$start->format("Y-m-d H:i:s")) + ->setParameter('end',$end->format("Y-m-d H:i:s")) + ->getQuery()->getResult(); + + return $datas; + } } diff --git a/src/ninebadge-1.0/templates/Tallyday/master.html.twig b/src/ninebadge-1.0/templates/Tallyday/master.html.twig index fa75626..b1eb211 100644 --- a/src/ninebadge-1.0/templates/Tallyday/master.html.twig +++ b/src/ninebadge-1.0/templates/Tallyday/master.html.twig @@ -6,14 +6,14 @@ th, td { color: #ffffff; background-color: #37474F; text-align: center; - width: 85px; + width: 100px; } td { background-color: #e8ecf1; height: 44px; vertical-align: top; - font-size: 9px; + font-size: 12px; color: var(--colorftbodylight); } @@ -35,6 +35,7 @@ td { Retour Export CSV + Rapport Mensuel {% if message is defined and not message is empty %}
Erreur
@@ -42,7 +43,7 @@ td {
{% endif %} -
+
{% for date in dates %} {% if date.validates or date.notvalidates %}
@@ -56,7 +57,7 @@ td { - s + s L M M @@ -83,8 +84,15 @@ td {
{{validate.dateof|date("d/m")}}
{% for tallyday in validate.tallydays %} - {%if tallyday.datestart %} de {{tallyday.datestart|date("H:i") }} {% endif %} - {%if tallyday.dateend %} à {{tallyday.dateend|date("H:i") }} {% endif %} + {% if tallyday.isbreakday %} + {% if tallyday.datestart|date("H")==10 %} + {% set breakdayall=true %} + {% endif %} + {{tallyday.name}} + {% else %} + {%if tallyday.datestart %} de {{tallyday.datestart|date("H:i") }} {% endif %} + {%if tallyday.dateend %} à {{tallyday.dateend|date("H:i") }} {% endif %} + {%endif%}
{% endfor %}
diff --git a/src/ninebadge-1.0/templates/Tallyday/month.html.twig b/src/ninebadge-1.0/templates/Tallyday/month.html.twig new file mode 100644 index 0000000..b418461 --- /dev/null +++ b/src/ninebadge-1.0/templates/Tallyday/month.html.twig @@ -0,0 +1,170 @@ +{% extends "base.html.twig" %} + +{% block localstyle %} +th, td { + border: 1px solid #37474F; + color: #ffffff; + background-color: #37474F; + text-align: center; + width: 100px; + padding: 0px; +} + +td { + background-color: #e8ecf1; + height: 44px; + vertical-align: top; + font-size: 12px; + color: var(--colorftbodylight); + {% if fgprint %}color:#000000 !important;{%endif%} +} + +{% if fgprint %} + .card {float: none !important; } + .card, .card-header {border: none;} + .breakpage { + page-break-after: always; + } +{% endif %} + +.date { + color: #ffffff; + background-color: #37474F; +} + +.nounderline:hover { + text-decoration:none; +} + +{% endblock %} + +{% block body %} +

+ RAPPORT MENSUEL = {{ monthof|date("m/Y") }} +

+ + {% if not fgprint %} + Retour + Mois Précédent + Mois Suivant + Export PDF + + Export CSV + Gestion des Pointages + {% if message is defined and not message is empty %} +
+ Erreur
+ {{ message|raw }}
+
+ {% endif %} + {% endif %} + + +
+ {% set nbusers=0 %} + {% for date in dates %} + {% if date.validates %} + {% set nbusers=nbusers+1 %} + +
+
+ {{ date.displayname }} +
+ +
+ + + + + + + + + + + + + + + + {% for validate in date.validates %} + {% if loop.first or validate.dateof|date("l")=="Monday" %} + + {% if loop.first %} + {% set style = "" %} + {% else %} + {% set style = "display:none;" %} + {% endif %} + + + + {% if loop.first %} + {% for i in 2..(validate.dateof|date("N")) %} + + {% endfor %} + {%endif %} + {% endif %} + + + + {% if loop.last or validate.dateof|date("l")=="Sunday"%} + + {% endif %} + {% endfor %} + +
sLMMJVSD
+ {{validate.dateof|date("W")}} + +
{{validate.dateof|date("d/m")}}
+
+ {% for tallyday in validate.tallydays %} + {% if tallyday.isbreakday %} + {% if tallyday.datestart|date("H")==10 %} + {% set breakdayall=true %} + {% endif %} + {{tallyday.name}} + {% else %} + {%if tallyday.datestart %} de {{tallyday.datestart|date("H:i") }} {% endif %} + {%if tallyday.dateend %} à {{tallyday.dateend|date("H:i") }} {% endif %} + {%endif%} +
+ {% endfor %} +
+ +
+ = {{validate.timeday}} +
+
+
+
+ + + {% if nbusers==2 %} + {% set nbusers=0 %} + {% endif %} + {% endif %} + {% endfor %} +
+{% endblock %} + +{% block localjavascript %} + $(document).ready(function() { + $('#dataTables').DataTable({ + columnDefs: [ { "targets": "no-sort", "orderable": false }, { "targets": "no-string", "type" : "num" } ], + responsive: true, + iDisplayLength: 100, + paging: false, + ordering: false, + info: false, + searching: false, + }); + + maxheight=0; + $( ".card" ).each(function( index ) { + if($(this).height()>maxheight) + maxheight=$(this).height(); + }); + $( ".card" ).height(maxheight); + }); + +{% endblock %} \ No newline at end of file diff --git a/src/ninebadge-1.0/templates/Tallyday/tallyday.html.twig b/src/ninebadge-1.0/templates/Tallyday/tallyday.html.twig index bde654a..d1b7a33 100644 --- a/src/ninebadge-1.0/templates/Tallyday/tallyday.html.twig +++ b/src/ninebadge-1.0/templates/Tallyday/tallyday.html.twig @@ -63,8 +63,9 @@ {% if not isvalideuser and not isvalidemaster %} Début Pointage {% endif %} - {% else %} - Fin Pointage + {% elseif not isvalideuser and not isvalidemaster %} + Fin Pointage + {% endif %}
@@ -84,12 +85,17 @@ {% for tallyday in tallydays %} {% set isvalideuser=tallyday.validateuser %} {% set isvalidemaster=tallyday.validatemaster %} - - - {{tallyday.datestart|date("H:i")}} - {% if tallyday.dateend %} {{tallyday.dateend|date("H:i")}} {%endif%} - {{tallyday.timedayformatted}} - + {% if tallyday.datestart %} + + {% if tallyday.isbreakday %} + {{tallyday.name}} + {% else %} + {{tallyday.datestart|date("H:i")}} + {% if tallyday.dateend %} {{tallyday.dateend|date("H:i")}} {%endif%} + {% endif %} + {{tallyday.timedayformatted}} + + {% endif %} {% endfor %}