/** * Save map * * @return \Illuminate\Http\JsonResponse */ public function save() { $input = \Input::except('_token'); // Validate map content if (empty($input['id'])) { // Pre validate $input['seo_slug'] = empty($input['seo_slug']) ? str_slug($input['title']) : $input['seo_slug']; // Create validator $validator = \Validator::make($input, ['title' => 'required|max:255', 'seo_slug' => 'unique:contents' . (!empty($input['id']) ? ',seo_slug,' . $input['id'] : '')]); // When validation fails if ($validator->fails()) { return response()->json(['errors' => $validator->messages()]); } } // Load content if (empty($input['id'])) { $content = new Content(); $content->user_id = \Auth::user()->id; $content->fill($input); $content->save(); $map = new Map(); $map->user_id = \Auth::user()->id; $map->content()->associate($content); } else { $map = Map::find($input['id']); } // Save changes $input['center'] = implode(' ', $input['center']); $map->fill($input); $map->save(); // Response if (isset($input['close'])) { return response()->json(['success' => 'Map saved', 'redirect' => url('/admin/maps/list')]); } else { return response()->json(['success' => 'Map saved', 'redirect' => url('/admin/maps/form/' . $map->id)]); } }