(listProses);
+ const [opened, { open, close }] = useDisclosure(false);
+ const [imageId, setImageId] = useState("");
async function onClick(invoice: MODEL_DONASI_INVOICE) {
let nominal: number = +invoice.nominal;
@@ -50,7 +55,7 @@ export default function AdminDonasi_ProsesTransaksi({
if (res.status === 200) {
await AdminDonasi_getListStatusInvoiceProses(
invoice.Donasi.id
- ).then((res) => {
+ ).then((res: any) => {
setInvoice(res);
});
} else {
@@ -79,6 +84,20 @@ export default function AdminDonasi_ProsesTransaksi({
{
+ open();
+ setImageId(e.imagesId);
+ }}
+ >
+ Lihat
+
+
+
+
+
+ onClick(e)}
>
@@ -91,9 +110,12 @@ export default function AdminDonasi_ProsesTransaksi({
return (
<>
+
+
+
{/* {JSON.stringify(invoice, null, 2)} */}
-
+
@@ -107,6 +129,9 @@ export default function AdminDonasi_ProsesTransaksi({
Metode Pembayaran
Tanggal
+
+ Bukti Transfer
+
Aksi
@@ -151,3 +176,16 @@ function HeaderPage() {
>
);
}
+
+function ModalBuktiTransfer({ imageId }: { imageId: string }) {
+ return (
+ <>
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/donasi/fun/create/fun_create_pencairan_dana.tsx b/src/app_modules/admin/donasi/fun/create/fun_create_pencairan_dana.tsx
new file mode 100644
index 00000000..72e591eb
--- /dev/null
+++ b/src/app_modules/admin/donasi/fun/create/fun_create_pencairan_dana.tsx
@@ -0,0 +1,52 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { MODEL_DONASI_PENCAIRAN_DANA } from "@/app_modules/donasi/model/interface";
+import _ from "lodash";
+import { v4 } from "uuid";
+import fs from "fs";
+import { revalidatePath } from "next/cache";
+
+export async function AdminDonasi_funCreatePencairanDana(
+ req: MODEL_DONASI_PENCAIRAN_DANA,
+ gambar: FormData
+) {
+ const dataImage: any = gambar.get("file");
+ const fileName = dataImage.name;
+ const fileExtension = _.lowerCase(dataImage.name.split(".").pop());
+ const fRandomName = v4(fileName) + "." + fileExtension;
+
+ const uploadBukti = await prisma.images.create({
+ data: {
+ url: fRandomName,
+ },
+ select: {
+ id: true,
+ url: true,
+ },
+ });
+
+ if (!uploadBukti) return { status: 400, message: "Gagal upload gambar" };
+ const uploadFolder = Buffer.from(await dataImage.arrayBuffer());
+ fs.writeFileSync(
+ `./public/donasi/pencairan/${uploadBukti.url}`,
+ uploadFolder
+ );
+
+ const createPencairan = await prisma.donasi_PencairanDana.create({
+ data: {
+ nominalCair: +req.nominalCair,
+ deskripsi: req.deskripsi,
+ title: req.title,
+ donasiId: req.donasiId,
+ imagesId: uploadBukti.id
+ },
+ });
+
+ if (!createPencairan) return { status: 400, message: "Gagal membuat data" };
+ revalidatePath("/dev/admin/donasi/detail/publish");
+ return {
+ status: 200,
+ message: "Berhasil",
+ };
+}
diff --git a/src/app_modules/admin/donasi/fun/get/get_donasi_by_status.ts b/src/app_modules/admin/donasi/fun/get/get_list_donasi_by_status.ts
similarity index 80%
rename from src/app_modules/admin/donasi/fun/get/get_donasi_by_status.ts
rename to src/app_modules/admin/donasi/fun/get/get_list_donasi_by_status.ts
index 7017c7f9..a64c5684 100644
--- a/src/app_modules/admin/donasi/fun/get/get_donasi_by_status.ts
+++ b/src/app_modules/admin/donasi/fun/get/get_list_donasi_by_status.ts
@@ -4,7 +4,10 @@ import prisma from "@/app/lib/prisma";
export async function AdminDonasi_getByStatus(status: string) {
if (status === "1") {
- const getReview = await prisma.donasi.findMany({
+ const getPublish = await prisma.donasi.findMany({
+ orderBy: {
+ createdAt: "desc",
+ },
where: {
donasiMaster_StatusDonasiId: "1",
},
@@ -12,24 +15,25 @@ export async function AdminDonasi_getByStatus(status: string) {
id: true,
title: true,
target: true,
- active: true,
- createdAt: true,
- updatedAt: true,
- publishTime: true,
+ // active: true,
+ // createdAt: true,
+ // updatedAt: true,
+ // publishTime: true,
authorId: true,
- imagesId: true,
- donasiMaster_KategoriId: true,
- donasiMaster_DurasiId: true,
- donasiMaster_StatusDonasiId: true,
- Author: true,
+ // imagesId: true,
+ terkumpul: true,
+ // donasiMaster_KategoriId: true,
+ // donasiMaster_DurasiId: true,
+ // donasiMaster_StatusDonasiId: true,
+ // Author: true,
imageDonasi: true,
- CeritaDonasi: true,
+ // CeritaDonasi: true,
DonasiMaster_Ketegori: true,
DonasiMaster_Durasi: true,
- DonasiMaster_Status: true,
+ // DonasiMaster_Status: true,
},
});
- return getReview;
+ return getPublish;
}
if (status === "2") {
diff --git a/src/app_modules/admin/donasi/fun/get/get_list_pencairan_dana_by_id.ts b/src/app_modules/admin/donasi/fun/get/get_list_pencairan_dana_by_id.ts
new file mode 100644
index 00000000..9007e75a
--- /dev/null
+++ b/src/app_modules/admin/donasi/fun/get/get_list_pencairan_dana_by_id.ts
@@ -0,0 +1,13 @@
+"use server"
+
+import prisma from "@/app/lib/prisma"
+
+export async function AdminDonasi_getListPencairanDana(donasiId:string) {
+ const data = await prisma.donasi_PencairanDana.findMany({
+ where: {
+ donasiId: donasiId
+ }
+ })
+
+ return data
+}
\ No newline at end of file
diff --git a/src/app_modules/admin/donasi/fun/get/get_list_status_invoice_proses.ts b/src/app_modules/admin/donasi/fun/get/get_list_status_invoice_proses.ts
index 8895b647..79dca473 100644
--- a/src/app_modules/admin/donasi/fun/get/get_list_status_invoice_proses.ts
+++ b/src/app_modules/admin/donasi/fun/get/get_list_status_invoice_proses.ts
@@ -15,6 +15,7 @@ export async function AdminDonasi_getListStatusInvoiceProses(donasiId: string) {
nominal: true,
createdAt: true,
Author: true,
+ imagesId: true,
Donasi: {
select: {
id: true,
@@ -26,8 +27,6 @@ export async function AdminDonasi_getListStatusInvoiceProses(donasiId: string) {
publishTime: true,
catatan: true,
terkumpul: true,
- authorId: true,
- imagesId: true,
donasiMaster_KategoriId: true,
donasiMaster_DurasiId: true,
donasiMaster_StatusDonasiId: true,
diff --git a/src/app_modules/admin/donasi/fun/get/get_one_by_id.ts b/src/app_modules/admin/donasi/fun/get/get_one_by_id.ts
index 355ed71e..4f964f95 100644
--- a/src/app_modules/admin/donasi/fun/get/get_one_by_id.ts
+++ b/src/app_modules/admin/donasi/fun/get/get_one_by_id.ts
@@ -2,7 +2,7 @@
import prisma from "@/app/lib/prisma";
-export async function AdminDonasi_getById(id: string) {
+export async function AdminDonasi_getOneById(id: string) {
const res = await prisma.donasi.findFirst({
where: {
id: id,
@@ -19,6 +19,10 @@ export async function AdminDonasi_getById(id: string) {
progres: true,
terkumpul: true,
authorId: true,
+ namaBank: true,
+ rekening: true,
+ totalPencairan: true,
+ akumulasiPencairan: true,
imagesId: true,
donasiMaster_KategoriId: true,
donasiMaster_DurasiId: true,
@@ -31,5 +35,6 @@ export async function AdminDonasi_getById(id: string) {
DonasiMaster_Status: true,
},
});
+ // console.log(res)
return res;
}
diff --git a/src/app_modules/admin/donasi/fun/update/fun_update_akumulasi_pencairan.ts b/src/app_modules/admin/donasi/fun/update/fun_update_akumulasi_pencairan.ts
new file mode 100644
index 00000000..0d208c36
--- /dev/null
+++ b/src/app_modules/admin/donasi/fun/update/fun_update_akumulasi_pencairan.ts
@@ -0,0 +1,47 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { MODEL_DONASI } from "@/app_modules/donasi/model/interface";
+
+export async function AdminDonasi_AkumulasiPencairanById(
+ donasiId: string,
+ nominalPencairan: number
+) {
+ const cariDonasi = await prisma.donasi.findFirst({
+ where: {
+ id: donasiId,
+ },
+ select: {
+ akumulasiPencairan: true,
+ totalPencairan: true,
+ },
+ });
+
+ if (!cariDonasi) return { status: 400, message: "Donasi tidak ditemukan" };
+
+ let akumulasiSementara: number | any = cariDonasi.akumulasiPencairan;
+ let totalSementara: number | any = cariDonasi.totalPencairan;
+
+// console.log(akumulasiSementara, "akumulasi");
+// console.log(totalSementara, "total");
+
+ const hasilTotal = totalSementara + Number(nominalPencairan)
+ const hasilAkumulasi = akumulasiSementara + 1;
+
+ const update = await prisma.donasi.update({
+ where: {
+ id: donasiId,
+ },
+ data: {
+ akumulasiPencairan: hasilAkumulasi,
+ totalPencairan: hasilTotal,
+ },
+ });
+
+ if (!update) return { status: 400, message: "Update akumulasi gagal" };
+
+ return {
+ status: 200,
+ message: "Berhasil di simpan",
+ };
+}
diff --git a/src/app_modules/admin/donasi/fun/update/fun_update_catatan_reject.ts b/src/app_modules/admin/donasi/fun/update/fun_update_catatan_reject.ts
new file mode 100644
index 00000000..2d0d5898
--- /dev/null
+++ b/src/app_modules/admin/donasi/fun/update/fun_update_catatan_reject.ts
@@ -0,0 +1,20 @@
+"use server"
+
+import prisma from "@/app/lib/prisma"
+
+export async function AdminDonasi_funUpdateCatatanReject(doansiId: string, catatan: string) {
+ const updt = await prisma.donasi.update({
+ where: {
+ id: doansiId
+ },
+ data: {
+ catatan: catatan
+ }
+ })
+
+ if(!updt) return {status: 400, message: "Gagal update"}
+ return {
+ status: 200,
+ message: "Berhasil update"
+ }
+}
\ No newline at end of file
diff --git a/src/app_modules/admin/donasi/global_state/index.ts b/src/app_modules/admin/donasi/global_state/index.ts
new file mode 100644
index 00000000..82788e0b
--- /dev/null
+++ b/src/app_modules/admin/donasi/global_state/index.ts
@@ -0,0 +1,3 @@
+import { atomWithStorage } from "jotai/utils";
+
+export const gs_adminDonasi_hotMenu = atomWithStorage("gs_adminDonasi_hotMenu", 0)
\ No newline at end of file
diff --git a/src/app_modules/admin/donasi/index.tsx b/src/app_modules/admin/donasi/index.tsx
index 68656f82..23917fc1 100644
--- a/src/app_modules/admin/donasi/index.tsx
+++ b/src/app_modules/admin/donasi/index.tsx
@@ -6,6 +6,7 @@ import AdminDonasi_DetailReview from "./detail_table/detail_review";
import AdminDonasi_TableReject from "./table_status/table_reject";
import AdminDonasi_DetailReject from "./detail_table/detail_reject";
import AdminDonasi_ProsesTransaksi from "./detail_table/publish/proses_transaksi";
+import AdminDonasi_PencairanDana from "./detail_table/publish/pencairan_dana";
export {
AdminDonasi_Main,
@@ -15,4 +16,6 @@ export {
AdminDonasi_TableReject,
AdminDonasi_DetailReview,
AdminDonasi_DetailReject,
+ AdminDonasi_ProsesTransaksi,
+ AdminDonasi_PencairanDana,
};
diff --git a/src/app_modules/admin/donasi/table_status/table_publish.tsx b/src/app_modules/admin/donasi/table_status/table_publish.tsx
index 9305ccb9..4a935c72 100644
--- a/src/app_modules/admin/donasi/table_status/table_publish.tsx
+++ b/src/app_modules/admin/donasi/table_status/table_publish.tsx
@@ -14,7 +14,7 @@ import {
} from "@mantine/core";
import { IconChevronLeft, IconEyeCheck } from "@tabler/icons-react";
import { useRouter } from "next/navigation";
-import AdminDonasi_TombolKembali from "../component/tombol_kembali";
+import ComponentAdminDonasi_TombolKembali from "../component/tombol_kembali";
import { MODEL_DONASI } from "@/app_modules/donasi/model/interface";
import { useState } from "react";
import TampilanRupiahDonasi from "@/app_modules/donasi/component/tampilan_rupiah";
@@ -27,7 +27,7 @@ export default function AdminDonasi_TablePublish({
return (
<>
-
+
>
@@ -45,6 +45,9 @@ function TableStatus({ listPublish }: { listPublish: MODEL_DONASI[] }) {
+
+
+
{e.DonasiMaster_Ketegori.name}
{e.DonasiMaster_Durasi.name} hari
@@ -84,6 +87,7 @@ function TableStatus({ listPublish }: { listPublish: MODEL_DONASI[] }) {
Judul
Target
+ Terkumpul
Ketegori
Durasi
Aksi
diff --git a/src/app_modules/admin/donasi/table_status/table_reject.tsx b/src/app_modules/admin/donasi/table_status/table_reject.tsx
index cf4a0707..2ec2fb01 100644
--- a/src/app_modules/admin/donasi/table_status/table_reject.tsx
+++ b/src/app_modules/admin/donasi/table_status/table_reject.tsx
@@ -15,7 +15,7 @@ import {
} from "@mantine/core";
import { IconChevronLeft, IconEyeCheck } from "@tabler/icons-react";
import { useRouter } from "next/navigation";
-import AdminDonasi_TombolKembali from "../component/tombol_kembali";
+import ComponentAdminDonasi_TombolKembali from "../component/tombol_kembali";
import { useDisclosure } from "@mantine/hooks";
import AdminDonasi_DetailReview from "../detail_table/detail_review";
import { MODEL_DONASI } from "@/app_modules/donasi/model/interface";
@@ -30,7 +30,7 @@ export default function AdminDonasi_TableReject({
return (
<>
-
+
>
diff --git a/src/app_modules/admin/donasi/table_status/table_review.tsx b/src/app_modules/admin/donasi/table_status/table_review.tsx
index c55a8cb7..88a28e93 100644
--- a/src/app_modules/admin/donasi/table_status/table_review.tsx
+++ b/src/app_modules/admin/donasi/table_status/table_review.tsx
@@ -15,7 +15,7 @@ import {
} from "@mantine/core";
import { IconChevronLeft, IconEyeCheck } from "@tabler/icons-react";
import { useRouter } from "next/navigation";
-import AdminDonasi_TombolKembali from "../component/tombol_kembali";
+import ComponentAdminDonasi_TombolKembali from "../component/tombol_kembali";
import { useDisclosure } from "@mantine/hooks";
import AdminDonasi_DetailReview from "../detail_table/detail_review";
import { MODEL_DONASI } from "@/app_modules/donasi/model/interface";
@@ -30,7 +30,7 @@ export default function AdminDonasi_TableReview({
return (
<>
-
+
>
diff --git a/src/app_modules/admin/main/layout.tsx b/src/app_modules/admin/main/layout.tsx
index 45b59e8f..528e1057 100644
--- a/src/app_modules/admin/main/layout.tsx
+++ b/src/app_modules/admin/main/layout.tsx
@@ -6,6 +6,7 @@ import {
Avatar,
Box,
Burger,
+ Divider,
Drawer,
Footer,
Group,
@@ -31,6 +32,8 @@ import {
import { useRouter } from "next/navigation";
import { RouterHome } from "@/app/lib/router_hipmi/router_home";
import { Logout } from "@/app_modules/auth";
+import { useAtom } from "jotai";
+import { gs_adminDonasi_hotMenu } from "../donasi/global_state";
export default function AdminLayout({
children,
@@ -40,7 +43,7 @@ export default function AdminLayout({
const theme = useMantineTheme();
const [opened, setOpened] = useState(false);
const router = useRouter();
- const [active, setActive] = useState(1);
+ const [active, setActive] = useAtom(gs_adminDonasi_hotMenu);
const listAdminPage = [
{
@@ -75,15 +78,24 @@ export default function AdminLayout({
p="xs"
bg={"gray.2"}
>
- {listAdminPage.map((e) => (
- {
- // setActive(e.id);
- router.push(e.route);
- }}
- />
+ {listAdminPage.map((e, i) => (
+
+ {
+ setActive(i);
+ router.push(e.route);
+ }}
+ />
+ {active === i ? : ""}
+
))}
diff --git a/src/app_modules/auth/login/view.tsx b/src/app_modules/auth/login/view.tsx
index ef726c79..77be0cff 100644
--- a/src/app_modules/auth/login/view.tsx
+++ b/src/app_modules/auth/login/view.tsx
@@ -13,6 +13,8 @@ import { useAtom } from "jotai";
import { gs_otp, gs_nomor } from "../state/state";
import { IconCircleLetterH } from "@tabler/icons-react";
import { RouterAdminDashboard } from "@/app/lib/router_hipmi/router_admin";
+import { NotifBerhasil } from "@/app_modules/donasi/component/notifikasi/notif_berhasil";
+import { NotifGagal } from "@/app_modules/donasi/component/notifikasi/notif_gagal";
export default function Login() {
const router = useRouter();
@@ -44,12 +46,12 @@ export default function Login() {
router.push(RouterAdminDashboard.splash_admin);
} else {
if (val.status == 200) {
- toast("Nomor OTP terkirim");
setCode(val.body.otp);
setInputNumber(val.body.nomor);
router.push("/dev/auth/validasi");
+ return NotifBerhasil("Nomor OTP terkirim");
} else {
- toast(val.message);
+ NotifGagal(val.message);
}
}
});
diff --git a/src/app_modules/auth/validasi/view.tsx b/src/app_modules/auth/validasi/view.tsx
index e1650fbe..7aea8491 100644
--- a/src/app_modules/auth/validasi/view.tsx
+++ b/src/app_modules/auth/validasi/view.tsx
@@ -21,6 +21,9 @@ import { ApiHipmi } from "@/app/lib/api";
import { useRouter } from "next/navigation";
import { funGetUserProfile } from "@/app_modules/fun/get_user_profile";
import { useFocusTrap } from "@mantine/hooks";
+import { NotifBerhasil } from "@/app_modules/donasi/component/notifikasi/notif_berhasil";
+import { NotifGagal } from "@/app_modules/donasi/component/notifikasi/notif_gagal";
+import { NotifPeringatan } from "@/app_modules/donasi/component/notifikasi/notif_peringatan";
export default function Validasi() {
const router = useRouter();
@@ -51,12 +54,12 @@ export default function Validasi() {
.then((val) => {
myConsole(val);
if (val.status == 200) {
- toast("Berhasil Login");
setTimeout(() => router.push("/dev/home"), 2000);
funGetUserProfile(val.data.id);
+ NotifBerhasil("Berhasil Login");
} else {
- toast("Silahkan Registrasi");
- return router.push("/dev/auth/register");
+ router.push("/dev/auth/register");
+ NotifPeringatan("Silahkan Registrasi");
}
});
};
diff --git a/src/app_modules/donasi/component/box_publish.tsx b/src/app_modules/donasi/component/box_publish.tsx
index 5dc58494..f6972dcd 100644
--- a/src/app_modules/donasi/component/box_publish.tsx
+++ b/src/app_modules/donasi/component/box_publish.tsx
@@ -45,10 +45,9 @@ export default function ComponentDonasi_BoxPublish({
{donasi.map((e, i) => (
router.push(path + `${e.id}`)
- // toast("Cooming soon")
- }
+ onClick={() => {
+ router.push(path + `${e.id}`);
+ }}
>
diff --git a/src/app_modules/donasi/component/detail_main/detail_data_donasi.tsx b/src/app_modules/donasi/component/detail_main/detail_data_donasi.tsx
index ad38438c..292c4f80 100644
--- a/src/app_modules/donasi/component/detail_main/detail_data_donasi.tsx
+++ b/src/app_modules/donasi/component/detail_main/detail_data_donasi.tsx
@@ -22,13 +22,19 @@ import {
} from "@tabler/icons-react";
import TampilanRupiahDonasi from "../tampilan_rupiah";
import ComponentDonasi_TampilanHitungMundur from "../tampilan_hitung_mundur";
+import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
+import { NotifPeringatan } from "../notifikasi/notif_peringatan";
+import { NotifBerhasil } from "../notifikasi/notif_berhasil";
+import { Donasi_findDonaturByTokenId } from "../../fun/get/get_donatur_by_token_id";
export function ComponentDonasi_DetailDataMain({
donasi,
countDonatur,
+ userLoginId,
}: {
donasi: MODEL_DONASI;
countDonatur: number;
+ userLoginId?: string | any;
}) {
const router = useRouter();
return (
@@ -103,7 +109,7 @@ export function ComponentDonasi_DetailDataMain({
router.push(RouterDonasi.pencairan_dana)}
+ onClick={() => onPencairanDana(router, donasi, userLoginId)}
>
@@ -116,3 +122,23 @@ export function ComponentDonasi_DetailDataMain({
>
);
}
+
+async function onPencairanDana(
+ router: AppRouterInstance,
+ donasi: MODEL_DONASI,
+ userLoginId: string
+) {
+ // console.log(userLoginId)
+ // console.log(donasi.authorId)
+ const cek = await Donasi_findDonaturByTokenId(donasi.id, userLoginId);
+
+ if(userLoginId == donasi.authorId)
+ return router.push(RouterDonasi.pencairan_dana + `${donasi.id}`);
+
+ if (!cek ) return NotifPeringatan("Halaman khusus donatur");
+ router.push(RouterDonasi.pencairan_dana + `${donasi.id}`);
+
+ // if (userLoginId != donasi.authorId)
+ // return NotifPeringatan("Halaman khusus donatur");
+ // router.push(RouterDonasi.pencairan_dana + `${donasi.id}`);
+}
diff --git a/src/app_modules/donasi/component/detail_main/list_kabar.tsx b/src/app_modules/donasi/component/detail_main/list_kabar.tsx
index a211d968..9cab998a 100644
--- a/src/app_modules/donasi/component/detail_main/list_kabar.tsx
+++ b/src/app_modules/donasi/component/detail_main/list_kabar.tsx
@@ -3,16 +3,18 @@
import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
import { Paper, Stack, Text, Title } from "@mantine/core";
import moment from "moment";
-import router from "next/router";
+
import { MODEL_DONASI_KABAR } from "../../model/interface";
+import { useRouter } from "next/navigation";
export default function ComponentDonasi_ListKabar({
kabar,
-
+ route
}: {
kabar: MODEL_DONASI_KABAR;
-
+ route: string
}) {
+ const router = useRouter();
return (
<>
@@ -26,7 +28,7 @@ export default function ComponentDonasi_ListKabar({
- router.push(RouterDonasi.update_kabar + `${kabar.id}`)
+ router.push(route + `${kabar.id}`)
}
>
Buka Kabar
diff --git a/src/app_modules/donasi/component/header_tamplate.tsx b/src/app_modules/donasi/component/header_tamplate.tsx
index f5e1edc8..57ca739c 100644
--- a/src/app_modules/donasi/component/header_tamplate.tsx
+++ b/src/app_modules/donasi/component/header_tamplate.tsx
@@ -5,7 +5,7 @@ import { IconArrowLeft, IconChevronLeft } from "@tabler/icons-react";
import { useRouter } from "next/navigation";
import { useState } from "react";
-export default function HeaderTamplateDonasi({
+export default function ComponentDonasi_HeaderTamplate({
hideBack,
changeIconBack,
route,
diff --git a/src/app_modules/donasi/component/noted_box.tsx b/src/app_modules/donasi/component/noted_box.tsx
index 58948302..379587d5 100644
--- a/src/app_modules/donasi/component/noted_box.tsx
+++ b/src/app_modules/donasi/component/noted_box.tsx
@@ -7,9 +7,9 @@ export default function ComponentDonasi_NotedBox({
}) {
return (
<>
-
+
-
+
*{" "}
diff --git a/src/app_modules/donasi/create/create_cerita_penggalang.tsx b/src/app_modules/donasi/create/create_cerita_penggalang.tsx
index 9a768ded..e3e894fd 100644
--- a/src/app_modules/donasi/create/create_cerita_penggalang.tsx
+++ b/src/app_modules/donasi/create/create_cerita_penggalang.tsx
@@ -9,6 +9,8 @@ import {
Image,
Paper,
Stack,
+ Text,
+ TextInput,
Textarea,
} from "@mantine/core";
import { IconCamera } from "@tabler/icons-react";
@@ -38,6 +40,9 @@ export default function CreateCeritaPenggalangDonasi({
const [create, setCreate] = useState({
pembukaan: "",
cerita: "",
+ namaBank: "",
+ rekening: ""
+
});
const [temporary, setTemporary] = useState(dataTemporary);
const [file, setFile] = useState(null);
@@ -58,6 +63,8 @@ export default function CreateCeritaPenggalangDonasi({
donasiMaster_KategoriId: temporary.donasiMaster_KategoriId,
donasiMaster_DurasiId: temporary.donasiMaster_DurasiId,
authorId: userId,
+ namaBank: create.namaBank,
+ rekening: create.rekening,
CeritaDonasi: {
pembukaan: create.pembukaan,
cerita: create.cerita,
@@ -75,79 +82,118 @@ export default function CreateCeritaPenggalangDonasi({
}
return (
<>
-
+
{/* {JSON.stringify(dataTempo, null, 2)} */}
-
-
+
+
+ {akumulasi.akumulasiPencairan} kali
+ Pencairan dana
+
+
+
+ dapat melaporkannya pada Admin HIPMI !"
+ />
>
);
}
-function InformasiPencairanDana() {
+function InformasiPencairanDana({
+ listPD,
+}: {
+ listPD: MODEL_DONASI_PENCAIRAN_DANA[];
+}) {
const [opened, { open, close }] = useDisclosure(false);
+ const [idGambar, setIdGambar] = useState("");
return (
<>
-
-
-
+
+
+
+
+
+
+
+ {listPD.map((e, i) => (
+
+ {moment(e.createdAt).format("ll")}
+
+ {e.title}
+
+ {e.deskripsi}
+
- Bukti Pencairan Dana
+ }
+ onClick={() => {
+ open();
+ setIdGambar(e.imagesId);
+ }}
+ >
+ Bukti Transfer
+
-
-
- {Array(2)
- .fill(0)
- .map((e, i) => (
-
- {moment(Date.now()).format("ll")}
-
- Pencairan Dana Sebesar Rp. 5.000.000
-
- Pencairan Dana kepada pihak Penggalang dana sebesar 5 juta yang
- di transfer pada, {moment(Date.now()).format("lll")}.
-
-
- }
- onClick={() => open()}
- >
- Bukti Transfer
-
-
-
-
- ))}
+ ))}
>
);
}
diff --git a/src/app_modules/donasi/detail/detail_main/pencairan_dana/layout.tsx b/src/app_modules/donasi/detail/detail_main/pencairan_dana/layout.tsx
index b9b89359..6a3bde26 100644
--- a/src/app_modules/donasi/detail/detail_main/pencairan_dana/layout.tsx
+++ b/src/app_modules/donasi/detail/detail_main/pencairan_dana/layout.tsx
@@ -1,6 +1,6 @@
"use client";
-import HeaderTamplateDonasi from "@/app_modules/donasi/component/header_tamplate";
+import ComponentDonasi_HeaderTamplate from "@/app_modules/donasi/component/header_tamplate";
import { AppShell } from "@mantine/core";
import React from "react";
@@ -11,7 +11,7 @@ export default function LayoutPencairanDanaDonasi({
}) {
return (
<>
- }>
+ }>
{children}
>
diff --git a/src/app_modules/donasi/detail/detail_main/penggalang_dana/layout.tsx b/src/app_modules/donasi/detail/detail_main/penggalang_dana/layout.tsx
index 2d65da5d..708deacf 100644
--- a/src/app_modules/donasi/detail/detail_main/penggalang_dana/layout.tsx
+++ b/src/app_modules/donasi/detail/detail_main/penggalang_dana/layout.tsx
@@ -1,6 +1,6 @@
"use client";
-import HeaderTamplateDonasi from "@/app_modules/donasi/component/header_tamplate";
+import ComponentDonasi_HeaderTamplate from "@/app_modules/donasi/component/header_tamplate";
import { AppShell } from "@mantine/core";
import React from "react";
@@ -12,7 +12,7 @@ export default function LayoutPenggalangDanaDonasi({
return (
<>
}
+ header={ }
// footer={ }
>
{children}
diff --git a/src/app_modules/donasi/detail/detail_publish/index.tsx b/src/app_modules/donasi/detail/detail_publish/index.tsx
index 40df96e3..f978c5e1 100644
--- a/src/app_modules/donasi/detail/detail_publish/index.tsx
+++ b/src/app_modules/donasi/detail/detail_publish/index.tsx
@@ -31,17 +31,19 @@ import ComponentDonasi_InformasiPenggalangMain from "../../component/detail_main
export default function DetailPublishDonasi({
dataPublish,
- countDonatur
+ countDonatur,
+ userLoginId
}: {
dataPublish: MODEL_DONASI;
- countDonatur: number
+ countDonatur: number,
+ userLoginId: string
}) {
const [donasi, setDonasi] = useState(dataPublish);
return (
<>
{/* {JSON.stringify(donasi,null,2)} */}
-
+
diff --git a/src/app_modules/donasi/detail/detail_publish/layout.tsx b/src/app_modules/donasi/detail/detail_publish/layout.tsx
index ecb5a50e..fae908ab 100644
--- a/src/app_modules/donasi/detail/detail_publish/layout.tsx
+++ b/src/app_modules/donasi/detail/detail_publish/layout.tsx
@@ -2,7 +2,7 @@
import { AppShell } from "@mantine/core";
import React from "react";
-import HeaderTamplateDonasi from "../../component/header_tamplate";
+import ComponentDonasi_HeaderTamplate from "../../component/header_tamplate";
import { IconEdit, IconMessageShare } from "@tabler/icons-react";
import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
@@ -17,7 +17,7 @@ export default function LayoutDetailPublishDonasi({
<>
}
route2={RouterDonasi.list_kabar + `${donasiId}`}
diff --git a/src/app_modules/donasi/detail/detail_reject/index.tsx b/src/app_modules/donasi/detail/detail_reject/index.tsx
index b5be2426..fd466a1d 100644
--- a/src/app_modules/donasi/detail/detail_reject/index.tsx
+++ b/src/app_modules/donasi/detail/detail_reject/index.tsx
@@ -37,6 +37,7 @@ import { NotifBerhasil } from "../../component/notifikasi/notif_berhasil";
import { NotifGagal } from "../../component/notifikasi/notif_gagal";
import ComponentDonasi_CeritaPenggalangMain from "../../component/detail_main/cerita_penggalang";
import ComponentDonasi_DetailDataGalangDana from "../../component/detail_galang_dana/detail_data_donasi";
+import { Donasi_funDeleteDonasiById } from "../../fun/delete/fin_delete_donasi_by_id";
export default function DetailRejectDonasi({
dataReject,
@@ -92,8 +93,15 @@ function ButtonAction({ donasiId }: { donasiId: string }) {
setTabsPostingDonasi("Draft");
}
async function onDelete() {
- router.push(RouterDonasi.main_galang_dana);
- setTabsPostingDonasi("Reject");
+ await Donasi_funDeleteDonasiById(donasiId).then((res) => {
+ if (res.status === 200) {
+ router.push(RouterDonasi.main_galang_dana);
+ setTabsPostingDonasi("Reject");
+ NotifBerhasil(res.message);
+ } else {
+ NotifGagal(res.message);
+ }
+ });
}
return (
<>
diff --git a/src/app_modules/donasi/detail/detail_reject/layout.tsx b/src/app_modules/donasi/detail/detail_reject/layout.tsx
index e73ce477..c07ab433 100644
--- a/src/app_modules/donasi/detail/detail_reject/layout.tsx
+++ b/src/app_modules/donasi/detail/detail_reject/layout.tsx
@@ -2,7 +2,7 @@
import { AppShell } from "@mantine/core";
import React from "react";
-import HeaderTamplateDonasi from "../../component/header_tamplate";
+import ComponentDonasi_HeaderTamplate from "../../component/header_tamplate";
import { IconEdit, IconMessageShare } from "@tabler/icons-react";
import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
@@ -14,7 +14,7 @@ export default function LayoutDetailRejectDonasi({
return (
<>
- }>
+ }>
{children}
>
diff --git a/src/app_modules/donasi/detail/detail_review/layout.tsx b/src/app_modules/donasi/detail/detail_review/layout.tsx
index df67b33d..6a8801fa 100644
--- a/src/app_modules/donasi/detail/detail_review/layout.tsx
+++ b/src/app_modules/donasi/detail/detail_review/layout.tsx
@@ -2,7 +2,7 @@
import { AppShell } from "@mantine/core";
import React from "react";
-import HeaderTamplateDonasi from "../../component/header_tamplate";
+import ComponentDonasi_HeaderTamplate from "../../component/header_tamplate";
import { IconEdit, IconMessageShare } from "@tabler/icons-react";
import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
@@ -14,7 +14,7 @@ export default function LayoutDetailReviewDonasi({
return (
<>
- }>
+ }>
{children}
>
diff --git a/src/app_modules/donasi/edit/edit_cerita_penggalang/index.tsx b/src/app_modules/donasi/edit/edit_cerita_penggalang/index.tsx
index 08e2428e..d43a789e 100644
--- a/src/app_modules/donasi/edit/edit_cerita_penggalang/index.tsx
+++ b/src/app_modules/donasi/edit/edit_cerita_penggalang/index.tsx
@@ -121,7 +121,7 @@ export default function EditCeritaPenggalangDonasi({
radius={"xl"}
onClick={() => onUpdate(router, value, file as any)}
>
- Simpan
+ Update
{/* {JSON.stringify(value.pembukaan, null, 2)} */}
diff --git a/src/app_modules/donasi/edit/edit_cerita_penggalang/layout.tsx b/src/app_modules/donasi/edit/edit_cerita_penggalang/layout.tsx
index 5f54e8f6..b1411795 100644
--- a/src/app_modules/donasi/edit/edit_cerita_penggalang/layout.tsx
+++ b/src/app_modules/donasi/edit/edit_cerita_penggalang/layout.tsx
@@ -2,7 +2,7 @@
import { AppShell } from "@mantine/core";
import React from "react";
-import HeaderTamplateDonasi from "../../component/header_tamplate";
+import ComponentDonasi_HeaderTamplate from "../../component/header_tamplate";
export default function LayoutEditCeritaPenggalangDonasi({
children,
@@ -11,7 +11,7 @@ export default function LayoutEditCeritaPenggalangDonasi({
}) {
return (
<>
- }>
+ }>
{children}
>
diff --git a/src/app_modules/donasi/edit/edit_donasi/layout.tsx b/src/app_modules/donasi/edit/edit_donasi/layout.tsx
index 5a39d408..1380687b 100644
--- a/src/app_modules/donasi/edit/edit_donasi/layout.tsx
+++ b/src/app_modules/donasi/edit/edit_donasi/layout.tsx
@@ -2,7 +2,7 @@
import { AppShell } from "@mantine/core";
import React from "react";
-import HeaderTamplateDonasi from "../../component/header_tamplate";
+import ComponentDonasi_HeaderTamplate from "../../component/header_tamplate";
export default function LayoutEditDonasi({
children,
@@ -11,7 +11,7 @@ export default function LayoutEditDonasi({
}) {
return (
<>
- }>
+ }>
{children}
>
diff --git a/src/app_modules/donasi/edit/edit_rekening/index.tsx b/src/app_modules/donasi/edit/edit_rekening/index.tsx
new file mode 100644
index 00000000..23261bc4
--- /dev/null
+++ b/src/app_modules/donasi/edit/edit_rekening/index.tsx
@@ -0,0 +1,67 @@
+"use client";
+
+import { Button, Stack, TextInput } from "@mantine/core";
+import { MODEL_DONASI } from "../../model/interface";
+import { useState } from "react";
+import _ from "lodash";
+import { useRouter } from "next/navigation";
+import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
+import { Donasi_funUpdateRekening } from "../../fun/update/fun_update_rekening";
+import { NotifBerhasil } from "../../component/notifikasi/notif_berhasil";
+import { NotifGagal } from "../../component/notifikasi/notif_gagal";
+
+export default function Donasi_EditRekening({
+ dataDonasi,
+}: {
+ dataDonasi: MODEL_DONASI;
+}) {
+ const router = useRouter();
+ const [donasi, setDonasi] = useState(dataDonasi);
+
+ return (
+ <>
+
+
+
+ setDonasi({
+ ...donasi,
+ namaBank: _.upperCase(val.target.value),
+ })
+ }
+ />
+
+ setDonasi({
+ ...donasi,
+ rekening: val.target.value,
+ })
+ }
+ />
+
+ onUpdate(router, donasi)}>
+ Update
+
+
+ >
+ );
+}
+
+async function onUpdate(router: AppRouterInstance, donasi: MODEL_DONASI) {
+ await Donasi_funUpdateRekening(donasi).then((res) => {
+ if (res.status === 200) {
+ router.back();
+ NotifBerhasil(res.message);
+ } else {
+ NotifGagal(res.message);
+ }
+ });
+}
diff --git a/src/app_modules/donasi/edit/edit_rekening/layout.tsx b/src/app_modules/donasi/edit/edit_rekening/layout.tsx
new file mode 100644
index 00000000..13405243
--- /dev/null
+++ b/src/app_modules/donasi/edit/edit_rekening/layout.tsx
@@ -0,0 +1,21 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentDonasi_HeaderTamplate from "../../component/header_tamplate";
+
+export default function LayoutDonasi_EditRekening({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/edit/list_kabar/index.tsx b/src/app_modules/donasi/edit/list_kabar/index.tsx
index 3ba73aee..8911e75b 100644
--- a/src/app_modules/donasi/edit/list_kabar/index.tsx
+++ b/src/app_modules/donasi/edit/list_kabar/index.tsx
@@ -55,7 +55,7 @@ export default function ListKabarDonasi({
>
{kabar.map((e, i) => (
-
+
))}
diff --git a/src/app_modules/donasi/edit/list_kabar/layout.tsx b/src/app_modules/donasi/edit/list_kabar/layout.tsx
index 371e154f..0ca8f69e 100644
--- a/src/app_modules/donasi/edit/list_kabar/layout.tsx
+++ b/src/app_modules/donasi/edit/list_kabar/layout.tsx
@@ -1,6 +1,6 @@
"use client";
-import HeaderTamplateDonasi from "@/app_modules/donasi/component/header_tamplate";
+import ComponentDonasi_HeaderTamplate from "@/app_modules/donasi/component/header_tamplate";
import { AppShell } from "@mantine/core";
import React from "react";
@@ -12,7 +12,7 @@ export default function LayoutListKabarDonasi({
return (
<>
}>
+ header={ }>
{children}
>
diff --git a/src/app_modules/donasi/edit/update_kabar/index.tsx b/src/app_modules/donasi/edit/update_kabar/index.tsx
index fc18efea..4b40958d 100644
--- a/src/app_modules/donasi/edit/update_kabar/index.tsx
+++ b/src/app_modules/donasi/edit/update_kabar/index.tsx
@@ -25,23 +25,21 @@ export default function UpdateKabarDonasi({
return (
<>
- {/*
-
-
- Username
-
- */}
{moment(Date.now()).format("ll")}
{kabar.title}
-
-
-
-
-
+ {kabar.imagesId === null ? (
+ ""
+ ) : (
+
+
+
+
+
+ )}
{kabar.deskripsi}
diff --git a/src/app_modules/donasi/edit/update_kabar/layout.tsx b/src/app_modules/donasi/edit/update_kabar/layout.tsx
index 5e563c09..32114a55 100644
--- a/src/app_modules/donasi/edit/update_kabar/layout.tsx
+++ b/src/app_modules/donasi/edit/update_kabar/layout.tsx
@@ -12,7 +12,7 @@ import {
import { useRouter } from "next/navigation";
import React from "react";
import FooterDonasi from "../../component/footer_close_donasi";
-import HeaderTamplateDonasi from "../../component/header_tamplate";
+import ComponentDonasi_HeaderTamplate from "../../component/header_tamplate";
import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
import { Donasi_funDeleteKabar } from "../../fun/delete/fun_delete.kabar";
import { NotifBerhasil } from "../../component/notifikasi/notif_berhasil";
@@ -30,7 +30,7 @@ export default function LayoutUpdateKabarDonasi({
return (
<>
}
+ header={ }
footer={
diff --git a/src/app_modules/donasi/fun/create/fun_create_donasi.ts b/src/app_modules/donasi/fun/create/fun_create_donasi.ts
index 4a7b1414..75584430 100644
--- a/src/app_modules/donasi/fun/create/fun_create_donasi.ts
+++ b/src/app_modules/donasi/fun/create/fun_create_donasi.ts
@@ -19,6 +19,8 @@ export async function Donasi_funCreate(req: MODEL_DONASI, file: FormData) {
donasiMaster_KategoriId: body.donasiMaster_KategoriId,
imagesId: body.imagesId,
authorId: body.authorId,
+ namaBank: body.namaBank,
+ rekening: body.rekening
},
});
diff --git a/src/app_modules/donasi/fun/create/fun_create_kabar.ts b/src/app_modules/donasi/fun/create/fun_create_kabar.ts
index 92c96c88..3474cb06 100644
--- a/src/app_modules/donasi/fun/create/fun_create_kabar.ts
+++ b/src/app_modules/donasi/fun/create/fun_create_kabar.ts
@@ -12,39 +12,55 @@ export async function Donasi_funCreateKabar(
req: MODEL_DONASI_KABAR | any,
file: FormData
) {
- const dataImage: any = file.get("file");
- const fileName = dataImage.name;
- const fileExtension = _.lowerCase(dataImage.name.split(".").pop());
- const fRandomName = v4(fileName) + "." + fileExtension;
-
- const upload = await prisma.images.create({
- data: {
- url: fRandomName,
- label: "DONASI_KABAR"
- },
- select: {
- id: true,
- url: true,
- },
- });
-
- if (!upload) return { status: 400, message: "Gagal upload gambar" };
- const uploadFolder = Buffer.from(await dataImage.arrayBuffer());
- fs.writeFileSync(`./public/donasi/kabar/${upload.url}`, uploadFolder);
-
const create = await prisma.donasi_Kabar.create({
data: {
title: req.title,
deskripsi: req.deskripsi,
donasiId: req.donasiId,
- imagesId: upload.id
},
});
- if(!create) return {status: 400, message: "Gagal membuat data"}
- revalidatePath("/dev/donasi/list_kabar")
- return{
- status: 200,
- message: "Berhasil disimpan"
+ if (!create) return { status: 400, message: "Gagal membuat data" };
+
+ const dataImage: any = file.get("file");
+ if (dataImage !== "null") {
+ const fileName = dataImage.name;
+ const fileExtension = _.lowerCase(dataImage.name.split(".").pop());
+ const fRandomName = v4(fileName) + "." + fileExtension;
+
+ const upload = await prisma.images.create({
+ data: {
+ url: fRandomName,
+ label: "DONASI_KABAR",
+ },
+ select: {
+ id: true,
+ url: true,
+ },
+ });
+
+ if (!upload) return { status: 400, message: "Gagal upload gambar" };
+ const uploadFolder = Buffer.from(await dataImage.arrayBuffer());
+ fs.writeFileSync(`./public/donasi/kabar/${upload.url}`, uploadFolder);
+
+ const updateKabar = await prisma.donasi_Kabar.update({
+ where: {
+ id: create.id,
+ },
+ data: {
+ imagesId: upload.id,
+ },
+ });
+
+ if (!updateKabar) return { status: 400, message: "Gagal upload gambar" };
}
+
+
+
+ revalidatePath("/dev/donasi/list_kabar");
+ return {
+ status: 200,
+ message: "Berhasil disimpan",
+ kabarId: create.id
+ };
}
diff --git a/src/app_modules/donasi/fun/create/fun_create_notif.ts b/src/app_modules/donasi/fun/create/fun_create_notif.ts
new file mode 100644
index 00000000..25af50ed
--- /dev/null
+++ b/src/app_modules/donasi/fun/create/fun_create_notif.ts
@@ -0,0 +1,41 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import _ from "lodash";
+import { revalidatePath } from "next/cache";
+
+export async function Donasi_funCreateNotif(donasiId: string, kabarId: string) {
+ const dataDonatur = await prisma.donasi_Invoice.findMany({
+ where: {
+ donasiId: donasiId,
+ },
+ select: {
+ id: true,
+ authorId: true,
+ },
+ });
+
+ const group = _.map(_.groupBy(dataDonatur, "authorId"), (v: any) => ({
+ authorId: v[0].authorId,
+ }));
+
+ // console.log(donasiId,dataDonatur, group);
+
+ const createNotif = group.map(
+ async (e) =>
+ await prisma.donasi_Notif.create({
+ data: {
+ userId: e.authorId,
+ donasi_KabarId: kabarId,
+ },
+ })
+ );
+
+ if (!createNotif) return { status: 400, message: "Gagal membuat notif" };
+ revalidatePath(RouterDonasi.main_beranda);
+ return {
+ status: 200,
+ message: "Notif terkirim",
+ };
+}
diff --git a/src/app_modules/donasi/fun/delete/fin_delete_donasi_by_id.ts b/src/app_modules/donasi/fun/delete/fin_delete_donasi_by_id.ts
new file mode 100644
index 00000000..5b8fb401
--- /dev/null
+++ b/src/app_modules/donasi/fun/delete/fin_delete_donasi_by_id.ts
@@ -0,0 +1,97 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import fs from "fs";
+
+export async function Donasi_funDeleteDonasiById(donasiId: string) {
+ const findDonasi = await prisma.donasi.findFirst({
+ where: {
+ id: donasiId,
+ },
+ select: {
+ imagesId: true,
+ CeritaDonasi: {
+ select: {
+ id: true,
+ imagesId: true,
+ },
+ },
+ },
+ });
+ if (!findDonasi) return { status: 400, message: "Data tidak ditemukan" };
+
+ // const findGambar = await prisma.images.findFirst({
+ // where: {
+ // id: findDonasi.imagesId as any,
+ // },
+ // select: {
+ // url: true,
+ // },
+ // });
+
+ // const findGambarCerita = await prisma.images.findFirst({
+ // where: {
+ // id: findDonasi.CeritaDonasi?.imagesId as any,
+ // },
+ // select: {
+ // url: true,
+ // },
+ // });
+
+ if (findDonasi.imagesId !== null) {
+ const delGambar = await prisma.images.delete({
+ where: {
+ id: findDonasi.imagesId as any,
+ },
+ select: {
+ url: true,
+ },
+ });
+
+ const delFromFileGambar = fs.unlinkSync(
+ `./public/donasi/image/${delGambar?.url}`
+ );
+
+ if (delFromFileGambar as any)
+ return { status: 400, message: "Gagal hapus gambar" };
+ }
+
+ if (findDonasi.CeritaDonasi?.imagesId !== null) {
+ const delGambarCerita = await prisma.images.delete({
+ where: {
+ id: findDonasi.CeritaDonasi?.imagesId as any,
+ },
+ select: {
+ url: true,
+ },
+ });
+
+ const delFromFileGambarCerita = fs.unlinkSync(
+ `./public/donasi/image_cerita/${delGambarCerita?.url}`
+ );
+
+ if (delFromFileGambarCerita as any)
+ return { status: 400, message: "Gagal hapus gambar cerita" };
+ }
+
+ const delCerita = await prisma.donasi_Cerita.delete({
+ where: {
+ id: findDonasi.CeritaDonasi?.id,
+ },
+ });
+
+ if(!delCerita) return {status: 400, message: "Gagal hapus data cerita"}
+
+ const delDonasi = await prisma.donasi.delete({
+ where: {
+ id: donasiId,
+ },
+ });
+
+ if (!delDonasi) return { status: 400, message: "Gagal hapus data donasi" };
+
+ return {
+ status: 200,
+ message: "Berhasil hapus",
+ };
+}
diff --git a/src/app_modules/donasi/fun/delete/fun_delete.kabar.ts b/src/app_modules/donasi/fun/delete/fun_delete.kabar.ts
index 81d105e9..985cb842 100644
--- a/src/app_modules/donasi/fun/delete/fun_delete.kabar.ts
+++ b/src/app_modules/donasi/fun/delete/fun_delete.kabar.ts
@@ -5,7 +5,7 @@ import fs from "fs";
import { revalidatePath } from "next/cache";
export async function Donasi_funDeleteKabar(kabarId: string) {
- const del = await prisma.donasi_Kabar.delete({
+ const dataKabar = await prisma.donasi_Kabar.findFirst({
where: {
id: kabarId,
},
@@ -13,21 +13,37 @@ export async function Donasi_funDeleteKabar(kabarId: string) {
imagesId: true,
},
});
- if (!del) return { status: 400, message: "Gagal hapus data" };
- const delImg = await prisma.images.delete({
+ if (dataKabar?.imagesId !== null) {
+ const delImg = await prisma.images.delete({
+ where: {
+ id: dataKabar?.imagesId,
+ },
+ select: {
+ url: true,
+ },
+ });
+
+ if (!delImg) return { status: 400, message: "Gagal hapus gambar" };
+ if (delImg) fs.unlinkSync(`./public/donasi/kabar/${delImg.url}`);
+ revalidatePath("/dev/donasi/list_kabar");
+ }
+
+ const delNotif = await prisma.donasi_Notif.deleteMany({
where: {
- id: del.imagesId as any,
- },
- select: {
- url: true,
+ donasi_KabarId: kabarId,
},
});
+ if (!delNotif) return { status: 400, message: "Gagal hapus notif" };
- if (!delImg) return { status: 400, message: "Gagal hapus gambar" };
- if (delImg) fs.unlinkSync(`./public/donasi/kabar/${delImg.url}`);
- revalidatePath("/dev/donasi/list_kabar");
+ const del = await prisma.donasi_Kabar.delete({
+ where: {
+ id: kabarId,
+ },
+ });
+ if (!del) return { status: 400, message: "Gagal hapus data" };
+ revalidatePath("/dev/donasi/notif_page");
return {
status: 200,
message: "Berhasl hapus",
diff --git a/src/app_modules/donasi/fun/get/get_donatur_by_token_id.ts b/src/app_modules/donasi/fun/get/get_donatur_by_token_id.ts
new file mode 100644
index 00000000..0d2839b8
--- /dev/null
+++ b/src/app_modules/donasi/fun/get/get_donatur_by_token_id.ts
@@ -0,0 +1,22 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export async function Donasi_findDonaturByTokenId(
+ donasiId: string,
+ userId: string
+) {
+ const data = await prisma.donasi_Invoice.count({
+ where: {
+ donasiId: donasiId,
+ authorId: userId,
+ },
+ });
+
+ if (data > 0) {
+ return true;
+ } else {
+ return false;
+ }
+
+}
diff --git a/src/app_modules/donasi/fun/get/get_list_pencairan_dana_by_id.ts b/src/app_modules/donasi/fun/get/get_list_pencairan_dana_by_id.ts
new file mode 100644
index 00000000..af192335
--- /dev/null
+++ b/src/app_modules/donasi/fun/get/get_list_pencairan_dana_by_id.ts
@@ -0,0 +1,15 @@
+"use server"
+
+import prisma from "@/app/lib/prisma"
+
+export async function Donasi_getListPencairanDanaById(donasiId:string) {
+ const data = await prisma.donasi_PencairanDana.findMany({
+ where: {
+ donasiId: donasiId
+ }
+ })
+
+ // console.log(data)
+
+ return data
+}
\ No newline at end of file
diff --git a/src/app_modules/donasi/fun/get/get_notif_by_user_id.ts b/src/app_modules/donasi/fun/get/get_notif_by_user_id.ts
new file mode 100644
index 00000000..75411f84
--- /dev/null
+++ b/src/app_modules/donasi/fun/get/get_notif_by_user_id.ts
@@ -0,0 +1,32 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export async function Donasi_getNotifByUserId(userId: string) {
+ const dataInvoice = await prisma.donasi_Invoice.findFirst({
+ where: {
+ authorId: userId
+ }
+ })
+
+ // console.log(dataInvoice)
+
+ // return null
+ const dataNotif = await prisma.donasi_Notif.findMany({
+ orderBy: {
+ createdAt: "desc"
+ },
+ where: {
+ userId: userId,
+ },
+ select: {
+ id: true,
+ isRead: true,
+ active: true,
+ createdAt: true,
+ donasi_KabarId: true,
+ Donasi_Kabar: true,
+ },
+ });
+ return dataNotif;
+}
diff --git a/src/app_modules/donasi/fun/get/get_one_donasi_by_id.ts b/src/app_modules/donasi/fun/get/get_one_donasi_by_id.ts
index 214ae053..a097b33e 100644
--- a/src/app_modules/donasi/fun/get/get_one_donasi_by_id.ts
+++ b/src/app_modules/donasi/fun/get/get_one_donasi_by_id.ts
@@ -20,6 +20,8 @@ export async function Donasi_getOneById(donasiId: string) {
progres: true,
terkumpul: true,
imagesId: true,
+ namaBank: true,
+ rekening: true,
donasiMaster_KategoriId: true,
donasiMaster_DurasiId: true,
donasiMaster_StatusDonasiId: true,
diff --git a/src/app_modules/donasi/fun/get/get_one_invoice_by_id.tsx b/src/app_modules/donasi/fun/get/get_one_invoice_by_id.tsx
index ff9b66dc..40b3b45e 100644
--- a/src/app_modules/donasi/fun/get/get_one_invoice_by_id.tsx
+++ b/src/app_modules/donasi/fun/get/get_one_invoice_by_id.tsx
@@ -12,6 +12,7 @@ export async function Donasi_getOneInvoiceById(invoiceId: string) {
id: true,
nominal: true,
donasiId: true,
+ createdAt: true,
donasiMaster_BankId: true,
donasiMaster_StatusInvoiceId: true,
Donasi: {
diff --git a/src/app_modules/donasi/fun/get/get_pencairan_dana_by_id.ts b/src/app_modules/donasi/fun/get/get_pencairan_dana_by_id.ts
new file mode 100644
index 00000000..988a465d
--- /dev/null
+++ b/src/app_modules/donasi/fun/get/get_pencairan_dana_by_id.ts
@@ -0,0 +1,19 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export async function Donasi_getTotalPencairanDanaById(donasiId: string) {
+ const data = await prisma.donasi.findFirst({
+ where: {
+ id: donasiId,
+ },
+ select: {
+ id: true,
+ totalPencairan: true,
+ akumulasiPencairan: true,
+ authorId: true
+ },
+ });
+
+ return data;
+}
diff --git a/src/app_modules/donasi/fun/update/fun_update_invoice.ts b/src/app_modules/donasi/fun/update/fun_update_invoice.ts
new file mode 100644
index 00000000..e7ffed57
--- /dev/null
+++ b/src/app_modules/donasi/fun/update/fun_update_invoice.ts
@@ -0,0 +1,47 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import _ from "lodash";
+import { v4 } from "uuid";
+import fs from "fs";
+
+export async function Donasi_funUploadBuktiTransferById(
+ invoiceId: string,
+ file: FormData
+) {
+ // console.log(file);
+ const gambar: any = file.get("file");
+ const fileName = gambar.name;
+ const fileExtension = _.lowerCase(gambar.name.split(".").pop());
+ const fileRandomName = v4(fileName) + "." + fileExtension;
+
+ const upload = await prisma.images.create({
+ data: {
+ url: fileRandomName,
+ label: "DONASI_INVOICE"
+ },
+ select: {
+ id: true,
+ url: true,
+ },
+ });
+
+ if (!upload) return { status: 400, message: "Gagal upload gambar" };
+ const uploadFolder = Buffer.from(await gambar.arrayBuffer());
+ fs.writeFileSync(`./public/donasi/invoice/${upload.url}`, uploadFolder);
+
+ const updateFile = await prisma.donasi_Invoice.update({
+ where: {
+ id: invoiceId,
+ },
+ data: {
+ imagesId: upload.id,
+ },
+ });
+
+ if (!updateFile) return { status: 400, message: "Gagal update gambar" };
+ return {
+ status: 200,
+ message: "Berhasil upload",
+ };
+}
diff --git a/src/app_modules/donasi/fun/update/fun_update_notif_by_user_id.ts b/src/app_modules/donasi/fun/update/fun_update_notif_by_user_id.ts
new file mode 100644
index 00000000..a2913790
--- /dev/null
+++ b/src/app_modules/donasi/fun/update/fun_update_notif_by_user_id.ts
@@ -0,0 +1,21 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { revalidatePath } from "next/cache";
+
+export async function Donasi_funUpdateNotifById(notifId: string) {
+ const updateNotif = await prisma.donasi_Notif.update({
+ where: {
+ id: notifId,
+ },
+ data: {
+ isRead: true,
+ },
+ });
+ if (!updateNotif) return { status: 400, message: "Update notif gagal" };
+ revalidatePath("/dev/donasi/notif_page");
+ return {
+ status: 200,
+ message: "Berhasil update notif",
+ };
+}
diff --git a/src/app_modules/donasi/fun/update/fun_update_rekening.ts b/src/app_modules/donasi/fun/update/fun_update_rekening.ts
new file mode 100644
index 00000000..bcb3a358
--- /dev/null
+++ b/src/app_modules/donasi/fun/update/fun_update_rekening.ts
@@ -0,0 +1,23 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { MODEL_DONASI } from "../../model/interface";
+
+export async function Donasi_funUpdateRekening(data: MODEL_DONASI) {
+ // console.log(data)
+ const res = await prisma.donasi.update({
+ where: {
+ id: data.id,
+ },
+ data: {
+ namaBank: data.namaBank,
+ rekening: data.rekening,
+ },
+ });
+
+ if (!res) return { status: 400, message: "Gagal update rekening" };
+ return {
+ status: 200,
+ message: "Berhasil update",
+ };
+}
diff --git a/src/app_modules/donasi/index.ts b/src/app_modules/donasi/index.ts
index 10966d5a..3993923a 100644
--- a/src/app_modules/donasi/index.ts
+++ b/src/app_modules/donasi/index.ts
@@ -50,6 +50,10 @@ import Donasi_CreateKabar from "./create/create_kabar";
import LayoutDonasi_CreateKabar from "./create/create_kabar/layout";
import Donasi_NotifPage from "./main/notif/notif_page";
import LayoutDonasi_NotifPage from "./main/notif/layout";
+import Donasi_DetailNotif from "./detail/deail_notif";
+import LayoutDonasi_DetailNotif from "./detail/deail_notif/layout";
+import Donasi_EditRekening from "./edit/edit_rekening";
+import LayoutDonasi_EditRekening from "./edit/edit_rekening/layout";
export {
MainDonasi,
@@ -104,4 +108,8 @@ export {
LayoutDonasi_CreateKabar,
Donasi_NotifPage,
LayoutDonasi_NotifPage,
+ Donasi_DetailNotif,
+ LayoutDonasi_DetailNotif,
+ Donasi_EditRekening,
+ LayoutDonasi_EditRekening,
};
diff --git a/src/app_modules/donasi/main/layout.tsx b/src/app_modules/donasi/main/layout.tsx
index 9df8fcde..5777b348 100644
--- a/src/app_modules/donasi/main/layout.tsx
+++ b/src/app_modules/donasi/main/layout.tsx
@@ -14,7 +14,7 @@ import {
Title,
} from "@mantine/core";
import React, { useState } from "react";
-import HeaderTamplateDonasi from "../component/header_tamplate";
+import ComponentDonasi_HeaderTamplate from "../component/header_tamplate";
import {
IconBell,
@@ -33,11 +33,16 @@ import { useAtom } from "jotai";
import { gs_donasi_hot_menu } from "../global_state";
import { RouterCrowd } from "@/app/lib/router_hipmi/router_crowd";
import { title } from "process";
+import _ from "lodash";
export default function LayoutDonasi({
children,
+ userId,
+ isRead,
}: {
children: React.ReactNode;
+ userId: string;
+ isRead: boolean[];
}) {
const router = useRouter();
const [active, setActive] = useAtom(gs_donasi_hot_menu);
@@ -72,10 +77,22 @@ export default function LayoutDonasi({
Donasi
- router.push(RouterDonasi.notif_page + `${"123"}`)}>
-
+
+ router.push(RouterDonasi.notif_page + `${userId}`)
+ }
+ >
+ {_.isEmpty(isRead) ? (
-
+ ) : isRead.includes(false) ? (
+
+
+
+ ) : (
+
+ )}
@@ -112,6 +129,7 @@ export default function LayoutDonasi({
}
>
+ {/* {JSON.stringify(isRead)} */}
{children}
>
diff --git a/src/app_modules/donasi/main/notif/layout.tsx b/src/app_modules/donasi/main/notif/layout.tsx
index 0ae6d7d5..c914e483 100644
--- a/src/app_modules/donasi/main/notif/layout.tsx
+++ b/src/app_modules/donasi/main/notif/layout.tsx
@@ -2,12 +2,12 @@
import { AppShell } from "@mantine/core"
import React from "react"
-import HeaderTamplateDonasi from "../../component/header_tamplate"
+import ComponentDonasi_HeaderTamplate from "../../component/header_tamplate"
export default function LayoutDonasi_NotifPage({children}: {children: React.ReactNode}){
return<>
}
+ header={ }
>
{children}
diff --git a/src/app_modules/donasi/main/notif/notif_page.tsx b/src/app_modules/donasi/main/notif/notif_page.tsx
index b1933f84..87542a88 100644
--- a/src/app_modules/donasi/main/notif/notif_page.tsx
+++ b/src/app_modules/donasi/main/notif/notif_page.tsx
@@ -1,8 +1,90 @@
-"use client"
+"use client";
-export default function Donasi_NotifPage() {
- return<>
- ini halaman notif
-
+import { useState } from "react";
+import { MODEL_DONASI_NOTIF } from "../../model/interface";
+import {
+ Box,
+ Group,
+ Paper,
+ SimpleGrid,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+import moment from "moment";
+
+import kabar from "../../detail/detail_main/kabar";
+import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
+import { Donasi_funUpdateNotifById } from "../../fun/update/fun_update_notif_by_user_id";
+import { NotifGagal } from "../../component/notifikasi/notif_gagal";
+import { useRouter } from "next/navigation";
+
+export default function Donasi_NotifPage({
+ dataNotif,
+}: {
+ dataNotif: MODEL_DONASI_NOTIF[];
+}) {
+ const router = useRouter();
+ const [notif, setNotif] = useState(dataNotif);
+ return (
+ <>
+
+ {/* {JSON.stringify(notif, null, 2)} */}
+
+ {notif.map((e) => (
+
+
+
+
+
+ {e.Donasi_Kabar.title}
+
+ {moment(e.createdAt).format("ll")}
+
+
+ {e.Donasi_Kabar.deskripsi}
+
+ onClick(router as any, e.Donasi_Kabar.id, e.id)
+ }
+ >
+ Buka Kabar
+
+
+
+
+
+ ))}
+
+
>
-}
\ No newline at end of file
+ );
+}
+
+async function onClick(
+ router: AppRouterInstance,
+ kabarId: string,
+ notifId: string
+) {
+ await Donasi_funUpdateNotifById(notifId).then((res) => {
+ if (res.status === 200) {
+ router.push(RouterDonasi.detail_notif + `${kabarId}`);
+ } else {
+ NotifGagal("Server Error");
+ }
+ });
+}
diff --git a/src/app_modules/donasi/model/interface.ts b/src/app_modules/donasi/model/interface.ts
index 5fe0d1d7..97bf6520 100644
--- a/src/app_modules/donasi/model/interface.ts
+++ b/src/app_modules/donasi/model/interface.ts
@@ -14,6 +14,11 @@ export interface MODEL_DONASI {
catatan: string;
progres: string;
terkumpul: string;
+ namaBank: string;
+ rekening: string;
+ akumulasiPencairan: number;
+ totalPencairan: number;
+
authorId: string;
donasiMaster_KategoriId: string;
donasiMaster_DurasiId: string;
@@ -69,6 +74,7 @@ export interface MODEL_DONASI_INVOICE {
id: string;
nominal: string;
donasiId: string;
+ imagesId: string
active: boolean;
createdAt: Date;
updatedAt: Date;
@@ -110,3 +116,27 @@ export interface MODEL_DONASI_KABAR {
Donasi: MODEL_DONASI;
ImagesKabar: MODEL_IMAGES;
}
+
+export interface MODEL_DONASI_NOTIF {
+ id: string;
+ isRead: boolean;
+ active: boolean;
+ createdAt: Date;
+ updatedAt: Date;
+ userId: string;
+ donasi_KabarId: string;
+ Donasi_Kabar: MODEL_DONASI_KABAR;
+}
+
+export interface MODEL_DONASI_PENCAIRAN_DANA {
+ id: string;
+ nominalCair: number;
+ title: string;
+ deskripsi: string;
+ active: boolean;
+ createdAt: Date;
+ updatedAt: Date;
+ donasiId: string;
+ imagesId: string
+ Donasi: MODEL_DONASI;
+}
diff --git a/src/app_modules/donasi/proses_donasi/invoice/index.tsx b/src/app_modules/donasi/proses_donasi/invoice/index.tsx
index 48c12cf6..5a7f51de 100644
--- a/src/app_modules/donasi/proses_donasi/invoice/index.tsx
+++ b/src/app_modules/donasi/proses_donasi/invoice/index.tsx
@@ -5,6 +5,8 @@ import {
Button,
Center,
CopyButton,
+ FileButton,
+ FileInput,
Grid,
Group,
Paper,
@@ -24,6 +26,9 @@ import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.share
import { Donasi_funUpdateStatusInvoice } from "../../fun/update/fun_update_status_invoice";
import { NotifBerhasil } from "../../component/notifikasi/notif_berhasil";
import { NotifGagal } from "../../component/notifikasi/notif_gagal";
+import { Donasi_funUploadBuktiTransferById } from "../../fun/update/fun_update_invoice";
+import { buffer } from "stream/consumers";
+import { IconCamera, IconCheck, IconCircleCheck } from "@tabler/icons-react";
export default function Donasi_InvoiceProses({
dataInvoice,
@@ -32,6 +37,9 @@ export default function Donasi_InvoiceProses({
}) {
const [invoice, setDataInvoice] = useState(dataInvoice);
const router = useRouter();
+ const [file, setFile] = useState(null);
+ const [image, setImage] = useState(null);
+
return (
<>
@@ -87,15 +95,13 @@ export default function Donasi_InvoiceProses({
-
+
-
+
{({ copied, copy }) => (
-
+
+
+
+ {
+ try {
+ // const buffer = URL.createObjectURL(
+ // new Blob([new Uint8Array(await files.arrayBuffer())])
+ // );
+ // console.log(buffer, "ini buffer");
+ // console.log(files, " ini file");
+ setFile(files);
+ onUpload(invoice.id, files);
+ } catch (error) {
+ console.log(error);
+ }
+ }}
+ accept="image/png,image/jpeg"
+ >
+ {(props) => (
+ }
+ >
+ Upload
+
+ )}
+
+
+ {file ? (
+
+
+
+ Upload berhasil{" "}
+
+
+
+
+ ) : (
+
+
+ Upload bukti transfer anda !
+
+
+ )}
+
+
+
+ {/*
Detail donasi
@@ -141,16 +198,28 @@ export default function Donasi_InvoiceProses({
-
+ */}
- onClick(router, invoice.id)}
- >
- Saya Sudah Transfer
-
+ {file !== null ? (
+ onClick(router, invoice.id)}
+ >
+ Saya Sudah Transfer
+
+ ) : (
+ onClick(router, invoice.id)}
+ >
+ Menunggu Bukti Transfer
+
+ )}
>
);
@@ -166,3 +235,16 @@ async function onClick(router: AppRouterInstance, invoiceId: string) {
}
});
}
+
+async function onUpload(invoiceId: string, file: FormData) {
+ const gambar = new FormData();
+ gambar.append("file", file as any);
+
+ await Donasi_funUploadBuktiTransferById(invoiceId, gambar).then((res) => {
+ if (res.status === 200) {
+ NotifBerhasil(res.message);
+ } else {
+ NotifGagal(res.message);
+ }
+ });
+}
diff --git a/src/app_modules/donasi/proses_donasi/invoice/layout.tsx b/src/app_modules/donasi/proses_donasi/invoice/layout.tsx
index 47c02dfe..58938b72 100644
--- a/src/app_modules/donasi/proses_donasi/invoice/layout.tsx
+++ b/src/app_modules/donasi/proses_donasi/invoice/layout.tsx
@@ -2,7 +2,7 @@
import { ActionIcon, AppShell, Group, Header, Title } from "@mantine/core";
import React from "react";
-import HeaderTamplateDonasi from "../../component/header_tamplate";
+import ComponentDonasi_HeaderTamplate from "../../component/header_tamplate";
import { IconChevronLeft, IconX } from "@tabler/icons-react";
import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
import { gs_donasi_hot_menu } from "../../global_state";
diff --git a/src/app_modules/donasi/proses_donasi/masukan_donasi/layout.tsx b/src/app_modules/donasi/proses_donasi/masukan_donasi/layout.tsx
index 84a572b0..a97847e3 100644
--- a/src/app_modules/donasi/proses_donasi/masukan_donasi/layout.tsx
+++ b/src/app_modules/donasi/proses_donasi/masukan_donasi/layout.tsx
@@ -2,7 +2,7 @@
import { AppShell } from "@mantine/core";
import React from "react";
-import HeaderTamplateDonasi from "../../component/header_tamplate";
+import ComponentDonasi_HeaderTamplate from "../../component/header_tamplate";
export default function LayoutMasukanDonasi({
children,
@@ -12,7 +12,7 @@ export default function LayoutMasukanDonasi({
return (
<>
}
+ header={ }
>
{children}
diff --git a/src/app_modules/donasi/proses_donasi/metode_pembayaran/layout.tsx b/src/app_modules/donasi/proses_donasi/metode_pembayaran/layout.tsx
index c64996df..7080a719 100644
--- a/src/app_modules/donasi/proses_donasi/metode_pembayaran/layout.tsx
+++ b/src/app_modules/donasi/proses_donasi/metode_pembayaran/layout.tsx
@@ -1,6 +1,6 @@
"use client"
-import HeaderTamplateDonasi from "@/app_modules/donasi/component/header_tamplate"
+import ComponentDonasi_HeaderTamplate from "@/app_modules/donasi/component/header_tamplate"
import { AppShell } from "@mantine/core"
import React from "react"
@@ -8,7 +8,7 @@ import React from "react"
export default function LayoutDonasi_MetodePembayaran({children}: {children: React.ReactNode}){
return<>
}
+ header={ }
>
{children}
diff --git a/src/app_modules/donasi/proses_donasi/proses_transaksi/index.tsx b/src/app_modules/donasi/proses_donasi/proses_transaksi/index.tsx
index b3018d8c..c0d9c3c1 100644
--- a/src/app_modules/donasi/proses_donasi/proses_transaksi/index.tsx
+++ b/src/app_modules/donasi/proses_donasi/proses_transaksi/index.tsx
@@ -1,6 +1,7 @@
"use client";
import {
+ ActionIcon,
Avatar,
Box,
Button,
@@ -11,6 +12,7 @@ import {
Loader,
Paper,
Stack,
+ Text,
Title,
} from "@mantine/core";
import invoice from "../invoice";
@@ -22,6 +24,10 @@ import { Donasi_getOneInvoiceById } from "../../fun/get/get_one_invoice_by_id";
import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
import { useAtom } from "jotai";
import { gs_donasi_hot_menu } from "../../global_state";
+import moment from "moment";
+import { IconBrandWhatsapp } from "@tabler/icons-react";
+import { Warna } from "@/app/lib/warna";
+import Link from "next/link";
export default function Donasi_ProsesTransaksi({
dataInvoice,
@@ -30,6 +36,7 @@ export default function Donasi_ProsesTransaksi({
}) {
const [invoice, setInvoice] = useState(dataInvoice);
const [hotMenu, setHotMenu] = useAtom(gs_donasi_hot_menu);
+ const [countD, setCountD] = useState();
const interval = useInterval(
() =>
reloadData(invoice.id).then((res) =>
@@ -47,28 +54,75 @@ export default function Donasi_ProsesTransaksi({
return res;
}
+ //-------------------------------------------------//
+
+ // const inter2 = useInterval(
+ // () => cekCD().then((res) => console.log(res)),
+ // 1000
+ // );
+
+ // useShallowEffect(() => {
+ // inter2.start();
+ // }, []);
+
+ async function cekCD() {
+ const date = new Date().getTime();
+ // const jam = date.toTimeString()
+ // const cd = moment(jam).diff((invoice.createdAt), "hour")
+ var a = moment.duration(date).asSeconds();
+ return a;
+ }
+
if (invoice.donasiMaster_StatusInvoiceId === "1") {
-
redirect(RouterDonasi.detail_donasi_saya + `${invoice.id}`);
}
return (
<>
-
-
-
-
- Admin sedang memproses transaksimu
-
-
-
-
-
- Mohon menunggu !
-
+
+
+
+
+
+ Admin sedang memproses transaksimu
+
+
+
+
+
+ Mohon menunggu !
+
+
+
+
+
+
+
+
+
+ Hubungi admin jika tidak kunjung di proses!
+
+
+ Klik pada logo Whatsapp ini.
+
+
+
+
+
+
-
-
+
+
>
);
}
diff --git a/src/app_modules/donasi/proses_donasi/proses_transaksi/layout.tsx b/src/app_modules/donasi/proses_donasi/proses_transaksi/layout.tsx
index fa6d3207..beb21848 100644
--- a/src/app_modules/donasi/proses_donasi/proses_transaksi/layout.tsx
+++ b/src/app_modules/donasi/proses_donasi/proses_transaksi/layout.tsx
@@ -2,7 +2,7 @@
import { ActionIcon, AppShell, Group, Header, Title } from "@mantine/core";
import React from "react";
-import HeaderTamplateDonasi from "../../component/header_tamplate";
+import ComponentDonasi_HeaderTamplate from "../../component/header_tamplate";
import { IconX } from "@tabler/icons-react";
import { useRouter } from "next/navigation";
import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
diff --git a/zCoba.js b/zCoba.js
index 09f99bf7..c5d7a3b9 100644
--- a/zCoba.js
+++ b/zCoba.js
@@ -27,8 +27,8 @@ var fs = require("fs");
// console.log('File deleted!');
function CobaProgress() {
- const t = 550000000;
- const b = 250000000 + 275000000 * 2;
+ const t = 560000000;
+ const b = 180000000
const progress = (b / t) * 100;
const pembulatan = Math.round(progress);