GetPostController   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 15
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 9
c 1
b 0
f 0
dl 0
loc 15
rs 10
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 13 2
1
<?php
2
3
declare(strict_types = 1);
4
5
namespace App\Http\Controllers\Posts;
6
7
use App\Http\Controllers\Controller;
8
use Illuminate\Http\JsonResponse;
9
use TrophyForum\Posts\Application\Find\FindPostQuery;
10
use TrophyForum\Posts\Application\Find\FindPostQueryHandler;
11
use TrophyForum\Posts\Application\IncreaseVisualizations\IncreaseVisualizationsCommand;
12
use TrophyForum\Posts\Application\IncreaseVisualizations\IncreaseVisualizationsCommandHandler;
13
use TrophyForum\Posts\Domain\PostNotExist;
14
15
final class GetPostController extends Controller
16
{
17
    public function __invoke(string $postId): JsonResponse
18
    {
19
        $this->bus->addHandler(FindPostQuery::class, FindPostQueryHandler::class);
20
        $this->bus->addHandler(IncreaseVisualizationsCommand::class, IncreaseVisualizationsCommandHandler::class);
21
22
        try {
23
            $this->bus->dispatch(new IncreaseVisualizationsCommand($postId));
24
25
            return JsonResponse::create(
26
                $this->bus->dispatch(new FindPostQuery($postId))
27
            );
28
        } catch (PostNotExist $e) {
29
            return JsonResponse::create(['message' => $e->getMessage()], 404);
30
        }
31
    }
32
}
33