src/EventSubscriber/Quote/QuoteRequestResourceSubscriber.php line 76

  1. <?php
  2. namespace App\EventSubscriber\Quote;
  3. use Symfony\Component\HttpFoundation\RequestStack;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\EventDispatcher\GenericEvent;
  6. use Webmozart\Assert\Assert;
  7. use App\Entity\Messaging\AdminMessage;
  8. use App\Entity\Messaging\Message;
  9. use App\Entity\Messaging\Thread;
  10. use App\Entity\Quote\QuoteRequest;
  11. use App\Entity\Quote\QuoteRequestWorkflowTransition;
  12. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  13. use App\Entity\Quote\RequestForQuote;
  14. use App\Entity\Quote\RequestForQuoteWorkflowTransition;
  15. use Symfony\Component\Workflow\Registry;
  16. class QuoteRequestResourceSubscriber  implements EventSubscriberInterface
  17. {
  18.     private $request;
  19.     private $workflows;
  20.     private $tokenStorage;
  21.     public function __construct(RequestStack $requestRegistry $workflowsTokenStorageInterface $tokenStorage)
  22.     {
  23.         $this->request $request->getCurrentRequest();
  24.         $this->workflows $workflows;
  25.         $this->tokenStorage $tokenStorage;
  26.     }
  27.     // public function onSyliusEntityPreRequestMoreInformation(GenericEvent $event)
  28.     // {   
  29.     //     $entity = $event->getSubject();  
  30.     //     Assert::isInstanceOf($entity, RequestForQuote::class); 
  31.     //     $workflow = $this->workflows->get($entity, 'request_for_quote');  
  32.     //     $subject = $this->request->request->get('request_for_quote_request_more_information_transition')['message']['subject'];
  33.     //     $content = $this->request->request->get('request_for_quote_request_more_information_transition')['message']['content'];
  34.     //     $admin = $this->tokenStorage->getToken()->getUser();
  35.     //     if($workflow->can($entity, 'request_more_information')) {
  36.     //         $workflow->apply($entity, 'request_more_information');
  37.     //         $adminMessage = new AdminMessage();
  38.     //         $adminMessage->setSubject($subject);
  39.     //         $adminMessage->setContent($content); 
  40.     //         $adminMessage->setAdmin($admin);
  41.     //         $adminMessage->setRecipient($entity->getCustomer()->getEmail());
  42.     //         $message = new Message();
  43.     //         $message->setType('admin'); 
  44.     //         $message->setAdminMessage($adminMessage);
  45.     //         $thread = new Thread(); 
  46.     //         $thread->addAdminMessage($adminMessage);
  47.     //         $thread->addMessage($message);
  48.     //         $thread->setType('quote');
  49.     //         $thread->setTitle($subject);
  50.     //         $transition = new RequestForQuoteWorkflowTransition();
  51.     //         $transition->setType('request_more_information'); 
  52.     //         $transition->setQuote($entity);
  53.     //         $entity->setThread($thread);
  54.     //         $entity->addTransition($transition);
  55.     //     }
  56.     // } 
  57.     public function onPreProcessTransition(GenericEvent $event)
  58.     {
  59.         $entity $event->getSubject();
  60.         Assert::isInstanceOf($entityQuoteRequest::class);
  61.         $workflow $this->workflows->get($entity'quote_request');
  62.         $data $this->request->request->all()['quote_request_process_transition']; 
  63.      
  64.         $content $data['message']['content'];
  65.        
  66.      
  67.         if ($workflow->can($entity'process')) {
  68.             $workflow->apply($entity'process');
  69.             $adminMessage = new AdminMessage();
  70.             $adminMessage->setUser($this->tokenStorage->getToken()->getUser());
  71.             if ($customer $entity->getCustomer()) {
  72.                 $adminMessage->setCustomer($customer);
  73.             } 
  74.             $message = new Message();
  75.             $message->setType('admin');
  76.             $message->setAdminMessage($adminMessage);
  77.             $thread = new Thread();
  78.             $thread->setTitle('Process'); 
  79.             $thread->addMessage($message);
  80.                
  81.             $transition = new QuoteRequestWorkflowTransition();
  82.             $transition->setType('process');
  83.             $transition->setQuote($entity);
  84.             $transition->setThread($thread); 
  85.             $entity->addTransition($transition);
  86.         }
  87.     }
  88.     public static function getSubscribedEvents()
  89.     {
  90.         return [
  91.             'app.quote_request.pre_process_transition' => 'onPreProcessTransition',
  92.         ];
  93.     }
  94. }