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

possibilité d'ajouter le code/voeu pour export vers Pégase par les gestionnaires

parent 0a1c3e68
Loading
Loading
Loading
Loading
+53 −0
Changes for doc/release-notes/8.6.0/01_admission.sql: 53 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -32,3 +32,56 @@ DROP COLUMN numero_candidat;
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,
        ],
    ],
);
+2 −0
Changes for module/Admission/src/Admission/Assertion/AdmissionAssertion.php: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -84,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);
                    }
@@ -176,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);
            }

+6 −1
Changes for module/Admission/src/Admission/Config/ModuleConfig.php: 6 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -6,11 +6,13 @@ use Admission\Entity\Db\Admission;
use Admission\Entity\Db\AdmissionAvis;
use Admission\Entity\Db\AdmissionValidation;
use Admission\Entity\Db\TypeValidation;
use Admission\Service\Transmission\TransmissionServiceAwareTrait;
use Application\Entity\Db\Role;
use InvalidArgumentException;

class ModuleConfig
{
    use TransmissionServiceAwareTrait;
    const ATTESTATION_HONNEUR_CHARTE_DOCTORALE = 'ATTESTATION_HONNEUR_CHARTE_DOCTORALE';
    const ATTESTATION_HONNEUR = 'ATTESTATION_HONNEUR';
    const VALIDATION_GESTIONNAIRE = 'VALIDATION_GESTIONNAIRE';
@@ -83,7 +85,10 @@ class ModuleConfig
                        $directeur = $admission->getInscription()->first()->getDirecteur();
                        $coDirecteur = !$admission->getInscription()->first()->getCoDirection() || $admission->getInscription()->first()->getCoDirecteur();
                    }
                    return $admission->isDossierComplet() && $directeur && $coDirecteur;

                    $transmissionInBdd = $this->transmissionService->getRepository()->findOneBy(["admission" => $admission]);

                    return $admission->isDossierComplet() && $directeur && $coDirecteur && $transmissionInBdd;
                },
                'enabled' => null,
                'enabled_as_dql' => null,
Loading