Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
GetAdminStatsAction
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 __invoke
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4
5namespace App\Action\Admin;
6
7use App\Domain\Admin\Service\AdminService;
8use App\Renderer\JsonRenderer;
9use Psr\Http\Message\ResponseInterface;
10use Psr\Http\Message\ServerRequestInterface;
11
12/**
13 * Get platform statistics for admin dashboard.
14 *
15 * GET /api/admin/stats
16 */
17final class GetAdminStatsAction
18{
19    private AdminService $service;
20
21    private JsonRenderer $renderer;
22
23    public function __construct(
24        AdminService $service,
25        JsonRenderer $renderer,
26    ) {
27        $this->service = $service;
28        $this->renderer = $renderer;
29    }
30
31    public function __invoke(
32        ServerRequestInterface $request,
33        ResponseInterface $response,
34    ): ResponseInterface {
35        $stats = $this->service->getStats();
36
37        return $this->renderer->json($response, [
38            'success' => true,
39            'data' => $stats,
40        ]);
41    }
42}