src/EventListener/ShipmentListener.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  4. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  5. use Symfony\Component\Mailer\MailerInterface;
  6. use Symfony\Component\Mime\Address;
  7. use Symfony\Contracts\EventDispatcher\Event;
  8. class ShipmentListener
  9. {
  10.     /** @var MailerInterface */
  11.     protected MailerInterface $mailer;
  12.     /**
  13.      * @param MailerInterface $mailer
  14.      */
  15.     public function __construct(MailerInterface $mailer) {
  16.         $this->mailer $mailer;
  17.     }
  18.     /**
  19.      * @param Event $event
  20.      * @return void
  21.      * @throws TransportExceptionInterface
  22.      */
  23.     public function onPostShip(Event $event): void
  24.     {
  25.         $order $event->getSubject()->getOrder();
  26.         $customer $order->getCustomer();
  27.         $vendors '';
  28.         foreach ($order->getShipments() as $shipment) {
  29.             $vendors .= $shipment->getMethod()->getVendor()->getName() . ', ';
  30.         }
  31.         $customerMail = (new TemplatedEmail())
  32.             ->to(new Address($customer->getEmail()))
  33.             ->subject('FNTV Services - Votre commande a été expédiée')
  34.             ->htmlTemplate('bundles/SyliusShopBundle/Email/shipment_confirmation_customer.html.twig')
  35.             ->context([
  36.                 'order' => $order,
  37.                 'customer' => $customer,
  38.                 'vendors' => rtrim($vendors', ')
  39.             ])
  40.         ;
  41.         $this->mailer->send($customerMail);
  42.     }
  43. }