Fix: Donasi

Deskripsi:
- Fix notitikasi user to admin
- Fix notifikasi admin to user
This commit is contained in:
2024-11-28 11:31:15 +08:00
parent 038c40a6fb
commit 2335807b42
22 changed files with 539 additions and 216 deletions

View File

@@ -11,7 +11,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 {
AspectRatio,
Button,
@@ -92,15 +91,6 @@ export default function CreateCeritaPenggalangDonasi({
});
if (res.status === 201) {
// const dataNotif: any = {
// appId: res.data?.id as any,
// status: res.data?.DonasiMaster_Status?.name as any,
// userId: res.data?.authorId as any,
// pesan: res.data?.title as any,
// kategoriApp: "DONASI",
// title: "Donasi baru",
// };
const dataNotifikasi: IRealtimeData = {
appId: res.data?.id as any,
status: res.data?.DonasiMaster_Status?.name as any,
@@ -115,20 +105,16 @@ export default function CreateCeritaPenggalangDonasi({
});
if (notif.status === 201) {
// mqtt_client.publish(
// "ADMIN",
// JSON.stringify({
// count: 1,
// })
// );
WibuRealtime.setData({
type: "notification",
pushNotificationTo: "ADMIN",
});
WibuRealtime.setData({
type: "trigger",
pushNotificationTo: "ADMIN",
dataMessage: dataNotifikasi,
});
setDonasiHotMenu(1);
ComponentGlobal_NotifikasiBerhasil(res.message);

View File

@@ -84,7 +84,6 @@ export default function CreateDonasi({
if (res.status === 201) {
setTabsPostingDonasi("Review");
router.push(RouterDonasi.create_cerita_penggalang + `${res.donasiId}`);
setLoading(false);
} else {
ComponentGlobal_NotifikasiGagal(res.message);
setLoading(false);

View File

@@ -14,6 +14,8 @@ import ComponentDonasi_DetailDataGalangDana from "../../component/detail_galang_
import ComponentDonasi_CeritaPenggalangMain from "../../component/detail_main/cerita_penggalang";
import { Donasi_funGantiStatus } from "../../fun/update/fun_ganti_status";
import { MODEL_DONASI } from "../../model/interface";
import { IRealtimeData } from "@/app/lib/global_state";
import { WibuRealtime } from "wibu-pkg";
export default function DetailDraftDonasi({
dataDonasi,
@@ -52,7 +54,8 @@ function ButtonAjukanPenggalangan({
async function onChangeStatus() {
const res = await Donasi_funGantiStatus(dataDonasi.id, "2");
if (res.status === 200) {
const dataNotif = {
const dataNotifikasi: IRealtimeData = {
appId: res.data?.id as any,
status: res.data?.DonasiMaster_Status?.name as any,
userId: res.data?.authorId as any,
@@ -62,11 +65,20 @@ function ButtonAjukanPenggalangan({
};
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",
});
WibuRealtime.setData({
type: "trigger",
pushNotificationTo: "ADMIN",
dataMessage: dataNotifikasi,
});
setLoading(true);
ComponentGlobal_NotifikasiBerhasil("Berhasil Diajukan");

View File

@@ -3,18 +3,19 @@
import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global/notifikasi_berhasil";
import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global/notifikasi_peringatan";
import { UIGlobal_Modal } from "@/app_modules/_global/ui";
import notifikasiToAdmin_funCreate from "@/app_modules/notifikasi/fun/create/create_notif_to_admin";
import mqtt_client from "@/util/mqtt_client";
import { Button, Stack } from "@mantine/core";
import { useAtom } from "jotai";
import { useRouter } from "next/navigation";
import { useState } from "react";
import ComponentDonasi_DetailDataGalangDana from "../../component/detail_galang_dana/detail_data_donasi";
import ComponentDonasi_CeritaPenggalangMain from "../../component/detail_main/cerita_penggalang";
import { Donasi_funGantiStatus } from "../../fun/update/fun_ganti_status";
import { gs_donasi_tabs_posting } from "../../global_state";
import { MODEL_DONASI } from "../../model/interface";
import notifikasiToAdmin_funCreate from "@/app_modules/notifikasi/fun/create/create_notif_to_admin";
import mqtt_client from "@/util/mqtt_client";
import { UIGlobal_Modal } from "@/app_modules/_global/ui";
import { donasi_checkStatus } from "../../fun";
import { WibuRealtime } from "wibu-pkg";
import { IRealtimeData } from "@/app/lib/global_state";
export default function DetailReviewDonasi({
dataDonasi,
@@ -39,30 +40,53 @@ function ButtonBatalReview({ donasi }: { donasi: MODEL_DONASI }) {
const [openModal, setOpenModal] = useState(false);
async function onChangeStatus() {
const res = await Donasi_funGantiStatus(donasi.id, "3");
if (res.status === 200) {
const dataNotif = {
appId: res.data?.id as any,
status: res.data?.DonasiMaster_Status?.name as any,
userId: res.data?.authorId as any,
pesan: res.data?.title as any,
kategoriApp: "DONASI",
title: "Membatalkan review",
};
const check = await donasi_checkStatus({ id: donasi.id });
if (check) {
const res = await Donasi_funGantiStatus(donasi.id, "3");
if (res.status === 200) {
// const dataNotif = {
// appId: res.data?.id as any,
// status: res.data?.DonasiMaster_Status?.name as any,
// userId: res.data?.authorId as any,
// pesan: res.data?.title as any,
// kategoriApp: "DONASI",
// title: "Membatalkan review",
// };
const notif = await notifikasiToAdmin_funCreate({
data: dataNotif as any,
});
const dataNotifikasi: IRealtimeData = {
appId: res.data?.id as any,
status: res.data?.DonasiMaster_Status?.name as any,
userId: res.data?.authorId as any,
pesan: res.data?.title as any,
kategoriApp: "DONASI",
title: "Membatalkan review",
};
if (notif.status === 201) {
mqtt_client.publish("ADMIN", JSON.stringify({ count: 1 }));
const notif = await notifikasiToAdmin_funCreate({
data: dataNotifikasi as any,
});
ComponentGlobal_NotifikasiBerhasil("Berhasil Dibatalkan");
setLoading(true);
router.push(RouterDonasi.status_galang_dana({ id: "3" }));
if (notif.status === 201) {
WibuRealtime.setData({
type: "notification",
pushNotificationTo: "ADMIN",
});
WibuRealtime.setData({
type: "trigger",
pushNotificationTo: "ADMIN",
dataMessage: dataNotifikasi,
});
ComponentGlobal_NotifikasiBerhasil("Berhasil Dibatalkan");
setLoading(true);
router.push(RouterDonasi.status_galang_dana({ id: "3" }));
}
} else {
ComponentGlobal_NotifikasiPeringatan(res.message);
}
} else {
ComponentGlobal_NotifikasiPeringatan(res.message);
ComponentGlobal_NotifikasiPeringatan("Donasi telah direview admin");
}
}
return (

View File

@@ -0,0 +1,17 @@
"use server";
import { prisma } from "@/app/lib";
export async function donasi_checkStatus({ id }: { id: string }) {
const checkStatus = await prisma.donasi.findFirst({
where: {
id: id,
},
});
console.log(checkStatus?.donasiMaster_StatusDonasiId, "ini status nya")
if (checkStatus?.donasiMaster_StatusDonasiId == "2") return true;
return false;
}

View File

@@ -2,7 +2,9 @@ import { Donasi_getMasterKategori } from "./master/get_ketegori";
import { Donasi_getMasterDurasi } from "./master/get_durasi";
import { donasi_funUpdateKabar } from "./update/fun_update_kabar";
import { donasi_funGetAllStatusById } from "./get/status/get_all_by_status_id";
import { donasi_checkStatus } from "./get/fun_check_status";
export { Donasi_getMasterKategori, Donasi_getMasterDurasi };
export { donasi_funUpdateKabar };
export { donasi_funGetAllStatusById };
export { donasi_checkStatus };

View File

@@ -4,13 +4,17 @@ import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
import ComponentGlobal_CreateButton from "@/app_modules/_global/component/button_create";
import ComponentGlobal_IsEmptyData from "@/app_modules/_global/component/is_empty_data";
import ComponentGlobal_Loader from "@/app_modules/_global/component/loader";
import { Box, Center } from "@mantine/core";
import { Affix, Box, Button, Center, rem } from "@mantine/core";
import _ from "lodash";
import { ScrollOnly } from "next-scroll-loader";
import { useState } from "react";
import ComponentDonasi_CardPublish from "../component/card_view/card_publish";
import { donasi_funGetAllPublish } from "../fun/get/get_list_beranda";
import { MODEL_DONASI } from "../model/interface";
import { gs_donasiTriggerBeranda } from "@/app/lib/global_state";
import { useAtom } from "jotai";
import { useShallowEffect } from "@mantine/hooks";
import { AccentColor } from "@/app_modules/_global/color";
export default function MainDonasi({
listDonasi,
@@ -20,9 +24,59 @@ export default function MainDonasi({
const [data, setData] = useState(listDonasi);
const [activePage, setActivePage] = useState(1);
// Realtime
const [isTriggerDonasiBeranda, setIsTriggerDonasiBeranda] = useAtom(
gs_donasiTriggerBeranda
);
const [isShowUpdate, setIsShowUpdate] = useState(false);
const [isLoading, setIsLoading] = useState(false);
useShallowEffect(() => {
if (isTriggerDonasiBeranda) {
setIsShowUpdate(true);
}
}, [isTriggerDonasiBeranda, setIsShowUpdate]);
async function onLoadData({ onPublish }: { onPublish: (val: any) => void }) {
setIsLoading(true);
const loadData = await donasi_funGetAllPublish({ page: 1 });
onPublish(loadData);
setIsShowUpdate(false);
setIsTriggerDonasiBeranda(false);
setIsLoading(false);
}
return (
<>
<Box>
{isShowUpdate && (
<Affix position={{ top: rem(100) }} w={"100%"}>
<Center>
<Button
style={{
transition: "0.5s",
border: `1px solid ${AccentColor.skyblue}`,
}}
bg={AccentColor.blue}
loaderPosition="center"
loading={isLoading}
radius={"xl"}
opacity={0.8}
onClick={() => {
onLoadData({
onPublish(val) {
setData(val);
},
});
}}
>
Update beranda
</Button>
</Center>
</Affix>
)}
<ComponentGlobal_CreateButton path={RouterDonasi.create_donasi} />
{_.isEmpty(data) ? (
<ComponentGlobal_IsEmptyData />