Files
hipmi/src/app_modules/investasi/proses_investasi/view.tsx
Bagasbanuna02 693bb65710 Alur Payment
# feat
- Pembelian saham
- Function progres
### No Issue
2023-12-12 13:56:39 +08:00

170 lines
4.4 KiB
TypeScript

"use client";
import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi";
import { Warna } from "@/app/lib/warna";
import {
ActionIcon,
Box,
Button,
Center,
Divider,
Grid,
Group,
NumberInput,
Text,
Title,
} from "@mantine/core";
import { useCounter, useFocusTrap, useShallowEffect } from "@mantine/hooks";
import {
IconMinus,
IconNumber10Small,
IconPlus,
IconRefresh,
} from "@tabler/icons-react";
import _ from "lodash";
import { useRouter } from "next/navigation";
import { useState } from "react";
import toast from "react-simple-toasts";
import { MODEL_Investasi } from "../model/model_investasi";
import { error } from "console";
import { useAtom } from "jotai";
import { gs_TransferValue } from "../g_state";
export default function ProsesInvestasi({
dataInvestasi,
}: {
dataInvestasi: MODEL_Investasi;
}) {
const router = useRouter();
const focusTrapRef = useFocusTrap();
const [jumlah, setJumlah] = useState(0);
const [hargaLembar, setHargaLembar] = useState<number>(
Number(dataInvestasi.hargaLembar)
);
const [total, setTotal] = useState(0);
const [investasi, setInvestasi] = useState(dataInvestasi);
const [maxPembelian, setMaxPembelian] = useState<number>(
Number(dataInvestasi.totalLembar)
);
const [transferValue, setTransferValue] = useAtom(gs_TransferValue);
// async function onBeli() {
// setTransferValue({
// ...transferValue,
// totalTransfer: total as any,
// lembarTerbeli: jumlah as any,
// });
// router.push(RouterInvestasi.metode_transfer + `${investasi.id}`);
// }
const date = new Date();
const randomId = date.getTime();
async function onProses() {
const body = {
transaction_details: {
order_id: "hipmi_" + `${randomId}`,
gross_amount: total,
},
item_details: [
{
id: "item_"+ `${randomId}`,
name: investasi.title,
price: Number(investasi.hargaLembar),
quantity: transferValue.lembarTerbeli,
merchant_name: "Transaksi Saham",
},
],
customer_details: {
first_name: "",
email: "test@midtrans.com",
phone: "+628123456",
},
};
}
return (
<>
{/* <pre>{JSON.stringify(investasi, null, 2)}</pre> */}
<Box px={"md"}>
{/* Sisa Lembar Saham */}
<Group position="apart" mb={"md"}>
<Text>Sisa Lembar Saham</Text>
<Text fz={23}>
{new Intl.NumberFormat("id-ID", {
maximumFractionDigits: 10,
}).format(+investasi.totalLembar)}{" "}
</Text>
</Group>
{/* Harga perlembar saham */}
<Group position="apart" mb={"md"}>
<Text>Harga Perlembar</Text>
<Text fz={23}>
Rp.{" "}
{new Intl.NumberFormat("id-ID", {
maximumFractionDigits: 10,
}).format(+investasi.hargaLembar)}{" "}
</Text>
</Group>
{/* Lembar saham */}
<Group position="apart" mb={"md"}>
<Box>
<Text>Jumlah Pembelian</Text>
<Text c={"orange"} fs={"italic"} fz={10}>
minimal pembelian 10 lembar
</Text>
{/* <Text c={"red"} fs={"italic"} fz={10}>
maximal pembelian {maxPembelian} lembar
</Text> */}
</Box>
<NumberInput
type="number"
ref={focusTrapRef}
w={100}
max={maxPembelian}
onChange={(val: number) => {
setTotal(val * hargaLembar);
setJumlah(val);
// console.log(val);
}}
/>
</Group>
<Divider my={"lg"} />
<Group position="apart" mb={"md"}>
<Box>
<Text>Total Harga</Text>
</Box>
<Text fz={25}>Rp.{total} </Text>
</Group>
<Center>
{jumlah < 10 ? (
<Button w={350} radius={50} bg={"gray"} disabled>
Beli Saham
</Button>
) : (
<Button
w={350}
radius={50}
bg={Warna.biru}
onClick={() => {
// onBeli();
onProses();
}}
>
Beli Saham
</Button>
)}
</Center>
</Box>
{/* <pre>{JSON.stringify(investasi, null, 2)}</pre> */}
</>
);
}