/**
  * Insert new menu
  *
  * @param Request $request
  *
  * @return $this|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
  */
 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);
     $roles = Role::all();
     $rolesInsert = '';
     $first = true;
     foreach ($roles as $role) {
         if ($request->{'role-' . $role->id} == 1) {
             if ($first != true) {
                 $rolesInsert .= ',';
             }
             $rolesInsert .= $role->id;
             $first = false;
         }
     }
     // Create menu entry
     Menu::create(['position' => 0, 'icon' => $request->icon != '' ? $request->icon : 'fa-database', 'name' => $request->name, 'title' => $request->title, 'parent_id' => $request->parent_id != 0 ? $request->parent_id : null, 'roles' => $rolesInsert]);
     // 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'));
 }
 /**
  * Build relationships for forms
  * @return string
  */
 public function relationshipsBuilder()
 {
     if ($this->relationships == 0) {
         return '';
     } else {
         $menus = Menu::all()->keyBy('id');
         $relationships = '';
         $first = true;
         foreach ($this->fields as $field) {
             if ($field->type == 'relationship') {
                 // Formatting fix if the relationship is not first
                 if (!$first) {
                     $relationships .= '        ';
                 }
                 $menu = $menus[$field->relationship_id];
                 $relationships .= '$' . $field->relationship_name . ' = ' . ucfirst(Str::camel($menu->name)) . '::lists("' . $field->relationship_field . '", "id");' . "\r\n";
             }
         }
         return $relationships;
     }
 }
Example #3
0
 /**
  * Build model relationships
  * @return string
  */
 private function buildRelationships()
 {
     $menus = Menu::all()->keyBy('id');
     $used = [];
     $relationships = '';
     foreach ($this->fields as $key => $field) {
         if (!in_array($field->title, $used) && $field->type == 'relationship') {
             $menu = $menus[$field->relationship_id];
             $relLine = '
 public function $RELATIONSHIP$()
 {
     return $this->hasOne(\'App\\$RELATIONSHIP_MODEL$\', \'id\', \'$RELATIONSHIP$_id\');
 }' . "\r\n\r\n";
             $relLine = str_replace(['$RELATIONSHIP$', '$RELATIONSHIP_MODEL$'], [strtolower($menu->name), ucfirst(Str::camel($menu->name))], $relLine);
             $relationships .= $relLine;
         }
     }
     return $relationships;
 }