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

const coreClient = createCoreAPIClient();

export async function addDestinationUnitOccupancy(payload: {
  occupancies: {
    type: string;
    max_occupancy: number;
    min_age: number;
    max_age: number;
  }[];
  destination_id: string;
  unit_id: string;
}) {
  const response = await coreClient<null>(
    `/admin/v1/destinations/${payload.destination_id}/units/${payload.unit_id}/occupancies`,
    {
      method: "POST",
      body: JSON.stringify({
        occupancies: payload.occupancies,
      }),
    },
  );
  return response;
}

export async function updateDestinationUnitOccupancy(payload: {
  occupancies: {
    id: string;
    type?: string;
    max_occupancy?: number;
    min_age?: number; // Max age is also required if updating min age
    max_age?: number; // Min age is also required if updating max age
  }[];
  destination_id: string;
  unit_id: string;
}) {
  const response = await coreClient<null>(
    `/admin/v1/destinations/${payload.destination_id}/units/${payload.unit_id}/occupancies`,
    {
      method: "PATCH",
      body: JSON.stringify({
        occupancies: payload.occupancies,
      }),
    },
  );
  return response;
}

export async function deleteDestinationUnitOccupancy(payload: {
  occupancies: {
    id: string;
  }[];
  destination_id: string;
  unit_id: string;
}) {
  const response = await coreClient<null>(
    `/admin/v1/destinations/${payload.destination_id}/units/${payload.unit_id}/occupancies`,
    {
      method: "DELETE",
      body: JSON.stringify({
        occupancies: payload.occupancies,
      }),
    },
  );
  return response;
}
