Ajout d'une page unique pour les exports
This commit is contained in:
@@ -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:
|
||||
|
274
src/schedule-2.0/src/Controller/ExportController.php
Normal file
274
src/schedule-2.0/src/Controller/ExportController.php
Normal file
@@ -0,0 +1,274 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
|
||||
|
||||
class ExportController extends AbstractController
|
||||
{
|
||||
private $data = "export";
|
||||
private $route = "app_exportèview";
|
||||
private $render = "Export/";
|
||||
private $entity = "App:Export";
|
||||
|
||||
|
||||
public function view(Request $request)
|
||||
{
|
||||
$em = $this->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;
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -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'));
|
||||
|
@@ -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") {
|
||||
|
@@ -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}};
|
24
src/schedule-2.0/templates/Export/list.html.twig
Normal file
24
src/schedule-2.0/templates/Export/list.html.twig
Normal file
@@ -0,0 +1,24 @@
|
||||
{% extends "base.html.twig" %}
|
||||
{% block body %}
|
||||
<h1 class="page-header">
|
||||
EXPORTS DE DONNEES
|
||||
</h1>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<a href="{{ path('app_export_penalty_additional') }}" class="btn btn-success">Export des Projets par semaine par participant</a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
Exporter le cumul des points éffectués sur un projet, par tâche par utilisateur.
|
||||
</div>
|
||||
</div>
|
||||
<p></p>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<a class="btn btn-success" href={{ path('app_export_penalty_additional') }}>Export des astreintes actives et heures supplémentaires</a>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
Exporter la liste des astreintes actives réalisés, ainsi que les saisies en heure supplémentaires
|
||||
</div>
|
||||
</div>
|
||||
<p></p>
|
||||
{% endblock %}
|
@@ -111,13 +111,6 @@
|
||||
</select>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if access!="customer" and app.user %}
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<a href="{{ path('app_report_export') }}" class="btn btn-success">Exporter</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% for project in projects %}
|
||||
{% if not project.months is empty or project.hors!=0 or not project.before is empty or not project.beforeastreinte is empty %}
|
||||
<div class="card">
|
||||
|
@@ -37,7 +37,6 @@ SUIVI HORAIRE
|
||||
</div>
|
||||
|
||||
<a class="btn btn-success" href={{ path('app_timer_view') }}>Voir le calendrier</a>
|
||||
<a class="btn btn-success" href={{ path('app_timer_export_activepenalty') }}>Exporter Astreintes actives et heures supplémentaires</a>
|
||||
<p></p>
|
||||
<div class="dataTable_wrapper">
|
||||
<table class="table table-striped table-bordered table-hover small" id="dataTables" style="width:100%">
|
||||
|
@@ -365,12 +365,18 @@
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="last">
|
||||
<li>
|
||||
<a href="{{path("app_holiday")}}">
|
||||
<i class="fa fa-umbrella-beach"></i>Mes Congés
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="last">
|
||||
<a href="{{path("app_export_view")}}">
|
||||
<i class="fa fa-file-download"></i>Exports
|
||||
</a>
|
||||
</li>
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if is_granted('ROLE_ADMIN') or is_granted('ROLE_VALIDATOR') %}
|
||||
|
Reference in New Issue
Block a user