Commit ea3ab1d1 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Association d'individu à un membre de jury : si un acteur existe déjà avec le...

Association d'individu à un membre de jury : si un acteur existe déjà avec le même individu et le même rôle pas besoin d'en créer un nouveau.
parent 2afaaba3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ Journal des modifications

13.1.0
------
- Association d'individu à un membre de jury : si un acteur existe déjà avec le même individu et le même rôle pas besoin d'en créer un nouveau.
- [FIX] Plantage lors de la suppression d'un dossier d'admission : toutes les données liées n'étaient pas supprimées correctement au préalable.
- [FIX] Plantage lors de la suppression d'une association d'individu à un membre de jury en l'absence de directeur de thèse.
- [FIX] Formulaire d'association d'individu à un membre de jury : plantage dû à un bug dans la validation permettant d'enregistrer sans fournir l'établissement requis.
+14 −14
Original line number Diff line number Diff line
@@ -9,17 +9,15 @@ use Application\Entity\Db\Role;
use Application\Entity\Db\Source;
use Doctrine\ORM\Exception\ORMException;
use Exception;
use Fichier\Entity\Db\NatureFichier;
use Fichier\Service\Fichier\FichierStorageServiceAwareTrait;
use Fichier\Service\Storage\Adapter\Exception\StorageAdapterException;
use Individu\Entity\Db\Individu;
use InvalidArgumentException;
use JetBrains\PhpStorm\NoReturn;
use Laminas\Http\Response;
use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger;
use Laminas\View\Model\ViewModel;
use Laminas\View\Renderer\PhpRenderer;
use Soutenance\Controller\PresoutenanceController;
use Soutenance\Entity\AvisEd;
use Soutenance\Entity\Membre;
use Soutenance\Entity\PropositionThese;
use Soutenance\Provider\Parametre\These\SoutenanceParametres;
@@ -181,8 +179,9 @@ class PresoutenanceTheseController extends PresoutenanceController
    public function associerJurySygalAction() : ViewModel|Response
    {
        $this->initializeFromType();

        $membre = $this->getMembreService()->getRequestedMembre($this);
        $codeRole = "";

        switch ($membre->getRole()) {
            case Membre::RAPPORTEUR_JURY :
            case Membre::RAPPORTEUR_VISIO :
@@ -192,6 +191,8 @@ class PresoutenanceTheseController extends PresoutenanceController
            case Membre::MEMBRE_JURY :
                $codeRole = Role::CODE_MEMBRE_JURY;
                break;
            default:
                throw new InvalidArgumentException("Rôle du membre inattendu !");
        }
        $role = $this->applicationRoleService->getRepository()->findOneByCodeAndStructureConcrete($codeRole, $this->entity->getEtablissement());

@@ -234,19 +235,18 @@ class PresoutenanceTheseController extends PresoutenanceController
        $acteur = $form->getData();

        $acteurInBdd = $this->acteurService->getRepository()->findActeurByIndividuAndTheseAndRole($acteur->getIndividu(), $acteur->getThese(), $acteur->getRole());
        // si un acteur existe déjà avec le même individu et le même rôle pas besoin de le créer
        if ($acteurInBdd !== null) {
            $this->flashMessenger()->addErrorMessage($acteur->getIndividu()." est déjà associé à un membre avec le rôle ".$acteur->getRole());
            return $this->redirect()->toRoute("soutenance_{$this->type}/presoutenance", ['these' => $this->entity->getId()], [], true);
        }
            $acteur = $acteurInBdd;
        } else {
            try {
                $this->acteurService->save($acteur);
            } catch(RuntimeException) {
                throw new RuntimeException("Un problème est survenue lors de l'enregistrement en base d'un acteur");
            }
        }

//        //mise à jour du membre de soutenance
//        $membre->setActeur($acteur);
//        $this->getMembreService()->update($membre);
        //mise à jour du membre de soutenance
        $acteur->setMembre($membre);
        $this->acteurService->save($acteur);
        $this->flashMessenger()->addSuccessMessage($membre->getDenomination()." a bien été associé à un acteur.");