summaryrefslogtreecommitdiff
path: root/src-migrate/services
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2024-08-08 10:10:56 +0000
committerIT Fixcomart <it@fixcomart.co.id>2024-08-08 10:10:56 +0000
commitc9090a89b775a1e3c2f1e707021e6375eb9f92e3 (patch)
tree85bb4be978ff65714e395a2a58772e098e67fd3f /src-migrate/services
parentfecff2431477d08d166c34f116972aa090cf463f (diff)
parent616d8ffc973eba673069243ec8981b5234234fe5 (diff)
Merged in Feature/template-switch (pull request #227)
Feature/template switch
Diffstat (limited to 'src-migrate/services')
-rw-r--r--src-migrate/services/product.ts48
1 files changed, 45 insertions, 3 deletions
diff --git a/src-migrate/services/product.ts b/src-migrate/services/product.ts
index fe415d11..ec5435cd 100644
--- a/src-migrate/services/product.ts
+++ b/src-migrate/services/product.ts
@@ -2,6 +2,7 @@ import { IProduct, IProductDetail } from '~/types/product';
import snakeCase from 'snakecase-keys';
import odooApi from '~/libs/odooApi';
import { ICategoryBreadcrumb } from '~/types/category';
+import productSearchApi from '../../src/lib/product/api/productSearchApi'
const SELF_HOST = process.env.NEXT_PUBLIC_SELF_HOST;
@@ -20,6 +21,7 @@ export const getProductById = async (
};
export interface GetProductSimilarProps {
+ source?: string;
name: string;
except?: {
productId?: number;
@@ -33,13 +35,44 @@ export interface GetProductSimilarRes {
num_found: number;
num_found_exact: boolean;
start: number;
+ source: string;
}
export const getProductSimilar = async ({
name,
except,
limit = 30,
+ source,
}: GetProductSimilarProps): Promise<GetProductSimilarRes> => {
+ let dataflashSale = null
+ const flashSale = await odooApi('GET', '/api/v1/flashsale/header')
+ if (flashSale && flashSale.length > 0) {
+ const dataFlash = await productSearchApi({
+ query: `fq=flashsale_id_i:${flashSale[0].pricelist_id}&fq=flashsale_price_f:[1 TO *]&limit=${
+ source === 'bottom' ? '4' : '1'
+ }`,
+ operation: 'AND'
+ })
+
+ dataflashSale = dataFlash.response.products.map((product: {
+ qtySold: any;
+ stockTotal: any;
+ flashSale: any; lowestPrice: any;
+}) => ({
+ ...product,
+ lowest_price: product.lowestPrice,
+ flash_sale: product.flashSale,
+ stock_total: product.stockTotal,
+ qty_sold: product.qtySold,
+ lowestPrice: undefined
+ }));
+ if (source === 'bottom') {
+ dataflashSale = dataflashSale.slice('2', '4')
+ } else {
+ dataflashSale = dataflashSale
+ }
+ console.log("dataflashSale",dataflashSale)
+ }
const query = [
`q=${name}`,
'page=1',
@@ -47,16 +80,25 @@ export const getProductSimilar = async ({
'operation=OR',
'priceFrom=1',
];
-
if (except?.productId) query.push(`fq=-product_id_i:${except.productId}`);
if (except?.manufactureId)
query.push(`fq=-manufacture_id_i:${except.manufactureId}`);
-
const url = `${SELF_HOST}/api/shop/search?${query.join('&')}`;
- return await fetch(url)
+ const fetchedData = await fetch(url)
.then((res) => res.json())
.then((res) => snakeCase(res.response));
+
+ if (dataflashSale) {
+ fetchedData.products = [
+ ...dataflashSale,
+ ...fetchedData.products
+ ]
+ } else {
+ fetchedData.products = [...fetchedData.products]
+ }
+
+ return fetchedData;
};
export const getProductCategoryBreadcrumb = async (