From d4c1b23b3f7660d3d18738694cd7c79a26c48d6c Mon Sep 17 00:00:00 2001 From: James Brooks Date: Fri, 18 Sep 2015 15:26:34 +0100 Subject: [PATCH] Added UpdateComponentGroupCommand --- .../UpdateComponentGroupCommand.php | 64 +++++++++++++++++++ .../ComponentGroupWasUpdatedEvent.php | 34 ++++++++++ .../UpdateComponentGroupCommandHandler.php | 39 +++++++++++ .../Api/ComponentGroupController.php | 7 +- .../Dashboard/ComponentController.php | 13 ++-- .../components/groups/edit.blade.php | 2 +- 6 files changed, 152 insertions(+), 7 deletions(-) create mode 100644 app/Commands/ComponentGroup/UpdateComponentGroupCommand.php create mode 100644 app/Events/ComponentGroup/ComponentGroupWasUpdatedEvent.php create mode 100644 app/Handlers/Commands/ComponentGroup/UpdateComponentGroupCommandHandler.php diff --git a/app/Commands/ComponentGroup/UpdateComponentGroupCommand.php b/app/Commands/ComponentGroup/UpdateComponentGroupCommand.php new file mode 100644 index 00000000..5f81c7ad --- /dev/null +++ b/app/Commands/ComponentGroup/UpdateComponentGroupCommand.php @@ -0,0 +1,64 @@ + 'string', + 'order' => 'integer', + ]; + + /** + * Create a add component group command instance. + * + * @param \CachetHQ\Cachet\Models\ComponentGroup $group + * @param string $name + * @param int $order + * + * @return void + */ + public function __construct(ComponentGroup $group, $name, $order) + { + $this->group = $group; + $this->name = $name; + $this->order = (int) $order; + } +} diff --git a/app/Events/ComponentGroup/ComponentGroupWasUpdatedEvent.php b/app/Events/ComponentGroup/ComponentGroupWasUpdatedEvent.php new file mode 100644 index 00000000..400444d9 --- /dev/null +++ b/app/Events/ComponentGroup/ComponentGroupWasUpdatedEvent.php @@ -0,0 +1,34 @@ +group = $group; + } +} diff --git a/app/Handlers/Commands/ComponentGroup/UpdateComponentGroupCommandHandler.php b/app/Handlers/Commands/ComponentGroup/UpdateComponentGroupCommandHandler.php new file mode 100644 index 00000000..98abef4a --- /dev/null +++ b/app/Handlers/Commands/ComponentGroup/UpdateComponentGroupCommandHandler.php @@ -0,0 +1,39 @@ +group; + $group->update([ + 'name' => $command->name, + 'order' => $command->order, + ]); + + event(new ComponentGroupWasUpdatedEvent($group)); + + return $group; + } +} diff --git a/app/Http/Controllers/Api/ComponentGroupController.php b/app/Http/Controllers/Api/ComponentGroupController.php index dcf691a3..596b8785 100644 --- a/app/Http/Controllers/Api/ComponentGroupController.php +++ b/app/Http/Controllers/Api/ComponentGroupController.php @@ -13,6 +13,7 @@ namespace CachetHQ\Cachet\Http\Controllers\Api; use CachetHQ\Cachet\Commands\ComponentGroup\AddComponentGroupCommand; use CachetHQ\Cachet\Commands\ComponentGroup\RemoveComponentGroupCommand; +use CachetHQ\Cachet\Commands\ComponentGroup\UpdateComponentGroupCommand; use CachetHQ\Cachet\Models\ComponentGroup; use Exception; use GrahamCampbell\Binput\Facades\Binput; @@ -81,7 +82,11 @@ class ComponentGroupController extends AbstractApiController $groupData = array_filter(Binput::only(['name', 'order'])); try { - $group->update($groupData); + $group = $this->dispatch(new UpdateComponentGroupCommand( + $group, + Binput::get('name'), + Binput::get('order', 0) + )); } catch (Exception $e) { throw new BadRequestHttpException(); } diff --git a/app/Http/Controllers/Dashboard/ComponentController.php b/app/Http/Controllers/Dashboard/ComponentController.php index aa2c739d..5691edae 100644 --- a/app/Http/Controllers/Dashboard/ComponentController.php +++ b/app/Http/Controllers/Dashboard/ComponentController.php @@ -17,6 +17,7 @@ use CachetHQ\Cachet\Commands\Component\RemoveComponentCommand; use CachetHQ\Cachet\Commands\Component\UpdateComponentCommand; use CachetHQ\Cachet\Commands\ComponentGroup\AddComponentGroupCommand; use CachetHQ\Cachet\Commands\ComponentGroup\RemoveComponentGroupCommand; +use CachetHQ\Cachet\Commands\ComponentGroup\UpdateComponentGroupCommand; use CachetHQ\Cachet\Models\Component; use CachetHQ\Cachet\Models\ComponentGroup; use CachetHQ\Cachet\Models\Tag; @@ -272,18 +273,20 @@ class ComponentController extends Controller */ public function updateComponentGroupAction(ComponentGroup $group) { - $groupData = Binput::get('group'); - try { - $group->update($groupData); + $group = $this->dispatch(new UpdateComponentGroupCommand( + $group, + Binput::get('name'), + Binput::get('order', 0) + )); } catch (ValidationException $e) { - return Redirect::route('dashboard.components.group.edit', ['id' => $group->id]) + return Redirect::route('dashboard.components.groups.edit', ['id' => $group->id]) ->withInput(Binput::all()) ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.components.groups.edit.failure'))) ->withErrors($e->getMessageBag()); } - return Redirect::route('dashboard.components.group.edit', ['id' => $group->id]) + return Redirect::route('dashboard.components.groups.edit', ['id' => $group->id]) ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.components.groups.edit.success'))); } } diff --git a/resources/views/dashboard/components/groups/edit.blade.php b/resources/views/dashboard/components/groups/edit.blade.php index 114ff5e3..3c128a44 100644 --- a/resources/views/dashboard/components/groups/edit.blade.php +++ b/resources/views/dashboard/components/groups/edit.blade.php @@ -19,7 +19,7 @@
- +