import { NextResponse } from "next/server"
import { asc, eq } from "drizzle-orm"
import { db } from "@/lib/db"
import { tenants } from "@/lib/db/schema"
import { getSessionUser } from "@/lib/session"
import { toCsv } from "@/lib/db/admin-queries"
import { getEffectiveOwnerId } from "@/lib/account"

export async function GET() {
  const user = await getSessionUser()
  if (!user) return NextResponse.json({ error: "Unauthorized" }, { status: 401 })

  const ownerId = await getEffectiveOwnerId(user.id)

  const rows = await db.query.tenants.findMany({
    where: eq(tenants.user_id, ownerId),
    with: {
      property: { columns: { name: true } },
      unit: { columns: { unit_number: true } },
    },
    orderBy: asc(tenants.last_name),
  })

  const csv = toCsv(
    ["First Name", "Last Name", "Email", "Phone", "Property", "Unit", "Status", "Move In Date", "Notes"],
    rows.map((t) => [
      t.first_name ?? "",
      t.last_name ?? "",
      t.email ?? "",
      t.phone ?? "",
      t.property?.name ?? "",
      t.unit?.unit_number ?? "",
      t.status ?? "",
      t.move_in_date ?? "",
      t.notes ?? "",
    ])
  )

  return new NextResponse(csv, {
    headers: {
      "Content-Type": "text/csv; charset=utf-8",
      "Content-Disposition": 'attachment; filename="tenants.csv"',
    },
  })
}
