Loading config/autoload/secret.local.php.dist +16 −7 Original line number Diff line number Diff line Loading @@ -11,8 +11,8 @@ use Fichier\Service\Storage\Adapter\S3StorageAdapter; use GuzzleHttp\Client as RestClient; use Laminas\Mail\Transport\Smtp; use UnicaenApi\ClientMiddleware\Jwt\JwtMiddleware; use UnicaenPegaseCocExtApi\Api\JwtMiddlewareAuthStrategy; use UnicaenPegaseCocExtApi\Api\JwtMiddlewareFactory; use UnicaenPegaseApi\Api\JwtMiddlewareAuthStrategy; use UnicaenPegaseApi\Api\JwtMiddlewareFactory; return [ // Imports et synchros (unicaen/db-import) Loading Loading @@ -104,22 +104,31 @@ return [ ], ], // // Config pour dialogue avec le logiciel de scolarité Pégase. // 'unicaen_pegase' => [ // correspondance 'Etablissement d'inscription SyGAL (etablissement.source_code)' => 'Code structure etablissement Pégase' 'codes_structures_etablissements' => [ 'UCN' => 'ETAB00', 'INSA' => 'ETAB00', ], // codes des périodes Pégase selon l'établissement d'inscription SyGAL 'codes_periodes' => [ 'UCN' => 'PER-%d', // %d sera remplacé par l'année, ex : 'PER-2026' 'INSA' => 'PERIODE-%d', ], // codes des origines d'admission selon l'établissement d'inscription // codes des origines d'admission Pégase selon l'établissement d'inscription SyGAL 'codes_origines_admissions' => [ 'UCN' => 'ECOLEDOCTORALE', 'INSA' => 'ECOLEDOCTORALE', ], // codes des régimes d'inscriptions selon l'établissement d'inscription // codes des régimes d'inscriptions Pégase selon l'établissement d'inscription SyGAL 'codes_regimes_inscriptions' => [ 'UCN' => 'XXXX', 'INSA' => 'XXXX', // ? 'UCN' => 'XXXX', // ex : 'REG001' 'INSA' => 'XXXX', ], // codes des types de résultats (cf. API Pégase "REF-Référentiel", /parametrage/TypeResultat) selon l'établissement d'inscription // codes des types de résultats Pégase (cf. API Pégase "REF-Référentiel", /parametrage/TypeResultat) selon l'établissement d'inscription SyGAL 'codes_types_resultats' => [ 'UCN' => [ // diplomation Loading module/Application/src/Application/Attribute/InjectConfig.php +1 −1 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ readonly class InjectConfig if (!method_exists($target, $injectionMethodName)) { throw new InvalidArgumentException(sprintf( "La classe '%s du service spécifié via l'Attribute %s doit fournir la méthode '%s'.", "La classe '%s' spécifiée via l'Attribute %s doit fournir la méthode '%s'.", get_class($target), static::class, $injectionMethodName Loading module/Application/src/Application/Config/UnicaenPegaseConfig.php +31 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ use Webmozart\Assert\Assert; // #[InjectConfig('unicaen_pegase > codes_structures_etablissements')] /** @see setCodesStructuresEtablissements() */ #[InjectConfig('unicaen_pegase > codes_periodes')] /** @see setCodesPeriodes() */ #[InjectConfig('unicaen_pegase > codes_origines_admissions')] /** @see setCodesOriginesAdmissions() */ #[InjectConfig('unicaen_pegase > codes_regimes_inscriptions')] /** @see setCodesRegimesInscriptions() */ #[InjectConfig('unicaen_pegase > codes_types_resultats')] /** @see setCodesTypesResultats() */ Loading @@ -19,6 +20,7 @@ class UnicaenPegaseConfig { $instance = new static(); $instance->setCodesStructuresEtablissements($config['codes_structures_etablissements'] ?? []); $instance->setCodesPeriodes($config['codes_periodes'] ?? []); $instance->setCodesOriginesAdmissions($config['codes_origines_admissions'] ?? []); $instance->setCodesRegimesInscriptions($config['codes_regimes_inscriptions'] ?? []); $instance->setCodesTypesResultats($config['codes_types_resultats'] ?? []); Loading Loading @@ -55,6 +57,35 @@ class UnicaenPegaseConfig return $this->codesStructuresEtablissements[$codeEtablissement] ?? null; } /** * Codes des périodes Pégase selon l'établissement d'inscription. * * Exemple : * * [ * 'UCN' => 'PER-%d', // %d sera remplacé par l'année, ex : 'PER-2026' * 'INSA' => 'PERIODE-%d', * ], * * @var array<string, string> */ private array $codesPeriodes; public function getCodesPeriodes(): array { return $this->codesPeriodes; } public function setCodesPeriodes(array $codesPeriodes): void { $this->codesPeriodes = $codesPeriodes; } public function getCodePeriodeForEtablissement(string $codeEtablissement): ?string { return $this->codesPeriodes[$codeEtablissement] ?? null; } /** * Codes des types de résultats Pégase selon l'établissement d'inscription. * Loading module/AutorisationInscriptionThese/src/AutorisationInscriptionThese/Tx/Entity/Db/Service/TxDataService.php +9 −3 Original line number Diff line number Diff line Loading @@ -38,14 +38,20 @@ class TxDataService extends AbstractTxDataService { /** @var AutorisationInscriptionThese $autorisation */ $autorisation = $params['autorisation']; $etablissementSourceCode = $autorisation->getThese()->getEtablissement()->getSourceCode(); $codeStructureEtablissement = $this->unicaenPegaseConfig->getCodeStructureEtablissementForEtablissement( $autorisation->getThese()->getEtablissement()->getSourceCode() ); $codeStructureEtablissement = $this->unicaenPegaseConfig->getCodeStructureEtablissementForEtablissement($etablissementSourceCode); $codePeriode = $this->unicaenPegaseConfig->getCodePeriodeForEtablissement($etablissementSourceCode); if ($codePeriode) { $codePeriode = sprintf($codePeriode, $autorisation->getAnneeUniv()->getPremiereAnnee()); } $instance = new TxData(); $instance->setAutorisationInscriptionThese($autorisation); $instance->setCodeStructureEtablissement($codeStructureEtablissement); $instance->setCodeApprenant($autorisation->getThese()->getDoctorant()->getCodeApprenantInSource()); $instance->setCodePeriode($codePeriode); // Génération du payload (qui peut échouer à cause de données manquantes) qui sera utilisé pour l'appel à // l'API du logiciel de scolarité : Loading Loading
config/autoload/secret.local.php.dist +16 −7 Original line number Diff line number Diff line Loading @@ -11,8 +11,8 @@ use Fichier\Service\Storage\Adapter\S3StorageAdapter; use GuzzleHttp\Client as RestClient; use Laminas\Mail\Transport\Smtp; use UnicaenApi\ClientMiddleware\Jwt\JwtMiddleware; use UnicaenPegaseCocExtApi\Api\JwtMiddlewareAuthStrategy; use UnicaenPegaseCocExtApi\Api\JwtMiddlewareFactory; use UnicaenPegaseApi\Api\JwtMiddlewareAuthStrategy; use UnicaenPegaseApi\Api\JwtMiddlewareFactory; return [ // Imports et synchros (unicaen/db-import) Loading Loading @@ -104,22 +104,31 @@ return [ ], ], // // Config pour dialogue avec le logiciel de scolarité Pégase. // 'unicaen_pegase' => [ // correspondance 'Etablissement d'inscription SyGAL (etablissement.source_code)' => 'Code structure etablissement Pégase' 'codes_structures_etablissements' => [ 'UCN' => 'ETAB00', 'INSA' => 'ETAB00', ], // codes des périodes Pégase selon l'établissement d'inscription SyGAL 'codes_periodes' => [ 'UCN' => 'PER-%d', // %d sera remplacé par l'année, ex : 'PER-2026' 'INSA' => 'PERIODE-%d', ], // codes des origines d'admission selon l'établissement d'inscription // codes des origines d'admission Pégase selon l'établissement d'inscription SyGAL 'codes_origines_admissions' => [ 'UCN' => 'ECOLEDOCTORALE', 'INSA' => 'ECOLEDOCTORALE', ], // codes des régimes d'inscriptions selon l'établissement d'inscription // codes des régimes d'inscriptions Pégase selon l'établissement d'inscription SyGAL 'codes_regimes_inscriptions' => [ 'UCN' => 'XXXX', 'INSA' => 'XXXX', // ? 'UCN' => 'XXXX', // ex : 'REG001' 'INSA' => 'XXXX', ], // codes des types de résultats (cf. API Pégase "REF-Référentiel", /parametrage/TypeResultat) selon l'établissement d'inscription // codes des types de résultats Pégase (cf. API Pégase "REF-Référentiel", /parametrage/TypeResultat) selon l'établissement d'inscription SyGAL 'codes_types_resultats' => [ 'UCN' => [ // diplomation Loading
module/Application/src/Application/Attribute/InjectConfig.php +1 −1 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ readonly class InjectConfig if (!method_exists($target, $injectionMethodName)) { throw new InvalidArgumentException(sprintf( "La classe '%s du service spécifié via l'Attribute %s doit fournir la méthode '%s'.", "La classe '%s' spécifiée via l'Attribute %s doit fournir la méthode '%s'.", get_class($target), static::class, $injectionMethodName Loading
module/Application/src/Application/Config/UnicaenPegaseConfig.php +31 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ use Webmozart\Assert\Assert; // #[InjectConfig('unicaen_pegase > codes_structures_etablissements')] /** @see setCodesStructuresEtablissements() */ #[InjectConfig('unicaen_pegase > codes_periodes')] /** @see setCodesPeriodes() */ #[InjectConfig('unicaen_pegase > codes_origines_admissions')] /** @see setCodesOriginesAdmissions() */ #[InjectConfig('unicaen_pegase > codes_regimes_inscriptions')] /** @see setCodesRegimesInscriptions() */ #[InjectConfig('unicaen_pegase > codes_types_resultats')] /** @see setCodesTypesResultats() */ Loading @@ -19,6 +20,7 @@ class UnicaenPegaseConfig { $instance = new static(); $instance->setCodesStructuresEtablissements($config['codes_structures_etablissements'] ?? []); $instance->setCodesPeriodes($config['codes_periodes'] ?? []); $instance->setCodesOriginesAdmissions($config['codes_origines_admissions'] ?? []); $instance->setCodesRegimesInscriptions($config['codes_regimes_inscriptions'] ?? []); $instance->setCodesTypesResultats($config['codes_types_resultats'] ?? []); Loading Loading @@ -55,6 +57,35 @@ class UnicaenPegaseConfig return $this->codesStructuresEtablissements[$codeEtablissement] ?? null; } /** * Codes des périodes Pégase selon l'établissement d'inscription. * * Exemple : * * [ * 'UCN' => 'PER-%d', // %d sera remplacé par l'année, ex : 'PER-2026' * 'INSA' => 'PERIODE-%d', * ], * * @var array<string, string> */ private array $codesPeriodes; public function getCodesPeriodes(): array { return $this->codesPeriodes; } public function setCodesPeriodes(array $codesPeriodes): void { $this->codesPeriodes = $codesPeriodes; } public function getCodePeriodeForEtablissement(string $codeEtablissement): ?string { return $this->codesPeriodes[$codeEtablissement] ?? null; } /** * Codes des types de résultats Pégase selon l'établissement d'inscription. * Loading
module/AutorisationInscriptionThese/src/AutorisationInscriptionThese/Tx/Entity/Db/Service/TxDataService.php +9 −3 Original line number Diff line number Diff line Loading @@ -38,14 +38,20 @@ class TxDataService extends AbstractTxDataService { /** @var AutorisationInscriptionThese $autorisation */ $autorisation = $params['autorisation']; $etablissementSourceCode = $autorisation->getThese()->getEtablissement()->getSourceCode(); $codeStructureEtablissement = $this->unicaenPegaseConfig->getCodeStructureEtablissementForEtablissement( $autorisation->getThese()->getEtablissement()->getSourceCode() ); $codeStructureEtablissement = $this->unicaenPegaseConfig->getCodeStructureEtablissementForEtablissement($etablissementSourceCode); $codePeriode = $this->unicaenPegaseConfig->getCodePeriodeForEtablissement($etablissementSourceCode); if ($codePeriode) { $codePeriode = sprintf($codePeriode, $autorisation->getAnneeUniv()->getPremiereAnnee()); } $instance = new TxData(); $instance->setAutorisationInscriptionThese($autorisation); $instance->setCodeStructureEtablissement($codeStructureEtablissement); $instance->setCodeApprenant($autorisation->getThese()->getDoctorant()->getCodeApprenantInSource()); $instance->setCodePeriode($codePeriode); // Génération du payload (qui peut échouer à cause de données manquantes) qui sera utilisé pour l'appel à // l'API du logiciel de scolarité : Loading