diff --git a/src/schedule-2.0/config/routes.yaml b/src/schedule-2.0/config/routes.yaml index 9655c7c..8418d61 100644 --- a/src/schedule-2.0/config/routes.yaml +++ b/src/schedule-2.0/config/routes.yaml @@ -376,6 +376,10 @@ 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: path: /customer/report/{key} diff --git a/src/schedule-2.0/src/Controller/TimerController.php b/src/schedule-2.0/src/Controller/TimerController.php index 3ccc4b7..a0f52d2 100644 --- a/src/schedule-2.0/src/Controller/TimerController.php +++ b/src/schedule-2.0/src/Controller/TimerController.php @@ -204,6 +204,41 @@ class TimerController extends AbstractController return $this->redirectToRoute($this->route); } } + + 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(); + if ($isactive) { + $tbtimer["id"] = $timer->getId(); + $tbtimer["taskname"] = $timer->getTask()->getDisplayname(); + $tbtimer["user"] = $timer->getUser()->getUsername(); + $tbtimer["start"] = $timer->getId(); + $tbtimer["end"] = $timer->getId(); + $tbtimer["duration"] = $timer->getDuration(); + $tbtimer["activepenalty"] = $timer->getActivePenalty(); + $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/src/Entity/Timer.php b/src/schedule-2.0/src/Entity/Timer.php index 2d5ace0..cbc721c 100644 --- a/src/schedule-2.0/src/Entity/Timer.php +++ b/src/schedule-2.0/src/Entity/Timer.php @@ -55,6 +55,12 @@ class Timer */ private $task; + /** + * @ORM\Column(name="activepenalty", type="boolean") + * + */ + private $activepenalty; + public function __construct() { $this->start = new \DateTime(); @@ -139,4 +145,16 @@ class Timer return $this; } + public function getActivePenalty(): ?bool + { + return $this->activepenalty; + } + + public function setActivePenalty(bool $activepenalty): self + { + $this->activepenalty = $activepenalty; + + return $this; + } + } diff --git a/src/schedule-2.0/src/Form/TimerType.php b/src/schedule-2.0/src/Form/TimerType.php index fb6d51f..5692d08 100644 --- a/src/schedule-2.0/src/Form/TimerType.php +++ b/src/schedule-2.0/src/Form/TimerType.php @@ -59,6 +59,13 @@ class TimerType extends AbstractType ] ); + $builder->add("activepenalty", + ChoiceType::class,[ + "label" => "Astreinte active", + "choices" => ["Non"=>false, "Oui"=>true] + ] + ); + $builder->add('start', DateTimeType::class, [ "label" =>"Début", diff --git a/src/schedule-2.0/templates/Timer/edit.html.twig b/src/schedule-2.0/templates/Timer/edit.html.twig index a0a8403..e7e1e2b 100644 --- a/src/schedule-2.0/templates/Timer/edit.html.twig +++ b/src/schedule-2.0/templates/Timer/edit.html.twig @@ -58,6 +58,7 @@
{{ timer.task.displayname }} | -{{ timer.description }} | +
+ {{ timer.activepenalty ? "Astreinte active" : "" }}
+ {{ timer.description }} + |
{{ timer.start|date("d/m/Y H:i") }} | {{ timer.end|date("d/m/Y H:i") }} | {{ timer.duration|date("H:i") }} |