import React, { useEffect, useState } from 'react'; import { Container } from 'react-bootstrap'; import styles from './Styles.module.css'; import useInView from '../hooks/useInView'; const AcademySection = ({setSelectedProduct, setShowedModal, courseSectionRef, setWillDo}) => { const [products, setProducts] = useState([]); const [hoveredCard, setHoveredCard] = useState(null); useEffect(() => { // Fetch all items to compute module/sessions reliably, then filter courses client-side fetch('https://bot.kediritechnopark.com/webhook/store-production/products', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({}), }) .then(res => res.json()) .then(data => { const all = Array.isArray(data) ? data : []; const moduleCountMap = {}; const sessionsCountMap = {}; all.forEach(item => { const parentId = item?.sub_product_of; if (parentId) { moduleCountMap[parentId] = (moduleCountMap[parentId] || 0) + 1; const s = Number(item?.sessions || item?.session_count || 0); sessionsCountMap[parentId] = (sessionsCountMap[parentId] || 0) + (isNaN(s) ? 0 : s); } }); const coursesOnly = all.filter(p => (p?.type || '').toLowerCase() === 'course'); const enriched = coursesOnly.map(p => ({ ...p, module_count: p?.module_count ?? p?.modules ?? moduleCountMap[p.id] ?? 0, session_count: p?.session_count ?? p?.sessions ?? sessionsCountMap[p.id] ?? 0, })); setProducts(enriched); }) .catch(err => console.error('Fetch error:', err)); }, []); const { ref, inView } = useInView(); return (
{ if (typeof courseSectionRef === 'function') courseSectionRef(el); if (ref) ref.current = el; }}>
Academy

Our Academy Program

Academy Program adalah wadah belajar digital untuk anak-anak dan remaja. Didesain interaktif, kreatif, dan gratis — setiap modul membekali peserta dengan keterampilan masa depan, dari teknologi dasar hingga coding dan proyek nyata.

{products && products[0]?.name && products .map(product => (
{ setSelectedProduct(product); setShowedModal('product'); }} onMouseEnter={() => setHoveredCard(product.id)} onMouseLeave={() => setHoveredCard(null)} >
{product.price === 0 && ( Free )}

{product.name}

{Number(product?.module_count || 0)} Modul {Number(product?.session_count || 0)} Sesi

{product.description}

{product.price == null ? 'Pay-As-You-Go' : `Rp ${product.price.toLocaleString('id-ID')}`}
))}
); }; export default AcademySection;