fix : donasi

deksripsi:
- mengant use server menjadi api
src/app/api/donasi/[id]/invoice/count/route.ts
src/app/api/donasi/[id]/invoice/route.ts
src/app/api/donasi/kabar/[id]/route.ts
src/app/dev/(user)/donasi/cerita_penggalang/[id]/layout.tsx
src/app/dev/(user)/donasi/cerita_penggalang/[id]/page.tsx
src/app/dev/(user)/donasi/detail/donasi_saya/[id]/page.tsx
src/app/dev/(user)/donasi/detail/kabar/[id]/page.tsx
src/app/dev/(user)/donasi/proses_donasi/invoice/[id]/page.tsx
src/app_modules/admin/donasi/detail/publish/detail_list_donatur.tsx
src/app_modules/admin/donasi/fun/update/fun_update_status_dan_total.ts
src/app_modules/donasi/detail/detail_donasi_saya/index.tsx
src/app_modules/donasi/detail/detail_kabar/index.tsx
src/app_modules/donasi/detail/detail_main/cerita_penggalang/layout.tsx
src/app_modules/donasi/lib/api_donasi.ts
src/app_modules/donasi/proses_donasi/invoice/index.tsx

No Issue
This commit is contained in:
2025-06-09 14:57:47 +08:00
parent 1b23c50ff0
commit 048f819a57
15 changed files with 532 additions and 209 deletions

View File

@@ -4,6 +4,7 @@ import { ComponentGlobal_TampilanRupiah } from "@/app_modules/_global/component"
import { apiGetMasterStatusTransaksi } from "@/app_modules/_global/lib/api_fetch_master";
import { globalStatusTransaksi } from "@/app_modules/_global/lib/master_list_app";
import { ComponentAdminGlobal_TitlePage } from "@/app_modules/admin/_admin_global/_component";
import { Admin_ComponentModal } from "@/app_modules/admin/_admin_global/_component/comp_admin_modal";
import CustomSkeletonAdmin from "@/app_modules/admin/_admin_global/_component/skeleton/customSkeletonAdmin";
import { ComponentAdminGlobal_NotifikasiBerhasil } from "@/app_modules/admin/_admin_global/admin_notifikasi/notifikasi_berhasil";
import { ComponentAdminGlobal_NotifikasiGagal } from "@/app_modules/admin/_admin_global/admin_notifikasi/notifikasi_gagal";
@@ -19,7 +20,6 @@ import {
Button,
Center,
Group,
Modal,
Paper,
ScrollArea,
Select,
@@ -34,6 +34,7 @@ import { useParams, useRouter } from "next/navigation";
import { useState } from "react";
import adminDonasi_funUpdateStatusDanTotal from "../../fun/update/fun_update_status_dan_total";
import { apiGetAdminAllDaftarDonatur } from "../../lib/api_fetch_admin_donasi";
import mqtt_client from "@/util/mqtt_client";
function TampilanListDonatur({
setReloadDonasi,
@@ -334,7 +335,7 @@ function ButtonAccept({
onSuccessDonatur: (val: any) => void;
isReload: boolean;
}) {
const [opened, { open, close }] = useDisclosure(false);
const [opened, setOpened] = useState(false);
const [isLoading, setIsLoading] = useState(false);
async function onAccept() {
@@ -343,79 +344,84 @@ function ButtonAccept({
setIsLoading(true);
isReload;
const updateStatus = await adminDonasi_funUpdateStatusDanTotal({
invoiceId: invoiceId,
donasiId: donasiId,
jumlahTerkumpul: jumlahTerkumpul,
nominal: nominalDonasi,
target: target,
statusInvoiceId: "1",
});
if (updateStatus.status == 200) {
const dataNotif = {
appId: updateStatus.data?.id,
userId: updateStatus.data?.authorId,
pesan: updateStatus.data?.Donasi?.title,
status: updateStatus.data?.DonasiMaster_StatusInvoice?.name,
kategoriApp: "DONASI",
title: "Terimakasih, Donasi anda telah diterima",
};
const notif = await adminNotifikasi_funCreateToUser({
data: dataNotif as any,
try {
const updateStatus = await adminDonasi_funUpdateStatusDanTotal({
invoiceId: invoiceId,
donasiId: donasiId,
jumlahTerkumpul: jumlahTerkumpul,
nominal: nominalDonasi,
target: target,
statusInvoiceId: "1",
});
if (notif.status === 201) {
mqtt_client.publish(
"USER",
JSON.stringify({ userId: updateStatus?.data?.authorId, count: 1 })
);
if (updateStatus.status === 200) {
const dataNotif = {
appId: updateStatus.data?.id,
userId: updateStatus.data?.authorId,
pesan: updateStatus.data?.Donasi?.title,
status: updateStatus.data?.DonasiMaster_StatusInvoice?.name,
kategoriApp: "DONASI",
title: "Terimakasih, Donasi anda telah diterima",
};
mqtt_client.publish(
"donasi_invoice",
JSON.stringify({
invoiceId: invoiceId,
statusInvoiceId: "1",
})
);
const notif = await adminNotifikasi_funCreateToUser({
data: dataNotif as any,
});
if (notif.status === 201) {
mqtt_client.publish(
"USER",
JSON.stringify({ userId: updateStatus?.data?.authorId, count: 1 })
);
mqtt_client.publish(
"donasi_invoice",
JSON.stringify({
invoiceId: invoiceId,
statusInvoiceId: "1",
})
);
}
const dataNotifToAuthorDonasi = {
appId: updateStatus.data?.Donasi?.id,
userId: updateStatus.data?.Donasi?.authorId,
pesan: updateStatus.data?.Donasi?.title,
status: "Donatur Baru",
kategoriApp: "DONASI",
title: "Ada donatur baru",
};
const notifToAuthorDonasi = await adminNotifikasi_funCreateToUser({
data: dataNotifToAuthorDonasi as any,
});
if (notifToAuthorDonasi.status === 201) {
mqtt_client.publish(
"USER",
JSON.stringify({
userId: updateStatus?.data?.Donasi?.authorId,
count: 1,
})
);
}
// const updateData = await AdminDonasi_getOneById(donasiId);
// onSuccessDonasi(updateData as any);
// const updatelistDonatur = await adminDonasi_getListDonatur({
// donasiId: donasiId,
// page: 1,
// });
setOpened(false);
onSuccessDonasi(true);
ComponentAdminGlobal_NotifikasiBerhasil(updateStatus.message);
setIsLoading(false);
} else {
ComponentAdminGlobal_NotifikasiGagal(updateStatus.message);
setIsLoading(false);
}
const dataNotifToAuthorDonasi = {
appId: updateStatus.data?.Donasi?.id,
userId: updateStatus.data?.Donasi?.authorId,
pesan: updateStatus.data?.Donasi?.title,
status: "Donatur Baru",
kategoriApp: "DONASI",
title: "Ada donatur baru",
};
const notifToAuthorDonasi = await adminNotifikasi_funCreateToUser({
data: dataNotifToAuthorDonasi as any,
});
if (notifToAuthorDonasi.status === 201) {
mqtt_client.publish(
"USER",
JSON.stringify({
userId: updateStatus?.data?.Donasi?.authorId,
count: 1,
})
);
}
// const updateData = await AdminDonasi_getOneById(donasiId);
// onSuccessDonasi(updateData as any);
// const updatelistDonatur = await adminDonasi_getListDonatur({
// donasiId: donasiId,
// page: 1,
// });
onSuccessDonasi(true);
ComponentAdminGlobal_NotifikasiBerhasil(updateStatus.message);
setIsLoading(false);
close();
} else {
ComponentAdminGlobal_NotifikasiGagal(updateStatus.message);
} catch (error) {
console.error("Error update status invoice", error);
setIsLoading(false);
}
}
@@ -426,38 +432,49 @@ function ButtonAccept({
color="green"
radius={"xl"}
onClick={() => {
open();
setOpened(true);
}}
>
Terima
</Button>
<Modal opened={opened} onClose={close} centered withCloseButton={false}>
<Paper>
<Stack align="center">
<Title
align="center"
order={6}
>{`${"Anda sudah melihat bukti transfer dan yakin menerima donasi ini ?"}`}</Title>
<Group position="center">
<Button radius={"xl"} onClick={() => close()}>
Batal
</Button>
<Button
color="green"
loading={isLoading}
loaderPosition="center"
radius={"xl"}
onClick={() => {
onAccept();
}}
>
Terima
</Button>
</Group>
</Stack>
</Paper>
</Modal>
<Admin_ComponentModal
opened={opened}
onClose={() => {
setOpened(false);
}}
// title="Terima Donasi"
size="sm"
withCloseButton={false}
>
<Stack align="center">
<Title
c={AdminColor.white}
align="center"
order={6}
>{`${"Anda sudah melihat bukti transfer dan yakin menerima donasi ini ?"}`}</Title>
<Group position="center">
<Button radius={"xl"} onClick={() => setOpened(false)}>
Batal
</Button>
<Button
color="green"
loading={isLoading}
loaderPosition="center"
radius={"xl"}
onClick={() => {
onAccept();
}}
>
Terima
</Button>
</Group>
</Stack>
</Admin_ComponentModal>
{/* <Modal opened={opened} onClose={close} centered withCloseButton={false}>
</Modal> */}
</>
);
}

View File

@@ -22,11 +22,11 @@ export default async function adminDonasi_funUpdateStatusDanTotal({
}) {
let totalNominal = nominal + jumlahTerkumpul;
const progres = (totalNominal / target) * 100;
console.log("Progres", progres)
console.log("Jumlah total nominal", typeof totalNominal)
console.log("Ini nominal", nominal)
console.log("Ini jumlah terkumpul", jumlahTerkumpul)
console.log("Ini target", target)
// console.log("Progres", progres)
// console.log("Jumlah total nominal", typeof totalNominal)
// console.log("Ini nominal", nominal)
// console.log("Ini jumlah terkumpul", jumlahTerkumpul)
// console.log("Ini target", target)
const updateInvoice = await prisma.donasi_Invoice.update({
where: {
@@ -43,7 +43,6 @@ export default async function adminDonasi_funUpdateStatusDanTotal({
id: true,
title: true,
authorId: true,
},
},
DonasiMaster_StatusInvoice: {
@@ -53,7 +52,7 @@ export default async function adminDonasi_funUpdateStatusDanTotal({
},
},
});
console.log("Jumlah update invoice", updateInvoice)
// console.log("Jumlah update invoice", updateInvoice);
if (!updateInvoice) return { status: 400, message: "Update invoice gagal" };
@@ -66,7 +65,7 @@ export default async function adminDonasi_funUpdateStatusDanTotal({
progres: "" + progres,
},
});
console.log("Jumlah update donasi", updateDonasi)
// console.log("Jumlah update donasi", updateDonasi)
if (!updateDonasi) return { status: 400, message: "Update donasi gagal" };
revalidatePath(RouterAdminDonasi_OLD.detail_publish + donasiId);