Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
17 / 17
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
Edit
100.00% covered (success)
100.00%
17 / 17
100.00% covered (success)
100.00%
2 / 2
4
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 __invoke
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2declare(strict_types=1);
3
4namespace App\Controller\Contracts;
5
6use App\Controller\BaseController;
7use App\Entity\Contract;
8use App\Form\ContractType;
9use App\Service\TaxService;
10use Doctrine\ORM\EntityManagerInterface;
11use Symfony\Component\HttpFoundation\Request;
12use Symfony\Component\HttpFoundation\Response;
13use Symfony\Component\Routing\Attribute\Route;
14use Symfony\Component\Security\Http\Attribute\IsGranted;
15
16#[IsGranted('ROLE_ADMIN')]
17#[Route(path: '/contracts/edit/{id}', name: 'contracts_edit', requirements: ['id' => '\d+'], methods: ['GET', 'POST'])]
18class Edit extends BaseController
19{
20    public function __construct(private readonly TaxService $taxService) {}
21
22    public function __invoke(
23        Contract $contract,
24        Request $request,
25        EntityManagerInterface $entityManager,
26    ): Response
27    {
28        $form = $this->createForm(ContractType::class, $contract);
29        $form->handleRequest($request);
30        if ($form->isSubmitted() && $form->isValid()) {
31            $entityManager->persist($contract);
32            $entityManager->flush();
33
34            $this->addFlash('success', 'Contrato has been saved');
35
36            return $this->redirectToRoute('contracts_index');
37        }
38
39        return $this->render(
40            'contracts/form.html.twig',
41            [
42                'form' => $form,
43                'data' => $contract,
44                'ivaMultiplier' => $this->taxService->getTaxValue(),
45                'title' => 'Editar Contrato',
46            ]
47        );
48    }
49}