opyimisation de la requetes des événements

This commit is contained in:
2020-09-01 14:34:24 +02:00
parent 04ed1645fa
commit 761f4c929d
2 changed files with 51 additions and 28 deletions

View File

@@ -26,7 +26,6 @@ class EventController extends AbstractController
public function list(Request $request)
{
$em = $this->getDoctrine()->getManager();
$users = $em->getRepository("App:User")->findAll();
$tasks = $em->getRepository("App:Task")->findAll();
@@ -42,20 +41,48 @@ class EventController extends AbstractController
{
$em = $this->getDoctrine()->getManager();
$tbevents=[];
// Evenements
$start = $request->query->get('start');
$end = $request->query->get('end');
$iduser=$this->get("session")->get("iduser");
if($iduser=="all")
// Evenements
if($iduser=="all") {
$events=$em->getRepository("App:Event")->findAll();
$events = $em
->createQueryBuilder('event')
->select('event')
->from('App:Event','event')
->Where('event.start>=:start AND event.end <:end')
->setParameter('start',$start)
->setParameter('end',$end)
->getQuery()->getResult();
}
else {
$user=$em->getRepository("App:User")->find($iduser);
$events=$em->getRepository("App:Event")->findBy(["user"=>$user]);
$events = $em
->createQueryBuilder('event')
->select('event')
->from('App:Event','event')
->Where('event.user=:user AND event.start>=:start AND event.end <:end')
->setParameter('user',$user->getId())
->setParameter('start',$start)
->setParameter('end',$end)
->getQuery()->getResult();
}
foreach($events as $event) {
$idproject=$event->getTask()->getProject()->getId();
//Filtre par service
if($this->get('session')->get('idservice')!="all") {
$idservice=$event->getUser()->getService()->getId();
if ($idservice!=$this->get('session')->get('idservice')){
continue;
}
}
// Filtre par project
if($this->get('session')->get('idproject')!="all") {
$idproject=$event->getTask()->getProject()->getId();
if($idproject!=$this->get('session')->get('idproject'))
continue;
}
@@ -64,7 +91,6 @@ class EventController extends AbstractController
}
// Astreintes
$iduser=$this->get("session")->get("iduser");
if($iduser=="all")
$penaltys=$em->getRepository("App:Penalty")->findAll();
else {
@@ -72,11 +98,9 @@ class EventController extends AbstractController
$user=$em->getRepository("App:User")->find($iduser);
$penaltys=$em->getRepository("App:Penalty")->findBy(["user"=>$user]);
}
foreach($penaltys as $penalty) {
$tmp=$this->formatEvent($penalty);
array_push($tbevents,$tmp);
}
// Breakday
@@ -87,7 +111,6 @@ class EventController extends AbstractController
}
// Retour
return new Response(json_encode($tbevents));
}