Completed
Push — master ( 6ad859...3ea301 )
by Maarten
13s queued 10s
created

HasOptionalActions::optionalActions()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 12
rs 9.8666
c 0
b 0
f 0
cc 4
nc 4
nop 1
1
<?php
2
3
namespace Mtolhuys\LaravelSchematics\Http\Controllers\Traits;
4
5
use Mtolhuys\LaravelSchematics\Actions\Migration\CreateColumnsMigrationAction;
6
use Mtolhuys\LaravelSchematics\Actions\Migration\CreateModelMigrationAction;
7
use Mtolhuys\LaravelSchematics\Actions\Migration\CreateRelationMigrationAction;
8
use Mtolhuys\LaravelSchematics\Actions\Migration\DeleteMigrationAction;
9
use Mtolhuys\LaravelSchematics\Actions\Resource\CreateFormRequestAction;
10
use Mtolhuys\LaravelSchematics\Actions\Resource\CreateResourceControllerAction;
11
12
trait HasOptionalActions
13
{
14
    /**
15
     * @param $request
16
     */
17
    public function optionalActions($request)
18
    {
19
        if (! is_array($request['actions'])) {
20
            return;
21
        }
22
23
        foreach ($request['actions'] as $option => $shouldUse) {
24
            if (json_decode($shouldUse, false)) {
25
                $this->getAction($option)->execute($request);
26
            }
27
        }
28
    }
29
30
    /**
31
     * @param $option
32
     * @return mixed
33
     */
34
    private function getAction($option)
35
    {
36
        return [
37
            'hasResourceController' => new CreateResourceControllerAction,
38
            'hasRelationMigration' => new CreateRelationMigrationAction,
39
            'hasColumnsMigration' => new CreateColumnsMigrationAction,
40
            'hasModelMigration' => new CreateModelMigrationAction,
41
            'deletesMigration' => new DeleteMigrationAction,
42
            'hasFormRequest' => new CreateFormRequestAction,
43
        ][$option];
44
    }
45
}
46