Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
5.26% covered (danger)
5.26%
1 / 19
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
Template
5.26% covered (danger)
5.26%
1 / 19
50.00% covered (danger)
50.00%
1 / 2
17.60
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 / 18
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2declare(strict_types=1);
3
4namespace App\Controller\Contracts;
5
6use App\Entity\Contract;
7use App\Controller\BaseController;
8use App\Form\ContractType;
9use App\Repository\ContractRepository;
10use App\Service\TaxService;
11use Doctrine\ORM\EntityManagerInterface;
12use Symfony\Component\HttpFoundation\Request;
13use Symfony\Component\HttpFoundation\Response;
14use Symfony\Component\Routing\Attribute\Route;
15use Symfony\Component\Security\Http\Attribute\IsGranted;
16
17#[IsGranted('ROLE_ADMIN')]
18#[Route(path: '/contracts/template', name: 'contracts_template', methods: ['GET', 'POST',])]
19class Template extends BaseController
20{
21    public function __construct(
22        private readonly ContractRepository $contractRepository,
23        private readonly TaxService $taxService
24    ) {}
25
26    public function __invoke(
27        Request $request,
28        EntityManagerInterface $entityManager,
29    ): Response
30    {
31        $data = $this->contractRepository->findTemplate();
32        $form = $this->createForm(ContractType::class, $data);
33        $form->handleRequest($request);
34        if ($form->isSubmitted() && $form->isValid()) {
35            /** @var Contract $data */
36            $data = $form->getData();
37            $entityManager->persist($data);
38            $entityManager->flush();
39
40            $this->addFlash('success', 'Template has been saved');
41
42            return $this->redirectToRoute('contracts_index');
43        }
44
45        return $this->render(
46            'contracts/form.html.twig',
47            [
48                'form' => $form,
49                'data' => $data,
50                'ivaMultiplier' => $this->taxService->getTaxValue(),
51                'title' => 'Plantilla',
52            ]
53        );
54    }
55}