diff --git a/src/app/dev/admin/donasi/detail/review/[id]/page.tsx b/src/app/dev/admin/donasi/detail/review/[id]/page.tsx index 4b8424f5..230bfefc 100644 --- a/src/app/dev/admin/donasi/detail/review/[id]/page.tsx +++ b/src/app/dev/admin/donasi/detail/review/[id]/page.tsx @@ -1,9 +1,8 @@ import { AdminDonasi_DetailReview } from "@/app_modules/admin/donasi"; import { AdminDonasi_getOneById } from "@/app_modules/admin/donasi/fun/get/get_one_by_id"; -export default async function Page({params}: {params: {id: string}}) { - // console.log(params.id) - const dataReview = await AdminDonasi_getOneById(params.id) - // console.log(dataReview) - return -} \ No newline at end of file +export default async function Page({ params }: { params: { id: string } }) { + const dataReview = await AdminDonasi_getOneById(params.id); + + return ; +} diff --git a/src/app/lib/global_state.ts b/src/app/lib/global_state.ts index f359610f..59259c1c 100644 --- a/src/app/lib/global_state.ts +++ b/src/app/lib/global_state.ts @@ -1,16 +1,30 @@ import { atom } from "jotai"; -export type IRealtimeData = { - status?: - | "Publish" - | "Review" - | "Draft" - | "Reject" - // EVNET - | "Peserta Event" - // VOTING - | "Voting Masuk"; +/** + * @param status | status jika perlu acc admin > "Publish", "Review", "Draft", "Reject" + * @param status | khusus kategori | EVENT > "Peserta Event" | VOTING > "Voting Masuk" | DONASI > "Berhasil", "Proses", "Menunggu", "Gagal" + */ +export type ITypeStatusNotifikasi = + | "Publish" + | "Review" + | "Draft" + | "Reject" + // 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; userId: string; pesan: string; @@ -44,4 +58,4 @@ export const gs_votingTiggerBeranda = atom(false); // donasi export const gs_adminDonasi_triggerReview = atom(false); -export const gs_donasiTriggerBeranda = atom(false); \ No newline at end of file +export const gs_donasiTriggerBeranda = atom(false); diff --git a/src/app/lib/realtime_provider.tsx b/src/app/lib/realtime_provider.tsx index 3661028e..6468a0a0 100644 --- a/src/app/lib/realtime_provider.tsx +++ b/src/app/lib/realtime_provider.tsx @@ -185,10 +185,18 @@ export default function RealtimeProvider({ data.dataMessage?.kategoriApp == "DONASI" && data.dataMessage.status == "Publish" ) { - console.log("masuk trigger "); setIsTriggerDonasiBeranda(true); } + // if ( + // data.type == "notification" && + // data.pushNotificationTo == "ADMIN" && + // data.dataMessage?.status == "Menunggu" && + // userLoginId !== data.dataMessage?.userId + // ) { + // console.log("yes"); + // } + // ---------------------- DONASI ------------------------- // }, }); diff --git a/src/app_modules/admin/notifikasi/route_setting/donasi.ts b/src/app_modules/admin/notifikasi/route_setting/donasi.ts index 527607a4..467184e4 100644 --- a/src/app_modules/admin/notifikasi/route_setting/donasi.ts +++ b/src/app_modules/admin/notifikasi/route_setting/donasi.ts @@ -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_getByUserId from "../fun/get/get_notifikasi_by_user_id"; import { ComponentAdminGlobal_NotifikasiPeringatan } from "../../_admin_global/admin_notifikasi/notifikasi_peringatan"; +import { ITypeStatusNotifikasi } from "@/app/lib/global_state"; export default async function adminNotifikasi_findRouterDonasi({ appId, notifikasiId, + status, router, onLoadCountNotif, onLoadDataNotifikasi, @@ -21,6 +23,7 @@ export default async function adminNotifikasi_findRouterDonasi({ }: { appId: string; notifikasiId: string; + status: ITypeStatusNotifikasi; router: AppRouterInstance; onLoadCountNotif: (val: any) => void; onLoadDataNotifikasi: (val: any) => void; @@ -29,54 +32,69 @@ export default async function adminNotifikasi_findRouterDonasi({ childId: IAdmin_ActiveChildId; }) => void; }) { - const check = await admin_funDonasiCheckStatus({ id: appId }); - - if (check.status == 200) { - const udpateReadNotifikasi = await adminNotifikasi_funUpdateIsReadById({ - notifId: notifikasiId, + if ( + status == "Menunggu" || + status == "Berhasil" || + status == "Proses" || + status == "Gagal" + ) { + const path = RouterAdminDonasi_OLD.detail_publish + appId; + router.push(path, { scroll: false }); + onChangeNavbar({ + id: "Donasi", + childId: "Donasi_2", }); - if (udpateReadNotifikasi.status == 200) { - const loadCountNotif = await adminNotifikasi_countNotifikasi(); - onLoadCountNotif(loadCountNotif); - - const loadListNotifikasi = await adminNotifikasi_getByUserId({ - page: 1, + return true; + } else { + const check = await admin_funDonasiCheckStatus({ id: appId }); + if (check.status == 200) { + const udpateReadNotifikasi = await adminNotifikasi_funUpdateIsReadById({ + 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") { - ComponentAdminGlobal_NotifikasiPeringatan( - "Status telah dirubah oleh user" - ); - } else { - if (check.statusName == "publish") { - onChangeNavbar({ - id: "Donasi", - childId: "Donasi_2", - }); + const loadListNotifikasi = await adminNotifikasi_getByUserId({ + page: 1, + }); + onLoadDataNotifikasi(loadListNotifikasi); + + const path = `/dev/admin/donasi/sub-menu/${check.statusName}`; + + if (check.statusName == "draft") { + 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") { - onChangeNavbar({ - id: "Donasi", - childId: "Donasi_3", - }); - } - - if (check.statusName == "reject") { - onChangeNavbar({ - id: "Donasi", - childId: "Donasi_4", - }); - } - - router.push(path, { scroll: false }); + return true; } - - return true; } else { ComponentAdminGlobal_NotifikasiPeringatan("Status tidak ditemukan"); return false; diff --git a/src/app_modules/admin/notifikasi/view_card_drawer.tsx b/src/app_modules/admin/notifikasi/view_card_drawer.tsx index 26406590..37120d27 100644 --- a/src/app_modules/admin/notifikasi/view_card_drawer.tsx +++ b/src/app_modules/admin/notifikasi/view_card_drawer.tsx @@ -3,6 +3,7 @@ import { gs_adminEvent_triggerReview, gs_adminJob_triggerReview, gs_adminVoting_triggerReview, + ITypeStatusNotifikasi, } from "@/app/lib/global_state"; import { AccentColor } from "@/app_modules/_global/color"; import { ComponentGlobal_CardLoadingOverlay } from "@/app_modules/_global/component"; @@ -169,6 +170,7 @@ export default function AdminNotifikasi_ViewCardDrawer({ appId: data.appId, notifikasiId: data.id, router: router, + status: data.status as ITypeStatusNotifikasi, onLoadCountNotif(val) { onLoadCountNotif(val); }, diff --git a/src/app_modules/donasi/proses_donasi/invoice/index.tsx b/src/app_modules/donasi/proses_donasi/invoice/index.tsx index 87532024..9ae48559 100644 --- a/src/app_modules/donasi/proses_donasi/invoice/index.tsx +++ b/src/app_modules/donasi/proses_donasi/invoice/index.tsx @@ -1,6 +1,7 @@ "use client"; import { DIRECTORY_ID } from "@/app/lib"; +import { IRealtimeData } from "@/app/lib/global_state"; import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi"; import { 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_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal"; import notifikasiToAdmin_funCreate from "@/app_modules/notifikasi/fun/create/create_notif_to_admin"; -import mqtt_client from "@/util/mqtt_client"; import { Button, Center, @@ -28,6 +28,7 @@ import { IconCamera, IconCircleCheck } from "@tabler/icons-react"; import { useAtom } from "jotai"; import { useRouter } from "next/navigation"; import { useState } from "react"; +import { WibuRealtime } from "wibu-pkg"; import TampilanRupiahDonasi from "../../component/tampilan_rupiah"; import { Donasi_funUpdateStatusInvoice } from "../../fun/update/fun_update_status_invoice"; import { gs_donasi_hot_menu } from "../../global_state"; @@ -63,26 +64,34 @@ export default function Donasi_InvoiceProses({ fileId: uploadImage.data.id, }); 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, + status: res.data?.DonasiMaster_StatusInvoice?.name 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", + title: "Donatur telah melakukan transfer", }; const notif = await notifikasiToAdmin_funCreate({ - data: dataNotif as any, + data: dataNotifikasi as any, }); if (notif.status === 201) { - mqtt_client.publish( - "ADMIN", - JSON.stringify({ - count: 1, - }) - ); + WibuRealtime.setData({ + type: "notification", + pushNotificationTo: "ADMIN", + }); + ComponentGlobal_NotifikasiBerhasil(res.message); setActive(2); router.push(RouterDonasi.proses_transaksi + `${invoice.id}`); 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 ec621060..710dae87 100644 --- a/src/app_modules/donasi/proses_donasi/metode_pembayaran/index.tsx +++ b/src/app_modules/donasi/proses_donasi/metode_pembayaran/index.tsx @@ -1,5 +1,6 @@ "use client"; +import { IRealtimeData } from "@/app/lib/global_state"; import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi"; import { 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 { MODEL_MASTER_BANK } from "@/app_modules/investasi/_lib/interface"; 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 { useAtom } from "jotai"; import { useRouter } from "next/navigation"; import { useState } from "react"; 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({ listBank, @@ -31,6 +32,7 @@ export default function Donasi_MetodePembayaran({ const [prosesDonasi, setProsesDonasi] = useAtom(gs_proses_donasi); const [pilihBank, setPilihBank] = useState(""); const [bank, setBank] = useState(listBank); + const [activeHotMenu, setActiveHotMenu] = useAtom(gs_donasi_hot_menu); async function onProses() { const body = { @@ -40,31 +42,31 @@ export default function Donasi_MetodePembayaran({ authorId: authorId, }; - // console.log(body) const res = await Donasi_funCreateInvoice(body); if (res.status === 200) { - const dataNotif = { + + const dataNotifikasi: IRealtimeData = { appId: res.data?.Donasi?.id as any, + status: res.data?.DonasiMaster_StatusInvoice?.name 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 mengirim invoice", + title: "Donatur membuat invoice donasi", }; const notif = await notifikasiToAdmin_funCreate({ - data: dataNotif as any, + data: dataNotifikasi as any, }); if (notif.status === 201) { - mqtt_client.publish( - "ADMIN", - JSON.stringify({ - count: 1, - }) - ); + WibuRealtime.setData({ + type: "notification", + pushNotificationTo: "ADMIN", + }); + setLoading(true); + setActiveHotMenu(2); ComponentGlobal_NotifikasiBerhasil(res.message); setProsesDonasi({ ...prosesDonasi,