Observer::generate()   A
last analyzed

Complexity

Conditions 4
Paths 2

Size

Total Lines 41
Code Lines 27

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 27
c 0
b 0
f 0
nc 2
nop 0
dl 0
loc 41
rs 9.488
1
<?php
2
namespace Prateekkarki\Laragen\Generators\Backend;
3
4
use Prateekkarki\Laragen\Models\LaragenOptions;
5
use Prateekkarki\Laragen\Generators\BaseGenerator;
6
use Prateekkarki\Laragen\Generators\GeneratorInterface;
7
8
class Observer extends BaseGenerator implements GeneratorInterface
9
{
10
    protected static $initializeFlag = 0;
11
    public function generate()
12
    {
13
        $generatedFiles = [];
14
15
        if ($this::$initializeFlag == 0) {
16
            $laragen = LaragenOptions::getInstance();
17
            $modules = $laragen->getModules();
18
            $models = [];
19
            foreach ($modules as $module) {
20
                $models[] = $module->getModelName();
21
            }
22
23
            $modelsCode = '';
24
            $usedClasses = '';
25
            foreach ($models as $model) {
26
                $modelsCode .= $model."::observe(".$model."Observer::class);".PHP_EOL.$this->getTabs(2);
27
                $usedClasses .= "use App\Observers\\".$model."Observer;".PHP_EOL;
28
                $usedClasses .= "use App\Models\\".$model.";".PHP_EOL;
29
            }
30
31
            $observerProviderTemplate = $this->buildTemplate('common/LaragenObserverServiceProvider', [
32
                '{{modelObservers}}'     => $modelsCode,
33
                '{{usedClasses}}'     => $usedClasses,
34
            ]);
35
36
            $fullFilePath = $this->getPath("app/Providers/")."LaragenObserverServiceProvider.php";
37
            file_put_contents($fullFilePath, $observerProviderTemplate);
38
            $generatedFiles[] = $fullFilePath;
39
            $this::$initializeFlag++;
40
41
        }
42
43
        $controllerTemplate = $this->buildTemplate('backend/observers/observer', [
44
            '{{modelName}}'           => $this->module->getModelName(),
45
            '{{modelNameLowercase}}' => $this->module->getModelNameLowercase(),
46
        ]);
47
48
        $fullFilePath = $this->getPath("app/Observers/").$this->module->getModelName()."Observer".".php";
49
        file_put_contents($fullFilePath, $controllerTemplate);
50
        $generatedFiles[] = $fullFilePath;
51
        return $generatedFiles;
52
    }
53
54
}
55