36 lines
1.3 KiB
PHP
36 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Controller\Teamer\Disposition;
|
|
|
|
use App\Entity\Disposition;
|
|
use App\Service\Pdf\ContractRenderer;
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
use Symfony\Component\HttpFoundation\HeaderUtils;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
use Symfony\Component\Routing\Annotation\Route;
|
|
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
|
|
|
class ContractPdfController extends AbstractController
|
|
{
|
|
public function __construct(private readonly ContractRenderer $renderer)
|
|
{}
|
|
|
|
#[Route('/teamer/disposition/contract/{uuid}', name: 'app_teamer_disposition_contractpdf')]
|
|
#[IsGranted('CONTRACT', subject: 'disposition')]
|
|
public function index(Disposition $disposition): Response
|
|
{
|
|
$pdf = $this->renderer->render($disposition);
|
|
|
|
$teamer = $disposition->getTeamer();
|
|
|
|
$filename = sprintf('Honorarvertrag_%s_%s.pdf', $teamer, $disposition->getAssignment()->getDestination());
|
|
$disposition = HeaderUtils::makeDisposition(HeaderUtils::DISPOSITION_ATTACHMENT, $filename, md5($filename));
|
|
|
|
$response = new Response($pdf->Output('S'));
|
|
$response->setPrivate();
|
|
$response->headers->set('Content-type', 'application/pdf');
|
|
$response->headers->set('Content-Disposition', $disposition);
|
|
|
|
return $response;
|
|
}
|
|
} |