# 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
