Commit c1f1d9f6 authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Ajout test au niveau des données perso pour ne pas mettre un statut d'une...

Ajout test au niveau des données perso pour ne pas mettre un statut d'une année sur un intervenant d'une autre année (#53668)
parent b6bc7615
Loading
Loading
Loading
Loading
+33 −25
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ namespace Dossier\Controller;

use Application\Constants;
use Application\Controller\AbstractController;
use DoctrineORMModule\Proxy\__CG__\Intervenant\Entity\Db\Statut;
use Dossier\Form\Traits\IntervenantDossierFormAwareTrait;
use Indicateur\Entity\Db\IndicModifDossier;
use Application\Entity\Db\Intervenant;
@@ -159,8 +160,7 @@ class IntervenantDossierController extends AbstractController



    public
    function changeStatutDossierAction()
    public function changeStatutDossierAction ()
    {
        if ($this->getRequest()->isPost()) {
            $data        = $this->getRequest()->getPost();
@@ -171,15 +171,22 @@ class IntervenantDossierController extends AbstractController
            }

            $intervenantDossier = $this->getServiceDossier()->getByIntervenant($intervenant);
            /**
             * @var Statut $statut
             */
            $statut = $this->getServiceStatut()->get($data['DossierStatut']['statut']);

            if ($statut) {
                //On vérifie que l'année du statut est bien la même année que celle de l'intervenant que l'on veut modifier
                if ($statut->getAnnee()->getId() != $intervenant->getAnnee()->getId()) {
                    $this->flashMessenger()->addErrorMessage("L'année du statut ( " . $statut->getAnnee()->getLibelle() . ") et celle de l'intervenant ( " . $intervenant->getAnnee()->getLibelle() . ") sont différentes. Impossible de mettre à jour le statut.");
                } else {
                    $intervenantDossier->setStatut($statut);
                    $this->getServiceDossier()->save($intervenantDossier);
                    $intervenant->setStatut($statut);
                    $intervenant->setSyncStatut(false);
                    $this->getServiceIntervenant()->save($intervenant);
                    $this->updateTableauxBord($intervenant);

                    // Lorsqu'un intervenant modifie son dossier, le rôle à sélectionner à la prochine requête doit correspondre
                    // au statut choisi dans le dossier.
                    if ($role->getIntervenant()) {
@@ -190,6 +197,7 @@ class IntervenantDossierController extends AbstractController
                    }
                }
            }
        }

        return $this->redirect()->toUrl($this->url()->fromRoute('intervenant/dossier', [], [], true));
    }