import type { OrderListQuery, OrderOverviewFilter } from "../../../types";

export const overviewFilters: Record<
  OrderOverviewFilter,
  { importStatus?: string; archivedStatus?: string; trackingStatus?: string }
> = {
  all: {},
  pending: { importStatus: "not-imported" },
  imported: { importStatus: "imported" },
  failed: { importStatus: "failed" },
  archived: { archivedStatus: "archived" },
  needs_tracking: { trackingStatus: "needs-tracking" },
};

export const initialOrderQuery: OrderListQuery = {
  page: 1,
  saleChannelId: "",
  search: "",
  overview: "all",
};

export const normalizeOrderQuery = (value: unknown): OrderListQuery => {
  if (typeof value !== "object" || value === null) return initialOrderQuery;
  const page = "page" in value ? Number(value.page) : 1;
  const overview = "overview" in value ? value.overview : "all";

  return {
    page: Number.isSafeInteger(page) && page > 0 ? page : 1,
    saleChannelId:
      "saleChannelId" in value && typeof value.saleChannelId === "string"
        ? value.saleChannelId
        : "",
    search: "search" in value && typeof value.search === "string" ? value.search : "",
    overview:
      typeof overview === "string" &&
      Object.prototype.hasOwnProperty.call(overviewFilters, overview)
        ? (overview as OrderOverviewFilter)
        : "all",
  };
};
