diff --git a/src/app/dev/investasi/main/transaksi/page.tsx b/src/app/dev/investasi/main/transaksi/page.tsx index a5496acb..9827d215 100644 --- a/src/app/dev/investasi/main/transaksi/page.tsx +++ b/src/app/dev/investasi/main/transaksi/page.tsx @@ -1,9 +1,32 @@ import { TransaksiInvestasi } from "@/app_modules/investasi"; +import getListAllTransaksiById_Investasi from "@/app_modules/investasi/fun/get_list_all_transaksi_by_id"; +import getMaster_StatusTransaksiInvestasi from "@/app_modules/investasi/fun/master/get_status_transaksi"; + +import fs from "fs"; +import yaml from "yaml"; +import { unsealData } from "iron-session"; +import { cookies } from "next/headers"; +import funCountDown from "@/app_modules/investasi/fun/fun_countdown_investasi"; +import funCekSisaWaktuTransaksiInvestasi from "@/app_modules/investasi/fun/fun_cek_sisa_waktu"; +const config = yaml.parse(fs.readFileSync("config.yaml").toString()); export default async function Page() { + const c = cookies().get("ssn"); + const tkn = JSON.parse( + await unsealData(c?.value as string, { + password: config.server.password, + }) + ); + const userId = tkn.id; + const statusTransaksi = await getMaster_StatusTransaksiInvestasi(); + const listTransaksi = await getListAllTransaksiById_Investasi(userId); + return ( <> - + ); } diff --git a/src/app/dev/investasi/status_transaksi/gagal/layout.tsx b/src/app/dev/investasi/status_transaksi/gagal/[id]/layout.tsx similarity index 100% rename from src/app/dev/investasi/status_transaksi/gagal/layout.tsx rename to src/app/dev/investasi/status_transaksi/gagal/[id]/layout.tsx diff --git a/src/app/dev/investasi/status_transaksi/gagal/[id]/page.tsx b/src/app/dev/investasi/status_transaksi/gagal/[id]/page.tsx new file mode 100644 index 00000000..fb6362ad --- /dev/null +++ b/src/app/dev/investasi/status_transaksi/gagal/[id]/page.tsx @@ -0,0 +1,14 @@ +import { StatusTransaksiInvestasi_Gagal } from "@/app_modules/investasi"; +import getTransaksiByIdInvestasi from "@/app_modules/investasi/fun/get_transaksi_investasi"; + +export default async function Page({ params }: { params: { id: string } }) { + // console.log(params.id) + const dataTransaksi = await getTransaksiByIdInvestasi(params.id); +// console.log(dataTransaksi); + + return ( + <> + + + ); +} diff --git a/src/app/dev/investasi/status_transaksi/gagal/page.tsx b/src/app/dev/investasi/status_transaksi/gagal/page.tsx deleted file mode 100644 index 184b345c..00000000 --- a/src/app/dev/investasi/status_transaksi/gagal/page.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { StatusTransaksiInvestasi_Gagal } from "@/app_modules/investasi"; - -export default async function Page() { - return <> - - -} \ No newline at end of file diff --git a/src/app/dev/investasi/transfer/[id]/page.tsx b/src/app/dev/investasi/transfer/[id]/page.tsx index bafc300c..7c89ddce 100644 --- a/src/app/dev/investasi/transfer/[id]/page.tsx +++ b/src/app/dev/investasi/transfer/[id]/page.tsx @@ -1,11 +1,17 @@ import { TransferInvestasi } from "@/app_modules/investasi"; +import funCountDown from "@/app_modules/investasi/fun/fun_countdown_investasi"; import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; -import getTransaksiInvestasi from "@/app_modules/investasi/fun/get_transaksi_investasi"; +import getTransaksiByIdInvestasi from "@/app_modules/investasi/fun/get_transaksi_investasi"; export default async function Page({ params }: { params: { id: string } }) { - const dataTransaksi = await getTransaksiInvestasi(params.id); + const dataTransaksi = await getTransaksiByIdInvestasi(params.id); + // const cd = await funCountDown(params.id) + // console.log(dataTransaksi) + // const cd = await funCountDown("" + dataTransaksi?.id); - return <> - - ; + return ( + <> + + + ); } diff --git a/src/app/lib/router_hipmi/router_investasi.ts b/src/app/lib/router_hipmi/router_investasi.ts index 8706301e..6f14ad03 100644 --- a/src/app/lib/router_hipmi/router_investasi.ts +++ b/src/app/lib/router_hipmi/router_investasi.ts @@ -18,7 +18,7 @@ export const RouterInvestasi = { // proses beli saham proses_investasi: "/dev/investasi/proses_investasi/", status_transaksi: "/dev/investasi/status_transaksi/berhasil", - status_transaksi_gagal: "/dev/investasi/status_transaksi/gagal", + status_transaksi_gagal: "/dev/investasi/status_transaksi/gagal/", metode_transfer: "/dev/investasi/metode_transfer/", // edit // diff --git a/src/app_modules/investasi/fun/fun_cek_sisa_waktu.ts b/src/app_modules/investasi/fun/fun_cek_sisa_waktu.ts new file mode 100644 index 00000000..5a355019 --- /dev/null +++ b/src/app_modules/investasi/fun/fun_cek_sisa_waktu.ts @@ -0,0 +1,33 @@ +"use server"; + +import moment from "moment"; +import { MODEL_Transaksi_Investasi } from "../model/model_investasi"; +import funGantiStatusTransaksi_Investasi from "./fun_ganti_status_transaksi"; + +export default async function funCekSisaWaktuTransaksiInvestasi( + data: MODEL_Transaksi_Investasi[] +) { + const listData = data; + + + for (let e of listData) { + cekWaktu(e) + } + + async function cekWaktu(data: MODEL_Transaksi_Investasi) { + // console.log(data) + const selesai = moment(data.createdAt).add(1, "days").format(); + // let durasi = moment.duration(moment(selesai).diff(new Date())); + const skrng = moment(new Date()); + const sisaWaktu = moment(selesai).diff(skrng); + + + if (sisaWaktu <= 0) { + await funGantiStatusTransaksi_Investasi(data.id, "4") + .then((res) => { + // console.log(res.data) + }); + } + } + +} diff --git a/src/app_modules/investasi/fun/fun_countdown_investasi.ts b/src/app_modules/investasi/fun/fun_countdown_investasi.ts new file mode 100644 index 00000000..b83b62bb --- /dev/null +++ b/src/app_modules/investasi/fun/fun_countdown_investasi.ts @@ -0,0 +1,30 @@ +"use server"; + +import prisma from "@/app/lib/prisma"; +import moment from "moment"; +import funGantiStatusTransaksi_Investasi from "./fun_ganti_status_transaksi"; +import { MODEL_Transaksi_Investasi } from "../model/model_investasi"; + +export default async function funCountDown(data: MODEL_Transaksi_Investasi) { + // const res = await prisma.transaksiInvestasi.findMany({ + // where: { + // id: data.id, + // }, + // }); + + // if (!res) return { status: 400 }; + + // const selesai = moment(data.createdAt).add(1, "days").format(); + // let durasi = moment.duration(moment(selesai).diff(new Date())); + // const timer = setInterval(() => { + // durasi = moment.duration(+durasi - 1000, "milliseconds"); + // // console.log(d.days(), "=", d.hours(), d.minutes(), d.seconds()); + // if (durasi.hours() <= 0 && durasi.minutes() <= 0 && durasi.seconds() <= 0) { + // funGantiStatusTransaksi_Investasi(data.id, "4"); + // clearInterval(timer); + // return { + // status: 200, + // }; + // } + // }, 1000); +} diff --git a/src/app_modules/investasi/fun/fun_ganti_status_transaksi.ts b/src/app_modules/investasi/fun/fun_ganti_status_transaksi.ts new file mode 100644 index 00000000..26834d42 --- /dev/null +++ b/src/app_modules/investasi/fun/fun_ganti_status_transaksi.ts @@ -0,0 +1,38 @@ +"use server"; + +import prisma from "@/app/lib/prisma"; +import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; +import { revalidatePath } from "next/cache"; + +export default async function funGantiStatusTransaksi_Investasi( + transaksiId: string, + status: string +) { + // console.log(transaksiId, "hehe", status) + const data = await prisma.transaksiInvestasi.update({ + where: { + id: transaksiId, + }, + data: { + masterStatusTransaksiInvestasiId: status, + }, + select: { + id: true, + namaBank: true, + totalTransfer: true, + Investasi: true, + MasterStatusTransaksiInvestasi: true + } + }); + + + + if (!data) return { status: 400, message: "Status Gagal Diubah" }; + + revalidatePath(RouterInvestasi.main_transaksi) + return { + data: data, + status: 200, + message: "Status Diubah", + }; +} diff --git a/src/app_modules/investasi/fun/get_list_all_transaksi_by_id.ts b/src/app_modules/investasi/fun/get_list_all_transaksi_by_id.ts new file mode 100644 index 00000000..ad748c67 --- /dev/null +++ b/src/app_modules/investasi/fun/get_list_all_transaksi_by_id.ts @@ -0,0 +1,77 @@ +"use server"; + +import prisma from "@/app/lib/prisma"; +import moment from "moment"; +import { MODEL_Transaksi_Investasi } from "../model/model_investasi"; +import funGantiStatusTransaksi_Investasi from "./fun_ganti_status_transaksi"; + +export default async function getListAllTransaksiById_Investasi( + userId: string +) { + const data = await prisma.transaksiInvestasi.findMany({ + orderBy: { + updatedAt: "desc", + }, + where: { + authorId: userId, + }, + select: { + id: true, + namaBank: true, + nomorRekening: true, + totalTransfer: true, + lembarTerbeli: true, + active: true, + createdAt: true, + updatedAt: true, + authorId: true, + masterStatusTransaksiInvestasiId: true, + MasterStatusTransaksiInvestasi: true, + investasiId: true, + Investasi: true, + // Author:true, + }, + }); + + for (let e of data) { + cekWaktu(e as any) + } + + async function cekWaktu(data: MODEL_Transaksi_Investasi) { + // console.log(data) + const selesai = moment(data.createdAt).add(1, "days").format(); + const skrng = moment(new Date()); + const sisaWaktu = moment(selesai).diff(skrng); + + if (sisaWaktu <= 0) { + await funGantiStatusTransaksi_Investasi(data.id, "4") + } + } + + const dataBaru = await prisma.transaksiInvestasi.findMany({ + orderBy: { + createdAt: "desc", + }, + where: { + authorId: userId, + }, + select: { + id: true, + namaBank: true, + nomorRekening: true, + totalTransfer: true, + lembarTerbeli: true, + active: true, + createdAt: true, + updatedAt: true, + authorId: true, + masterStatusTransaksiInvestasiId: true, + MasterStatusTransaksiInvestasi: true, + investasiId: true, + Investasi: true, + // Author:true, + }, + }); + + return dataBaru +} diff --git a/src/app_modules/investasi/fun/get_transaksi_investasi.ts b/src/app_modules/investasi/fun/get_transaksi_investasi.ts index be63b646..24f47ff1 100644 --- a/src/app_modules/investasi/fun/get_transaksi_investasi.ts +++ b/src/app_modules/investasi/fun/get_transaksi_investasi.ts @@ -2,7 +2,7 @@ import prisma from "@/app/lib/prisma" -export default async function getTransaksiInvestasi(id: string) { +export default async function getTransaksiByIdInvestasi(id: string) { const data = await prisma.transaksiInvestasi.findUnique({ where: { id: id diff --git a/src/app_modules/investasi/fun/master/get_status_transaksi.ts b/src/app_modules/investasi/fun/master/get_status_transaksi.ts new file mode 100644 index 00000000..2f59b37f --- /dev/null +++ b/src/app_modules/investasi/fun/master/get_status_transaksi.ts @@ -0,0 +1,8 @@ +"use server" + +import prisma from "@/app/lib/prisma" + +export default async function getMaster_StatusTransaksiInvestasi() { + const data = await prisma.masterStatusTransaksiInvestasi.findMany() + return data +} \ No newline at end of file diff --git a/src/app_modules/investasi/index.ts b/src/app_modules/investasi/index.ts index 11ef934a..70da1e0e 100644 --- a/src/app_modules/investasi/index.ts +++ b/src/app_modules/investasi/index.ts @@ -55,7 +55,7 @@ import DetailPublishInvestasi from "./detail_portofolio/publish/page"; import LayoutDetailPublishInvestasi from "./detail_portofolio/publish/layout"; import DetailRejectInvestasi from "./detail_portofolio/reject/page"; import LayoutDetailRejectInvestasi from "./detail_portofolio/reject/layout"; -import TransaksiInvestasi from "./transaksi/page"; +import TransaksiInvestasi from "./transaksi/view"; import LayoutTransaksiInvestasi from "./transaksi/layout"; import StatusTransaksiInvestasi_Gagal from "./status_transaksi/gagal/view"; import LayoutStatusTransaksiInvestasi_Gagal from "./status_transaksi/gagal/layout"; diff --git a/src/app_modules/investasi/metode_transfer/view.tsx b/src/app_modules/investasi/metode_transfer/view.tsx index a188601e..0f1278dc 100644 --- a/src/app_modules/investasi/metode_transfer/view.tsx +++ b/src/app_modules/investasi/metode_transfer/view.tsx @@ -77,7 +77,7 @@ export default function MetodeTransferInvestasi({ return ( <> -
{JSON.stringify(transferValue, null, 2)}
+ {/*
{JSON.stringify(transferValue, null, 2)}
*/} {/* Box judul */} {investasi.title} diff --git a/src/app_modules/investasi/model/model_investasi.ts b/src/app_modules/investasi/model/model_investasi.ts index e731682a..c6896e15 100644 --- a/src/app_modules/investasi/model/model_investasi.ts +++ b/src/app_modules/investasi/model/model_investasi.ts @@ -6,16 +6,16 @@ export interface MODEL_Investasi { targetDana: string; hargaLembar: string; totalLembar: string; - sisaLembar: string, - lembarTerbeli: string + sisaLembar: string; + lembarTerbeli: string; roi: string; active: true; createdAt: Date; updatedAt: Date; authorId: string; imagesId: string; - catatan: string - progress: string, + catatan: string; + progress: string; MasterStatusInvestasi: MODEL_Status_investasi; BeritaInvestasi: Model_Berita_Investasi[]; DokumenInvestasi: Model_Dokumen_Investasi[]; @@ -23,19 +23,25 @@ export interface MODEL_Investasi { MasterPembagianDeviden: Model_All_Master; MasterPencarianInvestor: Model_All_Master; MasterPeriodeDeviden: Model_All_Master; + masterPeriodeDevidenId: string; + masterPembagianDevidenId: string; + masterPencarianInvestorId: string; } export interface MODEL_Transaksi_Investasi { id: string; - lembarTerbeli: string, - totalTransfer: string, - namaBank: string, - nomorRekening: string - active: true; + namaBank: string; + nomorRekening: string; + totalTransfer: string; + lembarTerbeli: string; + active: boolean; createdAt: Date; updatedAt: Date; - Author: MODEL_User_profile, - Investasi: MODEL_Investasi + investasiId: string; + authorId: string; + masterStatusTransaksiInvestasiId: string; + MasterStatusTransaksiInvestasi: Model_Status_Transaksi_Investasi; + Investasi: MODEL_Investasi; } export interface MODEL_Status_investasi { @@ -61,29 +67,38 @@ export interface Model_Berita_Investasi { } export interface Model_Prospektus_Investasi { - id: string - url: string + id: string; + url: string; active: boolean; - createdAt: Date - updatedAt: Date - investasiId: string + createdAt: Date; + updatedAt: Date; + investasiId: string; } export interface Model_Dokumen_Investasi { - id: string - title: string - url: string + id: string; + title: string; + url: string; active: boolean; - createdAt: Date - updatedAt: Date - investasiId: string + createdAt: Date; + updatedAt: Date; + investasiId: string; } export interface Model_Nama_Bank { - id: string, - name: string, - norek: string, - active: boolean, - createdAt: Date, - updatedAt: Date + id: string; + name: string; + norek: string; + active: boolean; + createdAt: Date; + updatedAt: Date; +} + +export interface Model_Status_Transaksi_Investasi { + id: string; + name: string; + color: string; + active: boolean; + createdAt: Date; + updatedAt: Date; } diff --git a/src/app_modules/investasi/proses_investasi/view.tsx b/src/app_modules/investasi/proses_investasi/view.tsx index e82923b0..307ed783 100644 --- a/src/app_modules/investasi/proses_investasi/view.tsx +++ b/src/app_modules/investasi/proses_investasi/view.tsx @@ -60,7 +60,7 @@ export default function ProsesInvestasi({ return ( <> -
{JSON.stringify(transferValue, null, 2)}
+ {/*
{JSON.stringify(transferValue, null, 2)}
*/} {/* Sisa Lembar Saham */} diff --git a/src/app_modules/investasi/status_transaksi/gagal/layout.tsx b/src/app_modules/investasi/status_transaksi/gagal/layout.tsx index 57ccfeaa..b93873df 100644 --- a/src/app_modules/investasi/status_transaksi/gagal/layout.tsx +++ b/src/app_modules/investasi/status_transaksi/gagal/layout.tsx @@ -1,57 +1,67 @@ -"use client" +"use client"; import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; import { Warna } from "@/app/lib/warna"; -import { AppShell, Header, Group, CloseButton, ActionIcon, Footer, Center, Button, Text } from "@mantine/core"; +import { + AppShell, + Header, + Group, + CloseButton, + ActionIcon, + Footer, + Center, + Button, + Text, +} from "@mantine/core"; import { useAtom } from "jotai"; import { useRouter } from "next/navigation"; import { gs_investasiFooter } from "../../g_state"; -export default function LayoutStatusTransaksiInvestasi_Gagal( { - children, - }: { - children: React.ReactNode; - }) { - const router = useRouter(); - const [hotMenu, setHotMenu] = useAtom(gs_investasiFooter); - - return ( - <> - - - { - router.push(RouterInvestasi.main_transaksi); - setHotMenu(3); - }} - /> - Status Transaksi - - - - } - footer={ -
-
- -
-
- } - > - {children} -
- - ); - } \ No newline at end of file +export default function LayoutStatusTransaksiInvestasi_Gagal({ + children, +}: { + children: React.ReactNode; +}) { + const router = useRouter(); + const [hotMenu, setHotMenu] = useAtom(gs_investasiFooter); + + return ( + <> + + + { + router.push(RouterInvestasi.main_transaksi); + setHotMenu(3); + }} + /> + Status Transaksi + + + + } + footer={ +
+
+ +
+
+ } + > + {children} +
+ + ); +} diff --git a/src/app_modules/investasi/status_transaksi/gagal/view.tsx b/src/app_modules/investasi/status_transaksi/gagal/view.tsx index 620a8a7b..1d1dcf7a 100644 --- a/src/app_modules/investasi/status_transaksi/gagal/view.tsx +++ b/src/app_modules/investasi/status_transaksi/gagal/view.tsx @@ -1,22 +1,27 @@ -"use client" +"use client"; -import { Paper, Stack, Center, Flex, Title, Divider, Group, Text } from "@mantine/core"; +import { + Paper, + Stack, + Center, + Flex, + Title, + Divider, + Group, + Text, +} from "@mantine/core"; import { useShallowEffect } from "@mantine/hooks"; import { IconAlertHexagon } from "@tabler/icons-react"; import moment from "moment"; import { useState } from "react"; +import { MODEL_Transaksi_Investasi } from "../../model/model_investasi"; -export default function StatusTransaksiInvestasi_Gagal(){ - const [tgl, setTgl] = useState(null); - - useShallowEffect(() => { - onDate(); - }, []); - - async function onDate() { - const d = Date.now(); - setTgl(moment(d).format("LLL")); - } +export default function StatusTransaksiInvestasi_Gagal({ + dataTransaksi, +}: { + dataTransaksi: MODEL_Transaksi_Investasi; +}) { + const [transaksi, setTransaksi] = useState(dataTransaksi) return ( <> @@ -26,37 +31,39 @@ export default function StatusTransaksiInvestasi_Gagal(){ Transaksi Gagal - {tgl} + {moment(transaksi.createdAt).format('lll')}
- -
- -
- - Rp. 300.000 - -
+ +
+ +
+ {/* Rp. {transaksi.totalTransfer} */} +
- Penerima - Nama Penerima + Nama Investasi + {transaksi.Investasi.title} - Bank Penerima - Nama Bank(BNI, BSI, dll) + Bank Tujuan + {transaksi.namaBank} - Nomor Rekening - 0000000000000 + Jumlah Transfer + Rp. {transaksi.totalTransfer} + + + Jumlah Lembar + {transaksi.lembarTerbeli}
); -} \ No newline at end of file +} diff --git a/src/app_modules/investasi/transaksi/page.tsx b/src/app_modules/investasi/transaksi/page.tsx deleted file mode 100644 index c4e94f28..00000000 --- a/src/app_modules/investasi/transaksi/page.tsx +++ /dev/null @@ -1,127 +0,0 @@ -"use client"; - -import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; -import { Badge, Group, Paper, Stack, Text, Title } from "@mantine/core"; -import { useRouter } from "next/navigation"; -import toast from "react-simple-toasts"; - -export default function TransaksiInvestasi() { - const router = useRouter(); - const listStatusTransaksi = [ - { id: 1, name: "Berhasil" }, - { id: 2, name: "Menunggu" }, - { id: 3, name: "Proses" }, - { id: 4, name: "Batal" }, - ]; - - const dataDummy = [ - { - id: 1, - name: "Judul Investasi", - status: { id: 1, name: "Berhasil" }, - }, - { - id: 2, - name: "Judul Investasi", - status: { id: 3, name: "Proses" }, - }, - { - id: 3, - name: "Judul Investasi", - status: { id: 2, name: "Menunggu" }, - }, - { - id: 4, - name: "Judul Investasi", - status: { id: 4, name: "Batal" }, - }, - { - id: 5, - name: "Judul Investasi", - status: { id: 1, name: "Berhasil" }, - }, - ]; - - async function onKlik(id: any) { - if (id === 1) { - return router.push(RouterInvestasi.status_transaksi); - } else { - if (id === 2) { - return router.push(RouterInvestasi.transfer); - } else { - if (id === 3) { - return router.push(RouterInvestasi.dialog_transaksi) - } else { - return router.push(RouterInvestasi.status_transaksi_gagal) - } - } - } - } - - return ( - <> - - {dataDummy.map((e) => ( - onKlik(e.status.id)} - > - - {e.name} - Rp. 100.000 - - - - Nama Bank - 10 Oktober 2023 - - {(() => { - if (e.status.id === 1) { - return ( - <> - - Berhasil - - - ); - } else { - if (e.status.id === 2) { - return ( - <> - - Menunggu - - - ); - } else { - if (e.status.id === 3) { - return ( - <> - <> - - Proses - - - - ); - } else { - return ( - <> - - Dibatalkan - - - ); - } - } - } - })()} - - - ))} - - - ); -} diff --git a/src/app_modules/investasi/transaksi/view.tsx b/src/app_modules/investasi/transaksi/view.tsx new file mode 100644 index 00000000..980e730e --- /dev/null +++ b/src/app_modules/investasi/transaksi/view.tsx @@ -0,0 +1,129 @@ +"use client"; + +import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; +import { Badge, Group, Paper, Stack, Text, Title } from "@mantine/core"; +import { useRouter } from "next/navigation"; +import toast from "react-simple-toasts"; +import { + MODEL_Transaksi_Investasi, + Model_Status_Transaksi_Investasi, +} from "../model/model_investasi"; +import { useState } from "react"; +import moment from "moment"; +import funCountDown from "../fun/fun_countdown_investasi"; +import funGantiStatusTransaksi_Investasi from "../fun/fun_ganti_status_transaksi"; +import { useInterval, useShallowEffect } from "@mantine/hooks"; + +export default function TransaksiInvestasi({ + statusTransaksi, + listTransaksi, +}: { + statusTransaksi: Model_Status_Transaksi_Investasi[]; + listTransaksi: MODEL_Transaksi_Investasi[]; +}) { + const router = useRouter(); + const [status, setStatus] = useState(statusTransaksi); + const [transaksi, setTransaksi] = useState(listTransaksi); + + + async function onKlik(statusId: string, transaksiId: string) { + // console.log(id) + if (statusId === "1") { + return router.push(RouterInvestasi.transfer + transaksiId); + } else { + if (statusId === "2") { + return router.push(RouterInvestasi.transfer); + } else { + if (statusId === "3") { + return router.push(RouterInvestasi.dialog_transaksi); + } else { + return router.push( + RouterInvestasi.status_transaksi_gagal + transaksiId + ); + } + } + } + } + + + + return ( + <> + + {transaksi.map((e) => ( + onKlik(e.masterStatusTransaksiInvestasiId, e.id)} + > + + {e.Investasi.title} + Rp.{e.totalTransfer} + + + + Bank {e.namaBank} + {moment(e.createdAt).format("ll")} + + {(() => { + if (e.masterStatusTransaksiInvestasiId === "1") { + return ( + <> + + {e.MasterStatusTransaksiInvestasi.name} + + + ); + } else { + if (e.masterStatusTransaksiInvestasiId === "2") { + return ( + <> + + {e.MasterStatusTransaksiInvestasi.name} + + + ); + } else { + if (e.masterStatusTransaksiInvestasiId === "3") { + return ( + <> + <> + + {e.MasterStatusTransaksiInvestasi.name} + + + + ); + } else { + return ( + <> + + {e.MasterStatusTransaksiInvestasi.name} + + + ); + } + } + } + })()} + + + ))} + + {/*
{JSON.stringify(transaksi, null, 2)}
*/} + + ); +} diff --git a/src/app_modules/investasi/transfer/view.tsx b/src/app_modules/investasi/transfer/view.tsx index be9a8f5a..0955a4c1 100644 --- a/src/app_modules/investasi/transfer/view.tsx +++ b/src/app_modules/investasi/transfer/view.tsx @@ -19,10 +19,10 @@ import { Text, Title, } from "@mantine/core"; -import { useShallowEffect } from "@mantine/hooks"; +import { useInterval, useShallowEffect } from "@mantine/hooks"; import { IconAlertTriangle } from "@tabler/icons-react"; import moment from "moment"; -import { useRouter } from "next/navigation"; +import { redirect, useRouter } from "next/navigation"; import { useState } from "react"; import Countdown from "react-countdown"; @@ -33,6 +33,7 @@ import { import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; import { useAtom } from "jotai"; import { gs_TransferValue, gs_investasiFooter } from "../g_state"; +import funGantiStatusTransaksi_Investasi from "../fun/fun_ganti_status_transaksi"; export default function TransferInvestasi({ dataTransaksi, @@ -41,13 +42,11 @@ export default function TransferInvestasi({ }) { const router = useRouter(); const [transaksi, setTransaksi] = useState(dataTransaksi); - const [hotMenu, setHotMenu] = useAtom(gs_investasiFooter); - const [countDown, setCountDown] = useState({ - jam: "", - menit: "", - detik: "", + const [countDown, setCountDown] = useState({ + jam: null, + menit: null, + detik: null, }); - const [transferValue, setTransferValue] = useAtom(gs_TransferValue); // useShallowEffect(() => { // const inter = apa_kabar("2023-11-18"); @@ -63,36 +62,45 @@ export default function TransferInvestasi({ // return inter; // } - useShallowEffect(() => { - const mulai = moment(transaksi.createdAt).format(); - const selesai = moment(transaksi.createdAt).add(1, "days").format(); - const inter = funCountDown(mulai as any, selesai as any); + // useShallowEffect(() => { + // const mulai = moment(transaksi.createdAt).format(); + // const selesai = moment(transaksi.createdAt).add(1, "days").format(); + // const timer = funCountDown(mulai as any, selesai as any); - return () => clearInterval(inter); - }, []); + // return () => clearInterval(timer); + // }, []); - function funCountDown(mulai: Date, selesai: Date) { - // console.log(selesai) - let d = moment.duration(moment(selesai).diff(new Date())); - const inter = setInterval(() => { - d = moment.duration(+d - 1000, "milliseconds"); - // console.log(d.hours(), d.minutes(), d.seconds()) - - setCountDown({ - ...countDown, - jam: "" + d.hours(), - menit: "" + d.minutes(), - detik: "" + d.seconds(), + // functionbaru ==========================// + const selesai = moment(transaksi.createdAt).add(1, "days").format(); + let durasi = moment.duration(moment(selesai).diff(new Date())); + const interval = useInterval(() => { + durasi = moment.duration(+durasi - 1000, "milliseconds"); + if (durasi.hours() <= 0 && durasi.minutes() <= 0 && durasi.seconds() <= 0) { + funGantiStatusTransaksi_Investasi(transaksi.id, "4").then((res) => { + if (res.status === 200) { + router.push( + RouterInvestasi.status_transaksi_gagal + `${transaksi.id}` + ); + interval.stop(); + } }); - }, 1000); + } + setCountDown({ + ...countDown, + jam: durasi.hours(), + menit: durasi.minutes(), + detik: durasi.seconds(), + }); + }, 1000); - return inter; - } + useShallowEffect(() => { + interval.start(); + }, []); return ( <> - {/*
{JSON.stringify(transferValue, null, 2)}
-
{JSON.stringify(transaksi, null,2)}
*/} + {/*
{JSON.stringify(transaksi, null,2)}
*/} + {/* {countDown.jam} */} Mohon transfer untuk diteruskan ke : @@ -106,18 +114,18 @@ export default function TransferInvestasi({ - {moment().add(1, "days").calendar()} + {moment(transaksi.createdAt).format("lll")} - +
- {countDown.jam === "0" && - countDown.menit === "0" && - countDown.detik === "0" ? ( - - Waktu habis - + {countDown.jam <= 0 && + countDown.menit <= 0 && + countDown.detik <= 0 ? ( + + Waktu Habis + ) : ( {countDown.jam}:{countDown.menit}:{countDown.detik} @@ -220,7 +228,7 @@ export default function TransferInvestasi({ bg={Warna.biru} onClick={() => { router.push(RouterInvestasi.dialog_transaksi); - setHotMenu(1); + // setHotMenu(1); // router.push(RouterInvestasi.status_transaksi); }} >