getDateFromArgument($this->getArgument('date')); $user = $this->findUserBySlackId($request->userId); $yearPeriod = YearPeriod::findByYear($date->year); app(CreateAction::class)->execute([ "user_id" => $user->id, "type" => VacationType::HomeOffice, "from" => $date, "to" => $date, "year_period_id" => $yearPeriod->id, "flow_skipped" => false, ], $user); return $this->respondToSlack("Praca zdalna dnia {$date->toDisplayString()} została utworzona pomyślnie"); } protected function getDateFromArgument(string $argument): Carbon { return match ($argument) { "dzisiaj" => Carbon::today(), "jutro" => Carbon::tomorrow(), default => Carbon::create($argument), }; } protected function findUserBySlackId(string $slackId): User { /** @var User $user */ $user = User::query() ->whereRelation("profile", "slack_id", $slackId) ->first(); return $user; } }