Commit 8759b1f6 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

[FIX] Module HDR : lors de l'association membre-acteur, si un acteur existe...

[FIX] Module HDR : lors de l'association membre-acteur, si un acteur existe déjà avec les mêmes caractéristiques majeures, on modifie/complète l'existant.
parent 1a77ae59
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ Journal des modifications
- [FIX] Modification d'un acteur sur la fiche Thèse : l'affichage du formulaire (bouton 'crayon') plantait (pb dans la vue).
- [FIX] Soutenance : la création de plusieurs adresses de soutenance doit être empêchée (màj BDD requise).
- [FIX] Module HDR : désactivation du comptage des rapporteurs de rang B sans HDR (les gestionnaires vérifieront manuellement).
- [FIX] Module HDR : lors de l'association membre-acteur, si un acteur existe déjà avec les mêmes caractéristiques majeures, on modifie/complète l'existant.
- [FIX] Le rôle Observateur Structure étais éjecté des pages Soutenances (thèses et HDR).
- [FIX] Soutenance : la révocation d'un avis de soutenance est impossible dès lors que le dossier de soutenance est passé à l'état 'Dossier complet'.
- [FIX] Soutenance : correction des messages indiquant un jury invalide pour le ratio de rang A et le ratio d'extérieurs.
+6 −7
Original line number Diff line number Diff line
@@ -241,18 +241,17 @@ abstract class AbstractActeurRepository extends DefaultEntityRepository
//        return $qb->getQuery()->getResult();
//    }

    public function findActeurForSoutenanceMembre(Membre $soutenanceMembre): ActeurThese|ActeurHDR|null
    public function findActeurForSoutenanceMembre(Membre $membre): ActeurThese|ActeurHDR|null
    {
        $qb = $this->createQueryBuilder('a')
            ->addSelect('i')->join('a.individu', 'i')
//            ->addSelect('t')->join('a.these', 't')
            ->addSelect('m')->join('a.membre', 'm')
            ->addSelect('r')->join('a.role', 'r')
            ->addSelect('s')->leftJoin('r.structure', 's')
            ->addSelect('u')->leftJoin('i.utilisateurs', 'u')
            ->andWhere('a.histoDestruction is null')
            ->andWhere('i.histoDestruction is null')
            ->andWhere('m = :membre')->setParameter('membre', $soutenanceMembre);
            ->andWhere('m = :membre')->setParameter('membre', $membre);

        if (get_class($this) === ActeurTheseRepository::class) {
            $qb->addSelect('ent')->join('a.these', 'ent');
@@ -268,14 +267,14 @@ abstract class AbstractActeurRepository extends DefaultEntityRepository
    }

    /**
     * @param Membre[] $rapporteurs
     * @param Membre[] $membres
     * @return ActeurThese[]
     */
    public function findActeursForSoutenanceMembres(array $rapporteurs): array
    public function findActeursForSoutenanceMembres(array $membres): array
    {
        $acteurs = [];
        foreach ($rapporteurs as $rapporteur) {
            $acteurs[$rapporteur->getId()] = $this->findActeurForSoutenanceMembre($rapporteur);
        foreach ($membres as $membre) {
            $acteurs[$membre->getId()] = $this->findActeurForSoutenanceMembre($membre);
        }

        return $acteurs;
+0 −14
Original line number Diff line number Diff line
@@ -131,18 +131,4 @@ class ActeurHDRRepository extends AbstractActeurRepository
            $acteur->getIndividu() !== $garantIndividu
        );
    }

    public function findActeurForSoutenanceMembre(Membre $soutenanceMembre): ActeurHDR|null
    {
        return parent::findActeurForSoutenanceMembre($soutenanceMembre);
    }

    /**
     * @param Membre[] $rapporteurs
     * @return ActeurHDR[]
     */
    public function findActeursForSoutenanceMembres(array $rapporteurs): array
    {
        return parent::findActeursForSoutenanceMembres($rapporteurs);
    }
}
 No newline at end of file
+0 −14
Original line number Diff line number Diff line
@@ -140,18 +140,4 @@ class ActeurTheseRepository extends AbstractActeurRepository
        !in_array($acteur->getIndividu(), $individusExclus, true)
        );
    }

    public function findActeurForSoutenanceMembre(Membre $soutenanceMembre): ActeurThese|null
    {
        return parent::findActeurForSoutenanceMembre($soutenanceMembre);
    }

    /**
     * @param Membre[] $rapporteurs
     * @return ActeurThese[]
     */
    public function findActeursForSoutenanceMembres(array $rapporteurs): array
    {
        return parent::findActeursForSoutenanceMembres($rapporteurs);
    }
}
 No newline at end of file
+11 −1
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ use Application\Entity\Db\Role;
use Doctrine\Laminas\Hydrator\DoctrineObject;
use Individu\Entity\Db\Individu;
use Soutenance\Entity\Qualite;
use Structure\Entity\Db\Etablissement;
use Structure\Entity\Db\UniteRecherche;

class AbstractActeurHydrator extends DoctrineObject
@@ -35,6 +36,12 @@ class AbstractActeurHydrator extends DoctrineObject
                'label' => $data['individu']->getNomComplet(),
            ];
        }
        if ($data['etablissement'] instanceof Etablissement) {
            $data['etablissement'] = [
                'id' => $data['etablissement']->getId(),
                'label' => (string) $data['etablissement'],
            ];
        }

        // Select
        $data['role'] = $data['role'] instanceof Role ? $data['role']->getId() : null;
@@ -48,9 +55,12 @@ class AbstractActeurHydrator extends DoctrineObject
    {
        /** @var ActeurThese|ActeurHDR $object */

        // SearchAndSelect
        $data['individu'] = $data['individu']['id'] ?? null;
        $data['etablissement'] = $data['etablissement']['id'] ?? null;

        // Select
        $data['uniteRecherche'] = $data['uniteRecherche'] != "" ? $data['uniteRecherche'] : null;
        $data['individu'] = $data['individu']['id'] ?? null;

        $this->acteurRule->setActeur($object);
        $data = $this->acteurRule->prepareActeurHydratorData($data);
Loading