import { UserEmailSettingsService } from '../services/UserEmailSettingsService';
import { UserEmailSettingsView } from '../views/UserEmailSettingsView';

export class EmailSettingsController {
  constructor(private emailSettingsService = new UserEmailSettingsService()) {}

  get = async (req: import('express').Request, res: import('express').Response, next: import('express').NextFunction) => {
    try {
      const settings = await this.emailSettingsService.getForUser(req.userId!);
      res.json(UserEmailSettingsView.toHost(settings));
    } catch (err) {
      next(err);
    }
  };

  update = async (req: import('express').Request, res: import('express').Response, next: import('express').NextFunction) => {
    try {
      const settings = await this.emailSettingsService.update(req.userId!, req.body);
      res.json(UserEmailSettingsView.toHost(settings));
    } catch (err) {
      next(err);
    }
  };

  sendTest = async (req: import('express').Request, res: import('express').Response, next: import('express').NextFunction) => {
    try {
      await this.emailSettingsService.sendTestEmail(req.userId!, req.body.toEmail);
      res.json({ message: 'Test email sent successfully.' });
    } catch (err) {
      next(err);
    }
  };
}
