ApiUserController::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\User\Controller;
6
7
use App\User\User;
8
use App\User\UserRepository;
9
use Psr\Http\Message\ResponseInterface;
10
use Psr\Http\Message\ServerRequestInterface;
11
use Yiisoft\Data\Reader\Sort;
12
use Yiisoft\DataResponse\DataResponseFactoryInterface;
13
14
class ApiUserController
15
{
16
    private DataResponseFactoryInterface $responseFactory;
17
18
    public function __construct(DataResponseFactoryInterface $responseFactory)
19
    {
20
        $this->responseFactory = $responseFactory;
21
    }
22
23
    public function index(UserRepository $userRepository): ResponseInterface
24
    {
25
        $dataReader = $userRepository->findAll()->withSort(Sort::only(['login'])->withOrderString('login'));
26
        $users = $dataReader->read();
27
28
        $items = [];
29
        foreach ($users as $user) {
30
            $items[] = ['login' => $user->getLogin(), 'created_at' => $user->getCreatedAt()->format('H:i:s d.m.Y')];
31
        }
32
33
        return $this->responseFactory->createResponse($items);
34
    }
35
36
    public function profile(ServerRequestInterface $request, UserRepository $userRepository): ResponseInterface
37
    {
38
        $login = $request->getAttribute('login', null);
39
40
        /** @var User $user */
41
        $user = $userRepository->findByLogin($login);
42
        if ($user === null) {
43
            return $this->responseFactory->createResponse('Page not found', 404);
44
        }
45
46
        return $this->responseFactory->createResponse(
47
            ['login' => $user->getLogin(), 'created_at' => $user->getCreatedAt()->format('H:i:s d.m.Y')]
48
        );
49
    }
50
}
51