src/EventListener/BulkEmailListener.php line 39

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventListener;
  4. use App\Middleware\CustomerMiddleware;
  5. use App\Middleware\ReceivableMiddleware;
  6. use App\Middleware\SaleMiddleware;
  7. use App\Middleware\TransactionFailureMiddleware;
  8. use App\Middleware\BackgroundProcessingMiddleware;
  9. use Symfony\Component\HttpKernel\Event\TerminateEvent;
  10. use Symfony\Component\HttpKernel\KernelInterface;
  11. class BulkEmailListener
  12. {
  13.   private $receivableMiddleware;
  14.   private $saleMiddleware;
  15.   private $transactionFailureMiddleware;
  16.   private $customerMiddleware;
  17.   private $backgroundProcessingMiddleware;
  18.   public function __construct(
  19.     KernelInterface $kernelInterface,
  20.     SaleMiddleware $saleMiddleware,
  21.     ReceivableMiddleware $receivableMiddleware,
  22.     TransactionFailureMiddleware $transactionFailureMiddleware,
  23.     CustomerMiddleware $customerMiddleware,
  24.     BackgroundProcessingMiddleware $backgroundProcessingMiddleware
  25.   ) {
  26.     $this->kernelInterface $kernelInterface;
  27.     $this->receivableMiddleware $receivableMiddleware;
  28.     $this->saleMiddleware $saleMiddleware;
  29.     $this->transactionFailureMiddleware $transactionFailureMiddleware;
  30.     $this->customerMiddleware $customerMiddleware;
  31.     $this->backgroundProcessingMiddleware $backgroundProcessingMiddleware;
  32.   }
  33.   public function onKernelTerminate(TerminateEvent $event): void
  34.   {
  35.     if (!$event->isMasterRequest()) {
  36.       return;
  37.     }
  38.     $request $event->getRequest();
  39.     if ('api_email_bulk_sale_session' === $request->get('_route')) {
  40.       $parameter json_decode($request->getContent(), true);
  41.       
  42.       $bgInitiateParameter = array(
  43.         'companyId' => $parameter['companyId'],
  44.         'uniqueKey' => rand(),
  45.         'initiatedData' => json_encode($parameter['selectedId']),
  46.         'processData' => json_encode(array()),
  47.         'module' => 'sale_email',
  48.         'emailsSent' => '0',
  49.         'status' => '1',
  50.         'showAlert' => '0',
  51.         'createdDate' => new \DateTime(),
  52.         'updatedDate' => new \DateTime()
  53.       );
  54.       $this->backgroundProcessingMiddleware->save($bgInitiateParameter);
  55.       $parameter['uniqueKey'] = $bgInitiateParameter['uniqueKey'];
  56.       $parameter['initiatedData'] = $bgInitiateParameter['initiatedData'];
  57.       $this->saleMiddleware->bulkSaleEmailSend($parameter);
  58.       
  59.       return;
  60.     } else if ('api_email_receivable_statement' === $request->get('_route')) {
  61.       $parameter json_decode($request->getContent(), true);
  62.       $this->receivableMiddleware->sendEmailByCustomer($parameter);
  63.       return;
  64.     } else if ('api_payment_bulk_email_send' === $request->get('_route')) {
  65.       $parameter json_decode($request->getContent(), true);
  66.       $bgInitiateParameter = array(
  67.         'companyId' => $parameter['companyId'],
  68.         'uniqueKey' => rand(),
  69.         'initiatedData' => isset($parameter['selectedId']) ? json_encode($parameter['selectedId']) : json_encode(array()),
  70.         'processData' => json_encode(array()),
  71.         'module' => isset($parameter['module'])?$parameter['module']:'email',
  72.         'emailsSent' => '0',
  73.         'status' => '1',
  74.         'showAlert' => '0',
  75.         'createdDate' => new \DateTime(),
  76.         'updatedDate' => new \DateTime()
  77.       );
  78.       $this->backgroundProcessingMiddleware->save($bgInitiateParameter);
  79.       if ($parameter['module'] === constant("App\\Constant\\Globals::BULK_PAYMENT_DECLINED")) {
  80.         $this->transactionFailureMiddleware->bulkPaymentDeclineEmailSend($parameter);
  81.       } else if ($parameter['module'] === constant("App\\Constant\\Globals::BULK_EXPIRED_EXPIRING")) {
  82.         $this->customerMiddleware->bulkExpiredExpiringEmailSend($parameter);
  83.       } else if ($parameter['module'] === constant("App\\Constant\\Globals::BULK_UPDATE_CARD")) {
  84.         $this->customerMiddleware->bulkUpdateCardEmailSend($parameter);
  85.       }
  86.       $bgEndParameter = array(
  87.         'companyId' => $parameter['companyId'],
  88.         'uniqueKey' => $bgInitiateParameter['uniqueKey'],
  89.         'initiatedData' => json_encode(array()),
  90.         'processData' => $bgInitiateParameter['initiatedData'],
  91.         'emailsSent' => '1',
  92.         'status' => '0',
  93.         'updatedDate' => new \DateTime()
  94.       );
  95.       $this->backgroundProcessingMiddleware->updateMultiple($bgEndParameter);
  96.       return;
  97.     }
  98.   }
  99. }