src/Listener/StoreManagementRequestWorflowListener.php line 34

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: bertrand
  5.  * Date: 29/03/2019
  6.  * Time: 13:53
  7.  */
  8. namespace App\Listener;
  9. use App\Repository\CreditPackGenericRepository;
  10. use App\Service\NotifyFreelancerService;
  11. use App\Service\StoreService;
  12. use Psr\Log\LoggerInterface;
  13. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  14. use Symfony\Component\Workflow\Event\Event;
  15. class StoreManagementRequestWorflowListener implements EventSubscriberInterface
  16. {
  17.     private $logger;
  18.     private $storeService;
  19.     private $notifyFreelancerService;
  20.     private $packRepository;
  21.     public function __construct(LoggerInterface $loggerStoreService $storeServiceNotifyFreelancerService $notifyFreelancerServiceCreditPackGenericRepository $packRepo)
  22.     {
  23.         $this->logger $logger;
  24.         $this->storeService $storeService;
  25.         $this->notifyFreelancerService $notifyFreelancerService;
  26.         $this->packRepository $packRepo;
  27.     }
  28.     public function onValidate(Event $event)
  29.     {
  30.         $packs $this->packRepository->findActivePacksByNbPrice();
  31.         $request $event->getSubject();
  32.         $this->logger->info(sprintf(
  33.             'Blog post (id: "%s") performed transaction "%s" from "%s" to "%s"',
  34.             $event->getSubject()->getId(),
  35.             $event->getTransition()->getName(),
  36.             implode(', 'array_keys($event->getMarking()->getPlaces())),
  37.             implode(', '$event->getTransition()->getTos())
  38.         ));
  39.         $request->setValidated(new \DateTime());
  40.         $this->storeService->associateStoreAndUser($request->getStore(), $request->getUser());
  41.         // notifier l'utilisateur de la validation
  42.         try{
  43.             $this->notifyFreelancerService->notifyFreelancerOnStoreManagementRequestValidate($request$packs);
  44.         }catch(\Exception $e){
  45.             $this->logger->info('Une erreur est survenue lors de l\'envoi d\'email: ' $e->getCode() . ' : ' $e->getMessage());
  46.         }
  47.     }
  48.     public static function getSubscribedEvents()
  49.     {
  50.         return [
  51.             'workflow.storeManagementRequest.completed.validate' => 'onValidate',
  52.         ];
  53.     }
  54. }