diff --git a/src/schedule-2.0/config/routes.yaml b/src/schedule-2.0/config/routes.yaml index eb0afd7..81223d7 100644 --- a/src/schedule-2.0/config/routes.yaml +++ b/src/schedule-2.0/config/routes.yaml @@ -288,10 +288,6 @@ app_report: path: /user/report defaults: { _controller: App\Controller\ReportController:report } -app_report_export: - path: /user/report/export - defaults: { _controller: App\Controller\ReportController:export } - app_holiday: path: /user/holiday defaults: { _controller: App\Controller\ReportController:holiday } @@ -393,9 +389,6 @@ app_timer_delete: path: /timer/delete/{id} defaults: { _controller: App\Controller\TimerController:delete } -app_timer_export_activepenalty: - path: /timer/export - defaults: { _controller: App\Controller\TimerController:export } #== Customer ====================================================================================================== app_customer_report: @@ -404,7 +397,21 @@ app_customer_report: app_customer_planning: path: /customer/planning/{key} - defaults: { _controller: App\Controller\ReportController:planning, access: 'customer' } + defaults: { _controller: App\Controller\ReportController:planning, access: 'customer' } + +#== Export ====================================================================================================== +app_export_view: + path: /export + defaults: { _controller: App\Controller\ExportController:view } + +app_export_penalty_additional: + path: /export/export_penalty_additional + defaults: { _controller: App\Controller\ExportController:export_penalty_additional } + +export_project_weekly: + path: /export/export_project_weekly + defaults: { _controller: App\Controller\ExportController:export_project_weekly } + #== API =========================================================================================================== app_api: diff --git a/src/schedule-2.0/src/Controller/ExportController.php b/src/schedule-2.0/src/Controller/ExportController.php new file mode 100644 index 0000000..07e728a --- /dev/null +++ b/src/schedule-2.0/src/Controller/ExportController.php @@ -0,0 +1,274 @@ +getDoctrine()->getManager(); + + $iduser = $this->get("session")->get("iduser"); + $user = $em->getRepository("App:User")->find($iduser); + + return $this->render($this->render.'list.html.twig',[ + "useheader" => true, + "usesidebar" => true, + "user" => $user, + + ]); + } + + + public function export_penalty_additional(Request $request,$access=null): Response + { + $em = $this->getDoctrine()->getManager(); + + $iduser = $this->get("session")->get("iduser"); + $user = $em->getRepository("App:User")->find($iduser); + $tasks = $em->getRepository("App:Task")->findAll(); + $timers = $em->getRepository("App:Timer")->findBy(["user"=>$iduser]); + $tbtimers = []; + foreach ($timers as $timer) { + $isactive = $timer->getActivePenalty(); + $isadditional = $timer->getAdditionalHour(); + if ($isactive || $isadditional) { + $tbtimer["id"] = $timer->getId(); + $tbtimer["taskname"] = $timer->getTask()->getDisplayname(); + $tbtimer["user"] = $timer->getUser()->getUsername(); + $tbtimer["start"] = $timer->getStart()->format("Y-m-d H:i"); + $tbtimer["end"] = $timer->getEnd()->format("Y-m-d H:i"); + $tbtimer["duration"] = $timer->getDuration(); + $tbtimer["activepenalty"] = $timer->getActivePenalty(); + $tbtimer["additionalhour"] = $timer->getAdditionalHour(); + $tbtimer["description"] = $timer->getDescription(); + array_push($tbtimers, $tbtimer); + } + + } + + $csv = $this->renderView('Export/export_penalty_additional.csv.twig', ["timers" => $tbtimers]); + $response = new Response($csv); + $response->headers->set('Content-Type', 'text/csv; charset=utf-8'); + $response->headers->set('Content-Disposition', 'attachment; filename="export_penalty_additional.csv"'); + + return $response; + } + + public function export_project_weekly(Request $request,$access=null): Response { + $nbmonth=$this->get("session")->get("nbmonth"); + $em = $this->getDoctrine()->getManager(); + $projects=$em->getRepository("App:Project")->findAll(); + + //Construction du tableau des projets + $tbprojects=[]; + foreach($projects as $project) { + // Filtre par Customer + if($access=="customer") { + if($project->getCustomer()->getKeypass()!=$key) + continue; + } + + // Filtre par Service + if($this->get('session')->get('idservice')!="all") { + if($project->getService()->getId()!=$this->get('session')->get('idservice')) + continue; + } + + // Filtre par project + if($this->get('session')->get('idproject')!="all") { + if($project->getId()!=$this->get('session')->get('idproject')) + continue; + } + + // Ne prendre que les projets actif/inactif + if($this->get('session')->get('activeproject')!=$project->getActive()) + continue; + + $tbproject= []; + $tbproject["projectname"] = $project->getDisplayname(); + $tbproject["name"] = $project->getname(); + $tbproject["customer"] = $project->getCustomer()->getName(); + // Somme event validé par semaine + $start=new \Datetime('first day of this month'); + $start->sub(new \DateInterval('P'.$nbmonth.'M')); + $start->modify('previous monday'); + $start->setTime(0,0,0); + $endmonth = new \Datetime('first day of this month'); + $endmonth->add(new \DateInterval('P1M')); + $endmonth->modify('next monday'); + $endmonth->setTime(23,59,0); + + $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(); + + // } + // 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(); + // } + foreach($eventsbyweek as $event) { + if(!isset($tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"])){ + $tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")] = [ + "weeknumber" => $event->getStart()->format("W"), + "tasks" => [], + ]; + } + if(!isset($tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()])){ + $tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()] = [ + "taskname" => $event->getTask()->getName(), + "users" => [], + ]; + } + if(!isset($tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()]["users"][$event->getUser()->getId()])){ + $tbuser= [ + "id"=>$event->getUser()->getId(), + "displayname"=>$event->getUser()->getDisplayname(), + "cumul"=>0 + ]; + $tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()]["users"][$event->getUser()->getId()] = $tbuser; + } + + $tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()]["users"][$event->getUser()->getId()]["cumul"] = $tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()]["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')); + $start->modify('previous monday'); + $start->setTime(0,0,0); + $endmonth = new \Datetime('first day of this month'); + $endmonth->add(new \DateInterval('P1M')); + $endmonth->modify('next monday'); + $endmonth->setTime(23,59,0); + + $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(); + // } + // 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(); + // } + foreach($penaltybyweek as $penalty) { + if(!isset($tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"])){ + $tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")] = [ + "weeknumber" => $penalty->getStart()->format("W"), + "tasks" => [], + ]; + } + if(!isset($tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()])){ + $tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()] = [ + "taskname" => $penalty->getTask()->getName(), + "users" => [], + ]; + } + if(!isset($tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()]["users"][$penalty->getUser()->getId()])){ + $tbuser= [ + "id"=>$penalty->getUser()->getId(), + "displayname"=>$penalty->getUser()->getDisplayname(), + "cumul"=>0 + ]; + $tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()]["users"][$penalty->getUser()->getId()] = $tbuser; + } + + $tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()]["users"][$penalty->getUser()->getId()]["cumul"] = $tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()]["users"][$penalty->getUser()->getId()]["cumul"]+$penalty->getDuration(); + } + + $tbprojects[$project->getId()]=$tbproject; + } + + $csv = $this->renderView('Export/export_project_weekly.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_project_weekly.csv"'); + + return $response; + } + + +} diff --git a/src/schedule-2.0/src/Controller/ReportController.php b/src/schedule-2.0/src/Controller/ReportController.php index 7dcc188..91dee02 100755 --- a/src/schedule-2.0/src/Controller/ReportController.php +++ b/src/schedule-2.0/src/Controller/ReportController.php @@ -1094,208 +1094,6 @@ class ReportController extends AbstractController } } - public function export(Request $request,$access=null): Response { - $nbmonth=$this->get("session")->get("nbmonth"); - $em = $this->getDoctrine()->getManager(); - $projects=$em->getRepository("App:Project")->findAll(); - - //Construction du tableau des projets - $tbprojects=[]; - foreach($projects as $project) { - // Filtre par Customer - if($access=="customer") { - if($project->getCustomer()->getKeypass()!=$key) - continue; - } - - // Filtre par Service - if($this->get('session')->get('idservice')!="all") { - if($project->getService()->getId()!=$this->get('session')->get('idservice')) - continue; - } - - // Filtre par project - if($this->get('session')->get('idproject')!="all") { - if($project->getId()!=$this->get('session')->get('idproject')) - continue; - } - - // Ne prendre que les projets actif/inactif - if($this->get('session')->get('activeproject')!=$project->getActive()) - continue; - - $tbproject= []; - $tbproject["projectname"] = $project->getDisplayname(); - $tbproject["name"] = $project->getname(); - $tbproject["customer"] = $project->getCustomer()->getName(); - // Somme event validé par semaine - $start=new \Datetime('first day of this month'); - $start->sub(new \DateInterval('P'.$nbmonth.'M')); - $start->modify('previous monday'); - $start->setTime(0,0,0); - $endmonth = new \Datetime('first day of this month'); - $endmonth->add(new \DateInterval('P1M')); - $endmonth->modify('next monday'); - $endmonth->setTime(23,59,0); - - $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(); - - // } - // 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(); - // } - foreach($eventsbyweek as $event) { - if(!isset($tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"])){ - $tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")] = [ - "weeknumber" => $event->getStart()->format("W"), - "tasks" => [], - ]; - } - if(!isset($tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()])){ - $tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()] = [ - "taskname" => $event->getTask()->getName(), - "users" => [], - ]; - } - if(!isset($tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()]["users"][$event->getUser()->getId()])){ - $tbuser= [ - "id"=>$event->getUser()->getId(), - "displayname"=>$event->getUser()->getDisplayname(), - "cumul"=>0 - ]; - $tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()]["users"][$event->getUser()->getId()] = $tbuser; - } - - $tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()]["users"][$event->getUser()->getId()]["cumul"] = $tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()]["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')); - $start->modify('previous monday'); - $start->setTime(0,0,0); - $endmonth = new \Datetime('first day of this month'); - $endmonth->add(new \DateInterval('P1M')); - $endmonth->modify('next monday'); - $endmonth->setTime(23,59,0); - - $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(); - // } - // 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(); - // } - foreach($penaltybyweek as $penalty) { - if(!isset($tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"])){ - $tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")] = [ - "weeknumber" => $penalty->getStart()->format("W"), - "tasks" => [], - ]; - } - if(!isset($tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()])){ - $tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()] = [ - "taskname" => $penalty->getTask()->getName(), - "users" => [], - ]; - } - if(!isset($tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()]["users"][$penalty->getUser()->getId()])){ - $tbuser= [ - "id"=>$penalty->getUser()->getId(), - "displayname"=>$penalty->getUser()->getDisplayname(), - "cumul"=>0 - ]; - $tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()]["users"][$penalty->getUser()->getId()] = $tbuser; - } - - $tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()]["users"][$penalty->getUser()->getId()]["cumul"] = $tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()]["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"'); - - return $response; - } public function activeholiday() { $this->get('session')->set('activeholiday',!$this->get('session')->get('activeholiday')); diff --git a/src/schedule-2.0/src/Controller/TimerController.php b/src/schedule-2.0/src/Controller/TimerController.php index b8ffd8b..b1ebd59 100644 --- a/src/schedule-2.0/src/Controller/TimerController.php +++ b/src/schedule-2.0/src/Controller/TimerController.php @@ -234,41 +234,7 @@ class TimerController extends AbstractController } } - public function export(Request $request,$access=null): Response - { - - $em = $this->getDoctrine()->getManager(); - - $iduser = $this->get("session")->get("iduser"); - $user = $em->getRepository("App:User")->find($iduser); - $tasks = $em->getRepository("App:Task")->findAll(); - $timers = $em->getRepository("App:Timer")->findBy(["user"=>$iduser]); - $tbtimers = []; - foreach ($timers as $timer) { - $isactive = $timer->getActivePenalty(); - $isadditional = $timer->getAdditionalHour(); - if ($isactive || $isadditional) { - $tbtimer["id"] = $timer->getId(); - $tbtimer["taskname"] = $timer->getTask()->getDisplayname(); - $tbtimer["user"] = $timer->getUser()->getUsername(); - $tbtimer["start"] = $timer->getStart()->format("Y-m-d H:i"); - $tbtimer["end"] = $timer->getEnd()->format("Y-m-d H:i"); - $tbtimer["duration"] = $timer->getDuration(); - $tbtimer["activepenalty"] = $timer->getActivePenalty(); - $tbtimer["additionalhour"] = $timer->getAdditionalHour(); - $tbtimer["description"] = $timer->getDescription(); - array_push($tbtimers, $tbtimer); - } - - } - - $csv = $this->renderView('Timer/export.csv.twig', ["timers" => $tbtimers]); - $response = new Response($csv); - $response->headers->set('Content-Type', 'text/csv; charset=utf-8'); - $response->headers->set('Content-Disposition', 'attachment; filename="export.csv"'); - - return $response; - } + protected function getErrorForm($id,$form,$request,$data,$mode) { if ($form->get('submit')->isClicked()&&$mode=="delete") { diff --git a/src/schedule-2.0/templates/Timer/export.csv.twig b/src/schedule-2.0/templates/Export/export_penalty_additional.csv.twig similarity index 90% rename from src/schedule-2.0/templates/Timer/export.csv.twig rename to src/schedule-2.0/templates/Export/export_penalty_additional.csv.twig index da9542e..e77864d 100644 --- a/src/schedule-2.0/templates/Timer/export.csv.twig +++ b/src/schedule-2.0/templates/Export/export_penalty_additional.csv.twig @@ -1,5 +1,4 @@ {% block body %} -Astreintes Actives Tâche;Astr.Act;H.Supp;Utilisateur;Début;Fin;Durée;Description; {% for timer in timers %} {{timer.taskname}};{{timer.activepenalty}};{{timer.additionalhour}};{{timer.user}};{{timer.start|date("d/m/Y H:i")}};{{timer.end|date("d/m/Y H:i")}};{{timer.duration|date("H:i")}};{{timer.description}}; diff --git a/src/schedule-2.0/templates/Report/export.csv.twig b/src/schedule-2.0/templates/Export/export_project_weekly.csv.twig similarity index 100% rename from src/schedule-2.0/templates/Report/export.csv.twig rename to src/schedule-2.0/templates/Export/export_project_weekly.csv.twig diff --git a/src/schedule-2.0/templates/Export/list.html.twig b/src/schedule-2.0/templates/Export/list.html.twig new file mode 100644 index 0000000..2d746db --- /dev/null +++ b/src/schedule-2.0/templates/Export/list.html.twig @@ -0,0 +1,24 @@ +{% extends "base.html.twig" %} +{% block body %} +