From 4fdfb6f4b0548d78a712443ac24e37e933665d41 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Mon, 9 Jun 2025 15:39:53 +0800 Subject: [PATCH] fix: donasi deskrispi: perubahan use server ke API src/app/api/donasi/[id]/invoice/route.ts src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/layout.tsx src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/layout.tsx src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/page.tsx src/app_modules/donasi/proses_donasi/metode_pembayaran/index.tsx src/app_modules/donasi/proses_donasi/proses_transaksi/index.tsx No Issue --- src/app/api/donasi/[id]/invoice/route.ts | 1 + .../metode_pembayaran/[id]/layout.tsx | 14 +++- .../metode_pembayaran/[id]/page.tsx | 14 +--- .../proses_transaksi/[id]/layout.tsx | 14 +++- .../proses_transaksi/[id]/page.tsx | 15 +--- .../proses_donasi/metode_pembayaran/index.tsx | 65 +++++++++++----- .../proses_donasi/proses_transaksi/index.tsx | 74 +++++++++++++------ 7 files changed, 123 insertions(+), 74 deletions(-) diff --git a/src/app/api/donasi/[id]/invoice/route.ts b/src/app/api/donasi/[id]/invoice/route.ts index 0527acf2..29293a2a 100644 --- a/src/app/api/donasi/[id]/invoice/route.ts +++ b/src/app/api/donasi/[id]/invoice/route.ts @@ -13,6 +13,7 @@ export async function GET( }, select: { id: true, + authorId: true, nominal: true, donasiId: true, createdAt: true, diff --git a/src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/layout.tsx b/src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/layout.tsx index 8e35d0c8..e7c36204 100644 --- a/src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/layout.tsx +++ b/src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/layout.tsx @@ -1,8 +1,14 @@ import { LayoutDonasi_MetodePembayaran } from "@/app_modules/donasi"; import React from "react"; -export default async function Layout({children}: {children: React.ReactNode}) { - return<> - {children} +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} -} \ No newline at end of file + ); +} diff --git a/src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx b/src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx index 99490dec..020c9e9f 100644 --- a/src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx +++ b/src/app/dev/(user)/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx @@ -1,19 +1,9 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Donasi_MetodePembayaran } from "@/app_modules/donasi"; -import { Donasi_getMasterBank } from "@/app_modules/donasi/fun/master/get_bank"; - -export default async function Page({ params }: { params: { id: string } }) { - let donasiId = params.id; - const listBank = await Donasi_getMasterBank(); - const userLoginId = await funGetUserIdByToken(); +export default async function Page() { return ( <> - + ); } diff --git a/src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/layout.tsx b/src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/layout.tsx index ffd6310d..8748b2eb 100644 --- a/src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/layout.tsx +++ b/src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/layout.tsx @@ -1,8 +1,14 @@ import { LayoutDonasi_ProsesTransaksi } from "@/app_modules/donasi"; import React from "react"; -export default async function Layout({children}:{children: React.ReactNode}) { - return<> - {children} +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} -} \ No newline at end of file + ); +} diff --git a/src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/page.tsx b/src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/page.tsx index 3976b1aa..d800a97c 100644 --- a/src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/page.tsx +++ b/src/app/dev/(user)/donasi/proses_donasi/proses_transaksi/[id]/page.tsx @@ -1,20 +1,9 @@ import { Donasi_ProsesTransaksi } from "@/app_modules/donasi"; -import { Donasi_getOneInvoiceById } from "@/app_modules/donasi/fun/get/get_one_invoice_by_id"; -import { donasi_getOneStatusInvoiceById } from "@/app_modules/donasi/fun/get/get_one_status_invoice_by_id"; -import donasi_getMasterNomorAdmin from "@/app_modules/donasi/fun/master/get_nomor_admin"; - -export default async function Page({ params }: { params: { id: string } }) { - let invoiceId = params.id; - const nomorAdmin = await donasi_getMasterNomorAdmin(); - const statusInvoice = await donasi_getOneStatusInvoiceById({invoiceId: invoiceId}) - // console.log(statusInvoice) +export default async function Page() { return ( <> - + ); } diff --git a/src/app_modules/donasi/proses_donasi/metode_pembayaran/index.tsx b/src/app_modules/donasi/proses_donasi/metode_pembayaran/index.tsx index 0fb22f69..cdd1ff3c 100644 --- a/src/app_modules/donasi/proses_donasi/metode_pembayaran/index.tsx +++ b/src/app_modules/donasi/proses_donasi/metode_pembayaran/index.tsx @@ -1,48 +1,73 @@ "use client"; -import { IRealtimeData } from "@/lib/global_state"; -import { RouterDonasi } from "@/lib/router_hipmi/router_donasi"; import { AccentColor, MainColor, } from "@/app_modules/_global/color/color_pallet"; +import { apiNewGetUserIdByToken } from "@/app_modules/_global/lib/api_fetch_global"; +import { apiGetMasterBank } from "@/app_modules/_global/lib/api_fetch_master"; import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global/notifikasi_berhasil"; import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; import { MODEL_MASTER_BANK } from "@/app_modules/investasi/_lib/interface"; import notifikasiToAdmin_funCreate from "@/app_modules/notifikasi/fun/create/create_notif_to_admin"; +import { IRealtimeData } from "@/lib/global_state"; +import { RouterDonasi } from "@/lib/router_hipmi/router_donasi"; +import { clientLogger } from "@/util/clientLogger"; import { Button, Paper, Radio, Stack, Title } from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; import { useAtom } from "jotai"; -import { useRouter } from "next/navigation"; +import { useParams, useRouter } from "next/navigation"; import { useState } from "react"; +import { WibuRealtime } from "wibu-pkg"; import { Donasi_funCreateInvoice } from "../../fun/create/fun_create_invoice"; import { gs_donasi_hot_menu, gs_proses_donasi } from "../../global_state"; -import { WibuRealtime } from "wibu-pkg"; -import { clientLogger } from "@/util/clientLogger"; -export default function Donasi_MetodePembayaran({ - listBank, - donasiId, - authorId, -}: { - listBank: MODEL_MASTER_BANK[]; - donasiId: string; - authorId: string; -}) { +export default function Donasi_MetodePembayaran() { + const param = useParams<{ id: string }>(); const router = useRouter(); const [isLoading, setLoading] = useState(false); const [prosesDonasi, setProsesDonasi] = useAtom(gs_proses_donasi); const [pilihBank, setPilihBank] = useState(""); - const [bank, setBank] = useState(listBank); + const [bank, setBank] = useState(null); const [activeHotMenu, setActiveHotMenu] = useAtom(gs_donasi_hot_menu); + const [userLoginId, setUserLoginId] = useState(null); + + useShallowEffect(() => { + handleListData(); + handleGetUserId(); + }, []); + + async function handleListData() { + try { + const response = await apiGetMasterBank(); + if (response.success) { + setBank(response.data); + } + } catch (error) { + console.error("Error fetching bank data:", error); + } + } + + async function handleGetUserId() { + try { + const response = await apiNewGetUserIdByToken(); + if (response.success) { + setUserLoginId(response.userId); + } + } catch (error) { + console.error("Error fetching user ID:", error); + } + } async function onProses() { try { setLoading(true); const body = { - donasiId: donasiId, + donasiId: param.id, donasiMaster_BankId: pilihBank, nominal: prosesDonasi.nominal, - authorId: authorId, + authorId: userLoginId, }; const res = await Donasi_funCreateInvoice(body); @@ -84,11 +109,13 @@ export default function Donasi_MetodePembayaran({ } } + if (!bank || !userLoginId) { + return ; + } + return ( <> - {/*
{JSON.stringify(prosesDonasi, null, 2)}
*/} - (); const router = useRouter(); - const [data, setData] = useState(statusInvoice); + const [dataInvoice, setDataInvoice] = useState( + null + ); + const [dataNomorAdmin, setDataNomorAdmin] = useState(null); const [hotMenu, setHotMenu] = useAtom(gs_donasi_hot_menu); + useShallowEffect(() => { + onLoadDataInvoice(); + onLoadDataNomorAdmin(); + }, []); + + async function onLoadDataInvoice() { + try { + const response = await apiGetDonasiInvoiceById({ id: param.id }); + if (response.success) { + setDataInvoice(response.data); + } + } catch (error) { + console.log(error); + } + } + + async function onLoadDataNomorAdmin() { + try { + const response = await apiGetAdminContact(); + if (response.success) { + setDataNomorAdmin(response.data); + } + } catch (error) { + console.log(error); + } + } + interface MODAL_DONASI_INVOICE { invoiceId: string; statusInvoiceId: string; @@ -47,33 +75,35 @@ export default function Donasi_ProsesTransaksi({ mqtt_client.on("message", (topic, message) => { const dataClient: MODAL_DONASI_INVOICE = JSON.parse(message.toString()); - if (topic === "donasi_invoice" && dataClient.invoiceId === data.id) { - // setData({ - // ...data, - // donasiMaster_StatusInvoiceId: dataClient.statusInvoiceId, - // }); + if (topic === "donasi_invoice" && dataClient.invoiceId === param.id) { onLoad(); } }); }, []); async function onLoad() { - const loadData = await donasi_getOneStatusInvoiceById({ - invoiceId: data.id, - }); - setData(loadData as any); + try { + const response = await apiGetDonasiInvoiceById({ id: param.id }); + if (response.success) { + setDataInvoice(response.data); + } + } catch (error) { + console.log(error); + } } - if (data.DonasiMaster_StatusInvoice.id === "1") { + if (dataInvoice?.DonasiMaster_StatusInvoice.id === "1") { setHotMenu(2); - router.replace(RouterDonasi.detail_donasi_saya + `${data.id}`, { + router.replace(RouterDonasi.detail_donasi_saya + `${dataInvoice?.id}`, { scroll: false, }); } + if(!dataInvoice || !dataNomorAdmin) return + return ( <> - {data.DonasiMaster_StatusInvoice.id === "1" ? ( + {dataInvoice.DonasiMaster_StatusInvoice.id === "1" ? ( <>
@@ -150,7 +180,7 @@ export default function Donasi_ProsesTransaksi({ textDecoration: "none", }} target="_blank" - href={`https://wa.me/+${nomorAdmin.nomor}?text=Hallo Admin , Saya ada kendala dalam proses transfer donasi!`} + href={`https://wa.me/+${dataNomorAdmin}?text=Hallo Admin , Saya ada kendala dalam proses transfer donasi!`} >