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

Annuaire des thèses : initialiser le filtre ED/UR/Etab avec la structure du rôle utilisateur.

parent e742b487
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ Journal des modifications
- Petites améliorations autour des notifs concernant les changements détectés lors de l'import (admission, corrections attendues).
- Financements sur la fiche Thèse : afficher la nature devant chaque info (type, origine, quotité).
- Page de connexion : amélioration du texte expliquant l'authentification via la fédération d'identité (NB : le texte est dans la config locale).
- Annuaire des thèses : initialisation du filtre ED/UR/Etab avec la structure du rôle utilisateur (avec possibilité de changer).
- [FIX] Observation des résultats d'import/synchro : correction du filtrage par source de données (anciennement 'etablissement') non pris en compte.
- [FIX] Upgrade d'unicaen/app pour corriger le lien Ajouter dysfonctionnel dans le formulaire Rapport d'activité.
- [FIX] Appel de fonction erroné faisant planter la notification 'correction attendue'.
+25 −46
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@ use These\Service\These\TheseSearchService;
use These\Service\These\TheseServiceAwareTrait;

/**
 * Class TheseRechercheController
 *
 * @property TheseSearchService $searchService
 */
class TheseRechercheController extends AbstractController implements SearchControllerInterface
@@ -28,21 +26,12 @@ class TheseRechercheController extends AbstractController implements SearchContr
    use RoleServiceAwareTrait;
    use TheseServiceAwareTrait;

    /**
     * @var array
     */
    private $queryParams;

    /**
     * @var array
     */
    private $searchIfRequired = false; // todo : ne pas mettre à true car impossible de dépasser la page 1 !! :-(
    private bool $searchIfRequired = false; // todo : ne pas mettre à true car impossible de dépasser la page 1 !! :-(

    /**
     * @return ViewModel|Response
     */
    public function indexAction()
    public function indexAction(): Response|ViewModel
    {
        $this->restrictFiltersByStructure();

        $text = $this->params()->fromQuery('text');

        /** @see TheseSearchService */
@@ -67,11 +56,10 @@ class TheseRechercheController extends AbstractController implements SearchContr
        ]);
    }

    /**
     * @return ViewModel
     */
    public function indexFiltersAction(): ViewModel
    {
        $this->restrictFiltersByStructure();

        $filters = $this->filters();

        $vm = new ViewModel([
@@ -83,34 +71,6 @@ class TheseRechercheController extends AbstractController implements SearchContr
        return $vm;
    }

//    /**
//     * Pour les acteurs de thèses en général (Doctorant, Dir, Codir, etc.)
//     *
//     * @return ViewModel|Response
//     */
//    public function miennesAction()
//    {
//        /** @var Role $role */
//        $role = $this->userContextService->getSelectedIdentityRole();
//        $individu = $this->userContextService->getIdentityIndividu();
//        $etats = [These::ETAT_EN_COURS];
//
//        switch (true) {
//            case $role->isDoctorant() :
//                $theses = $this->theseService->getRepository()->findThesesByDoctorantAsIndividu($individu, $etats);
//                break;
//            case $role->isActeurDeThese() :
//                $theses = $this->theseService->getRepository()->findThesesByActeur($individu, $role, $etats);
//                break;
//            default:
//                return $this->redirect()->toRoute('home');
//        }
//
//        return new ViewModel([
//            'theses' => $theses,
//        ]);
//    }

    /**
     * Prévu pour ED, UR, MDD.
     *
@@ -176,4 +136,23 @@ class TheseRechercheController extends AbstractController implements SearchContr
            ->setDefaultValueAsObject($entity)
            ->setAllowsEmptyOption(false);
    }

    private function restrictFiltersByStructure(): void
    {
        $role = $this->userContextService->getSelectedIdentityRole();

        if ($role->isEcoleDoctoraleDependant()) {
            $filter = $this->searchService->getEcoleDoctoraleSearchFilter();
            $sc = $role->getStructure()->getEcoleDoctorale();
            $filter->setDefaultValueAsObject($sc);
        } elseif ($role->isUniteRechercheDependant()) {
            $filter = $this->searchService->getUniteRechercheSearchFilter();
            $sc = $role->getStructure()->getUniteRecherche();
            $filter->setDefaultValueAsObject($sc);
        } elseif ($role->isEtablissementDependant()) {
            $filter = $this->searchService->getEtablissementInscSearchFilter();
            $sc = $role->getStructure()->getEtablissement();
            $filter->setDefaultValueAsObject($sc);
        }
    }
}
 No newline at end of file