import { Router, Request, Response } from 'express';
import { db } from '../../database/db';
import { SmsService } from './sms.service';

const router = Router();

// GET /api/sms/logs - List SMS dispatch logs
router.get('/logs', (req: Request, res: Response) => {
  res.json({ success: true, count: db.sms_logs.length, data: db.sms_logs });
});

// POST /api/sms/send - Send single or bulk SMS
router.post('/send', async (req: Request, res: Response) => {
  try {
    const { phone, message, template_type, subscriber_username } = req.body;
    if (!phone || !message) {
      return res.status(400).json({ success: false, message: 'phone and message required' });
    }

    const log = await SmsService.sendSms({
      phone,
      subscriberUsername: subscriber_username,
      templateType: template_type || 'PROMO_BULK',
      message
    });

    res.json({ success: true, message: 'SMS dispatched successfully.', data: log });
  } catch (err: any) {
    res.status(500).json({ success: false, message: err.message });
  }
});

// POST /api/sms/run-expiry-reminders - Run automated expiry scan & send SMS
router.post('/run-expiry-reminders', async (req: Request, res: Response) => {
  try {
    const count = await SmsService.runAutomatedExpiryReminders();
    res.json({ success: true, message: `Dispatched ${count} expiry reminder SMS alerts.` });
  } catch (err: any) {
    res.status(500).json({ success: false, message: err.message });
  }
});

export const smsRouter = router;
