diff --git a/app/Http/Controllers/Admin/AdminCategoryController.php b/app/Http/Controllers/Admin/AdminCategoryController.php new file mode 100644 index 00000000..1ebe05d2 --- /dev/null +++ b/app/Http/Controllers/Admin/AdminCategoryController.php @@ -0,0 +1,80 @@ + $categories]); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + return view('admin.category.create'); + } + + /** + * Store a newly created resource in storage. + */ + public function store(StoreRequest $request) + { + $data = $request->validated(); + $data['slug'] = Str::slug($data['title']); + /** @phpstan-ignore-next-line */ + Category::firstOrCreate($data); + + return redirect()->route('admin.category.index'); + } + + /** + * Display the specified resource. + */ + public function show(Category $category) + { + return view('admin.category.show', ['category' => $category]); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Category $category) + { + return view('admin.category.edit', ['category' => $category]); + } + + /** + * Update the specified resource in storage. + */ + public function update(UpdateRequest $request, Category $category) + { + $data = $request->validated(); + $category->update($data); + + return view('admin.category.show', ['category' => $category]); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Category $category) + { + $category->delete(); + + return redirect()->route('admin.category.index'); + } +} diff --git a/app/Http/Controllers/Admin/AdminPostController.php b/app/Http/Controllers/Admin/AdminPostController.php new file mode 100644 index 00000000..7a19b556 --- /dev/null +++ b/app/Http/Controllers/Admin/AdminPostController.php @@ -0,0 +1,93 @@ +service = $service; + } + + /** + * Display a listing of the resource. + */ + public function index() + { + $posts = Post::all(); + + return view('admin.post.index', ['posts' => $posts]); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + $categories = Category::all(); + $tags = Tag::all(); + + return view('admin.post.create', ['categories' => $categories, 'tags' => $tags]); + } + + /** + * Store a newly created resource in storage. + */ + public function store(StoreRequest $request) + { + $data = $request->validated(); + $this->service->store($data); + + return redirect()->route('admin.post.index'); + } + + /** + * Display the specified resource. + */ + public function show(Post $post) + { + return view('admin.post.show', ['post' => $post]); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Post $post) + { + $categories = Category::all(); + $tags = Tag::all(); + + return view('admin.post.edit', ['post' => $post, 'categories' => $categories, 'tags' => $tags]); + } + + /** + * Update the specified resource in storage. + */ + public function update(UpdateRequest $request, Post $post) + { + $data = $request->validated(); + $post = $this->service->update($data, $post); + + return redirect()->route('admin.post.show', ['post' => $post]); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Post $post) + { + $post->delete(); + + return redirect()->route('admin.post.index'); + } +} diff --git a/app/Http/Controllers/Admin/AdminTagController.php b/app/Http/Controllers/Admin/AdminTagController.php new file mode 100644 index 00000000..0ab7f641 --- /dev/null +++ b/app/Http/Controllers/Admin/AdminTagController.php @@ -0,0 +1,78 @@ + $tags]); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + return view('admin.tag.create'); + } + + /** + * Store a newly created resource in storage. + */ + public function store(StoreRequest $request) + { + $data = $request->validated(); + /** @phpstan-ignore-next-line */ + Tag::firstOrCreate($data); + + return redirect()->route('admin.tag.index'); + } + + /** + * Display the specified resource. + */ + public function show(Tag $tag) + { + return view('admin.tag.show', ['tag' => $tag]); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Tag $tag) + { + return view('admin.tag.edit', ['tag' => $tag]); + } + + /** + * Update the specified resource in storage. + */ + public function update(UpdateRequest $request, Tag $tag) + { + $data = $request->validated(); + $tag->update($data); + + return view('admin.tag.show', ['tag' => $tag]); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Tag $tag) + { + $tag->delete(); + + return redirect()->route('admin.tag.index'); + } +} diff --git a/app/Http/Controllers/Admin/AdminUserController.php b/app/Http/Controllers/Admin/AdminUserController.php new file mode 100644 index 00000000..1ecd4c07 --- /dev/null +++ b/app/Http/Controllers/Admin/AdminUserController.php @@ -0,0 +1,78 @@ + $users]); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + return view('admin.user.create'); + } + + /** + * Store a newly created resource in storage. + */ + public function store(StoreRequest $request) + { + $data = $request->validated(); + StoreUserJob::dispatch($data); + + return redirect()->route('admin.user.index'); + } + + /** + * Display the specified resource. + */ + public function show(User $user) + { + return view('admin.user.show', ['user' => $user]); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(User $user) + { + return view('admin.user.edit', ['user' => $user]); + } + + /** + * Update the specified resource in storage. + */ + public function update(UpdateRequest $request, User $user) + { + $data = $request->validated(); + $user->update($data); + + return view('admin.user.show', ['user' => $user]); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(User $user) + { + $user->delete(); + + return redirect()->route('admin.user.index'); + } +} diff --git a/app/Http/Controllers/Admin/Category/CreateController.php b/app/Http/Controllers/Admin/Category/CreateController.php deleted file mode 100644 index 895dd14f..00000000 --- a/app/Http/Controllers/Admin/Category/CreateController.php +++ /dev/null @@ -1,14 +0,0 @@ -make('admin.category.create'); - } -} diff --git a/app/Http/Controllers/Admin/Category/DeleteController.php b/app/Http/Controllers/Admin/Category/DeleteController.php deleted file mode 100644 index e6838248..00000000 --- a/app/Http/Controllers/Admin/Category/DeleteController.php +++ /dev/null @@ -1,16 +0,0 @@ -delete(); - - return redirect()->route('admin.category.index'); - } -} diff --git a/app/Http/Controllers/Admin/Category/EditController.php b/app/Http/Controllers/Admin/Category/EditController.php deleted file mode 100644 index 34ea3a7c..00000000 --- a/app/Http/Controllers/Admin/Category/EditController.php +++ /dev/null @@ -1,15 +0,0 @@ -make('admin.category.edit', ['category' => $category]); - } -} diff --git a/app/Http/Controllers/Admin/Category/IndexController.php b/app/Http/Controllers/Admin/Category/IndexController.php deleted file mode 100644 index 1a780e76..00000000 --- a/app/Http/Controllers/Admin/Category/IndexController.php +++ /dev/null @@ -1,17 +0,0 @@ -make('admin.category.index', ['categories' => $categories]); - } -} diff --git a/app/Http/Controllers/Admin/Category/ShowController.php b/app/Http/Controllers/Admin/Category/ShowController.php deleted file mode 100644 index 4c3a43ec..00000000 --- a/app/Http/Controllers/Admin/Category/ShowController.php +++ /dev/null @@ -1,15 +0,0 @@ -make('admin.category.show', ['category' => $category]); - } -} diff --git a/app/Http/Controllers/Admin/Category/StoreController.php b/app/Http/Controllers/Admin/Category/StoreController.php deleted file mode 100644 index 518dd935..00000000 --- a/app/Http/Controllers/Admin/Category/StoreController.php +++ /dev/null @@ -1,21 +0,0 @@ -validated(); - $data['slug'] = Str::slug($data['title']); - /** @phpstan-ignore-next-line */ - Category::firstOrCreate($data); - - return redirect()->route('admin.category.index'); - } -} diff --git a/app/Http/Controllers/Admin/Category/UpdateController.php b/app/Http/Controllers/Admin/Category/UpdateController.php deleted file mode 100644 index 498b156b..00000000 --- a/app/Http/Controllers/Admin/Category/UpdateController.php +++ /dev/null @@ -1,19 +0,0 @@ -validated(); - $category->update($data); - - return $view_factory->make('admin.category.show', ['category' => $category]); - } -} diff --git a/app/Http/Controllers/Admin/Post/BaseController.php b/app/Http/Controllers/Admin/Post/BaseController.php deleted file mode 100644 index 0e77c53d..00000000 --- a/app/Http/Controllers/Admin/Post/BaseController.php +++ /dev/null @@ -1,20 +0,0 @@ -service = $service; - } -} diff --git a/app/Http/Controllers/Admin/Post/CreateController.php b/app/Http/Controllers/Admin/Post/CreateController.php deleted file mode 100644 index feadc4ba..00000000 --- a/app/Http/Controllers/Admin/Post/CreateController.php +++ /dev/null @@ -1,18 +0,0 @@ -make('admin.post.create', ['categories' => $categories, 'tags' => $tags]); - } -} diff --git a/app/Http/Controllers/Admin/Post/DeleteController.php b/app/Http/Controllers/Admin/Post/DeleteController.php deleted file mode 100644 index ee056c97..00000000 --- a/app/Http/Controllers/Admin/Post/DeleteController.php +++ /dev/null @@ -1,15 +0,0 @@ -delete(); - - return redirect()->route('admin.post.index'); - } -} diff --git a/app/Http/Controllers/Admin/Post/EditController.php b/app/Http/Controllers/Admin/Post/EditController.php deleted file mode 100644 index 4b3f1a61..00000000 --- a/app/Http/Controllers/Admin/Post/EditController.php +++ /dev/null @@ -1,19 +0,0 @@ -make('admin.post.edit', ['post' => $post, 'categories' => $categories, 'tags' => $tags]); - } -} diff --git a/app/Http/Controllers/Admin/Post/IndexController.php b/app/Http/Controllers/Admin/Post/IndexController.php deleted file mode 100644 index c5bec6f0..00000000 --- a/app/Http/Controllers/Admin/Post/IndexController.php +++ /dev/null @@ -1,16 +0,0 @@ -make('admin.post.index', ['posts' => $posts]); - } -} diff --git a/app/Http/Controllers/Admin/Post/ShowController.php b/app/Http/Controllers/Admin/Post/ShowController.php deleted file mode 100644 index a18342b4..00000000 --- a/app/Http/Controllers/Admin/Post/ShowController.php +++ /dev/null @@ -1,14 +0,0 @@ -make('admin.post.show', ['post' => $post]); - } -} diff --git a/app/Http/Controllers/Admin/Post/StoreController.php b/app/Http/Controllers/Admin/Post/StoreController.php deleted file mode 100644 index c4ee7a8a..00000000 --- a/app/Http/Controllers/Admin/Post/StoreController.php +++ /dev/null @@ -1,16 +0,0 @@ -validated(); - $this->service->store($data); - - return redirect()->route('admin.post.index'); - } -} diff --git a/app/Http/Controllers/Admin/Post/UpdateController.php b/app/Http/Controllers/Admin/Post/UpdateController.php deleted file mode 100644 index 8c3cf5a1..00000000 --- a/app/Http/Controllers/Admin/Post/UpdateController.php +++ /dev/null @@ -1,17 +0,0 @@ -validated(); - $post = $this->service->update($data, $post); - - return redirect()->route('admin.post.show', ['post' => $post]); - } -} diff --git a/app/Http/Controllers/Admin/Tag/CreateController.php b/app/Http/Controllers/Admin/Tag/CreateController.php deleted file mode 100644 index fc7ce0df..00000000 --- a/app/Http/Controllers/Admin/Tag/CreateController.php +++ /dev/null @@ -1,14 +0,0 @@ -make('admin.tag.create'); - } -} diff --git a/app/Http/Controllers/Admin/Tag/DeleteController.php b/app/Http/Controllers/Admin/Tag/DeleteController.php deleted file mode 100644 index 233220b2..00000000 --- a/app/Http/Controllers/Admin/Tag/DeleteController.php +++ /dev/null @@ -1,16 +0,0 @@ -delete(); - - return redirect()->route('admin.tag.index'); - } -} diff --git a/app/Http/Controllers/Admin/Tag/EditController.php b/app/Http/Controllers/Admin/Tag/EditController.php deleted file mode 100644 index b90c2f60..00000000 --- a/app/Http/Controllers/Admin/Tag/EditController.php +++ /dev/null @@ -1,15 +0,0 @@ -make('admin.tag.edit', ['tag' => $tag]); - } -} diff --git a/app/Http/Controllers/Admin/Tag/IndexController.php b/app/Http/Controllers/Admin/Tag/IndexController.php deleted file mode 100644 index cd1ca83b..00000000 --- a/app/Http/Controllers/Admin/Tag/IndexController.php +++ /dev/null @@ -1,17 +0,0 @@ -make('admin.tag.index', ['tags' => $tags]); - } -} diff --git a/app/Http/Controllers/Admin/Tag/ShowController.php b/app/Http/Controllers/Admin/Tag/ShowController.php deleted file mode 100644 index 913f72d2..00000000 --- a/app/Http/Controllers/Admin/Tag/ShowController.php +++ /dev/null @@ -1,15 +0,0 @@ -make('admin.tag.show', ['tag' => $tag]); - } -} diff --git a/app/Http/Controllers/Admin/Tag/StoreController.php b/app/Http/Controllers/Admin/Tag/StoreController.php deleted file mode 100644 index 510601ac..00000000 --- a/app/Http/Controllers/Admin/Tag/StoreController.php +++ /dev/null @@ -1,19 +0,0 @@ -validated(); - /** @phpstan-ignore-next-line */ - Tag::firstOrCreate($data); - - return redirect()->route('admin.tag.index'); - } -} diff --git a/app/Http/Controllers/Admin/Tag/UpdateController.php b/app/Http/Controllers/Admin/Tag/UpdateController.php deleted file mode 100644 index b72966d9..00000000 --- a/app/Http/Controllers/Admin/Tag/UpdateController.php +++ /dev/null @@ -1,19 +0,0 @@ -validated(); - $tag->update($data); - - return $view_factory->make('admin.tag.show', ['tag' => $tag]); - } -} diff --git a/app/Http/Controllers/Admin/User/CreateController.php b/app/Http/Controllers/Admin/User/CreateController.php deleted file mode 100644 index f51571c1..00000000 --- a/app/Http/Controllers/Admin/User/CreateController.php +++ /dev/null @@ -1,14 +0,0 @@ -make('admin.user.create'); - } -} diff --git a/app/Http/Controllers/Admin/User/DeleteController.php b/app/Http/Controllers/Admin/User/DeleteController.php deleted file mode 100644 index dd1ecae2..00000000 --- a/app/Http/Controllers/Admin/User/DeleteController.php +++ /dev/null @@ -1,16 +0,0 @@ -delete(); - - return redirect()->route('admin.user.index'); - } -} diff --git a/app/Http/Controllers/Admin/User/EditController.php b/app/Http/Controllers/Admin/User/EditController.php deleted file mode 100644 index 84e976cf..00000000 --- a/app/Http/Controllers/Admin/User/EditController.php +++ /dev/null @@ -1,15 +0,0 @@ -make('admin.user.edit', ['user' => $user]); - } -} diff --git a/app/Http/Controllers/Admin/User/IndexController.php b/app/Http/Controllers/Admin/User/IndexController.php deleted file mode 100644 index 1d93942c..00000000 --- a/app/Http/Controllers/Admin/User/IndexController.php +++ /dev/null @@ -1,17 +0,0 @@ -make('admin.user.index', ['users' => $users]); - } -} diff --git a/app/Http/Controllers/Admin/User/ShowController.php b/app/Http/Controllers/Admin/User/ShowController.php deleted file mode 100644 index b58b8a00..00000000 --- a/app/Http/Controllers/Admin/User/ShowController.php +++ /dev/null @@ -1,15 +0,0 @@ -make('admin.user.show', ['user' => $user]); - } -} diff --git a/app/Http/Controllers/Admin/User/StoreController.php b/app/Http/Controllers/Admin/User/StoreController.php deleted file mode 100644 index 70a60568..00000000 --- a/app/Http/Controllers/Admin/User/StoreController.php +++ /dev/null @@ -1,18 +0,0 @@ -validated(); - StoreUserJob::dispatch($data); - - return redirect()->route('admin.user.index'); - } -} diff --git a/app/Http/Controllers/Admin/User/UpdateController.php b/app/Http/Controllers/Admin/User/UpdateController.php deleted file mode 100644 index 645dc5bc..00000000 --- a/app/Http/Controllers/Admin/User/UpdateController.php +++ /dev/null @@ -1,19 +0,0 @@ -validated(); - $user->update($data); - - return $view_factory->make('admin.user.show', ['user' => $user]); - } -} diff --git a/app/Service/PostService.php b/app/Service/PostService.php index 1b868ee9..958592d9 100644 --- a/app/Service/PostService.php +++ b/app/Service/PostService.php @@ -23,6 +23,10 @@ public function store($data) $tagIds = $data['tag_ids']; unset($data['tag_ids']); } + if (isset($data['category_id'])) { + $categoryId = $data['category_id']; + unset($data['category_id']); + } if (isset($data['preview_image'])) { $data['preview_image'] = Storage::disk('public')->put('/images', $data['preview_image']); } @@ -37,6 +41,9 @@ public function store($data) if (isset($tagIds)) { $post->tags()->attach($tagIds); } + if (isset($categoryId)) { + $post->categories()->attach($categoryId); + } DB::commit(); } catch (Exception) { DB::rollBack(); diff --git a/resources/views/admin/category/index.blade.php b/resources/views/admin/category/index.blade.php index 463603ed..dbbf8964 100644 --- a/resources/views/admin/category/index.blade.php +++ b/resources/views/admin/category/index.blade.php @@ -43,15 +43,15 @@ {{ $category->id }} {{ $category->title }} - - + Info + Edit -
@csrf @method('delete')
diff --git a/resources/views/admin/post/index.blade.php b/resources/views/admin/post/index.blade.php index 340a9a8d..f59a8aca 100644 --- a/resources/views/admin/post/index.blade.php +++ b/resources/views/admin/post/index.blade.php @@ -23,7 +23,7 @@ Info Edit -
@csrf @method('delete') diff --git a/resources/views/admin/tag/index.blade.php b/resources/views/admin/tag/index.blade.php index 9e9344dc..da1a4c86 100644 --- a/resources/views/admin/tag/index.blade.php +++ b/resources/views/admin/tag/index.blade.php @@ -43,15 +43,15 @@ {{ $tag->id }} {{ $tag->title }} - - + Info + Edit - @csrf @method('delete')
diff --git a/resources/views/admin/user/index.blade.php b/resources/views/admin/user/index.blade.php index a55204e7..281d5c60 100644 --- a/resources/views/admin/user/index.blade.php +++ b/resources/views/admin/user/index.blade.php @@ -43,15 +43,15 @@ {{ $user->id }} {{ $user->name }} - - + Info + Edit -
@csrf @method('delete')
diff --git a/routes/web.php b/routes/web.php index 4b534326..67e983c7 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,35 +1,11 @@ middleware(['auth', 'admin'])->group(function () { +Route::prefix('admin')->middleware(['auth', 'admin'])->name('admin.')->group(function () { Route::prefix('main')->group(function () { - Route::get('/', AdminMainIndexController::class)->name('admin.main.index'); - }); - Route::prefix('category')->group(function () { - Route::get('/', AdminCategoryIndexController::class)->name('admin.category.index'); - Route::get('/create', AdminCategoryCreateController::class)->name('admin.category.create'); - Route::post('/', AdminCategoryStoreController::class)->name('admin.category.store'); - Route::get('/{category}', AdminCategoryShowController::class)->name('admin.category.show'); - Route::get('/{category}/edit', AdminCategoryEditController::class)->name('admin.category.edit'); - Route::patch('/{category}', AdminCategoryUpdateController::class)->name('admin.category.update'); - Route::delete('/{category}', AdminCategoryDeleteController::class)->name('admin.category.delete'); - }); - Route::prefix('tag')->group(function () { - Route::get('/', AdminTagIndexController::class)->name('admin.tag.index'); - Route::get('/create', AdminTagCreateController::class)->name('admin.tag.create'); - Route::post('/', AdminTagStoreController::class)->name('admin.tag.store'); - Route::get('/{tag}', AdminTagShowController::class)->name('admin.tag.show'); - Route::get('/{tag}/edit', AdminTagEditController::class)->name('admin.tag.edit'); - Route::patch('/{tag}', AdminTagUpdateController::class)->name('admin.tag.update'); - Route::delete('/{tag}', AdminTagDeleteController::class)->name('admin.tag.delete'); - }); - Route::prefix('post')->group(function () { - Route::get('/', AdminPostIndexController::class)->name('admin.post.index'); - Route::get('/create', AdminPostCreateController::class)->name('admin.post.create'); - Route::post('/', AdminPostStoreController::class)->name('admin.post.store'); - Route::get('/{post}', AdminPostShowController::class)->name('admin.post.show'); - Route::get('/{post}/edit', AdminPostEditController::class)->name('admin.post.edit'); - Route::patch('/{post}', AdminPostUpdateController::class)->name('admin.post.update'); - Route::delete('/{post}', AdminPostDeleteController::class)->name('admin.post.delete'); - }); - Route::prefix('user')->group(function () { - Route::get('/', AdminUserIndexController::class)->name('admin.user.index'); - Route::get('/create', AdminUserCreateController::class)->name('admin.user.create'); - Route::post('/', AdminUserStoreController::class)->name('admin.user.store'); - Route::get('/{user}', AdminUserShowController::class)->name('admin.user.show'); - Route::get('/{user}/edit', AdminUserEditController::class)->name('admin.user.edit'); - Route::patch('/{user}', AdminUserUpdateController::class)->name('admin.user.update'); - Route::delete('/{user}', AdminUserDeleteController::class)->name('admin.user.delete'); + Route::get('/', AdminMainIndexController::class)->name('main.index'); }); + Route::resource('category', AdminCategoryController::class); + Route::resource('tag', AdminTagController::class); + Route::resource('post', AdminPostController::class); + Route::resource('user', AdminUserController::class); });