/**
  * 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');
 }