// Always send Welcome Mail (now without button) try { \Illuminate\Support\Facades\Mail::to($client->email)->send(new \App\Mail\WelcomeMail($client)); } catch (\Exception $e) { \Illuminate\Support\Facades\Log::error('Failed to send welcome email: ' . $e->getMessage()); } return $client; }); // Check if OTP is enabled for registration (outside transaction) $otpEnabled = \App\Models\Setting::where('key', 'registration_otp_enabled')->value('value') ?? '1'; if ($otpEnabled === '0') { $client->forceFill(['email_verified_at' => now()])->save(); return redirect()->route('client.login.show') ->with('status', 'Registration successful! Please login.'); } // Generate and Send OTP (outside transaction to ensure session persists) session([ 'client_otp' => [ 'client_id' => $client->id, 'purpose' => 'registration', ], ]); $this->otpService->generateAndSend( $client->email, 'registration', $request->ip(), $request->userAgent() ); return redirect()->route('client.otp.show') ->with('status', 'Registration successful! We have sent a verification code to your email.'); }