From fc635c6ce35d8b40baffb456e25342957a781940 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Fri, 6 Sep 2024 10:47:09 +0700 Subject: update solr mapping category management --- src/lib/home/api/categoryManagementApi.js | 70 ++++++++++++++++++++++++++--- src/lib/home/components/CategoryDynamic.jsx | 21 +++++++++ 2 files changed, 85 insertions(+), 6 deletions(-) (limited to 'src/lib/home') diff --git a/src/lib/home/api/categoryManagementApi.js b/src/lib/home/api/categoryManagementApi.js index b70d60ce..54a6c1ac 100644 --- a/src/lib/home/api/categoryManagementApi.js +++ b/src/lib/home/api/categoryManagementApi.js @@ -1,8 +1,66 @@ -import odooApi from '@/core/api/odooApi' +// import odooApi from '@/core/api/odooApi' -const categoryManagementApi = async () => { - const dataCategoryManagement = await odooApi('GET', '/api/v1/categories_management') - return dataCategoryManagement -} +// const categoryManagementApi = async () => { +// const dataCategoryManagement = await odooApi('GET', '/api/v1/categories_management') +// return dataCategoryManagement +// } -export default categoryManagementApi +// export default categoryManagementApi + + + +export const fetchPopulerProductSolr = async () => { + let sort ='sort=sequence_i asc'; + try { + const response = await fetch(`/solr/category_management/query?q=*:*&q.op=OR&indent=true&${sort}`); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + const data = await response.json(); + const promotions = await map(data.response.docs); + return promotions; + } catch (error) { + console.error("Error fetching promotion data:", error); + return []; + } + }; + + const map = async (promotions) => { + console.log("promotions",promotions) + const result = []; + for (const promotion of promotions) { + console.log("promotion",promotion) + const mappedCategories = promotion.categories.map((level2) => { + console.log("level2",JSON.parse(level2)) + const childFrontend = level2.child_frontend_id_i.map((level3) => { + return { + id_level_3: level3.id_level_3, + name: level3.name, + numFound: level3.numFound, + image: level3.image + }; + }); + + return { + id_level_2: level2.id_level_2, + name: level2.name, + numFound: level2.numFound, + image: level2.image, + child_frontend_id_i: childFrontend + }; + }); + + const data = { + id: promotion.id, + category_id_i: promotion.category_id_i, + name: promotion.name_s, + sequence: promotion.sequence_i, + numFound: promotion.numFound_i, + image: promotion.image_s, + categories: mappedCategories + }; + result.push(data); + } + return result; + }; + \ No newline at end of file diff --git a/src/lib/home/components/CategoryDynamic.jsx b/src/lib/home/components/CategoryDynamic.jsx index 14015e28..11a15d6d 100644 --- a/src/lib/home/components/CategoryDynamic.jsx +++ b/src/lib/home/components/CategoryDynamic.jsx @@ -14,6 +14,27 @@ import { Navigation, Pagination, Autoplay } from 'swiper'; const CategoryDynamic = () => { + const [manufactures, setManufactures] = useState([]) + const loadBrand = useCallback(async () => { + // setIsLoading(true) + //Get brand from odoo + /*const result = await odooApi( + 'GET', + `/api/v1/manufacture?limit=0&offset=${manufactures.length}&name=${name}` + )*/ + + // Change get brands from solr + const items = await fetchPopulerProductSolr(); + + console.log("items",items) + + // setIsLoading(false) + // setManufactures((manufactures) => [...result.data]) + }, []) + + useEffect(() => { + loadBrand() + }, [loadBrand]) const { categoryManagement } = useCategoryManagement(); // const [categoryData, setCategoryData] = useState({}); // const [subCategoryData, setSubCategoryData] = useState({}); -- cgit v1.2.3