import { formatNumber, targetCpa } from "@/data/dashboard";
import type { CampaignPerformance } from "@/lib/campaign-performance";
import { calculateCampaignCpa } from "@/lib/campaign-performance";

export function CampaignTable({ campaigns }: { campaigns: CampaignPerformance[] }) {
  const rankedCampaigns = [...campaigns].sort((a, b) => {
    const aCpa = calculateCampaignCpa(a) ?? Number.POSITIVE_INFINITY;
    const bCpa = calculateCampaignCpa(b) ?? Number.POSITIVE_INFINITY;
    return aCpa - bCpa;
  });

  return <div className="tableScroll"><table><thead><tr><th>Campagne</th><th>Dépense</th><th>Réussites</th><th>Coût</th><th>Cible</th></tr></thead><tbody>{rankedCampaigns.map((campaign) => {
    const cpa = calculateCampaignCpa(campaign);
    return <tr key={`${campaign.platform}-${campaign.campaign_id}`}><td>{campaign.campaign_name}</td><td>{formatNumber(campaign.spend_mad)}</td><td>{campaign.onboarding_success.toLocaleString("fr-FR")}</td><td>{cpa === null ? "N/A" : formatNumber(cpa)}</td><td>{cpa === null ? <span className="pill">N/A</span> : <span className={`pill ${cpa <= targetCpa ? "ok" : cpa < 5000 ? "warn" : "bad"}`}>{cpa <= targetCpa ? "tenue" : "dépassée"}</span>}</td></tr>;
  })}</tbody></table></div>;
}
