import { getAxiosClient, makeGetRequest } from "./client";
import { kgToLbs } from "../helpers/projectHelper";
import { UseAccessToken } from "@/utils/conditions/getAccessToken";
type AccessToken = string | null | undefined;

export async function getAveragePortRamp(access_token: AccessToken) {
  const accessToken = await UseAccessToken();
    const client = getAxiosClient(accessToken);
  return makeGetRequest(client, "/api/v1/avg");
}

export async function getPorts() {
  const accessToken = await UseAccessToken();
  const client = getAxiosClient(accessToken);
  return makeGetRequest(client, "/api/v1/ports");
}

export async function getQuotes(access_token: AccessToken) {
  const accessToken = await UseAccessToken();
    const client = getAxiosClient(accessToken);
  return makeGetRequest(client, "/api/v1/recent_spot_quotes");
}
export async function DayoutAverage(access_token: AccessToken) {
  const accessToken = await UseAccessToken();
    const client = getAxiosClient(accessToken);
  return makeGetRequest(client, "/api/v1/day-out-avg");
}
export async function createQuickQuote(
  access_token: AccessToken,
  payload: any,
  finalRange: any,
) {
  try {
    let createQuoteData = {
      port_id: payload.port_id,
      equipment: payload.equipment,
      terminal_id: payload.terminal_id,
      type: payload.type,
      quantity: payload.quantity,
      size: payload.size,
      market: payload.market,
      origin_destination: payload.origin_destination,
      special_services: payload.special_services,
      weight: payload.weight.toFixed(2),
      round_trip_miles: finalRange,
      commodity: payload?.commodity,
      child_customer_id: payload?.child_customer_id
    } as any;
    let stateCode = payload.origin_state_code;
    let array = stateCode.split("-");
    let state = array[array.length - 1];

    if (payload.weight_type === "kg") {
      createQuoteData.weight = kgToLbs(payload.weight);
    }

    if (payload.type == "import") {
      createQuoteData.destination_zip = payload.origin_zip;
      createQuoteData.destination_state_code = state;
      createQuoteData.destination_lat = payload.origin_lat;
      createQuoteData.destination_lng = payload.origin_lng;
      createQuoteData.destination_city = payload.origin_city;
      createQuoteData.origin_zip = payload.origin_zip;
      createQuoteData.origin_state_code = state;
      createQuoteData.origin_lat = payload.origin_lat;
      createQuoteData.origin_lng = payload.origin_lng;
      createQuoteData.origin_city = payload.origin_city;
    } else {
      createQuoteData.origin_zip = payload.origin_zip;
      createQuoteData.origin_state_code = state;
      createQuoteData.origin_lat = payload.origin_lat;
      createQuoteData.origin_lng = payload.origin_lng;
      createQuoteData.origin_city = payload.origin_city;
      createQuoteData.destination_zip = payload.origin_zip;
      createQuoteData.destination_state_code = state;
      createQuoteData.destination_lat = payload.origin_lat;
      createQuoteData.destination_lng = payload.origin_lng;
      createQuoteData.destination_city = payload.origin_city;
    }
    const accessToken = await UseAccessToken();
    const client = getAxiosClient(accessToken);
    const response = await client.post(
      "/api/v1/create-drayage-quotes",
      createQuoteData,
    );
    return response.data;
  } catch (error: any) {
    return {
      ...error?.response?.data,
      status_code: error?.response?.status,
    };
  }
}



export async function QuoteUserNofication(token: any, payload: any) {
  try {
    const accessToken = await UseAccessToken();
    const client = getAxiosClient(accessToken);
    const response = await client.post(
      "/api/v1/quote/create/notification",
      payload,
      
    );
    return response.data;
  } catch (error: any) {
    return {
      ...error.response?.data,
      status_code: error.response?.status,
    };
  }
}