ClientFavoriteProviderRequest.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace App\Http\Requests;
  3. use Illuminate\Foundation\Http\FormRequest;
  4. use Illuminate\Validation\Rule;
  5. class ClientFavoriteProviderRequest extends FormRequest
  6. {
  7. public function authorize(): bool
  8. {
  9. return true;
  10. }
  11. public function rules(): array
  12. {
  13. $clientId = $this->input('client_id');
  14. $favoriteId = $this->route('id');
  15. $rules = [
  16. 'client_id' => ['sometimes', 'integer', 'exists:clients,id'],
  17. 'provider_id' => [
  18. 'sometimes',
  19. 'integer',
  20. 'exists:providers,id',
  21. Rule::unique('client_favorite_providers', 'provider_id')
  22. ->where('client_id', $clientId)
  23. ->whereNull('deleted_at')
  24. ->ignore($favoriteId),
  25. ],
  26. 'notes' => ['nullable', 'string', 'max:1000'],
  27. ];
  28. if ($this->isMethod('POST')) {
  29. $rules['client_id'] = ['required', 'integer', 'exists:clients,id'];
  30. $rules['provider_id'] = [
  31. 'required',
  32. 'integer',
  33. 'exists:providers,id',
  34. Rule::unique('client_favorite_providers', 'provider_id')
  35. ->where('client_id', $clientId)
  36. ->whereNull('deleted_at')
  37. ->ignore($favoriteId),
  38. ];
  39. }
  40. return $rules;
  41. }
  42. public function messages(): array
  43. {
  44. return [
  45. 'client_id.required' => 'O cliente é obrigatório.',
  46. 'client_id.exists' => 'Cliente não encontrado.',
  47. 'provider_id.required' => 'O prestador é obrigatório.',
  48. 'provider_id.exists' => 'Prestador não encontrado.',
  49. 'provider_id.unique' => 'Este prestador já está favoritado.',
  50. 'notes.max' => 'As observações não podem exceder 1000 caracteres.',
  51. ];
  52. }
  53. }