Loading module/InscriptionAdministrative/doc/integration_flux_inscrip_admin.drawio +5 −5 Original line number Diff line number Diff line <mxfile host="drawio-plugin" modified="2026-04-29T11:15:39.725Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" etag="suedyYi_GQGIcd4pamX2" version="22.1.22" type="embed" pages="3"> <mxfile host="drawio-plugin" modified="2026-07-24T12:49:52.446Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36" etag="ScFue32-SoEMwPEcoSob" version="22.1.22" type="embed" pages="3"> <diagram name="Traitement d'une IA" id="740ae2pG9eW3bvFF0xZ8"> <mxGraphModel dx="2452" dy="498" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <mxGraphModel dx="2309" dy="894" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> <mxCell id="5wBHxUDtx09EKERVRldi-0" /> <mxCell id="5wBHxUDtx09EKERVRldi-1" parent="5wBHxUDtx09EKERVRldi-0" /> Loading Loading @@ -85,7 +85,7 @@ </mxGraphModel> </diagram> <diagram name="IA validée" id="nXsnPskhR9ZO_uN3WuR3"> <mxGraphModel dx="2452" dy="498" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <mxGraphModel dx="2309" dy="894" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> <mxCell id="ox5DwH-k-fmpPEYAlyjY-0" /> <mxCell id="ox5DwH-k-fmpPEYAlyjY-1" parent="ox5DwH-k-fmpPEYAlyjY-0" /> Loading Loading @@ -184,7 +184,7 @@ <mxCell id="ox5DwH-k-fmpPEYAlyjY-24" value="<span style="font-size: 12px;">Thèse existante pour ce doctorant ?</span>" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;strokeColor=#000000;fontFamily=Helvetica;fontSize=12;fontColor=default;shadow=0;swimlaneLine=1;" parent="ox5DwH-k-fmpPEYAlyjY-1" vertex="1"> <mxGeometry x="-620" y="325" width="130" height="60" as="geometry" /> </mxCell> <mxCell id="ox5DwH-k-fmpPEYAlyjY-25" style="edgeStyle=orthogonalEdgeStyle;shape=connector;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;shadow=0;labelBackgroundColor=none;strokeColor=default;strokeWidth=1;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;endArrow=block;endFill=0;endSize=8;" parent="ox5DwH-k-fmpPEYAlyjY-1" source="ox5DwH-k-fmpPEYAlyjY-26" edge="1" target="ox5DwH-k-fmpPEYAlyjY-59"> <mxCell id="ox5DwH-k-fmpPEYAlyjY-25" style="edgeStyle=orthogonalEdgeStyle;shape=connector;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;shadow=0;labelBackgroundColor=none;strokeColor=default;strokeWidth=1;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;endArrow=block;endFill=0;endSize=8;" parent="ox5DwH-k-fmpPEYAlyjY-1" source="ox5DwH-k-fmpPEYAlyjY-26" target="ox5DwH-k-fmpPEYAlyjY-59" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="-592" y="650" as="targetPoint" /> <Array as="points"> Loading Loading @@ -326,7 +326,7 @@ </mxGraphModel> </diagram> <diagram name="IA annulée" id="XHHgBK6fiUAuxeolIRxC"> <mxGraphModel dx="2452" dy="498" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <mxGraphModel dx="2309" dy="894" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> <mxCell id="qnbvA5L7NKndZ21RBNdq-0" /> <mxCell id="qnbvA5L7NKndZ21RBNdq-1" parent="qnbvA5L7NKndZ21RBNdq-0" /> Loading module/InscriptionAdministrative/doc/resources/admission_inexistante/curl.txt +2 −2 Original line number Diff line number Diff line Loading @@ -3,8 +3,8 @@ curl \ --insecure \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "Authorization: Basic cGVnYXNlOmF6ZXJ0eQ==" \ -H "Authorization: Basic cGVnYXNlOldhaDl4YWl2YWl5b2gzam9waG9vNGVlbjllaVQ0ZWk=" \ -X POST \ -b XDEBUG_SESSION=PHPSTORM \ --data-binary "@resources/admission_inexistante/inscr-admin-PEGASE_UCN-286615046.json" \ --data-binary "@inscr-admin-PEGASE_UCN-286615046.json" \ https://localhost:8003/api/v1/inscription-administrative module/SygalApiImpl/config/import.config.php 0 → 100644 +73 −0 Original line number Diff line number Diff line <?php use UnicaenDbImport\Connection\NoConnection; use UnicaenDbImport\Filter\ColumnValue\ConcatColumnValueFilter; return [ 'import' => [ /** * Imports configurés à moitié, utilisé pour enregistré les inscription admin reçues via l'API de SyGAL. * Ils sont complétés dynamiquement, cf. {@see \SygalApiImpl\V1\Process\InscriptionAdministrativeImportProcess}. */ 'imports' => [ [ 'name' => 'api_import_inscription_administrative', 'source' => [ 'name' => 'api', 'code' => 'api', 'connection' => new NoConnection([]), 'select' => 'xxxxx', 'source_code_column' => 'source_code', 'column_value_filter' => [ 'source_code' => new ConcatColumnValueFilter([ 'column' => 'source_code', // colonne à transformer 'columns' => ['source_id', 'source_code'], // colonnes dont les valeurs seront concaténées //'separator' => $this->sourceCodeStringHelper->getSeparator(), ]), //'prefix_filter' => null, ], ], 'destination' => [ 'name' => 'Application', 'table' => 'tmp_inscription_administrative', //'connection' => $this->destinationConnection, 'connection' => 'default', 'source_code_column' => 'source_code', 'id_strategy' => null, 'id_sequence' => null, ], ], [ 'name' => 'api_import_inscription_administrative_apprenant', 'source' => [ 'name' => 'api', 'code' => 'api', 'connection' => new NoConnection([]), 'select' => 'xxxxx', 'source_code_column' => 'source_code', 'column_value_filter' => [ 'source_code' => new ConcatColumnValueFilter([ 'column' => 'source_code', // colonne à transformer 'columns' => ['source_id', 'source_code'], // colonnes dont les valeurs seront concaténées //'separator' => $this->sourceCodeStringHelper->getSeparator(), ]), 'inscription_administrative_id' => new ConcatColumnValueFilter([ 'column' => 'inscription_administrative_id', // colonne à transformer 'columns' => ['source_id', 'inscription_administrative_id'], // colonnes dont les valeurs seront concaténées //'separator' => $this->sourceCodeStringHelper->getSeparator(), ]), ], ], 'destination' => [ 'name' => 'Application', 'table' => 'tmp_inscription_administrative_apprenant', //'connection' => $this->destinationConnection, 'connection' => 'default', 'source_code_column' => 'source_code', 'id_strategy' => null, 'id_sequence' => null, ], ], ], ], ]; No newline at end of file module/SygalApiImpl/src/Module.php +6 −4 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace SygalApiImpl; use Laminas\ApiTools\Provider\ApiToolsProviderInterface; use Laminas\Config\Factory as ConfigFactory; use Laminas\Stdlib\ArrayUtils; class Module implements ApiToolsProviderInterface Loading @@ -10,10 +11,11 @@ class Module implements ApiToolsProviderInterface { $configDir = __DIR__ . '/../config'; return ArrayUtils::merge( include $configDir . '/module.config.php', include $configDir . '/versions/v1.config.php', ); return ConfigFactory::fromFiles([ $configDir . '/module.config.php', $configDir . '/import.config.php', $configDir . '/versions/v1.config.php', ]); } public function getAutoloaderConfig(): array Loading module/SygalApiImpl/src/V1/Process/InscriptionAdministrativeImportProcess.php +113 −70 Original line number Diff line number Diff line Loading @@ -209,79 +209,122 @@ class InscriptionAdministrativeImportProcess extends AbstractProcess implements PrefixEtabColumnValueFilter::PARAM_CODE_ETABLISSEMENT => $codeEtablissement, ]); try { $source = Source::fromConfig([ 'name' => 'api', 'code' => 'api', 'connection' => new NoConnection([$data]), 'select' => 'xxxxx', 'source_code_column' => 'source_code', 'column_value_filter' => [ new ConcatColumnValueFilter([ 'column' => 'source_code', // colonne à transformer 'columns' => ['source_id', 'source_code'], // colonnes dont les valeurs seront concaténées 'separator' => $this->sourceCodeStringHelper->getSeparator(), ]), $this->prefixEtabColumnValueFilter, ], ]); $destination = Destination::fromConfig([ 'name' => 'Application', 'table' => 'tmp_inscription_administrative', 'connection' => $this->destinationConnection, 'source_code_column' => 'source_code', 'id_strategy' => null, 'id_sequence' => null, ]); return Import::fromConfig([ 'name' => 'api_import_inscription_administrative', 'source' => $source, 'destination' => $destination, ]); } catch (ConfigException $e) { throw new InvalidArgumentException("Mauvaise config dans " . __METHOD__ . " : " . $e->getMessage(), 0, $e); } // try { // $source = Source::fromConfig([ // 'name' => 'api', // 'code' => 'api', // 'connection' => new NoConnection([$data]), // 'select' => 'xxxxx', // 'source_code_column' => 'source_code', // 'column_value_filter' => [ // new ConcatColumnValueFilter([ // 'column' => 'source_code', // colonne à transformer // 'columns' => ['source_id', 'source_code'], // colonnes dont les valeurs seront concaténées // 'separator' => $this->sourceCodeStringHelper->getSeparator(), // ]), // $this->prefixEtabColumnValueFilter, // ], // ]); // $destination = Destination::fromConfig([ // 'name' => 'Application', // 'table' => 'tmp_inscription_administrative', // 'connection' => $this->destinationConnection, // 'source_code_column' => 'source_code', // 'id_strategy' => null, // 'id_sequence' => null, // ]); // // return Import::fromConfig([ // 'name' => 'api_import_inscription_administrative', // 'source' => $source, // 'destination' => $destination, // ]); // } catch (ConfigException $e) { // throw new InvalidArgumentException("Mauvaise config dans " . __METHOD__ . " : " . $e->getMessage(), 0, $e); // } /** @var Import $import */ $name = 'api_import_inscription_administrative'; $import = $this->importService->getImportByName($name); // source $importSource = $import->getSource(); $importSource->setConnection(new NoConnection([$data])); // injection de paramètres dans les value filters $columnValueFilters = $importSource->getColumnValueFilter(); /** @var \UnicaenDbImport\Filter\ColumnValue\ConcatColumnValueFilter $concatFilter */ $concatFilter = $columnValueFilters['source_code']; $concatFilter->setSeparator($this->sourceCodeStringHelper->getSeparator()); $columnValueFilters['prefix_filter'] = $this->prefixEtabColumnValueFilter; $importSource->setColumnValueFilter($columnValueFilters); // destination $importDestination = $import->getDestination(); $importDestination->setConnection($this->destinationConnection); return $import; } private function createImportInscriptionAdministrativeApprenant(array $data): Import { try { $source = Source::fromConfig([ 'name' => 'api', 'code' => 'api', 'connection' => new NoConnection([$data]), 'select' => 'xxxxx', 'source_code_column' => 'source_code', 'column_value_filter' => [ new ConcatColumnValueFilter([ 'column' => 'source_code', // colonne à transformer 'columns' => ['source_id', 'source_code'], // colonnes dont les valeurs seront concaténées 'separator' => $this->sourceCodeStringHelper->getSeparator(), ]), new ConcatColumnValueFilter([ 'column' => 'inscription_administrative_id', // colonne à transformer 'columns' => ['source_id', 'inscription_administrative_id'], // colonnes dont les valeurs seront concaténées 'separator' => $this->sourceCodeStringHelper->getSeparator(), ]), ], ]); $destination = Destination::fromConfig([ 'name' => 'Application', 'table' => 'tmp_inscription_administrative_apprenant', 'connection' => $this->destinationConnection, 'source_code_column' => 'source_code', 'id_strategy' => null, 'id_sequence' => null, ]); return Import::fromConfig([ 'name' => 'api_import_inscription_administrative_apprenant', 'source' => $source, 'destination' => $destination, ]); } catch (ConfigException $e) { throw new InvalidArgumentException("Mauvaise config dans " . __METHOD__ . " : " . $e->getMessage(), 0, $e); } // try { // $source = Source::fromConfig([ // 'name' => 'api', // 'code' => 'api', // 'connection' => new NoConnection([$data]), // 'select' => 'xxxxx', // 'source_code_column' => 'source_code', // 'column_value_filter' => [ // new ConcatColumnValueFilter([ // 'column' => 'source_code', // colonne à transformer // 'columns' => ['source_id', 'source_code'], // colonnes dont les valeurs seront concaténées // 'separator' => $this->sourceCodeStringHelper->getSeparator(), // ]), // new ConcatColumnValueFilter([ // 'column' => 'inscription_administrative_id', // colonne à transformer // 'columns' => ['source_id', 'inscription_administrative_id'], // colonnes dont les valeurs seront concaténées // 'separator' => $this->sourceCodeStringHelper->getSeparator(), // ]), // ], // ]); // $destination = Destination::fromConfig([ // 'name' => 'Application', // 'table' => 'tmp_inscription_administrative_apprenant', // 'connection' => $this->destinationConnection, // 'source_code_column' => 'source_code', // 'id_strategy' => null, // 'id_sequence' => null, // ]); // // return Import::fromConfig([ // 'name' => 'api_import_inscription_administrative_apprenant', // 'source' => $source, // 'destination' => $destination, // ]); // } catch (ConfigException $e) { // throw new InvalidArgumentException("Mauvaise config dans " . __METHOD__ . " : " . $e->getMessage(), 0, $e); // } /** @var Import $import */ $name = 'api_import_inscription_administrative_apprenant'; $import = $this->importService->getImportByName($name); // source $importSource = $import->getSource(); $importSource->setConnection(new NoConnection([$data])); // injection de paramètres dans les value filters $columnValueFilters = $importSource->getColumnValueFilter(); /** @var \UnicaenDbImport\Filter\ColumnValue\ConcatColumnValueFilter $concatFilter1 */ $concatFilter1 = $columnValueFilters['source_code']; $concatFilter1->setSeparator($this->sourceCodeStringHelper->getSeparator()); /** @var \UnicaenDbImport\Filter\ColumnValue\ConcatColumnValueFilter $concatFilter2 */ $concatFilter2 = $columnValueFilters['inscription_administrative_id']; $concatFilter2->setSeparator($this->sourceCodeStringHelper->getSeparator()); // destination $importDestination = $import->getDestination(); $importDestination->setConnection($this->destinationConnection); return $import; } } No newline at end of file Loading
module/InscriptionAdministrative/doc/integration_flux_inscrip_admin.drawio +5 −5 Original line number Diff line number Diff line <mxfile host="drawio-plugin" modified="2026-04-29T11:15:39.725Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" etag="suedyYi_GQGIcd4pamX2" version="22.1.22" type="embed" pages="3"> <mxfile host="drawio-plugin" modified="2026-07-24T12:49:52.446Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36" etag="ScFue32-SoEMwPEcoSob" version="22.1.22" type="embed" pages="3"> <diagram name="Traitement d'une IA" id="740ae2pG9eW3bvFF0xZ8"> <mxGraphModel dx="2452" dy="498" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <mxGraphModel dx="2309" dy="894" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> <mxCell id="5wBHxUDtx09EKERVRldi-0" /> <mxCell id="5wBHxUDtx09EKERVRldi-1" parent="5wBHxUDtx09EKERVRldi-0" /> Loading Loading @@ -85,7 +85,7 @@ </mxGraphModel> </diagram> <diagram name="IA validée" id="nXsnPskhR9ZO_uN3WuR3"> <mxGraphModel dx="2452" dy="498" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <mxGraphModel dx="2309" dy="894" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> <mxCell id="ox5DwH-k-fmpPEYAlyjY-0" /> <mxCell id="ox5DwH-k-fmpPEYAlyjY-1" parent="ox5DwH-k-fmpPEYAlyjY-0" /> Loading Loading @@ -184,7 +184,7 @@ <mxCell id="ox5DwH-k-fmpPEYAlyjY-24" value="<span style="font-size: 12px;">Thèse existante pour ce doctorant ?</span>" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;strokeColor=#000000;fontFamily=Helvetica;fontSize=12;fontColor=default;shadow=0;swimlaneLine=1;" parent="ox5DwH-k-fmpPEYAlyjY-1" vertex="1"> <mxGeometry x="-620" y="325" width="130" height="60" as="geometry" /> </mxCell> <mxCell id="ox5DwH-k-fmpPEYAlyjY-25" style="edgeStyle=orthogonalEdgeStyle;shape=connector;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;shadow=0;labelBackgroundColor=none;strokeColor=default;strokeWidth=1;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;endArrow=block;endFill=0;endSize=8;" parent="ox5DwH-k-fmpPEYAlyjY-1" source="ox5DwH-k-fmpPEYAlyjY-26" edge="1" target="ox5DwH-k-fmpPEYAlyjY-59"> <mxCell id="ox5DwH-k-fmpPEYAlyjY-25" style="edgeStyle=orthogonalEdgeStyle;shape=connector;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;shadow=0;labelBackgroundColor=none;strokeColor=default;strokeWidth=1;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;endArrow=block;endFill=0;endSize=8;" parent="ox5DwH-k-fmpPEYAlyjY-1" source="ox5DwH-k-fmpPEYAlyjY-26" target="ox5DwH-k-fmpPEYAlyjY-59" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="-592" y="650" as="targetPoint" /> <Array as="points"> Loading Loading @@ -326,7 +326,7 @@ </mxGraphModel> </diagram> <diagram name="IA annulée" id="XHHgBK6fiUAuxeolIRxC"> <mxGraphModel dx="2452" dy="498" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <mxGraphModel dx="2309" dy="894" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> <mxCell id="qnbvA5L7NKndZ21RBNdq-0" /> <mxCell id="qnbvA5L7NKndZ21RBNdq-1" parent="qnbvA5L7NKndZ21RBNdq-0" /> Loading
module/InscriptionAdministrative/doc/resources/admission_inexistante/curl.txt +2 −2 Original line number Diff line number Diff line Loading @@ -3,8 +3,8 @@ curl \ --insecure \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "Authorization: Basic cGVnYXNlOmF6ZXJ0eQ==" \ -H "Authorization: Basic cGVnYXNlOldhaDl4YWl2YWl5b2gzam9waG9vNGVlbjllaVQ0ZWk=" \ -X POST \ -b XDEBUG_SESSION=PHPSTORM \ --data-binary "@resources/admission_inexistante/inscr-admin-PEGASE_UCN-286615046.json" \ --data-binary "@inscr-admin-PEGASE_UCN-286615046.json" \ https://localhost:8003/api/v1/inscription-administrative
module/SygalApiImpl/config/import.config.php 0 → 100644 +73 −0 Original line number Diff line number Diff line <?php use UnicaenDbImport\Connection\NoConnection; use UnicaenDbImport\Filter\ColumnValue\ConcatColumnValueFilter; return [ 'import' => [ /** * Imports configurés à moitié, utilisé pour enregistré les inscription admin reçues via l'API de SyGAL. * Ils sont complétés dynamiquement, cf. {@see \SygalApiImpl\V1\Process\InscriptionAdministrativeImportProcess}. */ 'imports' => [ [ 'name' => 'api_import_inscription_administrative', 'source' => [ 'name' => 'api', 'code' => 'api', 'connection' => new NoConnection([]), 'select' => 'xxxxx', 'source_code_column' => 'source_code', 'column_value_filter' => [ 'source_code' => new ConcatColumnValueFilter([ 'column' => 'source_code', // colonne à transformer 'columns' => ['source_id', 'source_code'], // colonnes dont les valeurs seront concaténées //'separator' => $this->sourceCodeStringHelper->getSeparator(), ]), //'prefix_filter' => null, ], ], 'destination' => [ 'name' => 'Application', 'table' => 'tmp_inscription_administrative', //'connection' => $this->destinationConnection, 'connection' => 'default', 'source_code_column' => 'source_code', 'id_strategy' => null, 'id_sequence' => null, ], ], [ 'name' => 'api_import_inscription_administrative_apprenant', 'source' => [ 'name' => 'api', 'code' => 'api', 'connection' => new NoConnection([]), 'select' => 'xxxxx', 'source_code_column' => 'source_code', 'column_value_filter' => [ 'source_code' => new ConcatColumnValueFilter([ 'column' => 'source_code', // colonne à transformer 'columns' => ['source_id', 'source_code'], // colonnes dont les valeurs seront concaténées //'separator' => $this->sourceCodeStringHelper->getSeparator(), ]), 'inscription_administrative_id' => new ConcatColumnValueFilter([ 'column' => 'inscription_administrative_id', // colonne à transformer 'columns' => ['source_id', 'inscription_administrative_id'], // colonnes dont les valeurs seront concaténées //'separator' => $this->sourceCodeStringHelper->getSeparator(), ]), ], ], 'destination' => [ 'name' => 'Application', 'table' => 'tmp_inscription_administrative_apprenant', //'connection' => $this->destinationConnection, 'connection' => 'default', 'source_code_column' => 'source_code', 'id_strategy' => null, 'id_sequence' => null, ], ], ], ], ]; No newline at end of file
module/SygalApiImpl/src/Module.php +6 −4 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace SygalApiImpl; use Laminas\ApiTools\Provider\ApiToolsProviderInterface; use Laminas\Config\Factory as ConfigFactory; use Laminas\Stdlib\ArrayUtils; class Module implements ApiToolsProviderInterface Loading @@ -10,10 +11,11 @@ class Module implements ApiToolsProviderInterface { $configDir = __DIR__ . '/../config'; return ArrayUtils::merge( include $configDir . '/module.config.php', include $configDir . '/versions/v1.config.php', ); return ConfigFactory::fromFiles([ $configDir . '/module.config.php', $configDir . '/import.config.php', $configDir . '/versions/v1.config.php', ]); } public function getAutoloaderConfig(): array Loading
module/SygalApiImpl/src/V1/Process/InscriptionAdministrativeImportProcess.php +113 −70 Original line number Diff line number Diff line Loading @@ -209,79 +209,122 @@ class InscriptionAdministrativeImportProcess extends AbstractProcess implements PrefixEtabColumnValueFilter::PARAM_CODE_ETABLISSEMENT => $codeEtablissement, ]); try { $source = Source::fromConfig([ 'name' => 'api', 'code' => 'api', 'connection' => new NoConnection([$data]), 'select' => 'xxxxx', 'source_code_column' => 'source_code', 'column_value_filter' => [ new ConcatColumnValueFilter([ 'column' => 'source_code', // colonne à transformer 'columns' => ['source_id', 'source_code'], // colonnes dont les valeurs seront concaténées 'separator' => $this->sourceCodeStringHelper->getSeparator(), ]), $this->prefixEtabColumnValueFilter, ], ]); $destination = Destination::fromConfig([ 'name' => 'Application', 'table' => 'tmp_inscription_administrative', 'connection' => $this->destinationConnection, 'source_code_column' => 'source_code', 'id_strategy' => null, 'id_sequence' => null, ]); return Import::fromConfig([ 'name' => 'api_import_inscription_administrative', 'source' => $source, 'destination' => $destination, ]); } catch (ConfigException $e) { throw new InvalidArgumentException("Mauvaise config dans " . __METHOD__ . " : " . $e->getMessage(), 0, $e); } // try { // $source = Source::fromConfig([ // 'name' => 'api', // 'code' => 'api', // 'connection' => new NoConnection([$data]), // 'select' => 'xxxxx', // 'source_code_column' => 'source_code', // 'column_value_filter' => [ // new ConcatColumnValueFilter([ // 'column' => 'source_code', // colonne à transformer // 'columns' => ['source_id', 'source_code'], // colonnes dont les valeurs seront concaténées // 'separator' => $this->sourceCodeStringHelper->getSeparator(), // ]), // $this->prefixEtabColumnValueFilter, // ], // ]); // $destination = Destination::fromConfig([ // 'name' => 'Application', // 'table' => 'tmp_inscription_administrative', // 'connection' => $this->destinationConnection, // 'source_code_column' => 'source_code', // 'id_strategy' => null, // 'id_sequence' => null, // ]); // // return Import::fromConfig([ // 'name' => 'api_import_inscription_administrative', // 'source' => $source, // 'destination' => $destination, // ]); // } catch (ConfigException $e) { // throw new InvalidArgumentException("Mauvaise config dans " . __METHOD__ . " : " . $e->getMessage(), 0, $e); // } /** @var Import $import */ $name = 'api_import_inscription_administrative'; $import = $this->importService->getImportByName($name); // source $importSource = $import->getSource(); $importSource->setConnection(new NoConnection([$data])); // injection de paramètres dans les value filters $columnValueFilters = $importSource->getColumnValueFilter(); /** @var \UnicaenDbImport\Filter\ColumnValue\ConcatColumnValueFilter $concatFilter */ $concatFilter = $columnValueFilters['source_code']; $concatFilter->setSeparator($this->sourceCodeStringHelper->getSeparator()); $columnValueFilters['prefix_filter'] = $this->prefixEtabColumnValueFilter; $importSource->setColumnValueFilter($columnValueFilters); // destination $importDestination = $import->getDestination(); $importDestination->setConnection($this->destinationConnection); return $import; } private function createImportInscriptionAdministrativeApprenant(array $data): Import { try { $source = Source::fromConfig([ 'name' => 'api', 'code' => 'api', 'connection' => new NoConnection([$data]), 'select' => 'xxxxx', 'source_code_column' => 'source_code', 'column_value_filter' => [ new ConcatColumnValueFilter([ 'column' => 'source_code', // colonne à transformer 'columns' => ['source_id', 'source_code'], // colonnes dont les valeurs seront concaténées 'separator' => $this->sourceCodeStringHelper->getSeparator(), ]), new ConcatColumnValueFilter([ 'column' => 'inscription_administrative_id', // colonne à transformer 'columns' => ['source_id', 'inscription_administrative_id'], // colonnes dont les valeurs seront concaténées 'separator' => $this->sourceCodeStringHelper->getSeparator(), ]), ], ]); $destination = Destination::fromConfig([ 'name' => 'Application', 'table' => 'tmp_inscription_administrative_apprenant', 'connection' => $this->destinationConnection, 'source_code_column' => 'source_code', 'id_strategy' => null, 'id_sequence' => null, ]); return Import::fromConfig([ 'name' => 'api_import_inscription_administrative_apprenant', 'source' => $source, 'destination' => $destination, ]); } catch (ConfigException $e) { throw new InvalidArgumentException("Mauvaise config dans " . __METHOD__ . " : " . $e->getMessage(), 0, $e); } // try { // $source = Source::fromConfig([ // 'name' => 'api', // 'code' => 'api', // 'connection' => new NoConnection([$data]), // 'select' => 'xxxxx', // 'source_code_column' => 'source_code', // 'column_value_filter' => [ // new ConcatColumnValueFilter([ // 'column' => 'source_code', // colonne à transformer // 'columns' => ['source_id', 'source_code'], // colonnes dont les valeurs seront concaténées // 'separator' => $this->sourceCodeStringHelper->getSeparator(), // ]), // new ConcatColumnValueFilter([ // 'column' => 'inscription_administrative_id', // colonne à transformer // 'columns' => ['source_id', 'inscription_administrative_id'], // colonnes dont les valeurs seront concaténées // 'separator' => $this->sourceCodeStringHelper->getSeparator(), // ]), // ], // ]); // $destination = Destination::fromConfig([ // 'name' => 'Application', // 'table' => 'tmp_inscription_administrative_apprenant', // 'connection' => $this->destinationConnection, // 'source_code_column' => 'source_code', // 'id_strategy' => null, // 'id_sequence' => null, // ]); // // return Import::fromConfig([ // 'name' => 'api_import_inscription_administrative_apprenant', // 'source' => $source, // 'destination' => $destination, // ]); // } catch (ConfigException $e) { // throw new InvalidArgumentException("Mauvaise config dans " . __METHOD__ . " : " . $e->getMessage(), 0, $e); // } /** @var Import $import */ $name = 'api_import_inscription_administrative_apprenant'; $import = $this->importService->getImportByName($name); // source $importSource = $import->getSource(); $importSource->setConnection(new NoConnection([$data])); // injection de paramètres dans les value filters $columnValueFilters = $importSource->getColumnValueFilter(); /** @var \UnicaenDbImport\Filter\ColumnValue\ConcatColumnValueFilter $concatFilter1 */ $concatFilter1 = $columnValueFilters['source_code']; $concatFilter1->setSeparator($this->sourceCodeStringHelper->getSeparator()); /** @var \UnicaenDbImport\Filter\ColumnValue\ConcatColumnValueFilter $concatFilter2 */ $concatFilter2 = $columnValueFilters['inscription_administrative_id']; $concatFilter2->setSeparator($this->sourceCodeStringHelper->getSeparator()); // destination $importDestination = $import->getDestination(); $importDestination->setConnection($this->destinationConnection); return $import; } } No newline at end of file