import { brands } from './../../mockData/brandsList';
import axios from "axios";
import { baseUrl } from "../../constants/urls";
import categoriesParams from "../../components/categoriesPage/common/CategoriesParams";
import _ from 'lodash';

export const fetchCatgories = async (payload: any) => {
  const url = `${baseUrl}/api/productsCategories`;
  const search_res = await axios.get(url, { params: { ...payload } });
  return search_res.data;
};

export const fetchCatgoriesES = async (payload: any) => {
  const url = `${baseUrl}/api/search-products`;
  const search_res = await axios.get(url, { params: { ...payload } });
  return search_res.data;
};

export const fetchAttributesES = async (payload: any) => {
  const url = `${baseUrl}/api/search-products`;
  const search_res = await axios.get(url, { params: { ...payload } });
  return search_res.data;
};

export const fetchForCatgoriesPage = async (payload: categoriesParams) => {
  const url = `${baseUrl}/api/productsCategories`;

  const params = {
    category_id: parseInt(payload.categoryId),
    page: payload.page,
    limit: payload.pageLimit,
  };

  const response = await axios.get(url, { params });
  let categoriesList = [],categoryData={};
  
  
  const brands =response.data.brand;


  if (response.data.categories && response.data.categories.length) {
    categoriesList = getCategoryList(payload.categoryId,
      response.data.categories[0].children
    );
    
  }


  return {categoriesList,brands};
};

export const fetchBestSellerProducts = async (id:any) => {
  const url = `${baseUrl}/api/products?category_id=${id}&page=1&limit=30&featured=1`;
  const featuredProducts = await axios.get(url);
  return featuredProducts.data;
};

const getCategoryList = (categoryid: any, arrList: any) =>
  (arrList || []).reduce(
    (acc: any, obj: any) =>
      acc.concat(
        obj.category_id === categoryid ? obj : [],
        getCategoryList(categoryid, obj.children)
      ),
    []
  );

 