['required', 'string', 'max:255'], 'national_id' => ['required', 'string', 'max:50', 'unique:users,national_id'], 'email' => ['required', 'email', 'max:255', 'unique:users,email'], 'phone' => ['required', 'string', 'max:20'], 'password' => ['required', 'string', 'min:8'], 'preferred_language' => ['required', 'in:ar,en'], ]; } public function messages(): array { return [ 'national_id.unique' => __('clients.national_id_exists'), 'email.unique' => __('clients.email_exists'), ]; } public function create(): void { $validated = $this->validate(); $plainPassword = $validated['password']; $user = User::create([ 'user_type' => UserType::Individual, 'full_name' => $validated['full_name'], 'national_id' => $validated['national_id'], 'email' => $validated['email'], 'phone' => $validated['phone'], 'password' => Hash::make($plainPassword), 'preferred_language' => $validated['preferred_language'], 'status' => UserStatus::Active, ]); AdminLog::create([ 'admin_id' => auth()->id(), 'action' => 'create', 'target_type' => 'user', 'target_id' => $user->id, 'new_values' => $user->only(['full_name', 'email', 'national_id', 'phone', 'preferred_language']), 'ip_address' => request()->ip(), 'created_at' => now(), ]); $user->notify(new WelcomeAccountNotification($plainPassword)); session()->flash('success', __('clients.client_created')); $this->redirect(route('admin.clients.individual.index'), navigate: true); } }; ?>