import { getAdminSessionFromRequest } from "../../../../../auth";
import { fail, ok } from "../../../_lib";
import { getParticipantQrEmailTemplate, saveParticipantQrEmailTemplate } from "../_email-template";

export async function GET(request: Request) {
  try {
    if (!await getAdminSessionFromRequest(request)) return fail(request, "UNAUTHORIZED", "Admin login is required.", 401);
    return ok(request, await getParticipantQrEmailTemplate());
  } catch (error) {
    return fail(request, "EMAIL_TEMPLATE_UNAVAILABLE", "Participant email template could not be loaded.", 500, error instanceof Error ? error.message : error);
  }
}

export async function PATCH(request: Request) {
  try {
    if (!await getAdminSessionFromRequest(request)) return fail(request, "UNAUTHORIZED", "Admin login is required.", 401);
    const payload = await request.json() as { subject?: string; body?: string };
    return ok(request, await saveParticipantQrEmailTemplate({
      subject: payload.subject ?? "",
      body: payload.body ?? ""
    }));
  } catch (error) {
    return fail(request, "EMAIL_TEMPLATE_UPDATE_FAILED", "Participant email template could not be saved.", 500, error instanceof Error ? error.message : error);
  }
}
