Completed
Push — master ( 9b9020...8f5910 )
by Razon
02:07
created

AuthItemController   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 6
eloc 13
dl 0
loc 32
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getQuery() 0 6 1
A applyFilter() 0 5 3
A searchModel() 0 4 1
A findModelById() 0 5 1
1
<?php
2
namespace App\Http\Api\Backend\Controller;
3
4
use yii\base\DynamicModel;
5
6
abstract class AuthItemController extends ActiveController
7
{
8
    abstract protected function getType();
9
10
    public function getQuery($action)
11
    {
12
        return parent::getQuery($action)
13
            ->alias('ai')
14
            ->orderBy(['ai.name' => SORT_ASC])
15
            ->andWhere(['ai.type' => $this->getType()]);
16
    }
17
18
    public function searchModel()
19
    {
20
        return (new DynamicModel(['name' => '', 'description' => '']))
21
            ->addRule(['name', 'description'], 'string');
22
    }
23
24
    public function applyFilter($query, $model, $filter)
25
    {
26
        foreach (['name', 'description'] as $name) {
27
            if (!empty($model->$name)) {
28
                $query->andWhere(['LIKE', 'ai.' . $name, $model->$name]);
29
            }
30
        }
31
    }
32
33
    public function findModelById($id, $action)
34
    {
35
        return $action->modelClass::findOne([
36
            'name' => $id,
37
            'type' => $this->getType(),
38
        ]);
39
    }
40
}
41