Initial commit

This commit is contained in:
Ronald Huynen
2026-03-23 21:37:59 +01:00
commit 2547717edb
2193 changed files with 972171 additions and 0 deletions

113
scripts/send-test-warnings.php Executable file
View File

@@ -0,0 +1,113 @@
<?php
/**
* Manual Test Script for Inactive profile warning Emails
*
* Usage in tinker:
* php artisan tinker
* include 'send-test-warnings.php';
* sendTestWarnings(102); // Replace 102 with your user ID
*/
function sendTestWarnings($userId) {
$user = \App\Models\User::find($userId);
if (!$user) {
echo "❌ User not found with ID: {$userId}\n";
return;
}
echo " Sending test warning emails for user: {$user->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)
";