import { Request, Response } from 'express';

import * as emailService from '@/modules/communication/email/email.service';
import catchAsync from '@/shared/utils/catchAsync';
import { pick } from '@/shared/utils';
import responseCodes from '@/shared/utils/responseCode/responseCode';

const { EmailResponseCodes } = responseCodes;

export const getEmail = catchAsync(async (req: Request, res: Response) => {
  const companyId = req.user.company.id;
  const filter = pick(req.query, ['search']);
  const options = pick(req.query, [
    'sortBy',
    'limit',
    'page',
    'populate',
    'includeTimeStamps',
  ]);

  const emails = await emailService.queryEmail(filter, options, companyId);

  res.success(emails, EmailResponseCodes.SUCCESS, 'Email Fetched Successfully');
});

export const updateTemplate = catchAsync(
  async (req: Request, res: Response) => {
    const { templateId } = pick(req.params, ['templateId']);

    const result = await emailService.updateTemplate(templateId, req.body);
    res.success(
      result,
      EmailResponseCodes.SUCCESS,
      'Template Updated Successfully',
    );
  },
);
