UserController::index()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 6
nc 1
nop 2
dl 0
loc 10
ccs 7
cts 7
cp 1
crap 1
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\UserRepository;
8
use Psr\Http\Message\ResponseFactoryInterface;
9
use Psr\Http\Message\ResponseInterface as Response;
10
use Psr\Http\Message\ServerRequestInterface as Request;
11
use Yiisoft\Data\Paginator\OffsetPaginator;
12
use Yiisoft\Data\Reader\Sort;
13
use Yiisoft\Yii\View\ViewRenderer;
14
15
class UserController
16
{
17
    private const PAGINATION_INDEX = 5;
18
19
    private ViewRenderer $viewRenderer;
20
21 1
    public function __construct(ViewRenderer $viewRenderer)
22
    {
23 1
        $this->viewRenderer = $viewRenderer->withControllerName('user');
24 1
    }
25
26 1
    public function index(Request $request, UserRepository $userRepository): Response
27
    {
28 1
        $pageNum = (int)$request->getAttribute('page', 1);
29
30 1
        $dataReader = $userRepository->findAll()->withSort(Sort::only(['login'])->withOrderString('login'));
31 1
        $paginator = (new OffsetPaginator($dataReader))
32 1
            ->withPageSize(self::PAGINATION_INDEX)
33 1
            ->withCurrentPage($pageNum);
34
35 1
        return $this->viewRenderer->render('index', ['paginator' => $paginator]);
36
    }
37
38
    public function profile(Request $request, UserRepository $userRepository, ResponseFactoryInterface $responseFactory): Response
39
    {
40
        $login = $request->getAttribute('login', null);
41
        $item = $userRepository->findByLogin($login);
42
        if ($item === null) {
43
            return $responseFactory->createResponse(404);
44
        }
45
46
        return $this->viewRenderer->render('profile', ['item' => $item]);
47
    }
48
}
49