Commit 30e101bf authored by Patrick Etcheverry's avatar Patrick Etcheverry

- Externalisation de la vérification de l'existance d'une étape dans une démarche ;

- Mise en place de la redirection vers la page d'appel. C'est à dire que lorsqu'on execute une action depuis la page X, on est redirigé vers celle-ci après l'appel (avant on retrounait à la première)
parent ea412a31
......@@ -213,7 +213,7 @@ class ScenarisationProcessController extends Controller
/**
* Add a ScenarisationStage to a ScenarisationProcess
*/
public function stagesAddAction(ScenarisationProcess $scenarisationProcess,ScenarisationStage $scenarisationStage)
public function stagesAddAction(ScenarisationProcess $scenarisationProcess,ScenarisationStage $scenarisationStage, $page)
{
# On récupère la route car la vue appelée n'est pas la même.
# En effet, on utilise cette même méthode que l'on doit dans une démarche en train d'ajouter une étape
......@@ -249,7 +249,7 @@ class ScenarisationProcessController extends Controller
if ($routeOrigin != 'add_scenarisation_stage_in_a_process')
return $this->redirectToRoute('scenarisation_process_stage_management', array('id' => $scenarisationProcess->getId()));
else
return $this->redirectToRoute('scenarisation_stage_associate_to_process', array('id' => $scenarisationStage->getId()));
return $this->redirectToRoute('scenarisation_stage_associate_to_process', array('id' => $scenarisationStage->getId(), 'page' => $page ));
}
/**
......
......@@ -270,6 +270,14 @@ class ScenarisationStageController extends Controller
*/
public function associateToProcessAction(Request $request, ScenarisationStage $scenarisationStage)
{
/* Pour Paginator
Si un numéro de page a été spécifié, il faudra renvoyer vers cette dernière */
if ( !empty($request->query->get('page')) )
$currentPage = $request->query->get('page');
else
$currentPage = 1; /* Par défaut, on montre la première page */
$manager = $this->container->get('doctrine')->getEntityManager('default');
// Récupérer toutes les démarches
......@@ -283,7 +291,7 @@ class ScenarisationStageController extends Controller
$allProcesses = $dql_get_all_processes->getResult();*/
$dql_get_all_processes = $manager->createQuery ('
$dql_allProcesses = $manager->createQuery ('
select process,stageOrder,stage
FROM ScenarisationProcessBundle:ScenarisationProcess process
LEFT JOIN process.scenarisationStageOrder stageOrder
......@@ -291,11 +299,10 @@ class ScenarisationStageController extends Controller
ORDER BY process.title, stageOrder.position');
$paginator = $this->get('knp_paginator');
$allProcesses = $paginator->paginate(
$dql_get_all_processes,
$request->query->getInt('page', 1),/*page number*/
$dql_allProcesses,
$request->query->getInt('page', $currentPage),/*page number*/
2,/*limit per page*/
array('wrap-queries'=>true) // Obligatoire pour faire fonctionner le order by
);
......
......@@ -213,5 +213,37 @@ class ScenarisationProcess
return $this;
}
public function isAlreadyLinkedToStage(ScenarisationStage $scenarisationStage)
{
// Faire une requête à partir d'une entité est une très mauvaise pratique, j'abandonne donc l'idée
/*
$dql= $this->createQueryBuilder('
select count(stageOrder)
FROM ScenarisationProcessBundle:ScenarisationStageOrder stageOrder
JOIN stageOrder.scenarisationStage stage
JOIN stageOrder.scenarisationProcess process
WHERE process.id = idP AND stage.id = idS');
$dql->setParameter('idP', $this->getId());
$dql->setParameter('idS', $scenarisationStage->getId());
$resultat = $dql->getSingleScalarResult();
*/
$etapeTrouvee = false;
$scenarisationStageOrderTab = $this->getScenarisationStageOrder();
$indiceCourant = 0;
$tailleTableau = sizeof($scenarisationStageOrderTab);
while( ($indiceCourant < $tailleTableau) && ($etapeTrouvee == false) )
{
if ($scenarisationStageOrderTab[$indiceCourant]->getScenarisationStage() == $scenarisationStage)
$etapeTrouvee = true;
$indiceCourant++;
}
return $etapeTrouvee;
}
}
......@@ -49,14 +49,14 @@ scenarisation_stage_question_positions_AJAX_CALL:
# This route show a view to manage the questions of a process (and their position)
scenarisation_stage_associate_to_process:
path: /{id}/process-management
path: /{id}/process-management/
defaults: { _controller: "ScenarisationProcessBundle:ScenarisationStage:associateToProcess" }
methods: GET
# This route add a stage to a process
add_scenarisation_stage_in_a_process:
path: /{scenarisationProcess}/stages-add/{scenarisationStage}
defaults: { _controller: "ScenarisationProcessBundle:ScenarisationProcess:stagesAdd" }
path: /{scenarisationProcess}/stages-add/{scenarisationStage}/{page}
defaults: { _controller: "ScenarisationProcessBundle:ScenarisationProcess:stagesAdd", page: 1 }
methods: GET
move_scenarisation_stage_in_a_process:
......
{% extends 'base.html.twig' %}
{% set currentPage = app.request.query.get('page') %}
{% block body %}
<h1>{{'scenarisationStage.processesManagement'|trans}}</h1>
{% if processes is not empty %}
<h2>{{ scenarisationStage.title }}</h2>
<hr/>
<h2>{{ scenarisationStage.title }}</h2>
<hr/>
{# Si l'application contient des démarches de scénarisation #}
{% if processes is not empty %}
{# On parcourt la liste des démarche #}
{% for process in processes %}
<p>
<a href="{{path('scenarisation_process_stage_management', {'id' : process.id} ) }}">
{{ process.title }}
</a>
{# Je regarde si l'étapes de scénarisation courante est déjà dans la démarche #}
{% set stageAlreadyInProcess = false %}
{% for currentScenarisationStage in process.scenarisationStageOrder %}
{% if scenarisationStage == currentScenarisationStage.scenarisationStage %}
{% set stageAlreadyInProcess = true %}
{% endif %}
{% endfor %}
{% if stageAlreadyInProcess == false %}
&nbsp;|&nbsp;
<a href="{{ path('add_scenarisation_stage_in_a_process', { 'scenarisationStage': scenarisationStage.id, 'scenarisationProcess': process.id }) ~ '#' ~ process.id }}">
<i class="fa fa-plus" aria-hidden="true"></i>
</a>
{% if not process.isAlreadyLinkedToStage(scenarisationStage) %}
&nbsp;|&nbsp;
<a href="{{ path('add_scenarisation_stage_in_a_process', { 'page': currentPage, 'scenarisationStage': scenarisationStage.id, 'scenarisationProcess': process.id }) ~ '#' ~ process.id }}">
<i class="fa fa-plus" aria-hidden="true"></i>
</a>
{% endif %}
</p>
{% if (process.scenarisationStageOrder) is not empty %}
<table id="{{process.id}}" class="table table-striped">
......@@ -55,6 +51,8 @@
<div class="navigation text-center">
{{ knp_pagination_render(processes) }}
</div>
{% else %}
<p> <i>Aucune démarche de scénarisation trouvée.</i> </p>
{% endif %}
<ul>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment