ProviderClientBlockRequest.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace App\Http\Requests;
  3. use Illuminate\Foundation\Http\FormRequest;
  4. use Illuminate\Validation\Rule;
  5. class ProviderClientBlockRequest extends FormRequest
  6. {
  7. public function authorize(): bool
  8. {
  9. return true;
  10. }
  11. public function rules(): array
  12. {
  13. $providerId = $this->input('provider_id');
  14. $blockId = $this->route('id');
  15. $rules = [
  16. 'provider_id' => ['sometimes', 'integer', 'exists:providers,id'],
  17. 'client_id' => [
  18. 'sometimes',
  19. 'integer',
  20. 'exists:clients,id',
  21. Rule::unique('provider_client_blocks', 'client_id')
  22. ->where('provider_id', $providerId)
  23. ->whereNull('deleted_at')
  24. ->ignore($blockId),
  25. ],
  26. ];
  27. if ($this->isMethod('POST')) {
  28. $rules['provider_id'] = ['required', 'integer', 'exists:providers,id'];
  29. $rules['client_id'] = [
  30. 'required',
  31. 'integer',
  32. 'exists:clients,id',
  33. Rule::unique('provider_client_blocks', 'client_id')
  34. ->where('provider_id', $providerId)
  35. ->whereNull('deleted_at')
  36. ->ignore($blockId),
  37. ];
  38. }
  39. return $rules;
  40. }
  41. public function messages(): array
  42. {
  43. return [
  44. 'provider_id.required' => __('validation.required', ['attribute' => __('validation.attributes.provider')]),
  45. 'provider_id.exists' => __('validation.exists', ['attribute' => __('validation.attributes.provider')]),
  46. 'client_id.required' => __('validation.required', ['attribute' => __('validation.attributes.client')]),
  47. 'client_id.exists' => __('validation.exists', ['attribute' => __('validation.attributes.client')]),
  48. 'client_id.unique' => __('validation.provider_client_block.already_blocked'),
  49. ];
  50. }
  51. }