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

Etablissements : 3 saisies dédiées selon le type d'étab (d'inscription, CED,...

Etablissements : 3 saisies dédiées selon le type d'étab (d'inscription, CED, autre) ; amélioration du listing des établissements.
parent 990f3d90
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ Journal des modifications
- Module Admission : Export vers Pégase -> concernant le sexe, M et Mme deviennent M et F
- Module Admission : Export vers Pégase -> export seulement des thèses dont l'individu n'est pas encore doctorant
- Possibilité pour le futur doctorant de se créer un compte utilisateur local pour saisir un dossier d'admission.
- Etablissements : 3 saisies dédiées selon le type d'étab (d'inscription, CED, autre) ; amélioration du listing des établissements.
- [FIX] Recherche textuelle d'individu : la prise en compte de chacun des termes avait été sabotée !
- [FIX] Le bouton de recherche/liaison de notice IdRef ne fonctionnait pas dans une modale (unicaen/idref 1.0.0 requis).
- [FIX] Synchro : plantage lors de la génération du diff (unicaen/db-import 6.1.3 nécessaire car nouvelle plateforme Doctrine\DBAL\Platforms\PostgreSQL120Platform).
+17 −4
Changes for module/Structure/config/others/etablissement.config.php: 17 added lines, 4 removed lines.
Original line number Diff line number Diff line
<?php

use Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;
use Structure\Controller\EtablissementController;
use Structure\Controller\Factory\EtablissementControllerFactory;
use Structure\Form\Factory\EtablissementFormFactory;
use Structure\Form\Factory\EtablissementHydratorFactory;
use Structure\Form\InputFilter\Etablissement\Ced\EtablissementCedInputFilter;
use Structure\Form\InputFilter\Etablissement\Ced\EtablissementCedInputFilterFactory;
use Structure\Form\InputFilter\Etablissement\EtablissementInputFilter;
use Structure\Form\InputFilter\Etablissement\EtablissementInputFilterFactory;
use Structure\Form\InputFilter\Etablissement\Inscription\EtablissementInscriptionInputFilter;
use Structure\Form\InputFilter\Etablissement\Inscription\EtablissementInscriptionInputFilterFactory;
use Structure\Provider\Privilege\StructurePrivileges;
use Structure\Service\Etablissement\EtablissementService;
use Structure\Service\Etablissement\EtablissementServiceFactory;
use Structure\View\Helper\EtablissementHelper;
use UnicaenAuth\Guard\PrivilegeController;
use Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;

return [
    'bjyauthorize'    => [
@@ -105,9 +111,9 @@ return [
                        ],
                    ],
                    'ajouter' => [
                        'type'          => Literal::class,
                        'type'          => Segment::class,
                        'options'       => [
                            'route'       => '/ajouter',
                            'route'       => '/ajouter[/:type]',
                            'defaults'    => [
                                'action' => 'ajouter',
                            ],
@@ -244,6 +250,13 @@ return [
            'EtablissementForm' => EtablissementFormFactory::class,
        ],
    ],
    'input_filters' => [
        'factories' => [
            EtablissementInputFilter::class => EtablissementInputFilterFactory::class,
            EtablissementInscriptionInputFilter::class => EtablissementInscriptionInputFilterFactory::class,
            EtablissementCedInputFilter::class => EtablissementCedInputFilterFactory::class,
        ],
    ],
    'hydrators' => array(
        'factories' => array(
            'EtablissementHydrator' => EtablissementHydratorFactory::class,
+24 −31
Changes for module/Structure/src/Structure/Controller/EtablissementController.php: 24 added lines, 31 removed lines.
Original line number Diff line number Diff line
@@ -2,25 +2,20 @@

namespace Structure\Controller;

use Application\Service\Role\RoleServiceAwareTrait;
use InvalidArgumentException;
use Laminas\Http\Response;
use Laminas\View\Model\JsonModel;
use Laminas\View\Model\ViewModel;
use Structure\Entity\Db\Etablissement;
use Individu\Entity\Db\Individu;
use Individu\Entity\Db\IndividuRole;
use Application\Entity\Db\Role;
use Structure\Entity\Db\StructureConcreteInterface;
use Structure\Entity\Db\TypeStructure;
use Structure\Service\Etablissement\EtablissementService;
use Structure\Service\Etablissement\EtablissementServiceAwareTrait;
use Application\Service\Role\RoleServiceAwareTrait;
use Structure\Service\StructureDocument\StructureDocumentServiceAwareTrait;
use Laminas\View\Model\JsonModel;
use UnicaenApp\Exception\RuntimeException;
use Laminas\Http\Response;
use Laminas\View\Model\ViewModel;
use UnicaenApp\Util;

/**
 * Class EtablissementController
 * @property \Structure\Form\EtablissementForm $structureForm
 */
class EtablissementController extends StructureConcreteController
{
@@ -47,24 +42,18 @@ class EtablissementController extends StructureConcreteController

        $etablissements = $viewModel->getVariable('structures');

        $etablissementsPrincipaux = array_filter($etablissements, function (Etablissement $e) {
            return $e->estMembre();
        });
        $etablissementsExternes = array_filter($etablissements, function (Etablissement $e) {
            return !$e->estMembre();
        });
        $etablissementsCeds = array_filter($etablissements, function (Etablissement $e) {
            return $e->estCed();
        });
        $etablissementsMembres = array_filter($etablissements, fn(Etablissement $e) =>$e->estMembre());
        $etablissementsCeds = array_filter($etablissements, fn(Etablissement $e) => $e->estCed());
        $etablissementsAutres = array_filter($etablissements, fn(Etablissement $e) => !$e->estMembre() && !$e->estCed());

        if (count($etablissementsCeds) > 1) {
            throw new \RuntimeException("Anomalie rencontrée : il existe plusieurs établissements CED");
        }

        return new ViewModel([
            'etablissementsSygal' => $etablissementsPrincipaux,
            'etablissementsExternes' => $etablissementsExternes,
            'etablissementsMembres' => $etablissementsMembres,
            'etablissementsCeds' => $etablissementsCeds,
            'etablissementsAutres' => $etablissementsAutres,
        ]);
    }

@@ -128,12 +117,15 @@ class EtablissementController extends StructureConcreteController
        ]);
    }

    /**
     * @return Response|ViewModel
     */
    public function modifierAction()
    public function ajouterAction(): Response|ViewModel
    {
        $viewModel = parent::modifierAction();
        $type = $this->params('type', Etablissement::TYPE_AUTRE);

        $etablissement = new Etablissement();
        $etablissement->initializeForType($type);
        $this->structureForm->bind($etablissement);

        $viewModel = parent::ajouterAction();

        if ($viewModel instanceof Response) {
            return $viewModel;
@@ -144,12 +136,13 @@ class EtablissementController extends StructureConcreteController
        return $viewModel;
    }

    /**
     * @return Response|ViewModel
     */
    public function ajouterAction()
    public function modifierAction(): Response|ViewModel
    {
        $viewModel = parent::ajouterAction();
        /** @var Etablissement $structureConcrete */
        $structureConcrete = $this->getRequestedStructureConcrete();
        $structureConcrete->initializeForType();

        $viewModel = parent::modifierAction();

        if ($viewModel instanceof Response) {
            return $viewModel;
+8 −18
Changes for module/Structure/src/Structure/Controller/StructureConcreteController.php: 8 added lines, 18 removed lines.
Original line number Diff line number Diff line
@@ -3,9 +3,13 @@
namespace Structure\Controller;

use Application\Controller\AbstractController;
use Structure\Entity\Db\EcoleDoctorale;
use Individu\Entity\Db\IndividuRole;
use Application\Entity\Db\Role;
use Application\Service\Role\RoleServiceAwareTrait;
use BjyAuthorize\Exception\UnAuthorizedException;
use Individu\Entity\Db\IndividuRole;
use Laminas\Http\Response;
use Laminas\View\Model\ViewModel;
use Structure\Entity\Db\EcoleDoctorale;
use Structure\Entity\Db\Etablissement;
use Structure\Entity\Db\StructureConcreteInterface;
use Structure\Entity\Db\TypeStructure;
@@ -16,13 +20,9 @@ use Structure\Form\UniteRechercheForm;
use Structure\Provider\Privilege\StructurePrivileges;
use Structure\Service\EcoleDoctorale\EcoleDoctoraleService;
use Structure\Service\Etablissement\EtablissementService;
use Application\Service\Role\RoleServiceAwareTrait;
use Structure\Service\Structure\StructureServiceAwareTrait;
use Structure\Service\UniteRecherche\UniteRechercheService;
use BjyAuthorize\Exception\UnAuthorizedException;
use UnicaenApp\Exception\RuntimeException;
use Laminas\Http\Response;
use Laminas\View\Model\ViewModel;

abstract class StructureConcreteController extends AbstractController
{
@@ -134,11 +134,9 @@ abstract class StructureConcreteController extends AbstractController
     * Modifier permet soit d'afficher le formulaire associé à la modification soit de mettre à jour
     * les données associées à une structure (Sigle, Libellé, Code et Logo)
     *
     * @return Response|ViewModel
     *
     * TODO en cas de changement de SIGLE ou de CODE penser à faire un renommage du logo
     */
    public function modifierAction()
    public function modifierAction(): Response|ViewModel
    {
        $structureConcrete = $this->getRequestedStructureConcrete();
        $this->structureForm->bind($structureConcrete);
@@ -190,10 +188,7 @@ abstract class StructureConcreteController extends AbstractController
        );
    }

    /**
     * @return Response|ViewModel
     */
    public function ajouterAction()
    public function ajouterAction(): Response|ViewModel
    {
        $request = $this->getRequest();

@@ -213,9 +208,6 @@ abstract class StructureConcreteController extends AbstractController
                    $this->ajouterLogoStructure($file['cheminLogo']['tmp_name'], $structureConcrete);
                }

                // creation automatique des roles associés à une structure
                $this->roleService->addRoleByStructure($structureConcrete);

                $this->flashMessenger()->addSuccessMessage("Structure '$structureConcrete' créée avec succès");

                $structureId = $structureConcrete->getStructure()->getId();
@@ -224,8 +216,6 @@ abstract class StructureConcreteController extends AbstractController
            }
        }

        $this->structureForm->setAttribute('action', $this->url()->fromRoute($this->routeName . '/ajouter'));

        return new ViewModel([
            'form' => $this->structureForm,
        ]);
+7 −0
Changes for module/Structure/src/Structure/Controller/StructureController.php: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -131,7 +131,13 @@ class StructureController extends AbstractController
            NatureFichier::CODE_SIGNATURE_RAPPORT_ACTIVITE,
            NatureFichier::CODE_ADMISSION_CHARTE_DOCTORAT
        ]);
        if ($etab = $structure->getEtablissement()) {
            $allowAucunEtablissement = false;
            $etablissements = [$etab];
        } else {
            $allowAucunEtablissement = true;
            $etablissements = $this->etablissementService->getRepository()->findAllEtablissementsInscriptions();
        }

        $request = $this->getRequest();
        if ($request->isPost()) {
@@ -154,6 +160,7 @@ class StructureController extends AbstractController
            'action' => $this->url()->fromRoute('structure/televerser-document', ['structure' => $structure->getId()], ['query' => ['tab' => StructureController::TAB_docs]], true),
            'natures' => $natures,
            'etablissements' => $etablissements,
            'allowAucunEtablissement' => $allowAucunEtablissement,
        ]);
        $vm->setTemplate('structure/structure/televerser-document');

Loading