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

View File

@@ -277,7 +277,23 @@
{% endfor %} {% endfor %}
</select> </select>
</div> </div>
<a>
<label class="control-label">
Service
</label>
</a>
<div class="select-control">
<select class="form-control select2entity" id="sideservice" name="sideservice">
<option value="all" selected>Tout les services</option>
{% for service in app.session.get('services') %}
{% set selected="" %}
{%if service.id==app.session.get('idservice') %}
{% set selected="selected" %}
{% endif %}
<option value="{{service.id}}" {{selected}}>{{service.name}}</option>
{% endfor %}
</select>
</div>
<a> <a>
<label class="control-label"> <label class="control-label">
Intervenant Intervenant
@@ -314,23 +330,7 @@
{% endfor %} {% endfor %}
</select> </select>
</div> </div>
<a>
<label class="control-label">
Service
</label>
</a>
<div class="select-control">
<select class="form-control select2entity" id="sideservice" name="sideservice">
<option value="all" selected>Tout les services</option>
{% for service in app.session.get('services') %}
{% set selected="" %}
{%if service.id==app.session.get('idservice') %}
{% set selected="selected" %}
{% endif %}
<option value="{{service.id}}" {{selected}}>{{service.name}}</option>
{% endfor %}
</select>
</div>
</li> </li>
<li class="last"></li> <li class="last"></li>