import { NextResponse } from "next/server" import { desc, eq } from "drizzle-orm" import { db } from "@/lib/db" import { rent_payments } from "@/lib/db/schema" import { getSessionUser } from "@/lib/session" export async function GET() { const user = await getSessionUser() if (!user) return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) const rows = await db.query.rent_payments.findMany({ where: eq(rent_payments.user_id, user.id), with: { tenant: { columns: { first_name: true, last_name: true, email: true } }, property: { columns: { name: true } }, unit: { columns: { unit_number: true } }, }, orderBy: desc(rent_payments.due_date), }) const headers = ["Tenant", "Email", "Property", "Unit", "Amount", "Due Date", "Paid Date", "Status", "Method", "Notes"] const lines = [ headers.join(","), ...rows.map((p) => [ `"${p.tenant?.first_name ?? ""} ${p.tenant?.last_name ?? ""}"`, `"${p.tenant?.email ?? ""}"`, `"${p.property?.name ?? ""}"`, `"${p.unit?.unit_number ?? ""}"`, p.amount ?? 0, p.due_date ?? "", p.paid_date ?? "", p.status ?? "", `"${p.payment_method ?? ""}"`, `"${(p.notes ?? "").replace(/"/g, "'")}"`, ].join(",")) ] const csv = lines.join("\n") return new NextResponse(csv, { headers: { "Content-Type": "text/csv; charset=utf-8", "Content-Disposition": 'attachment; filename="rent-payments.csv"', }, }) }