* version and verify-booking-token * username route * api/me * logo route * render email in dev * link route * future * nope and geo location * referal link and daily * intercom route and dynamic variables * intercom route and dynamic variables * scim 2.0 and helpscout route * app credentials * api/book events * fix daily import path in tests * fix buildLegacyRequest generation * fix type errors * migrate the /teams/ routes * move cron jobs * fix daily import path in tests * fix buildLegacyRequest generation * fix type errors * migrate the /teams/ routes * move cron jobs * Revert "api/book events" This reverts commit 607a32fb5b754cad090c2d0cbf64a68f990e220e. * mock next server NextResponse to fix daily video * add default responder to teams api * fix search params * uses nextUrl.searchParams instead of new url * uses nextUrl.searchParams instead of new url * remove outdated api config * remove app dir version of inbound dynamic variables * restore pages version of inbound variables * fix missing code from stupid cursor --------- Co-authored-by: Benny Joo <sldisek783@gmail.com>
76 lines
1.7 KiB
TypeScript
76 lines
1.7 KiB
TypeScript
import { NextResponse } from "next/server";
|
|
|
|
import { renderEmail } from "@calcom/emails";
|
|
import { IS_PRODUCTION } from "@calcom/lib/constants";
|
|
import { getTranslation } from "@calcom/lib/server/i18n";
|
|
|
|
/**
|
|
* This API endpoint is used for development purposes to preview email templates
|
|
*/
|
|
export async function GET() {
|
|
// Only allow in development mode
|
|
if (IS_PRODUCTION) {
|
|
return new NextResponse("Only for development purposes", {
|
|
status: 403,
|
|
});
|
|
}
|
|
|
|
const t = await getTranslation("en", "common");
|
|
|
|
// Render the email template
|
|
const emailHtml = await renderEmail("MonthlyDigestEmail", {
|
|
language: t,
|
|
Created: 12,
|
|
Completed: 13,
|
|
Rescheduled: 14,
|
|
Cancelled: 16,
|
|
mostBookedEvents: [
|
|
{
|
|
eventTypeId: 3,
|
|
eventTypeName: "Test1",
|
|
count: 3,
|
|
},
|
|
{
|
|
eventTypeId: 4,
|
|
eventTypeName: "Test2",
|
|
count: 5,
|
|
},
|
|
],
|
|
membersWithMostBookings: [
|
|
{
|
|
userId: 4,
|
|
user: {
|
|
id: 4,
|
|
name: "User1 name",
|
|
email: "email.com",
|
|
avatar: "none",
|
|
username: "User1",
|
|
},
|
|
count: 4,
|
|
},
|
|
{
|
|
userId: 6,
|
|
user: {
|
|
id: 6,
|
|
name: "User2 name",
|
|
email: "email2.com",
|
|
avatar: "none",
|
|
username: "User2",
|
|
},
|
|
count: 8,
|
|
},
|
|
],
|
|
admin: { email: "admin.com", name: "admin" },
|
|
team: { name: "Team1", id: 4 },
|
|
});
|
|
|
|
// Create a response with the HTML content
|
|
const response = new NextResponse(emailHtml);
|
|
|
|
// Set appropriate headers
|
|
response.headers.set("Content-Type", "text/html");
|
|
response.headers.set("Cache-Control", "no-cache, no-store, private, must-revalidate");
|
|
|
|
return response;
|
|
}
|