Commit e38bddaa authored by Thomas Hamel's avatar Thomas Hamel
Browse files

possibilité de renseigner le président du jury d'une thèse/hdr provenant de sygal

parent 0d2f928f
Loading
Loading
Loading
Loading
+37 −0
Changes for module/Acteur/src/Acteur/Entity/Db/Repository/ActeurHDRRepository.php: 37 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ use Application\Entity\Db\Role;
use HDR\Entity\Db\HDR;
use Individu\Entity\Db\Individu;
use Soutenance\Entity\Membre;
use Soutenance\Entity\Proposition;
use Structure\Entity\Db\EcoleDoctorale;
use Structure\Entity\Db\Etablissement;

@@ -95,6 +96,42 @@ class ActeurHDRRepository extends AbstractActeurRepository
//        return $qb->getQuery()->getResult();
//    }

    /**
     * @return Membre[]
     */
    public function findAllActeursPouvantEtrePresidentDuJury(Proposition $proposition) : array
    {
        // peuvent être président du jury les membres de rang A
//        $qb = $this->createQueryBuilder()
//            ->andWhere('proposition = :proposition')->setParameter('proposition', $proposition)
//            ->andWhere('qualite.rang = :rang')->setParameter('rang', 'A')
//            ->addOrderBy('membre.nom', 'ASC');

        $qb = $this->createQueryBuilder("acteur")
            ->addSelect('membre')->join('acteur.membre', 'membre')
            ->addSelect('individu')->join('acteur.individu', 'individu')
            ->addSelect('proposition')->join('membre.proposition', 'proposition')
            ->addSelect('qualite')->join('membre.qualite', 'qualite');
//            ->addSelect('acteur')->join('membre.acteur', 'acteur') // NB : une Acteur doit avoir été associé au Membre

        // peuvent être président du jury les membres de rang A
        $qb
            ->andWhere('proposition = :proposition')->setParameter('proposition', $proposition)
            ->andWhere('qualite.rang = :rang')->setParameter('rang', 'A')
            ->andWhereNotHistorise('membre')
            ->addOrderBy('membre.nom', 'ASC');

        $garantIndividu = $proposition->getObject()
            ->getActeursByRoleCode(Role::CODE_HDR_GARANT)
            ->first()
            ->getIndividu();

        $acteursSansGarant = array_filter($qb->getQuery()->getResult(), fn($acteur) =>
            $acteur->getIndividu() !== $garantIndividu
        );
        return $acteursSansGarant;
    }

    public function findActeurForSoutenanceMembre(Membre $soutenanceMembre): ActeurHDR|null
    {
        return parent::findActeurForSoutenanceMembre($soutenanceMembre);
+37 −0
Changes for module/Acteur/src/Acteur/Entity/Db/Repository/ActeurTheseRepository.php: 37 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ use Acteur\Entity\Db\ActeurThese;
use Application\Entity\Db\Role;
use Individu\Entity\Db\Individu;
use Soutenance\Entity\Membre;
use Soutenance\Entity\Proposition;
use Structure\Entity\Db\EcoleDoctorale;
use Structure\Entity\Db\Etablissement;
use These\Entity\Db\These;
@@ -95,6 +96,42 @@ class ActeurTheseRepository extends AbstractActeurRepository
        return $qb->getQuery()->getResult();
    }

    /**
     * @return Membre[]
     */
    public function findAllActeursPouvantEtrePresidentDuJury(Proposition $proposition) : array
    {
        // peuvent être président du jury les membres de rang A
//        $qb = $this->createQueryBuilder()
//            ->andWhere('proposition = :proposition')->setParameter('proposition', $proposition)
//            ->andWhere('qualite.rang = :rang')->setParameter('rang', 'A')
//            ->addOrderBy('membre.nom', 'ASC');

        $qb = $this->createQueryBuilder("acteur")
            ->addSelect('membre')->join('acteur.membre', 'membre')
            ->addSelect('individu')->join('acteur.individu', 'individu')
            ->addSelect('proposition')->join('membre.proposition', 'proposition')
            ->addSelect('qualite')->join('membre.qualite', 'qualite');
//            ->addSelect('acteur')->join('membre.acteur', 'acteur') // NB : une Acteur doit avoir été associé au Membre

        // peuvent être président du jury les membres de rang A
        $qb
            ->andWhere('proposition = :proposition')->setParameter('proposition', $proposition)
            ->andWhere('qualite.rang = :rang')->setParameter('rang', 'A')
            ->andWhereNotHistorise('membre')
            ->addOrderBy('membre.nom', 'ASC');

        $directeurIndividu = $proposition->getObject()
            ->getActeursByRoleCode(Role::CODE_DIRECTEUR_THESE)
            ->first()
            ->getIndividu();

        $acteursSansDirectionThese = array_filter($qb->getQuery()->getResult(), fn($acteur) =>
            $acteur->getIndividu() !== $directeurIndividu
        );
        return $acteursSansDirectionThese;
    }

    public function findActeurForSoutenanceMembre(Membre $soutenanceMembre): ActeurThese|null
    {
        return parent::findActeurForSoutenanceMembre($soutenanceMembre);
+0 −7
Changes for module/HDR/src/HDR/Service/HDRService.php: 0 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -246,13 +246,6 @@ class HDRService extends BaseService
        if ($hdr->getUniteRecherche()) $pdcData->setUniteRecherche($hdr->getUniteRecherche()->getStructure()->getLibelle());

        // chemins vers les logos
        if ($comue = $this->etablissementService->fetchEtablissementComue()) {
            try {
                $pdcData->setLogoCOMUE($this->fichierStorageService->getFileForLogoStructure($comue->getStructure()));
            } catch (StorageAdapterException $e) {
                $pdcData->setLogoCOMUE(null);
            }
        }
        try {
            $pdcData->setLogoEtablissement($this->fichierStorageService->getFileForLogoStructure($hdr->getEtablissement()->getStructure()));
        } catch (StorageAdapterException $e) {
+24 −0
Changes for module/Soutenance/config/others/presoutenance.config.php: 24 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -89,6 +89,8 @@ return [
                    'controller' => PresoutenanceController::class,
                    'action' => [
                        'associer-jury',
                        'renseigner-president-jury',
                        'dissocier-president-jury',
//                        'deassocier-jury',
//                        'associer-jury-sygal'
                    ],
@@ -336,6 +338,28 @@ return [
                                    ],
                                ],
                            ],
                            'renseigner-president-jury' => [
                                'type' => Segment::class,
                                'may_terminate' => true,
                                'options' => [
                                    'route' => '/renseigner-president-jury/:acteur',
                                    'defaults' => [
                                        'controller' => PresoutenanceController::class,
                                        'action' => 'renseigner-president-jury',
                                    ],
                                ],
                            ],
                            'dissocier-president-jury' => [
                                'type' => Segment::class,
                                'may_terminate' => true,
                                'options' => [
                                    'route' => '/dissocier-president-jury/:acteur',
                                    'defaults' => [
                                        'controller' => PresoutenanceController::class,
                                        'action' => 'dissocier-president-jury',
                                    ],
                                ],
                            ],
                            'notifier-demande-avis-soutenance' => [
                                'type' => Segment::class,
                                'may_terminate' => true,
+3 −1
Changes for module/Soutenance/config/others/presoutenanceHDR.config.php: 3 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -85,7 +85,9 @@ return [
                    'action' => [
                        'associer-jury',
                        'deassocier-jury',
                        'associer-jury-sygal'
                        'associer-jury-sygal',
                        'renseigner-president-jury',
                        'dissocier-president-jury',
                    ],
                    'privileges' => PresoutenancePrivileges::PRESOUTENANCE_ASSOCIATION_MEMBRE_INDIVIDU,
                ],
Loading