validated(); $user = DB::transaction(function () use ($data) { $user = User::create([ 'first_name' => $data['first_name'], 'middle_name' => $data['middle_name'] ?? null, 'last_name' => $data['last_name'], 'email' => $data['email'], 'phone' => $data['phone'], 'password' => Hash::make($data['password']), 'role' => $data['role'], 'status' => User::STATUS_PENDING, 'preferred_language' => $data['preferred_language'] ?? 'en', ]); $user->assignRole($data['role']); return $user; }); $issue = $otp->issue( destination: $user->phone, purpose: OtpCode::PURPOSE_REGISTER, user: $user, ); return $this->created([ 'user' => new UserResource($user), 'otp_sent' => $issue->issued, 'otp_destination' => $user->phone, 'debug_code' => app()->environment('local', 'testing') ? $issue->plainCode : null, ], 'Registration successful. Verify the OTP sent to your phone.'); } }