FirstAccessRegisterRequest.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace App\Http\Requests;
  3. use App\Enums\UserTypeEnum;
  4. use App\Models\User;
  5. use Illuminate\Foundation\Http\FormRequest;
  6. use Illuminate\Validation\Rule;
  7. use Illuminate\Validation\Rules\Password;
  8. class FirstAccessRegisterRequest extends FormRequest
  9. {
  10. public function rules(): array
  11. {
  12. $userId = $this->existingUserId();
  13. return [
  14. 'token' => 'required|string',
  15. 'registration' => ['required', 'string', 'max:255', Rule::unique('users', 'registration')->ignore($userId)],
  16. 'name' => 'required|string|max:255',
  17. 'cpf' => ['required', 'string', 'max:14', Rule::unique('users', 'cpf')->ignore($userId)],
  18. 'email' => ['required', 'email', 'max:255', Rule::unique('users', 'email')->ignore($userId)],
  19. 'phone' => 'required|string|max:20',
  20. 'position_id' => 'required|integer|exists:positions,id',
  21. 'sector_id' => 'required|integer|exists:sectors,id',
  22. 'password' => ['required', 'confirmed', Password::min(8)->mixedCase()->numbers()],
  23. 'photo' => 'required|image|max:5120',
  24. ];
  25. }
  26. /**
  27. * Associado que já existe com este crachá — as regras de unicidade ignoram o próprio registro.
  28. */
  29. private function existingUserId(): ?int
  30. {
  31. return User::where('type', UserTypeEnum::ASSOCIADO)
  32. ->where('registration', $this->input('registration'))
  33. ->value('id');
  34. }
  35. }