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

Merge branch 'ameliorations_admission' into release_8.6.0

parents 84c8eb2f 681e3e2e
Loading
Loading
Loading
Loading
+85 −0
Changes for doc/release-notes/8.6.0/01_admission.sql: 85 added lines, 0 removed lines.
Original line number Diff line number Diff line
-- Changement de la taille de la colonne
ALTER TABLE admission_etudiant
    ALTER COLUMN adresse_cp_ville_etrangere TYPE VARCHAR(38)

-- Renommage de la validation
UPDATE admission_type_validation
SET libelle = 'Validation par les gestionnaires'
WHERE code = 'VALIDATION_GESTIONNAIRE';

-- Macro Renderer
INSERT INTO unicaen_renderer_macro (code, description, variable_name, methode_name)
VALUES ('Url#AccueilAdmission', '<p>Permet de récupérer l''url de l''accueil du module admission</p>', 'Url',
        'getAccueilAdmission');

-- ajout de la colonne pour le financement complémentaire
alter table admission_financement
    ADD column if not exists financement_compl_id bigint REFERENCES origine_financement (id);

-- déplacement du numero_candidature de admission_etudiant vers admission_admission
ALTER TABLE admission_admission
    ADD COLUMN numero_candidature VARCHAR(10);

UPDATE admission_admission aa
SET numero_candidature = ae.numero_candidat
    FROM admission_etudiant ae
WHERE aa.id = ae.admission_id;

ALTER TABLE admission_etudiant
DROP COLUMN numero_candidat;

-- Nouveau nature de fichier pour la charte du doctorat signée
INSERT INTO nature_fichier (id, code, libelle)
VALUES (220, 'ADMISSION_CHARTE_DOCTORAT_SIGNEE', 'Charte du doctorat signée')
ON CONFLICT DO NOTHING;

--Création d'une nouvelle table utile pour l'export vers pégase
create table if not exists admission_transmission
(
    id                                  bigserial
        primary key,
    admission_id                        bigint
        references admission_admission,
    code_voeu                           varchar(25),
    code_periode                        varchar(25),
    histo_createur_id                   bigint                                                       not null
        references utilisateur,
    histo_creation                      timestamp default ('now'::text)::timestamp without time zone not null,
    histo_modificateur_id               bigint
        references utilisateur,
    histo_modification                  timestamp,
    histo_destructeur_id                bigint
        references utilisateur,
    histo_destruction                   timestamp
);

--Ajout d'un nouveau privilège concernant l'ajout de données nécessaires pour l'export vers Pégase (par exemple)

insert into PRIVILEGE(ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
with d(ordre, code, lib) as (select 30,
                                    'admission-ajouter-donnees-export',
                                    'Ajouter des données nécessaires à l''export vers Pégase (par exemple)')
select nextval('privilege_id_seq'), cp.id, d.code, d.lib, d.ordre
from d
         join CATEGORIE_PRIVILEGE cp on cp.CODE = 'admission'
WHERE NOT EXISTS (SELECT 1
                  FROM PRIVILEGE p
                  WHERE p.CODE = d.code);

-- ajout des privilèges au profil GEST_ED et ADMIN_TECH
INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (select 'admission', 'admission-ajouter-donnees-export')
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in (
                                           'GEST_ED',
                                           'ADMIN_TECH')
         join CATEGORIE_PRIVILEGE cp on cp.CODE = data.categ
         join 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)
;
 No newline at end of file
+2 −2
Changes for module/Admission/config/module.config.php: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ use Admission\Service\Document\DocumentServiceFactory;
use Admission\Service\Etudiant\EtudiantService;
use Admission\Service\Etudiant\EtudiantServiceFactory;
use Admission\Service\Exporter\Admission\AdmissionExporter;
use Admission\Service\Exporter\Admission\AdmissionExporterFactory;
use Admission\Service\Exporter\Recapitulatif\RecapitulatifExporter;
use Admission\Service\Exporter\Recapitulatif\RecapitulatifExporterFactory;
use Admission\Service\Financement\FinancementService;
@@ -66,7 +67,6 @@ use Doctrine\ORM\Mapping\Driver\XmlDriver;
use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
use Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;
use Laminas\ServiceManager\Factory\InvokableFactory;
use UnicaenAuth\Guard\PrivilegeController;
use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider;

@@ -423,7 +423,7 @@ return array(
            UrlService::class => UrlServiceFactory::class,

            RecapitulatifExporter::class => RecapitulatifExporterFactory::class,
            AdmissionExporter::class => InvokableFactory::class,
            AdmissionExporter::class => AdmissionExporterFactory::class,

            ExtractionEmailRule::class => ExtractionEmailRuleFactory::class
        ],
+85 −0
Changes for module/Admission/config/others/transmission.config.php: 85 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Admission;

use Admission\Assertion\AdmissionAssertion;
use Admission\Controller\Transmission\TransmissionController;
use Admission\Controller\Transmission\TransmissionControllerFactory;
use Admission\Form\Transmission\TransmissionForm;
use Admission\Form\Transmission\TransmissionFormFactory;
use Admission\Provider\Privilege\AdmissionPrivileges;
use Admission\Service\Transmission\TransmissionService;
use Admission\Service\Transmission\TransmissionServiceFactory;
use Laminas\Router\Http\Segment;
use UnicaenAuth\Guard\PrivilegeController;
use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider;

return array(
    'bjyauthorize' => [
        'rule_providers'     => [
            PrivilegeRuleProvider::class => [
                'allow' => [
                    [
                        'privileges' => [
                            AdmissionPrivileges::ADMISSION_AJOUTER_DONNEES_EXPORT,
                        ],
                        'resources'  => ['Admission'],
                        'assertion' => AdmissionAssertion::class,
                    ],
                ],
            ],
        ],
        'guards' => [
            PrivilegeController::class => [
                [
                    'controller' => TransmissionController::class,
                    'action' => [
                        'ajouter-transmission',
                    ],
                    'privileges' => [
                        AdmissionPrivileges::ADMISSION_AJOUTER_DONNEES_EXPORT,
                    ],
                    'assertion' => AdmissionAssertion::class,
                ],
            ]
        ],
    ],
    'router' => [
        'routes' => [
            'admission' => [
                'child_routes' => [
                    'ajouter-transmission' => [
                        'type'  => Segment::class,
                        'may_terminate' => true,
                        'options' => [
                            'route'    => '/transmission/ajouter/:admission',
                            'defaults' => [
                                'controller' => TransmissionController::class,
                                'action'     => 'ajouter-transmission',
                                /* @see TransmissionController::ajouterTransmissionAction() */
                            ],
                        ],
                    ],
                ]
            ]
        ]
    ],

    'controllers' => [
        'factories' => [
            TransmissionController::class => TransmissionControllerFactory::class,
        ],
    ],

    'form_elements' => [
        'factories' => [
            TransmissionForm::class => TransmissionFormFactory::class
        ],
    ],

    'service_manager' => [
        'factories' => [
            TransmissionService::class => TransmissionServiceFactory::class,
        ],
    ],
);
+1 −1
Changes for module/Admission/src/Admission/Assertion/AdmissionAbstractAssertion.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -146,7 +146,7 @@ class AdmissionAbstractAssertion extends AbstractAssertion

        if (empty($admission)) {
            if (($routeMatch = $this->getRouteMatch()) && $id = $routeMatch->getParam('admission')) {
                $admission = $this->admissionService->getRepository()->findOneById($id);
                $admission = $this->admissionService->getRepository()->find($id);
            }
        }

+7 −0
Changes for module/Admission/src/Admission/Assertion/AdmissionAssertion.php: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ use Application\Entity\Db\Role;
use Application\Service\UserContextServiceAwareInterface;
use Application\Service\UserContextServiceAwareTrait;
use Doctrine\Common\Collections\Collection;
use Fichier\Entity\Db\NatureFichier;
use Individu\Service\IndividuServiceAwareTrait;
use Laminas\Permissions\Acl\Resource\ResourceInterface;
use UnicaenApp\Service\MessageCollectorAwareInterface;
@@ -83,6 +84,7 @@ class AdmissionAssertion extends AdmissionAbstractAssertion implements UserConte
                case 'notifier-dossier-complet':
                case 'generer-recapitulatif':
                case 'ajouter-convention-formation' :
                case 'ajouter-transmission' :
                    if ($this->admission !== null) {
                        $this->assertAppartenanceAdmission($this->admission);
                    }
@@ -175,6 +177,7 @@ class AdmissionAssertion extends AdmissionAbstractAssertion implements UserConte
                case AdmissionPrivileges::ADMISSION_TELECHARGER_SON_DOCUMENT:
                case AdmissionPrivileges::ADMISSION_VERIFIER:
                case AdmissionPrivileges::ADMISSION_NOTIFIER_DOSSIER_INCOMPLET:
                case AdmissionPrivileges::ADMISSION_AJOUTER_DONNEES_EXPORT:
                    $this->assertAppartenanceAdmission($this->admission);
            }

@@ -266,6 +269,10 @@ class AdmissionAssertion extends AdmissionAbstractAssertion implements UserConte
                $admission->getEtat()->getCode() == (Admission::ETAT_EN_COURS_VALIDATION || Admission::ETAT_VALIDE || Admission::ETAT_REJETE),
                "Le dossier d'admission doit être en cours de validation / être validé / être rejeté"
            );
        }elseif($codeNatureFichier === NatureFichier::CODE_ADMISSION_CHARTE_DOCTORAT_SIGNEE){
            if(!($this->userContextService->getSelectedIdentityRole()->getRoleId() === Role::ROLE_ID_ADMISSION_CANDIDAT)){
                throw new FailedAssertionException("Seul le candidat peut gérer ce document");
            }
        }else{
            $this->assertTrue(
                $admission->getEtat()->getCode() == Admission::ETAT_EN_COURS_SAISIE,
Loading