From 05322c3c42a120f1845cd068098170560fa6f520 Mon Sep 17 00:00:00 2001 From: YasserElgammal Date: Mon, 16 Oct 2023 00:27:57 +0300 Subject: [PATCH] Refactor Admin Logic --- .../Controllers/Admin/CategoryController.php | 29 +++++------ app/Http/Controllers/Admin/PageController.php | 52 ++++++++----------- app/Http/Controllers/Admin/PostController.php | 43 +++++++-------- app/Http/Controllers/Admin/RoleController.php | 2 +- .../Controllers/Admin/SettingController.php | 9 ++-- app/Http/Controllers/Admin/TagController.php | 11 ++-- app/Http/Controllers/Admin/UserController.php | 7 ++- app/Observers/PageObserver.php | 19 +++++++ app/Observers/PostObserver.php | 19 +++++++ app/Providers/EventServiceProvider.php | 8 ++- app/Traits/SlugCreater.php | 21 ++++++++ lang/en/admin.php | 19 +++++++ 12 files changed, 154 insertions(+), 85 deletions(-) create mode 100644 app/Observers/PageObserver.php create mode 100644 app/Observers/PostObserver.php create mode 100644 app/Traits/SlugCreater.php create mode 100644 lang/en/admin.php diff --git a/app/Http/Controllers/Admin/CategoryController.php b/app/Http/Controllers/Admin/CategoryController.php index d85f941..1d499f9 100644 --- a/app/Http/Controllers/Admin/CategoryController.php +++ b/app/Http/Controllers/Admin/CategoryController.php @@ -2,14 +2,15 @@ namespace App\Http\Controllers\Admin; +use App\Traits\SlugCreater; use App\Http\Controllers\Controller; use App\Http\Requests\Admin\CategoryRequest; use App\Models\Category; use Illuminate\Http\Request; -use Illuminate\Support\Str; class CategoryController extends Controller { + use SlugCreater; /** * Display a listing of the resource. * @@ -17,7 +18,8 @@ class CategoryController extends Controller */ public function index() { - $categories = Category::with('user')->get(); + $categories = Category::with('user:id,name')->get(); + return view('admin.category.index', compact('categories')); } @@ -39,10 +41,9 @@ public function create() */ public function store(CategoryRequest $request) { - $validate = $request->validated(); - Category::create($validate); + Category::create($request->validated()); - return to_route('admin.category.index')->with('message', 'Category Created'); + return to_route('admin.category.index')->with('message', trans('admin.category_created')); } /** @@ -76,10 +77,9 @@ public function edit(Category $category) */ public function update(CategoryRequest $request, Category $category) { - $vaildated = $request->validated(); - $category->update($vaildated); + $category->update($request->validated()); - return to_route('admin.category.index')->with('message', 'Category Updated'); + return to_route('admin.category.index')->with('message', trans('admin.category_updated')); } /** @@ -91,17 +91,14 @@ public function update(CategoryRequest $request, Category $category) public function destroy(Category $category) { $category->delete(); - return to_route('admin.category.index')->with('message', 'Category Deleted !'); + + return to_route('admin.category.index')->with('message', trans('admin.category_deleted')); } public function getSlug(Request $request) { - $slug = str($request->name)->slug(); - if (Category::where('slug', $slug)->exists()) { - $slug = $slug . '-' . Str::random(2); - return response()->json(['slug' => $slug]); - } else { - return response()->json(['slug' => $slug]); - } + $slug = $this->createSlug($request, Category::class); + + return response()->json(['slug' => $slug]); } } diff --git a/app/Http/Controllers/Admin/PageController.php b/app/Http/Controllers/Admin/PageController.php index 7d76b71..b1aa9cc 100644 --- a/app/Http/Controllers/Admin/PageController.php +++ b/app/Http/Controllers/Admin/PageController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Admin; +use App\Traits\SlugCreater; use App\Http\Controllers\Controller; use App\Http\Requests\Admin\PageRequest; use Illuminate\Http\Request; @@ -10,39 +11,37 @@ class PageController extends Controller { - public function index(){ + use SlugCreater; + + public function index() + { + $pages = Page::with('user:id,name')->orderBy('id', 'desc')->paginate(15); - $pages = Page::with('user')->orderBy('id', 'desc')->paginate(15); return view('admin.page.index', compact('pages')); } - public function create(){ + public function create() + { return view('admin.page.create'); } - public function store(PageRequest $request){ - - $page_data = $request->validated(); - $page_data['user_id'] = auth()->user()->id; - - // dd($page_data); - Page::create($page_data); + public function store(PageRequest $request) + { + Page::create($request->validated()); - return to_route('admin.page.index')->with('message', 'Page Created'); + return to_route('admin.page.index')->with('message', trans('admin.page_created')); } - public function update(PageRequest $request, Page $page){ - - $page_data = $request->validated(); - $page_data['user_id'] = auth()->user()->id; - - $page->update($page_data); + public function update(PageRequest $request, Page $page) + { + $page->update($request->validated()); - return to_route('admin.page.index')->with('message', 'Page Updated'); + return to_route('admin.page.index')->with('message', trans('admin.page_updated')); } - public function edit(Page $page){ + public function edit(Page $page) + { return view('admin.page.edit', compact('page')); } @@ -50,19 +49,14 @@ public function edit(Page $page){ public function destroy(Page $page) { $page->delete(); - return back()->with('message', 'Page Deleted'); + + return back()->with('message', trans('admin.page_deleted')); } public function getSlug(Request $request) { - $slug = str($request->name)->slug(); - if (Page::where('slug', $slug)->exists()) { - $slug = $slug . '-' . Str::random(2); - return response()->json(['slug' => $slug]); - } else { - return response()->json(['slug' => $slug]); - } - } - + $slug = $this->createSlug($request, Page::class); + return response()->json(['slug' => $slug]); + } } diff --git a/app/Http/Controllers/Admin/PostController.php b/app/Http/Controllers/Admin/PostController.php index 5805d2a..0e3dc45 100644 --- a/app/Http/Controllers/Admin/PostController.php +++ b/app/Http/Controllers/Admin/PostController.php @@ -7,12 +7,14 @@ use App\Models\Category; use App\Models\Post; use App\Models\Tag; +use App\Traits\SlugCreater; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; -use Illuminate\Support\Str; class PostController extends Controller { + use SlugCreater; + public function __construct() { $this->authorizeResource(Post::class, 'post'); @@ -24,7 +26,8 @@ public function __construct() */ public function index() { - $posts = Post::with(['category', 'user', 'tags'])->orderByDesc('id')->paginate(15); + $posts = Post::with(['category:id,name', 'user:id,name', 'tags:id,name'])->latest()->paginate(15); + return view('admin.post.index', compact('posts')); } @@ -37,6 +40,7 @@ public function create() { $categories = Category::all(); $tags = Tag::all(); + return view('admin.post.create', compact('categories', 'tags')); } @@ -55,18 +59,13 @@ public function store(PostRequest $request) $post_data['image'] = $get_file; } - $post_data['user_id'] = auth()->user()->id; - - // dd($request->tags); $post = Post::create($post_data); if ($request->has('tags')) { - // $validate_tags = $request->validate(['tags'=> ['exists:tags,id']]); $post->tags()->attach($request->tags); - // dd($post); } - return to_route('admin.post.index')->with('message', 'Post Created'); + return to_route('admin.post.index')->with('message', trans('admin.post_created')); } /** @@ -79,6 +78,7 @@ public function edit(Post $post) { $categories = Category::all(); $tags = Tag::all(); + return view('admin.post.edit', compact('post', 'categories', 'tags')); } @@ -99,11 +99,10 @@ public function update(PostRequest $request, Post $post) $post_data['image'] = $get_file; } - $post_data['user_id'] = auth()->user()->id; $post->update($post_data); $post->tags()->sync($request->tags); - return to_route('admin.post.index')->with('message', 'Post Updated'); + return to_route('admin.post.index')->with('message', trans('admin.post_updated')); } /** @@ -118,18 +117,15 @@ public function destroy(Post $post) Storage::delete($post->image); } $post->delete(); - return back()->with('message', 'Post Deleted'); + + return back()->with('message', trans('admin.post_deleted')); } public function getSlug(Request $request) { - $slug = str($request->title)->slug(); - if (Post::where('slug', $slug)->exists()) { - $slug = $slug . '-' . Str::random(2); - return response()->json(['slug' => $slug]); - } else { - return response()->json(['slug' => $slug]); - } + $slug = $this->createSlug($request, Post::class); + + return response()->json(['slug' => $slug]); } public function search(Request $request) @@ -137,12 +133,11 @@ public function search(Request $request) $searched_text = $request->input('search'); $posts = Post::query()->with(['category', 'user', 'tags']) - ->where('title', 'LIKE', "%{$searched_text}%") - ->orWhere('content', 'LIKE', "%{$searched_text}%") - ->paginate(10); - - // Return the search view with the resluts - return view('admin.post.search', compact('posts')); + ->where('title', 'LIKE', "%{$searched_text}%") + ->orWhere('content', 'LIKE', "%{$searched_text}%") + ->paginate(10); + // Return the search view with the resluts + return view('admin.post.search', compact('posts')); } } diff --git a/app/Http/Controllers/Admin/RoleController.php b/app/Http/Controllers/Admin/RoleController.php index 1af4f3d..b5acf28 100644 --- a/app/Http/Controllers/Admin/RoleController.php +++ b/app/Http/Controllers/Admin/RoleController.php @@ -16,7 +16,7 @@ class RoleController extends Controller public function index() { $roles = Role::all(); + return view('admin.role.index', compact('roles')); } - } diff --git a/app/Http/Controllers/Admin/SettingController.php b/app/Http/Controllers/Admin/SettingController.php index 18cdb07..c06ab84 100644 --- a/app/Http/Controllers/Admin/SettingController.php +++ b/app/Http/Controllers/Admin/SettingController.php @@ -15,11 +15,10 @@ public function index() return view('admin.setting.index', compact('setting')); } - public function update(UpdateSettingRequest $request, Setting $setting){ + public function update(UpdateSettingRequest $request, Setting $setting) + { + $setting->update($request->validated()); - $validated = $request->validated(); - $setting->update($validated); - // dd($validated); - return back()->with('message','Data Updated !'); + return back()->with('message', trans('admin.data_updated')); } } diff --git a/app/Http/Controllers/Admin/TagController.php b/app/Http/Controllers/Admin/TagController.php index d6fd075..c24cfa0 100644 --- a/app/Http/Controllers/Admin/TagController.php +++ b/app/Http/Controllers/Admin/TagController.php @@ -38,10 +38,9 @@ public function create() */ public function store(TagRequest $request) { - $validate = $request->validated(); - Tag::create($validate); + Tag::create($request->validated()); - return to_route('admin.tag.index')->with('message', 'Tag Created'); + return to_route('admin.tag.index')->with('message', trans('admin.tag_created')); } /** @@ -64,10 +63,9 @@ public function edit(Tag $tag) */ public function update(TagRequest $request, Tag $tag) { - $vaildated = $request->validated(); - $tag->update($vaildated); + $tag->update($request->validated()); - return to_route('admin.tag.index')->with('message', 'Tag Updated'); + return to_route('admin.tag.index')->with('message', trans('admin.tag_updated')); } /** @@ -79,6 +77,7 @@ public function update(TagRequest $request, Tag $tag) public function destroy(Tag $tag) { $tag->delete(); + return to_route('admin.tag.index')->with('message', 'Tag Deleted !'); } } diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 92d6aa4..68ba1b7 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -19,6 +19,7 @@ class UserController extends Controller public function index() { $users = User::with('role')->orderBy('id', 'desc')->paginate(15); + return view('admin.user.index', compact('users')); } @@ -31,6 +32,7 @@ public function index() public function edit(User $user) { $roles = Role::all(); + return view('admin.user.edit', compact('user', 'roles')); } @@ -47,7 +49,7 @@ public function update(Request $request, User $user) $user->role_id = $validated['role_id']; $user->update(); - return to_route('admin.user.index')->with('message','Role to user Updated'); + return to_route('admin.user.index')->with('message', trans('admin.role_updated')); } /** @@ -59,6 +61,7 @@ public function update(Request $request, User $user) public function destroy(User $user) { $user->delete(); - return to_route('admin.user.index')->with('message', 'User Deleted !'); + + return to_route('admin.user.index')->with('message', trans('admin.user_deleted')); } } diff --git a/app/Observers/PageObserver.php b/app/Observers/PageObserver.php new file mode 100644 index 0000000..0d4e834 --- /dev/null +++ b/app/Observers/PageObserver.php @@ -0,0 +1,19 @@ +user_id = Auth::id(); + } + + public function updating(Page $page) + { + $page->user_id = Auth::id(); + } +} diff --git a/app/Observers/PostObserver.php b/app/Observers/PostObserver.php new file mode 100644 index 0000000..13c270a --- /dev/null +++ b/app/Observers/PostObserver.php @@ -0,0 +1,19 @@ +user_id = Auth::id(); + } + + public function updating(Post $post) + { + $post->user_id = Auth::id(); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index ab8b2cf..602f00d 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -2,10 +2,13 @@ namespace App\Providers; +use App\Models\Page; +use App\Models\Post; +use App\Observers\PageObserver; +use App\Observers\PostObserver; use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Listeners\SendEmailVerificationNotification; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; -use Illuminate\Support\Facades\Event; class EventServiceProvider extends ServiceProvider { @@ -27,7 +30,8 @@ class EventServiceProvider extends ServiceProvider */ public function boot() { - // + Post::observe(PostObserver::class); + Page::observe(PageObserver::class); } /** diff --git a/app/Traits/SlugCreater.php b/app/Traits/SlugCreater.php new file mode 100644 index 0000000..28a11bb --- /dev/null +++ b/app/Traits/SlugCreater.php @@ -0,0 +1,21 @@ +title : $request->name); + + if ($model::where('slug', $slug)->exists()) { + $slug = $slug . '-' . Str::random(2); + } + + return $slug; + } +} diff --git a/lang/en/admin.php b/lang/en/admin.php new file mode 100644 index 0000000..f793dfa --- /dev/null +++ b/lang/en/admin.php @@ -0,0 +1,19 @@ + 'Category Created !', + 'category_updated' => 'Category Updated !', + 'category_deleted' => 'Category Deleted !', + 'post_created' => 'Post Created !', + 'post_updated' => 'Post Updated !', + 'post_deleted' => 'Post Deleted !', + 'page_created' => 'Page Created !', + 'page_updated' => 'Page Updated !', + 'page_deleted' => 'Page Deleted !', + 'data_updated' => 'Data Deleted !', + 'tag_created' => 'Tag Created !', + 'tag_updated' => 'Tag Updated !', + 'tag_deleted' => 'Tag Deleted !', + 'user_deleted' => 'User Deleted !', + 'role_updated' => 'Role to user Updated !', +];