import { auth } from "@/lib/auth";
import { db } from "@/lib/db";
import { pagosServicios } from "@/lib/schema";
import { desc } from "drizzle-orm";
import { syncPagosServicios } from "@/lib/sync-pagos-servicios";

export async function GET() {
  const session = await auth();
  if (!session) return Response.json({ error: "Unauthorized" }, { status: 401 });

  const rows = await db.select().from(pagosServicios).orderBy(desc(pagosServicios.fecha));
  return Response.json(rows);
}

export async function POST(req: Request) {
  const session = await auth();
  if (!session) return Response.json({ error: "Unauthorized" }, { status: 401 });
  if (session.user.role !== "admin") return Response.json({ error: "Forbidden" }, { status: 403 });

  const body = await req.json();
  const { fecha, monto, notas } = body;

  if (!fecha) {
    return Response.json({ error: "Fecha es requerida" }, { status: 400 });
  }
  if (typeof monto !== "number" || monto <= 0) {
    return Response.json({ error: "Monto debe ser un número positivo" }, { status: 400 });
  }

  const [newPago] = await db.insert(pagosServicios).values({
    fecha,
    monto,
    notas: notas || null,
    creadoPor: session.user.name,
  }).returning();

  await syncPagosServicios();

  return Response.json(newPago, { status: 201 });
}
