Commit a3742fc7 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

merge php8_api

parents ed850554 abec3605
Loading
Loading
Loading
Loading
+22 −26
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ use UnicaenDbImport\Connection\ApiConnection;
use UnicaenDbImport\Domain\Destination;
use UnicaenDbImport\Domain\Import;
use UnicaenDbImport\Domain\Operation;
use UnicaenDbImport\Domain\Result;
use UnicaenDbImport\Domain\Source;
use UnicaenDbImport\Domain\Synchro;

@@ -32,6 +33,9 @@ class ImportFacade extends AbstractImportFacade
        $this->inscriptionExtractor = new InscriptionExtractor();
    }

    /**
     * @throws \SygalApiImpl\V1\Exception\ErrorDuringImportException
     */
    public function import(stdClass $data): void
    {
        $this->beginTransaction();
@@ -61,20 +65,12 @@ class ImportFacade extends AbstractImportFacade
        $preparedData = $this->individuExtractor->extract($data);
        $import = $this->createImportIndividu($preparedData);
        $result = $this->runImport($import);
        if ($e = $result->getFailureException()) {
            throw new ErrorDuringImportException(
                "Une erreur est survenue lors de l'import de l'individu : " . $e->getMessage(), null, $e
            );
        }
        $this->handleResult($result, "l'import de l'individu");

        $sourceId = $preparedData['source_id'];
        $synchro = $this->createSynchroIndividu($sourceId);
        $result = $this->runSynchro($synchro);
        if ($e = $result->getFailureException()) {
            throw new ErrorDuringImportException(
                "Une erreur est survenue lors de la synchro de l'individu : " . $e->getMessage(), null, $e
            );
        }
        $this->handleResult($result, "la synchro de l'individu");
    }

    /**
@@ -86,20 +82,12 @@ class ImportFacade extends AbstractImportFacade
        $preparedData = $this->doctorantExtractor->extract($data);
        $import = $this->createImportDoctorant($preparedData);
        $result = $this->runImport($import);
        if ($e = $result->getFailureException()) {
            throw new ErrorDuringImportException(
                "Une erreur est survenue lors de l'import du doctorant : " . $e->getMessage(), null, $e
            );
        }
        $this->handleResult($result, "l'import du doctorant");

        $sourceId = $preparedData['source_id'];
        $synchro = $this->createSynchroDoctorant($sourceId);
        $result = $this->runSynchro($synchro);
        if ($e = $result->getFailureException()) {
            throw new ErrorDuringImportException(
                "Une erreur est survenue lors de la synchro du doctorant : " . $e->getMessage(), null, $e
            );
        }
        $this->handleResult($result, "la synchro du doctorant");
    }

    /**
@@ -111,18 +99,26 @@ class ImportFacade extends AbstractImportFacade
        $preparedData = $this->inscriptionExtractor->extract($data);
        $import = $this->createImportInscription($preparedData);
        $result = $this->runImport($import);
        if ($e = $result->getFailureException()) {
            throw new ErrorDuringImportException(
                "Une erreur est survenue lors de l'import de l'inscription : " . $e->getMessage(), null, $e
            );
        }
        $this->handleResult($result, "l'import de l'inscription");

        $sourceId = $preparedData['source_id'];
        $synchro = $this->createSynchroInscription($sourceId);
        $result = $this->runSynchro($synchro);
        $this->handleResult($result, "la synchro de l'inscription");
    }

    /**
     * @throws \SygalApiImpl\V1\Exception\ErrorDuringImportException
     */
    private function handleResult(Result $result, string $intituleAction): void
    {
        if ($e = $result->getFailureException()) {
            throw new ErrorDuringImportException(
                "Une erreur est survenue lors de la synchro de l'inscription : " . $e->getMessage(), null, $e
                "Une erreur est survenue lors de $intituleAction : " . $e->getMessage(), null, $e
            );
        } elseif ($result->hasExceptionInResults()) {
            throw new ErrorDuringImportException(
                "Une ou plusieurs opérations ont échoué lors de $intituleAction : " . $result->toString()
            );
        }
    }