diff --git a/src/Controller/TestController.php b/src/Controller/TestController.php index c2f0af4..c3c15a8 100644 --- a/src/Controller/TestController.php +++ b/src/Controller/TestController.php @@ -17,8 +17,6 @@ class TestController extends AbstractController #[Route('/test')] 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); return $this->render('test.html.twig', ['qr' => (new QRCode())->render('https://www.google.com')]); diff --git a/src/Service/TicketEmailService.php b/src/Service/TicketEmailService.php index 0a64f0b..b9db500 100644 --- a/src/Service/TicketEmailService.php +++ b/src/Service/TicketEmailService.php @@ -3,16 +3,19 @@ declare(strict_types=1); namespace App\Service; -use App\Controller\Admin\CustomerCrudController; +use App\Controller\Admin\TicketCrudController; use App\Entity\Payment; +use App\Entity\Ticket; use chillerlan\QRCode\QRCode; +use Nucleos\DompdfBundle\Factory\DompdfFactory; +use Nucleos\DompdfBundle\Wrapper\DompdfWrapper; use Symfony\Bridge\Twig\Mime\TemplatedEmail; use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Part\DataPart; -use Symfony\Component\Mime\Part\File; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; +use Twig\Environment; class TicketEmailService { @@ -21,6 +24,7 @@ class TicketEmailService #[Autowire(env: 'SENDER_MAIL')] private readonly string $senderMail, 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())) ->context([ '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); } - 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', [ 'crudAction' => 'detail', - 'crudControllerFqcn' => CustomerCrudController::class, - 'entityId' => $payment->getCustomer()?->getId() + 'crudControllerFqcn' => TicketCrudController::class, + 'entityId' => $ticket->getCustomer()?->getId() ], UrlGeneratorInterface::ABSOLUTE_URL); } } \ No newline at end of file