attach tickets to email
This commit is contained in:
parent
7dd8e5d331
commit
ae7b6e6a05
@ -17,8 +17,6 @@ class TestController extends AbstractController
|
|||||||
#[Route('/test')]
|
#[Route('/test')]
|
||||||
public function index(Filesystem $filesystem): Response
|
public function index(Filesystem $filesystem): Response
|
||||||
{
|
{
|
||||||
$dompdfWrapper = new DompdfWrapper(new DompdfFactory());
|
|
||||||
$content = $dompdfWrapper->getPdf($this->renderView('test.html.twig', ['qr' => (new QRCode())->render('https://www.google.com')]));
|
|
||||||
$filesystem->dumpFile('test.pdf', $content);
|
$filesystem->dumpFile('test.pdf', $content);
|
||||||
|
|
||||||
return $this->render('test.html.twig', ['qr' => (new QRCode())->render('https://www.google.com')]);
|
return $this->render('test.html.twig', ['qr' => (new QRCode())->render('https://www.google.com')]);
|
||||||
|
@ -3,16 +3,19 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace App\Service;
|
namespace App\Service;
|
||||||
|
|
||||||
use App\Controller\Admin\CustomerCrudController;
|
use App\Controller\Admin\TicketCrudController;
|
||||||
use App\Entity\Payment;
|
use App\Entity\Payment;
|
||||||
|
use App\Entity\Ticket;
|
||||||
use chillerlan\QRCode\QRCode;
|
use chillerlan\QRCode\QRCode;
|
||||||
|
use Nucleos\DompdfBundle\Factory\DompdfFactory;
|
||||||
|
use Nucleos\DompdfBundle\Wrapper\DompdfWrapper;
|
||||||
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
|
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
|
||||||
use Symfony\Component\DependencyInjection\Attribute\Autowire;
|
use Symfony\Component\DependencyInjection\Attribute\Autowire;
|
||||||
use Symfony\Component\Mailer\MailerInterface;
|
use Symfony\Component\Mailer\MailerInterface;
|
||||||
use Symfony\Component\Mime\Address;
|
use Symfony\Component\Mime\Address;
|
||||||
use Symfony\Component\Mime\Part\DataPart;
|
use Symfony\Component\Mime\Part\DataPart;
|
||||||
use Symfony\Component\Mime\Part\File;
|
|
||||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||||
|
use Twig\Environment;
|
||||||
|
|
||||||
class TicketEmailService
|
class TicketEmailService
|
||||||
{
|
{
|
||||||
@ -21,6 +24,7 @@ class TicketEmailService
|
|||||||
#[Autowire(env: 'SENDER_MAIL')]
|
#[Autowire(env: 'SENDER_MAIL')]
|
||||||
private readonly string $senderMail,
|
private readonly string $senderMail,
|
||||||
private readonly UrlGeneratorInterface $urlGenerator,
|
private readonly UrlGeneratorInterface $urlGenerator,
|
||||||
|
private readonly Environment $twig,
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,18 +37,28 @@ class TicketEmailService
|
|||||||
->to(new Address($payment->getCustomer()?->getEmail(), $payment->getCustomer()?->getFirstname() . ' ' . $payment->getCustomer()?->getLastname()))
|
->to(new Address($payment->getCustomer()?->getEmail(), $payment->getCustomer()?->getFirstname() . ' ' . $payment->getCustomer()?->getLastname()))
|
||||||
->context([
|
->context([
|
||||||
'payment' => $payment,
|
'payment' => $payment,
|
||||||
'qr' => (new QRCode())->render($this->generateUrl($payment))
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$i = 0;
|
||||||
|
foreach ($payment->getCustomer()?->getTickets() as $ticket) {
|
||||||
|
++$i;
|
||||||
|
$mail->addPart(new DataPart($this->generateTicket($ticket), "ticket-$i.pdf", 'application/pdf'));
|
||||||
|
}
|
||||||
|
|
||||||
$this->mailer->send($mail);
|
$this->mailer->send($mail);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function generateUrl(Payment $payment): string
|
private function generateTicket(Ticket $ticket): string
|
||||||
|
{
|
||||||
|
return (new DompdfWrapper(new DompdfFactory()))->getPdf($this->twig->render('test.html.twig', ['qr' => (new QRCode())->render($this->generateUrl($ticket))]));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function generateUrl(Ticket $ticket): string
|
||||||
{
|
{
|
||||||
return $this->urlGenerator->generate('admin', [
|
return $this->urlGenerator->generate('admin', [
|
||||||
'crudAction' => 'detail',
|
'crudAction' => 'detail',
|
||||||
'crudControllerFqcn' => CustomerCrudController::class,
|
'crudControllerFqcn' => TicketCrudController::class,
|
||||||
'entityId' => $payment->getCustomer()?->getId()
|
'entityId' => $ticket->getCustomer()?->getId()
|
||||||
], UrlGeneratorInterface::ABSOLUTE_URL);
|
], UrlGeneratorInterface::ABSOLUTE_URL);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user