import { ContactEmailHistoryItem } from "./map-campaign-log-to-email-history-item";

const CSV_HEADERS = ["Data de Envio", "Assunto", "Remetente", "Status", "Aberto", "Aberturas", "Cliques"];

function escapeCsvField(value: string): string {
  return `"${value.replace(/"/g, '""')}"`;
}

/** `;`-delimitado com BOM UTF-8 — compatível com Excel/LibreOffice em pt-BR. */
export function buildEmailHistoryCsv(items: ContactEmailHistoryItem[]): string {
  const rows = items.map((item) => [
    new Date(item.sentAt).toLocaleString("pt-BR"),
    escapeCsvField(item.subject),
    escapeCsvField(`${item.senderName} <${item.senderEmail}>`),
    item.status,
    item.opened ? "Sim" : "Não",
    String(item.openCount),
    String(item.clickCount),
  ]);

  const body = [CSV_HEADERS.join(";"), ...rows.map((row) => row.join(";"))].join("\n");
  return "﻿" + body;
}
