# Artisan Email Testing Command - Summary ## New Artisan Command Created `php artisan email:send-test` - A comprehensive command for testing all transactional emails in the system. ## Features ### 13 Email Types Supported 1. **Inactive Profile Warnings** - `inactive-warning-1` - First warning (2 weeks remaining) - `inactive-warning-2` - Second warning (1 week remaining) - `inactive-warning-final` - Final warning (24 hours remaining) 2. **Account Management** - `user-deleted` - User account deleted notification - `verify-email` - Email verification request - `profile-link-changed` - Profile name/link changed - `profile-edited-by-admin` - Admin edited profile notification 3. **Transactions** - `transfer-received` - Payment/transfer received notification 4. **Reservations** - `reservation-created` - New reservation created - `reservation-cancelled` - Reservation cancelled - `reservation-updated` - Reservation updated 5. **Social** - `reaction-created` - New comment/reaction on post - `tag-added` - Tag added to profile ### Multiple Receiver Types - `user` - Individual user profiles - `organization` - Organization profiles - `admin` - Admin profiles - `bank` - Bank profiles ### Command Modes **1. Direct Command** ```bash php artisan email:send-test --type=inactive-warning-1 --receiver=user --id=102 ``` **2. Interactive Mode** ```bash php artisan email:send-test # Presents menu to select email type, receiver type, and ID ``` **3. List Mode** ```bash php artisan email:send-test --list # Shows all available email types with descriptions ``` **4. Queue Mode** ```bash php artisan email:send-test --type=transfer-received --receiver=user --id=102 --queue # Sends via queue instead of immediately ``` ## Quick Start Examples ### Send a Single Email ```bash php artisan email:send-test --type=inactive-warning-1 --receiver=user --id=102 ``` ### Test All Warning Emails ```bash ./test-warning-emails.sh 102 ``` Or manually: ```bash php artisan email:send-test --type=inactive-warning-1 --receiver=user --id=102 php artisan email:send-test --type=inactive-warning-2 --receiver=user --id=102 php artisan email:send-test --type=inactive-warning-final --receiver=user --id=102 ``` ### List All Available Emails ```bash php artisan email:send-test --list ``` ### Interactive Mode ```bash php artisan email:send-test # Follow the prompts ``` ## Test Data Generation The command automatically generates realistic test data for each email type: - **Account balances**: Uses actual account data from the receiver's profile - **Time remaining**: Realistic values based on email type - **Transaction amounts**: Sample formatted amounts - **Dates**: Future dates for reservations - **Names/URLs**: Generated test data with proper formatting ## Files Created 1. **`app/Console/Commands/SendTestEmail.php`** - Main artisan command 2. **`EMAIL-TESTING-GUIDE.md`** - Comprehensive usage guide 3. **`test-warning-emails.sh`** - Quick script to test all 3 warning emails 4. **`ARTISAN-EMAIL-COMMAND-SUMMARY.md`** - This summary ## Advantages Over Tinker Script 1. **Type Safety**: Validates email types and receiver types before sending 2. **Error Handling**: Clear error messages for invalid inputs 3. **User-Friendly**: Interactive mode for easy selection 4. **Comprehensive**: Supports 13 different email types 5. **Flexible**: Multiple receiver types (user, organization, admin, bank) 6. **Queue Support**: Option to send via queue 7. **List View**: Easy discovery of all available email types 8. **Professional CLI**: Proper command structure and help text ## Migration from Tinker Script ### Old Way (Tinker) ```bash php artisan tinker --execute="include 'send-test-warnings.php'; sendTestWarnings(102);" ``` ### New Way (Artisan Command) ```bash # Single email php artisan email:send-test --type=inactive-warning-1 --receiver=user --id=102 # All warnings ./test-warning-emails.sh 102 # Or interactive php artisan email:send-test ``` ## Next Steps 1. **Test all email types** - Verify each email renders correctly 2. **Test different receivers** - Try with user, organization profiles 3. **Test themes** - Send emails with different `TIMEBANK_THEME` values 4. **Test languages** - Verify emails in all supported languages (en, nl, de, es, fr) 5. **Review email content** - Approve English text for translation 6. **Create translation keys** - Add approved text to language files ## Usage Tips 1. **Find User IDs**: ```bash php artisan tinker --execute="echo App\Models\User::where('email', 'user@example.com')->first()->id;" ``` 2. **Test Theme Colors**: ```bash TIMEBANK_THEME=uuro php artisan email:send-test --type=inactive-warning-1 --receiver=user --id=102 ``` 3. **Test Language**: ```bash # Change user's language first php artisan tinker --execute="\$u = App\Models\User::find(102); \$u->lang_preference = 'nl'; \$u->save();" # Then send email php artisan email:send-test --type=inactive-warning-1 --receiver=user --id=102 ``` 4. **Batch Testing**: ```bash # Queue multiple emails php artisan email:send-test --type=inactive-warning-1 --receiver=user --id=102 --queue php artisan email:send-test --type=inactive-warning-2 --receiver=user --id=102 --queue php artisan email:send-test --type=inactive-warning-final --receiver=user --id=102 --queue # Process queue php artisan queue:work --stop-when-empty ``` ## Documentation See **EMAIL-TESTING-GUIDE.md** for comprehensive documentation including: - All available email types - Command options - Usage examples - Troubleshooting guide - Theme and language testing - Batch testing scripts