export const isEmpty = (data: any) => {
  if (data === undefined || data === null || data === "null") {
    return true;
  }

  if (typeof data === "object") {
    if (Object.keys(data).length === 0) {
      return true;
    }
  }

  if (typeof data === "string") {
    return [""].includes(data.trim());
  }
};

export const isAuthenticate = () => {
  const token: string = getLocalItem("token");

  if (isEmpty(token)) {
    return false;
  }
  return true;
};

export const getLocalItem = (item: string) => {
  if (typeof window !== "undefined") {
    return localStorage.getItem(item) || "";
  }
  return "";
};

export const addIntoLocalStorage = (item: string, value: string) => {
  localStorage.setItem(item, value);
};

export const requestHeaders = (token?: boolean, multipart?: boolean) => {
  const accessToken = localStorage.getItem("token");

  const header: any = {
    headers: {
      "ngrok-skip-browser-warning": "69420",
    },
  };

  if (multipart) {
    header.headers["Content-Type"] = "multipart/form-data";
  }

  if (token) {
    header.headers["Authorization"] = `Bearer ${accessToken}`;
  }
  return header;
};

export const validateEmail = (email: any) => {
  if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email)) {
    return true;
  } else {
    return false;
  }
};

export const validatePassword = (password: any) => {
  var result = /^(?=.*\d)(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z]).{7,}$/;
  return result.test(password);
};

export const validateMobileNumber = (mobile: any) => {
  var result = /^[0-9]{10}$/;
  return result.test(mobile);
};

export const headerTitle = (inputPath: string) => {
  const parts = inputPath.split("/");
  const firstPart = parts.find((part) => part.trim() !== "")?.trim() || "";
  const pathWithSpaces = firstPart.replace(/-/g, " ");
  const capitalizedWords = pathWithSpaces
    .split(" ")
    .map((word) => word.charAt(0).toUpperCase() + word.slice(1));

  const finalPath = capitalizedWords.join(" ");

  return finalPath;
};

export const getOffsetFromLocalStorage = (): number | undefined => {
  if (typeof window !== "undefined") {
    const storedOffset = localStorage.getItem("stationOffset");
    return storedOffset ? parseInt(storedOffset, 10) : 0;
  }
};

export const setOffsetToLocalStorage = (offset: any) => {
  localStorage.setItem("stationOffset", offset.toString());
};

export const getSelectedPageFromLocalStorage = (): number | undefined => {
  if (typeof window !== "undefined") {
    const pageNo = localStorage.getItem("page-number");
    return pageNo ? parseInt(pageNo, 10) : 0;
  }
};

export const setSelectedPageToLocalStorage = (pageNo: any) => {
  localStorage.setItem("page-number", pageNo.toString());
};

export const getSearchValue = (): string | undefined => {
  if (typeof window !== "undefined") {
    const search = localStorage.getItem("search-value");
    return search ? search : "";
  }
};

export const setSearchValue = (search: any) => {
  localStorage.setItem("search-value", search.toString());
};
