Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
5.56% covered (danger)
5.56%
1 / 18
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
UsersRucList
5.56% covered (danger)
5.56%
1 / 18
50.00% covered (danger)
50.00%
1 / 2
5.37
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 / 17
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\Repository\UserRepository;
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/users-ruc-list', name: 'download_users_ruc_list', methods: ['GET'])]
17class UsersRucList extends BaseController
18{
19    public function __construct(
20        private readonly UserRepository $userRepository,
21        private readonly PdfHelper $pdfHelper,
22        private readonly ClockInterface $clock,
23    ) {}
24
25    public function __invoke(): PdfResponse
26    {
27        $html = $this->renderView(
28            '_pdf/ruclist.html.twig',
29            [
30                'users' => $this->userRepository->getSortedByStore(),
31            ]
32        );
33        return new PdfResponse(
34            $this->pdfHelper->getOutputFromHtml(
35                $html,
36                [
37                    'header-html' => $this->pdfHelper->getHeaderHtml(),
38                    'footer-html' => $this->pdfHelper->getFooterHtml(),
39                    'enable-local-file-access' => true,
40                ]
41            ),
42            sprintf('user-list-%s.pdf', $this->clock->now()->format('Y-m-d'))
43        );
44    }
45}