*/ class UpdateScheduleCommandHandler { /** * The date factory instance. * * @var \CachetHQ\Cachet\Dates\DateFactory */ protected $dates; /** * Create a new update schedule command handler instance. * * @param \CachetHQ\Cachet\Dates\DateFactory $dates * * @return void */ public function __construct(DateFactory $dates) { $this->dates = $dates; } /** * Handle the update schedule command. * * @param \CachetHQ\Cachet\Bus\Commands\Schedule\UpdateScheduleCommand $command * * @return \CachetHQ\Cachet\Models\Schedule */ public function handle(UpdateScheduleCommand $command) { $schedule = $command->schedule; $schedule->update($this->filter($command)); event(new ScheduleWasUpdatedEvent($schedule)); return $schedule; } /** * Filter the command data. * * @param \CachetHQ\Cachet\Bus\Commands\Schedule\UpdateScheduleCommand $command * * @return array */ protected function filter(UpdateScheduleCommand $command) { $params = [ 'name' => $command->name, 'message' => $command->message, 'status' => $command->status, ]; if ($scheduledAt = $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); } $availableParams = array_filter($params, function ($val) { return $val !== null; }); return $availableParams; } }