<?php
namespace App\EventListener;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Address;
use Symfony\Contracts\EventDispatcher\Event;
class ShipmentListener
{
/** @var MailerInterface */
protected MailerInterface $mailer;
/**
* @param MailerInterface $mailer
*/
public function __construct(MailerInterface $mailer) {
$this->mailer = $mailer;
}
/**
* @param Event $event
* @return void
* @throws TransportExceptionInterface
*/
public function onPostShip(Event $event): void
{
$order = $event->getSubject()->getOrder();
$customer = $order->getCustomer();
$vendors = '';
foreach ($order->getShipments() as $shipment) {
$vendors .= $shipment->getMethod()->getVendor()->getName() . ', ';
}
$customerMail = (new TemplatedEmail())
->to(new Address($customer->getEmail()))
->subject('FNTV Services - Votre commande a été expédiée')
->htmlTemplate('bundles/SyliusShopBundle/Email/shipment_confirmation_customer.html.twig')
->context([
'order' => $order,
'customer' => $customer,
'vendors' => rtrim($vendors, ', ')
])
;
$this->mailer->send($customerMail);
}
}