"use client";
import { IRealtimeData } from "@/lib/global_state";
import ComponentGlobal_InputCountDown from "@/app_modules/_global/component/input_countdown";
import { MODEL_DONASI } from "@/app_modules/donasi/model/interface";
import { Button, Group, SimpleGrid, Stack } from "@mantine/core";
import { useDisclosure } from "@mantine/hooks";
import { useRouter } from "next/navigation";
import { useState } from "react";
import { WibuRealtime } from "wibu-pkg";
import { Admin_ComponentModalReport } from "../../_admin_global/_component";
import { ComponentAdminGlobal_NotifikasiBerhasil } from "../../_admin_global/admin_notifikasi/notifikasi_berhasil";
import { ComponentAdminGlobal_NotifikasiGagal } from "../../_admin_global/admin_notifikasi/notifikasi_gagal";
import { ComponentAdminGlobal_NotifikasiPeringatan } from "../../_admin_global/admin_notifikasi/notifikasi_peringatan";
import AdminGlobal_ComponentBackButton from "../../_admin_global/back_button";
import adminNotifikasi_funCreateToUser from "../../notifikasi/fun/create/fun_create_notif_user";
import ComponentAdminDonasi_CeritaPenggalangDana from "../component/tampilan_detail_cerita";
import ComponentAdminDonasi_TampilanDetailDonasi from "../component/tampilan_detail_donasi";
import { AdminDonasi_getOneById } from "../fun/get/get_one_by_id";
import { AdminDonasi_funUpdateStatusPublish } from "../fun/update/fun_status_publish";
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";
import Admin_ComponentModalPublish from "../../_admin_global/_component/comp_admin_modal_publish";
import { MainColor } from "@/app_modules/_global/color";
export default function AdminDonasi_DetailReview({
dataReview,
}: {
dataReview: MODEL_DONASI;
}) {
const [data, setData] = useState(dataReview);
return (
<>
>
);
}
function ButtonOnHeader({
donasi,
setData,
}: {
donasi: MODEL_DONASI;
setData: any;
}) {
const router = useRouter();
const [isLoadingPublish, setLoadingPublish] = useState(false);
const [isLoadingReject, setLoadingReject] = useState(false);
const [openedPublish, { open: openPublish, close: closePublish }] = useDisclosure(false);
const [openedReject, { open: openReject, close: closeReject }] = useDisclosure(false);
const [catatan, setCatatan] = useState("");
async function onPublish() {
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) {
// ===== 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: notifikasiToCreator as any,
});
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"
);
} else {
setLoadingPublish(false);
ComponentAdminGlobal_NotifikasiPeringatan(
"Gagal Mengubah Status Donasi"
);
}
} else {
setLoadingPublish(false);
ComponentGlobal_NotifikasiPeringatan("Status donasi telah diubah user");
}
} catch (error) {
setLoadingPublish(false);
clientLogger.error("Error to published donasi", error);
}
}
async function onReject() {
if (catatan === "")
return ComponentAdminGlobal_NotifikasiPeringatan(
"Lengkapi Alasan Penolakan"
);
const checkStatus = await donasi_checkStatus({ id: donasi.id });
if (checkStatus) {
const res = await AdminDonasi_funUpdateStatusReject(
donasi.id,
"4",
catatan
);
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 anda di tolak !",
};
const notif = await adminNotifikasi_funCreateToUser({
data: dataNotifikasi as any,
});
if (notif.status === 201) {
WibuRealtime.setData({
type: "notification",
pushNotificationTo: "USER",
dataMessage: dataNotifikasi,
});
const newData = await AdminDonasi_getOneById(donasi?.id);
setData(newData);
close();
ComponentAdminGlobal_NotifikasiBerhasil(res.message);
setLoadingReject(true);
}
} else {
ComponentAdminGlobal_NotifikasiGagal(res.message);
}
} else {
ComponentGlobal_NotifikasiPeringatan("Status donasi telah diubah user");
}
}
return (
<>
{donasi.donasiMaster_StatusDonasiId === "2" ? (
) : (
""
)}
{/* */}
setCatatan(val.target.value)}
buttonKiri={
<>
>
}
buttonKanan={
<>
>
}
cekInputKarakter={
<>
>
}
/>
>
}
buttonKanan={
<>
>
}
/>
{/*
*/}
>
);
}