Commit 936d30ab authored by Patrick Etcheverry's avatar Patrick Etcheverry

Colange démarche implémenté.

parent 26984f0b
......@@ -32,9 +32,9 @@ class LoadAnswerData implements FixtureInterface, ContainerAwareInterface, Order
{
$em = $this->container->get('doctrine')->getEntityManager('default');
$this->ajouterReponseGenerale($manager,$em,"Comment Vous appelez vous ?","Gaizka Alçuyet");
/*$this->ajouterReponseGenerale($manager,$em,"Comment Vous appelez vous ?","Gaizka Alçuyet");
$this->ajouterReponseGenerale($manager,$em,"Combien de séquences ?","3");
$this->ajouterReponseGenerale($manager,$em,"Combien de séances ?","3");
$this->ajouterReponseGenerale($manager,$em,"Combien de séances ?","3");*/
/*$this->ajouterReponseSequence($manager,$em,);
$this->ajouterReponseSeance($manager,$em,);*/
......
......@@ -213,7 +213,7 @@ class ScenarisationProcessController extends Controller
/**
* Add a ScenarisationStage to a ScenarisationProcess
*/
public function stagesAddAction(ScenarisationProcess $scenarisationProcess,ScenarisationStage $scenarisationStage, $page)
public function stagesAddAction(ScenarisationProcess $scenarisationProcess,ScenarisationStage $scenarisationStage, $page = 1)
{
# 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
......@@ -265,4 +265,70 @@ class ScenarisationProcessController extends Controller
return $this->redirectToRoute('scenarisation_process_stage_management', array('id' => $scenarisationProcess->getId()));
}
public function cloneAction(ScenarisationProcess $scenarisationProcess)
{
$em = $this->container->get('doctrine')->getEntityManager('default');
// Repository de question : on en aura besoin plus tard pour vérifier des présences/absences dans la BDD
$questionRepo = $em->getRepository('ScenarisationProcessBundle:Question');
// On clone la démarche
$scenarisationProcessCopie = clone $scenarisationProcess;
// On change le titre
$scenarisationProcessCopie->setTitle($scenarisationProcessCopie->getTitle() . " - (copie)");
// On clone chacune des étapes avec le lien bien sûr...
foreach ($scenarisationProcess->getScenarisationStageOrder() as $currentScenarisationStageOrder)
{
/* On clone l'étape et la classe d'association */
$scenarisationStageCopie = clone $currentScenarisationStageOrder->getScenarisationStage();
$scenarisationStageOrderCopie = clone $currentScenarisationStageOrder;
// On change le titre de l'étape
$scenarisationStageCopie->setTitle($scenarisationStageCopie->getTitle() . " - (copie)");
/* On fait les liens entre démarche -> association && étape -> association */
$scenarisationStageCopie->addScenarisationStageOrder($scenarisationStageOrderCopie);
$scenarisationProcessCopie->addScenarisationStageOrder($scenarisationStageOrderCopie);
// Et puis on enregistre
//$em->persist($scenarisationStageOrderCopie);
// On clone chacune des questions avec le lien bien sûr...
foreach ($currentScenarisationStageOrder->getScenarisationStage()->getQuestionOrder() as $currentQuestionOrder)
{
/* Ici on vérifie que l'on a pas déjà cloné la question que l'on s'apprête à cloner
Cela peut arriver dans les rares cas où une question est positionné dans deux étapes différentes d'une même démarche
Ce qui a priori parait impossible mais on sait jamais avec ces petits coquins d'utilisateurs... */
$questionCopie = $questionRepo->findOneBy(array('frWording' => "Copie - " . $currentQuestionOrder->getQuestion()->getFrWording()));
if ($questionCopie == null)
{
/* On clone la question et la classe d'association */
$questionCopie = clone $currentQuestionOrder->getQuestion();
$questionCopie->setFrWording("Copie - " . $questionCopie->getFrWording());
$questionCopie->setEsWording("Copia - " . $questionCopie->getEsWording());
$questionCopie->setEnWording("Copy - " . $questionCopie->getEnWording());
}
// Dans tous les cas on clone la classe d'association
$questionOrderCopie = clone $currentQuestionOrder;
/* On fait les liens entre étape -> association && question -> association */
$questionCopie->addQuestionOrder($questionOrderCopie);
$scenarisationStageCopie->addQuestionOrder($questionOrderCopie);
// Et puis on enregistre
//$em->persist($questionOrderCopie);
}
}
$em->persist($scenarisationProcessCopie);
$em->flush();
return $this->redirectToRoute('scenarisation_process_index', array('id' => $scenarisationProcess->getId()));
}
}
......@@ -34,7 +34,7 @@ class LoadQuestionData implements FixtureInterface, ContainerAwareInterface, Ord
$em = $this->container->get('doctrine')->getEntityManager('default');
$repoScenarisationStage = $em->getRepository('ScenarisationProcessBundle:ScenarisationStage');
$this->ajouterGeneralQuestion($manager,$repoScenarisationStage, "Etape 1", "Comment Vous appelez vous ?", 1);
/*$this->ajouterGeneralQuestion($manager,$repoScenarisationStage, "Etape 1", "Comment Vous appelez vous ?", 1);
$this->ajouterGeneralQuestion($manager,$repoScenarisationStage, "Etape 1", "Qui ?", 2);
$this->ajouterGeneralQuestion($manager,$repoScenarisationStage, "Etape 1", "Que ?", 3);
$this->ajouterGeneralQuestion($manager,$repoScenarisationStage, "Etape 1", "Quoi ? ", 4);
......@@ -45,7 +45,11 @@ class LoadQuestionData implements FixtureInterface, ContainerAwareInterface, Ord
$this->ajouterGeneralQuestion($manager,$repoScenarisationStage, "Etape 3", "Combien de séances ?", 1);
$this->ajouterSequenceQuestion($manager,$repoScenarisationStage, "Etape 2", "Veuillez mettre les Sequences", 2);
$this->ajouterSessionQuestion($manager,$repoScenarisationStage, "Etape 3", "Veuillez mettre les Seances", 2);
$this->ajouterSessionQuestion($manager,$repoScenarisationStage, "Etape 3", "Veuillez mettre les Seances", 2);*/
$this->ajouterGeneralQuestion($manager,$repoScenarisationStage, "Etape 1", "Une question générale", 1);
$this->ajouterSequenceQuestion($manager,$repoScenarisationStage, "Etape 2", "Une question sequence", 1);
$this->ajouterSessionQuestion($manager,$repoScenarisationStage, "Etape 3", "Une question seance", 1);
}
public function ajouterGeneralQuestion(ObjectManager $manager, $repoScenarisationStage, $intituleScenarisationStage, $libelleFr, $position)
......
......@@ -38,10 +38,10 @@ class LoadEtapeScenarisationData implements FixtureInterface, ContainerAwareInte
$this->ajouterEtape($manager,$demarcheMarta,"Etape 1",1);
$this->ajouterEtape($manager,$demarcheMarta,"Etape 2",2);
$this->ajouterEtape($manager,$demarcheMarta,"Etape 3",3);
$this->ajouterEtape($manager,NULL,"Etape 4",0);
/*$this->ajouterEtape($manager,NULL,"Etape 4",0);
$this->ajouterEtape($manager,NULL,"Etape 5",0);
$this->ajouterEtape($manager,NULL,"Etape 6",0);
$this->ajouterEtape($manager,NULL,"Etape 7",0);
$this->ajouterEtape($manager,NULL,"Etape 7",0);*/
}
......
......@@ -50,7 +50,7 @@ class Question
private $esWording = "No traduction";
/**
* @ORM\OneToMany(targetEntity="ScenarisationProcessBundle\Entity\QuestionOrder", mappedBy="question", cascade={"persist"})
* @ORM\OneToMany(targetEntity="ScenarisationProcessBundle\Entity\QuestionOrder", mappedBy="question", cascade={"persist", "remove"})
* @ORM\JoinColumn(nullable=true)
*/
private $questionOrder;
......
......@@ -32,13 +32,13 @@ class QuestionOrder
private $position;
/**
* @ORM\ManyToOne(targetEntity="ScenarisationProcessBundle\Entity\Question", inversedBy="questionOrder")
* @ORM\ManyToOne(targetEntity="ScenarisationProcessBundle\Entity\Question", inversedBy="questionOrder", cascade={"persist"})
* @ORM\JoinColumn(nullable=true, onDelete="SET NULL")
*/
private $question;
/**
* @ORM\ManyToOne(targetEntity="ScenarisationProcessBundle\Entity\ScenarisationStage", inversedBy="questionOrder")
* @ORM\ManyToOne(targetEntity="ScenarisationProcessBundle\Entity\ScenarisationStage", inversedBy="questionOrder", cascade={"persist"})
* @ORM\JoinColumn(nullable=true, onDelete="SET NULL")
*/
private $scenarisationStage;
......
......@@ -36,7 +36,7 @@ class ScenarisationProcess
private $description;
/**
* @ORM\OneToMany(targetEntity="ScenarisationProcessBundle\Entity\ScenarisationStageOrder", mappedBy="scenarisationProcess", cascade={"persist"})
* @ORM\OneToMany(targetEntity="ScenarisationProcessBundle\Entity\ScenarisationStageOrder", mappedBy="scenarisationProcess", cascade={"persist", "remove"})
* @ORM\JoinColumn(nullable=false)
*/
private $scenarisationStageOrder;
......
......@@ -49,7 +49,7 @@ class ScenarisationStage
private $questionOrder;
/**
* @ORM\OneToMany(targetEntity="ScenarisationProcessBundle\Entity\ScenarisationStageOrder", mappedBy="scenarisationStage", cascade={"persist"})
* @ORM\OneToMany(targetEntity="ScenarisationProcessBundle\Entity\ScenarisationStageOrder", mappedBy="scenarisationStage", cascade={"persist", "remove"})
* @ORM\JoinColumn(nullable=false)
*/
private $scenarisationStageOrder;
......
......@@ -31,13 +31,13 @@ class ScenarisationStageOrder
private $position;
/**
* @ORM\ManyToOne(targetEntity="ScenarisationProcessBundle\Entity\ScenarisationProcess", inversedBy="scenarisationStageOrder")
* @ORM\ManyToOne(targetEntity="ScenarisationProcessBundle\Entity\ScenarisationProcess", inversedBy="scenarisationStageOrder", cascade={"persist"})
* @ORM\JoinColumn(nullable=true, onDelete="SET NULL")
*/
private $scenarisationProcess;
/**
* @ORM\ManyToOne(targetEntity="ScenarisationProcessBundle\Entity\ScenarisationStage", inversedBy="scenarisationStageOrder")
* @ORM\ManyToOne(targetEntity="ScenarisationProcessBundle\Entity\ScenarisationStage", inversedBy="scenarisationStageOrder", cascade={"persist"})
* @ORM\JoinColumn(nullable=true, onDelete="SET NULL")
*/
private $scenarisationStage;
......
<?php
namespace ScenarisationProcessBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
class QuestionType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('enWording',TextareaType::class, array("label" => "enWording"));
$builder->add('frWording',TextareaType::class, array("label" => "frWording"));
$builder->add('esWording',TextareaType::class, array("label" => "esWording"));
$builder->add('type', ChoiceType::class, array(
'choices' => array(
'generalQuestion' => 'generalQuestion',
'sequenceQuestion' => 'sequenceQuestion',
'sessionQuestion' => 'sessionQuestion'
),
'expanded' => true,
'multiple' => false
));
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'ScenarisationProcessBundle\Entity\Question'
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'scenarisationprocessbundle_question';
}
}
......@@ -46,3 +46,8 @@ scenarisation_process_stage_positions_AJAX_CALL:
path: /{scen_process_id}/{scen_stageOrder_id}/{position}/sort
defaults: { _controller: "ScenarisationProcessBundle:ScenarisationProcess:sort" }
methods: GET
scenarisation_process_clone:
path: /{id}/clone
defaults: { _controller: "ScenarisationProcessBundle:ScenarisationProcess:clone" }
methods: GET
......@@ -27,6 +27,9 @@
<li>
<a href="{{ path('scenarisation_process_stage_management', { 'id': scenarisationProcess.id }) }}">{{'scenarisationProcess.stagesManagement'|trans}}</a>
</li>
<li>
<a href="{{ path('scenarisation_process_clone', { 'id': scenarisationProcess.id }) }}">CLONER</a>
</li>
</ul>
</td>
</tr>
......
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