diff --git a/app/Bus/Handlers/Commands/Schedule/CreateScheduleCommandHandler.php b/app/Bus/Handlers/Commands/Schedule/CreateScheduleCommandHandler.php index 3608a491becd..0f684d277eea 100644 --- a/app/Bus/Handlers/Commands/Schedule/CreateScheduleCommandHandler.php +++ b/app/Bus/Handlers/Commands/Schedule/CreateScheduleCommandHandler.php @@ -50,6 +50,22 @@ public function __construct(DateFactory $dates) * @return \CachetHQ\Cachet\Models\Schedule */ public function handle(CreateScheduleCommand $command) + { + $schedule = Schedule::create($this->filter($command)); + + event(new ScheduleWasCreatedEvent($schedule)); + + return $schedule; + } + + /** + * Filter the command data. + * + * @param \CachetHQ\Cachet\Bus\Commands\Schedule\CreateScheduleCommand $command + * + * @return array + */ + protected function filter(CreateScheduleCommand $command) { $scheduledAt = $this->dates->create('Y-m-d H:i', $command->scheduled_at); @@ -57,16 +73,18 @@ public function handle(CreateScheduleCommand $command) $completedAt = $this->dates->create('Y-m-d H:i', $command->completed_at); } - $schedule = Schedule::create([ + $params = [ 'name' => $command->name, 'message' => $command->message, 'status' => $command->status, 'scheduled_at' => $scheduledAt, 'completed_at' => $completedAt, - ]); + ]; - event(new ScheduleWasCreatedEvent($schedule)); + $availableParams = array_filter($params, function ($val) { + return $val !== null; + }); - return $schedule; + return $availableParams; } } diff --git a/app/Bus/Handlers/Commands/Schedule/UpdateScheduleCommandHandler.php b/app/Bus/Handlers/Commands/Schedule/UpdateScheduleCommandHandler.php index fb288b126a93..e5fb44bf8cb7 100644 --- a/app/Bus/Handlers/Commands/Schedule/UpdateScheduleCommandHandler.php +++ b/app/Bus/Handlers/Commands/Schedule/UpdateScheduleCommandHandler.php @@ -75,7 +75,9 @@ protected function filter(UpdateScheduleCommand $command) 'status' => $command->status, ]; - $params['scheduled_at'] = $this->dates->create('Y-m-d H:i', $command->scheduled_at); + if ($scheduleddAt = $command->scheduled_at) { + $params['scheduled_at'] = $this->dates->create('Y-m-d H:i', $scheduledAt); + } if ($completedAt = $command->completed_at) { $params['completed_at'] = $this->dates->create('Y-m-d H:i', $completedAt); diff --git a/app/Models/Schedule.php b/app/Models/Schedule.php index 4e59be625961..47b6d56a4862 100644 --- a/app/Models/Schedule.php +++ b/app/Models/Schedule.php @@ -81,8 +81,6 @@ class Schedule extends Model implements HasPresenter 'name' => 'required|string', 'message' => 'nullable|string', 'status' => 'required|int|between:0,2', - 'scheduled_at' => 'required|date', - 'completed_at' => 'nullable|date', ]; /** diff --git a/tests/Api/ScheduleTest.php b/tests/Api/ScheduleTest.php index 4c13cc374126..9a97d5546af8 100644 --- a/tests/Api/ScheduleTest.php +++ b/tests/Api/ScheduleTest.php @@ -50,7 +50,7 @@ public function testCreateSchedule() 'name' => 'Test Schedule', 'message' => 'Foo bar, baz.', 'status' => 1, - 'scheduled_at' => strtotime('now'), + 'scheduled_at' => date('Y-m-d H:i'), ]; $this->post('/api/v1/schedules/', $schedule);