src/Controller/InvoiceDownloaderController.php line 33

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Charge;
  4. use App\Entity\Template;
  5. use App\Repository\ChargeRepository;
  6. use App\Service\InvoiceTemplateService;
  7. use App\Service\TemplatesService;
  8. use Doctrine\Persistence\ManagerRegistry;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\RequestStack;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. class InvoiceDownloaderController extends AbstractController
  14. {
  15.     #[Route('/invoice/pdf/{code}'name'invoice_client_downloader.export.pdf'methods: ['GET'])]
  16.     public function exportToPdfAction(ManagerRegistry $doctrineInvoiceTemplateService $is,TemplatesService $ts$code): Response
  17.     {
  18.         $em $doctrine->getManager();
  19.         $charge $em->getRepository(Charge::class)->findOneBy(['code' => $code]);
  20.         // save id, after page reload template will be preselected in dropdown
  21.         $templates $em->getRepository(Template::class)->loadByTypeName('TEMPLATE_INVOICE_PDF'$charge->getMarchand());
  22.         $defaultTemplate $ts->getDefaultTemplate($templates);
  23.         $templateId $defaultTemplate->getId();
  24.         $type $charge->getPayment()->isPartialPayment() ? 2;
  25.         $templateOutput $ts->renderTemplate($templateId$charge->getId(), $is$type);
  26.         $template $em->getRepository(Template::class)->find($templateId);
  27.         $pdfOutput $ts->getPDFOutput($templateOutput$charge->getCode().'-'.$charge->getYear(), $template);
  28.         $response = new Response($pdfOutput);
  29.         $response->headers->set('Content-Type''application/pdf');
  30.         return $response;
  31.     }
  32. }