From 2920126fb780d1186794cd5c1e2a02e76b35a729 Mon Sep 17 00:00:00 2001 From: Matthieu Lamalle Date: Mon, 27 Jul 2020 15:22:16 +0200 Subject: [PATCH] Rapport hebdo par utilisateur --- .../src/Controller/ReportController.php | 78 ++++++++++++++++++- .../templates/Report/export.csv.twig | 15 ++-- 2 files changed, 82 insertions(+), 11 deletions(-) diff --git a/src/schedule-2.0/src/Controller/ReportController.php b/src/schedule-2.0/src/Controller/ReportController.php index b386544..8319f64 100755 --- a/src/schedule-2.0/src/Controller/ReportController.php +++ b/src/schedule-2.0/src/Controller/ReportController.php @@ -608,8 +608,27 @@ class ReportController extends AbstractController ]; } $tbproject["weeks"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["cumul"] = $tbproject["weeks"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["cumul"]+$event->getDuration(); - } + + foreach($eventsbyweek as $event) { + if(!isset($tbproject["weeks_by_name"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["users"])){ + $tbproject["weeks_by_name"][$event->getStart()->format("Y")][$event->getStart()->format("W")] = [ + "weeknumber" => $event->getStart()->format("W"), + "users" => [], + ]; + } + if(!isset($tbproject["weeks_by_name"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["users"][$event->getUser()->getId()])){ + $tbuser= [ + "id"=>$event->getUser()->getId(), + "displayname"=>$event->getUser()->getDisplayname(), + "cumul"=>0 + ]; + $tbproject["weeks_by_name"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["users"][$event->getUser()->getId()] = $tbuser; + } + + $tbproject["weeks_by_name"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["users"][$event->getUser()->getId()]["cumul"] = $tbproject["weeks_by_name"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["users"][$event->getUser()->getId()]["cumul"]+$event->getDuration(); + } + // Somme astreintes validé par semaine $start=new \Datetime('first day of this month'); $start->sub(new \DateInterval('P'.$nbmonth.'M')); @@ -646,6 +665,24 @@ class ReportController extends AbstractController } $tbproject["weeks"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["cumul"] = $tbproject["weeks"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["cumul"]+$penalty->getDuration(); } + foreach($penaltybyweek as $penaltybyweek) { + if(!isset($tbproject["weeks_by_name"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["users"])){ + $tbproject["weeks_by_name"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")] = [ + "weeknumber" => $penalty->getStart()->format("W"), + "users" => [], + ]; + } + if(!isset($tbproject["weeks_by_name"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["users"][$penalty->getUser()->getId()])){ + $tbuser= [ + "id"=>$penalty->getUser()->getId(), + "displayname"=>$penalty->getUser()->getDisplayname(), + "cumul"=>0 + ]; + $tbproject["weeks_by_name"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["users"][$penalty->getUser()->getId()] = $tbuser; + } + + $tbproject["weeks_by_name"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["users"][$penalty->getUser()->getId()]["cumul"] = $tbproject["weeks_by_name"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["users"][$penalty->getUser()->getId()]["cumul"]+$penalty->getDuration(); + } // Recap des Commandes $offers=$em->getRepository("App:Offer")->findBy(["project"=>$project->getId()]); @@ -1103,6 +1140,24 @@ class ReportController extends AbstractController $tbproject["weeks"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["cumul"] = $tbproject["weeks"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["cumul"]+$event->getDuration(); } + foreach($eventsbyweek as $event) { + if(!isset($tbproject["weeks_by_name"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["users"])){ + $tbproject["weeks_by_name"][$event->getStart()->format("Y")][$event->getStart()->format("W")] = [ + "weeknumber" => $event->getStart()->format("W"), + "users" => [], + ]; + } + if(!isset($tbproject["weeks_by_name"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["users"][$event->getUser()->getId()])){ + $tbuser= [ + "id"=>$event->getUser()->getId(), + "displayname"=>$event->getUser()->getDisplayname(), + "cumul"=>0 + ]; + $tbproject["weeks_by_name"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["users"][$event->getUser()->getId()] = $tbuser; + } + + $tbproject["weeks_by_name"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["users"][$event->getUser()->getId()]["cumul"] = $tbproject["weeks_by_name"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["users"][$event->getUser()->getId()]["cumul"]+$event->getDuration(); + } // Somme astreintes validé par semaine $start=new \Datetime('first day of this month'); $start->sub(new \DateInterval('P'.$nbmonth.'M')); @@ -1139,13 +1194,32 @@ class ReportController extends AbstractController } $tbproject["weeks"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["cumul"] = $tbproject["weeks"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["cumul"]+$penalty->getDuration(); } + foreach($penaltybyweek as $penalty) { + if(!isset($tbproject["weeks_by_name"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["users"])){ + $tbproject["weeks_by_name"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")] = [ + "weeknumber" => $penalty->getStart()->format("W"), + "users" => [], + ]; + } + if(!isset($tbproject["weeks_by_name"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["users"][$penalty->getUser()->getId()])){ + $tbuser= [ + "id"=>$penalty->getUser()->getId(), + "displayname"=>$penalty->getUser()->getDisplayname(), + "cumul"=>0 + ]; + $tbproject["weeks_by_name"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["users"][$penalty->getUser()->getId()] = $tbuser; + } + + $tbproject["weeks_by_name"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["users"][$penalty->getUser()->getId()]["cumul"] = $tbproject["weeks_by_name"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["users"][$penalty->getUser()->getId()]["cumul"]+$penalty->getDuration(); + } + $tbprojects[$project->getId()]=$tbproject; } $csv = $this->renderView('Report/export.csv.twig', ["projects" => $tbprojects]); $response = new Response($csv); $response->headers->set('Content-Type', 'text/csv; charset=utf-8'); - $response->headers->set('Content-Disposition', 'attachment; filename="export.csv"'); + //$response->headers->set('Content-Disposition', 'attachment; filename="export.csv"'); return $response; } diff --git a/src/schedule-2.0/templates/Report/export.csv.twig b/src/schedule-2.0/templates/Report/export.csv.twig index 97ec932..c1a5a81 100644 --- a/src/schedule-2.0/templates/Report/export.csv.twig +++ b/src/schedule-2.0/templates/Report/export.csv.twig @@ -1,15 +1,12 @@ {% block body %} +Projet;Utilisateur;Année;Semaine;Cumul; {% for project in projects %} -{{ project.projectname|raw }} -{% for years in project %} -{% for year,weeks in years %} -{{year}} -;{% for week in weeks %}S{{week.weeknumber}};{% endfor %} - -;{% for week in weeks %}{{week.cumul}};{% endfor %} - +{% for year,weeks in project.weeks_by_name %} +{% for week in weeks %} +{% for user in week.users%} +{{project.projectname}};{{user.displayname}};{{year}};S{{week.weeknumber}};{{user.cumul}}; +{% endfor %} {% endfor %} {% endfor %} - {% endfor %} {% endblock %} \ No newline at end of file