import nodemailer from 'nodemailer'

interface EmailConfig {
  host: string
  port: number
  secure: boolean
  user: string
  pass: string
  from: string
}

let transporter: nodemailer.Transporter | null = null

export function initializeEmailService(config: EmailConfig) {
  transporter = nodemailer.createTransport({
    host: config.host,
    port: config.port,
    secure: config.secure,
    auth: {
      user: config.user,
      pass: config.pass,
    },
  })
}

export async function sendReportEmail(
  recipients: string[],
  subject: string,
  htmlBody: string,
  pdfAttachment?: Buffer
): Promise<void> {
  if (!transporter) {
    throw new Error('Email service not initialized')
  }

  const mailOptions: nodemailer.SendMailOptions = {
    from: process.env.SMTP_FROM || 'noreply@100mlstore.com',
    to: recipients.join(', '),
    subject,
    html: htmlBody,
  }

  if (pdfAttachment) {
    mailOptions.attachments = [
      {
        filename: 'relatorio-vendas.pdf',
        content: pdfAttachment,
      },
    ]
  }

  await transporter.sendMail(mailOptions)
}

export function generateEmailTemplate(reportData: any): string {
  return `
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <style>
        body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; }
        .container { max-width: 600px; margin: 0 auto; padding: 20px; }
        .header { background-color: #4f46e5; color: white; padding: 20px; text-align: center; }
        .content { padding: 20px; background-color: #f9fafb; }
        .metric { background-color: white; padding: 15px; margin: 10px 0; border-radius: 5px; }
        .footer { text-align: center; padding: 20px; color: #6b7280; font-size: 12px; }
      </style>
    </head>
    <body>
      <div class="container">
        <div class="header">
          <h1>Relatório de Análise de Vendas</h1>
          <p>100mlstore</p>
        </div>
        <div class="content">
          <h2>Sumário Executivo</h2>
          <div class="metric">
            <strong>Receita Total:</strong> €${reportData.kpis?.totalRevenue?.toFixed(2) || '0.00'}
          </div>
          <div class="metric">
            <strong>Número de Pedidos:</strong> ${reportData.kpis?.totalOrders || 0}
          </div>
          <div class="metric">
            <strong>Ticket Médio:</strong> €${reportData.kpis?.averageTicket?.toFixed(2) || '0.00'}
          </div>
          <div class="metric">
            <strong>Clientes Únicos:</strong> ${reportData.kpis?.uniqueCustomers || 0}
          </div>
          <p>Consulte o anexo PDF para o relatório completo com análises detalhadas e recomendações estratégicas.</p>
        </div>
        <div class="footer">
          <p>Este é um email automático. Por favor, não responda.</p>
        </div>
      </div>
    </body>
    </html>
  `
}
