Ajout d'un export csv hebdomadaire sur les rapports
This commit is contained in:
@@ -288,6 +288,10 @@ app_report:
|
|||||||
path: /user/report
|
path: /user/report
|
||||||
defaults: { _controller: App\Controller\ReportController:report }
|
defaults: { _controller: App\Controller\ReportController:report }
|
||||||
|
|
||||||
|
app_report_export:
|
||||||
|
path: /user/report/export
|
||||||
|
defaults: { _controller: App\Controller\ReportController:export }
|
||||||
|
|
||||||
app_holiday:
|
app_holiday:
|
||||||
path: /user/holiday
|
path: /user/holiday
|
||||||
defaults: { _controller: App\Controller\ReportController:holiday }
|
defaults: { _controller: App\Controller\ReportController:holiday }
|
||||||
|
@@ -6,6 +6,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
|
use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
|
||||||
|
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
|
||||||
|
|
||||||
class ReportController extends AbstractController
|
class ReportController extends AbstractController
|
||||||
{
|
{
|
||||||
@@ -15,7 +16,6 @@ class ReportController extends AbstractController
|
|||||||
public function synthese(Request $request)
|
public function synthese(Request $request)
|
||||||
{
|
{
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
$nbmonth=$this->get("session")->get("nbmonth");
|
$nbmonth=$this->get("session")->get("nbmonth");
|
||||||
$iduser=$this->get("session")->get("iduser");
|
$iduser=$this->get("session")->get("iduser");
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ class ReportController extends AbstractController
|
|||||||
$tmp["events"][$idday]["allday"]=true;
|
$tmp["events"][$idday]["allday"]=true;
|
||||||
$tmp["events"][$idday]["colorday"]=$event->getTask()->getColor();
|
$tmp["events"][$idday]["colorday"]=$event->getTask()->getColor();
|
||||||
$tmp["events"][$idday]["descriptionday"]=strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription();
|
$tmp["events"][$idday]["descriptionday"]=strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Matin ou après-midi ?
|
// Matin ou après-midi ?
|
||||||
$time=$event->getStart()->format("H");
|
$time=$event->getStart()->format("H");
|
||||||
@@ -119,7 +119,7 @@ class ReportController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
$st->add(new \DateInterval('P1D'));
|
$st->add(new \DateInterval('P1D'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// On formate le tableau des astreintes
|
// On formate le tableau des astreintes
|
||||||
@@ -157,7 +157,7 @@ class ReportController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
$st->add(new \DateInterval('P1D'));
|
$st->add(new \DateInterval('P1D'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// On formate le tableau des jours fériés
|
// On formate le tableau des jours fériés
|
||||||
@@ -184,7 +184,7 @@ class ReportController extends AbstractController
|
|||||||
$tmp["events"][$idday]["descriptionday"]="Jour Férié";
|
$tmp["events"][$idday]["descriptionday"]="Jour Férié";
|
||||||
|
|
||||||
$st->add(new \DateInterval('P1D'));
|
$st->add(new \DateInterval('P1D'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
array_push($tbevents,$tmp);
|
array_push($tbevents,$tmp);
|
||||||
@@ -202,9 +202,9 @@ class ReportController extends AbstractController
|
|||||||
return new PdfResponse(
|
return new PdfResponse(
|
||||||
$this->knpSnappy->getOutputFromHtml($render),
|
$this->knpSnappy->getOutputFromHtml($render),
|
||||||
'synthese.pdf'
|
'synthese.pdf'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return $this->render('Report/synthese.html.twig',[
|
return $this->render('Report/synthese.html.twig',[
|
||||||
"useheader" => true,
|
"useheader" => true,
|
||||||
"usesidebar" => ($this->getUser()),
|
"usesidebar" => ($this->getUser()),
|
||||||
@@ -246,7 +246,7 @@ class ReportController extends AbstractController
|
|||||||
if($project->getId()!=$this->get('session')->get('idproject'))
|
if($project->getId()!=$this->get('session')->get('idproject'))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ne prendre que les projets actif/inactif
|
// Ne prendre que les projets actif/inactif
|
||||||
if($this->get('session')->get('activeproject')!=$project->getActive())
|
if($this->get('session')->get('activeproject')!=$project->getActive())
|
||||||
continue;
|
continue;
|
||||||
@@ -350,7 +350,7 @@ class ReportController extends AbstractController
|
|||||||
$end=new \Datetime('first day of this month');
|
$end=new \Datetime('first day of this month');
|
||||||
$end->add(new \DateInterval('P'.$nbmonth.'M'));
|
$end->add(new \DateInterval('P'.$nbmonth.'M'));
|
||||||
$end->sub(new \DateInterval('P1D'));
|
$end->sub(new \DateInterval('P1D'));
|
||||||
|
|
||||||
foreach($users as $user) {
|
foreach($users as $user) {
|
||||||
$tbevents = $this->getEventuser($user,$start,$end,false);
|
$tbevents = $this->getEventuser($user,$start,$end,false);
|
||||||
|
|
||||||
@@ -368,7 +368,7 @@ class ReportController extends AbstractController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cumule
|
// Cumule
|
||||||
foreach($tbprojects as $project) {
|
foreach($tbprojects as $project) {
|
||||||
foreach($project["months"] as $month) {
|
foreach($project["months"] as $month) {
|
||||||
@@ -387,7 +387,7 @@ class ReportController extends AbstractController
|
|||||||
$totmonth+=$day["duration"];
|
$totmonth+=$day["duration"];
|
||||||
$totmontha+=$day["astreinte"];
|
$totmontha+=$day["astreinte"];
|
||||||
}
|
}
|
||||||
|
|
||||||
if($totuser==0&&$totusera==0) {
|
if($totuser==0&&$totusera==0) {
|
||||||
unset($tbprojects[$project["id"]]["months"][$month["monthid"]]["users"][$user["id"]]);
|
unset($tbprojects[$project["id"]]["months"][$month["monthid"]]["users"][$user["id"]]);
|
||||||
} else {
|
} else {
|
||||||
@@ -398,7 +398,7 @@ class ReportController extends AbstractController
|
|||||||
|
|
||||||
if(!$haveuser)
|
if(!$haveuser)
|
||||||
unset($tbprojects[$project["id"]]["months"][$month["monthid"]]);
|
unset($tbprojects[$project["id"]]["months"][$month["monthid"]]);
|
||||||
else {
|
else {
|
||||||
$tbprojects[$project["id"]]["months"][$month["monthid"]]["total"]=$totmonth;
|
$tbprojects[$project["id"]]["months"][$month["monthid"]]["total"]=$totmonth;
|
||||||
$tbprojects[$project["id"]]["months"][$month["monthid"]]["totala"]=$totmontha;
|
$tbprojects[$project["id"]]["months"][$month["monthid"]]["totala"]=$totmontha;
|
||||||
}
|
}
|
||||||
@@ -418,9 +418,9 @@ class ReportController extends AbstractController
|
|||||||
return new PdfResponse(
|
return new PdfResponse(
|
||||||
$this->knpSnappy->getOutputFromHtml($render,["orientation"=>"Landscape"]),
|
$this->knpSnappy->getOutputFromHtml($render,["orientation"=>"Landscape"]),
|
||||||
'planning.pdf'
|
'planning.pdf'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return $this->render('Report/planning.html.twig',[
|
return $this->render('Report/planning.html.twig',[
|
||||||
"useheader" => true,
|
"useheader" => true,
|
||||||
"usesidebar" => ($this->getUser()),
|
"usesidebar" => ($this->getUser()),
|
||||||
@@ -428,7 +428,7 @@ class ReportController extends AbstractController
|
|||||||
"access" => $access,
|
"access" => $access,
|
||||||
"key" => $key
|
"key" => $key
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function report($key=null,$access=null,Request $request) {
|
public function report($key=null,$access=null,Request $request) {
|
||||||
@@ -447,7 +447,7 @@ class ReportController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
$projects=$em->getRepository("App:Project")->findAll();
|
$projects=$em->getRepository("App:Project")->findAll();
|
||||||
|
|
||||||
//Construction du tableau des projets
|
//Construction du tableau des projets
|
||||||
$tbprojects=[];
|
$tbprojects=[];
|
||||||
foreach($projects as $project) {
|
foreach($projects as $project) {
|
||||||
@@ -468,7 +468,7 @@ class ReportController extends AbstractController
|
|||||||
if($project->getId()!=$this->get('session')->get('idproject'))
|
if($project->getId()!=$this->get('session')->get('idproject'))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ne prendre que les projets actif/inactif
|
// Ne prendre que les projets actif/inactif
|
||||||
if($this->get('session')->get('activeproject')!=$project->getActive())
|
if($this->get('session')->get('activeproject')!=$project->getActive())
|
||||||
continue;
|
continue;
|
||||||
@@ -541,10 +541,10 @@ class ReportController extends AbstractController
|
|||||||
"monthlabel"=>$event->getStart()->format("m/Y"),
|
"monthlabel"=>$event->getStart()->format("m/Y"),
|
||||||
"duration" => 0,
|
"duration" => 0,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
$tbproject["before"][$event->getStart()->format("Y")][$event->getStart()->format("Ym")]["duration"]=$tbproject["before"][$event->getStart()->format("Y")][$event->getStart()->format("Ym")]["duration"]+$event->getDuration();
|
$tbproject["before"][$event->getStart()->format("Y")][$event->getStart()->format("Ym")]["duration"]=$tbproject["before"][$event->getStart()->format("Y")][$event->getStart()->format("Ym")]["duration"]+$event->getDuration();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Somme astreinte validé avant la date
|
// Somme astreinte validé avant la date
|
||||||
$end=new \Datetime('first day of this month');
|
$end=new \Datetime('first day of this month');
|
||||||
$end->sub(new \DateInterval('P'.$nbmonth.'M'));
|
$end->sub(new \DateInterval('P'.$nbmonth.'M'));
|
||||||
@@ -570,10 +570,10 @@ class ReportController extends AbstractController
|
|||||||
"monthlabel"=>$penalty->getStart()->format("m/Y"),
|
"monthlabel"=>$penalty->getStart()->format("m/Y"),
|
||||||
"duration" => 0,
|
"duration" => 0,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
$tbproject["beforeastreinte"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("Ym")]["duration"]=$tbproject["beforeastreinte"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("Ym")]["duration"]+$penalty->getDuration();
|
$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
|
// Somme event validé par semaine
|
||||||
$start=new \Datetime('first day of this month');
|
$start=new \Datetime('first day of this month');
|
||||||
$start->sub(new \DateInterval('P'.$nbmonth.'M'));
|
$start->sub(new \DateInterval('P'.$nbmonth.'M'));
|
||||||
@@ -583,7 +583,7 @@ class ReportController extends AbstractController
|
|||||||
$endmonth->add(new \DateInterval('P1M'));
|
$endmonth->add(new \DateInterval('P1M'));
|
||||||
$endmonth->modify('next monday');
|
$endmonth->modify('next monday');
|
||||||
$end->setTime(23,59,0);
|
$end->setTime(23,59,0);
|
||||||
|
|
||||||
$eventsbyweek = $em
|
$eventsbyweek = $em
|
||||||
->createQueryBuilder('event')
|
->createQueryBuilder('event')
|
||||||
->select('event')
|
->select('event')
|
||||||
@@ -619,7 +619,7 @@ class ReportController extends AbstractController
|
|||||||
$endmonth->add(new \DateInterval('P1M'));
|
$endmonth->add(new \DateInterval('P1M'));
|
||||||
$endmonth->modify('next monday');
|
$endmonth->modify('next monday');
|
||||||
$end->setTime(23,59,0);
|
$end->setTime(23,59,0);
|
||||||
|
|
||||||
$penaltybyweek = $em
|
$penaltybyweek = $em
|
||||||
|
|
||||||
->createQueryBuilder('penalty')
|
->createQueryBuilder('penalty')
|
||||||
@@ -646,7 +646,7 @@ 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();
|
$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
|
// Recap des Commandes
|
||||||
$offers=$em->getRepository("App:Offer")->findBy(["project"=>$project->getId()]);
|
$offers=$em->getRepository("App:Offer")->findBy(["project"=>$project->getId()]);
|
||||||
foreach($offers as $offer) {
|
foreach($offers as $offer) {
|
||||||
@@ -655,7 +655,7 @@ class ReportController extends AbstractController
|
|||||||
"ref"=>$offer->getRef(),
|
"ref"=>$offer->getRef(),
|
||||||
"quantity"=>$offer->getQuantity(),
|
"quantity"=>$offer->getQuantity(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Formater les mois
|
// Formater les mois
|
||||||
$start=new \Datetime('first day of this month');
|
$start=new \Datetime('first day of this month');
|
||||||
@@ -712,7 +712,7 @@ class ReportController extends AbstractController
|
|||||||
];
|
];
|
||||||
$tbproject["months"][$start->format("Ym")]["tasks"][$event["id"]]=$tbtask;
|
$tbproject["months"][$start->format("Ym")]["tasks"][$event["id"]]=$tbtask;
|
||||||
}
|
}
|
||||||
|
|
||||||
$start->add(new \DateInterval('P1M'));
|
$start->add(new \DateInterval('P1M'));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -756,7 +756,7 @@ class ReportController extends AbstractController
|
|||||||
$end->add(new \DateInterval('P'.$nbmonth.'M'));
|
$end->add(new \DateInterval('P'.$nbmonth.'M'));
|
||||||
$end->sub(new \DateInterval('P1D'));
|
$end->sub(new \DateInterval('P1D'));
|
||||||
$end->setTime(23,59,0);
|
$end->setTime(23,59,0);
|
||||||
|
|
||||||
foreach($users as $user) {
|
foreach($users as $user) {
|
||||||
$tbevents = $this->getEventuser($user,$start,$end,true);
|
$tbevents = $this->getEventuser($user,$start,$end,true);
|
||||||
|
|
||||||
@@ -792,7 +792,7 @@ class ReportController extends AbstractController
|
|||||||
$totmonth+=$day["duration"];
|
$totmonth+=$day["duration"];
|
||||||
$totmontha+=$day["astreinte"];
|
$totmontha+=$day["astreinte"];
|
||||||
}
|
}
|
||||||
|
|
||||||
if($totuser==0&&$totusera==0) {
|
if($totuser==0&&$totusera==0) {
|
||||||
unset($tbprojects[$project["id"]]["months"][$month["monthid"]]["users"][$user["id"]]);
|
unset($tbprojects[$project["id"]]["months"][$month["monthid"]]["users"][$user["id"]]);
|
||||||
} else {
|
} else {
|
||||||
@@ -803,7 +803,7 @@ class ReportController extends AbstractController
|
|||||||
|
|
||||||
if(!$haveuser)
|
if(!$haveuser)
|
||||||
unset($tbprojects[$project["id"]]["months"][$month["monthid"]]);
|
unset($tbprojects[$project["id"]]["months"][$month["monthid"]]);
|
||||||
else {
|
else {
|
||||||
$tbprojects[$project["id"]]["months"][$month["monthid"]]["total"]=$totmonth;
|
$tbprojects[$project["id"]]["months"][$month["monthid"]]["total"]=$totmonth;
|
||||||
$tbprojects[$project["id"]]["months"][$month["monthid"]]["totala"]=$totmontha;
|
$tbprojects[$project["id"]]["months"][$month["monthid"]]["totala"]=$totmontha;
|
||||||
}
|
}
|
||||||
@@ -823,9 +823,9 @@ class ReportController extends AbstractController
|
|||||||
return new PdfResponse(
|
return new PdfResponse(
|
||||||
$this->knpSnappy->getOutputFromHtml($render,["orientation"=>"Landscape"]),
|
$this->knpSnappy->getOutputFromHtml($render,["orientation"=>"Landscape"]),
|
||||||
'report.pdf'
|
'report.pdf'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return $this->render('Report/report.html.twig',[
|
return $this->render('Report/report.html.twig',[
|
||||||
"useheader" => true,
|
"useheader" => true,
|
||||||
"usesidebar" => ($this->getUser()),
|
"usesidebar" => ($this->getUser()),
|
||||||
@@ -833,7 +833,7 @@ class ReportController extends AbstractController
|
|||||||
"access" => $access,
|
"access" => $access,
|
||||||
"key" => $key
|
"key" => $key
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getEventuser($user,$start,$end,$onlyvalidate) {
|
private function getEventuser($user,$start,$end,$onlyvalidate) {
|
||||||
@@ -850,7 +850,7 @@ class ReportController extends AbstractController
|
|||||||
->setParameter('end',$end);
|
->setParameter('end',$end);
|
||||||
if($onlyvalidate)
|
if($onlyvalidate)
|
||||||
$qb->andWhere('event.validate=:validate')->setParameter('validate',true);
|
$qb->andWhere('event.validate=:validate')->setParameter('validate',true);
|
||||||
|
|
||||||
$events=$qb->getQuery()->getResult();
|
$events=$qb->getQuery()->getResult();
|
||||||
foreach($events as $event) {
|
foreach($events as $event) {
|
||||||
$project=$event->getTask()->getProject();
|
$project=$event->getTask()->getProject();
|
||||||
@@ -869,14 +869,14 @@ class ReportController extends AbstractController
|
|||||||
if($idproject!=$this->get('session')->get('idproject'))
|
if($idproject!=$this->get('session')->get('idproject'))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ne prendre que les projets actif/inactif
|
// Ne prendre que les projets actif/inactif
|
||||||
if($this->get('session')->get('activeproject')!=$activeproject)
|
if($this->get('session')->get('activeproject')!=$activeproject)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(!isset($tbevents[$idproject]))
|
if(!isset($tbevents[$idproject]))
|
||||||
$tbevents[$idproject] = [];
|
$tbevents[$idproject] = [];
|
||||||
|
|
||||||
$st=clone $event->getStart();
|
$st=clone $event->getStart();
|
||||||
while($st<$event->getEnd()) {
|
while($st<$event->getEnd()) {
|
||||||
$idday=$st->format("Ymd");
|
$idday=$st->format("Ymd");
|
||||||
@@ -897,7 +897,7 @@ class ReportController extends AbstractController
|
|||||||
|
|
||||||
|
|
||||||
$st->add(new \DateInterval('P1D'));
|
$st->add(new \DateInterval('P1D'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -912,7 +912,7 @@ class ReportController extends AbstractController
|
|||||||
->setParameter('end',$end);
|
->setParameter('end',$end);
|
||||||
if($onlyvalidate)
|
if($onlyvalidate)
|
||||||
$qb->andWhere('penalty.validate=:validate')->setParameter('validate',true);
|
$qb->andWhere('penalty.validate=:validate')->setParameter('validate',true);
|
||||||
|
|
||||||
$penaltys=$qb->getQuery()->getResult();
|
$penaltys=$qb->getQuery()->getResult();
|
||||||
foreach($penaltys as $penalty) {
|
foreach($penaltys as $penalty) {
|
||||||
$project=$penalty->getTask()->getProject();
|
$project=$penalty->getTask()->getProject();
|
||||||
@@ -931,14 +931,14 @@ class ReportController extends AbstractController
|
|||||||
if($idproject!=$this->get('session')->get('idproject'))
|
if($idproject!=$this->get('session')->get('idproject'))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ne prendre que les projets actif/inactif
|
// Ne prendre que les projets actif/inactif
|
||||||
if($this->get('session')->get('activeproject')!=$activeproject)
|
if($this->get('session')->get('activeproject')!=$activeproject)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(!isset($tbevents[$idproject]))
|
if(!isset($tbevents[$idproject]))
|
||||||
$tbevents[$idproject] = [];
|
$tbevents[$idproject] = [];
|
||||||
|
|
||||||
$st=clone $penalty->getStart();
|
$st=clone $penalty->getStart();
|
||||||
while($st<$penalty->getEnd()) {
|
while($st<$penalty->getEnd()) {
|
||||||
$idday=$st->format("Ymd");
|
$idday=$st->format("Ymd");
|
||||||
@@ -959,7 +959,7 @@ class ReportController extends AbstractController
|
|||||||
|
|
||||||
|
|
||||||
$st->add(new \DateInterval('P1D'));
|
$st->add(new \DateInterval('P1D'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $tbevents;
|
return $tbevents;
|
||||||
@@ -968,7 +968,7 @@ class ReportController extends AbstractController
|
|||||||
public function holiday(Request $request)
|
public function holiday(Request $request)
|
||||||
{
|
{
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
$iduser=$this->getUser();
|
$iduser=$this->getUser();
|
||||||
$users=$em->getRepository("App:User")->findBy(["id"=>$iduser]);
|
$users=$em->getRepository("App:User")->findBy(["id"=>$iduser]);
|
||||||
|
|
||||||
@@ -1017,13 +1017,13 @@ class ReportController extends AbstractController
|
|||||||
"useheader" => true,
|
"useheader" => true,
|
||||||
"usesidebar" => ($this->getUser()),
|
"usesidebar" => ($this->getUser()),
|
||||||
"users" => $tbevents,
|
"users" => $tbevents,
|
||||||
"fgprint" => $request->query->get('fgprint'),
|
"fgprint" => $request->query->get('fgprint'),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return new PdfResponse(
|
return new PdfResponse(
|
||||||
$this->knpSnappy->getOutputFromHtml($render),
|
$this->knpSnappy->getOutputFromHtml($render),
|
||||||
'conges.pdf'
|
'conges.pdf'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return $this->render('Report/holiday.html.twig',[
|
return $this->render('Report/holiday.html.twig',[
|
||||||
@@ -1031,15 +1031,93 @@ class ReportController extends AbstractController
|
|||||||
"usesidebar" => ($this->getUser()),
|
"usesidebar" => ($this->getUser()),
|
||||||
"users" => $tbevents
|
"users" => $tbevents
|
||||||
]);
|
]);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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();
|
||||||
|
// 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');
|
||||||
|
|
||||||
|
$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();
|
||||||
|
|
||||||
|
}
|
||||||
|
$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() {
|
public function activeholiday() {
|
||||||
$this->get('session')->set('activeholiday',!$this->get('session')->get('activeholiday'));
|
$this->get('session')->set('activeholiday',!$this->get('session')->get('activeholiday'));
|
||||||
|
|
||||||
return $this->redirectToRoute("app_holiday");
|
return $this->redirectToRoute("app_holiday");
|
||||||
}
|
}
|
||||||
|
|
||||||
private function frmDay($daynumber) {
|
private function frmDay($daynumber) {
|
||||||
switch($daynumber) {
|
switch($daynumber) {
|
||||||
@@ -1065,3 +1143,4 @@ class ReportController extends AbstractController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
15
src/schedule-2.0/templates/Report/export.csv.twig
Normal file
15
src/schedule-2.0/templates/Report/export.csv.twig
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{% block body %}
|
||||||
|
{% 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 %}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
{% endblock %}
|
@@ -93,7 +93,6 @@
|
|||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
{% if fgprint is defined and fgprint %}<h1>Planning</h1>{%endif%}
|
{% if fgprint is defined and fgprint %}<h1>Planning</h1>{%endif%}
|
||||||
|
|
||||||
{% if access=="customer" and not app.user %}
|
{% if access=="customer" and not app.user %}
|
||||||
<div class="no-print" style="margin-top:10px;">
|
<div class="no-print" style="margin-top:10px;">
|
||||||
<style> .select2-container { display:inline-block} </style>
|
<style> .select2-container { display:inline-block} </style>
|
||||||
@@ -112,6 +111,13 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if access!="customer" and app.user %}
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<a href="{{ path('app_report_export') }}" class="btn btn-success">Exporter2</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
{% for project in projects %}
|
{% 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 %}
|
{% 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">
|
<div class="card">
|
||||||
|
Reference in New Issue
Block a user