name} (ID: {$userId})\n"; echo " Email: {$user->email}\n"; echo " Language: {$user->lang_preference}\n\n"; // Get accounts and balances $accounts = []; $totalBalance = 0; $profileAccounts = $user->accounts()->active()->notRemoved()->get(); foreach ($profileAccounts as $account) { // Clear cache to get fresh balance \Cache::forget("account_balance_{$account->id}"); $balance = $account->balance; // Property, not method $totalBalance += $balance; $accounts[] = [ 'id' => $account->id, 'name' => $account->name, 'balance' => $balance, 'balanceFormatted' => tbFormat($balance), ]; } // Test data for each warning level $warnings = [ 'warning_1' => [ 'class' => \App\Mail\InactiveProfileWarning1Mail::class, 'timeRemaining' => '2 weeks', 'daysRemaining' => 14, 'daysSinceLogin' => 351, ], 'warning_2' => [ 'class' => \App\Mail\InactiveProfileWarning2Mail::class, 'timeRemaining' => '1 week', 'daysRemaining' => 7, 'daysSinceLogin' => 358, ], 'warning_final' => [ 'class' => \App\Mail\InactiveProfileWarningFinalMail::class, 'timeRemaining' => '24 hours', 'daysRemaining' => 1, 'daysSinceLogin' => 365, ], ]; // Send all three warning emails foreach ($warnings as $warningType => $data) { echo " Dispatching {$warningType}...\n"; $mailClass = $data['class']; \Illuminate\Support\Facades\Mail::to($user->email)->queue( new $mailClass( $user, 'User', $data['timeRemaining'], $data['daysRemaining'], $accounts, $totalBalance, $data['daysSinceLogin'] ) ); } echo "\nāœ… All warning emails dispatched to queue\n"; echo " Total balance: " . tbFormat($totalBalance) . "\n"; echo " Accounts: " . count($accounts) . "\n\n"; echo "šŸš€ Processing queue...\n"; // Process the queue to actually send the emails \Illuminate\Support\Facades\Artisan::call('queue:work', [ '--stop-when-empty' => true, '--tries' => 1, ]); echo "āœ… Queue processed. Check your inbox at: {$user->email}\n"; } // Example usage (uncomment to run): // sendTestWarnings(102); echo " ╔════════════════════════════════════════════════════════════╗ ā•‘ Inactive profile warning Email Test Script ā•‘ ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā• Usage: sendTestWarnings(102); // Replace 102 with user ID This will send all 3 warning emails: • Warning 1 (2 weeks remaining) • Warning 2 (1 week remaining) • Warning Final (24 hours remaining) ";