const wms_url = $("meta[name='wms_url']").attr("content");
const api_url = $("meta[name='api_url']").attr("content");
const apiKey = "09Icz1KZSdkIptlIQ6LKv22";
const WMS_URL = wms_url;
const URL = api_url;
const gstVal = 7;

const getHome = "getHome";
const getFaqUri = "getFAQ";
const getPrivacyUri = "getPrivacyPolicy";
const getTncUri = "getTnc";
const getTncRentalUri = "getTncRental";
const getProfile = "getCustomerProfile";
const userRegisterManual = "registerCustomer";
const userLoginManual = "loginCustomer";
const searchUri = "searchVehicle";
const getAllVehicle = "getAllVehicle";
const getVehicleDetail = "getVehicleDetail";
const getAvailability = "vehicleAvability";
const getAvailabilityMany = "vehicleAvabilityMany";
const updateProfile = "updateCustomer";
const setBooking = "addBooking";
const getBooking = "getBookingList";
const addCart = "addCart";
const getCart = "getCartList";
const getSocMed = "getSocialMedia";
const addDriver = "addCustomerDriver";
const getDriver = "getCustomerDriver";
const updateDriver = "updateCustomerDriver";
const getSpaceTypeList = "getTypeItemList";
const partnerRegister = "partnerRegister";
const merchantLogin = "merchantLogin";
const customerSocialLogin = "loginCustomerSocialMedia";
const deleteCustomer = "deleteCustomer";
const merchantRegister = "merchantRegister";
const merchantForgotPassword = "merchantForgotPassword";
const calculatePrice = "calculatePrice";
const addBooking = "addBooking";
const addEmailSubscription = "addEmailSubscription";
const sendEmail = "sendEmail";
const activateMerchant = "activateMerchant";
const deleteDriver = "deleteCustomerDriver";
const deleteCart = "deleteCart";
const sl = "LJNSGX124HSADGNZX";

var cId,
  startDate,
  endDate = "";

function pad(num) {
  return num.toString().padStart(2, "0");
}

function getTimeStamp() {
  var now = new Date();

  return (
    [now.getFullYear(), pad(now.getMonth() + 1), pad(now.getDate())].join("-") +
    " " +
    [pad(now.getHours()), pad(now.getMinutes()), pad(now.getSeconds())].join(
      ":"
    )
  );
}

function genToken(ts) {
  // apiToken = uppercase dari sha256 timeStamp + salt
  return sha256(ts + "" + sl).toUpperCase();
}

function genReq(request, val) {
  var res = "";
  var ts = getTimeStamp();
  let searchKey = "";
  switch (request) {
    case "getHome":
      res = JSON.stringify({
        timeStamp: ts,
        apiToken: genToken(ts),
        vehicleLimit: "10",
      });
      break;
    case "getHomeMobile":
      res = JSON.stringify({
        timeStamp: ts,
        apiToken: genToken(ts),
        vehicleLimit: "10",
        sender: "mobile",
      });
      break;
    case "getFaq":
      res = JSON.stringify({
        timeStamp: ts,
        apiToken: genToken(ts),
      });
      break;
    case "getPrivacy":
      res = JSON.stringify({
        timeStamp: ts,
        apiToken: genToken(ts),
      });
      break;
    case "getTnc":
      res = JSON.stringify({
        timeStamp: ts,
        apiToken: genToken(ts),
      });
      break;

      searchKey = "";
      $.each(val, function (index, value) {
        searchKey = value;
      });

      res = {
        language: "en",
        timeStamp: getTimeStamp(),
        apiToken: genToken(ts),
        sender: "app",
        email: searchKey,
      };
      break;
    case "search":
      searchKey = "";

      let typeId,
        brandId,
        modelId,
        govermentType,
        startDate,
        endDate,
        vehicleYearStart,
        vehicleYearEnd,
        minPrice,
        maxPrice,
        milageStart,
        milageEnd,
        order,
        vehicleStatus,
        ccStart,
        ccEnd,
        itemFrom = "";

      $.each(val, function (index, value) {
        startDate = val.startDate;
        endDate = val.endDate;
        govermentType = val.vt;

        if (govermentType == "all") {
          govermentType = "";
        }
      });

      res = JSON.stringify({
        language: "en",
        timeStamp: getTimeStamp(),
        apiToken: genToken(ts),
        typeId: val.typeId,
        brandId: val.brandId,
        modelId: "",
        govermentType: govermentType,
        startDate: startDate,
        endDate: endDate,
        vehicleYearStart: val.vehicleYear,
        vehicleYearEnd: val.vehicleYear,
        minPrice: "",
        maxPrice: "",
        milageStart: "",
        milageEnd: "",
        order: val.order,
        vehicleStatus: "",

        ccStart: val.ccStart,
        ccEnd: val.ccEnd,

        itemFrom: val.itemFrom,
      });

      break;
    case "getVehicleDetail":
      cId = "";

      $.each(val, function (index, value) {
        cId = value;
      });

      res = JSON.stringify({
        language: "en",
        timeStamp: getTimeStamp(),
        apiToken: genToken(ts),
        vehicleId: cId,
      });

      break;
    case "getVehicleAvailability":
      cId = "";

      // cId = val.cId;
      // startDate = val.startDate;
      // endDate = val.endDate;

      // $.each(val, function (index, value) {

      // });

      res = JSON.stringify({
        language: "en",
        timeStamp: getTimeStamp(),
        apiToken: genToken(ts),
        vehicleId: val.cId,
        startDate: val.startDate,
        endDate: val.endDate,
      });

      break;

    case "getVehicleAvailabilityMany":
      cId = "";

      // cId = val.cId;
      // startDate = val.startDate;
      // endDate = val.endDate;

      // $.each(val, function (index, value) {

      // });

      res = JSON.stringify({
        language: "en",
        timeStamp: getTimeStamp(),
        apiToken: genToken(ts),
        vehicleIds: val.cId,
        startDate: val.startDate,
        endDate: val.endDate,
      });

      break;
    case "updateProfile":
      cId = "";

      res = JSON.stringify({
        language: "en",
        timeStamp: getTimeStamp(),
        apiToken: genToken(ts),
        customerId: val.cId,
        name: val.name,
        phone: val.phone,
        email: val.email,
        password: "",
        driving_license_number: val.driving_license_number,
        driving_license_issue_date: val.driving_license_issue_date,
        dob: val.dob,
        gender: val.gender,
        address: val.address,
        driving_license_type: val.driving_license_type,
      });

      break;

	  case "deleteCustomer":
		cId = "";
  
		res = JSON.stringify({
		  language: "en",
		  timeStamp: getTimeStamp(),
		  apiToken: genToken(ts),

		  customerEmail: val.email,
	
		});
  
		break;
    case "setBooking":
      let vdata = val.vehicleList;
      let driverData = val.driverList;
      res = JSON.stringify({
        timeStamp: val.timeStamp,
        apiToken: val.apiToken,
        customerId: val.customerId,
        paymentMethodId: val.paymentMethodId,
        valetStatus: val.valetStatus,
        totalRentPrice: val.totalRentPrice,
        totalDiscountValue: val.totalDiscountValue,
        taxPercentage: val.taxPercentage,
        taxValue: val.taxValue,
        totalDepositAmount: val.totalDepositAmount,
        grandTotalPrice: val.grandTotalPrice,
        cartIds: val.cartsId,
        vehicleList: [
          {
            vehicleId: vdata[0].vehicleId,
            startDate: vdata[0].startDate,
            endDate: vdata[0].endDate,
            rentPrice: vdata[0].rentPrice,
            discountValue: vdata[0].discountValue,
            totalPrice: vdata[0].totalPrice,
            depositAmount: vdata[0].totalDepositAmount,
          },
        ],
        driverList: [
          {
            driverId: driverData[0].driverId,
          },
        ],
      });

      break;
    case "setBooking1":
      res = JSON.stringify({
        timeStamp: val.timeStamp,
        apiToken: val.apiToken,
        customerId: val.customerId,
        paymentMethodId: val.paymentMethodId,
        valetStatus: val.valetStatus,
        totalRentPrice: val.totalRentPrice,
        totalDiscountValue: val.totalDiscountValue,
        taxPercentage: val.taxPercentage,
        taxValue: val.taxValue,
        totalDepositAmount: val.totalDepositAmount,
        grandTotalPrice: val.grandTotalPrice,
        cartIds: val.cartsId,
        vehicleList: val.vehicleList,
        driverList: val.driverList,
      });

      break;

    case "getBooking":
      cId = val.cId;

      res = JSON.stringify({
        language: "en",
        timeStamp: getTimeStamp(),
        apiToken: genToken(ts),
        customerId: cId,
      });

      break;
    case "getSocMed":
      res = JSON.stringify({
        language: "en",
        timeStamp: getTimeStamp(),
        apiToken: genToken(ts),
      });

      break;
    default:
      break;
  }

  return res;
}
