import { defaultResponderForAppDir } from "app/api/defaultResponderForAppDir";
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
 */
async function getHandler() {
  // 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;
}

export const GET = defaultResponderForAppDir(getHandler);
