# Simulator API - Quick Start Guide

## What is the Simulator API?

The Simulator API provides mock endpoints for testing email and SMS notifications without using real third-party services. It:
- **Sends real emails** via Django SMTP
- **Prints SMS messages** to terminal with formatted output
- **Integrates seamlessly** with the existing `NotificationService`

## Quick Start (5 Minutes)

### 1. Start the Development Server

```bash
cd /home/ismail/projects/HH
python manage.py runserver
```

### 2. Enable the Simulator

Edit your `.env` file and add these lines:

```bash
# Enable external API notifications
EMAIL_API_ENABLED=true
SMS_API_ENABLED=true

# Point to simulator endpoints
EMAIL_API_URL=http://localhost:8000/api/simulator/send-email
SMS_API_URL=http://localhost:8000/api/simulator/send-sms

# Simulator authentication (any value works)
EMAIL_API_KEY=simulator-test-key
SMS_API_KEY=simulator-test-key

# Authentication method
EMAIL_API_AUTH_METHOD=bearer
SMS_API_AUTH_METHOD=bearer

# Email SMTP settings (for real emails)
EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=10.10.1.110
EMAIL_PORT=2225
EMAIL_USE_TLS=true
DEFAULT_FROM_EMAIL=noreply@px360.sa
```

### 3. Test the Simulator

Run the test script:

```bash
python test_simulator.py
```

This will:
- ✅ Send test emails (via SMTP)
- ✅ Send test SMS (printed to terminal)
- ✅ Check simulator health
- ✅ Test error handling
- ✅ Display statistics

### 4. Use in Your Code

```python
from apps.notifications.services import NotificationService

# Send email
log = NotificationService.send_email_via_api(
    message='Your account has been created!',
    email='user@example.com',
    subject='Welcome to PX360'
)

# Send SMS
log = NotificationService.send_sms_via_api(
    message='Your verification code is 123456',
    phone='+966501234567'
)
```

## Expected Output

### Email (in terminal)
```
======================================================================
📧 EMAIL SIMULATOR - Request #1
======================================================================
To:      user@example.com
Subject: Welcome to PX360
Message: Your account has been created!
HTML:    No
======================================================================
```

### SMS (in terminal)
```
══════════════════════════════════════════════════════════════════════
               📱 SMS SIMULATOR                                  
══════════════════════════════════════════════════════════════════════
Request #: 1                                                    
══════════════════════════════════════════════════════════════════════
To:      +966501234567                                           
Time:    2026-01-12 18:08:00                                   
══════════════════════════════════════════════════════════════════════
Message:                                                        
         Your verification code is 123456                        
══════════════════════════════════════════════════════════════════════
```

## Available Endpoints

| Endpoint | Method | Description |
|----------|--------|-------------|
| `/api/simulator/send-email` | POST | Send email via SMTP |
| `/api/simulator/send-sms` | POST | Print SMS to terminal |
| `/api/simulator/health` | GET | Check simulator status |
| `/api/simulator/reset` | GET | Reset counters |

## Check Simulator Status

```bash
curl http://localhost:8000/api/simulator/health
```

Response:
```json
{
  "status": "healthy",
  "statistics": {
    "total_requests": 5,
    "email_requests": 3,
    "sms_requests": 2
  }
}
```

## Switching to Real APIs

When ready to use real notification services, just update `.env`:

```bash
EMAIL_API_ENABLED=true
EMAIL_API_URL=https://api.yourservice.com/send-email
SMS_API_ENABLED=true
SMS_API_URL=https://api.yourservice.com/send-sms
```

**No code changes required!**

## Troubleshooting

### Simulator not working?
1. Check server is running: `python manage.py runserver`
2. Check `.env` has correct URLs
3. Check health: `curl http://localhost:8000/api/simulator/health`

### Emails not received?
1. Verify SMTP settings in `.env`
2. Check `logs/px360.log` for errors
3. Check spam folder

### SMS not showing in terminal?
1. Ensure server running in visible terminal
2. Check `logs/px360.log` for SMS logs

## Documentation

- **Full Documentation**: [SIMULATOR_API.md](SIMULATOR_API.md)
- **External API Service**: [EXTERNAL_API_NOTIFICATION.md](EXTERNAL_API_NOTIFICATION.md)
- **Test Script**: `test_simulator.py`

## Support

For issues or questions:
1. Check logs: `logs/px360.log`
2. Run test script: `python test_simulator.py`
3. See full documentation: `docs/SIMULATOR_API.md`

## Summary

✅ **Email Simulator**: Sends real emails via SMTP  
✅ **SMS Simulator**: Prints formatted SMS to terminal  
✅ **Easy Setup**: Just update `.env` file  
✅ **No Code Changes**: Works with existing `NotificationService`  
✅ **Production Ready**: Easy switch to real APIs  

Happy testing! 🚀
