UserRequest.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. namespace App\Http\Requests;
  3. use Illuminate\Foundation\Http\FormRequest;
  4. use App\Enums\{
  5. UserTypeEnum,
  6. LanguageEnum
  7. };
  8. use Illuminate\Validation\Rule;
  9. class UserRequest extends FormRequest
  10. {
  11. public function rules(): array
  12. {
  13. $rules = [
  14. 'avatar' => 'sometimes|nullable|image|max:2048',
  15. 'name' => 'sometimes|string|nullable|max:255',
  16. 'cpf' => 'sometimes|nullable|string|max:14',
  17. 'phone' => 'sometimes|nullable|string|max:20',
  18. 'email' => 'sometimes|email',
  19. 'password' => 'sometimes|string|nullable|min:8',
  20. 'user_type' => 'sometimes|nullable|string|exists:user_types,slug',
  21. 'access_scope' => 'sometimes|string|in:unit,franchisor',
  22. 'language' => ['sometimes', Rule::enum(LanguageEnum::class)],
  23. 'state_id' => 'sometimes|nullable|integer|exists:states,id',
  24. 'unit_id' => 'sometimes|nullable|integer|exists:units,id',
  25. 'unit_ids' => 'sometimes|nullable|array',
  26. 'unit_ids.*' => 'integer|exists:units,id',
  27. ];
  28. if ($this->isMethod('post')) {
  29. $rules['name'] = 'required|string|max:255';
  30. $rules['email'] = 'required|email|unique:users,email';
  31. $rules['password'] = 'required|string|min:8';
  32. $rules['user_type'] = 'required|string|exists:user_types,slug';
  33. $rules['access_scope'] = 'required|string|in:unit,franchisor';
  34. if (!$this->has('language')) {
  35. $this->merge(['language' => LanguageEnum::PORTUGUESE->value]);
  36. }
  37. }
  38. return $rules;
  39. }
  40. }