import type { LoaderFunctionArgs, ActionFunctionArgs } from "react-router";
import { authenticateAdminRequest } from "../services/admin-auth.server";
import { exportTransactionsCSV } from "../services/admin.server";

const handleExportTransactions = async (request: Request) => {
  const authResult = authenticateAdminRequest(request);

  if (!authResult.isAuthenticated) {
    return new Response("Unauthorized SaaS admin request", { status: 401 });
  }

  const url = new URL(request.url);
  const unmask = url.searchParams.get("unmask") === "true";
  const dateStr = new Date().toISOString().split("T")[0];
  const filename = `transactions-${dateStr}.csv`;

  const csvContent = await exportTransactionsCSV(unmask);

  return new Response(csvContent, {
    status: 200,
    headers: {
      "Content-Type": "text/csv; charset=utf-8",
      "Content-Disposition": `attachment; filename="${filename}"`,
      "Cache-Control": "no-store, no-cache, must-revalidate",
    },
  });
};

export const loader = async ({ request }: LoaderFunctionArgs) => handleExportTransactions(request);
export const action = async ({ request }: ActionFunctionArgs) => handleExportTransactions(request);
