"use client"; import { Warna } from "@/app/lib/warna"; import { Box, Group, NumberInput, Divider, Center, Button, Text, Container, Flex, } from "@mantine/core"; import { useFocusTrap, useShallowEffect } from "@mantine/hooks"; import { useRouter } from "next/navigation"; import { MODEL_Investasi } from "../model/model_investasi"; import { MODEL_User_profile } from "@/app_modules/home/models/user_profile"; import { useEffect, useState } from "react"; import getTokenTransaksi from "../fun/get_token_transaksi"; import toast from "react-simple-toasts"; import funUpdatePaymentInvestasi from "../fun/fun_update_payment"; import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; import { useAtom } from "jotai"; import { gs_investasiFooter, gs_midtrans_snap } from "../g_state"; import funUpdateInvestasi from "../fun/fun_update_investasi"; export default function ProsesTransaksiInvestasi({ dataInvestasi, userLogin }) { const router = useRouter(); const focusTrapRef = useFocusTrap(); const [investasi, setInvestasi] = useState(dataInvestasi); const [user, setUser] = useState(userLogin); const [maxPembelian, setMaxPembelian] = useState( Number(investasi.sisaLembar) ); const [total, setTotal] = useState(0); const [jumlah, setJumlah] = useState(0); const [hotmenu, setHotmenu] = useAtom(gs_investasiFooter); const [snapShow, setSnapShow] = useState(false); useShallowEffect(() => { setJumlah(0) setTotal(0) },[]) // console.log(userLogin.id); // console.log(investasi); async function onProses() { const body = { // customer_details authorId: userLogin.id, customer_name: userLogin.username, phone: userLogin.nomor, // transaction_details gross_amount: total, // item_details item_name: "Saham" + " " + investasi.title, price: +investasi.hargaLembar, quantity: jumlah, merchant_name: investasi.author.username, // investasi investasiId: investasi.id, }; await getTokenTransaksi(body).then(async (res) => { if (res.token.status === 200) { // console.log(res.token.value.token) // setSnapShow(true); snap.pay(res.token.value.token, { // embedId: "embedId", onSuccess: async function (result) { // setSnapShow(false); await funUpdatePaymentInvestasi(result, body, res.token.value).then( async (resUpdate) => { if (resUpdate.status === 200) { // console.log(resUpdate.message) const lembarTersisa = investasi.sisaLembar - resUpdate.data.quantity; const body2 = { id: investasi.id, sisaLembar: lembarTersisa, }; await funUpdateInvestasi(body2, investasi); toast(res.message); router.push( RouterInvestasi.status_pesanan + `${resUpdate.data.id}` ); setHotmenu(3); } else { toast(res.message); } } ); }, onPending: async function (result) { // console.log("pending"); // console.log(result); // await funUpdatePaymentInvestasi(result, res.dataTransaksi.id); // toast(res.message); // router.push( // RouterInvestasi.status_pesanan + `${res.dataTransaksi.id}` // ); // router.push(RouterInvestasi.detail + `${investasi.id}`) await router.push(RouterInvestasi.detail + `${investasi.id}`); setJumlah(0); }, onClose: async function (result) { await router.push(RouterInvestasi.detail + `${investasi.id}`); // if (result === undefined) { // const data = { // status_code: "400", // }; // // await funUpdatePaymentInvestasi(data, res.dataTransaksi.id); // router.push(RouterInvestasi.main_transaksi); // setSnapShow(false); // // router.push(RouterPay.home); // console.log(data); // } }, }); } else { toast("Gagal Membuat Token"); } }); } useEffect(() => { const midTransURl = "https://app.sandbox.midtrans.com/snap/snap.js"; let script = document.createElement("script"); const midTransClientKey = process.env.Client_KEY; script.src = midTransURl; script.setAttribute("data-client-key", midTransClientKey); script.async = true; document.body.appendChild(script); return () => { document.body.removeChild(script); }; }, []); return ( <> {/* {!snapShow && ( )} */} {/* Sisa Lembar Saham */} Sisa Lembar Saham {new Intl.NumberFormat("id-ID", { maximumFractionDigits: 10, }).format(+investasi.sisaLembar)}{" "} {/* Harga perlembar saham */} Harga Perlembar Rp.{" "} {new Intl.NumberFormat("id-ID", { maximumFractionDigits: 10, }).format(+investasi.hargaLembar)}{" "} {/* Lembar saham */} Jumlah Pembelian minimal pembelian 10 lembar {/* maximal pembelian {maxPembelian} lembar */} { setTotal(val * +investasi.hargaLembar); setJumlah(val); // console.log(val); }} /> Total Harga Rp.{" "} {new Intl.NumberFormat("id-ID", { maximumFractionDigits: 10, }).format(total)}
{jumlah < 10 ? ( ) : ( )}
{/* */} ); }