import { productMappingSolr, variantsMappingSolr } from '@/utils/solrMapping' import axios from 'axios' export default async function handler(req, res) { try { let productTemplate = await axios( process.env.SOLR_HOST + `/solr/product/select?q=id:${req.query.id}&q.op=OR&indent=true` ) let productVariants = await axios( process.env.SOLR_HOST + `/solr/variants/select?q=template_id_i:${req.query.id}&q.op=OR&indent=true&rows=100&fq=-publish_b:false` ) let auth = req.query.auth === 'false' ? JSON.parse(req.query.auth) : req.query.auth let result = productMappingSolr(productTemplate.data.response.docs, auth || false) result[0].variants = variantsMappingSolr( productTemplate.data.response.docs[0], productVariants.data.response.docs, auth || false ) res.status(200).json(result) } catch (error) { console.error('Error fetching data from Solr:', error) res.status(500).json({ error: 'Internal Server Error' }) } } /*const productResponseMap = (products, pricelist) => { return products.map((product) => { let price = product.price_tier1_v2_f || 0 let priceDiscount = product.price_discount_f || 0 let discountPercentage = product.discount_f || 0 if (pricelist) { price = product?.[`price_${pricelist}_f`] || 0 } if (product?.flashsale_id_i > 0) { price = product?.flashsale_base_price_f || 0 priceDiscount = product?.flashsale_price_f || 0 discountPercentage = product?.flashsale_discount_f || 0 } let productMapped = { id: product.product_id_i || '', image: product.image_s || '', code: product.default_code_s || '', description: product.description_t || '', displayName: product.display_name_s || '', name: product.name_s || '', lowestPrice: { price, priceDiscount, discountPercentage }, variantTotal: product.variant_total_i || 0, stockTotal: product.stock_total_f || 0, weight: product.weight_f || 0, manufacture: {}, categories: [], flashSale: { id: product?.flashsale_id_i, remainingTime: flashsaleTime(product?.flashsale_end_date_s)?.remainingTime, name: product?.product?.flashsale_name_s, tag: product?.flashsale_tag_s || 'FLASH SALE' } } if (product.manufacture_id_i && product.manufacture_name_s) { productMapped.manufacture = { id: product.manufacture_id_i || '', name: product.manufacture_name_s || '', imagePromotion1: product.image_promotion_1_s || '', imagePromotion2: product.image_promotion_2_s || '' } } productMapped.categories = [ { id: product.category_id_i || '', name: product.category_name_s || '' } ] return productMapped }) } const productVariantsResponseMap = (parent, products, pricelist) => { return products.map((product) => { let price = product.price_tier1_v2_f || 0 let priceDiscount = product.price_discount_f || 0 let discountPercentage = product.discount_f || 0 if (pricelist) { price = product?.[`price_${pricelist}_f`] || 0 } if (product?.flashsale_id_i > 0) { price = product?.flashsale_base_price_f || 0 priceDiscount = product?.flashsale_price_f || 0 discountPercentage = product?.flashsale_discount_f || 0 } let productMapped = { attributes: product.attributes || [], id: product.product_id_i || '', image: product.image_s || '', code: product.default_code_s || '', isFlashsale: flashsaleTime(product?.flashsale_end_date_s)?.isFlashSale, isFlashsale: flashsaleTime(product?.flashsale_end_date_s)?.isFlashSale, name: product.display_name_s || '', price: { price, priceDiscount, discountPercentage }, variantTotal: product.variant_total_i || 0, stockTotal: product.stock_total_f || 0, weight: product.weight_f || 0, manufacture: {}, parent: {} } if (product.manufacture_id_i && product.manufacture_name_s) { productMapped.manufacture = { id: product.manufacture_id_i || '', name: product.manufacture_name_s || '' } } productMapped.parent = { id: parent.product_id_i || '', image: parent.image_s || '', name: parent.name_s || '' } return productMapped }) } const flashsaleTime = (endDate) => { const flashsaleEndDate = new Date(endDate) const currentTime = new Date() const timeDifferenceInMillis = flashsaleEndDate - currentTime const timeDifferenceInSeconds = timeDifferenceInMillis / 1000 return { remainingTime: timeDifferenceInSeconds, isFlashSale: flashsaleEndDate > currentTime } }*/