From a798f9a3bc9996811ca55e70ea407297e1f939d8 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Wed, 30 Oct 2024 15:45:40 +0800 Subject: [PATCH] Fix: Donasi Deskripsi: - Fix router status donasi - Fix hapus donasi --- .../dev/donasi/main/galang_dana/[id]/page.tsx | 23 ++++ src/app/dev/donasi/main/galang_dana/page.tsx | 28 ----- src/app/dev/donasi/main/layout.tsx | 12 +- src/app/lib/router_hipmi/router_donasi.ts | 2 +- .../comp_button_delete_donasi_by_id.tsx | 2 +- .../create/create_cerita_penggalang.tsx | 13 +- .../donasi/detail/detail_draft/index.tsx | 100 ++++++--------- .../donasi/detail/detail_reject/index.tsx | 88 ++++++++----- .../donasi/detail/detail_review/index.tsx | 43 +++++-- .../donasi/edit/edit_donasi/index.tsx | 21 ++-- .../fun/get/status/get_all_by_status_id.ts | 59 +++++++++ src/app_modules/donasi/fun/index.ts | 2 + .../donasi/fun/master/get_status_donasi.ts | 9 ++ .../donasi/fun/update/fun_ganti_status.ts | 7 +- .../fun/update/fun_update_cerita_donasi.ts | 2 +- .../donasi/fun/update/fun_update_donasi.ts | 2 +- .../main/galang_dana/ui_galang_dana.tsx | 119 ++++++++++-------- src/app_modules/donasi/main/layout.tsx | 10 +- src/app_modules/investasi/create/view.tsx | 10 +- .../notifikasi/component/path/donasi.ts | 11 +- 20 files changed, 328 insertions(+), 235 deletions(-) create mode 100644 src/app/dev/donasi/main/galang_dana/[id]/page.tsx delete mode 100644 src/app/dev/donasi/main/galang_dana/page.tsx create mode 100644 src/app_modules/donasi/fun/get/status/get_all_by_status_id.ts create mode 100644 src/app_modules/donasi/fun/master/get_status_donasi.ts diff --git a/src/app/dev/donasi/main/galang_dana/[id]/page.tsx b/src/app/dev/donasi/main/galang_dana/[id]/page.tsx new file mode 100644 index 00000000..e663633a --- /dev/null +++ b/src/app/dev/donasi/main/galang_dana/[id]/page.tsx @@ -0,0 +1,23 @@ +import { PostingDonasi } from "@/app_modules/donasi"; +import { donasi_funGetAllStatusById } from "@/app_modules/donasi/fun"; +import { donasi_funMasterStatusDonasi } from "@/app_modules/donasi/fun/master/get_status_donasi"; + +export default async function Page({ params }: { params: { id: string } }) { + const statusId = params.id; + + const listStatus = await donasi_funMasterStatusDonasi(); + const dataDonasi = await donasi_funGetAllStatusById({ + page: 1, + statusId: statusId, + }); + + return ( + <> + + + ); +} diff --git a/src/app/dev/donasi/main/galang_dana/page.tsx b/src/app/dev/donasi/main/galang_dana/page.tsx deleted file mode 100644 index 26f936c1..00000000 --- a/src/app/dev/donasi/main/galang_dana/page.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { PostingDonasi } from "@/app_modules/donasi"; -import { donasi_funGetAllStatusDraft } from "@/app_modules/donasi/fun/get/status/get_all_status_draft"; -import { donasi_funGetAllStatusPublish } from "@/app_modules/donasi/fun/get/status/get_all_status_publish"; -import { donasi_funGetAllStatusReject } from "@/app_modules/donasi/fun/get/status/get_all_status_reject"; -import { donasi_funGetAllStatusReview } from "@/app_modules/donasi/fun/get/status/get_all_status_review"; - -export default async function Page() { - const listPublish = await donasi_funGetAllStatusPublish({ page: 1 }); - const listReview = await donasi_funGetAllStatusReview({ page: 1 }); - const listDraft = await donasi_funGetAllStatusDraft({ page: 1 }); - const listReject = await donasi_funGetAllStatusReject({ page: 1 }); - - // console.log(listPublish, "ini publish") - // console.log(listReview, "ini review") - // console.log(listDraft, "ini draft") - // console.log(listReject, "ini reject") - - return ( - <> - - - ); -} diff --git a/src/app/dev/donasi/main/layout.tsx b/src/app/dev/donasi/main/layout.tsx index 2a1803f9..cfe3f834 100644 --- a/src/app/dev/donasi/main/layout.tsx +++ b/src/app/dev/donasi/main/layout.tsx @@ -1,6 +1,4 @@ -import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { LayoutDonasi } from "@/app_modules/donasi"; -import { Donasi_getNotifByUserId } from "@/app_modules/donasi/fun/get/get_notif_by_user_id"; import React from "react"; export default async function Layout({ @@ -8,17 +6,9 @@ export default async function Layout({ }: { children: React.ReactNode; }) { - const userLoginId = await funGetUserIdByToken(); - - const isRead = await Donasi_getNotifByUserId(userLoginId).then((res: any) => - res.map((val: any) => val.isRead) - ); - return ( <> - - {children} - + {children} ); } diff --git a/src/app/lib/router_hipmi/router_donasi.ts b/src/app/lib/router_hipmi/router_donasi.ts index a213ae10..4042ce42 100644 --- a/src/app/lib/router_hipmi/router_donasi.ts +++ b/src/app/lib/router_hipmi/router_donasi.ts @@ -9,7 +9,7 @@ export const RouterDonasi = { //main main_beranda: "/dev/donasi/main/beranda", - main_galang_dana: "/dev/donasi/main/galang_dana", + status_galang_dana: ({ id }: { id: string }) => `/dev/donasi/main/galang_dana/${id}`, main_donasi_saya: "/dev/donasi/main/donasi_saya", // create diff --git a/src/app_modules/donasi/component/button/comp_button_delete_donasi_by_id.tsx b/src/app_modules/donasi/component/button/comp_button_delete_donasi_by_id.tsx index 8072067e..6ec7bb58 100644 --- a/src/app_modules/donasi/component/button/comp_button_delete_donasi_by_id.tsx +++ b/src/app_modules/donasi/component/button/comp_button_delete_donasi_by_id.tsx @@ -48,7 +48,7 @@ export function Donasi_ComponentButtonDeleteDonasiById({ ComponentGlobal_NotifikasiPeringatan("Gagal hapus gambar "); } - router.push(RouterDonasi.main_galang_dana); + router.replace(RouterDonasi.status_galang_dana({ id: "3" })); setTabsPostingDonasi("Draft"); ComponentGlobal_NotifikasiBerhasil(del.message); } else { diff --git a/src/app_modules/donasi/create/create_cerita_penggalang.tsx b/src/app_modules/donasi/create/create_cerita_penggalang.tsx index 0ebc38a6..c9099cfc 100644 --- a/src/app_modules/donasi/create/create_cerita_penggalang.tsx +++ b/src/app_modules/donasi/create/create_cerita_penggalang.tsx @@ -6,9 +6,7 @@ import { MainColor } from "@/app_modules/_global/color/color_pallet"; import { ComponentGlobal_BoxUploadImage } from "@/app_modules/_global/component"; import ComponentGlobal_BoxInformation from "@/app_modules/_global/component/box_information"; import ComponentGlobal_InputCountDown from "@/app_modules/_global/component/input_countdown"; -import { - funGlobal_UploadToStorage -} from "@/app_modules/_global/fun"; +import { funGlobal_UploadToStorage } from "@/app_modules/_global/fun"; import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global"; import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global/notifikasi_berhasil"; import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal"; @@ -43,10 +41,6 @@ export default function CreateCeritaPenggalangDonasi({ }) { const router = useRouter(); const [isLoading, setLoading] = useState(false); - - const [tabsPostingDonasi, setTabsPostingDonasi] = useAtom( - gs_donasi_tabs_posting - ); const [donasiHotMenu, setDonasiHotMenu] = useAtom(gs_donasi_hot_menu); const [data, setData] = useState({ @@ -116,10 +110,11 @@ export default function CreateCeritaPenggalangDonasi({ count: 1, }) ); - setTabsPostingDonasi("Review"); setDonasiHotMenu(1); ComponentGlobal_NotifikasiBerhasil(res.message); - router.push(RouterDonasi.main_galang_dana, { scroll: false }); + router.push(RouterDonasi.status_galang_dana({ id: "2" }), { + scroll: false, + }); } setLoading(false); } else { diff --git a/src/app_modules/donasi/detail/detail_draft/index.tsx b/src/app_modules/donasi/detail/detail_draft/index.tsx index b114be0c..20761adb 100644 --- a/src/app_modules/donasi/detail/detail_draft/index.tsx +++ b/src/app_modules/donasi/detail/detail_draft/index.tsx @@ -3,35 +3,36 @@ import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi"; import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global/notifikasi_berhasil"; import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global/notifikasi_peringatan"; +import { UIGlobal_Modal } from "@/app_modules/_global/ui"; import notifikasiToAdmin_funCreate from "@/app_modules/notifikasi/fun/create/create_notif_to_admin"; import mqtt_client from "@/util/mqtt_client"; import { Button, Group, Stack } from "@mantine/core"; -import { useAtom } from "jotai"; import { useRouter } from "next/navigation"; import { useState } from "react"; +import { Donasi_ComponentButtonDeleteDonasiById } from "../../component"; import ComponentDonasi_DetailDataGalangDana from "../../component/detail_galang_dana/detail_data_donasi"; import ComponentDonasi_CeritaPenggalangMain from "../../component/detail_main/cerita_penggalang"; import { Donasi_funGantiStatus } from "../../fun/update/fun_ganti_status"; -import { gs_donasi_tabs_posting } from "../../global_state"; import { MODEL_DONASI } from "../../model/interface"; -import { Donasi_ComponentButtonDeleteDonasiById } from "../../component"; export default function DetailDraftDonasi({ dataDonasi, }: { dataDonasi: MODEL_DONASI; }) { + const [data, setData] = useState(dataDonasi); + return ( <> - - + + - + @@ -45,12 +46,10 @@ function ButtonAjukanPenggalangan({ dataDonasi: MODEL_DONASI; }) { const router = useRouter(); - const [tabsPostingDonasi, setTabsPostingDonasi] = useAtom( - gs_donasi_tabs_posting - ); const [isLoading, setLoading] = useState(false); + const [openModal, setOpenModal] = useState(false); - async function onCLick() { + async function onChangeStatus() { const res = await Donasi_funGantiStatus(dataDonasi.id, "2"); if (res.status === 200) { const dataNotif = { @@ -70,9 +69,8 @@ function ButtonAjukanPenggalangan({ mqtt_client.publish("ADMIN", JSON.stringify({ count: 1 })); setLoading(true); - setTabsPostingDonasi("Review"); ComponentGlobal_NotifikasiBerhasil("Berhasil Diajukan"); - router.push(RouterDonasi.main_galang_dana); + router.push(RouterDonasi.status_galang_dana({ id: "2" })); } } else { ComponentGlobal_NotifikasiPeringatan(res.message); @@ -81,60 +79,36 @@ function ButtonAjukanPenggalangan({ return ( <> + + setOpenModal(false)} + buttonKiri={ + + } + buttonKanan={ + + } + /> ); } - -// function DetailDonasi({ dataDonasi }: { dataDonasi: MODEL_DONASI }) { -// const [donasi, setDonasi] = useState(dataDonasi); -// useShallowEffect(() => { -// setDonasi(dataDonasi); -// }, [dataDonasi]); -// return ( -// <> -// -// -// -// -// Foto -// -// -// -// {donasi.title} -// -// Durasi: {donasi.DonasiMaster_Durasi.name} hari -// -// -// -// -// -// Dana dibutuhkan -// -// <TampilanRupiahDonasi nominal={+donasi.target} /> -// -// -// -// Kategori -// -// {donasi.DonasiMaster_Ketegori.name} -// -// -// -// -// -// -// -// ); -// } diff --git a/src/app_modules/donasi/detail/detail_reject/index.tsx b/src/app_modules/donasi/detail/detail_reject/index.tsx index e8808726..88df30d8 100644 --- a/src/app_modules/donasi/detail/detail_reject/index.tsx +++ b/src/app_modules/donasi/detail/detail_reject/index.tsx @@ -2,23 +2,21 @@ import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi"; import ComponentGlobal_BoxInformation from "@/app_modules/_global/component/box_information"; +import { funGlobal_DeleteFileById } from "@/app_modules/_global/fun"; +import { + ComponentGlobal_NotifikasiBerhasil, + ComponentGlobal_NotifikasiGagal, + ComponentGlobal_NotifikasiPeringatan, +} from "@/app_modules/_global/notif_global"; import UIGlobal_Modal from "@/app_modules/_global/ui/ui_modal"; -import { Button, Group, Paper, Spoiler, Stack, Title } from "@mantine/core"; -import { useAtom } from "jotai"; +import { Button, Group, Stack } from "@mantine/core"; import { useRouter } from "next/navigation"; import { useState } from "react"; import ComponentDonasi_DetailDataGalangDana from "../../component/detail_galang_dana/detail_data_donasi"; import ComponentDonasi_CeritaPenggalangMain from "../../component/detail_main/cerita_penggalang"; import { Donasi_funDeleteDonasiById } from "../../fun/delete/fin_delete_donasi_by_id"; import { Donasi_funGantiStatus } from "../../fun/update/fun_ganti_status"; -import { gs_donasi_tabs_posting } from "../../global_state"; import { MODEL_DONASI } from "../../model/interface"; -import { - ComponentGlobal_NotifikasiBerhasil, - ComponentGlobal_NotifikasiGagal, - ComponentGlobal_NotifikasiPeringatan, -} from "@/app_modules/_global/notif_global"; -import { funGlobal_DeleteFileById } from "@/app_modules/_global/fun"; export default function DetailRejectDonasi({ dataReject, @@ -30,7 +28,7 @@ export default function DetailRejectDonasi({ const [data, setData] = useState(dataReject); return ( <> - + @@ -53,33 +51,35 @@ function ButtonAction({ fileIdImageCerita: string; imageId: string; }) { - const [tabsPostingDonasi, setTabsPostingDonasi] = useAtom( - gs_donasi_tabs_posting - ); const router = useRouter(); - // const [opened, { open, close }] = useDisclosure(false); - const [openModal, setOpenModal] = useState(false); + const [openModaEdit, setOpenModalEdit] = useState(false); + const [openModalDelete, setOpenModalDelete] = useState(false); + const [isLoadingEdit, setLoadingEdit] = useState(false); + const [isLoadingDelete, setLoadingDelete] = useState(false); - async function onCLick() { + async function onChangeStatus() { await Donasi_funGantiStatus(donasiId, "3").then((res) => { if (res.status === 200) { + setLoadingEdit(true); ComponentGlobal_NotifikasiBerhasil(res.message); - router.push(RouterDonasi.main_galang_dana); + router.replace(RouterDonasi.status_galang_dana({ id: "3" })); } else { ComponentGlobal_NotifikasiGagal(res.message); + setLoadingEdit(true); } }); - setTabsPostingDonasi("Draft"); } async function onDelete() { const del = await Donasi_funDeleteDonasiById(donasiId); if (del.status === 200) { + setLoadingDelete(true); const deleteImageDonasi = await funGlobal_DeleteFileById({ fileId: imageId as any, }); if (!deleteImageDonasi.success) { ComponentGlobal_NotifikasiPeringatan("Gagal hapus gambar "); + setLoadingDelete(false); } const deleteImageCerita = await funGlobal_DeleteFileById({ @@ -88,13 +88,15 @@ function ButtonAction({ if (!deleteImageCerita.success) { ComponentGlobal_NotifikasiPeringatan("Gagal hapus gambar "); + setLoadingDelete(false); } - router.push(RouterDonasi.main_galang_dana); - setTabsPostingDonasi("Reject"); + router.replace(RouterDonasi.status_galang_dana({ id: "4" })); ComponentGlobal_NotifikasiBerhasil(del.message); + setLoadingDelete(false); } else { ComponentGlobal_NotifikasiGagal(del.message); + setLoadingDelete(false); } } return ( @@ -104,31 +106,61 @@ function ButtonAction({ radius={"xl"} bg={"orange"} color="orange" - onClick={() => onCLick()} + onClick={() => setOpenModalEdit(true)} > - Edit Donasi + Edit Kembali + {/* MODAL EDIT */} setOpenModal(false)} + title={"Anda yakin ingin mengedit donasi ini ?"} + opened={openModaEdit} + close={() => setOpenModalEdit(false)} buttonKiri={ - } buttonKanan={ - + } + /> + + {/* HAPUS */} + setOpenModalDelete(false)} + buttonKiri={ + + } + buttonKanan={ + } diff --git a/src/app_modules/donasi/detail/detail_review/index.tsx b/src/app_modules/donasi/detail/detail_review/index.tsx index d821a714..c6b471ff 100644 --- a/src/app_modules/donasi/detail/detail_review/index.tsx +++ b/src/app_modules/donasi/detail/detail_review/index.tsx @@ -14,6 +14,7 @@ import { gs_donasi_tabs_posting } from "../../global_state"; import { MODEL_DONASI } from "../../model/interface"; import notifikasiToAdmin_funCreate from "@/app_modules/notifikasi/fun/create/create_notif_to_admin"; import mqtt_client from "@/util/mqtt_client"; +import { UIGlobal_Modal } from "@/app_modules/_global/ui"; export default function DetailReviewDonasi({ dataDonasi, @@ -24,7 +25,7 @@ export default function DetailReviewDonasi({ return ( <> - + @@ -35,11 +36,9 @@ export default function DetailReviewDonasi({ function ButtonBatalReview({ donasi }: { donasi: MODEL_DONASI }) { const router = useRouter(); const [isLoading, setLoading] = useState(false); - const [tabsPostingDonasi, setTabsPostingDonasi] = useAtom( - gs_donasi_tabs_posting - ); + const [openModal, setOpenModal] = useState(false); - async function onCLick() { + async function onChangeStatus() { const res = await Donasi_funGantiStatus(donasi.id, "3"); if (res.status === 200) { const dataNotif = { @@ -50,7 +49,7 @@ function ButtonBatalReview({ donasi }: { donasi: MODEL_DONASI }) { kategoriApp: "DONASI", title: "Membatalkan review", }; - + const notif = await notifikasiToAdmin_funCreate({ data: dataNotif as any, }); @@ -58,10 +57,9 @@ function ButtonBatalReview({ donasi }: { donasi: MODEL_DONASI }) { if (notif.status === 201) { mqtt_client.publish("ADMIN", JSON.stringify({ count: 1 })); - setTabsPostingDonasi("Draft"); ComponentGlobal_NotifikasiBerhasil("Berhasil Dibatalkan"); setLoading(true); - router.push(RouterDonasi.main_galang_dana); + router.push(RouterDonasi.status_galang_dana({ id: "3" })); } } else { ComponentGlobal_NotifikasiPeringatan(res.message); @@ -70,18 +68,41 @@ function ButtonBatalReview({ donasi }: { donasi: MODEL_DONASI }) { return ( <> + + setOpenModal(false)} + buttonKiri={ + + } + buttonKanan={ + + } + /> ); } diff --git a/src/app_modules/donasi/edit/edit_donasi/index.tsx b/src/app_modules/donasi/edit/edit_donasi/index.tsx index a5878f23..42398608 100644 --- a/src/app_modules/donasi/edit/edit_donasi/index.tsx +++ b/src/app_modules/donasi/edit/edit_donasi/index.tsx @@ -27,7 +27,7 @@ import { TextInput, } from "@mantine/core"; import { IconCamera } from "@tabler/icons-react"; -import _ from "lodash"; +import _, { set } from "lodash"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { Donasi_funUpdateDonasi } from "../../fun/update/fun_update_donasi"; @@ -49,6 +49,7 @@ export default function EditDonasi({ const [durasi, setDurasi] = useState(masterDurasi); const [file, setFile] = useState(null); const [updateImage, setUpdateImage] = useState(); + const [newTarget, setNewTarget] = useState(""); async function onUpdate() { setLoading(true); @@ -114,7 +115,7 @@ export default function EditDonasi({ return ( <> - +