Completed
Pull Request — master (#40)
by
unknown
04:16
created

ConvertController::actionToArray()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 8
nc 1
nop 0
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: execut
5
 * Date: 5/18/17
6
 * Time: 11:33 AM
7
 */
8
9
namespace pastuhov\ymlcatalog\categories\controllers;
10
11
12
use pastuhov\ymlcatalog\categories\models\Category;
13
use pastuhov\ymlcatalog\categories\SourceToArrayConverter;
14
use yii\base\Exception;
15
use yii\console\Controller;
16
17
class ConvertController extends Controller
18
{
19
    public function actionToArray() {
20
        $arrayResult = $this->convertSource();
21
        $config = str_replace('  ', '    ', str_replace(')', ']', str_replace(["\n" . '  array (', 'array ('], '[', var_export($arrayResult, true))));
22
        $result = <<<PHP
23
<?php
24
return $config;
25
PHP;
26
27
        file_put_contents(__DIR__ . '/../data/categories.php', $result);
28
    }
29
30
    public function actionToDatabase() {
31
        $arrayResults = $this->convertSource();
32
        foreach ($arrayResults as $arrayResult) {
33
            $category = Category::findOrCreate($arrayResult);
34
            if (!$category->save()) {
35
                throw new Exception('Failed save ' . var_export($category->attributes, true) . ' errors: ' . var_export($category->errors));
36
            }
37
        }
38
    }
39
40
    /**
41
     * @return array
42
     */
43
    protected function convertSource()
44
    {
45
        $source = file_get_contents(__DIR__ . '/../data/categories.csv');
46
        $converter = new SourceToArrayConverter([
47
            'source' => $source,
48
        ]);
49
        $arrayResult = $converter->convert();
50
        return $arrayResult;
51
    }
52
}