From 1478a2500891155933dd921eafd2d1778b84b9ef Mon Sep 17 00:00:00 2001 From: James Brooks Date: Mon, 31 Aug 2015 20:16:15 +0100 Subject: [PATCH] ReportMaintenanceCommand is added --- .../Incident/ReportMaintenanceCommand.php | 61 +++++++++++++++++++ app/Events/SubscriberHasVerifiedEvent.php | 34 ----------- .../ReportMaintenanceCommandHandler.php | 51 ++++++++++++++++ ...endMaintenanceEmailNotificationHandler.php | 2 +- .../Dashboard/ScheduleController.php | 32 +++------- 5 files changed, 123 insertions(+), 57 deletions(-) create mode 100644 app/Commands/Incident/ReportMaintenanceCommand.php delete mode 100644 app/Events/SubscriberHasVerifiedEvent.php create mode 100644 app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php diff --git a/app/Commands/Incident/ReportMaintenanceCommand.php b/app/Commands/Incident/ReportMaintenanceCommand.php new file mode 100644 index 00000000..82105055 --- /dev/null +++ b/app/Commands/Incident/ReportMaintenanceCommand.php @@ -0,0 +1,61 @@ +name = $name; + $this->message = $message; + $this->notify = $notify; + $this->timestamp = $timestamp; + } +} diff --git a/app/Events/SubscriberHasVerifiedEvent.php b/app/Events/SubscriberHasVerifiedEvent.php deleted file mode 100644 index e095ddb9..00000000 --- a/app/Events/SubscriberHasVerifiedEvent.php +++ /dev/null @@ -1,34 +0,0 @@ -subscriber = $subscriber; - } -} diff --git a/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php b/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php new file mode 100644 index 00000000..b9542191 --- /dev/null +++ b/app/Handlers/Commands/Incident/ReportMaintenanceCommandHandler.php @@ -0,0 +1,51 @@ +timestamp, Setting::get('app_timezone')) + ->setTimezone(Config::get('app.timezone')); + + $maintenanceEvent = Incident::create([ + 'name' => $command->name, + 'message' => $command->message, + 'scheduled_at' => $scheduledAt, + 'status' => 0, + 'visible' => 1, + ]); + + // Notify subscribers. + if ($command->notify) { + event(new MaintenanceWasScheduledEvent($maintenanceEvent)); + } + + return $maintenanceEvent; + } +} diff --git a/app/Handlers/Events/Incident/SendMaintenanceEmailNotificationHandler.php b/app/Handlers/Events/Incident/SendMaintenanceEmailNotificationHandler.php index 3783160c..baaa44bb 100644 --- a/app/Handlers/Events/Incident/SendMaintenanceEmailNotificationHandler.php +++ b/app/Handlers/Events/Incident/SendMaintenanceEmailNotificationHandler.php @@ -11,7 +11,7 @@ namespace CachetHQ\Cachet\Handlers\Events\Incident; -use CachetHQ\Cachet\Events\MaintenanceWasScheduledEvent; +use CachetHQ\Cachet\Events\Incident\MaintenanceWasScheduledEvent; use CachetHQ\Cachet\Models\Subscriber; use Illuminate\Contracts\Mail\MailQueue; use Illuminate\Mail\Message; diff --git a/app/Http/Controllers/Dashboard/ScheduleController.php b/app/Http/Controllers/Dashboard/ScheduleController.php index caafec10..3e7f94aa 100644 --- a/app/Http/Controllers/Dashboard/ScheduleController.php +++ b/app/Http/Controllers/Dashboard/ScheduleController.php @@ -12,11 +12,12 @@ namespace CachetHQ\Cachet\Http\Controllers\Dashboard; use AltThree\Validator\ValidationException; -use CachetHQ\Cachet\Events\MaintenanceWasScheduledEvent; +use CachetHQ\Cachet\Commands\Incident\ReportMaintenanceCommand; use CachetHQ\Cachet\Facades\Setting; use CachetHQ\Cachet\Models\Incident; use CachetHQ\Cachet\Models\IncidentTemplate; use GrahamCampbell\Binput\Facades\Binput; +use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Redirect; @@ -26,6 +27,8 @@ use Jenssegers\Date\Date; class ScheduleController extends Controller { + use DispatchesJobs; + /** * Stores the sub-sidebar tree list. * @@ -92,24 +95,13 @@ class ScheduleController extends Controller */ public function addScheduleAction() { - $scheduleData = Binput::get('incident'); - // Parse the schedule date. - $scheduledAt = Date::createFromFormat('d/m/Y H:i', $scheduleData['scheduled_at'], Setting::get('app_timezone')) - ->setTimezone(Config::get('app.timezone')); - - if ($scheduledAt->isPast()) { - $messageBag = new MessageBag(); - $messageBag->add('scheduled_at', trans('validation.date', ['attribute' => 'scheduled time you supplied'])); - - return Redirect::route('dashboard.schedule.add')->withErrors($messageBag); - } - - $scheduleData['scheduled_at'] = $scheduledAt; - // Bypass the incident.status field. - $scheduleData['status'] = 0; - try { - $incident = Incident::create($scheduleData); + $incident = $this->dispatch(new ReportMaintenanceCommand( + Binput::get('incident.name'), + Binput::get('incident.message'), + Binput::get('incident.notify'), + Binput::get('incident.scheduled_at') + )); } catch (ValidationException $e) { return Redirect::route('dashboard.schedule.add') ->withInput(Binput::all()) @@ -117,10 +109,6 @@ class ScheduleController extends Controller ->withErrors($e->getMessageBag()); } - if (array_get($scheduleData, 'notify') && subscribers_enabled()) { - event(new MaintenanceWasScheduledEvent($incident)); - } - return Redirect::route('dashboard.schedule.add') ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.schedule.add.success'))); }