Commit bddad37d authored by Thomas Hamel's avatar Thomas Hamel Committed by Bertrand Gauthier
Browse files

Portfolio, fiches RNCP, import des publications HAL du doctorant (possibilité...

Portfolio, fiches RNCP, import des publications HAL du doctorant (possibilité d'y associer des compétences RNCP).
parent 6d801ad5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ Journal des modifications
- Page 'Mes formations' pour le doctorant : suppression de la colonne 'Etablissement'.
- Déplacement de la config des imports/synchros dans le module Import.
- Rapport activité : envoi d'une notification aux gestionnaires d'ED lorsque la direction d'ED a donné son avis.
- Portfolio, fiches RNCP, import des publications HAL du doctorant (possibilité d'y associer des compétences RNCP).
- [FIX] Rapports d'activité : correction du plantage empêchant l'envoi de la notification en cas de validation/avis.
- [FIX] Correction de la config des imports api_import_inscription_administrative et api_import_inscription_administrative_apprenant.
- [FIX] Rapport CSI : rétablissement du bouton de suppression d'un rapport.
+2 −1
Original line number Diff line number Diff line
@@ -19,7 +19,8 @@
        "phpcompatibility/php-compatibility": "*",

        "unicaen/code": "^6.0",
        "unicaen/test": "^6.1"
        "unicaen/test": "^6.1",
        "unicaen/db-import": "dev-feature_select_generator"
    },
    "require": {
        "php": "^8.2",
+9 −5
Original line number Diff line number Diff line
@@ -12790,16 +12790,16 @@
            },
            "type": "library",
            "autoload": {
                "psr-0": {
                    "UnicaenDbImport": "src/"
                "psr-4": {
                    "UnicaenDbImport\\": "src/"
                },
                "classmap": [
                    "./Module.php"
                ]
            },
            "autoload-dev": {
                "psr-0": {
                    "UnicaenDbImportUnitTest": "test/"
                "psr-4": {
                    "UnicaenDbImportUnitTest\\": "test/"
                }
            },
            "description": "Module d'import entre bases de données",
@@ -16316,7 +16316,11 @@
        "unicaen/api": 20,
        "unicaen/authentification": 20,
        "unicaen/pegase-coc-ext-api": 20,
        "unicaen/sygal-api": 20
        "unicaen/db-import": 20,
        "unicaen/pdf": 20,
        "unicaen/renderer": 20,
        "unicaen/sygal-api": 20,
        "unicaen/avis": 20
    },
    "prefer-stable": true,
    "prefer-lowest": false,
+2 −0
Original line number Diff line number Diff line
@@ -100,6 +100,8 @@ return [
        'Validation',
        'HDR',
        'Candidat',
        'Portfolio',
        'RNCP',
        'Tx',
    ],
    'module_listener_options' => [
+199 −0
Original line number Diff line number Diff line
@@ -2,8 +2,16 @@

namespace Application;

use Application\Entity\Db\Source;
use Application\Navigation\NavigationFactoryFactory;
use Import\Model\ImportObserv;
use Import\Model\ImportObservResult;
use Portfolio\Import\Extractor\HalResponseDataExtractor;
use Portfolio\Service\PublicationSelectProvider;
use Retraitement\Filter\Command\RetraitementShellCommandMines;
use UnicaenDbImport\Filter\ColumnValue\ArrayToStringColumnValueFilter;
use UnicaenDbImport\Filter\ColumnValue\ConcatColumnValueFilter;
use UnicaenDbImport\Filter\ColumnValue\SameColumnValueFilter;

$config = [
    'api-tools-content-negotiation' => [
@@ -88,6 +96,197 @@ $config = [
            ],
        ],
    ],
    'import' => [

        'import_observ_entity_class' => ImportObserv::class,
        'import_observ_result_entity_class' => ImportObservResult::class,

        'connections' => [
            // Cf. config locale
        ],

        //
        // Classe de l'entité Doctrine représentant une "Source".
        //
        'source_entity_class' => Source::class,

        //
        // Code de la Source par défaut (injectée dans les entités implémentant SoucreAwareInterface).
        //
        'default_source_code' => 'SYGAL::sygal',

        //
        // Alias éventuels des noms de colonnes d'historique.
        //
        'histo_columns_aliases' => [
            'created_on' => 'histo_creation',     // date/heure de création de l'enregistrement
            'updated_on' => 'histo_modification', // date/heure de modification
            'deleted_on' => 'histo_destruction',  // date/heure de suppression

            'created_by' => 'histo_createur_id',     // auteur de la création de l'enregistrement
            'updated_by' => 'histo_modificateur_id', // auteur de la modification
            'deleted_by' => 'histo_destructeur_id',  // auteur de la suppression
        ],

        //
        // Forçage éventuel de valeur pour les colonnes d'historique.
        //
        'histo_columns_values' => [
            'created_by' => 1, // auteur de la création de l'enregistrement
            'updated_by' => 1, // auteur de la modification
            'deleted_by' => 1, // auteur de la suppression
        ],

        //
        // Témoin indiquant si la table IMPORT_OBSERV doit être prise en compte.
        // La table IMPORT_OBSERV permet d'inscrire les changements de valeurs à détecter pendant la synchro.
        // Les changements détectés sont consignés dans la table IMPORT_OBSERV_RESULT.
        //
        'use_import_observ' => true,

        //
        // Imports.
        //
        'imports' => [
            [
                'name' => 'domaine-hal',
                'order' => 160,
                'source' => [
                    'name' => 'HAL',
                    'connection' => 'api-archives-ouvertes',
                    'select' => '/ref/domain/?q=*:*&wt=json&fl=*&rows=500',
                    'code' => 'HAL',
                    'columns' => [
                        'docid',
                        'code_s',
                        'haveNext_bool',
                        'en_domain_s',
                        'fr_domain_s',
                        'level_i',
                        'parent_i',
                    ],
                    'column_name_filter' => [
                        'docid' => 'docid',
                        'haveNext_bool' => 'havenext_bool',
                        'code_s' => 'source_code',
                        'en_domain_s' => 'en_domain_s',
                        'fr_domain_s' => 'fr_domain_s',
                        'level_i' => 'level_i',
                        'parent_i' => 'parent_id'
                    ],
                    'source_code_column' => 'source_code',
                    'request_options' => [
                        'debug' => true,
                    ],
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'tmp_domaine_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => null,
                    'id_sequence' => null,
                ],
            ],
            [
                'name' => 'publications-hal',
                'order' => 170,
                'source' => [
                    'name' => 'PUBLICATIONS_HAL',
                    'connection' => 'api-archives-ouvertes',
                    'select' => PublicationSelectProvider::class,
                    'code' => 'PUBLICATIONS_HAL',
                    'data_extractor' => HalResponseDataExtractor::class,
                    'columns' => [
                        'title_s',
                        'authFullName_s',
                        'authIdHal_i',
                        'publicationDate_s',
                        'docType_s',
                        'publisher_s',
                        'halId_s',
                        'uri_s',
                        'individu_hal_id', // ajouté dynamiquement, cf. PublicationSelectProvider
                    ],
                    'column_name_filter' => [
                        'title_s' => 'title_s',
                        'authFullName_s' => 'auth_full_name_s',
                        'authIdHal_i' => 'auth_id_hal_i',
                        'publicationDate_s' => 'publication_date_s',
                        'docType_s' => 'doc_type_s',
                        'publisher_s' => 'publisher_s',
                        'halId_s' => 'source_code',
                    ],
                    'column_value_filter' => [
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'authFullName_s']],
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'authIdHal_i']],
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'title_s']],
                        ['name' => ArrayToStringColumnValueFilter::class, 'params' => ['column' => 'publisher_s']],
                    ],
                    'source_code_column' => 'source_code',
                    'request_options' => [
                        'debug' => true,
                    ],
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'tmp_publication_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => null,
                    'id_sequence' => null,
                ],
            ]
        ],

        //
        // Synchros.
        //
        'synchros' => [
            // <==== la config des synchros sera injectée ici
            ////////////////////////////////////////////// DOMAINES HAL //////////////////////////////////////////////
            [
                'name' => 'domaine-hal',
                'order' => 160,
                'source' => [
                    'name' => 'sygal',
                    'code' => 'app',
                    'table' => 'src_domaine_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'domaine_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => 'SEQUENCE',
                    'id_sequence' => null,
                    'where' => NULL,
                ],
            ],
            [
                'name' => 'publications-hal',
                'order' => 170,
                'source' => [
                    'name' => 'sygal',
                    'code' => 'app',
                    'table' => 'src_publication_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                ],
                'destination' => [
                    'name' => 'application',
                    'table' => 'publication_hal',
                    'connection' => 'default',
                    'source_code_column' => 'source_code',
                    'id_strategy' => 'SEQUENCE',
                    'id_sequence' => null,
                    'where' => NULL,
                ],
            ],
        ],
    ],
    // Options pour le service de notification par mail
    'notification' => [
        // préfixe à ajouter systématiquement devant le sujet des mails
Loading