Passed
Push — master ( fa3dfe...661634 )
by Paweł
04:54
created

AdminController::actionDictionaries()   A

Complexity

Conditions 6
Paths 7

Size

Total Lines 32
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
eloc 18
c 0
b 0
f 0
nc 7
nop 0
dl 0
loc 32
rs 9.0444
1
<?php
2
/**
3
 * Created for IG Monitoring.
4
 * User: jakim <[email protected]>
5
 * Date: 20.08.2018
6
 */
7
8
namespace app\commands;
9
10
11
use app\dictionaries\AccountInvalidationType;
12
use yii\console\Controller;
13
use yii\console\ExitCode;
14
use yii\helpers\Console;
15
use yii\helpers\StringHelper;
16
17
class AdminController extends Controller
18
{
19
    public function actionDictionaries()
20
    {
21
        $dictionaries = [
22
            AccountInvalidationType::class,
23
        ];
24
25
        /** @var \app\dictionaries\Dictionary $dictionary */
26
        foreach ($dictionaries as $dictionary) {
27
            $this->stdout("$dictionary\n");
28
29
            $modelClass = '\\app\\models\\' . StringHelper::basename($dictionary);
30
            if (!class_exists($modelClass)) {
31
                $this->stderr("ERR: '$modelClass'\n");
32
33
                return ExitCode::UNSPECIFIED_ERROR;
34
            }
35
36
            foreach ($dictionary::labels() as $id => $name) {
37
                /** @var \yii\db\ActiveRecord $modelClass */
38
                $model = $modelClass::findOne($id);
39
                if ($model === null) {
40
                    $model = new $modelClass();
41
                    $model->id = $id;
42
                }
43
                $model->name = $name;
0 ignored issues
show
Bug Best Practice introduced by
The property name does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
44
                /** @var \yii\db\ActiveRecord $model */
45
                if (!$model->save()) {
46
                    echo Console::errorSummary($model);
47
48
                    return ExitCode::DATAERR;
49
                }
50
                $this->stdout("$id => $name\n");
51
            }
52
        }
53
54
    }
55
}