diff --git a/src/components/ProductDetailPage.js b/src/components/ProductDetailPage.js index 1a751de..8ef6b04 100644 --- a/src/components/ProductDetailPage.js +++ b/src/components/ProductDetailPage.js @@ -29,7 +29,7 @@ const ProductDetail = ({ willDo, setWillDo, subscriptions, product, requestLogin subscriptions.some(sub => String(sub.product_id) === String(product.id) || String(sub.product_parent_id) === String(product.id) ); - + console.log(hasMatchingSubscription) // ✅ Check subscription first if (hasMatchingSubscription) { const matching = subscriptions.filter(sub => @@ -126,9 +126,21 @@ const ProductDetail = ({ willDo, setWillDo, subscriptions, product, requestLogin }; useEffect(() => { - if (willDo === 'checkout') { + if (!product.executeCheckout && willDo === 'checkout') { onCheckout(); } + else if (product.children && product.children.length > 0) { + setShowChildSelector(true); + } + else { + + const tokenCookie = document.cookie.split('; ').find(row => row.startsWith('token=')); + const token = tokenCookie ? tokenCookie.split('=')[1] : ''; + const encodedName = encodeURIComponent(product.name); + const itemsParam = JSON.stringify([product.id]); + + window.location.href = `https://checkout.kediritechnopark.com/?token=${token}&itemsId=${itemsParam}&set_name=${encodedName}&redirect_uri=https://kediritechnopark.com/products&redirect_failed=https://kediritechnopark.com`; + } if (setWillDo) setWillDo(''); }, []); @@ -227,6 +239,7 @@ const ProductDetail = ({ willDo, setWillDo, subscriptions, product, requestLogin )} + {/* Naming input */} {showNamingInput && (
diff --git a/src/components/pages/ProductsPage.js b/src/components/pages/ProductsPage.js index 75cfe0d..b3ba2ef 100644 --- a/src/components/pages/ProductsPage.js +++ b/src/components/pages/ProductsPage.js @@ -1,6 +1,7 @@ import React, { useState, useEffect } from "react"; import { Container, Row, Col, Card, Button, Tabs, Tab, Form } from "react-bootstrap"; import { useNavigate } from "react-router-dom"; +import processProducts from '../../helper/processProducts'; const Dashboard = ({ subscriptions, @@ -91,10 +92,25 @@ const Dashboard = ({ fetch("https://bot.kediritechnopark.com/webhook/store-production/products", { method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ itemsId: productIds }) + body: JSON.stringify({ itemsId: productIds, withChildren: true }) }) .then((res) => res.json()) .then((data) => { + console.log(data) + + const dataMap = {}; + data.forEach((item) => { + dataMap[item.id] = { ...item, children: [] }; + }); + + // Masukkan anak-anak ke parent-nya + data.forEach((item) => { + if (item.sub_product_of && dataMap[item.sub_product_of]) { + dataMap[item.sub_product_of].children.push(dataMap[item.id]); + } + }); + + console.log(dataMap) const enrichedData = Object.values(groupedSubs) .filter((group) => data.some((p) => p.id === group.product_id)) .map((group) => { @@ -124,10 +140,10 @@ const Dashboard = ({ unit_type: productData?.unit_type || group.unit_type, quantity: group.quantity, end_date: group.end_date, - children: [] + children: dataMap[productData?.sub_product_of]?.children || [] }; }); - + console.log(enrichedData) setProducts(enrichedData); }) .catch((err) => console.error("Fetch error:", err)); @@ -164,11 +180,10 @@ const Dashboard = ({ {product.unit_type === "duration" - ? `Valid until: ${ - product.end_date - ? new Date(product.end_date).toLocaleDateString() - : "N/A" - }` + ? `Valid until: ${product.end_date + ? new Date(product.end_date).toLocaleDateString() + : "N/A" + }` : `SISA TOKEN ${product.quantity || 0}`}