$input любое подмножество tz, quiet_start, quiet_end (HH:MM) * * @throws ValidationException */ public function update(User $user, array $input): User { $data = Validator::validate($input, [ 'tz' => ['sometimes', 'string', Rule::in(\DateTimeZone::listIdentifiers())], 'quiet_start' => ['sometimes', 'date_format:H:i'], 'quiet_end' => ['sometimes', 'date_format:H:i'], ]); $start = $data['quiet_start'] ?? substr($user->quiet_start, 0, 5); $end = $data['quiet_end'] ?? substr($user->quiet_end, 0, 5); if ($end >= $start) { throw ValidationException::withMessages([ 'quiet_end' => 'Тихие часы должны переходить через полночь: quiet_end раньше quiet_start', ]); } $user->fill([ 'tz' => $data['tz'] ?? $user->tz, 'quiet_start' => $start.':00', 'quiet_end' => $end.':00', ])->save(); return $user; } }