ProviderPaymentMethodRequest.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace App\Http\Requests;
  3. use App\Enums\AccountTypeEnum;
  4. use App\Enums\BankAccountTypeEnum;
  5. use Illuminate\Foundation\Http\FormRequest;
  6. class ProviderPaymentMethodRequest extends FormRequest
  7. {
  8. public function authorize(): bool
  9. {
  10. return true;
  11. }
  12. public function rules(): array
  13. {
  14. $pixAccountType = AccountTypeEnum::PIX->value;
  15. $bankAccountType = AccountTypeEnum::BANK_ACCOUNT->value;
  16. $accountTypes = implode(',', [$pixAccountType, $bankAccountType]);
  17. $bankAccountTypes = implode(',', [BankAccountTypeEnum::CHECKING->value, BankAccountTypeEnum::SAVINGS->value]);
  18. if ($this->account_type == AccountTypeEnum::PIX->value) {
  19. $rules = [
  20. 'account_type' => "sometimes|in:{$accountTypes}",
  21. 'pix_key' => "required|string|max:255|required_if:account_type,{$pixAccountType}",
  22. 'bank_account_type' => "nullable|required_if:account_type,{$bankAccountType}|in:{$bankAccountTypes}",
  23. 'agency' => "nullable|string|max:255|required_if:account_type,{$bankAccountType}",
  24. 'account' => "nullable|string|max:255|required_if:account_type,{$bankAccountType}",
  25. 'digit' => "nullable|string|max:255|required_if:account_type,{$bankAccountType}",
  26. ];
  27. } else {
  28. $rules = [
  29. 'account_type' => "sometimes|in:{$accountTypes}",
  30. 'pix_key' => "nullable|string|max:255|required_if:account_type,{$pixAccountType}",
  31. 'bank_account_type' => "sometimes|required_if:account_type,{$bankAccountType}|in:{$bankAccountTypes}",
  32. 'agency' => "sometimes|string|max:255|required_if:account_type,{$bankAccountType}",
  33. 'account' => "sometimes|string|max:255|required_if:account_type,{$bankAccountType}",
  34. 'digit' => "sometimes|string|max:255|required_if:account_type,{$bankAccountType}",
  35. ];
  36. }
  37. if ($this->isMethod('post')) {
  38. $rules['provider_id'] = 'required|exists:providers,id';
  39. };
  40. return $rules;
  41. }
  42. }