src/AppBundle/Controller/PdfController.php line 22

Open in your IDE?
  1. <?php
  2. namespace AppBundle\Controller;
  3. use AppBundle\Repository\BookingRepository;
  4. use AppBundle\Utility\PdfExporter;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  7. use Symfony\Component\HttpFoundation\RedirectResponse;
  8. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. class PdfController extends AbstractController
  11. {
  12.     public function __construct(
  13.         private PdfExporter $pdfExporter,
  14.         private BookingRepository $bookingRepository
  15.     ) {
  16.     }
  17.     #[Route(path'/booking/pdf/{bookingId}/{type}.pdf'name'pdf.download')]
  18.     public function downloadAction($bookingId$type)
  19.     {
  20.         $booking $this->bookingRepository->find($bookingId);
  21.         if ($booking) {
  22.             // check if the user is able to access this booking
  23.             $this->denyAccessUnlessGranted('view'$booking);
  24.             $pdfGenerator $this->pdfExporter->init($booking);
  25.             // which pdf to download?
  26.             switch ($type) {
  27.                 case 1:
  28.                     $file $pdfGenerator
  29.                         ->printOverview()
  30.                         ->export(0);
  31.                     break;
  32.                 case 2:
  33.                     $file $pdfGenerator
  34.                         ->printFreightlist()
  35.                         ->export(0);
  36.                     break;
  37.                 case 3:
  38.                     $file $pdfGenerator
  39.                         ->printFreightSticker_A4()
  40.                         ->export(0);
  41.                     break;
  42.                 case 4// A6 Format
  43.                     $file $pdfGenerator
  44.                         ->printFreightSticker_A4()
  45.                         ->export(1);
  46.                     break;
  47.                 case 5:
  48.                     $file $pdfGenerator
  49.                         ->printFreightSticker_A5Portrait()
  50.                         ->export(0);
  51.                     break;
  52.                 case 6:
  53.                     $file $pdfGenerator
  54.                         ->printFreightSticker_A5Landscape()
  55.                         ->export(0);
  56.                     break;
  57.                 case 7:
  58.                     $file $pdfGenerator
  59.                         ->printFreighLetter()
  60.                         ->export(0);
  61.                     break;
  62.             }
  63.             $response = new BinaryFileResponse($file);
  64.             $response->setContentDisposition(
  65.                 ResponseHeaderBag::DISPOSITION_ATTACHMENT,
  66.                 basename($file)
  67.             );
  68.             return $response;
  69.         }
  70.         return new RedirectResponse($this->generateUrl('history'));
  71.     }
  72. }