input('client_id'); $favoriteId = $this->route('id'); $rules = [ 'client_id' => ['sometimes', 'integer', 'exists:clients,id'], 'provider_id' => [ 'sometimes', 'integer', 'exists:providers,id', Rule::unique('client_favorite_providers', 'provider_id') ->where('client_id', $clientId) ->whereNull('deleted_at') ->ignore($favoriteId), ], 'notes' => ['nullable', 'string', 'max:1000'], ]; if ($this->isMethod('POST')) { $rules['client_id'] = ['required', 'integer', 'exists:clients,id']; $rules['provider_id'] = [ 'required', 'integer', 'exists:providers,id', Rule::unique('client_favorite_providers', 'provider_id') ->where('client_id', $clientId) ->whereNull('deleted_at') ->ignore($favoriteId), ]; } return $rules; } public function messages(): array { return [ 'client_id.required' => 'O cliente é obrigatório.', 'client_id.exists' => 'Cliente não encontrado.', 'provider_id.required' => 'O prestador é obrigatório.', 'provider_id.exists' => 'Prestador não encontrado.', 'provider_id.unique' => 'Este prestador já está favoritado.', 'notes.max' => 'As observações não podem exceder 1000 caracteres.', ]; } }