From 4427d083f96d5e4b65c3a55d1b35465170cebe34 Mon Sep 17 00:00:00 2001 From: James Brooks Date: Sun, 17 Jun 2018 11:58:21 +0100 Subject: [PATCH] Split incident updates out of incident controller --- .../Dashboard/IncidentController.php | 106 ----------- .../Dashboard/IncidentUpdateController.php | 170 ++++++++++++++++++ app/Http/Routes/Dashboard/IncidentRoutes.php | 10 +- 3 files changed, 175 insertions(+), 111 deletions(-) create mode 100644 app/Http/Controllers/Dashboard/IncidentUpdateController.php diff --git a/app/Http/Controllers/Dashboard/IncidentController.php b/app/Http/Controllers/Dashboard/IncidentController.php index cc03457d..4fdbd385 100644 --- a/app/Http/Controllers/Dashboard/IncidentController.php +++ b/app/Http/Controllers/Dashboard/IncidentController.php @@ -15,14 +15,11 @@ use AltThree\Validator\ValidationException; use CachetHQ\Cachet\Bus\Commands\Incident\CreateIncidentCommand; use CachetHQ\Cachet\Bus\Commands\Incident\RemoveIncidentCommand; use CachetHQ\Cachet\Bus\Commands\Incident\UpdateIncidentCommand; -use CachetHQ\Cachet\Bus\Commands\IncidentUpdate\CreateIncidentUpdateCommand; -use CachetHQ\Cachet\Bus\Commands\IncidentUpdate\UpdateIncidentUpdateCommand; use CachetHQ\Cachet\Integrations\Contracts\System; use CachetHQ\Cachet\Models\Component; use CachetHQ\Cachet\Models\ComponentGroup; use CachetHQ\Cachet\Models\Incident; use CachetHQ\Cachet\Models\IncidentTemplate; -use CachetHQ\Cachet\Models\IncidentUpdate; use GrahamCampbell\Binput\Facades\Binput; use Illuminate\Contracts\Auth\Guard; use Illuminate\Routing\Controller; @@ -298,107 +295,4 @@ class IncidentController extends Controller return cachet_redirect('dashboard.templates.edit', ['id' => $template->id]) ->withUpdatedTemplate($template); } - - /** - * Shows the incident update form. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\View\View - */ - public function showIncidentUpdates(Incident $incident) - { - return View::make('dashboard.incidents.updates.index')->withIncident($incident); - } - - /** - * Shows the incident update form. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\View\View - */ - public function showCreateIncidentUpdateAction(Incident $incident) - { - return View::make('dashboard.incidents.updates.add') - ->withIncident($incident) - ->withNotificationsEnabled($this->system->canNotifySubscribers()); - } - - /** - * Creates a new incident update. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\Http\RedirectResponse - */ - public function createIncidentUpdateAction(Incident $incident) - { - try { - $incidentUpdate = dispatch(new CreateIncidentUpdateCommand( - $incident, - Binput::get('status'), - Binput::get('message'), - Binput::get('component_id'), - Binput::get('component_status'), - $this->auth->user() - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.incidents.updates.create', ['id' => $incident->id]) - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.incidents.updates.add.failure'))) - ->withErrors($e->getMessageBag()); - } - - if ($incident->component) { - $incident->component->update(['status' => Binput::get('component_status')]); - } - - return cachet_redirect('dashboard.incidents') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.incidents.updates.success'))); - } - - /** - * Shows the edit incident view. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * @param \CachetHQ\Cachet\Models\IncidentUpdate $incidentUpdate - * - * @return \Illuminate\View\View - */ - public function showEditIncidentUpdateAction(Incident $incident, IncidentUpdate $incidentUpdate) - { - return View::make('dashboard.incidents.updates.edit') - ->withIncident($incident) - ->withUpdate($incidentUpdate) - ->withNotificationsEnabled($this->system->canNotifySubscribers()); - } - - /** - * Edit an incident update. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * @param \CachetHQ\Cachet\Models\IncidentUpdate $incidentUpdate - * - * @return \Illuminate\Http\RedirectResponse - */ - public function editIncidentUpdateAction(Incident $incident, IncidentUpdate $incidentUpdate) - { - try { - $incidentUpdate = dispatch(new UpdateIncidentUpdateCommand( - $incidentUpdate, - Binput::get('status'), - Binput::get('message'), - $this->auth->user() - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.incidents.updates.edit', ['incident' => $incident->id, 'incident_update' => $incidentUpdate->id]) - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.incidents.updates.edit.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.incidents.updates', ['incident' => $incident->id]) - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.incidents.updates.edit.success'))); - } } diff --git a/app/Http/Controllers/Dashboard/IncidentUpdateController.php b/app/Http/Controllers/Dashboard/IncidentUpdateController.php new file mode 100644 index 00000000..043c2b7c --- /dev/null +++ b/app/Http/Controllers/Dashboard/IncidentUpdateController.php @@ -0,0 +1,170 @@ + + */ +class IncidentUpdateController extends Controller +{ + /** + * Stores the sub-sidebar tree list. + * + * @var array + */ + protected $subMenu = []; + + /** + * The guard instance. + * + * @var \Illuminate\Contracts\Auth\Guard + */ + protected $auth; + + /** + * The system instance. + * + * @var \CachetHQ\Cachet\Integrations\Contracts\System + */ + protected $system; + + /** + * Creates a new incident controller instance. + * + * @param \Illuminate\Contracts\Auth\Guard $auth + * + * @return void + */ + public function __construct(Guard $auth, System $system) + { + $this->auth = $auth; + $this->system = $system; + + View::share('sub_title', trans('dashboard.incidents.title')); + } + + /** + * Shows the incident update form. + * + * @param \CachetHQ\Cachet\Models\Incident $incident + * + * @return \Illuminate\View\View + */ + public function showIncidentUpdates(Incident $incident) + { + return View::make('dashboard.incidents.updates.index')->withIncident($incident); + } + + /** + * Shows the incident update form. + * + * @param \CachetHQ\Cachet\Models\Incident $incident + * + * @return \Illuminate\View\View + */ + public function showCreateIncidentUpdateAction(Incident $incident) + { + return View::make('dashboard.incidents.updates.add') + ->withIncident($incident) + ->withNotificationsEnabled($this->system->canNotifySubscribers()); + } + + /** + * Creates a new incident update. + * + * @param \CachetHQ\Cachet\Models\Incident $incident + * + * @return \Illuminate\Http\RedirectResponse + */ + public function createIncidentUpdateAction(Incident $incident) + { + try { + $incidentUpdate = dispatch(new CreateIncidentUpdateCommand( + $incident, + Binput::get('status'), + Binput::get('message'), + Binput::get('component_id'), + Binput::get('component_status'), + $this->auth->user() + )); + } catch (ValidationException $e) { + return cachet_redirect('dashboard.incidents.updates.create', ['id' => $incident->id]) + ->withInput(Binput::all()) + ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.incidents.updates.add.failure'))) + ->withErrors($e->getMessageBag()); + } + + if ($incident->component) { + $incident->component->update(['status' => Binput::get('component_status')]); + } + + return cachet_redirect('dashboard.incidents') + ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.incidents.updates.success'))); + } + + /** + * Shows the edit incident view. + * + * @param \CachetHQ\Cachet\Models\Incident $incident + * @param \CachetHQ\Cachet\Models\IncidentUpdate $incidentUpdate + * + * @return \Illuminate\View\View + */ + public function showEditIncidentUpdateAction(Incident $incident, IncidentUpdate $incidentUpdate) + { + return View::make('dashboard.incidents.updates.edit') + ->withIncident($incident) + ->withUpdate($incidentUpdate) + ->withNotificationsEnabled($this->system->canNotifySubscribers()); + } + + /** + * Edit an incident update. + * + * @param \CachetHQ\Cachet\Models\Incident $incident + * @param \CachetHQ\Cachet\Models\IncidentUpdate $incidentUpdate + * + * @return \Illuminate\Http\RedirectResponse + */ + public function editIncidentUpdateAction(Incident $incident, IncidentUpdate $incidentUpdate) + { + try { + $incidentUpdate = dispatch(new UpdateIncidentUpdateCommand( + $incidentUpdate, + Binput::get('status'), + Binput::get('message'), + $this->auth->user() + )); + } catch (ValidationException $e) { + return cachet_redirect('dashboard.incidents.updates.edit', ['incident' => $incident->id, 'incident_update' => $incidentUpdate->id]) + ->withInput(Binput::all()) + ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.incidents.updates.edit.failure'))) + ->withErrors($e->getMessageBag()); + } + + return cachet_redirect('dashboard.incidents.updates', ['incident' => $incident->id]) + ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.incidents.updates.edit.success'))); + } +} diff --git a/app/Http/Routes/Dashboard/IncidentRoutes.php b/app/Http/Routes/Dashboard/IncidentRoutes.php index 3519cf49..4eee1e5e 100644 --- a/app/Http/Routes/Dashboard/IncidentRoutes.php +++ b/app/Http/Routes/Dashboard/IncidentRoutes.php @@ -71,23 +71,23 @@ class IncidentRoutes $router->get('{incident}/updates', [ 'as' => 'get:dashboard.incidents.updates', - 'uses' => 'IncidentController@showIncidentUpdates', + 'uses' => 'IncidentUpdateController@showIncidentUpdates', ]); $router->get('{incident}/updates/create', [ 'as' => 'get:dashboard.incidents.updates.create', - 'uses' => 'IncidentController@showCreateIncidentUpdateAction', + 'uses' => 'IncidentUpdateController@showCreateIncidentUpdateAction', ]); $router->post('{incident}/updates/create', [ 'as' => 'post:dashboard.incidents.updates.create', - 'uses' => 'IncidentController@createIncidentUpdateAction', + 'uses' => 'IncidentUpdateController@createIncidentUpdateAction', ]); $router->get('{incident}/updates/{incident_update}', [ 'as' => 'get:dashboard.incidents.updates.edit', - 'uses' => 'IncidentController@showEditIncidentUpdateAction', + 'uses' => 'IncidentUpdateController@showEditIncidentUpdateAction', ]); $router->post('{incident}/updates/{incident_update}', [ 'as' => 'post:dashboard.incidents.updates.edit', - 'uses' => 'IncidentController@editIncidentUpdateAction', + 'uses' => 'IncidentUpdateController@editIncidentUpdateAction', ]); }); }