AssignmentSearch   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 4
dl 0
loc 60
c 0
b 0
f 0
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A rules() 0 6 1
A search() 0 22 2
1
<?php
2
3
namespace yii2mod\rbac\models\search;
4
5
use yii\base\Model;
6
use yii\data\ActiveDataProvider;
7
8
/**
9
 * Class AssignmentSearch
10
 *
11
 * @package yii2mod\rbac\models\search
12
 */
13
class AssignmentSearch extends Model
14
{
15
    /**
16
     * @var string user id
17
     */
18
    public $id;
19
20
    /**
21
     * @var string username
22
     */
23
    public $username;
24
25
    /**
26
     * @var int the default page size
27
     */
28
    public $pageSize = 25;
29
30
    /**
31
     * @inheritdoc
32
     */
33
    public function rules(): array
34
    {
35
        return [
36
            [['id', 'username'], 'safe'],
37
        ];
38
    }
39
40
    /**
41
     * Creates data provider instance with search query applied
42
     *
43
     * @param array $params
44
     * @param \yii\db\ActiveRecord $class
45
     * @param $idField
46
     * @param string $usernameField
47
     *
48
     * @return ActiveDataProvider
49
     */
50
    public function search(array $params, $class, string $idField, string $usernameField): ActiveDataProvider
51
    {
52
        $query = $class::find();
53
54
        $dataProvider = new ActiveDataProvider([
55
            'query' => $query,
56
            'pagination' => [
57
                'pageSize' => $this->pageSize,
58
            ],
59
        ]);
60
61
        $this->load($params);
62
63
        if (!$this->validate()) {
64
            return $dataProvider;
65
        }
66
67
        $query->andFilterWhere([$idField => $this->id]);
68
        $query->andFilterWhere(['like', $usernameField, $this->username]);
69
70
        return $dataProvider;
71
    }
72
}
73