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

WIP nouveau module rapport d'activite : nouveau process directeur de thèse

parent 2190fbbb
Loading
Loading
Loading
Loading
+1 −1
Changes for module/Depot/src/Depot/Notification/ChangementCorrectionAttendueNotification.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ class ChangementCorrectionAttendueNotification extends Notification

        $cc = null;
        if ($directeursTheseEnCopie) {
            $cc = $this->these->getDirecteursTheseEmails();
            $cc = array_merge($this->these->getDirecteursTheseEmails(), $this->these->getCoDirecteursTheseEmails());
        }

        $subject = "Dépôt de thèse, corrections " . lcfirst($this->these->getCorrectionAutoriseeToString()) . "s attendues";
+17 −5
Changes for module/RapportActivite/data/install_module_v2.sql: 17 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@ create table rapport_activite
            on delete cascade,
    annee_univ bigint not null,
    est_fin_contrat boolean not null,
    par_directeur_these boolean default false not null,
    par_directeur_these_motif text,
    description_projet_recherche text,
    principaux_resultats_obtenus text,
    productions_scientifiques text,
@@ -240,9 +242,21 @@ with data(categ, priv) as (
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in (
                                           'ADMIN_TECH', 'BDD'
         join PROFIL on profil.ROLE_ID in ('ADMIN_TECH', 'BDD')
         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 PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'rapport-activite', 'ajouter-sien' union
    select 'rapport-activite', 'modifier-sien'
)
select p.id as PRIVILEGE_ID, profil.id as PROFIL_ID
from data
         join PROFIL on profil.ROLE_ID in ('D', 'DOCTORANT')
         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 (
@@ -252,8 +266,6 @@ where not exists (
INSERT INTO PROFIL_PRIVILEGE (PRIVILEGE_ID, PROFIL_ID)
with data(categ, priv) as (
    select 'rapport-activite', 'lister-sien' union
    select 'rapport-activite', 'ajouter-sien' union
    select 'rapport-activite', 'modifier-sien' union
    select 'rapport-activite', 'consulter-sien' union
    select 'rapport-activite', 'telecharger-sien' union
    select 'rapport-activite', 'generer-sien'
@@ -301,7 +313,7 @@ update type_validation
set code = 'RAPPORT_ACTIVITE_AUTO', libelle = 'Validation finale du rapport d''activité non dématérialisé (ancien module)'
where code = 'RAPPORT_ACTIVITE';
insert into type_validation(id, code, libelle)
select nextval('type_validation_id_seq'), 'RAPPORT_ACTIVITE_DOCTORANT', 'Validation du rapport d''activité par le doctorant';
select nextval('type_validation_id_seq'), 'RAPPORT_ACTIVITE_DOCTORANT', 'Validation du rapport d''activité';

INSERT INTO type_validation (id, code, libelle)
select nextval('type_validation_id_seq'), 'RAPPORT_ACTIVITE', 'Validation finale du rapport d''activité non dématérialisé (ancien module)';
+8 −0
Changes for module/RapportActivite/src/RapportActivite/Assertion/Avis/RapportActiviteAvisAssertion.php: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -28,6 +28,10 @@ class RapportActiviteAvisAssertion extends RapportActiviteOperationAbstractAsser
     */
    protected function assertController($controller, $action = null, $privilege = null): bool
    {
        if (! parent::assertController($controller, $action, $privilege)) {
            return false;
        }

//        switch ($action) {
//            case 'ajouter':
//                $rapportActivite = $this->rapportActiviteService->fetchRapportById($this->getRouteMatch()->getParam('rapport'));
@@ -141,6 +145,10 @@ class RapportActiviteAvisAssertion extends RapportActiviteOperationAbstractAsser
     */
    protected function assertEntity(ResourceInterface $entity, $privilege = null): bool
    {
        if (! parent::assertEntity($entity, $privilege)) {
            return false;
        }

        $rapportActiviteAvis = $entity;
        $rapport = $rapportActiviteAvis->getRapportActivite();

+4 −0
Changes for module/RapportActivite/src/RapportActivite/Assertion/Validation/RapportActiviteValidationAssertion.php: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -90,6 +90,10 @@ class RapportActiviteValidationAssertion extends RapportActiviteOperationAbstrac
     */
    protected function assertEntity(ResourceInterface $entity, $privilege = null): bool
    {
        if (! parent::assertEntity($entity, $privilege)) {
            return false;
        }

        /** @var RapportActiviteValidation $rapportActiviteValidation */
        $rapportActiviteValidation = $entity;

+14 −7
Changes for module/RapportActivite/src/RapportActivite/Config/ModuleConfig.php: 14 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ class ModuleConfig
            self::VALIDATION_DOCTORANT => [
                'type' => RapportActiviteValidation::class,
                'code' => TypeValidation::CODE_RAPPORT_ACTIVITE_DOCTORANT,
                'role' => [Role::CODE_DOCTORANT],
                'role' => [Role::CODE_DOCTORANT, Role::CODE_DIRECTEUR_THESE],
                'pre_condition' => null,
                'enabled' => function(RapportActivite $rapportActivite) {
                    return $rapportActivite->getFichier() === null;
@@ -86,11 +86,15 @@ class ModuleConfig
                ],
                'enabled' => function(RapportActivite $rapportActivite) {
                    return
                        !$rapportActivite->getParDirecteurThese() &&
                        !$rapportActivite->estFinContrat() &&
                        $rapportActivite->getFichier() === null;
                },
                'enabled_as_dql' => function(string $rapportAlias) {
                    return "$rapportAlias.estFinContrat = false AND $rapportAlias.fichier is null";
                    return
                        "$rapportAlias.parDirecteurThese = false AND " .
                        "$rapportAlias.estFinContrat = false AND " .
                        "$rapportAlias.fichier is null";
                },
            ],
            /**
@@ -111,8 +115,9 @@ class ModuleConfig
                },
                'enabled_as_dql' => function(string $rapportAlias) {
                    return
                        "$rapportAlias.estFinContrat = false AND $rapportAlias.fichier is null " .
                        "AND EXISTS (
                        "$rapportAlias.estFinContrat = false AND " .
                        "$rapportAlias.fichier is null AND " .
                        "EXISTS (
                            SELECT a_filter FROM " . Acteur::class . " a_filter 
                            JOIN a_filter.role r WITH r.code = '" . Role::CODE_CODIRECTEUR_THESE . "'
                            WHERE a_filter.histoDestruction is null AND a_filter.these = $rapportAlias.these
@@ -135,7 +140,9 @@ class ModuleConfig
                        $rapportActivite->getFichier() === null;
                },
                'enabled_as_dql' => function(string $rapportAlias) {
                    return "$rapportAlias.estFinContrat = false AND $rapportAlias.fichier is null";
                    return
                        "$rapportAlias.estFinContrat = false AND " .
                        "$rapportAlias.fichier is null";
                },
            ],
            /**
@@ -158,8 +165,8 @@ class ModuleConfig
                },
                'enabled_as_dql' => function(string $rapportAlias) {
                    return
                        "$rapportAlias.estFinContrat = false AND $rapportAlias.fichier is null 
                        OR $rapportAlias.fichier is not null";
                        "($rapportAlias.estFinContrat = false AND $rapportAlias.fichier is null) OR" .
                        "$rapportAlias.fichier is not null";
                },
                'extra' => [
                    // Si un avis "rapport incomplet" est émis par la direction d'ED, on supprimera la validation doctorant.
Loading