From be080a10efb933d8ff04d69b69fe9701dd81b63f Mon Sep 17 00:00:00 2001 From: James Brooks Date: Wed, 26 Aug 2015 13:36:10 +0100 Subject: [PATCH] Added commands to delete component group (also fixes bug in API) --- .../RemoveComponentGroupCommand.php | 36 +++++++++++++++++ .../ComponentGroupWasAddedEvent.php | 34 ++++++++++++++++ .../ComponentGroupWasRemovedEvent.php | 34 ++++++++++++++++ .../RemoveComponentGroupCommandHandler.php | 40 +++++++++++++++++++ .../Api/ComponentGroupController.php | 6 ++- .../Dashboard/ComponentController.php | 7 +--- 6 files changed, 151 insertions(+), 6 deletions(-) create mode 100644 app/Commands/ComponentGroup/RemoveComponentGroupCommand.php create mode 100644 app/Events/ComponentGroup/ComponentGroupWasAddedEvent.php create mode 100644 app/Events/ComponentGroup/ComponentGroupWasRemovedEvent.php create mode 100644 app/Handlers/Commands/ComponentGroup/RemoveComponentGroupCommandHandler.php diff --git a/app/Commands/ComponentGroup/RemoveComponentGroupCommand.php b/app/Commands/ComponentGroup/RemoveComponentGroupCommand.php new file mode 100644 index 00000000..54a212de --- /dev/null +++ b/app/Commands/ComponentGroup/RemoveComponentGroupCommand.php @@ -0,0 +1,36 @@ +group = $group; + } +} diff --git a/app/Events/ComponentGroup/ComponentGroupWasAddedEvent.php b/app/Events/ComponentGroup/ComponentGroupWasAddedEvent.php new file mode 100644 index 00000000..d76174d0 --- /dev/null +++ b/app/Events/ComponentGroup/ComponentGroupWasAddedEvent.php @@ -0,0 +1,34 @@ +group = $group; + } +} diff --git a/app/Events/ComponentGroup/ComponentGroupWasRemovedEvent.php b/app/Events/ComponentGroup/ComponentGroupWasRemovedEvent.php new file mode 100644 index 00000000..07913871 --- /dev/null +++ b/app/Events/ComponentGroup/ComponentGroupWasRemovedEvent.php @@ -0,0 +1,34 @@ +group = $group; + } +} diff --git a/app/Handlers/Commands/ComponentGroup/RemoveComponentGroupCommandHandler.php b/app/Handlers/Commands/ComponentGroup/RemoveComponentGroupCommandHandler.php new file mode 100644 index 00000000..669e7828 --- /dev/null +++ b/app/Handlers/Commands/ComponentGroup/RemoveComponentGroupCommandHandler.php @@ -0,0 +1,40 @@ +group; + + event(new ComponentGroupWasRemovedEvent($group)); + + // Remove the group id from all component. + $group->components->map(function ($component) { + $component->update(['group_id' => 0]); + }); + + $group->delete(); + } +} diff --git a/app/Http/Controllers/Api/ComponentGroupController.php b/app/Http/Controllers/Api/ComponentGroupController.php index c8d8a7be..2a871047 100644 --- a/app/Http/Controllers/Api/ComponentGroupController.php +++ b/app/Http/Controllers/Api/ComponentGroupController.php @@ -11,14 +11,18 @@ namespace CachetHQ\Cachet\Http\Controllers\Api; +use CachetHQ\Cachet\Commands\ComponentGroup\RemoveComponentGroupCommand; use CachetHQ\Cachet\Models\ComponentGroup; use Exception; use GrahamCampbell\Binput\Facades\Binput; +use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Http\Request; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; class ComponentGroupController extends AbstractApiController { + use DispatchesJobs; + /** * Get all groups. * @@ -93,7 +97,7 @@ class ComponentGroupController extends AbstractApiController */ public function deleteGroup(ComponentGroup $group) { - $group->delete(); + $this->dispatch(new RemoveComponentGroupCommand($group)); return $this->noContent(); } diff --git a/app/Http/Controllers/Dashboard/ComponentController.php b/app/Http/Controllers/Dashboard/ComponentController.php index a63ce00a..49d52fbf 100644 --- a/app/Http/Controllers/Dashboard/ComponentController.php +++ b/app/Http/Controllers/Dashboard/ComponentController.php @@ -14,6 +14,7 @@ namespace CachetHQ\Cachet\Http\Controllers\Dashboard; use AltThree\Validator\ValidationException; use CachetHQ\Cachet\Commands\Component\AddComponentCommand; use CachetHQ\Cachet\Commands\Component\RemoveComponentCommand; +use CachetHQ\Cachet\Commands\ComponentGroup\RemoveComponentGroupCommand; use CachetHQ\Cachet\Models\Component; use CachetHQ\Cachet\Models\ComponentGroup; use CachetHQ\Cachet\Models\Tag; @@ -207,11 +208,7 @@ class ComponentController extends Controller */ public function deleteComponentGroupAction(ComponentGroup $group) { - $group->components->map(function ($component) { - $component->update(['group_id' => 0]); - }); - - $group->delete(); + $this->dispatch(new RemoveComponentGroupCommand($group)); return Redirect::route('dashboard.components.index'); }