RegisterProviderRequest.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Http\Requests;
  3. use App\Enums\GenderEnum;
  4. use App\Enums\WorkingPeriodEnum;
  5. use Illuminate\Foundation\Http\FormRequest;
  6. class RegisterProviderRequest extends FormRequest
  7. {
  8. public function rules(): array
  9. {
  10. $dailyPriceMin = config('provider.daily_price_min');
  11. $rules = [
  12. 'code' => 'required|string|max:6',
  13. 'email' => 'required|string|email|max:255',
  14. 'name' => 'required|string|max:255',
  15. 'phone' => 'required|string|max:20',
  16. 'document' => 'required|string|max:20',
  17. 'rg' => 'required|string|max:20',
  18. 'gender' => 'required|string|in:'.implode(',', GenderEnum::toArray()),
  19. 'birth_date' => 'required|date|before:today',
  20. 'zip_code' => 'required|string|max:20',
  21. 'number' => 'required|string|max:20',
  22. 'address' => 'required|string|max:255',
  23. 'district' => 'required|string|max:255',
  24. 'city' => 'required|string|max:255',
  25. 'state' => 'required|string|max:2',
  26. 'address_type' => 'required|string|in:home,commercial,other',
  27. 'has_complement' => 'required|boolean',
  28. 'daily_price_8h' => "required|numeric|min:{$dailyPriceMin}|max:500",
  29. 'daily_price_6h' => 'required|numeric|min:0',
  30. 'daily_price_4h' => 'required|numeric|min:0',
  31. 'daily_price_2h' => 'required|numeric|min:0',
  32. 'selfie' => 'required|file|image|mimes:jpg,jpeg,png,webp|max:5120',
  33. 'document_front' => 'required|file|image|mimes:jpg,jpeg,png,webp|max:10240',
  34. 'document_back' => 'required|file|image|mimes:jpg,jpeg,png,webp|max:10240',
  35. 'working_days' => 'required|array|min:1',
  36. 'working_days.*.day' => 'required|integer|min:0|max:6',
  37. 'working_days.*.period' => 'required|string|in:'.implode(',', array_column(WorkingPeriodEnum::cases(), 'value')),
  38. 'complement' => 'sometimes|nullable|string|max:255',
  39. 'nickname' => 'sometimes|nullable|string|max:255',
  40. 'latitude' => 'sometimes|nullable|numeric',
  41. 'longitude' => 'sometimes|nullable|numeric',
  42. 'instructions' => 'sometimes|nullable|string',
  43. //
  44. 'recipient_email' => 'sometimes|string|email|max:255',
  45. 'recipient_name' => 'sometimes|string|max:255',
  46. 'recipient_document' => 'sometimes|string|max:20',
  47. 'recipient_description' => 'sometimes|string',
  48. 'recipient_type' => 'sometimes|string|in:individual,company',
  49. 'recipient_payment_mode' => 'sometimes|string|in:bank_transfer',
  50. 'recipient_default_bank_account' => 'sometimes|array',
  51. 'recipient_default_bank_account.holder_name' => 'sometimes|string|max:255',
  52. 'recipient_default_bank_account.holder_document' => 'sometimes|string|max:20',
  53. 'recipient_default_bank_account.holder_type' => 'sometimes|string|in:individual,company',
  54. 'recipient_default_bank_account.bank' => 'sometimes|string|max:3',
  55. 'recipient_default_bank_account.branch_number' => 'sometimes|string|max:20',
  56. 'recipient_default_bank_account.branch_check_digit' => 'sometimes|string|max:10',
  57. 'recipient_default_bank_account.account_number' => 'sometimes|string|max:20',
  58. 'recipient_default_bank_account.account_check_digit' => 'sometimes|string|max:10',
  59. 'recipient_default_bank_account.type' => 'sometimes|string|in:checking,savings',
  60. 'recipient_default_bank_account.metadata' => 'sometimes|array',
  61. 'recipient_default_bank_account.pix_key' => 'sometimes|string|nullable|max:255',
  62. 'recipient_metadata' => 'sometimes|array',
  63. 'services_types_ids' => 'sometimes|array',
  64. 'services_types_ids.*' => 'integer|exists:service_types,id,deleted_at,NULL,is_active,1',
  65. ];
  66. return $rules;
  67. }
  68. }