Commit 2a705d68 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

WIP API

parent 7cd8060f
Loading
Loading
Loading
Loading
+6 −6
Changes for module/InscriptionAdministrative/data/tmp_tables.sql: 6 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -96,12 +96,12 @@ create table tmp_inscription_administrative_periode
    histo_destructeur_id bigint
);

create index tmp_inscription_administrative_source_code_index
    on tmp_inscription_administrative (source_code);
create index tmp_inscription_administrative_source_id_index
    on tmp_inscription_administrative (source_id);
create unique index tmp_inscription_administrative_unique_index
    on tmp_inscription_administrative (source_id, source_code);
create index tmp_inscription_administrative_periode_source_code_index
    on tmp_inscription_administrative_periode (source_code);
create index tmp_inscription_administrative_periode_source_id_index
    on tmp_inscription_administrative_periode (source_id);
create unique index tmp_inscription_administrative_periode_unique_index
    on tmp_inscription_administrative_periode (source_id, source_code);



+1 −1
Changes for module/SygalApiImpl/src/V1/Rest/InscriptionAdministrative/InscriptionAdministrativeResource.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ class InscriptionAdministrativeResource extends \SygalApi\V1\Rest\InscriptionAdm
        } catch (Exception $e) {
            @trigger_error($e, E_USER_WARNING);
            return new ApiProblem(500, new RuntimeException(
                "Une erreur est survenue lors de l'import des inscriptions administratives", null, $e
                "Une erreur est survenue lors de l'import de l'inscription administrative : " . $e->getMessage(), null, $e
            ));
        }
    }
+61 −3
Changes for module/SygalApiImpl/src/V1/Rest/InscriptionAdministrative/Service/ImportService.php: 61 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ use Import\Filter\PrefixEtabColumnValueFilter;
use stdClass;
use SygalApi\V1\Rest\InscriptionAdministrative\Extractor\DoctorantExtractor;
use SygalApi\V1\Rest\InscriptionAdministrative\Extractor\IndividuExtractor;
use SygalApi\V1\Rest\InscriptionAdministrative\Extractor\InscriptionExtractor;
use UnicaenDbImport\Connection\ApiConnection;
use UnicaenDbImport\Domain\Destination;
use UnicaenDbImport\Domain\Import;
@@ -39,10 +40,11 @@ class ImportService
        try {
            $this->importIndividu($data);
            $this->importDoctorant($data);
//            $this->importInscription($data);
            $this->destinationConnection->commit();
        } catch (Exception $e) {
            $this->destinationConnection->rollback();
            throw new Exception("Une erreur est survenue lors de l'import de l'inscription administrative", null, $e);
            throw $e;
        }
    }

@@ -72,6 +74,19 @@ class ImportService
        }
    }

    /**
     * @throws \Exception
     */
    private function importInscription(stdClass $data)
    {
        try {
            $import = $this->createImportInscription($data);
            $this->runImport($import);
        } catch (Exception $e) {
            throw new Exception("Une erreur est survenue lors de l'import de l'inscription", null, $e);
        }
    }

    /**
     * @throws \UnicaenDbImport\Config\ConfigException
     */
@@ -102,7 +117,7 @@ class ImportService
        $source->setData([$preparedData]);

        return Import::fromConfig([
            'name' => 'inscrit',
            'name' => 'individu',
            'source' => $source,
            'destination' => $destination,
        ]);
@@ -146,7 +161,7 @@ class ImportService
        $source->setData([$preparedData]);

        return Import::fromConfig([
            'name' => 'inscrit',
            'name' => 'doctorant',
            'source' => $source,
            'destination' => $destination,
        ]);
@@ -159,6 +174,49 @@ class ImportService
        return $hydrator->extract($data);
    }

    /**
     * @throws \UnicaenDbImport\Config\ConfigException
     */
    private function createImportInscription(stdClass $data): Import
    {
        $filter = new PrefixEtabColumnValueFilter([
            'source_code',
            //'source_id', // pas le source_id !
        ]);
        $filter->setParams([PrefixEtabColumnValueFilter::PARAM_CODE_ETABLISSEMENT => $data->instancePegase]);

        $source = Source::fromConfig([
            'name' => 'vxcvxcvxc',
            'connection' => new ApiConnection(),
            'select' => 'xxxxx',
            'source_code_column' => 'source_code',
            'column_value_filter' => $filter,
        ]);
        $destination = Destination::fromConfig([
            'name' => 'Application',
            'table' => 'tmp_inscription_administrative',
            'connection' => $this->destinationConnection,
            'source_code_column' => 'source_code',
            'id_sequence' => false,
        ]);

        $preparedData = $this->prepareDataForImportInscription($data);
        $source->setData([$preparedData]);

        return Import::fromConfig([
            'name' => 'inscription',
            'source' => $source,
            'destination' => $destination,
        ]);
    }

    private function prepareDataForImportInscription(stdClass $data): array
    {
        $hydrator = new InscriptionExtractor();

        return $hydrator->extract($data);
    }

    /**
     * @throws \Exception
     */