From 4a5110ae535ed07789a66ad467ff7d76abfceb02 Mon Sep 17 00:00:00 2001 From: Joseph Cohen Date: Mon, 24 Aug 2015 14:38:10 -0500 Subject: [PATCH] Finish add and remove components via commands --- .../Component/AddComponentCommand.php | 90 +++++++++++++++++++ .../Component/RemoveComponentCommand.php | 36 ++++++++ .../Component/ComponentWasAddedEvent.php | 2 +- .../Component/ComponentWasRemovedEvent.php | 2 +- ...ler.php => AddComponentCommandHandler.php} | 2 +- ....php => RemoveComponentCommandHandler.php} | 4 +- .../Controllers/Api/ComponentController.php | 18 +++- .../Dashboard/ComponentController.php | 9 +- 8 files changed, 152 insertions(+), 11 deletions(-) create mode 100644 app/Commands/Component/AddComponentCommand.php create mode 100644 app/Commands/Component/RemoveComponentCommand.php rename app/Handlers/Commands/Component/{AddComponentHandler.php => AddComponentCommandHandler.php} (97%) rename app/Handlers/Commands/Component/{RemoveComponentHandler.php => RemoveComponentCommandHandler.php} (88%) diff --git a/app/Commands/Component/AddComponentCommand.php b/app/Commands/Component/AddComponentCommand.php new file mode 100644 index 00000000..0dc850ac --- /dev/null +++ b/app/Commands/Component/AddComponentCommand.php @@ -0,0 +1,90 @@ + 'required|string', + 'status' => 'required|integer', + 'link' => 'url', + ]; + + /** + * Create a new add metric command instance. + * + * @param string $name + * @param string $description + * @param int $status + * @param string $link + * @param int $order + * @param int $group_id + * + * @return void + */ + public function __construct($name, $description, $status, $link, $order, $group_id) + { + $this->name = $name; + $this->description = $description; + $this->status = (int) $status; + $this->link = $link; + $this->order = $order; + $this->group_id = $group_id; + } +} diff --git a/app/Commands/Component/RemoveComponentCommand.php b/app/Commands/Component/RemoveComponentCommand.php new file mode 100644 index 00000000..80dbe1ae --- /dev/null +++ b/app/Commands/Component/RemoveComponentCommand.php @@ -0,0 +1,36 @@ +component = $component; + } +} diff --git a/app/Events/Component/ComponentWasAddedEvent.php b/app/Events/Component/ComponentWasAddedEvent.php index d882e0a8..5629642d 100644 --- a/app/Events/Component/ComponentWasAddedEvent.php +++ b/app/Events/Component/ComponentWasAddedEvent.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace CachetHQ\Cachet\Events\Metric; +namespace CachetHQ\Cachet\Events\Component; use CachetHQ\Cachet\Models\Component; diff --git a/app/Events/Component/ComponentWasRemovedEvent.php b/app/Events/Component/ComponentWasRemovedEvent.php index 56a666f2..e2280f21 100644 --- a/app/Events/Component/ComponentWasRemovedEvent.php +++ b/app/Events/Component/ComponentWasRemovedEvent.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace CachetHQ\Cachet\Events\Metric; +namespace CachetHQ\Cachet\Events\Component; use CachetHQ\Cachet\Models\Component; diff --git a/app/Handlers/Commands/Component/AddComponentHandler.php b/app/Handlers/Commands/Component/AddComponentCommandHandler.php similarity index 97% rename from app/Handlers/Commands/Component/AddComponentHandler.php rename to app/Handlers/Commands/Component/AddComponentCommandHandler.php index 7c2988cd..d160aabf 100644 --- a/app/Handlers/Commands/Component/AddComponentHandler.php +++ b/app/Handlers/Commands/Component/AddComponentCommandHandler.php @@ -15,7 +15,7 @@ use CachetHQ\Cachet\Commands\Component\AddComponentCommand; use CachetHQ\Cachet\Events\Component\ComponentWasAddedEvent; use CachetHQ\Cachet\Models\Component; -class AddComponentHandler +class AddComponentCommandHandler { /** * Handle the add component command. diff --git a/app/Handlers/Commands/Component/RemoveComponentHandler.php b/app/Handlers/Commands/Component/RemoveComponentCommandHandler.php similarity index 88% rename from app/Handlers/Commands/Component/RemoveComponentHandler.php rename to app/Handlers/Commands/Component/RemoveComponentCommandHandler.php index 2e82f61f..da74fd36 100644 --- a/app/Handlers/Commands/Component/RemoveComponentHandler.php +++ b/app/Handlers/Commands/Component/RemoveComponentCommandHandler.php @@ -12,10 +12,10 @@ namespace CachetHQ\Cachet\Handlers\Commands\Component; use CachetHQ\Cachet\Commands\Component\RemoveComponentCommand; -use CachetHQ\Cachet\Events\Component\ComponentWasAddedEvent; +use CachetHQ\Cachet\Events\Component\ComponentWasRemovedEvent; use CachetHQ\Cachet\Models\Component; -class RemoveComponentHandler +class RemoveComponentCommandHandler { /** * Handle the remove component command. diff --git a/app/Http/Controllers/Api/ComponentController.php b/app/Http/Controllers/Api/ComponentController.php index 959d2e4f..9aad79a5 100644 --- a/app/Http/Controllers/Api/ComponentController.php +++ b/app/Http/Controllers/Api/ComponentController.php @@ -11,16 +11,21 @@ namespace CachetHQ\Cachet\Http\Controllers\Api; +use CachetHQ\Cachet\Commands\Component\AddComponentCommand; +use CachetHQ\Cachet\Commands\Component\RemoveComponentCommand; use CachetHQ\Cachet\Models\Component; use CachetHQ\Cachet\Models\Tag; use Exception; use GrahamCampbell\Binput\Facades\Binput; use Illuminate\Contracts\Auth\Guard; +use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Http\Request; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; class ComponentController extends AbstractApiController { + use DispatchesJobs; + /** * Get all components. * @@ -56,10 +61,15 @@ class ComponentController extends AbstractApiController */ public function postComponents(Guard $auth) { - $componentData = Binput::except('tags'); - try { - $component = Component::create($componentData); + $component = $this->dispatch(new AddComponentCommand( + Binput::get('name'), + Binput::get('description'), + Binput::get('status'), + Binput::get('link'), + Binput::get('order'), + Binput::get('group_id') + )); } catch (Exception $e) { throw new BadRequestHttpException(); } @@ -119,7 +129,7 @@ class ComponentController extends AbstractApiController */ public function deleteComponent(Component $component) { - $component->delete(); + $this->dispatch(new RemoveComponentCommand($component)); return $this->noContent(); } diff --git a/app/Http/Controllers/Dashboard/ComponentController.php b/app/Http/Controllers/Dashboard/ComponentController.php index 8af44d95..529c3c20 100644 --- a/app/Http/Controllers/Dashboard/ComponentController.php +++ b/app/Http/Controllers/Dashboard/ComponentController.php @@ -11,17 +11,22 @@ namespace CachetHQ\Cachet\Http\Controllers\Dashboard; +use CachetHQ\Cachet\Commands\Component\AddComponentCommand; +use CachetHQ\Cachet\Commands\Component\RemoveComponentCommand; use AltThree\Validator\ValidationException; use CachetHQ\Cachet\Models\Component; use CachetHQ\Cachet\Models\ComponentGroup; use CachetHQ\Cachet\Models\Tag; use GrahamCampbell\Binput\Facades\Binput; +use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\Redirect; use Illuminate\Support\Facades\View; class ComponentController extends Controller { + use DispatchesJobs; + protected $subMenu = []; public function __construct() @@ -157,7 +162,7 @@ class ComponentController extends Controller $tags = array_pull($_component, 'tags'); try { - $component = Component::create($_component); + $component = $this->dispatchFromArray(AddComponentCommand::class, Binput::get('component')); } catch (ValidationException $e) { return Redirect::route('dashboard.components.add') ->withInput(Binput::all()) @@ -188,7 +193,7 @@ class ComponentController extends Controller */ public function deleteComponentAction(Component $component) { - $component->delete(); + $this->dispatch(new RemoveComponentCommand($component)); return Redirect::route('dashboard.components.index'); }