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 @@
- +