Loading config/merged/command.config.php 0 → 100644 +42 −0 Original line number Diff line number Diff line <?php use UnicaenEvenement\Command\TraiterEvenementsCommand; use UnicaenEvenement\Command\TraiterEvenementsCommandFactory; return [ 'bjyauthorize' => [ 'guards' => [ ], ], 'laminas-cli' => [ 'commands' => [ 'evenement:traiter-evenements' => TraiterEvenementsCommand::class, ], ], 'controllers' => [ 'factories' => [ ], ], 'service_manager' => [ 'factories' => [ TraiterEvenementsCommand::class => TraiterEvenementsCommandFactory::class, ], ], 'form_elements' => [ 'factories' => [ ], ], 'hydrators' => [ 'factories' => [ ], ], 'view_helpers' => [ 'invokables' => [ ], ], ]; config/merged/evenement.config.php +2 −30 Original line number Diff line number Diff line Loading @@ -2,9 +2,8 @@ namespace UnicaenEvenement; use Unicaen\Console\Router\Simple; use UnicaenEvenement\Controller\EvenementConsoleController; use UnicaenEvenement\Controller\EvenementConsoleControllerFactory; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use UnicaenEvenement\Controller\EvenementController; use UnicaenEvenement\Controller\EvenementControllerFactory; use UnicaenEvenement\Form\Evenement\EvenementForm; Loading @@ -22,8 +21,6 @@ use UnicaenEvenement\View\Helper\EvenementsViewHelper; use UnicaenEvenement\View\Helper\EvenementViewHelper; use UnicaenEvenement\View\Helper\JournalViewHelper; use UnicaenPrivilege\Guard\PrivilegeController; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; return [ 'bjyauthorize' => [ Loading Loading @@ -52,13 +49,6 @@ return [ ], 'privileges' => EvenementinstancePrivileges::INSTANCE_SUPPRESSION, ], [ 'controller' => EvenementConsoleController::class, 'action' => [ 'traiter-evenements' ], 'roles' => [], ], ], ], ], Loading Loading @@ -131,23 +121,6 @@ return [ ], ], 'console' => [ 'router' => [ 'routes' => [ 'traiter-evenements' => [ 'type' => Simple::class, 'options' => [ 'route' => 'traiter-evenements', 'defaults' => [ 'controller' => EvenementConsoleController::class, 'action' => 'traiter-evenements' ], ], ], ], ], ], 'service_manager' => [ 'factories' => [ EvenementService::class => EvenementServiceFactory::class, Loading @@ -161,7 +134,6 @@ return [ 'controllers' => [ 'factories' => [ EvenementController::class => EvenementControllerFactory::class, EvenementConsoleController::class => EvenementConsoleControllerFactory::class, ], ], Loading readme.md +3 −3 Original line number Diff line number Diff line Loading @@ -104,17 +104,17 @@ Pour récupérer la méthode ```traiter()``` qui est associé à l'événement. --- Route console pour lancer le traitement des événements. Commande pour lancer le traitement des événements. === ```sh $ docker exec preecog php public/index.php traiter-evenements $ docker exec preecog ./vendor/bin/laminas evenement:traiter-evenements ``` Déclaration dans la crontab ```sh # - Traitement des évènements en attente */1 * * * * root cd /var/www/html && php public/index.php traiter-evenements 1> /dev/null 2>&1 */1 * * * * root cd /var/www/html && ./vendor/bin/laminas evenement:traiter-evenements 1> /dev/null 2>&1 ``` --- Loading src/UnicaenEvenement/Controller/EvenementConsoleController.php→src/UnicaenEvenement/Command/TraiterEvenementsCommand.php +60 −49 Original line number Diff line number Diff line <?php namespace UnicaenEvenement\Controller; namespace UnicaenEvenement\Command; use DateTime; use Exception; use RuntimeException; use Unicaen\Console\ColorInterface; use Unicaen\Console\Controller\AbstractConsoleController; use Unicaen\Console\Request as ConsoleRequest; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; use UnicaenEvenement\Entity\Db\Etat; use UnicaenEvenement\Entity\Db\Journal; use UnicaenEvenement\Service\Etat\EtatServiceAwareTrait; Loading @@ -15,11 +15,11 @@ use UnicaenEvenement\Service\Evenement\EvenementServiceAwareTrait; use UnicaenEvenement\Service\EvenementGestion\EvenementGestionServiceAwareTrait; use UnicaenEvenement\Service\Journal\JournalServiceAwareTrait; class EvenementConsoleController extends AbstractConsoleController class TraiterEvenementsCommand extends Command { use EvenementGestionServiceAwareTrait; use EvenementServiceAwareTrait; use EtatServiceAwareTrait; use EvenementServiceAwareTrait; use EvenementGestionServiceAwareTrait; use JournalServiceAwareTrait; /** Loading @@ -30,65 +30,82 @@ class EvenementConsoleController extends AbstractConsoleController * vraleur par défaut : 300s * @file /etc/crontab */ protected $maxExecutionTime = 300; protected int $maxExecutionTime = 300; public function getMaxExecutionTime(): int { return $this->maxExecutionTime; } public function setMaxExecutionTime(int $maxExecutionTime): void { $this->maxExecutionTime = $maxExecutionTime; } protected static $defaultName = 'evenement:traiter-evenements'; public function traiterEvenementsAction(): void protected function configure(): void { $request = $this->getRequest(); $texte = ""; if (!$request instanceof ConsoleRequest) { throw new RuntimeException('Cette action doit être appelée depuis une console !'); $this->setDescription("Traitement des événements en attente"); //$this->addArgument('event', InputArgument::OPTIONAL, "ID de l'événement"); } //Si un journal est en cours depuis trop longtemp, on le met en echec dans le journal pour cause de timeout //Celà évite d'être bloqué car un traitement est resté dans l'état En cours protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); //$event = $input->getArgument('event'); $io->title("Traitement des événements en attente"); $journal = $this->getJournalService()->getDernierJournal(); if ($this->getJournalService()->isRunning()) { $io->error("Un traitement est déjà en cours !"); return self::FAILURE; } if (isset($journal) && $journal->getEtat()->getCode() == Etat::EN_COURS) { $time = new DateTime(); $executionTime = $time->getTimestamp() - $journal->getDate()->getTimestamp(); if ($executionTime >= $this->maxExecutionTime) { // if(true) { // pour les test $log = $journal->getLog(); $log .= sprintf("-----------<br/>"); $log .= "-----------<br/>"; $log .= sprintf("Mise en echec le %s à %s car temps d'exécution trop long <br/>", $time->format('d/m/Y'), $time->format('H:i') ); $log .= sprintf("-----------<br/>"); $this->getConsole()->writeLine("\n* " . ($titre = "Mise en échec du journal #".$journal->getId()) . " *\n", ColorInterface::RED); $log .= "-----------<br/>"; $io->warning("Mise en échec du journal #" . $journal->getId()); $journal->setLog($log); $journal->setEtat($this->getEtatEvenementService()->findByCode(Etat::ECHEC)); $this->getJournalService()->update($journal); } } if ($this->getJournalService()->isRunning()) { throw new \RuntimeException('Un traitement est déjà en cours !'); } $texte = ""; $journal = new Journal(); $journal->setDate(new DateTime()); $journal->setEtat($this->getEtatEvenementService()->findByCode(Etat::EN_COURS)); $this->getJournalService()->create($journal); $start = new DateTime(); $this->getConsole()->writeLine("\n* " . ("Traitement des événements en attente") . " *\n", ColorInterface::LIGHT_GREEN); $this->getConsole()->writeLine("Debut du traitement", ColorInterface::GREEN); $this->getConsole()->writeLine("-------------------\n", ColorInterface::GREEN); $texte .= "Début du traitement : " . (new DateTime())->format('d/m/Y H:i:s') . "<br/>"; $io->success("Traitement des événements en attente"); $io->success("Debut du traitement"); $io->success("-------------------"); $start = new DateTime(); $nbOp = 0; $texte .= "Début du traitement : " . $start->format('d/m/Y H:i:s') . "<br/>"; $nbOp = 0; $evenements = $this->getEvenementService()->getEvenementsByEtat(Etat::EN_ATTENTE); if (empty($evenements)) { $io->info("Aucun événément à traiter"); $journal->setLog("Aucun événément à traiter"); $journal->setEtat($this->getEtatEvenementService()->findByCode(Etat::SUCCES)); $this->getJournalService()->update($journal); $io->success("-------------------"); $io->success("Fin du traitement"); return self::SUCCESS; } foreach ($evenements as $evenement) { // calcul du temps d'exécution Loading @@ -101,38 +118,32 @@ class EvenementConsoleController extends AbstractConsoleController try { if ($evenement !== null) { $this->evenementGestionService->traiterEvent($evenement); $this->getConsole()->writeLine(sprintf("- traitement de l'événement #%s", $evenement->getId())); $io->text("- traitement de l'événement #" . $evenement->getId()); $texte .= "Traitement de l'événement #" . $evenement->getId() . " <br/>"; $nbOp++; } } catch (Exception $e) { $this->getConsole()->writeLine(sprintf("- échec du traitement de l'événement #%s", $evenement->getId()), ColorInterface::RED); $this->getConsole()->writeLine($e->getMessage(),ColorInterface::LIGHT_RED); $io->error(sprintf("- échec du traitement de l'événement #%s", $evenement->getId())); $io->warning($e->getMessage()); $texte .= "<strong> Échec du traitement </strong> <br/>"; } } if ($nbOp == 0) { $this->getConsole()->writeLine("Aucun événement à traiter."); } $this->getConsole()->writeLine("\n-------------------", ColorInterface::GREEN); $this->getConsole()->writeLine("Fin du traitement", ColorInterface::GREEN); $end = new DateTime(); $texte .= "Fin du traitement : " . $end->format('d/m/Y H:i:s'); $texte .= "Fin du traitement : " . (new DateTime())->format('d/m/Y H:i:s') ; $io->info("Rapport"); $io->info("-------"); $io->info("* Nombre d'opérations : " . $nbOp); $io->info("* Temps estimé : " . ($start->diff(new DateTime())->format('%Hh %Im %Ss'))); $this->getConsole()->writeLine("\nRapport", ColorInterface::CYAN); $this->getConsole()->writeLine("-------", ColorInterface::CYAN); $this->getConsole()->writeLine(sprintf("* Nombre d'opérations : %s", $nbOp), ColorInterface::CYAN); $this->getConsole()->writeLine(sprintf("* Temps estimé : %s", $start->diff(new DateTime())->format('%Hh %Im %Ss')), ColorInterface::CYAN); $io->success("-------------------"); $io->success("Fin du traitement"); $journal->setLog($texte); $journal->setEtat($this->getEtatEvenementService()->findByCode(Etat::SUCCES)); $this->getJournalService()->update($journal); try { $this->getJournalService()->create($journal); } catch (Exception $e) { throw new RuntimeException("Oupsy", 0, $e); } return self::SUCCESS; } } No newline at end of file src/UnicaenEvenement/Controller/EvenementConsoleControllerFactory.php→src/UnicaenEvenement/Command/TraiterEvenementsCommandFactory.php +21 −21 Original line number Diff line number Diff line <?php namespace UnicaenEvenement\Controller; namespace UnicaenEvenement\Command; use Interop\Container\ContainerInterface; use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; use Symfony\Component\Console\Command\Command; use UnicaenEvenement\Service\Etat\EtatService; use UnicaenEvenement\Service\Evenement\EvenementService; use UnicaenEvenement\Service\EvenementGestion\EvenementGestionService; use UnicaenEvenement\Service\Journal\JournalService; class EvenementConsoleControllerFactory { class TraiterEvenementsCommandFactory extends Command { /** * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function __invoke(ContainerInterface $container) : EvenementConsoleController public function __invoke(ContainerInterface $container): TraiterEvenementsCommand { $command = new TraiterEvenementsCommand(); $config = $container->get('Configuration'); if(isset($config['unicaen-evenement']['max_time_execution'])){ $max_time_execution = $config['unicaen-evenement']['max_time_execution']; $command->setMaxExecutionTime(intval($max_time_execution)); } /** * @var EtatService $etatService * @var EvenementService $evenementService * @var EvenementGestionService $evenementGestionService * @var EtatService $etatService * @var JournalService $journalService */ $etatService = $container->get(EtatService::class); $evenementService = $container->get(EvenementService::class); $evenementGestionService = $container->get(EvenementGestionService::class); $etatService = $container->get(EtatService::class); $journalService = $container->get(JournalService::class); $controller = new EvenementConsoleController(); $controller->setEvenementService($evenementService); $controller->setEvenementGestionService($evenementGestionService); $controller->setEtatEvenementService($etatService); $controller->setJournalService($journalService); $config = $container->get('Configuration'); if(isset($config['unicaen-evenement']['max_time_execution'])){ $max_time_execution = $config['unicaen-evenement']['max_time_execution']; $controller->setMaxExecutionTime(intval($max_time_execution)); } return $controller; $command->setEtatEvenementService($etatService); $command->setEvenementService($evenementService); $command->setEvenementGestionService($evenementGestionService); $command->setJournalService($journalService); return $command; } } Loading
config/merged/command.config.php 0 → 100644 +42 −0 Original line number Diff line number Diff line <?php use UnicaenEvenement\Command\TraiterEvenementsCommand; use UnicaenEvenement\Command\TraiterEvenementsCommandFactory; return [ 'bjyauthorize' => [ 'guards' => [ ], ], 'laminas-cli' => [ 'commands' => [ 'evenement:traiter-evenements' => TraiterEvenementsCommand::class, ], ], 'controllers' => [ 'factories' => [ ], ], 'service_manager' => [ 'factories' => [ TraiterEvenementsCommand::class => TraiterEvenementsCommandFactory::class, ], ], 'form_elements' => [ 'factories' => [ ], ], 'hydrators' => [ 'factories' => [ ], ], 'view_helpers' => [ 'invokables' => [ ], ], ];
config/merged/evenement.config.php +2 −30 Original line number Diff line number Diff line Loading @@ -2,9 +2,8 @@ namespace UnicaenEvenement; use Unicaen\Console\Router\Simple; use UnicaenEvenement\Controller\EvenementConsoleController; use UnicaenEvenement\Controller\EvenementConsoleControllerFactory; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use UnicaenEvenement\Controller\EvenementController; use UnicaenEvenement\Controller\EvenementControllerFactory; use UnicaenEvenement\Form\Evenement\EvenementForm; Loading @@ -22,8 +21,6 @@ use UnicaenEvenement\View\Helper\EvenementsViewHelper; use UnicaenEvenement\View\Helper\EvenementViewHelper; use UnicaenEvenement\View\Helper\JournalViewHelper; use UnicaenPrivilege\Guard\PrivilegeController; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; return [ 'bjyauthorize' => [ Loading Loading @@ -52,13 +49,6 @@ return [ ], 'privileges' => EvenementinstancePrivileges::INSTANCE_SUPPRESSION, ], [ 'controller' => EvenementConsoleController::class, 'action' => [ 'traiter-evenements' ], 'roles' => [], ], ], ], ], Loading Loading @@ -131,23 +121,6 @@ return [ ], ], 'console' => [ 'router' => [ 'routes' => [ 'traiter-evenements' => [ 'type' => Simple::class, 'options' => [ 'route' => 'traiter-evenements', 'defaults' => [ 'controller' => EvenementConsoleController::class, 'action' => 'traiter-evenements' ], ], ], ], ], ], 'service_manager' => [ 'factories' => [ EvenementService::class => EvenementServiceFactory::class, Loading @@ -161,7 +134,6 @@ return [ 'controllers' => [ 'factories' => [ EvenementController::class => EvenementControllerFactory::class, EvenementConsoleController::class => EvenementConsoleControllerFactory::class, ], ], Loading
readme.md +3 −3 Original line number Diff line number Diff line Loading @@ -104,17 +104,17 @@ Pour récupérer la méthode ```traiter()``` qui est associé à l'événement. --- Route console pour lancer le traitement des événements. Commande pour lancer le traitement des événements. === ```sh $ docker exec preecog php public/index.php traiter-evenements $ docker exec preecog ./vendor/bin/laminas evenement:traiter-evenements ``` Déclaration dans la crontab ```sh # - Traitement des évènements en attente */1 * * * * root cd /var/www/html && php public/index.php traiter-evenements 1> /dev/null 2>&1 */1 * * * * root cd /var/www/html && ./vendor/bin/laminas evenement:traiter-evenements 1> /dev/null 2>&1 ``` --- Loading
src/UnicaenEvenement/Controller/EvenementConsoleController.php→src/UnicaenEvenement/Command/TraiterEvenementsCommand.php +60 −49 Original line number Diff line number Diff line <?php namespace UnicaenEvenement\Controller; namespace UnicaenEvenement\Command; use DateTime; use Exception; use RuntimeException; use Unicaen\Console\ColorInterface; use Unicaen\Console\Controller\AbstractConsoleController; use Unicaen\Console\Request as ConsoleRequest; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; use UnicaenEvenement\Entity\Db\Etat; use UnicaenEvenement\Entity\Db\Journal; use UnicaenEvenement\Service\Etat\EtatServiceAwareTrait; Loading @@ -15,11 +15,11 @@ use UnicaenEvenement\Service\Evenement\EvenementServiceAwareTrait; use UnicaenEvenement\Service\EvenementGestion\EvenementGestionServiceAwareTrait; use UnicaenEvenement\Service\Journal\JournalServiceAwareTrait; class EvenementConsoleController extends AbstractConsoleController class TraiterEvenementsCommand extends Command { use EvenementGestionServiceAwareTrait; use EvenementServiceAwareTrait; use EtatServiceAwareTrait; use EvenementServiceAwareTrait; use EvenementGestionServiceAwareTrait; use JournalServiceAwareTrait; /** Loading @@ -30,65 +30,82 @@ class EvenementConsoleController extends AbstractConsoleController * vraleur par défaut : 300s * @file /etc/crontab */ protected $maxExecutionTime = 300; protected int $maxExecutionTime = 300; public function getMaxExecutionTime(): int { return $this->maxExecutionTime; } public function setMaxExecutionTime(int $maxExecutionTime): void { $this->maxExecutionTime = $maxExecutionTime; } protected static $defaultName = 'evenement:traiter-evenements'; public function traiterEvenementsAction(): void protected function configure(): void { $request = $this->getRequest(); $texte = ""; if (!$request instanceof ConsoleRequest) { throw new RuntimeException('Cette action doit être appelée depuis une console !'); $this->setDescription("Traitement des événements en attente"); //$this->addArgument('event', InputArgument::OPTIONAL, "ID de l'événement"); } //Si un journal est en cours depuis trop longtemp, on le met en echec dans le journal pour cause de timeout //Celà évite d'être bloqué car un traitement est resté dans l'état En cours protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); //$event = $input->getArgument('event'); $io->title("Traitement des événements en attente"); $journal = $this->getJournalService()->getDernierJournal(); if ($this->getJournalService()->isRunning()) { $io->error("Un traitement est déjà en cours !"); return self::FAILURE; } if (isset($journal) && $journal->getEtat()->getCode() == Etat::EN_COURS) { $time = new DateTime(); $executionTime = $time->getTimestamp() - $journal->getDate()->getTimestamp(); if ($executionTime >= $this->maxExecutionTime) { // if(true) { // pour les test $log = $journal->getLog(); $log .= sprintf("-----------<br/>"); $log .= "-----------<br/>"; $log .= sprintf("Mise en echec le %s à %s car temps d'exécution trop long <br/>", $time->format('d/m/Y'), $time->format('H:i') ); $log .= sprintf("-----------<br/>"); $this->getConsole()->writeLine("\n* " . ($titre = "Mise en échec du journal #".$journal->getId()) . " *\n", ColorInterface::RED); $log .= "-----------<br/>"; $io->warning("Mise en échec du journal #" . $journal->getId()); $journal->setLog($log); $journal->setEtat($this->getEtatEvenementService()->findByCode(Etat::ECHEC)); $this->getJournalService()->update($journal); } } if ($this->getJournalService()->isRunning()) { throw new \RuntimeException('Un traitement est déjà en cours !'); } $texte = ""; $journal = new Journal(); $journal->setDate(new DateTime()); $journal->setEtat($this->getEtatEvenementService()->findByCode(Etat::EN_COURS)); $this->getJournalService()->create($journal); $start = new DateTime(); $this->getConsole()->writeLine("\n* " . ("Traitement des événements en attente") . " *\n", ColorInterface::LIGHT_GREEN); $this->getConsole()->writeLine("Debut du traitement", ColorInterface::GREEN); $this->getConsole()->writeLine("-------------------\n", ColorInterface::GREEN); $texte .= "Début du traitement : " . (new DateTime())->format('d/m/Y H:i:s') . "<br/>"; $io->success("Traitement des événements en attente"); $io->success("Debut du traitement"); $io->success("-------------------"); $start = new DateTime(); $nbOp = 0; $texte .= "Début du traitement : " . $start->format('d/m/Y H:i:s') . "<br/>"; $nbOp = 0; $evenements = $this->getEvenementService()->getEvenementsByEtat(Etat::EN_ATTENTE); if (empty($evenements)) { $io->info("Aucun événément à traiter"); $journal->setLog("Aucun événément à traiter"); $journal->setEtat($this->getEtatEvenementService()->findByCode(Etat::SUCCES)); $this->getJournalService()->update($journal); $io->success("-------------------"); $io->success("Fin du traitement"); return self::SUCCESS; } foreach ($evenements as $evenement) { // calcul du temps d'exécution Loading @@ -101,38 +118,32 @@ class EvenementConsoleController extends AbstractConsoleController try { if ($evenement !== null) { $this->evenementGestionService->traiterEvent($evenement); $this->getConsole()->writeLine(sprintf("- traitement de l'événement #%s", $evenement->getId())); $io->text("- traitement de l'événement #" . $evenement->getId()); $texte .= "Traitement de l'événement #" . $evenement->getId() . " <br/>"; $nbOp++; } } catch (Exception $e) { $this->getConsole()->writeLine(sprintf("- échec du traitement de l'événement #%s", $evenement->getId()), ColorInterface::RED); $this->getConsole()->writeLine($e->getMessage(),ColorInterface::LIGHT_RED); $io->error(sprintf("- échec du traitement de l'événement #%s", $evenement->getId())); $io->warning($e->getMessage()); $texte .= "<strong> Échec du traitement </strong> <br/>"; } } if ($nbOp == 0) { $this->getConsole()->writeLine("Aucun événement à traiter."); } $this->getConsole()->writeLine("\n-------------------", ColorInterface::GREEN); $this->getConsole()->writeLine("Fin du traitement", ColorInterface::GREEN); $end = new DateTime(); $texte .= "Fin du traitement : " . $end->format('d/m/Y H:i:s'); $texte .= "Fin du traitement : " . (new DateTime())->format('d/m/Y H:i:s') ; $io->info("Rapport"); $io->info("-------"); $io->info("* Nombre d'opérations : " . $nbOp); $io->info("* Temps estimé : " . ($start->diff(new DateTime())->format('%Hh %Im %Ss'))); $this->getConsole()->writeLine("\nRapport", ColorInterface::CYAN); $this->getConsole()->writeLine("-------", ColorInterface::CYAN); $this->getConsole()->writeLine(sprintf("* Nombre d'opérations : %s", $nbOp), ColorInterface::CYAN); $this->getConsole()->writeLine(sprintf("* Temps estimé : %s", $start->diff(new DateTime())->format('%Hh %Im %Ss')), ColorInterface::CYAN); $io->success("-------------------"); $io->success("Fin du traitement"); $journal->setLog($texte); $journal->setEtat($this->getEtatEvenementService()->findByCode(Etat::SUCCES)); $this->getJournalService()->update($journal); try { $this->getJournalService()->create($journal); } catch (Exception $e) { throw new RuntimeException("Oupsy", 0, $e); } return self::SUCCESS; } } No newline at end of file
src/UnicaenEvenement/Controller/EvenementConsoleControllerFactory.php→src/UnicaenEvenement/Command/TraiterEvenementsCommandFactory.php +21 −21 Original line number Diff line number Diff line <?php namespace UnicaenEvenement\Controller; namespace UnicaenEvenement\Command; use Interop\Container\ContainerInterface; use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; use Symfony\Component\Console\Command\Command; use UnicaenEvenement\Service\Etat\EtatService; use UnicaenEvenement\Service\Evenement\EvenementService; use UnicaenEvenement\Service\EvenementGestion\EvenementGestionService; use UnicaenEvenement\Service\Journal\JournalService; class EvenementConsoleControllerFactory { class TraiterEvenementsCommandFactory extends Command { /** * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function __invoke(ContainerInterface $container) : EvenementConsoleController public function __invoke(ContainerInterface $container): TraiterEvenementsCommand { $command = new TraiterEvenementsCommand(); $config = $container->get('Configuration'); if(isset($config['unicaen-evenement']['max_time_execution'])){ $max_time_execution = $config['unicaen-evenement']['max_time_execution']; $command->setMaxExecutionTime(intval($max_time_execution)); } /** * @var EtatService $etatService * @var EvenementService $evenementService * @var EvenementGestionService $evenementGestionService * @var EtatService $etatService * @var JournalService $journalService */ $etatService = $container->get(EtatService::class); $evenementService = $container->get(EvenementService::class); $evenementGestionService = $container->get(EvenementGestionService::class); $etatService = $container->get(EtatService::class); $journalService = $container->get(JournalService::class); $controller = new EvenementConsoleController(); $controller->setEvenementService($evenementService); $controller->setEvenementGestionService($evenementGestionService); $controller->setEtatEvenementService($etatService); $controller->setJournalService($journalService); $config = $container->get('Configuration'); if(isset($config['unicaen-evenement']['max_time_execution'])){ $max_time_execution = $config['unicaen-evenement']['max_time_execution']; $controller->setMaxExecutionTime(intval($max_time_execution)); } return $controller; $command->setEtatEvenementService($etatService); $command->setEvenementService($evenementService); $command->setEvenementGestionService($evenementGestionService); $command->setJournalService($journalService); return $command; } }