Merge pull request #247 from bipproduction/bagas/17-jan-25

Fix notifikasi donasi & event new fiture
This commit is contained in:
Bagasbanuna02
2025-01-20 11:34:36 +08:00
committed by GitHub
24 changed files with 493 additions and 325 deletions

View File

@@ -18,17 +18,16 @@ import {
Title,
Tooltip,
} from "@mantine/core";
import { IconCirclePlus, IconEdit } from "@tabler/icons-react";
import { IconEdit } from "@tabler/icons-react";
import _ from "lodash";
import { useState } from "react";
import { ComponentAdminGlobal_NotifikasiBerhasil } from "../../_admin_global/admin_notifikasi/notifikasi_berhasil";
import { ComponentAdminGlobal_NotifikasiGagal } from "../../_admin_global/admin_notifikasi/notifikasi_gagal";
import { AdminAppInformation_ComponentTitlePageBank } from "../component";
import adminAppInformation_createBank from "../fun/create/fun_create_new_bank";
import adminAppInformation_getMasterBank from "../fun/master/get_list_bank";
import adminAppInformation_updateStatusBankById from "../fun/update/fun_udpate_status_bank";
import adminAppInformation_updateDataBankById from "../fun/update/fun_update_data_bank";
import { ComponentAdminGlobal_TitlePage } from "../../_admin_global/_component";
import { AdminAppInformation_ComponentTitlePageBank } from "../component";
export default function AdminAppInformation_ViewInfoBank({
listBank,

View File

@@ -21,6 +21,9 @@ import { AdminDonasi_funUpdateStatusPublish } from "../fun/update/fun_status_pub
import { AdminDonasi_funUpdateStatusReject } from "../fun/update/fun_status_reject";
import { donasi_checkStatus } from "@/app_modules/donasi/fun";
import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global";
import adminNotifikasi_funCreateToAllUser from "../../notifikasi/fun/create/fun_create_notif_to_all_user";
import { clientLogger } from "@/util/clientLogger";
import { apiGetAllUserWithExceptId } from "@/app_modules/_global/lib/api_user";
export default function AdminDonasi_DetailReview({
dataReview,
@@ -66,51 +69,88 @@ function ButtonOnHeader({
const [catatan, setCatatan] = useState("");
async function onPulish() {
const checkStatus = await donasi_checkStatus({ id: donasi.id });
try {
setLoadingPublish(true);
const checkStatus = await donasi_checkStatus({ id: donasi.id });
if (checkStatus) {
const res = await AdminDonasi_funUpdateStatusPublish(donasi.id, "1");
if (res.status === 200) {
const dataNotifikasi: IRealtimeData = {
appId: res.data?.id as string,
status: res.data?.DonasiMaster_Status?.name as any,
userId: res.data?.authorId as any,
pesan: res.data?.title as any,
kategoriApp: "DONASI",
title: "Donasi publish",
};
if (checkStatus) {
const res = await AdminDonasi_funUpdateStatusPublish(donasi.id, "1");
if (res.status === 200) {
// ===== TO CREATEOR ====== //
const notifikasiToCreator: IRealtimeData = {
appId: res.data?.id as string,
status: res.data?.DonasiMaster_Status?.name as any,
userId: res.data?.authorId as any,
pesan: res.data?.title as any,
kategoriApp: "DONASI",
title: "Donasi publish",
};
const notif = await adminNotifikasi_funCreateToUser({
data: dataNotifikasi as any,
});
if (notif.status === 201) {
WibuRealtime.setData({
type: "notification",
pushNotificationTo: "USER",
dataMessage: dataNotifikasi,
const notif = await adminNotifikasi_funCreateToUser({
data: notifikasiToCreator as any,
});
WibuRealtime.setData({
type: "trigger",
pushNotificationTo: "USER",
dataMessage: dataNotifikasi,
if (notif.status === 201) {
WibuRealtime.setData({
type: "notification",
pushNotificationTo: "USER",
dataMessage: notifikasiToCreator,
});
WibuRealtime.setData({
type: "trigger",
pushNotificationTo: "USER",
dataMessage: notifikasiToCreator,
});
}
// ===== TO CREATEOR ====== //
// TO ALL USER
const notificationToAll = await adminNotifikasi_funCreateToAllUser({
data: res.data as any,
authorId: donasi.authorId,
});
if (notificationToAll.status === 201) {
const dataUser = notificationToAll.data;
for (let i of dataUser as any) {
const dataNotifikasiToAll: IRealtimeData = {
appId: res.data?.id as string,
status: res.data?.DonasiMaster_Status?.name as any,
userId: i.id as any,
pesan: res.data?.title as any,
kategoriApp: "DONASI",
title: "Donasi baru terpublish",
};
WibuRealtime.setData({
type: "notification",
pushNotificationTo: "USER",
dataMessage: dataNotifikasiToAll,
});
}
}
const newData = await AdminDonasi_getOneById(donasi?.id);
setData(newData);
ComponentAdminGlobal_NotifikasiBerhasil(
"Berhasil Mengubah Status Donasi"
);
setLoadingPublish(true);
} else {
setLoadingPublish(false);
ComponentAdminGlobal_NotifikasiPeringatan(
"Gagal Mengubah Status Donasi"
);
}
} else {
ComponentAdminGlobal_NotifikasiPeringatan(
"Gagal Mengubah Status Donasi"
);
setLoadingPublish(false);
ComponentGlobal_NotifikasiPeringatan("Status donasi telah diubah user");
}
} else {
ComponentGlobal_NotifikasiPeringatan("Status donasi telah diubah user");
} catch (error) {
setLoadingPublish(false);
clientLogger.error("Error to published donasi", error);
}
}
@@ -170,6 +210,8 @@ function ButtonOnHeader({
{donasi.donasiMaster_StatusDonasiId === "2" ? (
<Group>
<Button
loading={isLoadingPublish}
loaderPosition="center"
radius={"xl"}
bg={"green"}
color="green"

View File

@@ -36,5 +36,7 @@ export async function AdminDonasi_getOneById(id: string) {
imageId: true,
},
});
await prisma.$disconnect();
return res;
}

View File

@@ -32,8 +32,14 @@ export async function AdminDonasi_funUpdateStatusPublish(
},
});
if (!data) return { status: 400, message: "Data tidak ditemukan" };
if (!data) {
await prisma.$disconnect();
return { status: 400, message: "Data tidak ditemukan" };
}
revalidatePath(RouterAdminDonasi.table_review);
await prisma.$disconnect();
return {
data: data,
status: 200,

View File

@@ -113,7 +113,7 @@ export function Admin_NewLayout({
<Grid>
<Grid.Col span={7}>
<Title order={3} lineClamp={1}>
{userRoleId == "2" ? "Admin" : "Developer"}
{userRoleId == "2" ? "Admin" : "SuperAdmin"}
</Title>
</Grid.Col>
@@ -130,7 +130,8 @@ export function Admin_NewLayout({
onLoadListNotifikasi();
}}
>
{countNtf == 0 ? (
{countNtf == 0 ||
dataUser.masterUserRoleId == "3" ? (
<IconBell color="white" />
) : (
<Indicator

View File

@@ -0,0 +1,50 @@
"use server";
import prisma from "@/app/lib/prisma";
import { funGetUserIdByToken } from "@/app_modules/_global/fun/get";
export default async function adminNotifikasi_funCreateToAllUser({
data,
authorId,
}: {
data: any;
authorId: string;
}) {
const userLoginId = await funGetUserIdByToken();
const dataUser = await prisma.user.findMany({
where: {
NOT: {
id: authorId,
},
active: true,
masterUserRoleId: "1",
},
});
for (let i of dataUser) {
const create = await prisma.notifikasi.create({
data: {
adminId: userLoginId,
userId: i.id,
appId: data.id,
status: data.DonasiMaster_Status.name,
title: "Donasi baru terpublish",
pesan: data.title,
kategoriApp: "DONASI",
userRoleId: "1",
},
});
if (!create) {
await prisma.$disconnect();
return { status: 400, message: "Gagal mengirim notifikasi" };
}
}
await prisma.$disconnect();
return {
status: 201,
message: "Berhasil mengirim notifikasi",
data: dataUser,
};
}

View File

@@ -23,7 +23,12 @@ export default async function adminNotifikasi_funCreateToUser({
userRoleId: "1",
},
});
if (!create) return { status: 400, message: "Gagal mengirim notifikasi" };
if (!create) {
await prisma.$disconnect();
return { status: 400, message: "Gagal mengirim notifikasi" };
}
await prisma.$disconnect();
return { status: 201, message: "Berhasil mengirim notifikasi" };
}