summaryrefslogtreecommitdiff
path: root/src/lib/checkout/components
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-02-22 14:00:00 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-02-22 14:00:00 +0700
commit7265295454801c1d921385a4b67fb3780b46771e (patch)
treea45e7c0add3641d6a234c3b610adc72a08631616 /src/lib/checkout/components
parent757b69f4d814ec4890c209f7a9fdf3d9940157d9 (diff)
fix
Diffstat (limited to 'src/lib/checkout/components')
-rw-r--r--src/lib/checkout/components/Checkout.jsx36
-rw-r--r--src/lib/checkout/components/FinishCheckout.jsx30
2 files changed, 63 insertions, 3 deletions
diff --git a/src/lib/checkout/components/Checkout.jsx b/src/lib/checkout/components/Checkout.jsx
index 0a3949c3..8416cd9e 100644
--- a/src/lib/checkout/components/Checkout.jsx
+++ b/src/lib/checkout/components/Checkout.jsx
@@ -9,11 +9,15 @@ import VariantCard from '@/lib/variant/components/VariantCard'
import { ExclamationCircleIcon } from '@heroicons/react/24/outline'
import { useEffect, useRef, useState } from 'react'
import _ from 'lodash'
-import { getCart, getItemCart } from '@/core/utils/cart'
+import { deleteItemCart, getCart, getItemCart } from '@/core/utils/cart'
import currencyFormat from '@/core/utils/currencyFormat'
import { toast } from 'react-hot-toast'
+import getFileBase64 from '@/core/utils/getFileBase64'
+import checkoutApi from '../api/checkoutApi'
+import { useRouter } from 'next/router'
const Checkout = () => {
+ const router = useRouter()
const auth = useAuth()
const [selectedAddress, setSelectedAddress] = useState({
shipping: null,
@@ -96,6 +100,33 @@ const Checkout = () => {
toast.error('Pilih metode pembayaran', { position: 'bottom-center' })
return
}
+ const file = poFile.current.files[0]
+ if (typeof file !== 'undefined' && file.size > 5000000) {
+ toast.error('Maksimal ukuran file adalah 5MB', { position: 'bottom-center' })
+ return
+ }
+ setIsLoading(true)
+ const productOrder = products.map((product) => ({
+ product_id: product.id,
+ quantity: product.quantity
+ }))
+ let data = {
+ partner_shipping_id: selectedAddress.shipping.id,
+ partner_invoice_id: selectedAddress.invoicing.id,
+ order_line: JSON.stringify(productOrder),
+ type: 'sale_order'
+ }
+ if (poNumber.current.value) data.po_number = poNumber.current.value
+ if (typeof file !== 'undefined') data.po_file = await getFileBase64(file)
+
+ const isCheckouted = await checkoutApi({ data })
+ setIsLoading(false)
+ if (isCheckouted?.id) {
+ for (const product of products) deleteItemCart({ productId: product.id })
+ router.push(`/shop/checkout/finish?id=${isCheckouted.id}`)
+ return
+ }
+ toast.error('Gagal melakukan transaksi, terjadi kesalahan internal')
}
return (
@@ -232,8 +263,7 @@ const Checkout = () => {
<div className='flex gap-x-3 p-4'>
<button className='flex-1 btn-yellow' onClick={checkout} disabled={isLoading}>
- {isLoading && 'Loading...'}
- {!isLoading && 'Bayar'}
+ {isLoading ? 'Loading...' : 'Bayar'}
</button>
</div>
</>
diff --git a/src/lib/checkout/components/FinishCheckout.jsx b/src/lib/checkout/components/FinishCheckout.jsx
new file mode 100644
index 00000000..f0aaba4e
--- /dev/null
+++ b/src/lib/checkout/components/FinishCheckout.jsx
@@ -0,0 +1,30 @@
+import Link from "@/core/components/elements/Link/Link"
+import useTransaction from "@/lib/transaction/hooks/useTransaction"
+
+const FinishCheckout = ({ id }) => {
+ const { transaction } = useTransaction({ id })
+
+ return (
+ <div className="p-4">
+ <div className='rounded-xl bg-yellow_r-4 text-center border border-yellow_r-7'>
+ <div className='px-4 py-6 text-yellow_r-12'>
+ <p className='font-semibold mb-2'>Terima Kasih atas Pembelian Anda</p>
+ <p className='text-yellow_r-11 mb-4 leading-6'>
+ Rincian belanja sudah kami kirimkan ke email anda. Mohon dicek kembali. jika tidak
+ menerima email, anda dapat menghubungi kami disini.
+ </p>
+ <p className='mb-2 font-medium'>{transaction.data?.name}</p>
+ <p className='text-caption-2 text-yellow_r-11'>No. Transaksi</p>
+ </div>
+ <Link
+ href={transaction.data?.id ? `/my/transaction/${transaction.data.id}` : '/'}
+ className='bg-yellow_r-6 text-yellow_r-12 rounded-b-xl py-4 block'
+ >
+ Lihat detail pembelian Anda disini
+ </Link>
+ </div>
+ </div>
+ )
+}
+
+export default FinishCheckout \ No newline at end of file