import { NextResponse } from 'next/server'; import { prisma } from '../../../../../lib/prisma'; import { expandBlockedDates, getCalendarRanges } from '../../../../../lib/calendar'; export async function GET(_: Request, { params }: { params: { id: string } }) { const monthParam = Number(new URL(_.url).searchParams.get('month') ?? new Date().getUTCMonth()); const yearParam = Number(new URL(_.url).searchParams.get('year') ?? new Date().getUTCFullYear()); const monthsParam = Math.min(Number(new URL(_.url).searchParams.get('months') ?? 1), 12); const forceRefresh = new URL(_.url).searchParams.get('refresh') === '1'; const month = Number.isFinite(monthParam) ? monthParam : new Date().getUTCMonth(); const year = Number.isFinite(yearParam) ? yearParam : new Date().getUTCFullYear(); const months = Number.isFinite(monthsParam) && monthsParam > 0 ? monthsParam : 1; const listing = await prisma.listing.findUnique({ where: { id: params.id }, select: { calendarUrls: true } }); if (!listing) { return NextResponse.json({ error: 'Listing not found' }, { status: 404 }); } const urls = (listing.calendarUrls ?? []).filter(Boolean); if (!urls.length) { return NextResponse.json({ blockedDates: [] }); } const start = new Date(Date.UTC(year, month, 1)); const end = new Date(start); end.setUTCMonth(end.getUTCMonth() + months); const ranges = await getCalendarRanges(urls, { forceRefresh }); const blockedDates = expandBlockedDates(ranges, start, end); return NextResponse.json({ blockedDates }); }