append(implode(',', $allowedDateFormats)) ->__toString(), Str::of('before:') ->append($this->resolveEndAt($request)) ->__toString(), ]; } /** * Set the update validation rules for the field. * * @param Request $request * @return array */ public function getUpdateRules(Request $request): array { $allowedDateFormats = array_column(AllowedDateFormat::cases(), 'value'); return [ 'sometimes', 'required', Str::of('date_format:') ->append(implode(',', $allowedDateFormats)) ->__toString(), Str::of('before:') ->append($this->resolveEndAt($request)) ->__toString(), ]; } /** * Get dependent end_at field. * * @param Request $request * @return string|null */ private function resolveEndAt(Request $request): ?string { if ($request->has(FeaturedTheme::ATTRIBUTE_END_AT)) { return $request->get(FeaturedTheme::ATTRIBUTE_END_AT); } /** @var FeaturedTheme|null $featuredTheme */ $featuredTheme = $request->route('featuredtheme'); return $featuredTheme?->end_at?->format(AllowedDateFormat::YMDHISU->value); } }