Commit 654b9e7b authored by Thomas Hamel's avatar Thomas Hamel
Browse files

Module Admission : Création d'une page de configuration permettant de choisir...

Module Admission : Création d'une page de configuration permettant de choisir les établissements d'inscription pouvant accéder au module
parent 8213cf0a
Loading
Loading
Loading
Loading
+54 −0
Changes for doc/release-notes/v9/9.3.0/04_admission.sql: 54 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -119,3 +119,57 @@ SET document_corps = '<h1 style="text-align: center;">Récapitulatif du dossier
<p>Fait à ____________________, le ________________,</p>
<p>Signature de VAR[String#ToString]</p>'
WHERE code = 'ADMISSION_RECAPITULATIF';


--
-- Nouveaux privilèges.
--
insert into unicaen_privilege_privilege(ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
with d(ordre, code, lib) as (select 1,
                                    'admission-configurer-module',
                                    'Configurer le module Admission'
)
select nextval('privilege_id_seq'), cp.id, d.code, d.lib, d.ordre
from d
         join unicaen_privilege_categorie cp on cp.CODE = 'admission'
WHERE NOT EXISTS (SELECT 1
                  FROM unicaen_privilege_privilege p
                  WHERE p.CODE = d.code);

-- ajout des privilèges au profil BDD (Maison du Doctorat)
INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (select 'admission', 'admission-configurer-module')
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in (
    'ADMIN_TECH',
        'BDD' -- Maison du Doctorat
    )
         join unicaen_privilege_categorie cp on cp.CODE = data.categ
         join unicaen_privilege_privilege p on p.CATEGORIE_ID = cp.id and p.code = data.priv
where not exists (select * from PROFIL_PRIVILEGE where PRIVILEGE_ID = p.id and PROFIL_ID = profil.id);

insert into ROLE_PRIVILEGE (ROLE_ID, PRIVILEGE_ID)
select p2r.ROLE_ID, pp.PRIVILEGE_ID
from PROFIL_TO_ROLE p2r
         join profil pr on pr.id = p2r.PROFIL_ID
         join PROFIL_PRIVILEGE pp on pp.PROFIL_ID = pr.id
where not exists (select * from role_privilege where role_id = p2r.role_id and privilege_id = pp.privilege_id)
;

--Ajout de la variable UTILISATION_MODULE_ADMISSION à true pour les établissements d'inscription existants
INSERT INTO variable (id, etablissement_id, description, valeur, source_code, source_id, date_deb_validite, date_fin_validite, code, histo_createur_id)
SELECT
    nextval('variable_id_seq'),
    e.id AS etablissement_id,
    'Utilisation ou non du module Admission' AS description,
    'true' AS valeur,
    CONCAT(s.sigle, '::UTILISATION_MODULE_ADMISSION') AS source_code,
    1 AS source_id,
    NOW() AS date_deb_validite,
    NOW() + INTERVAL '10 years' AS date_fin_validite,
    'UTILISATION_MODULE_ADMISSION' AS code,
    1
FROM etablissement e
    JOIN structure s ON s.id = e.structure_id  -- Jointure avec la table structure
WHERE e.est_etab_inscription = true;
 No newline at end of file
+21 −2
Changes for module/Admission/config/module.config.php: 21 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -208,6 +208,15 @@ return array(
                        AdmissionPrivileges::ADMISSION_GENERER_EXPORT_ADMISSIONS,
                    ],
                ],
                [
                    'controller' => AdmissionController::class,
                    'action'     => [
                        'configurer-module-admission',
                    ],
                    'privileges' => [
                        AdmissionPrivileges::ADMISSION_CONFIGURER_MODULE,
                    ],
                ],
            ]
        ],
    ],
@@ -305,6 +314,17 @@ return array(
                            ],
                        ],
                    ],
                    'configurer-module-admission' => [
                        'type'          => Segment::class,
                        'options'       => [
                            'route'    => '/configurer-module-admission',
                            'defaults' => [
                                /** @see AdmissionController::configurerModuleAdmissionAction() */
                                'controller'    => AdmissionController::class,
                                'action'        => 'configurer-module-admission',
                            ],
                        ],
                    ],
                    'recherche' => [
                        'type' => Literal::class,
                        'options' => [
@@ -346,8 +366,7 @@ return array(
                        'label' => 'Admission',
                        'route' => 'admission',
                        'resource' => PrivilegeController::getResourceId(AdmissionRechercheController::class, 'index'),
                        'pages' => [
                        ],
                        'pages' => []
                    ],

                    /**
+20 −0
Changes for module/Admission/src/Admission/Controller/AdmissionController.php: 20 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -34,8 +34,10 @@ use Admission\Service\TypeValidation\TypeValidationServiceAwareTrait;
use Admission\Service\Validation\AdmissionValidationServiceAwareTrait;
use Admission\Service\Verification\VerificationServiceAwareTrait;
use Application\Entity\Db\Role;
use Application\Entity\Db\Variable;
use Application\Service\Role\ApplicationRoleServiceAwareTrait;
use Application\Service\UserContextServiceAwareTrait;
use Application\Service\Variable\VariableServiceAwareTrait;
use DateTime;
use Doctorant\Entity\Db\Doctorant;
use Doctrine\ORM\Exception\ORMException;
@@ -82,6 +84,7 @@ class AdmissionController extends AdmissionAbstractController {
    use TypeValidationServiceAwareTrait;
    use AdmissionValidationServiceAwareTrait;
    use RenduServiceAwareTrait;
    use VariableServiceAwareTrait;

    public function indexAction(): ViewModel|Response
    {
@@ -876,4 +879,21 @@ class AdmissionController extends AdmissionAbstractController {
            throw new RuntimeException("Un problème est survenu lors de la génération du pdf",0,$e);
        }
    }

    public function configurerModuleAdmissionAction(){
        $etablissementsInscription = $this->etablissementService->getRepository()->findAllEtablissementsInscriptions();

        $tabEtablissementsVariables = [];
        foreach($etablissementsInscription as $etablissementInscription){
            $tabEtablissementsVariables[] = [
                "etablissement" => $etablissementInscription,
                "variable" => $this->variableService->getRepository()->findOneByCodeAndEtab(Variable::CODE_UTILISATION_MODULE_ADMISSION, $etablissementInscription),
                "canAccessModule" => $this->admissionService->canEtabAccessModuleAdmission($etablissementInscription),
            ];
        }

        return new ViewModel([
            'tabEtablissementsVariables' => $tabEtablissementsVariables,
        ]);
    }
}
 No newline at end of file
+3 −0
Changes for module/Admission/src/Admission/Controller/AdmissionControllerFactory.php: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ use Admission\Service\TypeValidation\TypeValidationService;
use Admission\Service\Validation\AdmissionValidationService;
use Admission\Service\Verification\VerificationService;
use Application\Service\Role\RoleService;
use Application\Service\Variable\VariableService;
use Fichier\Service\Fichier\FichierStorageService;
use Individu\Service\IndividuService;
use Interop\Container\ContainerInterface;
@@ -66,6 +67,7 @@ class AdmissionControllerFactory implements FactoryInterface
        $admissionTypeValidationService = $container->get(TypeValidationService::class);
        $admissionValidationService = $container->get(AdmissionValidationService::class);
        $renduService = $container->get(RenduService::class);
        $variableService = $container->get(VariableService::class);

        /** @var AdmissionOperationRule $admissionOperationRule */
        $admissionOperationRule = $container->get(AdmissionOperationRule::class);
@@ -100,6 +102,7 @@ class AdmissionControllerFactory implements FactoryInterface
        $controller->setTypeValidationService($admissionTypeValidationService);
        $controller->setAdmissionValidationService($admissionValidationService);
        $controller->setRenduService($renduService);
        $controller->setVariableService($variableService);

        return $controller;
    }
+4 −0
Changes for module/Admission/src/Admission/Form/Fieldset/Inscription/InscriptionFieldset.php: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ namespace Admission\Form\Fieldset\Inscription;

use Admission\Form\Fieldset\AdmissionBaseFieldset;
use Admission\Form\Fieldset\Verification\VerificationFieldset;
use Admission\Service\Admission\AdmissionServiceAwareTrait;
use Laminas\Filter\StringTrim;
use Laminas\Filter\StripTags;
use Laminas\Filter\ToNull;
@@ -20,6 +21,7 @@ use UnicaenApp\Form\Element\SearchAndSelect;

class InscriptionFieldset extends AdmissionBaseFieldset implements InputFilterProviderInterface
{
    use AdmissionServiceAwareTrait;
    //Informations Inscription
    private string $urlIndividuThese;
    private array $composantesEnseignement;
@@ -80,8 +82,10 @@ class InscriptionFieldset extends AdmissionBaseFieldset implements InputFilterPr
    {
        $options = [];
        foreach ($etablissementsInscription as $etablissementInscription) {
            if($this->admissionService->canEtabAccessModuleAdmission($etablissementInscription)){
                $options[$etablissementInscription->getId()] = $etablissementInscription->getStructure()->getLibelle();
            }
        }
        $this->etablissementInscription = $options;
    }

Loading