Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
16.67% covered (danger)
16.67%
1 / 6
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
Planillas
16.67% covered (danger)
16.67%
1 / 6
50.00% covered (danger)
50.00%
1 / 2
4.31
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 __invoke
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace App\Controller\Download;
6
7use App\Controller\BaseController;
8use App\Service\PayrollHelper;
9use App\Service\PdfHelper;
10use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
11use Symfony\Component\Clock\ClockInterface;
12use Symfony\Component\Routing\Attribute\Route;
13use Symfony\Component\Security\Http\Attribute\IsGranted;
14
15#[IsGranted('ROLE_ADMIN')]
16#[Route(path: '/download/planillas', name: 'download_planillas', methods: ['GET'])]
17class Planillas extends BaseController
18{
19    public function __construct(
20        private readonly PdfHelper $pdfHelper,
21        private readonly PayrollHelper $payrollHelper,
22        private readonly ClockInterface $clock,
23    ) {}
24
25    public function __invoke(): PdfResponse
26    {
27        $now = $this->clock->now();
28        $year = (int) $now->format('Y');
29        $month = (int) $now->format('m');
30        $filename = sprintf('payrolls-%d-%d.pdf', $year, $month);
31
32        return new PdfResponse($this->pdfHelper->renderPayrollPdf($year, $month, $this->payrollHelper), $filename);
33    }
34}