| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- <?php
- namespace App\Http\Requests;
- use App\Enums\UserTypeEnum;
- use App\Models\User;
- use App\Support\Cpf;
- use Illuminate\Foundation\Http\FormRequest;
- use Illuminate\Validation\Rule;
- use Illuminate\Validation\Rules\Password;
- class FirstAccessRegisterRequest extends FormRequest
- {
- protected function prepareForValidation(): void
- {
- if ($this->has('cpf')) {
- $this->merge(['cpf' => Cpf::digits($this->input('cpf'))]);
- }
- if ($this->has('registration')) {
- $this->merge(['registration' => trim((string) $this->input('registration'))]);
- }
- }
- public function rules(): array
- {
- $user = $this->existingUser();
- $userId = $user?->id;
- return [
- 'token' => 'required|string',
- 'registration' => ['required', 'string', 'max:255', Rule::unique('users', 'registration')->ignore($userId)],
- 'name' => 'required|string|min:3|max:120',
- 'last_name' => 'required|string|min:3|max:120',
- 'cpf' => ['required', 'string', 'digits:11', Rule::unique('users', 'cpf')->ignore($userId)],
- 'email' => ['required', 'email', 'max:255', Rule::unique('users', 'email')->ignore($userId)],
- 'phone' => 'required|string|max:20',
- 'position_id' => 'required|integer|exists:positions,id',
- 'sector_id' => 'required|integer|exists:sectors,id',
- 'password' => ['required', 'confirmed', Password::min(8)->mixedCase()->numbers()],
- 'terms_accepted' => ['accepted'],
- 'photo' => ['nullable', Rule::requiredIf(fn(): bool => !$user?->photo_path), 'image', 'max:5120'],
- ];
- }
- /**
- * Associado que já existe com este crachá — as regras de unicidade ignoram o próprio registro.
- */
- private function existingUser(): ?User
- {
- return User::where('type', UserTypeEnum::ASSOCIADO)
- ->where('registration', $this->input('registration'))
- ->first();
- }
- }
|