From b30e6a53d660f9ccbc0ded640c2a1dc5df673ff2 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Mon, 2 Sep 2024 16:43:25 +0700 Subject: update fetch data --- src/lib/product/api/productSearchApi.js | 2 +- src/lib/product/components/ProductSearch.jsx | 1 - src/lib/promo/api/productSearchApi.js | 12 ++++++++++++ src/lib/promo/hooks/usePromotionSearch.js | 15 +++++++++++++++ src/pages/api/shop/promo.js | 6 +++--- src/pages/shop/promo/[slug].jsx | 6 +++--- src/utils/solrMapping.js | 12 +++++------- 7 files changed, 39 insertions(+), 15 deletions(-) create mode 100644 src/lib/promo/api/productSearchApi.js create mode 100644 src/lib/promo/hooks/usePromotionSearch.js (limited to 'src') diff --git a/src/lib/product/api/productSearchApi.js b/src/lib/product/api/productSearchApi.js index 670661aa..8ff8e57d 100644 --- a/src/lib/product/api/productSearchApi.js +++ b/src/lib/product/api/productSearchApi.js @@ -3,7 +3,7 @@ import axios from 'axios' const productSearchApi = async ({ query, operation = 'OR' }) => { const dataProductSearch = await axios( - `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/promo?${query}&operation=${operation}` + `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/search?${query}&operation=${operation}` ) return dataProductSearch.data } diff --git a/src/lib/product/components/ProductSearch.jsx b/src/lib/product/components/ProductSearch.jsx index 1f083722..ab55cae0 100644 --- a/src/lib/product/components/ProductSearch.jsx +++ b/src/lib/product/components/ProductSearch.jsx @@ -87,7 +87,6 @@ const ProductSearch = ({ recurse(category); return ids; }; - console.log("queryFinal",queryFinal) useEffect(() => { if(prefixUrl.includes('category')){ const ids = collectIds(dataCategoriesProduct); diff --git a/src/lib/promo/api/productSearchApi.js b/src/lib/promo/api/productSearchApi.js new file mode 100644 index 00000000..582b4486 --- /dev/null +++ b/src/lib/promo/api/productSearchApi.js @@ -0,0 +1,12 @@ +import _ from 'lodash-contrib' +import axios from 'axios' + +const productSearchApi = async ({ query, operation = 'AND' }) => { + const dataProductSearch = await axios( + `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/promo?${query}&operation=${operation}` + ) + console.log("dataProductSearch.data",dataProductSearch.data) + return dataProductSearch.data +} + +export default productSearchApi diff --git a/src/lib/promo/hooks/usePromotionSearch.js b/src/lib/promo/hooks/usePromotionSearch.js new file mode 100644 index 00000000..1a194646 --- /dev/null +++ b/src/lib/promo/hooks/usePromotionSearch.js @@ -0,0 +1,15 @@ +import { useQuery } from 'react-query' +import productSearchApi from '../api/productSearchApi' +import _ from 'lodash-contrib' + +const usePromotionSearch = ({ query, operation }) => { + const queryString = _.toQuery(query) + const fetchProductSearch = async () => await productSearchApi({ query: queryString , operation : operation}) + const productSearch = useQuery(`promoSearch-${queryString}`, fetchProductSearch) + + return { + productSearch + } +} + +export default usePromotionSearch diff --git a/src/pages/api/shop/promo.js b/src/pages/api/shop/promo.js index 353ff3df..e6867e89 100644 --- a/src/pages/api/shop/promo.js +++ b/src/pages/api/shop/promo.js @@ -108,12 +108,12 @@ export default async function handler(req, res) { let result = await axios( process.env.SOLR_HOST + '/solr/promotion_program_lines/select?' + parameter.join('&') ); - console.log("result",result) try { result.data.response.products = promoMappingSolr( - result.data.response.docs, - auth?.pricelist || false + result.data.response.docs ); + console.log("result.data.response.products",result.data.response.products) + result.data.responseHeader.params.start = parseInt( result.data.responseHeader.params.start ); diff --git a/src/pages/shop/promo/[slug].jsx b/src/pages/shop/promo/[slug].jsx index 544286f9..ce73ebd1 100644 --- a/src/pages/shop/promo/[slug].jsx +++ b/src/pages/shop/promo/[slug].jsx @@ -24,7 +24,7 @@ import whatsappUrl from '../../../core/utils/whatsappUrl.js'; import { cons, toQuery } from 'lodash-contrib'; import _ from 'lodash'; import useActive from '../../../core/hooks/useActive.js'; -import useProductSearch from '../../../lib/product/hooks/useProductSearch.js'; +import useProductSearch from '../../../lib/promo/hooks/usePromotionSearch.js'; const BasicLayout = dynamic(() => import('../../../core/components/layouts/BasicLayout.jsx')) @@ -45,7 +45,7 @@ export default function PromoDetail() { const popup = useActive(); const prefixUrl = `/shop/promo/${slug}` const [queryFinal, setQueryFinal] = useState({}); - const [limit, setLimit] = useState(30); + const [limit, setLimit] = useState(30); const [q, setQ] = useState('*'); const [finalQuery, setFinalQuery] = useState({fq: `type_value_s:${slug}`}); const [products, setProducts] = useState(null); @@ -365,7 +365,7 @@ export default function PromoDetail() { ) : promoData && promoItems.length >= 1 ? ( <>
- {visiblePromotions?.map((promotion) => ( + {products?.map((promotion) => (
diff --git a/src/utils/solrMapping.js b/src/utils/solrMapping.js index 7a115753..637d7c09 100644 --- a/src/utils/solrMapping.js +++ b/src/utils/solrMapping.js @@ -1,7 +1,6 @@ -export const promoMappingSolr = (promotions, pricelist) => { - const result = []; - for (const promotion of promotions) { - const data = { +export const promoMappingSolr = (promotions) => { + return promotions.map((promotion) =>{ + let productMapped = { id: promotion.id, program_id: promotion.program_id_i, name: promotion.name_s, @@ -20,9 +19,8 @@ export const promoMappingSolr = (promotions, pricelist) => { qty_sold_f:promotion.total_qty_sold_f, free_products: JSON.parse(promotion.free_products_s), }; - result.push(data); - } - return result; + return productMapped; + }) }; -- cgit v1.2.3