From 989c9eed32e8f79abd8c36569917083c4fb407f4 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Tue, 14 Nov 2023 12:01:26 +0800 Subject: [PATCH] Admin Investasi # feat: - Ganti status dan reject ### No issue --- .../admin/{main/award => award/main}/page.tsx | 0 .../investasi/konfirmasi/[id]/layout.tsx | 17 --- .../investasi => investasi/main}/page.tsx | 0 src/app/dev/admin/{main => }/layout.tsx | 0 .../{admin/splash => splash/admin}/page.tsx | 0 src/app/lib/router_hipmi/router_admin.ts | 6 +- .../investasi/fun/fun_reject_investasi.ts | 21 ++++ .../admin/investasi/fun/get_all_investasi.ts | 1 + .../admin/investasi/konfirmasi/view.tsx | 118 ++++++++++-------- .../admin/investasi/main/table_publish.tsx | 79 ++++++++++++ .../admin/investasi/main/table_reject.tsx | 77 ++++++++++++ .../admin/investasi/main/table_review.tsx | 74 +++++++++++ src/app_modules/admin/investasi/main/view.tsx | 99 ++------------- .../investasi/fun/fun_edit_investasi.ts | 4 +- .../investasi/fun/fun_ganti_status.ts | 2 + .../investasi/model/model_investasi.ts | 1 + 16 files changed, 341 insertions(+), 158 deletions(-) rename src/app/dev/admin/{main/award => award/main}/page.tsx (100%) delete mode 100644 src/app/dev/admin/investasi/konfirmasi/[id]/layout.tsx rename src/app/dev/admin/{main/investasi => investasi/main}/page.tsx (100%) rename src/app/dev/admin/{main => }/layout.tsx (100%) rename src/app/dev/{admin/splash => splash/admin}/page.tsx (100%) create mode 100644 src/app_modules/admin/investasi/fun/fun_reject_investasi.ts create mode 100644 src/app_modules/admin/investasi/main/table_publish.tsx create mode 100644 src/app_modules/admin/investasi/main/table_reject.tsx create mode 100644 src/app_modules/admin/investasi/main/table_review.tsx diff --git a/src/app/dev/admin/main/award/page.tsx b/src/app/dev/admin/award/main/page.tsx similarity index 100% rename from src/app/dev/admin/main/award/page.tsx rename to src/app/dev/admin/award/main/page.tsx diff --git a/src/app/dev/admin/investasi/konfirmasi/[id]/layout.tsx b/src/app/dev/admin/investasi/konfirmasi/[id]/layout.tsx deleted file mode 100644 index 182eb300..00000000 --- a/src/app/dev/admin/investasi/konfirmasi/[id]/layout.tsx +++ /dev/null @@ -1,17 +0,0 @@ - -import { Admin_LayoutKonfirmasiInvestasi } from "@/app_modules/admin/investasi"; -import React from "react"; - -export default async function Layout({ - children, -}: { - children: React.ReactNode; -}) { - return ( - <> - - {children} - - - ); -} diff --git a/src/app/dev/admin/main/investasi/page.tsx b/src/app/dev/admin/investasi/main/page.tsx similarity index 100% rename from src/app/dev/admin/main/investasi/page.tsx rename to src/app/dev/admin/investasi/main/page.tsx diff --git a/src/app/dev/admin/main/layout.tsx b/src/app/dev/admin/layout.tsx similarity index 100% rename from src/app/dev/admin/main/layout.tsx rename to src/app/dev/admin/layout.tsx diff --git a/src/app/dev/admin/splash/page.tsx b/src/app/dev/splash/admin/page.tsx similarity index 100% rename from src/app/dev/admin/splash/page.tsx rename to src/app/dev/splash/admin/page.tsx diff --git a/src/app/lib/router_hipmi/router_admin.ts b/src/app/lib/router_hipmi/router_admin.ts index 19f1b17c..d249b221 100644 --- a/src/app/lib/router_hipmi/router_admin.ts +++ b/src/app/lib/router_hipmi/router_admin.ts @@ -1,10 +1,10 @@ export const RouterAdminDashboard = { main_admin: "/dev/admin/main/dashboard", - splash_admin: "/dev/admin/splash", + splash_admin: "/dev/splash/admin", }; export const RouterAdminInvestasi = { - main_investasi: "/dev/admin/main/investasi", + main_investasi: "/dev/admin/investasi/main", halaman_aksi: "/dev/admin/investasi/halaman_aksi/", konfirmasi: "/dev/admin/investasi/konfirmasi/", bukti_transfer: "/dev/admin/investasi/bukti_transfer", @@ -12,5 +12,5 @@ export const RouterAdminInvestasi = { }; export const RouterAdminAward = { - main_award: "/dev/admin/main/award", + main_award: "/dev/admin/award/main", }; diff --git a/src/app_modules/admin/investasi/fun/fun_reject_investasi.ts b/src/app_modules/admin/investasi/fun/fun_reject_investasi.ts new file mode 100644 index 00000000..0b74d9b9 --- /dev/null +++ b/src/app_modules/admin/investasi/fun/fun_reject_investasi.ts @@ -0,0 +1,21 @@ +"use server" + +import prisma from "@/app/lib/prisma" + +export default async function funRejectInvestasi(data: any) { + // console.log(data) + + const res = await prisma.investasi.update({ + where: { id: data.id }, + data: { + masterStatusInvestasiId: data.status, + catatan: data.catatan + } + }) + if(!res) return {status: 400, message: "Gagal reject"} + + return { + status: 200, + message: "Reject berhasil" + } +} \ No newline at end of file diff --git a/src/app_modules/admin/investasi/fun/get_all_investasi.ts b/src/app_modules/admin/investasi/fun/get_all_investasi.ts index afc5fe7c..e1eeb3ee 100644 --- a/src/app_modules/admin/investasi/fun/get_all_investasi.ts +++ b/src/app_modules/admin/investasi/fun/get_all_investasi.ts @@ -21,6 +21,7 @@ export default async function Admin_funGetAllInvestasi() { roi: true, active: true, imagesId: true, + catatan: true, MasterStatusInvestasi: true, BeritaInvestasi: true, DokumenInvestasi: true, diff --git a/src/app_modules/admin/investasi/konfirmasi/view.tsx b/src/app_modules/admin/investasi/konfirmasi/view.tsx index d19c07a9..dc96411c 100644 --- a/src/app_modules/admin/investasi/konfirmasi/view.tsx +++ b/src/app_modules/admin/investasi/konfirmasi/view.tsx @@ -52,6 +52,7 @@ import Link from "next/link"; import { useRouter } from "next/navigation"; import { useState } from "react"; import toast from "react-simple-toasts"; +import funRejectInvestasi from "../fun/fun_reject_investasi"; export default function Admin_KonfirmasiInvestasi({ dataInvestasi, @@ -89,23 +90,33 @@ export default function Admin_KonfirmasiInvestasi({ }, ]; - // useShallowEffect(() => { - // cekStatusPublish() - // },[]) + useShallowEffect(() => { + cekStatusPublish(); + }, []); - // async function cekStatusPublish() { - // if(investasi.MasterStatusInvestasi.id === "3") - // setPublish(false) - // } + async function cekStatusPublish() { + if (investasi.MasterStatusInvestasi.id === "3") setPublish(false); + } - async function onCatatan() { - if (_.isEmpty(catatan)) return toast("Lengkapi alasan"); - console.log(catatan); - toggle(); + async function onReject() { + const body = { + id: investasi.id, + catatan: catatan, + status: "4", + }; + if (_.isEmpty(body.catatan)) return toast("Lengkapi alasan"); + await funRejectInvestasi(body).then((res) => { + if (res.status === 200) { + toast(res.message); + toggle(); + } else { + toast(res.message); + } + }); } async function onPublish() { - // const res = await funGantiStatusInvestasi(investasi.id, "3") + const res = await funGantiStatusInvestasi(investasi.id, "3"); setTimeout(() => setPublish(false), 1000); toast("Proyek Investasi Di Publish"); } @@ -113,20 +124,28 @@ export default function Admin_KonfirmasiInvestasi({ return ( <> - - - {user.username} - + + router.back()}> + + + + + {user.username} + + {" "}
- {publish ? ( + {!publish || investasi.MasterStatusInvestasi.id === "4" ? ( + "" + ) : ( - ) : ( - + // )}
- + {investasi.MasterStatusInvestasi.id === "3" ? ( + "" + ) : ( + + )}
@@ -286,9 +308,7 @@ export default function Admin_KonfirmasiInvestasi({ {e.title} diff --git a/src/app_modules/admin/investasi/main/table_publish.tsx b/src/app_modules/admin/investasi/main/table_publish.tsx new file mode 100644 index 00000000..f4fbf1ab --- /dev/null +++ b/src/app_modules/admin/investasi/main/table_publish.tsx @@ -0,0 +1,79 @@ +import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin"; +import { MODEL_Investasi } from "@/app_modules/investasi/model/model_investasi"; +import { + Badge, + ActionIcon, + Box, + ScrollArea, + Table, + Tooltip, +} from "@mantine/core"; +import { IconEyeCheck } from "@tabler/icons-react"; +import { IconEdit, IconEye } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; + +export default function TablePublish({ + dataInvestsi, +}: { + dataInvestsi: MODEL_Investasi[]; +}) { + const [investasi, setInvestasi] = useState(dataInvestsi); + const router = useRouter(); + + const tableBody = investasi.map((e) => + e.MasterStatusInvestasi.id === "3" ? ( + + {e.title} + + {e.MasterStatusInvestasi.id === "3" ? ( + + {e.MasterStatusInvestasi.name} + + ) : ( + "-" + )} + + + + + router.push(RouterAdminInvestasi.konfirmasi + `${e.id}`) + } + > + + + + + + ) : ( + "" + ) + ); + + return ( + <> + + + {/* + List Publish + */} + + Publish + + + + + + + + + + {tableBody} +
Nama Proyek InvestasiStatusAksi
+
+
+ + ); +} diff --git a/src/app_modules/admin/investasi/main/table_reject.tsx b/src/app_modules/admin/investasi/main/table_reject.tsx new file mode 100644 index 00000000..eb4f1979 --- /dev/null +++ b/src/app_modules/admin/investasi/main/table_reject.tsx @@ -0,0 +1,77 @@ +import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin"; +import { MODEL_Investasi } from "@/app_modules/investasi/model/model_investasi"; +import { + Badge, + ActionIcon, + Box, + ScrollArea, + Table, + Tooltip, +} from "@mantine/core"; +import { IconEdit } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; + +export default function TableReject({ + dataInvestsi, +}: { + dataInvestsi: MODEL_Investasi[]; +}) { + const [investasi, setInvestasi] = useState(dataInvestsi); + const router = useRouter(); + + const tableBody = investasi.map((e) => + e.MasterStatusInvestasi.id === "4" ? ( + + {e.title} + + {e.MasterStatusInvestasi.id === "4" ? ( + + {e.MasterStatusInvestasi.name} + + ) : ( + "-" + )} + + {e.catatan} + + + + router.push(RouterAdminInvestasi.konfirmasi + `${e.id}`) + } + > + + + + + + ) : ( + "" + ) + ); + + return ( + <> + + + + Reject + + + + + + + + + + + {tableBody} +
Nama Proyek InvestasiStatusCatatanAksi
+
+
+ + ); +} diff --git a/src/app_modules/admin/investasi/main/table_review.tsx b/src/app_modules/admin/investasi/main/table_review.tsx new file mode 100644 index 00000000..15511339 --- /dev/null +++ b/src/app_modules/admin/investasi/main/table_review.tsx @@ -0,0 +1,74 @@ +import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin"; +import { MODEL_Investasi } from "@/app_modules/investasi/model/model_investasi"; +import { + Badge, + ActionIcon, + Box, + ScrollArea, + Table, + Tooltip, +} from "@mantine/core"; +import { IconEdit } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; + +export default function TableReview({ + dataInvestsi, +}: { + dataInvestsi: MODEL_Investasi[]; +}) { + const [investasi, setInvestasi] = useState(dataInvestsi); + const router = useRouter(); + + const tableBody = investasi.map((e) => + e.MasterStatusInvestasi.id === "2" ? ( + + {e.title} + + {e.MasterStatusInvestasi.id === "2" ? ( + + {e.MasterStatusInvestasi.name} + + ) : ( + "-" + )} + + + + + router.push(RouterAdminInvestasi.konfirmasi + `${e.id}`) + } + > + + + + + + ) : ( + "" + ) + ); + return ( + <> + + + + Review + + + + + + + + + + {tableBody} +
Nama Proyek InvestasiStatusAksi
+
+
+ + ); +} diff --git a/src/app_modules/admin/investasi/main/view.tsx b/src/app_modules/admin/investasi/main/view.tsx index e0a1938b..bb31cf64 100644 --- a/src/app_modules/admin/investasi/main/view.tsx +++ b/src/app_modules/admin/investasi/main/view.tsx @@ -19,6 +19,9 @@ import { import { IconEdit } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; +import TablePublish from "./table_publish"; +import TableReview from "./table_review"; +import TableReject from "./table_reject"; export default function Admin_Investasi({ listInvestasi, @@ -59,33 +62,6 @@ export default function Admin_Investasi({ }, ]; - const tableBody = investasi.map((e) => ( - - {e.title} - - {e.MasterStatusInvestasi.id === "3" ? ( - - {e.MasterStatusInvestasi.name} - - ) : ( - - {e.MasterStatusInvestasi.name} - - )} - - - - router.push(RouterAdminInvestasi.konfirmasi + `${e.id}`) - } - > - - - - - )); - return ( <> Investasi @@ -108,67 +84,16 @@ export default function Admin_Investasi({ ))} - - -
- List Investasi -
- - - - - - - - - - {tableBody} -
Nama Proyek InvestasiStatusAksi
-
-
+ + + + {/*
{JSON.stringify(investasi, null, 2)}
*/} ); } -// const listTable = [ -// { -// id: 1, -// status: { -// id: 1, -// name: "Publish", -// }, -// name: "Subway Kuta", -// }, -// { -// id: 2, -// status: { -// id: 2, -// name: "Review", -// }, -// name: "Event MCD", -// }, -// { -// id: 3, -// status: { -// id: 2, -// name: " Review", -// }, -// name: "Villa Batubulan", -// }, -// { -// id: 4, -// status: { -// id: 1, -// name: "Publish", -// }, -// name: "Kost Alif Denpasar", -// }, -// { -// id: 5, -// status: { -// id: 1, -// name: "Publish", -// }, -// name: "Pabrik Rokok Surya Gandum", -// }, -// ]; + + + + + diff --git a/src/app_modules/investasi/fun/fun_edit_investasi.ts b/src/app_modules/investasi/fun/fun_edit_investasi.ts index e549a835..a2e83ed0 100644 --- a/src/app_modules/investasi/fun/fun_edit_investasi.ts +++ b/src/app_modules/investasi/fun/fun_edit_investasi.ts @@ -12,10 +12,10 @@ export default async function funEditInvestasi( formData: FormData, data: MODEL_Investasi ) { - const file = formData.get("file"); + const file = formData?.get("file"); if (file !== "null") { - const file: any = formData.get("file"); + const file: any = formData?.get("file"); const fName = file.name; const fExt = file && file.name ? _.lowerCase(file.name.split(".").pop()) : ""; diff --git a/src/app_modules/investasi/fun/fun_ganti_status.ts b/src/app_modules/investasi/fun/fun_ganti_status.ts index 96038a67..092c6af0 100644 --- a/src/app_modules/investasi/fun/fun_ganti_status.ts +++ b/src/app_modules/investasi/fun/fun_ganti_status.ts @@ -1,6 +1,7 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { RouterAdminInvestasi } from "@/app/lib/router_hipmi/router_admin"; import { revalidatePath } from "next/cache"; export default async function funGantiStatusInvestasi(id: string, val: string) { @@ -16,6 +17,7 @@ export default async function funGantiStatusInvestasi(id: string, val: string) { if(!data) return {status: 400} revalidatePath("/dev/investasi/main/portofolio") + revalidatePath(RouterAdminInvestasi.main_investasi) return { status: 200 diff --git a/src/app_modules/investasi/model/model_investasi.ts b/src/app_modules/investasi/model/model_investasi.ts index 947615ff..6dcc1def 100644 --- a/src/app_modules/investasi/model/model_investasi.ts +++ b/src/app_modules/investasi/model/model_investasi.ts @@ -10,6 +10,7 @@ export interface MODEL_Investasi { updatedAt: Date; authorId: string; imagesId: string; + catatan: string MasterStatusInvestasi: MODEL_Status_investasi; BeritaInvestasi: Model_Berita_Investasi[]; DokumenInvestasi: Model_Dokumen_Investasi[];