From 8974721c9caf499cf091d6c9f597876a2c51035a Mon Sep 17 00:00:00 2001 From: Kamil Niemczycki Date: Fri, 28 Jul 2023 15:43:53 +0200 Subject: [PATCH] - add category management --- .../Dashboard/CategoryController.php | 32 ++++---- .../Dashboard/ProjectController.php | 2 + app/Repository/CategoryRepository.php | 20 ++--- .../js/Pages/Categories/ConfirmDelete.vue | 37 +++++++++ resources/js/Pages/Categories/Create.vue | 64 +++++++++++++++ resources/js/Pages/Categories/Edit.vue | 78 +++++++++++++++++++ resources/js/Share/CategoriesList.vue | 25 +++++- resources/js/Share/Components/Input.vue | 12 +-- resources/js/Share/ProjectsList.vue | 6 +- 9 files changed, 235 insertions(+), 41 deletions(-) create mode 100644 resources/js/Pages/Categories/ConfirmDelete.vue create mode 100644 resources/js/Pages/Categories/Create.vue create mode 100644 resources/js/Pages/Categories/Edit.vue diff --git a/app/Http/Controllers/Dashboard/CategoryController.php b/app/Http/Controllers/Dashboard/CategoryController.php index b26f160..bccc10c 100644 --- a/app/Http/Controllers/Dashboard/CategoryController.php +++ b/app/Http/Controllers/Dashboard/CategoryController.php @@ -9,6 +9,7 @@ use App\Models\Category; use App\Repository\Interfaces\CategoryRepository; use Illuminate\Http\RedirectResponse; use Illuminate\View\View; +use Inertia\Response as InertiaResponse; class CategoryController { @@ -21,42 +22,35 @@ class CategoryController { $validate = $request->validated(); if ($this->categoryRepository->update($category, $validate)) { - return back()->with('message', 'Zaktualizowano kategorię!'); + return back() + ->with('success', 'Zaktualizowano kategorię!'); } - return back()->withError(['message_error', 'Wystąpił błąd podczas aktualizacji!']); + return back() + ->with(['error', 'Wystąpił błąd podczas aktualizacji!']); } public function store(CategoryRequest $request) { - // $validate = $request->validated(); - // if ($category = $this->categoryRepository->create($validate)) { - // return redirect() - // ->route('admin.category.update', compact('category')) - // ->with('message', 'Utworzono kategorię!'); - // } - - // return back()->withError(['message_error', 'Wystąpił błąd podczas tworzenia!']); - $category = $this->categoryRepository->create($request->validated()); return redirect() ->route('admin.category.update', compact('category')) ->with('message', 'Utworzono kategorię!'); } - public function create(): View + public function create(): InertiaResponse { - return view('dashboard.categories.create'); + return inertia('Categories/Create'); } - public function edit(Category $category): View + public function edit(Category $category): InertiaResponse { - return view('dashboard.categories.edit', compact('category')); + return inertia('Categories/Edit', compact('category')); } - public function delete(Category $category): View + public function delete(Category $category): InertiaResponse { - return view('dashboard.categories.delete', compact('category')); + return inertia('Categories/ConfirmDelete', compact('category')); } public function destroy(Category $category): RedirectResponse @@ -64,7 +58,9 @@ class CategoryController $name = $category->name; $category->delete(); - return redirect()->route('admin.home')->with('message', 'Usunięto kategorię "'. $name .'"'); + return redirect() + ->route('admin.home') + ->with('info', 'Usunięto kategorię "'. $name .'"'); } } diff --git a/app/Http/Controllers/Dashboard/ProjectController.php b/app/Http/Controllers/Dashboard/ProjectController.php index 307b78d..c4b7cf5 100644 --- a/app/Http/Controllers/Dashboard/ProjectController.php +++ b/app/Http/Controllers/Dashboard/ProjectController.php @@ -1,5 +1,7 @@ parseToArray($data); - if (!$category->default && isset($data['default']) && $data['default'] === true) + if (!$category->default && $data['default'] === true) $this->unsetDefault(); return $category @@ -58,7 +58,7 @@ class CategoryRepository implements CategoryRepositoryInterface public function create(array $data = []): Category { $data = $this->parseToArray($data); - if (isset($data['default']) && $data['default'] === true) + if ($data['default'] === true) $this->unsetDefault(); return $this->category @@ -85,18 +85,12 @@ class CategoryRepository implements CategoryRepositoryInterface if (isset($data['priority']) && !is_integer($data['priority'])) $toSave['priority'] = (int)$data['priority']; - if ( - isset($data['default']) && - in_array($data['default'], ['yes', 'on', 1, true]) - ) $toSave['default'] = true; - else $toSave['default'] = false; + $toSave['default'] = $data['default']; - if ( - (isset($toSave['default']) && $toSave['default'] === true) || - (isset($data['visible']) && - in_array($data['visible'], ['yes', 'on', 1, true])) - ) $toSave['visible'] = true; - else $toSave['visible'] = false; + if ($toSave['default'] === true) + $toSave['visible'] = true; + else + $toSave['visible'] = $data['visible']; return $toSave; } diff --git a/resources/js/Pages/Categories/ConfirmDelete.vue b/resources/js/Pages/Categories/ConfirmDelete.vue new file mode 100644 index 0000000..fae0ba0 --- /dev/null +++ b/resources/js/Pages/Categories/ConfirmDelete.vue @@ -0,0 +1,37 @@ + + + diff --git a/resources/js/Pages/Categories/Create.vue b/resources/js/Pages/Categories/Create.vue new file mode 100644 index 0000000..a93c504 --- /dev/null +++ b/resources/js/Pages/Categories/Create.vue @@ -0,0 +1,64 @@ + + + diff --git a/resources/js/Pages/Categories/Edit.vue b/resources/js/Pages/Categories/Edit.vue new file mode 100644 index 0000000..f68a109 --- /dev/null +++ b/resources/js/Pages/Categories/Edit.vue @@ -0,0 +1,78 @@ + + + diff --git a/resources/js/Share/CategoriesList.vue b/resources/js/Share/CategoriesList.vue index e5344c4..c0fac8f 100644 --- a/resources/js/Share/CategoriesList.vue +++ b/resources/js/Share/CategoriesList.vue @@ -9,16 +9,33 @@ defineProps({