"use client"; import { RouterHome } from "@/app/lib/router_hipmi/router_home"; import { RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; import { RouterUserProfile } from "@/app/lib/router_hipmi/router_user_profile"; import { Warna } from "@/app/lib/warna"; import funEditInvestasi from "@/app_modules/investasi/fun/fun_edit_investasi"; import funGantiStatusInvestasi from "@/app_modules/investasi/fun/fun_ganti_status"; import { gs_StatusPortoInvestasi } from "@/app_modules/investasi/g_state"; import { MODEL_Investasi } from "@/app_modules/investasi/model/model_investasi"; import { MODEL_User_profile } from "@/app_modules/home/models/user_profile"; import { Group, Flex, Avatar, Paper, AspectRatio, Box, Title, Slider, Grid, Stack, ActionIcon, Center, Button, Text, Image, Collapse, Textarea, Divider, Mark, Modal, } from "@mantine/core"; import { useDisclosure, useShallowEffect } from "@mantine/hooks"; import { IconAlertHexagonFilled, IconBan, IconBookDownload, IconCheck, IconChevronDown, IconChevronLeft, IconChevronRight, IconFile, IconFileDescription, IconFileTypePdf, IconPdf, IconSpeakerphone, } from "@tabler/icons-react"; import { useAtom } from "jotai"; import _ from "lodash"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useState } from "react"; import toast, { toastConfig } from "react-simple-toasts"; import Admin_funRejectInvestasi from "../fun/fun_reject_investasi"; import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin"; import "react-simple-toasts/dist/theme/dark.css"; toastConfig({ theme: "dark" }); export default function Admin_KonfirmasiInvestasi({ dataInvestasi, dataUser, }: { dataInvestasi: MODEL_Investasi; dataUser: MODEL_User_profile; }) { const router = useRouter(); const [investasi, setInvestasi] = useState(dataInvestasi); const [user, setUser] = useState(dataUser); const [publish, setPublish] = useState(true); const [opened, { toggle }] = useDisclosure(false); const [catatan, setCatatan] = useState(""); const [status, setStatus] = useAtom(gs_StatusPortoInvestasi); const listBox = [ { id: 1, name: "Prospektus", icon: , route: RouterInvestasi.detail_prospektus, }, { id: 2, name: "Dokumen", icon: , route: RouterInvestasi.detail_dokumen, }, { id: 3, name: "Berita", icon: , route: RouterInvestasi.berita, }, ]; useShallowEffect(() => { cekStatusPublish(); }, []); async function cekStatusPublish() { if (investasi.MasterStatusInvestasi.id === "3") setPublish(false); } async function onReject() { const body = { id: investasi.id, catatan: investasi.catatan, status: "4", }; if (_.isEmpty(body.catatan)) return toast("Lengkapi alasan"); await Admin_funRejectInvestasi(body).then((res) => { if (res.status === 200) { toast(res.message); router.back() toggle(); } else { toast(res.message); } }); } async function onPublish() { await funGantiStatusInvestasi(investasi.id, "3").then((res) => { if (res.status === 200) { setTimeout(() => setPublish(false), 1000); router.push(RouterAdminInvestasi.table_status_review); toast("Proyek Investasi Di Publish"); } }); } return ( <> router.back()}> {user.username} {" "}
{!publish || investasi.MasterStatusInvestasi.id === "4" ? ( "" ) : ( // )}
{investasi.MasterStatusInvestasi.id === "3" ? ( "" ) : ( )}
{/* Title */}
{investasi.title}
{/* Rincian Data */} Dana Dibutuhkan Rp.{" "} {new Intl.NumberFormat("id-ID", { maximumFractionDigits: 10, }).format(+investasi.targetDana)} Harga Per Lembar Rp.{" "} {new Intl.NumberFormat("id-ID", { maximumFractionDigits: 10, }).format(+investasi.hargaLembar)}{" "} Jadwal Pembagian {investasi.MasterPembagianDeviden.name} bulan Pencarian Investor {investasi.MasterPencarianInvestor.name} hari ROI {investasi.roi} % Total Lembar {" "} {new Intl.NumberFormat("id-ID", { maximumFractionDigits: 10, }).format(+investasi.totalLembar)}{" "} lembar Pembagian Deviden {investasi.MasterPeriodeDeviden.name}
{/* Note */} {!publish || investasi.MasterStatusInvestasi.id === "4" ? ( "" ) : ( Note : Cek kembali kelengkapan file prospektus & semua dokumen terkait investasi sebelum mem-publish. Jika kelengkapan file kurang lengkap maka reject dan berikan pesan terkait kekurangnya. )} {/* Note dan dokumen */} {/* File file */} {/* Prospektus */} Prospektus : {investasi.ProspektusInvestasi === null ? ( Tidak ada file ) : ( Prospektus_{investasi.title} )} {/* Dokumen */} Dokumen : {_.isEmpty(investasi.DokumenInvestasi) ? ( Tidak ada dokumen ) : ( investasi.DokumenInvestasi.map((e) => ( {e.title} )) )}