*/ final class CreateSlide implements Action { /** * @param \App\Actions\Slides\CreateSlideInput $input */ #[\Override] public function __invoke(ActionInput $input): Slide { Assert::isInstanceOf($input, CreateSlideInput::class); $attributes = [ 'title' => $input->title, 'text' => $input->text, 'picture_alt' => $input->pictureAlt, 'picture_title' => $input->pictureTitle, 'link' => $input->link, 'link_label' => $input->linkLabel, 'link_new_tab' => $input->linkNewTab, 'connected' => $input->connected, 'date_start' => $input->period->start !== null ? Carbon::instance($input->period->start) : null, 'date_end' => $input->period->end !== null ? Carbon::instance($input->period->end) : null, ]; if ($input->picture !== null) { $attributes['picture'] = $input->picture; } $slide = new Slide(); $slide->fill($attributes); $slide->saveOrFail(); return $slide; } }