/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // validate request $validateNavigationCategory = Validator::make($request->get('NavigationCategory'), NavigationCategory::$rules); $validationMessages = []; foreach ($request->get('NavigationCategoryTranslation') as $key => $value) { $validateNavigationCategoryTranslation = Validator::make($value, NavigationCategoryTranslation::$rules); if ($validateNavigationCategoryTranslation->fails()) { $validationMessages = array_merge_recursive($validationMessages, $validateNavigationCategoryTranslation->messages()->toArray()); } } if ($validateNavigationCategory->fails() or count($validationMessages) > 0) { $validationMessages = array_merge_recursive($validateNavigationCategory->messages()->toArray(), $validationMessages); return redirect()->back()->withErrors($validationMessages)->withInput(); } // get all languages $languages = Language::all(); // find language default $languageDefault = $languages->where('is_key_language', 1)->first(); if (is_null($languageDefault)) { $languageDefault = $languages->first(); } // sure execute success, if not success rollback DB::transaction(function () use($request, $languageDefault) { $user = $request->user(); // insert NavigationCategory $navigationCategory = new NavigationCategory(); $navigationCategory->key = Common::createKeyURL($request->input('NavigationCategoryTranslation.' . $languageDefault->code . '.name')); $navigationCategory->parent_id = $request->input('NavigationCategory.parent_id'); $navigationCategory->priority = $request->input('NavigationCategory.priority'); $navigationCategory->is_publish = $request->input('NavigationCategory.is_publish'); $navigationCategory->created_by = $user->name; $navigationCategory->updated_by = $user->name; $navigationCategory->save(); // save data languages foreach ($request->get('NavigationCategoryTranslation') as $locale => $value) { $navigationCategory->translateOrNew($locale)->name = $request->input('NavigationCategoryTranslation.' . $locale . '.name'); $navigationCategory->translateOrNew($locale)->summary = $request->input('NavigationCategoryTranslation.' . $locale . '.summary'); } $navigationCategory->save(); }); return redirect()->route('admin.navigationcategories.index'); }