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

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

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

  const dateStr = new Date().toISOString().split("T")[0];
  const filename = `revenue-${dateStr}.csv`;

  const csvContent = await exportRevenueCSV();

  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) => handleExportRevenue(request);
export const action = async ({ request }: ActionFunctionArgs) => handleExportRevenue(request);
