import { MailOptions } from 'nodemailer/lib/sendmail-transport';
import { EEnvVariable } from '../configuration/enums/env-variable.enum';
import { EEmailTemplate, EmailTemplateData } from './enums/eemail-template';

type EmailTemplateDataType<T extends EEmailTemplate = EEmailTemplate> = {
  [template: string]: (data: EmailTemplateData[T]) => Partial<MailOptions>;
};

const REPLY_TO = () => ({
  replyTo: process.env[EEnvVariable.MAILER_REPLY_TO],
});

export const EMAIL_TEMPLATE_SEND_DATA: EmailTemplateDataType = {
  [EEmailTemplate.EXCEPTION_NOTIFY]: (
    data: EmailTemplateData[EEmailTemplate.EXCEPTION_NOTIFY]
  ) => ({
    ...REPLY_TO(),
    subject: `Support Service: Exception notification "${data.namespace} - ${data.exceptionType}"`,
  }),

  [EEmailTemplate.NEW_MESSAGE]: (
    data: EmailTemplateData[EEmailTemplate.NEW_MESSAGE]
  ) => ({
    ...REPLY_TO(),
    subject: `Support answer in CENOS: ${data.ticketName}`,
    from: `CENOS Support team ${process.env['CENOS_SUPPORT_MAILER_FROM']}`,
  }),
};
