user()->isAdmin() && auth()->user()->isCityManager()) { } $posts = $posts->get(); return view('admin::posts.index', [ 'posts' => $posts ]); } public function create() { return view('admin::posts.create', [ 'categories' => PostCategory::cases() ]); } public function store(Request $request) { $request['text'] = 'none'; $validated = $request->validate([ 'name' => 'required', 'category' => 'required', 'short_text' => 'max:500', 'text' => 'required', 'imageFile' => 'required|mimes:jpg,bmp,png' ]); if (!Auth::user()->hasRole(Role::SUPER_ADMIN)) { if (!Auth::user()->hasRole(Role::CITY_MANAGER)) { return back(); } if ($request->has('cities')) { $availableCities = GetAvailableCities()->pluck('id')->toArray(); foreach ($request->cities as $cityId) { $city = City::find($cityId); if (auth()->user()->cannot('manage', $city)) { return back()->withErrors(['cities' => 'У вас нет прав на публикацию для города ' . $city->name]); } } } elseif (!auth()->user()->isAdmin()) { return back()->withErrors(['cities' => 'Выберите хотя бы один город для публикации']); } } $path = $request->file('imageFile')->store('posts', ['disk' => 'public']); $request['image'] = $path; $post = Post::create( $request->only(['name', 'short_text', 'text', 'category', 'image', 'post-trixFields']) ); if (array_key_exists('cities', $request->all()) && is_array($request['cities'])) { foreach ($request->cities as $cityId) { PostCity::create([ 'post_id' => $post->id, 'city_id' => $cityId, ]); } } return back()->withSuccess('Новость добавлена успешно'); } public function edit(Post $post) { return view('admin::posts.edit', [ 'categories' => PostCategory::cases(), 'post' => $post ]); } public function update(Request $request, Post $post) { $request['text'] = 'none'; $validated = $request->validate([ 'name' => 'required', 'category' => 'required', 'short_text' => 'max:500', 'text' => 'required', 'imageFile' => 'mimes:jpg,bmp,png' ]); if ($request->file('imageFile')) { $path = $request->file('imageFile')->store('posts', ['disk' => 'public']); $request['image'] = $path; } else { $reuqest['image'] = $post->image; } if ($request->has('cities')) { $availableCities = GetAvailableCities()->pluck('id')->toArray(); foreach ($request->cities as $cityId) { $city = City::find($cityId); if (auth()->user()->cannot('manage', $city)) { return back()->withErrors(['cities' => 'У вас нет прав на публикацию для города ' . $city->name]); } } } elseif (auth()->user()->isAdmin()) { PostCity::where('post_id', $post->id)->delete(); } else { return back()->withErrors(['cities' => 'Выберите хотя бы один город для публикации']); } $post = $post->update( $request->only(['name', 'short_text', 'text', 'category', 'image', 'post-trixFields']) ); return back()->withSuccess('Новость обновлена успешно'); } public function delete(Post $post) { $post->delete(); return back()->withSuccess('Новость удалена успешно'); } }