Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
Edit
100.00% covered (success)
100.00%
16 / 16
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%
15 / 15
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3declare(strict_types=1);
4
5namespace App\Controller\Stores;
6
7use App\Controller\BaseController;
8use App\Entity\Store;
9use App\Form\StoreType;
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: '/stores/edit/{id}', name: 'stores_edit', methods: ['GET', 'POST'])]
19class Edit extends BaseController
20{
21    public function __construct(private readonly TaxService $taxService) {}
22
23    public function __invoke(
24        Store $store,
25        Request $request,
26        EntityManagerInterface $entityManager,
27    ): Response
28    {
29        $form = $this->createForm(StoreType::class, $store);
30        $form->handleRequest($request);
31        if ($form->isSubmitted() && $form->isValid()) {
32            $entityManager->persist($store);
33            $entityManager->flush();
34
35            $this->addFlash('success', 'El local ha sido guardado.');
36
37            return $this->redirectToRoute('stores_index');
38        }
39
40        return $this->render(
41            'stores/form.html.twig',
42            [
43                'form' => $form,
44                'store' => $store,
45                'ivaMultiplier' => $this->taxService->getTaxValue(),
46            ]
47        );
48    }
49}