src/EventListener/OrderPaidListener.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Services\GeneralSendMailService;
  4. use Exception;
  5. use Pimcore\Event\Model\DataObjectEvent;
  6. use Pimcore\Log\Simple;
  7. use Pimcore\Model\DataObject\Order;
  8. class OrderPaidListener
  9. {
  10.     protected GeneralSendMailService $generalSendMailService;
  11.     public function __construct(GeneralSendMailService $generalSendMailService)
  12.     {
  13.         $this->generalSendMailService $generalSendMailService;
  14.     }
  15.     /**
  16.      * @throws Exception
  17.      */
  18.     public function createObject(DataObjectEvent $e): void
  19.     {
  20.         $this->handleEvent($e);
  21.     }
  22.     /**
  23.      * @throws Exception
  24.      */
  25.     public function updateObject(DataObjectEvent $e): void
  26.     {
  27.         $this->handleEvent($e);
  28.     }
  29.     /**
  30.      * @param DataObjectEvent $e
  31.      * @return void
  32.      * @throws Exception
  33.      */
  34.     private function handleEvent(DataObjectEvent $e): void
  35.     {
  36.         $obj $e->getObject();
  37.         if ($obj instanceof Order) {
  38.             $order $obj;
  39.             if ($order->getMailSend() !== 'send' && $order->getPaymentStatus() === 'paid') {
  40.                 $emailTemplate 'email_order_confirm';
  41.                 $emailTemplateAdmin 'email_order_confirm_admin';
  42.                 try {
  43.                     $this->generalSendMailService->_sendOrderMail($order->getUser(), $order$emailTemplate$emailTemplateAdmin);
  44.                     Simple::log('payment-redirect''Mailstatus OK');
  45.                     Simple::log('payment-redirect-event-listener'sprintf('Mail sent for order ID: %s'$order->getId()));
  46.                     $order->setMailSend('send');
  47.                     $order->save();
  48.                 } catch (Exception $ex) {
  49.                     Simple::log('payment-redirect-event-listener'sprintf('Failed to send mail for order ID: %s, Error: %s'$order->getId(), $ex->getMessage()));
  50.                 }
  51.             }
  52.         }
  53.     }
  54. }