/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // validate request $validateSubject = Validator::make($request->get('Subject'), Subject::$rules); $validationMessages = []; foreach ($request->get('SubjectTranslation') as $key => $value) { $validateSubjectTranslation = Validator::make($value, SubjectTranslation::$rules); if ($validateSubjectTranslation->fails()) { $validationMessages = array_merge_recursive($validationMessages, $validateSubjectTranslation->messages()->toArray()); } } if ($validateSubject->fails() or count($validationMessages) > 0) { $validationMessages = array_merge_recursive($validateSubject->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 Subject $subject = new Subject(); $subject->key = Common::createKeyURL($request->input('SubjectTranslation.' . $languageDefault->code . '.name')); $subject->priority = $request->input('Subject.priority'); $subject->is_publish = $request->input('Subject.is_publish'); $subject->created_by = $user->name; $subject->updated_by = $user->name; $subject->save(); // save data languages foreach ($request->get('SubjectTranslation') as $locale => $value) { $subject->translateOrNew($locale)->name = $request->input('SubjectTranslation.' . $locale . '.name'); } $subject->save(); }); return redirect()->route('admin.subjects.index'); }