Passed
Pull Request — master (#228)
by
unknown
05:24
created

CrudController::getGenerator()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace App\Http\Controllers;
4
5
use Artisan;
6
use File;
7
use Illuminate\Http\Request;
8
use Response;
9
use View;
10
use Redirect;
11
12
class CrudController extends Controller
13
{
14
    /**
15
     * Display generator.
16
     *
17
     * @return Response
18
     */
19
    public function getGenerator()
20
    {
21
        return view('crudmanagement.add-crud');
0 ignored issues
show
Bug Best Practice introduced by
The expression return view('crudmanagement.add-crud') returns the type Illuminate\View\View which is incompatible with the documented return type Response.
Loading history...
22
    }
23
24
    /**
25
     * Process generator.
26
     *
27
     * @param \Illuminate\Http\Request $request
28
     *
29
     * @return Response
30
     */
31
    public function postGenerator(Request $request)
32
    {
33
        $commandArg = [];
34
        $commandArg['name'] = $request->crud_name;
35
36
37
        // Make sure we do not already have this module
38
        $directories = glob(base_path().'/resources/views/*', GLOB_ONLYDIR);
39
        foreach ($directories as $dir){
40
            $this_name = str_replace(base_path() . '/resources/views/','',$dir);
41
            $used_names[] = $this_name;
42
        }
43
44
        if (in_array(strtolower($request->crud_name), $used_names)) {
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $used_names seems to be defined by a foreach iteration on line 39. Are you sure the iterator is never empty, otherwise this variable is not defined?
Loading history...
45
            return Redirect::back()->withErrors(['Name Exists or Restricted']);
0 ignored issues
show
Bug Best Practice introduced by
The expression return Redirect::back()-...Exists or Restricted')) returns the type Illuminate\Http\RedirectResponse which is incompatible with the documented return type Response.
Loading history...
46
        }
47
48
        if ($request->has('fields')) {
49
            $fieldsArray = [];
50
            $validationsArray = [];
51
            $x = 0;
52
            foreach ($request->fields as $field) {
53
                if ($request->fields_required[$x] == 1) {
54
                    $validationsArray[] = $field;
55
                }
56
57
                $fieldsArray[] = $field.'#'.$request->fields_type[$x];
58
59
                $x++;
60
            }
61
62
            $commandArg['--fields'] = implode(';', $fieldsArray);
63
        }
64
65
        if (!empty($validationsArray)) {
66
            $commandArg['--validations'] = implode('#required;', $validationsArray) . '#required';
67
        }
68
69
        if ($request->has('route')) {
70
            $commandArg['--route'] = $request->route;
71
        }
72
73
        if ($request->has('view_path')) {
74
            $commandArg['--view-path'] = $request->view_path;
75
        }
76
77
        if ($request->has('controller_namespace')) {
78
            $commandArg['--controller-namespace'] = $request->controller_namespace;
79
        }
80
81
        if ($request->has('model_namespace')) {
82
            $commandArg['--model-namespace'] = $request->model_namespace;
83
        }
84
85
        if ($request->has('route_group')) {
86
            $commandArg['--route-group'] = $request->route_group;
87
        }
88
89
        if ($request->has('relationships')) {
90
            $commandArg['--relationships'] = $request->relationships;
91
        }
92
93
        if ($request->has('form_helper')) {
94
            $commandArg['--form-helper'] = $request->form_helper;
95
        }
96
97
        if ($request->has('soft_deletes')) {
98
            $commandArg['--soft-deletes'] = $request->soft_deletes;
99
        }
100
101
        try {
102
            Artisan::call('crud:generate', $commandArg);
103
104
            $menus = json_decode(File::get(base_path('resources/laravel-admin/menus.json')));
105
106
            $name = $commandArg['name'];
107
            $routeName = ($commandArg['--route-group']) ? $commandArg['--route-group'].'/'.snake_case($name, '-') : snake_case($name, '-');
108
109
            $menus->menus = array_map(function ($menu) use ($name, $routeName) {
110
                if ($menu->section == 'Resources') {
111
                    array_push($menu->items, (object) [
112
                        'title' => $name,
113
                        'url'   => '/'.$routeName,
114
                    ]);
115
                }
116
117
                return $menu;
118
            }, $menus->menus);
119
120
            File::put(base_path('resources/laravel-admin/menus.json'), json_encode($menus));
121
122
            Artisan::call('migrate');
123
        } catch (\Exception $e) {
124
            return Response::make($e->getMessage(), 500);
0 ignored issues
show
Bug Best Practice introduced by
The expression return Response::make($e->getMessage(), 500) returns the type Illuminate\Http\Response which is incompatible with the documented return type Response.
Loading history...
125
        }
126
127
        return redirect('crud')->with('flash_message', 'Your CRUD has been generated. See on the menu.');
0 ignored issues
show
Bug Best Practice introduced by
The expression return redirect('crud')-...ted. See on the menu.') returns the type Illuminate\Http\RedirectResponse which is incompatible with the documented return type Response.
Loading history...
128
    }
129
}
130