From fc4160865a20bbed7cb04363ed50381363cbad0e Mon Sep 17 00:00:00 2001 From: afornerot Date: Tue, 29 Mar 2022 09:34:25 +0200 Subject: [PATCH] =?UTF-8?q?correctif=20sur=20le=20calcul=20du=20capital=20?= =?UTF-8?q?les=20weekend=20et=20dans=20la=20journ=C3=A9e=20meme=20(ref=20#?= =?UTF-8?q?6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Controller/TallydayController.php | 12 +++--- src/ninebadge-1.0/src/Entity/Tallyday.php | 2 +- .../src/Repository/TallydayRepository.php | 37 ++++++++----------- 3 files changed, 22 insertions(+), 29 deletions(-) diff --git a/src/ninebadge-1.0/src/Controller/TallydayController.php b/src/ninebadge-1.0/src/Controller/TallydayController.php index 2f2d2c1..26ae183 100755 --- a/src/ninebadge-1.0/src/Controller/TallydayController.php +++ b/src/ninebadge-1.0/src/Controller/TallydayController.php @@ -935,17 +935,17 @@ class TallydayController extends AbstractController $f->add($interval); $f->sub(new \DateInterval('PT7H')); $f->add($capital); + + $interval = $e->diff($f); + $newcapital = $interval->format("%R").(($interval->days*24) + $interval->h).":".sprintf("%02s",$interval->i); + } // Si la journée n'est pas encore validé : on ajoute la journée à la simulation else if($data && (!$data->getValidateuser()||!$data->getValidateuser())) { - $f = new \DateTime('00:00'); - $f->add($interval); - $f->sub(new \DateInterval('PT7H')); - $f->add($capital); + $interval=$em->getRepository("App:Tallyday")->getCapitaltimeinterval($this->getUser(),true); + $newcapital = $interval->format("%R").(($interval->days*24) + $interval->h).":".sprintf("%02s",$interval->i); } - $interval = $e->diff($f); - $newcapital = $interval->format("%R").(($interval->days*24) + $interval->h).":".sprintf("%02s",$interval->i); return new JsonResponse([ 'success' => true, diff --git a/src/ninebadge-1.0/src/Entity/Tallyday.php b/src/ninebadge-1.0/src/Entity/Tallyday.php index 34cdea4..987ce3c 100644 --- a/src/ninebadge-1.0/src/Entity/Tallyday.php +++ b/src/ninebadge-1.0/src/Entity/Tallyday.php @@ -69,7 +69,7 @@ class Tallyday $f = clone $e; if($this->datestart && $this->dateend) - $e->add(date_diff($this->dateend, $this->datestart)); + $e->add(date_diff($this->datestart, $this->dateend)); return $f->diff($e); diff --git a/src/ninebadge-1.0/src/Repository/TallydayRepository.php b/src/ninebadge-1.0/src/Repository/TallydayRepository.php index fc40de3..98d050d 100644 --- a/src/ninebadge-1.0/src/Repository/TallydayRepository.php +++ b/src/ninebadge-1.0/src/Repository/TallydayRepository.php @@ -51,43 +51,36 @@ class TallydayRepository extends ServiceEntityRepository return $datas; } - public function getCapitaltimeinterval($user) { + public function getCapitaltimeinterval($user,$getnovalidate=false) { $datenow=new \DateTime('00:00'); $datas = $this->_em->getRepository('App:Tallyday')->findBy(["user"=>$user],["datestart"=>"DESC"]); - $tbweek=[]; + $tbdays=[]; $ework = new \DateTime('00:00'); - $idweeknow=$datenow->format("Y").$datenow->format("W"); - $lastdayvalidate=false; foreach($datas as $data) { if($data->getDateof()<$datenow) { - $idweek=$data->getDateof()->format("Y").$data->getDateof()->format("W"); - if(!in_array($idweek,$tbweek)&&$idweek!=$idweeknow) array_push($tbweek,$idweek); + $iddayweek=$data->getDateof()->format("w"); + if($iddayweek>=1&&$iddayweek<=5) { + if(!in_array($data->getDateof(),$tbdays)) array_push($tbdays,$data->getDateof()); + } $ework->add($data->getTimeday()); } - if($data->getDateof()==$datenow&&($data->getValidateuser()||$data->getValidatemaster())) { - $lastdayvalidate=true; - $idweek=$data->getDateof()->format("Y").$data->getDateof()->format("W"); - if(!in_array($idweek,$tbweek)&&$idweek!=$idweeknow) array_push($tbweek,$idweek); + if($data->getDateof()==$datenow&&($getnovalidate||$data->getValidateuser()||$data->getValidatemaster())) { + $iddayweek=$data->getDateof()->format("w"); + if($iddayweek>=1&&$iddayweek<=5) { + if(!in_array($data->getDateof(),$tbdays)) array_push($tbdays,$data->getDateof()); + } $ework->add($data->getTimeday()); } } // Nbday worked - $nbdaywork=count($tbweek)*5; - if($datenow->format("w")==6||$datenow->format("w")==7) - $nbdaywork+=5; - else { - $nbdaywork+=$datenow->format("w"); - if(!$lastdayvalidate) $nbdaywork--; - } - if($nbdaywork<0) $nbdaywork=0; - + $nbdaywork=count($tbdays); $etowork = new \DateTime('00:00'); - $etowork->sub(new \DateInterval("PT".($nbdaywork*7)."H")); - - $interval = $ework->diff($etowork); + $etowork->add(new \DateInterval("PT".($nbdaywork*7)."H")); + + $interval = $etowork->diff($ework); return $interval; }