Code Coverage
 
Lines
Branches
Paths
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
ContactController
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
2 / 2
2
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
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 __invoke
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace App\Controller;
4
5use App\Application\UseCase\CreateContactInterface;
6use App\Dto\Command\CreateContactCommand;
7use App\Dto\Request\ContactRequest;
8use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
9use Symfony\Component\HttpFoundation\JsonResponse;
10use Symfony\Component\HttpFoundation\Response;
11use Symfony\Component\HttpKernel\Attribute\MapRequestPayload;
12use Symfony\Component\Routing\Attribute\Route;
13
14/**
15 * @author Wilhelm Zwertvaegher
16 */
17#[Route('/api/contact')]
18class ContactController extends AbstractController
19{
20    public function __construct(private readonly CreateContactInterface $contact)
21    {
22    }
23
24    #[Route('', name: 'api_contact', methods: ['POST'])]
25    public function __invoke(#[MapRequestPayload] ContactRequest $request): JsonResponse
26    {
27        $contactCommand = new CreateContactCommand(
28            $request->getSenderEmail(),
29            $request->getContent()
30        );
31        ($this->contact)($contactCommand);
32
33        return new JsonResponse(null, Response::HTTP_CREATED);
34    }
35}