diff --git a/src/schedule-2.0/src/Controller/ReportController.php b/src/schedule-2.0/src/Controller/ReportController.php index e5f8fc7..8b4259a 100755 --- a/src/schedule-2.0/src/Controller/ReportController.php +++ b/src/schedule-2.0/src/Controller/ReportController.php @@ -513,6 +513,7 @@ class ReportController extends AbstractController "beforeastreinte"=>[], "months"=>[], "offers"=>[], + "weeks"=>[], ]; // Somme event validé avant la date @@ -571,6 +572,75 @@ class ReportController extends AbstractController $tbproject["beforeastreinte"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("Ym")]["duration"]=$tbproject["beforeastreinte"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("Ym")]["duration"]+$penalty->getDuration(); } + // Somme event validé par semaine + $start=new \Datetime('first day of this month'); + $start->sub(new \DateInterval('P'.$nbmonth.'M')); + $start->modify('previous monday'); + $endmonth = new \Datetime('first day of this month'); + $endmonth->add(new \DateInterval('P1M')); + $endmonth->modify('next monday'); + + $eventsbyweek = $em + ->createQueryBuilder('event') + ->select('event') + ->from('App:Task','task') + ->from('App:Event','event') + ->Where('task.project=:project') + ->andWhere('event.task=task') + ->andWhere('event.end >=:start') + ->andWhere('event.end <:end') + ->andWhere('event.validate=:validate') + ->setParameter('project',$project) + ->setParameter('validate',true) + ->setParameter('start',$start) + ->setParameter('end',$endmonth) + ->orderBy('event.start') + ->getQuery()->getResult(); + foreach($eventsbyweek as $event) { + if(!isset($tbproject["weeks"][$event->getStart()->format("Y")][$event->getStart()->format("W")])){ + $tbproject["weeks"][$event->getStart()->format("Y")][$event->getStart()->format("W")] = [ + "weeknumber" => $event->getStart()->format("W"), + "cumul" => 0, + ]; + } + $tbproject["weeks"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["cumul"] = $tbproject["weeks"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["cumul"]+$event->getDuration(); + + } + // Somme astreintes validé par semaine + $start=new \Datetime('first day of this month'); + $start->sub(new \DateInterval('P'.$nbmonth.'M')); + $start->modify('previous monday'); + $endmonth = new \Datetime('first day of this month'); + $endmonth->add(new \DateInterval('P1M')); + $endmonth->modify('next monday'); + + $penaltybyweek = $em + + ->createQueryBuilder('penalty') + ->select('penalty') + ->from('App:Task','task') + ->from('App:Penalty','penalty') + ->Where('task.project=:project') + ->andWhere('penalty.task=task') + ->andWhere('penalty.end >=:start') + ->andWhere('penalty.end <:end') + ->andWhere('penalty.validate=:validate') + ->setParameter('project',$project) + ->setParameter('validate',true) + ->setParameter('start',$start) + ->setParameter('end',$endmonth) + ->orderBy('penalty.start') + ->getQuery()->getResult(); + foreach($penaltybyweek as $penalty) { + if(!isset($tbproject["weeks"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")])){ + $tbproject["weeks"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")] = [ + "weeknumber" => $penalty->getStart()->format("W"), + "cumul" => 0, + ]; + } + $tbproject["weeks"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["cumul"] = $tbproject["weeks"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["cumul"]+$penalty->getDuration(); + } + // Recap des Commandes $offers=$em->getRepository("App:Offer")->findBy(["project"=>$project->getId()]); foreach($offers as $offer) { @@ -694,7 +764,6 @@ class ReportController extends AbstractController } } } - // Cumule foreach($tbprojects as $project) { foreach($project["months"] as $month) {