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 { return [ 'name' => 'required|string|min:3|max:120', 'last_name' => 'required|string|min:3|max:120', 'cpf' => 'required|string|digits:11|unique:users,cpf', 'registration' => 'required|string|max:255|unique:users,registration', 'email' => 'required|email|unique:users,email', 'phone' => 'required|string|max:20', 'position_id' => 'required|integer|exists:positions,id', 'sector_id' => 'required|integer|exists:sectors,id', ]; } public function messages(): array { return [ 'registration.unique' => $this->registrationTakenMessage(), 'cpf.unique' => __('messages.landing.cpf_taken'), 'email.unique' => __('messages.landing.email_taken'), ]; } private function registrationTakenMessage(): string { $user = User::where('registration', $this->input('registration'))->first(); return match (true) { (bool) $user?->first_access_completed_at => __('messages.landing.registration_first_access_done'), $user?->status === UserStatusEnum::PENDING => __('messages.landing.registration_pending_approval'), default => __('messages.landing.registration_taken'), }; } }