ActionIndex   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 20
dl 0
loc 40
rs 10
c 0
b 0
f 0
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A index() 0 34 4
1
<?php
2
3
namespace Apps\Controller\Admin\User;
4
5
use Apps\ActiveRecord\User as UserRecord;
6
use Ffcms\Core\Arch\View;
7
use Ffcms\Core\Helper\Type\Any;
8
use Ffcms\Core\Helper\Type\Str;
9
use Ffcms\Core\Network\Request;
10
use Ffcms\Core\Network\Response;
11
12
/**
13
 * Class ActionIndex
14
 * @package Apps\Controller\Admin\User
15
 * @property Request $request
16
 * @property Response $response
17
 * @property View $view
18
 */
19
trait ActionIndex
20
{
21
    /**
22
     * List all users as table
23
     * @return string|null
24
     */
25
    public function index(): ?string
26
    {
27
        // init Active Record user object relation
28
        $record = new UserRecord();
29
30
        // check if search query passed
31
        $query = $this->request->query->get('search', null);
32
        if ($query && Any::isStr($query) && Str::length($query) > 1) {
33
            $record = $record->where('email', 'like', '%' . $query . '%');
34
        }
35
36
        // set current page num and offset
37
        $page = (int)$this->request->query->get('page', 0);
38
        $offset = $page * self::ITEM_PER_PAGE;
0 ignored issues
show
Bug introduced by
The constant Apps\Controller\Admin\Us...ionIndex::ITEM_PER_PAGE was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
39
40
        // prepare pagination data
41
        $pagination = [
42
            'url' => ['user/index'],
43
            'page' => $page,
44
            'step' => self::ITEM_PER_PAGE,
45
            'total' => $record->count()
46
        ];
47
48
        // build listing objects
49
        $records = $record->orderBy('id', 'desc')
50
            ->skip($offset)
51
            ->take(self::ITEM_PER_PAGE)
52
            ->get();
53
54
        // display viewer
55
        return $this->view->render('user/index', [
56
            'records' => $records,
57
            'pagination' => $pagination,
58
            'search' => $query
59
        ]);
60
    }
61
}
62