/**
 * Convierte el `orderBy` del front en los params que entiende el back.
 *
 * orderBy: "menor" | "mayor" | "usd" | "ars" | "relevantes" | undefined
 *
 * Devuelve un fragmento de query string (con los `&` adelante) listo para
 * concatenar al endpoint del back. Vacío si no aplica nada.
 */
export const buildOrderByQS = (orderBy?: string | string[]): string => {
  const value = Array.isArray(orderBy) ? orderBy[0] : orderBy;
  switch (value) {
    case "menor":
      return "&sort=precio_menor";
    case "mayor":
      return "&sort=precio_mayor";
    case "usd":
      return "&currency=USD";
    case "ars":
      return "&currency=ARS";
    default:
      return "";
  }
};

/**
 * Construye el fragmento de query string para los filtros opcionales
 * que el back ahora soporta de forma uniforme: rango de precio y orderBy.
 *
 * Acepta cualquiera de los nombres de params que pueden venir del front:
 *   - pricem / pricemin   → min de precio
 *   - pricemx / pricemax  → max de precio
 *   - orderBy             → sort/currency
 *
 * Útil para getServerSideProps cuando se construye la URL al endpoint del back.
 */
export const buildBackendSearchParams = (query: any): string => {
  const orderQS = buildOrderByQS(query.orderBy);

  const priceMin = query.pricem ?? query.pricemin ?? null;
  const priceMax = query.pricemx ?? query.pricemax ?? null;

  const minQS = priceMin ? `&pricem=${encodeURIComponent(priceMin)}` : "";
  const maxQS = priceMax ? `&pricemx=${encodeURIComponent(priceMax)}` : "";

  return `${orderQS}${minQS}${maxQS}`;
};
