Loading composer.lock +2 −2 Original line number Diff line number Diff line Loading @@ -11607,7 +11607,7 @@ "source": { "type": "git", "url": "https://git.unicaen.fr/open-source/sygal-api.git", "reference": "d927ccc46475ebc77397bd6e1229f1a020769516" "reference": "09901c4cae9575041aa8a14a56a554295f179459" }, "require": { "guzzlehttp/guzzle": "^7.0", Loading @@ -11632,7 +11632,7 @@ ] }, "description": "API SyGAL", "time": "2025-03-25T14:57:30+00:00" "time": "2025-03-25T09:55:31+00:00" }, { "name": "unicaen/utilisateur", Loading config/autoload/global.php +4 −0 Original line number Diff line number Diff line Loading @@ -91,6 +91,10 @@ $config = [ ], ], ], // Options concernant les inscriptions administratives (IA) 'inscription_administrative' => [ 'run_reception_process_after_import_process' => false, ], ], 'import' => [ Loading module/Application/src/Application/Process/AbstractProcess.php +37 −0 Original line number Diff line number Diff line Loading @@ -2,11 +2,48 @@ namespace Application\Process; use Exception; use RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; abstract class AbstractProcess { use EntityManagerAwareTrait; protected function beginTransaction(): void { try { // Cf. https://www.doctrine-project.org/projects/doctrine-dbal/en/current/reference/transactions.html $this->entityManager->getConnection()->setNestTransactionsWithSavepoints(true); $this->entityManager->getConnection()->beginTransaction(); } catch (\Doctrine\DBAL\Exception $e) { throw new RuntimeException("Echec de l'ouverture d'une transaction en bdd", 0, $e); } } protected function commit(): void { try { $this->entityManager->flush(); $this->entityManager->getConnection()->commit(); } catch (Exception $e) { $exception = new RuntimeException("Echec du commit en bdd, rollback.", 0, $e); $this->rollback($exception); throw $exception; } } protected function rollback(?Exception $reason = null): void { try { $this->entityManager->getConnection()->rollback(); } catch (\Doctrine\DBAL\Exception $e) { throw new RuntimeException( "Echec du rollback en bdd" . ($reason ? sprintf(" (raison du rollback : %s)", $reason->getMessage()) : ""), null, $e ); } } } No newline at end of file module/Application/src/Application/Process/Utilisateur/UtilisateurProcess.php +3 −3 Original line number Diff line number Diff line Loading @@ -49,17 +49,17 @@ class UtilisateurProcess extends AbstractProcess throw new RuntimeException($result->getErrorMessages()[0]); } $this->entityManager->commit(); $this->entityManager->commit(); // TODO : utiliser $this->commit() } catch (RuntimeException $e) { $this->entityManager->rollback(); $this->entityManager->rollback(); // TODO : utiliser $this->commit() throw new UtilisateurProcessException( "La notification n'a pas pu être envoyée : " . $e->getMessage(), null, $e); } catch (Exception $e) { $this->entityManager->rollback(); $this->entityManager->rollback(); // TODO : utiliser $this->commit() throw new UtilisateurProcessException( "Un problème est survenu lors de la création du compte local : " . $e->getMessage(), null, Loading module/InscriptionAdministrative/config/others/inscription-admin.config.php +6 −11 Original line number Diff line number Diff line Loading @@ -6,17 +6,12 @@ use InscriptionAdministrative\Controller\InscriptionAdministrativeController; use InscriptionAdministrative\Controller\InscriptionAdministrativeControllerFactory; use InscriptionAdministrative\Controller\Recherche\InscriptionAdministrativeRechercheController; use InscriptionAdministrative\Controller\Recherche\InscriptionAdministrativeRechercheControllerFactory; use InscriptionAdministrative\Listener\ImportProcessListener; use InscriptionAdministrative\Listener\ImportProcessListenerFactory; use InscriptionAdministrative\Process\Reception\ReceptionProcess; use InscriptionAdministrative\Process\Reception\ReceptionProcessFactory; use InscriptionAdministrative\Rule\Reception\ReceptionRule; use InscriptionAdministrative\Rule\Reception\ReceptionRuleFactory; use InscriptionAdministrative\Listener\InscriptionAdministrativeImportProcessListener; use InscriptionAdministrative\Listener\InscriptionAdministrativeImportProcessListenerFactory; use InscriptionAdministrative\Process\Reception\InscriptionAdministrativeReceptionProcess; use InscriptionAdministrative\Process\Reception\InscriptionAdministrativeReceptionProcessFactory; use InscriptionAdministrative\Rule\Reception\ReceptionRulePluginManager; use InscriptionAdministrative\Rule\Reception\ReceptionRulePluginManagerFactory; use InscriptionAdministrative\Rule\Reception\StatutAnnulee\StatutAnnuleeRule; use InscriptionAdministrative\Rule\Reception\StatutValidee\StatutValideeRule; use InscriptionAdministrative\Rule\Reception\StatutValidee\StatutValideeRuleFactory; use InscriptionAdministrative\Service\InscriptionAdministrativeService; use InscriptionAdministrative\Service\InscriptionAdministrativeServiceFactory; use InscriptionAdministrative\Service\Search\InscriptionAdministrativeSearchService; Loading Loading @@ -163,8 +158,8 @@ return [ 'factories' => [ InscriptionAdministrativeService::class => InscriptionAdministrativeServiceFactory::class, InscriptionAdministrativeSearchService::class => InscriptionAdministrativeSearchServiceFactory::class, ImportProcessListener::class => ImportProcessListenerFactory::class, ReceptionProcess::class => ReceptionProcessFactory::class, InscriptionAdministrativeImportProcessListener::class => InscriptionAdministrativeImportProcessListenerFactory::class, InscriptionAdministrativeReceptionProcess::class => InscriptionAdministrativeReceptionProcessFactory::class, ReceptionRulePluginManager::class => ReceptionRulePluginManagerFactory::class, ] ] Loading Loading
composer.lock +2 −2 Original line number Diff line number Diff line Loading @@ -11607,7 +11607,7 @@ "source": { "type": "git", "url": "https://git.unicaen.fr/open-source/sygal-api.git", "reference": "d927ccc46475ebc77397bd6e1229f1a020769516" "reference": "09901c4cae9575041aa8a14a56a554295f179459" }, "require": { "guzzlehttp/guzzle": "^7.0", Loading @@ -11632,7 +11632,7 @@ ] }, "description": "API SyGAL", "time": "2025-03-25T14:57:30+00:00" "time": "2025-03-25T09:55:31+00:00" }, { "name": "unicaen/utilisateur", Loading
config/autoload/global.php +4 −0 Original line number Diff line number Diff line Loading @@ -91,6 +91,10 @@ $config = [ ], ], ], // Options concernant les inscriptions administratives (IA) 'inscription_administrative' => [ 'run_reception_process_after_import_process' => false, ], ], 'import' => [ Loading
module/Application/src/Application/Process/AbstractProcess.php +37 −0 Original line number Diff line number Diff line Loading @@ -2,11 +2,48 @@ namespace Application\Process; use Exception; use RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; abstract class AbstractProcess { use EntityManagerAwareTrait; protected function beginTransaction(): void { try { // Cf. https://www.doctrine-project.org/projects/doctrine-dbal/en/current/reference/transactions.html $this->entityManager->getConnection()->setNestTransactionsWithSavepoints(true); $this->entityManager->getConnection()->beginTransaction(); } catch (\Doctrine\DBAL\Exception $e) { throw new RuntimeException("Echec de l'ouverture d'une transaction en bdd", 0, $e); } } protected function commit(): void { try { $this->entityManager->flush(); $this->entityManager->getConnection()->commit(); } catch (Exception $e) { $exception = new RuntimeException("Echec du commit en bdd, rollback.", 0, $e); $this->rollback($exception); throw $exception; } } protected function rollback(?Exception $reason = null): void { try { $this->entityManager->getConnection()->rollback(); } catch (\Doctrine\DBAL\Exception $e) { throw new RuntimeException( "Echec du rollback en bdd" . ($reason ? sprintf(" (raison du rollback : %s)", $reason->getMessage()) : ""), null, $e ); } } } No newline at end of file
module/Application/src/Application/Process/Utilisateur/UtilisateurProcess.php +3 −3 Original line number Diff line number Diff line Loading @@ -49,17 +49,17 @@ class UtilisateurProcess extends AbstractProcess throw new RuntimeException($result->getErrorMessages()[0]); } $this->entityManager->commit(); $this->entityManager->commit(); // TODO : utiliser $this->commit() } catch (RuntimeException $e) { $this->entityManager->rollback(); $this->entityManager->rollback(); // TODO : utiliser $this->commit() throw new UtilisateurProcessException( "La notification n'a pas pu être envoyée : " . $e->getMessage(), null, $e); } catch (Exception $e) { $this->entityManager->rollback(); $this->entityManager->rollback(); // TODO : utiliser $this->commit() throw new UtilisateurProcessException( "Un problème est survenu lors de la création du compte local : " . $e->getMessage(), null, Loading
module/InscriptionAdministrative/config/others/inscription-admin.config.php +6 −11 Original line number Diff line number Diff line Loading @@ -6,17 +6,12 @@ use InscriptionAdministrative\Controller\InscriptionAdministrativeController; use InscriptionAdministrative\Controller\InscriptionAdministrativeControllerFactory; use InscriptionAdministrative\Controller\Recherche\InscriptionAdministrativeRechercheController; use InscriptionAdministrative\Controller\Recherche\InscriptionAdministrativeRechercheControllerFactory; use InscriptionAdministrative\Listener\ImportProcessListener; use InscriptionAdministrative\Listener\ImportProcessListenerFactory; use InscriptionAdministrative\Process\Reception\ReceptionProcess; use InscriptionAdministrative\Process\Reception\ReceptionProcessFactory; use InscriptionAdministrative\Rule\Reception\ReceptionRule; use InscriptionAdministrative\Rule\Reception\ReceptionRuleFactory; use InscriptionAdministrative\Listener\InscriptionAdministrativeImportProcessListener; use InscriptionAdministrative\Listener\InscriptionAdministrativeImportProcessListenerFactory; use InscriptionAdministrative\Process\Reception\InscriptionAdministrativeReceptionProcess; use InscriptionAdministrative\Process\Reception\InscriptionAdministrativeReceptionProcessFactory; use InscriptionAdministrative\Rule\Reception\ReceptionRulePluginManager; use InscriptionAdministrative\Rule\Reception\ReceptionRulePluginManagerFactory; use InscriptionAdministrative\Rule\Reception\StatutAnnulee\StatutAnnuleeRule; use InscriptionAdministrative\Rule\Reception\StatutValidee\StatutValideeRule; use InscriptionAdministrative\Rule\Reception\StatutValidee\StatutValideeRuleFactory; use InscriptionAdministrative\Service\InscriptionAdministrativeService; use InscriptionAdministrative\Service\InscriptionAdministrativeServiceFactory; use InscriptionAdministrative\Service\Search\InscriptionAdministrativeSearchService; Loading Loading @@ -163,8 +158,8 @@ return [ 'factories' => [ InscriptionAdministrativeService::class => InscriptionAdministrativeServiceFactory::class, InscriptionAdministrativeSearchService::class => InscriptionAdministrativeSearchServiceFactory::class, ImportProcessListener::class => ImportProcessListenerFactory::class, ReceptionProcess::class => ReceptionProcessFactory::class, InscriptionAdministrativeImportProcessListener::class => InscriptionAdministrativeImportProcessListenerFactory::class, InscriptionAdministrativeReceptionProcess::class => InscriptionAdministrativeReceptionProcessFactory::class, ReceptionRulePluginManager::class => ReceptionRulePluginManagerFactory::class, ] ] Loading