Loading src/Command/SignatureUpdateAllCommand.php 0 → 100644 +28 −0 Changes for src/Command/SignatureUpdateAllCommand.php: 28 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace UnicaenSignature\Command; use Laminas\ServiceManager\ServiceManager; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use UnicaenSignature\Entity\Db\Signature; class SignatureUpdateAllCommand extends SignatureCommandAbstract { protected static $defaultName = 'signature:update-all'; protected function configure() { $this ->setDescription("Actualise l'état des signatures"); } protected function execute(InputInterface $input, OutputInterface $output): int { $io = $this->getIO($input, $output); $this->getSignatureService()->updateAll(); return self::SUCCESS; } } No newline at end of file src/Controller/SignatureController.php +1 −1 Changes for src/Controller/SignatureController.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ class SignatureController extends AbstractActionController $form->setData($post); if ($form->isValid()) { try { $this->getSignatureService()->saveNewSignature($form->getData()); $this->getSignatureService()->saveNewSignature($form->getData(), true); } catch (Exception $e) { $this->flash()->addErrorMessage($e->getMessage()); } Loading src/Entity/Repository/SignatureRepository.php +16 −1 Changes for src/Entity/Repository/SignatureRepository.php: 16 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -3,8 +3,23 @@ namespace UnicaenSignature\Entity\Repository; use Doctrine\ORM\EntityRepository; use UnicaenSignature\Entity\Db\Signature; class SignatureRepository extends EntityRepository { /** * Retourne la liste des signatures pouvant être mises à jour. * * @return Signature[] */ public function getSignaturesUpdatable() :array { $statusUpdatable = [ Signature::STATUS_SIGNATURE_WAIT ]; return $this->createQueryBuilder('s') ->where('s.status in(:statusUpdatable)') ->setParameter('statusUpdatable', $statusUpdatable) ->getQuery() ->getResult(); } } No newline at end of file src/Service/SharedEventManagerAwareTrait.php 0 → 100644 +28 −0 Changes for src/Service/SharedEventManagerAwareTrait.php: 28 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace UnicaenSignature\Service; use Laminas\EventManager\SharedEventManager; trait SharedEventManagerAwareTrait { private SharedEventManager $sharedEventManager; /** * @return SharedEventManager */ public function getSharedEventManager(): SharedEventManager { return $this->sharedEventManager; } /** * @param SharedEventManager $sharedEventManager * @return void */ public function setSharedEventManager(SharedEventManager $sharedEventManager): void { $this->sharedEventManager = $sharedEventManager; } } No newline at end of file src/Service/SignatureService.php +94 −7 Changes for src/Service/SignatureService.php: 94 added lines, 7 removed lines. Original line number Diff line number Diff line Loading @@ -3,6 +3,9 @@ namespace UnicaenSignature\Service; use DoctrineModule\Persistence\ProvidesObjectManager; use Laminas\EventManager\Event; use Laminas\EventManager\EventManager; use Laminas\EventManager\SharedEventManager; use UnicaenSignature\Entity\Data\LevelInfo; use UnicaenSignature\Entity\Db\Signature; use UnicaenSignature\Entity\Db\SignatureRecipient; Loading @@ -14,9 +17,11 @@ use UnicaenSignature\Utils\SignatureException; class SignatureService { use ProvidesObjectManager, use LetterfileServiceAwareTrait, LoggerServiceAwareTrait, ProvidesObjectManager, SharedEventManagerAwareTrait, SignatureConfigurationServiceAwareTrait; const ERR_SIGNATURETYPE_LIST = "Impossible de charger la liste des types de signature"; Loading @@ -30,16 +35,31 @@ class SignatureService return $this->getObjectManager()->getRepository(Signature::class); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///// LISTES /** * @return array * @return Signature[] * @throws \Exception */ public function getSignatures(): array { try { return $this->getSignatureRepository()->findAll(); } catch (\Exception $e) { $this->getLoggerService()->critical("Get signature ERROR : " . $e->getMessage()); throw new SignatureException("Impossible de charger les signatures"); } } /** * @return Signature[] * @throws \Exception */ public function getSignaturesUpdatable() :array { try { return $this->getSignatureRepository()->getSignaturesUpdatable(); } catch (\Exception $e) { $this->getLoggerService()->throwLoggedException($e); } Loading Loading @@ -102,12 +122,16 @@ class SignatureService //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// public function saveNewSignature(Signature $signature, bool $pushToLetterFile = false): void { $this->getLoggerService()->info("Enregistrement de la demande de signature"); try { $this->getObjectManager()->persist($signature); $this->getObjectManager()->flush($signature); if( $pushToLetterFile ){ $this->sendSignature($signature); } } catch (\Exception $e) { $msg = "Impossible d'enregistrer la demande de signature"; $this->getLoggerService()->critical("$msg : " . $e->getMessage()); Loading @@ -115,6 +139,24 @@ class SignatureService } } /** * Mise à jour des signatures. * * @return void */ public function updateAll() :void { $signatures = $this->getSignatureRepository()->getSignaturesUpdatable(); foreach ($signatures as $signature) { $this->updateStatusSignature($signature); } } /** * @param int $id * @return void * @throws SignatureException */ public function updateStatusSignatureById(int $id): void { $this->updateStatusSignature($this->getSignature($id)); Loading @@ -127,41 +169,82 @@ class SignatureService */ public function updateStatusSignature(Signature $signature): void { try { $letterFileStrategy = $this->getLetterfileService()->getLetterFileStrategy($signature->getLetterfileKey()); $status = $letterFileStrategy->getSignatureStatus($signature); if( $status != $signature->getStatus() ){ $signature->setStatus($status); $this->getObjectManager()->flush(); $this->triggerEventStatusUpdate($signature); } } catch (\Exception $e) { $this->getLoggerService()->error("Update signature error : " . $e->getMessage()); throw new SignatureException("Impossible de mettre à jour le statut de la signature"); } } /** * @param Signature $signature * @return void */ protected function triggerEventStatusUpdate(Signature $signature) :void { $em = new EventManager($this->getSharedEventManager()); $em->trigger('signature:status', null, ['id' => $signature->getId()]); } /** * @param int $id * @return void * @throws SignatureException */ public function deleteSignatureById(int $id): void { $this->deleteSignature($this->getSignature($id)); } /** * Suppression d'une demande signature. * * @param Signature $signature * @return void * @throws SignatureException */ public function deleteSignature(Signature $signature): void { if ($signature->getStatus() == Signature::STATUS_SIGNATURE_DRAFT) { try { $this->getObjectManager()->remove($signature); $this->getObjectManager()->flush(); } catch (\Exception $exception) { $this->getLoggerService()->error("Error DB : " . $exception->getMessage()); throw new SignatureException("Impossible de supprimer la demande de la base de donnée"); } } else { try { $letterFile = $this->getLetterfileService()->getLetterFileStrategy($signature->getLetterfileKey()); $letterFile->deleteSignature($signature); } catch (\Exception $e) { $this->updateStatusSignature($signature); } catch (\Exception $exception) { $this->getLoggerService()->error("Error PARAFEUR : " . $exception->getMessage()); throw new SignatureException("Impossible de supprimer la demande du parafeur"); return; } $this->updateStatusSignature($signature); } } /** * @param int $id * @return string * @throws SignatureException */ public function getDocumentSignedSignatureById(int $id): string { return $this->getDocumentSignedSignature($this->getSignature($id)); } /** * Retourne le document. * Retourne le document (Flux de données). * * @param Signature $signature * @return string Loading Loading @@ -205,11 +288,16 @@ class SignatureService $signature->getLetterfileKey() )->addSignRequestFromSignature($signature); } catch (\Exception $e) { throw $e; throw new SignatureException("Un problème est survenu lors de l'envoi au parafeur"); } try { $signature->setDateSend(new \DateTime()) ->setStatus(Signature::STATUS_SIGNATURE_WAIT); $this->getObjectManager()->flush(); } catch (\Exception $exception) { $this->getLoggerService()->critical("Can't save Signature, DB error : " . $exception->getMessage()); throw new SignatureException("La demande a été envoyé mais un problème est survenu lors de l'enregistrement du statut"); } } else { throw new SignatureException("La demande '" . $signature->getId() . "' ne peut pas être envoyée"); } Loading @@ -236,5 +324,4 @@ class SignatureService $signatureRecipient->setPhone($recipientData['phone']); } } } No newline at end of file Loading
src/Command/SignatureUpdateAllCommand.php 0 → 100644 +28 −0 Changes for src/Command/SignatureUpdateAllCommand.php: 28 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace UnicaenSignature\Command; use Laminas\ServiceManager\ServiceManager; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use UnicaenSignature\Entity\Db\Signature; class SignatureUpdateAllCommand extends SignatureCommandAbstract { protected static $defaultName = 'signature:update-all'; protected function configure() { $this ->setDescription("Actualise l'état des signatures"); } protected function execute(InputInterface $input, OutputInterface $output): int { $io = $this->getIO($input, $output); $this->getSignatureService()->updateAll(); return self::SUCCESS; } } No newline at end of file
src/Controller/SignatureController.php +1 −1 Changes for src/Controller/SignatureController.php: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ class SignatureController extends AbstractActionController $form->setData($post); if ($form->isValid()) { try { $this->getSignatureService()->saveNewSignature($form->getData()); $this->getSignatureService()->saveNewSignature($form->getData(), true); } catch (Exception $e) { $this->flash()->addErrorMessage($e->getMessage()); } Loading
src/Entity/Repository/SignatureRepository.php +16 −1 Changes for src/Entity/Repository/SignatureRepository.php: 16 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -3,8 +3,23 @@ namespace UnicaenSignature\Entity\Repository; use Doctrine\ORM\EntityRepository; use UnicaenSignature\Entity\Db\Signature; class SignatureRepository extends EntityRepository { /** * Retourne la liste des signatures pouvant être mises à jour. * * @return Signature[] */ public function getSignaturesUpdatable() :array { $statusUpdatable = [ Signature::STATUS_SIGNATURE_WAIT ]; return $this->createQueryBuilder('s') ->where('s.status in(:statusUpdatable)') ->setParameter('statusUpdatable', $statusUpdatable) ->getQuery() ->getResult(); } } No newline at end of file
src/Service/SharedEventManagerAwareTrait.php 0 → 100644 +28 −0 Changes for src/Service/SharedEventManagerAwareTrait.php: 28 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace UnicaenSignature\Service; use Laminas\EventManager\SharedEventManager; trait SharedEventManagerAwareTrait { private SharedEventManager $sharedEventManager; /** * @return SharedEventManager */ public function getSharedEventManager(): SharedEventManager { return $this->sharedEventManager; } /** * @param SharedEventManager $sharedEventManager * @return void */ public function setSharedEventManager(SharedEventManager $sharedEventManager): void { $this->sharedEventManager = $sharedEventManager; } } No newline at end of file
src/Service/SignatureService.php +94 −7 Changes for src/Service/SignatureService.php: 94 added lines, 7 removed lines. Original line number Diff line number Diff line Loading @@ -3,6 +3,9 @@ namespace UnicaenSignature\Service; use DoctrineModule\Persistence\ProvidesObjectManager; use Laminas\EventManager\Event; use Laminas\EventManager\EventManager; use Laminas\EventManager\SharedEventManager; use UnicaenSignature\Entity\Data\LevelInfo; use UnicaenSignature\Entity\Db\Signature; use UnicaenSignature\Entity\Db\SignatureRecipient; Loading @@ -14,9 +17,11 @@ use UnicaenSignature\Utils\SignatureException; class SignatureService { use ProvidesObjectManager, use LetterfileServiceAwareTrait, LoggerServiceAwareTrait, ProvidesObjectManager, SharedEventManagerAwareTrait, SignatureConfigurationServiceAwareTrait; const ERR_SIGNATURETYPE_LIST = "Impossible de charger la liste des types de signature"; Loading @@ -30,16 +35,31 @@ class SignatureService return $this->getObjectManager()->getRepository(Signature::class); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///// LISTES /** * @return array * @return Signature[] * @throws \Exception */ public function getSignatures(): array { try { return $this->getSignatureRepository()->findAll(); } catch (\Exception $e) { $this->getLoggerService()->critical("Get signature ERROR : " . $e->getMessage()); throw new SignatureException("Impossible de charger les signatures"); } } /** * @return Signature[] * @throws \Exception */ public function getSignaturesUpdatable() :array { try { return $this->getSignatureRepository()->getSignaturesUpdatable(); } catch (\Exception $e) { $this->getLoggerService()->throwLoggedException($e); } Loading Loading @@ -102,12 +122,16 @@ class SignatureService //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// public function saveNewSignature(Signature $signature, bool $pushToLetterFile = false): void { $this->getLoggerService()->info("Enregistrement de la demande de signature"); try { $this->getObjectManager()->persist($signature); $this->getObjectManager()->flush($signature); if( $pushToLetterFile ){ $this->sendSignature($signature); } } catch (\Exception $e) { $msg = "Impossible d'enregistrer la demande de signature"; $this->getLoggerService()->critical("$msg : " . $e->getMessage()); Loading @@ -115,6 +139,24 @@ class SignatureService } } /** * Mise à jour des signatures. * * @return void */ public function updateAll() :void { $signatures = $this->getSignatureRepository()->getSignaturesUpdatable(); foreach ($signatures as $signature) { $this->updateStatusSignature($signature); } } /** * @param int $id * @return void * @throws SignatureException */ public function updateStatusSignatureById(int $id): void { $this->updateStatusSignature($this->getSignature($id)); Loading @@ -127,41 +169,82 @@ class SignatureService */ public function updateStatusSignature(Signature $signature): void { try { $letterFileStrategy = $this->getLetterfileService()->getLetterFileStrategy($signature->getLetterfileKey()); $status = $letterFileStrategy->getSignatureStatus($signature); if( $status != $signature->getStatus() ){ $signature->setStatus($status); $this->getObjectManager()->flush(); $this->triggerEventStatusUpdate($signature); } } catch (\Exception $e) { $this->getLoggerService()->error("Update signature error : " . $e->getMessage()); throw new SignatureException("Impossible de mettre à jour le statut de la signature"); } } /** * @param Signature $signature * @return void */ protected function triggerEventStatusUpdate(Signature $signature) :void { $em = new EventManager($this->getSharedEventManager()); $em->trigger('signature:status', null, ['id' => $signature->getId()]); } /** * @param int $id * @return void * @throws SignatureException */ public function deleteSignatureById(int $id): void { $this->deleteSignature($this->getSignature($id)); } /** * Suppression d'une demande signature. * * @param Signature $signature * @return void * @throws SignatureException */ public function deleteSignature(Signature $signature): void { if ($signature->getStatus() == Signature::STATUS_SIGNATURE_DRAFT) { try { $this->getObjectManager()->remove($signature); $this->getObjectManager()->flush(); } catch (\Exception $exception) { $this->getLoggerService()->error("Error DB : " . $exception->getMessage()); throw new SignatureException("Impossible de supprimer la demande de la base de donnée"); } } else { try { $letterFile = $this->getLetterfileService()->getLetterFileStrategy($signature->getLetterfileKey()); $letterFile->deleteSignature($signature); } catch (\Exception $e) { $this->updateStatusSignature($signature); } catch (\Exception $exception) { $this->getLoggerService()->error("Error PARAFEUR : " . $exception->getMessage()); throw new SignatureException("Impossible de supprimer la demande du parafeur"); return; } $this->updateStatusSignature($signature); } } /** * @param int $id * @return string * @throws SignatureException */ public function getDocumentSignedSignatureById(int $id): string { return $this->getDocumentSignedSignature($this->getSignature($id)); } /** * Retourne le document. * Retourne le document (Flux de données). * * @param Signature $signature * @return string Loading Loading @@ -205,11 +288,16 @@ class SignatureService $signature->getLetterfileKey() )->addSignRequestFromSignature($signature); } catch (\Exception $e) { throw $e; throw new SignatureException("Un problème est survenu lors de l'envoi au parafeur"); } try { $signature->setDateSend(new \DateTime()) ->setStatus(Signature::STATUS_SIGNATURE_WAIT); $this->getObjectManager()->flush(); } catch (\Exception $exception) { $this->getLoggerService()->critical("Can't save Signature, DB error : " . $exception->getMessage()); throw new SignatureException("La demande a été envoyé mais un problème est survenu lors de l'enregistrement du statut"); } } else { throw new SignatureException("La demande '" . $signature->getId() . "' ne peut pas être envoyée"); } Loading @@ -236,5 +324,4 @@ class SignatureService $signatureRecipient->setPhone($recipientData['phone']); } } } No newline at end of file