Laraveldaily\Quickadmin\Controllers\QuickadminMenuController::insertCrud PHP Method

insertCrud() public method

Insert new menu
public insertCrud ( Illuminate\Http\Request $request )
$request Illuminate\Http\Request
    public function insertCrud(Request $request)
    {
        $validation = Validator::make($request->all(), ['name' => 'required|unique:menus,name', 'title' => 'required', 'soft' => 'required']);
        if ($validation->fails()) {
            return redirect()->back()->withInput()->withErrors($validation);
        }
        // Get model names
        $menus = Menu::all();
        $models = [];
        foreach ($menus as $menu) {
            $tableName = strtolower($menu->name);
            $models[$menu->id] = $tableName;
        }
        // Init QuickCache
        $cache = new QuickCache();
        $cached = [];
        $cached['relationships'] = 0;
        $cached['files'] = 0;
        $cached['password'] = 0;
        $cached['date'] = 0;
        $cached['datetime'] = 0;
        $cached['enum'] = 0;
        $fields = [];
        foreach ($request->f_type as $index => $field) {
            $fields[$index] = ['type' => $field, 'title' => $request->f_title[$index], 'label' => $request->f_label[$index], 'helper' => $request->f_helper[$index], 'validation' => $request->f_validation[$index], 'value' => $request->f_value[$index], 'default' => $request->f_default[$index], 'relationship_id' => $request->has('f_relationship.' . $index) ? $request->f_relationship[$index] : '', 'relationship_name' => $request->has('f_relationship.' . $index) ? $models[$request->f_relationship[$index]] : '', 'relationship_field' => $request->has('f_relationship_field.' . $request->f_relationship[$index]) ? $request->f_relationship_field[$request->f_relationship[$index]] : '', 'texteditor' => $request->f_texteditor[$index], 'size' => $request->f_size[$index] * 1024, 'show' => $request->f_show[$index], 'dimension_h' => $request->f_dimension_h[$index], 'dimension_w' => $request->f_dimension_w[$index], 'enum' => $request->f_enum[$index]];
            if ($field == 'relationship') {
                $cached['relationships']++;
            } elseif ($field == 'file' || $field == 'photo') {
                $cached['files']++;
            } elseif ($field == 'password') {
                $cached['password']++;
            } elseif ($field == 'date') {
                $cached['date']++;
            } elseif ($field == 'datetime') {
                $cached['datetime']++;
            } elseif ($field == 'enum') {
                $cached['enum']++;
            }
        }
        //        dd($fields);
        $cached['fields'] = $fields;
        $cached['name'] = $request->name;
        $cached['soft_delete'] = $request->soft;
        $cache->put('fieldsinfo', $cached);
        // Create menu entry
        $menu = Menu::create(['position' => 0, 'icon' => $request->icon != '' ? $request->icon : 'fa-database', 'name' => $request->name, 'title' => $request->title, 'parent_id' => $request->parent_id ?: null]);
        $menu->roles()->sync($request->input('roles', []));
        // Create migrations
        $migrationBuilder = new MigrationBuilder();
        $migrationBuilder->build();
        // Create model
        $modelBuilder = new ModelBuilder();
        $modelBuilder->build();
        // Create request
        $requestBuilder = new RequestBuilder();
        $requestBuilder->build();
        // Create controller
        $controllerBuilder = new ControllerBuilder();
        $controllerBuilder->build();
        // Create views
        $viewsBuilder = new ViewsBuilder();
        $viewsBuilder->build();
        // Call migrations
        Artisan::call('migrate');
        // Destroy our cache file
        $cache->destroy('fieldsinfo');
        return redirect(config('quickadmin.route'));
    }