Merge pull request #142 from bipproduction/notifikasi/donasi

Fix: Donasi
This commit is contained in:
Bagasbanuna02
2024-11-28 16:49:01 +08:00
committed by GitHub
7 changed files with 134 additions and 82 deletions

View File

@@ -1,9 +1,8 @@
import { AdminDonasi_DetailReview } from "@/app_modules/admin/donasi"; import { AdminDonasi_DetailReview } from "@/app_modules/admin/donasi";
import { AdminDonasi_getOneById } from "@/app_modules/admin/donasi/fun/get/get_one_by_id"; import { AdminDonasi_getOneById } from "@/app_modules/admin/donasi/fun/get/get_one_by_id";
export default async function Page({params}: {params: {id: string}}) { export default async function Page({ params }: { params: { id: string } }) {
// console.log(params.id) const dataReview = await AdminDonasi_getOneById(params.id);
const dataReview = await AdminDonasi_getOneById(params.id)
// console.log(dataReview) return <AdminDonasi_DetailReview dataReview={dataReview as any} />;
return <AdminDonasi_DetailReview dataReview={dataReview as any}/>
} }

View File

@@ -1,16 +1,30 @@
import { atom } from "jotai"; import { atom } from "jotai";
export type IRealtimeData = { /**
status?: * @param status | status jika perlu acc admin > "Publish", "Review", "Draft", "Reject"
| "Publish" * @param status | khusus kategori | EVENT > "Peserta Event" | VOTING > "Voting Masuk" | DONASI > "Berhasil", "Proses", "Menunggu", "Gagal"
| "Review" */
| "Draft" export type ITypeStatusNotifikasi =
| "Reject" | "Publish"
// EVNET | "Review"
| "Peserta Event" | "Draft"
// VOTING | "Reject"
| "Voting Masuk"; // EVENT
| "Peserta Event"
// VOTING
| "Voting Masuk"
// DONASI
| "Berhasil"
| "Proses"
| "Menunggu"
| "Gagal";
/**
* @param kategoriApp | "JOB", "VOTING", "EVENT", "DONASI", "INVESTASI", "COLLABORATION", "FORUM"
* @type string
*/
export type IRealtimeData = {
status?: ITypeStatusNotifikasi;
appId: string; appId: string;
userId: string; userId: string;
pesan: string; pesan: string;

View File

@@ -185,10 +185,18 @@ export default function RealtimeProvider({
data.dataMessage?.kategoriApp == "DONASI" && data.dataMessage?.kategoriApp == "DONASI" &&
data.dataMessage.status == "Publish" data.dataMessage.status == "Publish"
) { ) {
console.log("masuk trigger ");
setIsTriggerDonasiBeranda(true); setIsTriggerDonasiBeranda(true);
} }
// if (
// data.type == "notification" &&
// data.pushNotificationTo == "ADMIN" &&
// data.dataMessage?.status == "Menunggu" &&
// userLoginId !== data.dataMessage?.userId
// ) {
// console.log("yes");
// }
// ---------------------- DONASI ------------------------- // // ---------------------- DONASI ------------------------- //
}, },
}); });

View File

@@ -10,10 +10,12 @@ import adminNotifikasi_funUpdateIsReadById from "../fun/update/fun_update_is_rea
import adminNotifikasi_countNotifikasi from "../fun/count/count_is_read"; import adminNotifikasi_countNotifikasi from "../fun/count/count_is_read";
import adminNotifikasi_getByUserId from "../fun/get/get_notifikasi_by_user_id"; import adminNotifikasi_getByUserId from "../fun/get/get_notifikasi_by_user_id";
import { ComponentAdminGlobal_NotifikasiPeringatan } from "../../_admin_global/admin_notifikasi/notifikasi_peringatan"; import { ComponentAdminGlobal_NotifikasiPeringatan } from "../../_admin_global/admin_notifikasi/notifikasi_peringatan";
import { ITypeStatusNotifikasi } from "@/app/lib/global_state";
export default async function adminNotifikasi_findRouterDonasi({ export default async function adminNotifikasi_findRouterDonasi({
appId, appId,
notifikasiId, notifikasiId,
status,
router, router,
onLoadCountNotif, onLoadCountNotif,
onLoadDataNotifikasi, onLoadDataNotifikasi,
@@ -21,6 +23,7 @@ export default async function adminNotifikasi_findRouterDonasi({
}: { }: {
appId: string; appId: string;
notifikasiId: string; notifikasiId: string;
status: ITypeStatusNotifikasi;
router: AppRouterInstance; router: AppRouterInstance;
onLoadCountNotif: (val: any) => void; onLoadCountNotif: (val: any) => void;
onLoadDataNotifikasi: (val: any) => void; onLoadDataNotifikasi: (val: any) => void;
@@ -29,54 +32,69 @@ export default async function adminNotifikasi_findRouterDonasi({
childId: IAdmin_ActiveChildId; childId: IAdmin_ActiveChildId;
}) => void; }) => void;
}) { }) {
const check = await admin_funDonasiCheckStatus({ id: appId }); if (
status == "Menunggu" ||
if (check.status == 200) { status == "Berhasil" ||
const udpateReadNotifikasi = await adminNotifikasi_funUpdateIsReadById({ status == "Proses" ||
notifId: notifikasiId, status == "Gagal"
) {
const path = RouterAdminDonasi_OLD.detail_publish + appId;
router.push(path, { scroll: false });
onChangeNavbar({
id: "Donasi",
childId: "Donasi_2",
}); });
if (udpateReadNotifikasi.status == 200) { return true;
const loadCountNotif = await adminNotifikasi_countNotifikasi(); } else {
onLoadCountNotif(loadCountNotif); const check = await admin_funDonasiCheckStatus({ id: appId });
if (check.status == 200) {
const loadListNotifikasi = await adminNotifikasi_getByUserId({ const udpateReadNotifikasi = await adminNotifikasi_funUpdateIsReadById({
page: 1, notifId: notifikasiId,
}); });
onLoadDataNotifikasi(loadListNotifikasi);
const path = `/dev/admin/donasi/sub-menu/${check.statusName}`; if (udpateReadNotifikasi.status == 200) {
const loadCountNotif = await adminNotifikasi_countNotifikasi();
onLoadCountNotif(loadCountNotif);
if (check.statusName == "draft") { const loadListNotifikasi = await adminNotifikasi_getByUserId({
ComponentAdminGlobal_NotifikasiPeringatan( page: 1,
"Status telah dirubah oleh user" });
); onLoadDataNotifikasi(loadListNotifikasi);
} else {
if (check.statusName == "publish") { const path = `/dev/admin/donasi/sub-menu/${check.statusName}`;
onChangeNavbar({
id: "Donasi", if (check.statusName == "draft") {
childId: "Donasi_2", ComponentAdminGlobal_NotifikasiPeringatan(
}); "Status telah dirubah oleh user"
);
} else {
if (check.statusName == "publish") {
onChangeNavbar({
id: "Donasi",
childId: "Donasi_2",
});
}
if (check.statusName == "review") {
onChangeNavbar({
id: "Donasi",
childId: "Donasi_3",
});
}
if (check.statusName == "reject") {
onChangeNavbar({
id: "Donasi",
childId: "Donasi_4",
});
}
router.push(path, { scroll: false });
} }
if (check.statusName == "review") { return true;
onChangeNavbar({
id: "Donasi",
childId: "Donasi_3",
});
}
if (check.statusName == "reject") {
onChangeNavbar({
id: "Donasi",
childId: "Donasi_4",
});
}
router.push(path, { scroll: false });
} }
return true;
} else { } else {
ComponentAdminGlobal_NotifikasiPeringatan("Status tidak ditemukan"); ComponentAdminGlobal_NotifikasiPeringatan("Status tidak ditemukan");
return false; return false;

View File

@@ -3,6 +3,7 @@ import {
gs_adminEvent_triggerReview, gs_adminEvent_triggerReview,
gs_adminJob_triggerReview, gs_adminJob_triggerReview,
gs_adminVoting_triggerReview, gs_adminVoting_triggerReview,
ITypeStatusNotifikasi,
} from "@/app/lib/global_state"; } from "@/app/lib/global_state";
import { AccentColor } from "@/app_modules/_global/color"; import { AccentColor } from "@/app_modules/_global/color";
import { ComponentGlobal_CardLoadingOverlay } from "@/app_modules/_global/component"; import { ComponentGlobal_CardLoadingOverlay } from "@/app_modules/_global/component";
@@ -169,6 +170,7 @@ export default function AdminNotifikasi_ViewCardDrawer({
appId: data.appId, appId: data.appId,
notifikasiId: data.id, notifikasiId: data.id,
router: router, router: router,
status: data.status as ITypeStatusNotifikasi,
onLoadCountNotif(val) { onLoadCountNotif(val) {
onLoadCountNotif(val); onLoadCountNotif(val);
}, },

View File

@@ -1,6 +1,7 @@
"use client"; "use client";
import { DIRECTORY_ID } from "@/app/lib"; import { DIRECTORY_ID } from "@/app/lib";
import { IRealtimeData } from "@/app/lib/global_state";
import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi"; import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
import { import {
AccentColor, AccentColor,
@@ -11,7 +12,6 @@ import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/noti
import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global/notifikasi_berhasil"; import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global/notifikasi_berhasil";
import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal"; import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal";
import notifikasiToAdmin_funCreate from "@/app_modules/notifikasi/fun/create/create_notif_to_admin"; import notifikasiToAdmin_funCreate from "@/app_modules/notifikasi/fun/create/create_notif_to_admin";
import mqtt_client from "@/util/mqtt_client";
import { import {
Button, Button,
Center, Center,
@@ -28,6 +28,7 @@ import { IconCamera, IconCircleCheck } from "@tabler/icons-react";
import { useAtom } from "jotai"; import { useAtom } from "jotai";
import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation";
import { useState } from "react"; import { useState } from "react";
import { WibuRealtime } from "wibu-pkg";
import TampilanRupiahDonasi from "../../component/tampilan_rupiah"; import TampilanRupiahDonasi from "../../component/tampilan_rupiah";
import { Donasi_funUpdateStatusInvoice } from "../../fun/update/fun_update_status_invoice"; import { Donasi_funUpdateStatusInvoice } from "../../fun/update/fun_update_status_invoice";
import { gs_donasi_hot_menu } from "../../global_state"; import { gs_donasi_hot_menu } from "../../global_state";
@@ -63,26 +64,34 @@ export default function Donasi_InvoiceProses({
fileId: uploadImage.data.id, fileId: uploadImage.data.id,
}); });
if (res.status === 200) { if (res.status === 200) {
const dataNotif: any = { // const dataNotif: any = {
// appId: res.data?.Donasi?.id as any,
// userId: res.data?.Donasi?.authorId as any,
// pesan: res.data?.Donasi?.title as any,
// status: res.data?.DonasiMaster_StatusInvoice?.name,
// kategoriApp: "DONASI",
// title: "Donatur melakukan transfer",
// };
const dataNotifikasi: IRealtimeData = {
appId: res.data?.Donasi?.id as any, appId: res.data?.Donasi?.id as any,
status: res.data?.DonasiMaster_StatusInvoice?.name as any,
userId: res.data?.Donasi?.authorId as any, userId: res.data?.Donasi?.authorId as any,
pesan: res.data?.Donasi?.title as any, pesan: res.data?.Donasi?.title as any,
status: res.data?.DonasiMaster_StatusInvoice?.name,
kategoriApp: "DONASI", kategoriApp: "DONASI",
title: "Donatur melakukan transfer", title: "Donatur telah melakukan transfer",
}; };
const notif = await notifikasiToAdmin_funCreate({ const notif = await notifikasiToAdmin_funCreate({
data: dataNotif as any, data: dataNotifikasi as any,
}); });
if (notif.status === 201) { if (notif.status === 201) {
mqtt_client.publish( WibuRealtime.setData({
"ADMIN", type: "notification",
JSON.stringify({ pushNotificationTo: "ADMIN",
count: 1, });
})
);
ComponentGlobal_NotifikasiBerhasil(res.message); ComponentGlobal_NotifikasiBerhasil(res.message);
setActive(2); setActive(2);
router.push(RouterDonasi.proses_transaksi + `${invoice.id}`); router.push(RouterDonasi.proses_transaksi + `${invoice.id}`);

View File

@@ -1,5 +1,6 @@
"use client"; "use client";
import { IRealtimeData } from "@/app/lib/global_state";
import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi"; import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
import { import {
AccentColor, AccentColor,
@@ -9,13 +10,13 @@ import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_
import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal"; import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal";
import { MODEL_MASTER_BANK } from "@/app_modules/investasi/_lib/interface"; import { MODEL_MASTER_BANK } from "@/app_modules/investasi/_lib/interface";
import notifikasiToAdmin_funCreate from "@/app_modules/notifikasi/fun/create/create_notif_to_admin"; import notifikasiToAdmin_funCreate from "@/app_modules/notifikasi/fun/create/create_notif_to_admin";
import mqtt_client from "@/util/mqtt_client";
import { Button, Paper, Radio, Stack, Title } from "@mantine/core"; import { Button, Paper, Radio, Stack, Title } from "@mantine/core";
import { useAtom } from "jotai"; import { useAtom } from "jotai";
import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation";
import { useState } from "react"; import { useState } from "react";
import { Donasi_funCreateInvoice } from "../../fun/create/fun_create_invoice"; import { Donasi_funCreateInvoice } from "../../fun/create/fun_create_invoice";
import { gs_proses_donasi } from "../../global_state"; import { gs_donasi_hot_menu, gs_proses_donasi } from "../../global_state";
import { WibuRealtime } from "wibu-pkg";
export default function Donasi_MetodePembayaran({ export default function Donasi_MetodePembayaran({
listBank, listBank,
@@ -31,6 +32,7 @@ export default function Donasi_MetodePembayaran({
const [prosesDonasi, setProsesDonasi] = useAtom(gs_proses_donasi); const [prosesDonasi, setProsesDonasi] = useAtom(gs_proses_donasi);
const [pilihBank, setPilihBank] = useState(""); const [pilihBank, setPilihBank] = useState("");
const [bank, setBank] = useState(listBank); const [bank, setBank] = useState(listBank);
const [activeHotMenu, setActiveHotMenu] = useAtom(gs_donasi_hot_menu);
async function onProses() { async function onProses() {
const body = { const body = {
@@ -40,31 +42,31 @@ export default function Donasi_MetodePembayaran({
authorId: authorId, authorId: authorId,
}; };
// console.log(body)
const res = await Donasi_funCreateInvoice(body); const res = await Donasi_funCreateInvoice(body);
if (res.status === 200) { if (res.status === 200) {
const dataNotif = {
const dataNotifikasi: IRealtimeData = {
appId: res.data?.Donasi?.id as any, appId: res.data?.Donasi?.id as any,
status: res.data?.DonasiMaster_StatusInvoice?.name as any,
userId: res.data?.Donasi?.authorId as any, userId: res.data?.Donasi?.authorId as any,
pesan: res.data?.Donasi?.title as any, pesan: res.data?.Donasi?.title as any,
status: res.data?.DonasiMaster_StatusInvoice?.name,
kategoriApp: "DONASI", kategoriApp: "DONASI",
title: "Donatur mengirim invoice", title: "Donatur membuat invoice donasi",
}; };
const notif = await notifikasiToAdmin_funCreate({ const notif = await notifikasiToAdmin_funCreate({
data: dataNotif as any, data: dataNotifikasi as any,
}); });
if (notif.status === 201) { if (notif.status === 201) {
mqtt_client.publish( WibuRealtime.setData({
"ADMIN", type: "notification",
JSON.stringify({ pushNotificationTo: "ADMIN",
count: 1, });
})
);
setLoading(true); setLoading(true);
setActiveHotMenu(2);
ComponentGlobal_NotifikasiBerhasil(res.message); ComponentGlobal_NotifikasiBerhasil(res.message);
setProsesDonasi({ setProsesDonasi({
...prosesDonasi, ...prosesDonasi,