Loading module/Application/config/others/these.config.php +1 −0 Original line number Diff line number Diff line Loading @@ -486,6 +486,7 @@ return [ 'these' => '\d+', ], 'defaults' => [ /** @see TheseController::refreshTheseAction() */ 'controller' => 'Application\Controller\These', 'action' => 'refresh-these', ], Loading module/Application/src/Application/Controller/Factory/TheseControllerFactory.php +5 −7 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ use Application\Service\VersionFichier\VersionFichierService; use Application\Service\Workflow\WorkflowService; use Application\SourceCodeStringHelper; use Doctrine\ORM\EntityManager; use Import\Service\ImportService; use Interop\Container\ContainerInterface; use Laminas\View\Renderer\PhpRenderer; Loading @@ -37,8 +36,10 @@ class TheseControllerFactory * * @param ContainerInterface $container * @return TheseController * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface */ public function __invoke(ContainerInterface $container) public function __invoke(ContainerInterface $container): TheseController { $options = $this->getOptions($container); Loading @@ -56,7 +57,6 @@ class TheseControllerFactory * @var UniteRechercheService $uniteService * @var MailConfirmationService $mailConfirmationService * @var EntityManager $entityManager * @var ImportService $importService * @var UtilisateurService $utilisateurService * @var ActeurService $acteurService * @var IndividuService $indivdiService Loading @@ -74,7 +74,6 @@ class TheseControllerFactory $mailConfirmationService = $container->get('MailConfirmationService'); $entityManager = $container->get('doctrine.entitymanager.orm_default'); $notifierService = $container->get(NotifierService::class); // $importService = $container->get('ImportService'); $utilisateurService = $container->get('UtilisateurService'); /** Loading Loading @@ -113,7 +112,6 @@ class TheseControllerFactory $controller->setMailConfirmationService($mailConfirmationService); $controller->setEntityManager($entityManager); $controller->setNotifierService($notifierService); // $controller->setImportService($importService); $controller->setUtilisateurService($utilisateurService); $controller->setRdvBuTheseDoctorantForm($rdvBuTheseDoctorantForm); $controller->setRdvBuTheseForm($rdvBuTheseForm); Loading @@ -133,13 +131,13 @@ class TheseControllerFactory private function getTimeoutRetraitementFromOptions(array $options) { return isset($options['retraitement']['timeout']) ? $options['retraitement']['timeout'] : null; return $options['retraitement']['timeout'] ?? null; } private function getOptions(ContainerInterface $container) { $options = $container->get('config'); return isset($options['sygal']) ? $options['sygal'] : []; return $options['sygal'] ?? []; } } No newline at end of file module/Application/src/Application/Controller/TheseController.php +10 −16 Original line number Diff line number Diff line Loading @@ -6,7 +6,6 @@ use Application\Command\Exception\TimedOutCommandException; use Application\Entity\Db\Attestation; use Application\Entity\Db\Diffusion; use Application\Entity\Db\FichierThese; use Application\Entity\Db\Individu; use Application\Entity\Db\MailConfirmation; use Application\Entity\Db\MetadonneeThese; use Application\Entity\Db\NatureFichier; Loading Loading @@ -43,22 +42,19 @@ use Application\Service\VersionFichier\VersionFichierServiceAwareTrait; use Application\Service\Workflow\WorkflowServiceAwareTrait; use Application\SourceCodeStringHelperAwareTrait; use Doctrine\ORM\OptimisticLockException; use Import\Service\Traits\ImportServiceAwareTrait; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenApp\Service\MessageCollectorAwareTrait; use UnicaenApp\Traits\MessageAwareInterface; use Laminas\Form\Element\Hidden; use Laminas\Form\Element\Radio; use Laminas\Form\Element\Submit; use Laminas\Form\Form; use Laminas\Http\Response; use Laminas\InputFilter\InputFilter; use Laminas\Log\Logger; use Laminas\Log\Writer\Noop; use Laminas\Stdlib\ParametersInterface; use Laminas\View\Model\ViewModel; use Laminas\View\Renderer\PhpRenderer; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenApp\Service\MessageCollectorAwareTrait; use UnicaenApp\Traits\MessageAwareInterface; class TheseController extends AbstractController { Loading @@ -76,7 +72,6 @@ class TheseController extends AbstractController use EntityManagerAwareTrait; use MailConfirmationServiceAwareTrait; use UniteRechercheServiceAwareTrait; use ImportServiceAwareTrait; use UserContextServiceAwareTrait; use VariableServiceAwareTrait; use SourceCodeStringHelperAwareTrait; Loading Loading @@ -317,16 +312,15 @@ class TheseController extends AbstractController * * @return Response */ public function refreshTheseAction() public function refreshTheseAction()/*: Response*/ { $these = $this->requestedThese(); $this->theseService->refreshThese($these); $this->importService->setLogger((new Logger())->addWriter(new Noop())); $this->importService->updateThese($these); $redirect = $this->params()->fromQuery('redirect', '/'); return $this->redirect()->toUrl($redirect); // $redirect = $this->params()->fromQuery('redirect', '/'); // // return $this->redirect()->toUrl($redirect); return []; } /** Loading module/Application/src/Application/Service/These/Factory/TheseServiceFactory.php +12 −0 Original line number Diff line number Diff line Loading @@ -12,10 +12,12 @@ use Application\Service\UserContextService; use Application\Service\Utilisateur\UtilisateurService; use Application\Service\Validation\ValidationService; use Application\Service\Variable\VariableService; use Application\SourceCodeStringHelper; use Interop\Container\ContainerInterface; use Soutenance\Service\Membre\MembreService; use UnicaenAuth\Service\AuthorizeService; use UnicaenAuth\Service\User as UserService; use UnicaenDbImport\Service\ImportService; use Webmozart\Assert\Assert; class TheseServiceFactory Loading Loading @@ -57,6 +59,14 @@ class TheseServiceFactory /** @var FileService $fileService */ $fileService = $container->get(FileService::class); /** * @var SourceCodeStringHelper $sourceCodeStringHelper; */ $sourceCodeStringHelper = $container->get(SourceCodeStringHelper::class); /** @var ImportService $importService */ $importService = $container->get(ImportService::class); $service = new TheseService(); $service->setActeurService($acteurService); $service->setValidationService($validationService); Loading @@ -70,6 +80,8 @@ class TheseServiceFactory $service->setEtablissementService($etablissementService); $service->setFileService($fileService); $service->setAuthorizeService($authorizeService); $service->setSourceCodeStringHelper($sourceCodeStringHelper); $service->setImportService($importService); $this->injectConfig($service, $container); Loading module/Application/src/Application/Service/These/TheseService.php +112 −0 Original line number Diff line number Diff line Loading @@ -30,11 +30,16 @@ use Application\Service\UserContextServiceAwareTrait; use Application\Service\Utilisateur\UtilisateurServiceAwareTrait; use Application\Service\Validation\ValidationServiceAwareTrait; use Application\Service\Variable\VariableServiceAwareTrait; use Application\SourceCodeStringHelper; use Application\SourceCodeStringHelperAwareTrait; use Assert\Assertion; use DateTime; use Doctrine\DBAL\DBALException; use Doctrine\ORM\OptimisticLockException; use Doctrine\ORM\ORMException; use Import\Model\TmpActeur; use Import\Model\TmpDoctorant; use Import\Model\TmpThese; use Soutenance\Entity\Proposition; use Soutenance\Service\Membre\MembreServiceAwareTrait; use UnicaenApp\Exception\LogicException; Loading @@ -46,6 +51,10 @@ use Laminas\EventManager\EventManagerInterface; use Laminas\EventManager\ListenerAggregateInterface; use Laminas\EventManager\ListenerAggregateTrait; use Laminas\Mvc\Controller\AbstractActionController; use UnicaenDbImport\Service\Exception\DatabaseServiceException; use UnicaenDbImport\Service\Traits\ImportServiceAwareTrait; use UnicaenDbImport\Service\Traits\SynchroServiceAwareTrait; use function Application\generateNameForEtab; class TheseService extends BaseService implements ListenerAggregateInterface { Loading @@ -62,6 +71,9 @@ class TheseService extends BaseService implements ListenerAggregateInterface use AuthorizeServiceAwareTrait; use ActeurServiceAwareTrait; use MembreServiceAwareTrait; use ImportServiceAwareTrait; use SynchroServiceAwareTrait; use SourceCodeStringHelperAwareTrait; /** * Resaisir l'autorisation de diffusion ? Sinon celle saisie au 1er dépôt est reprise/dupliquée. Loading Loading @@ -797,4 +809,104 @@ EOS; throw new RuntimeException("Erreur rencontrée lors de l'enregistrement du sursis", null, $e); } } /** * @param \Application\Entity\Db\These $these * @throws \UnicaenDbImport\Service\Exception\DatabaseServiceException */ public function refreshThese(These $these) { $names = []; // xxxId : préfixé par l'etab $theseId = $these->getSourceCode(); $etab = $this->sourceCodeStringHelper->extractPrefixFrom($theseId); /** * Imports */ // thèse $names[] = $name = generateNameForEtab('these-%s', $etab); $import = $this->importService->getImportByName($name); $result = $this->importService->runImportOne($import, $this->sourceCodeStringHelper->removePrefixFrom($theseId) ); /** @var TmpThese $tmpThese */ $tmpThese = $this->entityManager->getRepository(TmpThese::class)->findOneBy([ 'sourceCode' => $this->sourceCodeStringHelper->removePrefixFrom($theseId) ]); // doctorant $doctorantId = $tmpThese->getDoctorantId(); $names[] = $name = generateNameForEtab('doctorant-%s', $etab); $import = $this->importService->getImportByName($name); $result = $this->importService->runImportOne($import, $this->sourceCodeStringHelper->removePrefixFrom($doctorantId) ); /** @var TmpDoctorant $tmpDoctorant */ $tmpDoctorant = $this->entityManager->getRepository(TmpDoctorant::class)->findOneBy([ 'sourceCode' => $this->sourceCodeStringHelper->removePrefixFrom($doctorantId) ]); // individu doctorant $individuId = $tmpDoctorant->getIndividuId(); $names[] = $name = generateNameForEtab('individu-%s', $etab); $import = $this->importService->getImportByName($name); $result = $this->importService->runImportOne($import, $this->sourceCodeStringHelper->removePrefixFrom($individuId) ); // acteurs //$theseId = $these->getId(); //$this->fetcherService->fetchRows('acteur', ['these' => $these]); $names[] = $name = generateNameForEtab('acteur-%s', $etab); $import = $this->importService->getImportByName($name); $result = $this->importService->runImportOne($import, $theseId); /** @var TmpActeur[] $tmpActeurs */ $tmpActeurs = $this->entityManager->getRepository(TmpActeur::class)->findBy(['theseId' => $theseId]); // individus acteurs $sourceCodeIndividus = []; foreach ($tmpActeurs as $tmpActeur) { $sourceCodeIndividus[] = $individuId = $tmpActeur->getIndividuId(); //$this->fetcherService->fetchRows('individu', ['source_code' => $individuId]); $names[] = $name = generateNameForEtab('individu-%s', $etab); $import = $this->importService->getImportByName($name); $result = $this->importService->runImportOne($import, $this->sourceCodeStringHelper->removePrefixFrom($individuId) ); } // ed $ecoleDoctId = $tmpThese->getEcoleDoctId(); $names[] = $name = generateNameForEtab('ecole-doctorale-%s', $etab); $import = $this->importService->getImportByName($name); $result = $this->importService->runImportOne($import, $this->sourceCodeStringHelper->removePrefixFrom($ecoleDoctId) ); // ur $uniteRechId = $tmpThese->getUniteRechId(); $names[] = $name = generateNameForEtab('ecole-recherche-%s', $etab); $import = $this->importService->getImportByName($name); $result = $this->importService->runImportOne($import, $this->sourceCodeStringHelper->removePrefixFrom($uniteRechId) ); /** * Synchros */ foreach ($names as $name) { $synchro = $this->synchroService->getSynchroByName($name); $result = $this->synchroService->runSynchro($synchro); } } } No newline at end of file Loading
module/Application/config/others/these.config.php +1 −0 Original line number Diff line number Diff line Loading @@ -486,6 +486,7 @@ return [ 'these' => '\d+', ], 'defaults' => [ /** @see TheseController::refreshTheseAction() */ 'controller' => 'Application\Controller\These', 'action' => 'refresh-these', ], Loading
module/Application/src/Application/Controller/Factory/TheseControllerFactory.php +5 −7 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ use Application\Service\VersionFichier\VersionFichierService; use Application\Service\Workflow\WorkflowService; use Application\SourceCodeStringHelper; use Doctrine\ORM\EntityManager; use Import\Service\ImportService; use Interop\Container\ContainerInterface; use Laminas\View\Renderer\PhpRenderer; Loading @@ -37,8 +36,10 @@ class TheseControllerFactory * * @param ContainerInterface $container * @return TheseController * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface */ public function __invoke(ContainerInterface $container) public function __invoke(ContainerInterface $container): TheseController { $options = $this->getOptions($container); Loading @@ -56,7 +57,6 @@ class TheseControllerFactory * @var UniteRechercheService $uniteService * @var MailConfirmationService $mailConfirmationService * @var EntityManager $entityManager * @var ImportService $importService * @var UtilisateurService $utilisateurService * @var ActeurService $acteurService * @var IndividuService $indivdiService Loading @@ -74,7 +74,6 @@ class TheseControllerFactory $mailConfirmationService = $container->get('MailConfirmationService'); $entityManager = $container->get('doctrine.entitymanager.orm_default'); $notifierService = $container->get(NotifierService::class); // $importService = $container->get('ImportService'); $utilisateurService = $container->get('UtilisateurService'); /** Loading Loading @@ -113,7 +112,6 @@ class TheseControllerFactory $controller->setMailConfirmationService($mailConfirmationService); $controller->setEntityManager($entityManager); $controller->setNotifierService($notifierService); // $controller->setImportService($importService); $controller->setUtilisateurService($utilisateurService); $controller->setRdvBuTheseDoctorantForm($rdvBuTheseDoctorantForm); $controller->setRdvBuTheseForm($rdvBuTheseForm); Loading @@ -133,13 +131,13 @@ class TheseControllerFactory private function getTimeoutRetraitementFromOptions(array $options) { return isset($options['retraitement']['timeout']) ? $options['retraitement']['timeout'] : null; return $options['retraitement']['timeout'] ?? null; } private function getOptions(ContainerInterface $container) { $options = $container->get('config'); return isset($options['sygal']) ? $options['sygal'] : []; return $options['sygal'] ?? []; } } No newline at end of file
module/Application/src/Application/Controller/TheseController.php +10 −16 Original line number Diff line number Diff line Loading @@ -6,7 +6,6 @@ use Application\Command\Exception\TimedOutCommandException; use Application\Entity\Db\Attestation; use Application\Entity\Db\Diffusion; use Application\Entity\Db\FichierThese; use Application\Entity\Db\Individu; use Application\Entity\Db\MailConfirmation; use Application\Entity\Db\MetadonneeThese; use Application\Entity\Db\NatureFichier; Loading Loading @@ -43,22 +42,19 @@ use Application\Service\VersionFichier\VersionFichierServiceAwareTrait; use Application\Service\Workflow\WorkflowServiceAwareTrait; use Application\SourceCodeStringHelperAwareTrait; use Doctrine\ORM\OptimisticLockException; use Import\Service\Traits\ImportServiceAwareTrait; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenApp\Service\MessageCollectorAwareTrait; use UnicaenApp\Traits\MessageAwareInterface; use Laminas\Form\Element\Hidden; use Laminas\Form\Element\Radio; use Laminas\Form\Element\Submit; use Laminas\Form\Form; use Laminas\Http\Response; use Laminas\InputFilter\InputFilter; use Laminas\Log\Logger; use Laminas\Log\Writer\Noop; use Laminas\Stdlib\ParametersInterface; use Laminas\View\Model\ViewModel; use Laminas\View\Renderer\PhpRenderer; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; use UnicaenApp\Service\MessageCollectorAwareTrait; use UnicaenApp\Traits\MessageAwareInterface; class TheseController extends AbstractController { Loading @@ -76,7 +72,6 @@ class TheseController extends AbstractController use EntityManagerAwareTrait; use MailConfirmationServiceAwareTrait; use UniteRechercheServiceAwareTrait; use ImportServiceAwareTrait; use UserContextServiceAwareTrait; use VariableServiceAwareTrait; use SourceCodeStringHelperAwareTrait; Loading Loading @@ -317,16 +312,15 @@ class TheseController extends AbstractController * * @return Response */ public function refreshTheseAction() public function refreshTheseAction()/*: Response*/ { $these = $this->requestedThese(); $this->theseService->refreshThese($these); $this->importService->setLogger((new Logger())->addWriter(new Noop())); $this->importService->updateThese($these); $redirect = $this->params()->fromQuery('redirect', '/'); return $this->redirect()->toUrl($redirect); // $redirect = $this->params()->fromQuery('redirect', '/'); // // return $this->redirect()->toUrl($redirect); return []; } /** Loading
module/Application/src/Application/Service/These/Factory/TheseServiceFactory.php +12 −0 Original line number Diff line number Diff line Loading @@ -12,10 +12,12 @@ use Application\Service\UserContextService; use Application\Service\Utilisateur\UtilisateurService; use Application\Service\Validation\ValidationService; use Application\Service\Variable\VariableService; use Application\SourceCodeStringHelper; use Interop\Container\ContainerInterface; use Soutenance\Service\Membre\MembreService; use UnicaenAuth\Service\AuthorizeService; use UnicaenAuth\Service\User as UserService; use UnicaenDbImport\Service\ImportService; use Webmozart\Assert\Assert; class TheseServiceFactory Loading Loading @@ -57,6 +59,14 @@ class TheseServiceFactory /** @var FileService $fileService */ $fileService = $container->get(FileService::class); /** * @var SourceCodeStringHelper $sourceCodeStringHelper; */ $sourceCodeStringHelper = $container->get(SourceCodeStringHelper::class); /** @var ImportService $importService */ $importService = $container->get(ImportService::class); $service = new TheseService(); $service->setActeurService($acteurService); $service->setValidationService($validationService); Loading @@ -70,6 +80,8 @@ class TheseServiceFactory $service->setEtablissementService($etablissementService); $service->setFileService($fileService); $service->setAuthorizeService($authorizeService); $service->setSourceCodeStringHelper($sourceCodeStringHelper); $service->setImportService($importService); $this->injectConfig($service, $container); Loading
module/Application/src/Application/Service/These/TheseService.php +112 −0 Original line number Diff line number Diff line Loading @@ -30,11 +30,16 @@ use Application\Service\UserContextServiceAwareTrait; use Application\Service\Utilisateur\UtilisateurServiceAwareTrait; use Application\Service\Validation\ValidationServiceAwareTrait; use Application\Service\Variable\VariableServiceAwareTrait; use Application\SourceCodeStringHelper; use Application\SourceCodeStringHelperAwareTrait; use Assert\Assertion; use DateTime; use Doctrine\DBAL\DBALException; use Doctrine\ORM\OptimisticLockException; use Doctrine\ORM\ORMException; use Import\Model\TmpActeur; use Import\Model\TmpDoctorant; use Import\Model\TmpThese; use Soutenance\Entity\Proposition; use Soutenance\Service\Membre\MembreServiceAwareTrait; use UnicaenApp\Exception\LogicException; Loading @@ -46,6 +51,10 @@ use Laminas\EventManager\EventManagerInterface; use Laminas\EventManager\ListenerAggregateInterface; use Laminas\EventManager\ListenerAggregateTrait; use Laminas\Mvc\Controller\AbstractActionController; use UnicaenDbImport\Service\Exception\DatabaseServiceException; use UnicaenDbImport\Service\Traits\ImportServiceAwareTrait; use UnicaenDbImport\Service\Traits\SynchroServiceAwareTrait; use function Application\generateNameForEtab; class TheseService extends BaseService implements ListenerAggregateInterface { Loading @@ -62,6 +71,9 @@ class TheseService extends BaseService implements ListenerAggregateInterface use AuthorizeServiceAwareTrait; use ActeurServiceAwareTrait; use MembreServiceAwareTrait; use ImportServiceAwareTrait; use SynchroServiceAwareTrait; use SourceCodeStringHelperAwareTrait; /** * Resaisir l'autorisation de diffusion ? Sinon celle saisie au 1er dépôt est reprise/dupliquée. Loading Loading @@ -797,4 +809,104 @@ EOS; throw new RuntimeException("Erreur rencontrée lors de l'enregistrement du sursis", null, $e); } } /** * @param \Application\Entity\Db\These $these * @throws \UnicaenDbImport\Service\Exception\DatabaseServiceException */ public function refreshThese(These $these) { $names = []; // xxxId : préfixé par l'etab $theseId = $these->getSourceCode(); $etab = $this->sourceCodeStringHelper->extractPrefixFrom($theseId); /** * Imports */ // thèse $names[] = $name = generateNameForEtab('these-%s', $etab); $import = $this->importService->getImportByName($name); $result = $this->importService->runImportOne($import, $this->sourceCodeStringHelper->removePrefixFrom($theseId) ); /** @var TmpThese $tmpThese */ $tmpThese = $this->entityManager->getRepository(TmpThese::class)->findOneBy([ 'sourceCode' => $this->sourceCodeStringHelper->removePrefixFrom($theseId) ]); // doctorant $doctorantId = $tmpThese->getDoctorantId(); $names[] = $name = generateNameForEtab('doctorant-%s', $etab); $import = $this->importService->getImportByName($name); $result = $this->importService->runImportOne($import, $this->sourceCodeStringHelper->removePrefixFrom($doctorantId) ); /** @var TmpDoctorant $tmpDoctorant */ $tmpDoctorant = $this->entityManager->getRepository(TmpDoctorant::class)->findOneBy([ 'sourceCode' => $this->sourceCodeStringHelper->removePrefixFrom($doctorantId) ]); // individu doctorant $individuId = $tmpDoctorant->getIndividuId(); $names[] = $name = generateNameForEtab('individu-%s', $etab); $import = $this->importService->getImportByName($name); $result = $this->importService->runImportOne($import, $this->sourceCodeStringHelper->removePrefixFrom($individuId) ); // acteurs //$theseId = $these->getId(); //$this->fetcherService->fetchRows('acteur', ['these' => $these]); $names[] = $name = generateNameForEtab('acteur-%s', $etab); $import = $this->importService->getImportByName($name); $result = $this->importService->runImportOne($import, $theseId); /** @var TmpActeur[] $tmpActeurs */ $tmpActeurs = $this->entityManager->getRepository(TmpActeur::class)->findBy(['theseId' => $theseId]); // individus acteurs $sourceCodeIndividus = []; foreach ($tmpActeurs as $tmpActeur) { $sourceCodeIndividus[] = $individuId = $tmpActeur->getIndividuId(); //$this->fetcherService->fetchRows('individu', ['source_code' => $individuId]); $names[] = $name = generateNameForEtab('individu-%s', $etab); $import = $this->importService->getImportByName($name); $result = $this->importService->runImportOne($import, $this->sourceCodeStringHelper->removePrefixFrom($individuId) ); } // ed $ecoleDoctId = $tmpThese->getEcoleDoctId(); $names[] = $name = generateNameForEtab('ecole-doctorale-%s', $etab); $import = $this->importService->getImportByName($name); $result = $this->importService->runImportOne($import, $this->sourceCodeStringHelper->removePrefixFrom($ecoleDoctId) ); // ur $uniteRechId = $tmpThese->getUniteRechId(); $names[] = $name = generateNameForEtab('ecole-recherche-%s', $etab); $import = $this->importService->getImportByName($name); $result = $this->importService->runImportOne($import, $this->sourceCodeStringHelper->removePrefixFrom($uniteRechId) ); /** * Synchros */ foreach ($names as $name) { $synchro = $this->synchroService->getSynchroByName($name); $result = $this->synchroService->runSynchro($synchro); } } } No newline at end of file