Commit 7b66db09 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Config Pégase : possibilité de spécifier le format des codes périodes.

parent 73a68570
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -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)
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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
+31 −0
Original line number Diff line number Diff line
@@ -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() */
@@ -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'] ?? []);
@@ -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.
     *