import type { CreateBookingFormData } from "./createBooking.types";

type CoreResponse<T = any> = {
  success: boolean;
  message?: string;
  data?: T;
};

export async function createExternalRCIBooking(
  payload: CreateBookingFormData,
  headers?: Record<string, string>,
): Promise<CoreResponse> {
  const baseUrl = process.env.CORE_API_URL || process.env.VITE_CORE_API;

  if (!baseUrl) {
    return { success: false, message: "CORE_API_URL not configured" };
  }

  const res = await fetch(
    `${baseUrl}/v1/admin-console/bookings/externals/rci/create`,
    {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        ...(headers || {}),
      },
      body: JSON.stringify(payload),
    },
  );

  const text = await res.text();
  const contentType = res.headers.get("content-type") || "";
  const data = contentType.includes("application/json")
    ? JSON.parse(text)
    : { message: text };

  if (!res.ok) {
    return {
      success: false,
      message: data?.message || "Unauthorized Access",
      data,
    };
  }

  return {
    success: true,
    data,
    message: data?.message || "Booking created successfully",
  };
}
