From 1170c52c8dc532f7447d0f10093bd3531767f57e Mon Sep 17 00:00:00 2001
From: Rafi Zadanly <zadanlyr@gmail.com>
Date: Mon, 19 Feb 2024 13:16:08 +0700
Subject: Add link to product on cart item

---
 src-migrate/modules/cart/components/Item.tsx | 56 +++++++++++++++++++++++-----
 1 file changed, 46 insertions(+), 10 deletions(-)

(limited to 'src-migrate/modules/cart/components/Item.tsx')

diff --git a/src-migrate/modules/cart/components/Item.tsx b/src-migrate/modules/cart/components/Item.tsx
index 48e568e0..7a4c22cc 100644
--- a/src-migrate/modules/cart/components/Item.tsx
+++ b/src-migrate/modules/cart/components/Item.tsx
@@ -1,17 +1,18 @@
 import style from '../styles/item.module.css'
 
-import Image from 'next/image'
-import React from 'react'
 import { Skeleton, SkeletonProps, Tooltip } from '@chakra-ui/react'
 import { InfoIcon } from 'lucide-react'
+import Image from 'next/image'
 
 import { PROMO_CATEGORY } from '~/constants/promotion'
 
 import formatCurrency from '~/libs/formatCurrency'
 import { CartItem as CartItemProps } from '~/types/cart'
 
-import CartItemPromo from './ItemPromo'
+import Link from 'next/link'
+import { createSlug } from '~/libs/slug'
 import CartItemAction from './ItemAction'
+import CartItemPromo from './ItemPromo'
 import CartItemSelect from './ItemSelect'
 
 type Props = {
@@ -20,8 +21,6 @@ type Props = {
 }
 
 const CartItem = ({ item, editable = true }: Props) => {
-  const image = item?.image || item?.parent?.image
-
   return (
     <div className={style.wrapper}>
       {item.cart_type === 'promotion' && (
@@ -47,13 +46,12 @@ const CartItem = ({ item, editable = true }: Props) => {
       <div className={style.mainProdWrapper}>
         {editable && <CartItemSelect item={item} />}
         <div className='w-4' />
-        <div className={style.image}>
-          {image && <Image src={image} alt={item.name} width={128} height={128} />}
-          {!image && <div className={style.noImage}>No Image</div>}
-        </div>
+
+        <CartItem.Image item={item} />
 
         <div className={style.details}>
-          <div className={style.name}>{item.name}</div>
+          <CartItem.Name item={item} />
+
           <div className='mt-2 flex justify-between w-full'>
             <div className='flex flex-col gap-y-1'>
               {item.cart_type === 'promotion' && (
@@ -97,6 +95,44 @@ const CartItem = ({ item, editable = true }: Props) => {
   )
 }
 
+CartItem.Image = function CartItemImage({ item }: { item: CartItemProps }) {
+  const image = item?.image || item?.parent?.image
+
+  return (
+    <>
+      {item.cart_type === 'promotion' && (
+        <div className={style.image}>
+          {image && <Image src={image} alt={item.name} width={128} height={128} />}
+          {!image && <div className={style.noImage}>No Image</div>}
+        </div>
+      )}
+
+      {item.cart_type === 'product' && (
+        <Link href={createSlug('/shop/product/', item.name, item.id.toString())} className={style.image}>
+          {image && <Image src={image} alt={item.name} width={128} height={128} />}
+          {!image && <div className={style.noImage}>No Image</div>}
+        </Link>
+      )}
+    </>
+  )
+}
+
+CartItem.Name = function CartItemName({ item }: { item: CartItemProps }) {
+  return (
+    <>
+      {item.cart_type === 'promotion' && (
+        <div className={style.name}>{item.name}</div>
+      )}
+
+      {item.cart_type === 'product' && (
+        <Link href={createSlug('/shop/product/', item.name, item.id.toString())} className={style.name}>
+          {item.name}
+        </Link>
+      )}
+    </>
+  )
+}
+
 CartItem.Skeleton = function CartItemSkeleton(props: SkeletonProps & { count: number }) {
   return Array.from({ length: props.count }).map((_, index) => (
     <Skeleton key={index}
-- 
cgit v1.2.3


From 410cc16690f97e59b6a93b4196a2c13caf498b4d Mon Sep 17 00:00:00 2001
From: Rafi Zadanly <zadanlyr@gmail.com>
Date: Mon, 19 Feb 2024 13:28:11 +0700
Subject: Add discount price on cart item

---
 src-migrate/modules/cart/components/Item.tsx | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

(limited to 'src-migrate/modules/cart/components/Item.tsx')

diff --git a/src-migrate/modules/cart/components/Item.tsx b/src-migrate/modules/cart/components/Item.tsx
index 7a4c22cc..8a6f8822 100644
--- a/src-migrate/modules/cart/components/Item.tsx
+++ b/src-migrate/modules/cart/components/Item.tsx
@@ -66,15 +66,21 @@ const CartItem = ({ item, editable = true }: Props) => {
               )}
 
               {item.cart_type === 'product' && (
-                <>
+                <div className={style.discPriceSection}>
+                  {item.price.discount_percentage > 0 && (
+                    <span className={style.priceBefore}>
+                      Rp {formatCurrency((item.price.price || 0))}
+                    </span>
+                  )}
+                  
                   <div className={style.price}>
-                    {item.price.price > 0 && `Rp ${formatCurrency(item.price.price)}`}
-                    {item.price.price === 0 && '-'}
+                    {item.price.price_discount > 0 && `Rp ${formatCurrency(item.price.price_discount)}`}
+                    {item.price.price_discount === 0 && '-'}
                   </div>
-                  <div>{item.code}</div>
-                </>
+                </div>
               )}
 
+              <div>{item.cart_type === 'product' && item.code}</div>
               <div>
                 {item.weight} Kg
               </div>
-- 
cgit v1.2.3


From 95f49f1de12ae612957b60ed53cf5993b9b7ef1e Mon Sep 17 00:00:00 2001
From: Rafi Zadanly <zadanlyr@gmail.com>
Date: Mon, 19 Feb 2024 16:07:25 +0700
Subject: Add promotion program smooth animation

---
 src-migrate/modules/cart/components/Item.tsx | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

(limited to 'src-migrate/modules/cart/components/Item.tsx')

diff --git a/src-migrate/modules/cart/components/Item.tsx b/src-migrate/modules/cart/components/Item.tsx
index 8a6f8822..ba7f7cdf 100644
--- a/src-migrate/modules/cart/components/Item.tsx
+++ b/src-migrate/modules/cart/components/Item.tsx
@@ -72,7 +72,7 @@ const CartItem = ({ item, editable = true }: Props) => {
                       Rp {formatCurrency((item.price.price || 0))}
                     </span>
                   )}
-                  
+
                   <div className={style.price}>
                     {item.price.price_discount > 0 && `Rp ${formatCurrency(item.price.price_discount)}`}
                     {item.price.price_discount === 0 && '-'}
@@ -81,9 +81,7 @@ const CartItem = ({ item, editable = true }: Props) => {
               )}
 
               <div>{item.cart_type === 'product' && item.code}</div>
-              <div>
-                {item.weight} Kg
-              </div>
+              <div>{item.weight} Kg</div>
             </div>
 
             {editable && <CartItemAction item={item} />}
-- 
cgit v1.2.3


From 30da2d088793cabfb3c5b21d4560df53187e7047 Mon Sep 17 00:00:00 2001
From: Rafi Zadanly <zadanlyr@gmail.com>
Date: Tue, 20 Feb 2024 16:30:43 +0700
Subject: Fix item url in cart item

---
 src-migrate/modules/cart/components/Item.tsx | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

(limited to 'src-migrate/modules/cart/components/Item.tsx')

diff --git a/src-migrate/modules/cart/components/Item.tsx b/src-migrate/modules/cart/components/Item.tsx
index ba7f7cdf..d2bbdbdd 100644
--- a/src-migrate/modules/cart/components/Item.tsx
+++ b/src-migrate/modules/cart/components/Item.tsx
@@ -112,7 +112,10 @@ CartItem.Image = function CartItemImage({ item }: { item: CartItemProps }) {
       )}
 
       {item.cart_type === 'product' && (
-        <Link href={createSlug('/shop/product/', item.name, item.id.toString())} className={style.image}>
+        <Link
+          href={createSlug('/shop/product/', item.parent.name, item.parent.id.toString())}
+          className={style.image}
+        >
           {image && <Image src={image} alt={item.name} width={128} height={128} />}
           {!image && <div className={style.noImage}>No Image</div>}
         </Link>
@@ -129,7 +132,10 @@ CartItem.Name = function CartItemName({ item }: { item: CartItemProps }) {
       )}
 
       {item.cart_type === 'product' && (
-        <Link href={createSlug('/shop/product/', item.name, item.id.toString())} className={style.name}>
+        <Link
+          href={createSlug('/shop/product/', item.parent.name, item.parent.id.toString())}
+          className={style.name}
+        >
           {item.name}
         </Link>
       )}
-- 
cgit v1.2.3


From ab61908296a05d303cb9c0d019b5a92002e03972 Mon Sep 17 00:00:00 2001
From: Rafi Zadanly <zadanlyr@gmail.com>
Date: Wed, 21 Feb 2024 09:12:40 +0700
Subject: Fix weight on cart

---
 src-migrate/modules/cart/components/Item.tsx | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

(limited to 'src-migrate/modules/cart/components/Item.tsx')

diff --git a/src-migrate/modules/cart/components/Item.tsx b/src-migrate/modules/cart/components/Item.tsx
index d2bbdbdd..6ded6373 100644
--- a/src-migrate/modules/cart/components/Item.tsx
+++ b/src-migrate/modules/cart/components/Item.tsx
@@ -3,14 +3,13 @@ import style from '../styles/item.module.css'
 import { Skeleton, SkeletonProps, Tooltip } from '@chakra-ui/react'
 import { InfoIcon } from 'lucide-react'
 import Image from 'next/image'
+import Link from 'next/link'
 
 import { PROMO_CATEGORY } from '~/constants/promotion'
-
 import formatCurrency from '~/libs/formatCurrency'
+import { createSlug } from '~/libs/slug'
 import { CartItem as CartItemProps } from '~/types/cart'
 
-import Link from 'next/link'
-import { createSlug } from '~/libs/slug'
 import CartItemAction from './ItemAction'
 import CartItemPromo from './ItemPromo'
 import CartItemSelect from './ItemSelect'
@@ -81,7 +80,7 @@ const CartItem = ({ item, editable = true }: Props) => {
               )}
 
               <div>{item.cart_type === 'product' && item.code}</div>
-              <div>{item.weight} Kg</div>
+              <div>{Math.round(item.weight * 10) / 10} Kg</div>
             </div>
 
             {editable && <CartItemAction item={item} />}
-- 
cgit v1.2.3


From f9f1fdf83c2b6ed5c1d85d7418d45aeed9b05c77 Mon Sep 17 00:00:00 2001
From: it-fixcomart <it@fixcomart.co.id>
Date: Wed, 5 Jun 2024 15:24:42 +0700
Subject: <iman> add feature SNI-TKDR

---
 src-migrate/modules/cart/components/Item.tsx | 59 ++++++++++++++++++++++++++--
 1 file changed, 55 insertions(+), 4 deletions(-)

(limited to 'src-migrate/modules/cart/components/Item.tsx')

diff --git a/src-migrate/modules/cart/components/Item.tsx b/src-migrate/modules/cart/components/Item.tsx
index 6ded6373..fed11eb0 100644
--- a/src-migrate/modules/cart/components/Item.tsx
+++ b/src-migrate/modules/cart/components/Item.tsx
@@ -4,7 +4,8 @@ import { Skeleton, SkeletonProps, Tooltip } from '@chakra-ui/react'
 import { InfoIcon } from 'lucide-react'
 import Image from 'next/image'
 import Link from 'next/link'
-
+import ImageNext from 'next/image';
+import { useEffect, useState } from 'react';
 import { PROMO_CATEGORY } from '~/constants/promotion'
 import formatCurrency from '~/libs/formatCurrency'
 import { createSlug } from '~/libs/slug'
@@ -20,6 +21,31 @@ type Props = {
 }
 
 const CartItem = ({ item, editable = true }: Props) => {
+  const [isSni, setIsSni] = useState(false);
+  const [isTkdn, setTkdn] = useState(false);
+
+  useEffect(() => {
+    const fetchData = async () => {
+      try {
+        const responseSni = await fetch('URL_API_SNI');
+        const dataSni = await responseSni.json();
+        setIsSni(dataSni && dataSni.sni);
+
+        const responseTkdn = await fetch('URL_API_TKDN');
+        const dataTkdn = await responseTkdn.json();
+        setTkdn(dataTkdn && dataTkdn.tkdn);
+      } catch (error) {
+        console.error('Error fetching data:', error);
+        setIsSni(false);
+        setTkdn(false);
+      }
+    };
+
+    fetchData();
+
+    return () => {};
+  }, []);
+
   return (
     <div className={style.wrapper}>
       {item.cart_type === 'promotion' && (
@@ -46,7 +72,7 @@ const CartItem = ({ item, editable = true }: Props) => {
         {editable && <CartItemSelect item={item} />}
         <div className='w-4' />
 
-        <CartItem.Image item={item} />
+        <CartItem.Image item={item} isSni={isSni} isTkdn={isTkdn} />
 
         <div className={style.details}>
           <CartItem.Name item={item} />
@@ -98,7 +124,7 @@ const CartItem = ({ item, editable = true }: Props) => {
   )
 }
 
-CartItem.Image = function CartItemImage({ item }: { item: CartItemProps }) {
+CartItem.Image = function CartItemImage({ item, isSni, isTkdn }: { item: CartItemProps, isSni: boolean, isTkdn: boolean }) {
   const image = item?.image || item?.parent?.image
 
   return (
@@ -116,6 +142,31 @@ CartItem.Image = function CartItemImage({ item }: { item: CartItemProps }) {
           className={style.image}
         >
           {image && <Image src={image} alt={item.name} width={128} height={128} />}
+          
+          <div className="relative top-2 right-4 flex">
+            {/* <div className="gambarB mr-1 bg-red-100"> */}
+              {!isSni && (
+                <ImageNext
+                  src="/images/sni-logo.png"
+                  alt="SNI Logo"
+                  className="w-4 h-3 object-contain object-top sm:h-4"
+                  width={50}
+                  height={50}
+                />
+              )}
+            {/* </div> */}
+            {/* <div className="gambarC bg-red-500"> */}
+              {!isTkdn && (
+                <ImageNext
+                  src="/images/TKDN.png"
+                  alt="TKDN"
+                  className="w-10 h-5 object-contain object-top ml-1 mr-1 sm:h-10"
+                  width={50}
+                  height={50}
+                />
+              )}
+            {/* </div> */}
+          </div>
           {!image && <div className={style.noImage}>No Image</div>}
         </Link>
       )}
@@ -153,4 +204,4 @@ CartItem.Skeleton = function CartItemSkeleton(props: SkeletonProps & { count: nu
   ))
 }
 
-export default CartItem
\ No newline at end of file
+export default CartItem
-- 
cgit v1.2.3


From d941c429ce185d6bb67c603d2bdb3017cdd79ae8 Mon Sep 17 00:00:00 2001
From: it-fixcomart <it@fixcomart.co.id>
Date: Thu, 6 Jun 2024 09:42:23 +0700
Subject: <iman> add feature SNI-TKDN

---
 src-migrate/modules/cart/components/Item.tsx | 59 ++--------------------------
 1 file changed, 4 insertions(+), 55 deletions(-)

(limited to 'src-migrate/modules/cart/components/Item.tsx')

diff --git a/src-migrate/modules/cart/components/Item.tsx b/src-migrate/modules/cart/components/Item.tsx
index fed11eb0..6ded6373 100644
--- a/src-migrate/modules/cart/components/Item.tsx
+++ b/src-migrate/modules/cart/components/Item.tsx
@@ -4,8 +4,7 @@ import { Skeleton, SkeletonProps, Tooltip } from '@chakra-ui/react'
 import { InfoIcon } from 'lucide-react'
 import Image from 'next/image'
 import Link from 'next/link'
-import ImageNext from 'next/image';
-import { useEffect, useState } from 'react';
+
 import { PROMO_CATEGORY } from '~/constants/promotion'
 import formatCurrency from '~/libs/formatCurrency'
 import { createSlug } from '~/libs/slug'
@@ -21,31 +20,6 @@ type Props = {
 }
 
 const CartItem = ({ item, editable = true }: Props) => {
-  const [isSni, setIsSni] = useState(false);
-  const [isTkdn, setTkdn] = useState(false);
-
-  useEffect(() => {
-    const fetchData = async () => {
-      try {
-        const responseSni = await fetch('URL_API_SNI');
-        const dataSni = await responseSni.json();
-        setIsSni(dataSni && dataSni.sni);
-
-        const responseTkdn = await fetch('URL_API_TKDN');
-        const dataTkdn = await responseTkdn.json();
-        setTkdn(dataTkdn && dataTkdn.tkdn);
-      } catch (error) {
-        console.error('Error fetching data:', error);
-        setIsSni(false);
-        setTkdn(false);
-      }
-    };
-
-    fetchData();
-
-    return () => {};
-  }, []);
-
   return (
     <div className={style.wrapper}>
       {item.cart_type === 'promotion' && (
@@ -72,7 +46,7 @@ const CartItem = ({ item, editable = true }: Props) => {
         {editable && <CartItemSelect item={item} />}
         <div className='w-4' />
 
-        <CartItem.Image item={item} isSni={isSni} isTkdn={isTkdn} />
+        <CartItem.Image item={item} />
 
         <div className={style.details}>
           <CartItem.Name item={item} />
@@ -124,7 +98,7 @@ const CartItem = ({ item, editable = true }: Props) => {
   )
 }
 
-CartItem.Image = function CartItemImage({ item, isSni, isTkdn }: { item: CartItemProps, isSni: boolean, isTkdn: boolean }) {
+CartItem.Image = function CartItemImage({ item }: { item: CartItemProps }) {
   const image = item?.image || item?.parent?.image
 
   return (
@@ -142,31 +116,6 @@ CartItem.Image = function CartItemImage({ item, isSni, isTkdn }: { item: CartIte
           className={style.image}
         >
           {image && <Image src={image} alt={item.name} width={128} height={128} />}
-          
-          <div className="relative top-2 right-4 flex">
-            {/* <div className="gambarB mr-1 bg-red-100"> */}
-              {!isSni && (
-                <ImageNext
-                  src="/images/sni-logo.png"
-                  alt="SNI Logo"
-                  className="w-4 h-3 object-contain object-top sm:h-4"
-                  width={50}
-                  height={50}
-                />
-              )}
-            {/* </div> */}
-            {/* <div className="gambarC bg-red-500"> */}
-              {!isTkdn && (
-                <ImageNext
-                  src="/images/TKDN.png"
-                  alt="TKDN"
-                  className="w-10 h-5 object-contain object-top ml-1 mr-1 sm:h-10"
-                  width={50}
-                  height={50}
-                />
-              )}
-            {/* </div> */}
-          </div>
           {!image && <div className={style.noImage}>No Image</div>}
         </Link>
       )}
@@ -204,4 +153,4 @@ CartItem.Skeleton = function CartItemSkeleton(props: SkeletonProps & { count: nu
   ))
 }
 
-export default CartItem
+export default CartItem
\ No newline at end of file
-- 
cgit v1.2.3

