From 86a44fb3e51f4544519656bd5be914533c1b7954 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Wed, 7 Dec 2022 11:43:38 +0300 Subject: [PATCH] close #2799 Fixed: Company delete can not delete sub categories --- app/Events/Setting/CategoryCreated.php | 24 ++++++++++++++ app/Events/Setting/CategoryCreating.php | 22 +++++++++++++ app/Events/Setting/CategoryDeleted.php | 20 ++++++++++++ app/Events/Setting/CategoryDeleting.php | 20 ++++++++++++ app/Events/Setting/CategoryUpdated.php | 24 ++++++++++++++ app/Events/Setting/CategoryUpdating.php | 24 ++++++++++++++ app/Jobs/Setting/CreateCategory.php | 6 ++++ app/Jobs/Setting/DeleteCategory.php | 6 ++++ app/Jobs/Setting/UpdateCategory.php | 6 ++++ .../DeleteCategoryDeletedSubCategories.php | 31 +++++++++++++++++++ app/Observers/Category.php | 26 ---------------- app/Providers/Event.php | 3 ++ app/Providers/Observer.php | 2 -- 13 files changed, 186 insertions(+), 28 deletions(-) create mode 100644 app/Events/Setting/CategoryCreated.php create mode 100644 app/Events/Setting/CategoryCreating.php create mode 100644 app/Events/Setting/CategoryDeleted.php create mode 100644 app/Events/Setting/CategoryDeleting.php create mode 100644 app/Events/Setting/CategoryUpdated.php create mode 100644 app/Events/Setting/CategoryUpdating.php create mode 100644 app/Listeners/Setting/DeleteCategoryDeletedSubCategories.php delete mode 100644 app/Observers/Category.php diff --git a/app/Events/Setting/CategoryCreated.php b/app/Events/Setting/CategoryCreated.php new file mode 100644 index 000000000..17fb4b9fa --- /dev/null +++ b/app/Events/Setting/CategoryCreated.php @@ -0,0 +1,24 @@ +category = $category; + $this->request = $request; + } +} diff --git a/app/Events/Setting/CategoryCreating.php b/app/Events/Setting/CategoryCreating.php new file mode 100644 index 000000000..a71fe3214 --- /dev/null +++ b/app/Events/Setting/CategoryCreating.php @@ -0,0 +1,22 @@ +request = $request; + } +} diff --git a/app/Events/Setting/CategoryDeleted.php b/app/Events/Setting/CategoryDeleted.php new file mode 100644 index 000000000..ff25aeeaf --- /dev/null +++ b/app/Events/Setting/CategoryDeleted.php @@ -0,0 +1,20 @@ +category = $category; + } +} diff --git a/app/Events/Setting/CategoryDeleting.php b/app/Events/Setting/CategoryDeleting.php new file mode 100644 index 000000000..479f23a45 --- /dev/null +++ b/app/Events/Setting/CategoryDeleting.php @@ -0,0 +1,20 @@ +category = $category; + } +} diff --git a/app/Events/Setting/CategoryUpdated.php b/app/Events/Setting/CategoryUpdated.php new file mode 100644 index 000000000..7262f3ec4 --- /dev/null +++ b/app/Events/Setting/CategoryUpdated.php @@ -0,0 +1,24 @@ +category = $category; + $this->request = $request; + } +} diff --git a/app/Events/Setting/CategoryUpdating.php b/app/Events/Setting/CategoryUpdating.php new file mode 100644 index 000000000..20a644240 --- /dev/null +++ b/app/Events/Setting/CategoryUpdating.php @@ -0,0 +1,24 @@ +category = $category; + $this->request = $request; + } +} diff --git a/app/Jobs/Setting/CreateCategory.php b/app/Jobs/Setting/CreateCategory.php index 02dc0180d..2ea0aa415 100644 --- a/app/Jobs/Setting/CreateCategory.php +++ b/app/Jobs/Setting/CreateCategory.php @@ -3,6 +3,8 @@ namespace App\Jobs\Setting; use App\Abstracts\Job; +use App\Events\Setting\CategoryCreated; +use App\Events\Setting\CategoryCreating; use App\Interfaces\Job\HasOwner; use App\Interfaces\Job\HasSource; use App\Interfaces\Job\ShouldCreate; @@ -12,10 +14,14 @@ class CreateCategory extends Job implements HasOwner, HasSource, ShouldCreate { public function handle(): Category { + event(new CategoryCreating($this->request)); + \DB::transaction(function () { $this->model = Category::create($this->request->all()); }); + event(new CategoryCreated($this->model, $this->request)); + return $this->model; } } diff --git a/app/Jobs/Setting/DeleteCategory.php b/app/Jobs/Setting/DeleteCategory.php index e0899be40..24e855f33 100644 --- a/app/Jobs/Setting/DeleteCategory.php +++ b/app/Jobs/Setting/DeleteCategory.php @@ -3,6 +3,8 @@ namespace App\Jobs\Setting; use App\Abstracts\Job; +use App\Events\Setting\CategoryDeleted; +use App\Events\Setting\CategoryDeleting; use App\Exceptions\Settings\LastCategoryDelete; use App\Interfaces\Job\ShouldDelete; use App\Models\Setting\Category; @@ -13,10 +15,14 @@ class DeleteCategory extends Job implements ShouldDelete { $this->authorize(); + event(new CategoryDeleting($this->model)); + \DB::transaction(function () { $this->model->delete(); }); + event(new CategoryDeleted($this->model)); + return true; } diff --git a/app/Jobs/Setting/UpdateCategory.php b/app/Jobs/Setting/UpdateCategory.php index 8c1eefade..7c13f41f9 100644 --- a/app/Jobs/Setting/UpdateCategory.php +++ b/app/Jobs/Setting/UpdateCategory.php @@ -3,6 +3,8 @@ namespace App\Jobs\Setting; use App\Abstracts\Job; +use App\Events\Setting\CategoryUpdated; +use App\Events\Setting\CategoryUpdating; use App\Interfaces\Job\ShouldUpdate; use App\Models\Setting\Category; @@ -12,10 +14,14 @@ class UpdateCategory extends Job implements ShouldUpdate { $this->authorize(); + event(new CategoryUpdating($this->model, $this->request)); + \DB::transaction(function () { $this->model->update($this->request->all()); }); + event(new CategoryUpdated($this->model, $this->request)); + return $this->model; } diff --git a/app/Listeners/Setting/DeleteCategoryDeletedSubCategories.php b/app/Listeners/Setting/DeleteCategoryDeletedSubCategories.php new file mode 100644 index 000000000..30be00ea0 --- /dev/null +++ b/app/Listeners/Setting/DeleteCategoryDeletedSubCategories.php @@ -0,0 +1,31 @@ +category; + + if (empty($category->sub_categories)) { + return; + } + + foreach ($category->sub_categories as $sub_category) { + $this->dispatch(new DeleteCategory($sub_category)); + } + } +} diff --git a/app/Observers/Category.php b/app/Observers/Category.php deleted file mode 100644 index 432120bf9..000000000 --- a/app/Observers/Category.php +++ /dev/null @@ -1,26 +0,0 @@ -sub_categories as $sub_category) { - $this->dispatch(new DeleteCategory($sub_category)); - } - } -} diff --git a/app/Providers/Event.php b/app/Providers/Event.php index 5b4a64535..498fe7a85 100644 --- a/app/Providers/Event.php +++ b/app/Providers/Event.php @@ -100,6 +100,9 @@ class Event extends Provider 'App\Events\Banking\TransactionCreated' => [ 'App\Listeners\Banking\IncreaseNextTransactionNumber', ], + 'App\Events\Setting\CategoryDeleted' => [ + 'App\Listeners\Setting\DeleteCategoryDeletedSubCategories', + ], ]; /** diff --git a/app/Providers/Observer.php b/app/Providers/Observer.php index dd291bfd8..27af5bdce 100644 --- a/app/Providers/Observer.php +++ b/app/Providers/Observer.php @@ -3,7 +3,6 @@ namespace App\Providers; use App\Models\Banking\Transaction; -use App\Models\Setting\Category; use Illuminate\Support\ServiceProvider as Provider; class Observer extends Provider @@ -26,6 +25,5 @@ class Observer extends Provider public function boot() { Transaction::observe('App\Observers\Transaction'); - Category::observe('App\Observers\Category'); } }