import type { Request, Response, NextFunction } from 'express';
import { BookingService, type BookingPayload } from '../services/booking.service';
import { validateBooking } from '../utils/validators';

export const BookingController = {
  async create(req: Request, res: Response, next: NextFunction) {
    try {
      const errors = validateBooking(req.body);
      if (errors.length > 0) {
        return res.status(400).json({ errors });
      }

      const payload = req.body as BookingPayload;
      await BookingService.sendConfirmationEmails(payload);

      res.status(201).json({ success: true, message: 'Réservation envoyée avec succès' });
    } catch (err) {
      console.error('Erreur envoi email réservation:', err);
      next(err);
    }
  },

  async healthCheck(_req: Request, res: Response) {
    const isConnected = await BookingService.verifyConnection();
    res.json({ smtp: isConnected ? 'ok' : 'échec' });
  },
};