import { createCoreAPIClient } from "@/lib/features/coreClient";

const coreClient = createCoreAPIClient();

export async function addDestinationUnitBookingOption(payload: {
  valid_from: string;
  valid_to?: string;
  points: number;
  is_active: boolean;
  member_account_type_id: string;
  pricings: Array<
    | { pricing_type: "FLAT_RATE"; price: number; currency: string }
    | {
        pricing_type: "TRAVELLER_RATE";
        traveller_type: "ADULT" | "CHILDREN";
        price: number;
        currency: string;
      }
  >;

  destination_id: string;
  unit_id: string;
}) {
  const response = await coreClient<null>(
    `/admin/v1/destinations/${payload.destination_id}/units/${payload.unit_id}/booking-options`,
    {
      method: "POST",
      body: JSON.stringify({
        ...payload,
      }),
    },
  );
  return response;
}

export async function updateDestinationUnitBookingOption(payload: {
  id: string;
  valid_from?: string;
  valid_to?: string;
  points?: number;
  is_active?: boolean;
  member_account_type_id?: string;
  pricings?: Array<
    | { pricing_type: "FLAT_RATE"; price: number; currency: string }
    | {
        pricing_type: "TRAVELLER_RATE";
        traveller_type: "ADULT" | "CHILDREN";
        price: number;
        currency: string;
      }
  >;
  destination_id: string;
  unit_id: string;
}) {
  const response = await coreClient<null>(
    `/admin/v1/destinations/${payload.destination_id}/units/${payload.unit_id}/booking-options/${payload.id}`,
    {
      method: "PATCH",
      body: JSON.stringify({
        valid_from: payload.valid_from,
        valid_to: payload.valid_to,
        points: payload.points,
        is_active: payload.is_active,
        member_account_type_id: payload.member_account_type_id,
        pricings: payload.pricings,
      }),
    },
  );
  return response;
}

export async function deleteDestinationUnitBookingOption(payload: {
  id: string;
  destination_id: string;
  unit_id: string;
}) {
  const response = await coreClient<null>(
    `/admin/v1/destinations/${payload.destination_id}/units/${payload.unit_id}/booking-options/${payload.id}`,
    {
      method: "DELETE",
    },
  );
  return response;
}
