import ical from "ical-generator"; import { NextResponse } from "next/server"; import { prisma } from "../../../../lib/prisma"; export async function GET( _request: Request, context: { params: { token: string } } ) { const view = await prisma.userView.findUnique({ where: { token: context.params.token }, include: { items: { include: { event: true } }, user: true } }); if (!view) { return NextResponse.json({ error: "Not found" }, { status: 404 }); } const calendar = ical({ name: `Vereinskalender - ${view.name}`, timezone: "Europe/Berlin" }); view.items .map((item) => item.event) .filter((event) => event.status === "APPROVED") .forEach((event) => { calendar.createEvent({ id: event.id, summary: event.title, description: event.description || undefined, location: event.location || undefined, start: event.startAt, end: event.endAt }); }); return new NextResponse(calendar.toString(), { headers: { "Content-Type": "text/calendar; charset=utf-8" } }); }