"use client"; import { IRealtimeData } from "@/lib/global_state"; import { MainColor } from "@/app_modules/_global/color"; import { MODEL_INVESTASI } from "@/app_modules/investasi/_lib/interface"; import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; import { Button, Group, SimpleGrid, Stack } from "@mantine/core"; import { useShallowEffect } from "@mantine/hooks"; import _ from "lodash"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { WibuRealtime } from "wibu-pkg"; import { Admin_ComponentModalReport } from "../../_admin_global/_component"; import Admin_ComponentModalPublish from "../../_admin_global/_component/comp_admin_modal_publish"; 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 { ComponentAdminInvestasi_DetailDataAuthor } from "../_component/detail_data_author"; import { ComponentAdminInvestasi_DetailData } from "../_component/detail_data_investasi"; import { ComponentAdminInvestasi_DetailGambar } from "../_component/detail_gambar_investasi"; import { ComponentAdminInvestasi_UIDetailFile } from "../_component/ui_detail_file"; import { adminInvestasi_funEditStatusPublishById } from "../fun/edit/fun_status_publish_by_id"; import Admin_funRejectInvestasi from "../fun/fun_reject_investasi"; export default function AdminInvestasi_DetailReview({ dataInvestasi, }: { dataInvestasi: MODEL_INVESTASI; }) { const router = useRouter(); const [data, setData] = useState(dataInvestasi); const [publish, setPublish] = useState(true); const [openModalPublish, setOpenModalPublish] = useState(false); const [openModalReject, setOpenModalReject] = useState(false); const [isLoadingPublish, setIsLoadingPublish] = useState(false); const [isLoadingReject, setIsLoadingReject] = useState(false); const [report, setReport] = useState(""); useShallowEffect(() => { cekStatusPublish(); }, []); async function cekStatusPublish() { if (data.MasterStatusInvestasi.id === "3") setPublish(false); } async function onReject() { const body = { id: data.id, catatan: report, status: "4", }; if (_.isEmpty(body.catatan)) return ComponentAdminGlobal_NotifikasiPeringatan("Lengkapi alasan"); const res = await Admin_funRejectInvestasi(body); if (res.status === 200) { setIsLoadingReject(true); const dataNotifikasi: IRealtimeData = { appId: res.data?.id as string, userId: res.data?.authorId as string, pesan: res.data?.title as string, status: res.data?.MasterStatusInvestasi?.name as any, kategoriApp: "INVESTASI", title: "Investasi 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 loadData = await getOneInvestasiById(data.id); setData(loadData as any); ComponentAdminGlobal_NotifikasiBerhasil(res.message); router.back(); setOpenModalReject(false); setIsLoadingReject(false); } else { ComponentAdminGlobal_NotifikasiGagal(res.message); setOpenModalReject(false); } } async function onPublish() { const res = await adminInvestasi_funEditStatusPublishById({ investasiId: data.id, statusId: "1", progesInvestasiId: "1", }); if (res.status === 200) { setIsLoadingPublish(true); const dataNotifikasi: IRealtimeData = { appId: res.data?.id as string, userId: res.data?.authorId as any, pesan: res.data?.title as any, status: res.data?.MasterStatusInvestasi?.name as any, kategoriApp: "INVESTASI", title: "Investasi publish", }; const notif = await adminNotifikasi_funCreateToUser({ data: dataNotifikasi as any, }); if (notif.status === 201) { WibuRealtime.setData({ type: "notification", pushNotificationTo: "USER", dataMessage: dataNotifikasi, }); WibuRealtime.setData({ type: "trigger", pushNotificationTo: "USER", dataMessage: dataNotifikasi, }); const loadData = await getOneInvestasiById(data.id); setData(loadData as any); ComponentAdminGlobal_NotifikasiBerhasil("Proyek Investasi Di Publish"); setOpenModalPublish(false); setIsLoadingPublish(false); router.back(); // router.push(RouterAdminInvestasi_OLD.table_status_review); } } else { ComponentAdminGlobal_NotifikasiGagal(res.message); setOpenModalPublish(false); } } return ( <> {data.masterStatusInvestasiId === "2" ? ( ) : ( "" )} {/* Data Author */} {/* Data Foto */} {/* Data Detail */} setOpenModalReject(false)} title="Alasan Penolakan" onHandlerChange={(val) => setReport(val.target.value)} buttonKiri={ } buttonKanan={ } /> setOpenModalPublish(false)} title="Anda Yakin Ingin Mempublish Investasi Ini ?" buttonKiri={ } buttonKanan={ } /> ); }