From c4b2a47c42763d7327d1616fa0bd036e517b7da2 Mon Sep 17 00:00:00 2001 From: amel Date: Tue, 17 Dec 2024 10:44:14 +0800 Subject: [PATCH 1/3] upd: investasi portofolio Deskripsi: - ganti server action status portofolio menjadi data json No Issues --- .../investasi/main/portofolio/[id]/page.tsx | 8 +++--- .../investasi/_ui/main/ui_portofolio_new.tsx | 27 ++++++++++++++++--- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/app/dev/investasi/main/portofolio/[id]/page.tsx b/src/app/dev/investasi/main/portofolio/[id]/page.tsx index b9307680..4b135800 100644 --- a/src/app/dev/investasi/main/portofolio/[id]/page.tsx +++ b/src/app/dev/investasi/main/portofolio/[id]/page.tsx @@ -1,10 +1,8 @@ -import { investasi_funGetPortofolioByStatusId } from "@/app_modules/investasi/_fun"; -import { Investasi_UiPortofolio, Investasi_UiPortofolioNew } from "@/app_modules/investasi/_ui"; -import getStatusInvestasi from "@/app_modules/investasi/fun/master/get_status_investasi"; +import { Investasi_UiPortofolioNew } from "@/app_modules/investasi/_ui"; export default async function Page({ params }: { params: { id: string } }) { // const statusId = params.id; - const listStatus = await getStatusInvestasi(); + // const listStatus = await getStatusInvestasi(); // const dataPortofolio = await investasi_funGetPortofolioByStatusId({ // page: 1, // statusId: statusId, @@ -17,7 +15,7 @@ export default async function Page({ params }: { params: { id: string } }) { listStatus={listStatus as any} dataPortofolio={dataPortofolio as any} /> */} - + ); } diff --git a/src/app_modules/investasi/_ui/main/ui_portofolio_new.tsx b/src/app_modules/investasi/_ui/main/ui_portofolio_new.tsx index e21c6d28..05b97ad2 100644 --- a/src/app_modules/investasi/_ui/main/ui_portofolio_new.tsx +++ b/src/app_modules/investasi/_ui/main/ui_portofolio_new.tsx @@ -1,14 +1,35 @@ "use client"; import { NEW_RouterInvestasi } from "@/app/lib/router_hipmi/router_investasi"; import { AccentColor, MainColor } from "@/app_modules/_global/color"; -import { MODEL_NEW_DEFAULT_MASTER } from "@/app_modules/model_global/interface"; import { Stack, Tabs } from "@mantine/core"; import { useParams, useRouter } from "next/navigation"; import { Investasi_ViewPortofolioNew } from "../../_view/main/portofolio/view_portofolio_new"; -export function Investasi_UiPortofolioNew({ listStatus }: { listStatus: MODEL_NEW_DEFAULT_MASTER[] }) { +export function Investasi_UiPortofolioNew() { const param = useParams<{ id: string }>(); const router = useRouter(); + const status = [ + { + id: "1", + name: "Publish", + color: "green" + }, + { + id: "2", + name: "Review", + color: "orange" + }, + { + id: "3", + name: "Draft", + color: "yellow" + }, + { + id: "4", + name: "Reject", + color: "red" + } + ] return ( <> @@ -30,7 +51,7 @@ export function Investasi_UiPortofolioNew({ listStatus }: { listStatus: MODEL_NE > - {listStatus.map((e) => ( + {status.map((e) => ( Date: Tue, 17 Dec 2024 10:56:25 +0800 Subject: [PATCH 2/3] fix: donasi Deskripsi: - beranda = salah codingan load saat ada data baru No Issues --- src/app_modules/donasi/main/beranda_new.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app_modules/donasi/main/beranda_new.tsx b/src/app_modules/donasi/main/beranda_new.tsx index 04385702..f6d1b66c 100644 --- a/src/app_modules/donasi/main/beranda_new.tsx +++ b/src/app_modules/donasi/main/beranda_new.tsx @@ -37,7 +37,7 @@ export default function MainDonasiNew() { async function onLoadData({ onPublish }: { onPublish: (val: any) => void }) { setIsLoading(true); const loadData = await apiGetAllDonasi(`?cat=beranda&page=1`) - onPublish(loadData); + onPublish(loadData.data) setIsShowUpdate(false); setIsTriggerDonasiBeranda(false); From c08d72539b1084a5318c1217bb37c891e0a93851 Mon Sep 17 00:00:00 2001 From: amel Date: Tue, 17 Dec 2024 11:56:58 +0800 Subject: [PATCH 3/3] upd : donasi Deskripsi: - update api list donasi galang data semua status - fix code more data No Issues --- src/app/api/new/donasi/route.ts | 25 +++++- .../dev/donasi/main/galang_dana/[id]/page.tsx | 24 +++--- .../component/card_view/card_publish_new.tsx | 2 - .../component/card_view/card_status_new.tsx | 53 ++++++++++++ src/app_modules/donasi/lib/type_donasi.ts | 1 + src/app_modules/donasi/main/beranda_new.tsx | 2 +- .../galang_dana/donasi_galang_dana_new.tsx | 80 +++++++++++++++++++ .../main/galang_dana/ui_galang_dana_new.tsx | 33 +++++--- .../main/portofolio/view_portofolio_new.tsx | 2 +- 9 files changed, 191 insertions(+), 31 deletions(-) create mode 100644 src/app_modules/donasi/component/card_view/card_status_new.tsx create mode 100644 src/app_modules/donasi/main/galang_dana/donasi_galang_dana_new.tsx diff --git a/src/app/api/new/donasi/route.ts b/src/app/api/new/donasi/route.ts index 2782e7de..22d9449d 100644 --- a/src/app/api/new/donasi/route.ts +++ b/src/app/api/new/donasi/route.ts @@ -46,23 +46,44 @@ export async function GET(request: Request) { ..._.omit(v, ["DonasiMaster_Durasi"]), nameDonasiDurasi: v.DonasiMaster_Durasi.name })) - } else { + } else if (kategori == "galang-dana") { const userLoginId = await funGetUserIdByToken() if (userLoginId == null) { return NextResponse.json({ success: false, message: "Gagal mendapatkan data, user id tidak ada" }, { status: 500 }); } - dataFix = await prisma.donasi.findMany({ + const data = await prisma.donasi.findMany({ take: 5, skip: dataSkip, where: { authorId: userLoginId, donasiMaster_StatusDonasiId: status, + active: true, + }, + select: { + id: true, + title: true, + imagesId: true, + target: true, + progres: true, + publishTime: true, + DonasiMaster_Durasi: { + select: { + name: true + } + }, + terkumpul: true, + imageId: true, }, orderBy: { updatedAt: "desc", }, }); + + dataFix = data.map((v: any) => ({ + ..._.omit(v, ["DonasiMaster_Durasi"]), + nameDonasiDurasi: v.DonasiMaster_Durasi.name + })) } return NextResponse.json({ success: true, message: "Berhasil mendapatkan data", data: dataFix }, { status: 200 }); diff --git a/src/app/dev/donasi/main/galang_dana/[id]/page.tsx b/src/app/dev/donasi/main/galang_dana/[id]/page.tsx index b4ff467c..c3cfa869 100644 --- a/src/app/dev/donasi/main/galang_dana/[id]/page.tsx +++ b/src/app/dev/donasi/main/galang_dana/[id]/page.tsx @@ -1,27 +1,23 @@ -import { GalangDanaDonasiNew, 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"; +import { GalangDanaDonasiNew } from "@/app_modules/donasi"; export default async function Page({ params }: { params: { id: string } }) { - const statusId = params.id; + // const statusId = params.id; - const listStatus = await donasi_funMasterStatusDonasi(); - const dataDonasi = await donasi_funGetAllStatusById({ - page: 1, - statusId: statusId, - }); + // const listStatus = await donasi_funMasterStatusDonasi(); + // const dataDonasi = await donasi_funGetAllStatusById({ + // page: 1, + // statusId: statusId, + // }); return ( <> - + /> */} - - {/* NANTI AJA LANJUT -- KEJAR TAYANG :) */} - {/* */} + ); } diff --git a/src/app_modules/donasi/component/card_view/card_publish_new.tsx b/src/app_modules/donasi/component/card_view/card_publish_new.tsx index ab84a3a2..885fa359 100644 --- a/src/app_modules/donasi/component/card_view/card_publish_new.tsx +++ b/src/app_modules/donasi/component/card_view/card_publish_new.tsx @@ -13,8 +13,6 @@ export default function ComponentDonasi_CardPublishNew({ data }: { data: any; }) <> { - // DELSOON - console.log(RouterDonasi.detail_main + `${data.id}`) router.push(RouterDonasi.detail_main + `${data.id}`) }} > diff --git a/src/app_modules/donasi/component/card_view/card_status_new.tsx b/src/app_modules/donasi/component/card_view/card_status_new.tsx new file mode 100644 index 00000000..0d2d888e --- /dev/null +++ b/src/app_modules/donasi/component/card_view/card_status_new.tsx @@ -0,0 +1,53 @@ +import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi"; +import { ComponentGlobal_CardStyles, ComponentGlobal_LoadImageCustom } from "@/app_modules/_global/component"; +import { Grid, Stack, Text } from "@mantine/core"; +import { useParams, useRouter } from "next/navigation"; +import { IDataAllDonasi } from "../../lib/type_donasi"; + +export function ComponentDonasi_CardStatusNew({ data }: { data: IDataAllDonasi; }) { + const router = useRouter(); + const param = useParams<{ id: string }>(); + + function goToDetail() { + if (param.id == "2") { + router.push(RouterDonasi.detail_review + `${data.id}`); + } else if (param.id == "3") { + router.push(RouterDonasi.detail_draft + `${data.id}`); + } else if (param.id == "4") { + router.push(RouterDonasi.detail_reject + `${data.id}`); + } + } + + return ( + <> + { goToDetail() }} > + + + + + + + + + {data.title} + + + Target Dana + + Rp.{" "} + {new Intl.NumberFormat("id-ID", { + maximumFractionDigits: 10, + }).format(+data.target)} + + + + + + + + + ); +} diff --git a/src/app_modules/donasi/lib/type_donasi.ts b/src/app_modules/donasi/lib/type_donasi.ts index fabb23d5..2931b59f 100644 --- a/src/app_modules/donasi/lib/type_donasi.ts +++ b/src/app_modules/donasi/lib/type_donasi.ts @@ -5,5 +5,6 @@ export interface IDataAllDonasi { publishTime: Date progres: string terkumpul: string + target: string nameDonasiDurasi: string } \ No newline at end of file diff --git a/src/app_modules/donasi/main/beranda_new.tsx b/src/app_modules/donasi/main/beranda_new.tsx index f6d1b66c..a8c4dde1 100644 --- a/src/app_modules/donasi/main/beranda_new.tsx +++ b/src/app_modules/donasi/main/beranda_new.tsx @@ -117,7 +117,7 @@ export default function MainDonasiNew() { setActivePage((val) => val + 1); - return loadData; + return loadData.data; }} > {(item) => ( diff --git a/src/app_modules/donasi/main/galang_dana/donasi_galang_dana_new.tsx b/src/app_modules/donasi/main/galang_dana/donasi_galang_dana_new.tsx new file mode 100644 index 00000000..d4d81c42 --- /dev/null +++ b/src/app_modules/donasi/main/galang_dana/donasi_galang_dana_new.tsx @@ -0,0 +1,80 @@ +"use client"; +import ComponentGlobal_IsEmptyData from "@/app_modules/_global/component/is_empty_data"; +import ComponentGlobal_Loader from "@/app_modules/_global/component/loader"; +import { Box, Center } from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; +import _ from "lodash"; +import { ScrollOnly } from "next-scroll-loader"; +import { useParams } from "next/navigation"; +import { useState } from "react"; +import ComponentDonasi_CardPublishNew from "../../component/card_view/card_publish_new"; +import SkeletonDonasi from "../../component/skeleton_donasi"; +import { apiGetAllDonasi } from "../../lib/api_donasi"; +import { IDataAllDonasi } from "../../lib/type_donasi"; +import { ComponentDonasi_CardStatusNew } from "../../component/card_view/card_status_new"; + +export default function Donasi_ViewGalangDanaNew() { + const param = useParams<{ id: string }>();; + const [data, setData] = useState([]); + const [activePage, setActivePage] = useState(1); + const [loading, setLoading] = useState(true) + + async function getDataGalangDana() { + try { + setLoading(true) + const response = await apiGetAllDonasi(`?cat=galang-dana&status=${param.id}&page=1`) + if (response.success) { + setData(response.data); + } + } catch (error) { + console.error(error); + } finally { + setLoading(false) + } + } + + + useShallowEffect(() => { + getDataGalangDana() + }, []); + + return ( + <> + { + loading ? + : + _.isEmpty(data) ? ( + + ) : ( + + ( +
+ +
+ )} + data={data} + setData={setData} + moreData={async () => { + const pageNew = activePage + 1 + const loadData = await apiGetAllDonasi(`?cat=galang-dana&status=${param.id}&page=${pageNew}`) + setActivePage((val) => val + 1); + + return loadData.data; + }} + > + { + param.id == "1" ? + (item) => () + : + (item) => () + + } +
+
+ ) + } + + ); +} diff --git a/src/app_modules/donasi/main/galang_dana/ui_galang_dana_new.tsx b/src/app_modules/donasi/main/galang_dana/ui_galang_dana_new.tsx index dea0613a..1aa553df 100644 --- a/src/app_modules/donasi/main/galang_dana/ui_galang_dana_new.tsx +++ b/src/app_modules/donasi/main/galang_dana/ui_galang_dana_new.tsx @@ -1,13 +1,31 @@ "use client"; import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi"; import { AccentColor, MainColor, } from "@/app_modules/_global/color/color_pallet"; -import { MODEL_NEW_DEFAULT_MASTER } from "@/app_modules/model_global/interface"; import { Stack, Tabs } from "@mantine/core"; import { useParams, useRouter } from "next/navigation"; +import Donasi_ViewGalangDanaNew from "./donasi_galang_dana_new"; -export default function GalangDanaDonasiNew({listStatus,}: {listStatus: MODEL_NEW_DEFAULT_MASTER[]; }) { +export default function GalangDanaDonasiNew() { const router = useRouter(); const param = useParams<{ id: string }>(); + const status = [ + { + id: "1", + name: "Publish" + }, + { + id: "2", + name: "Review" + }, + { + id: "3", + name: "Draft" + }, + { + id: "4", + name: "Reject" + } + ] async function onChangeStatus({ statusId }: { statusId: string }) { router.replace(RouterDonasi.status_galang_dana({ id: statusId })); @@ -34,7 +52,7 @@ export default function GalangDanaDonasiNew({listStatus,}: {listStatus: MODEL_NE > - {listStatus.map((e, i) => ( + {status.map((e, i) => ( ))} - - {/* {param.id == "1" && } - - {param.id == "2" && } - - {param.id == "3" && } - - {param.id == "4" && } */} + diff --git a/src/app_modules/investasi/_view/main/portofolio/view_portofolio_new.tsx b/src/app_modules/investasi/_view/main/portofolio/view_portofolio_new.tsx index 417c0431..5c0a76c0 100644 --- a/src/app_modules/investasi/_view/main/portofolio/view_portofolio_new.tsx +++ b/src/app_modules/investasi/_view/main/portofolio/view_portofolio_new.tsx @@ -61,7 +61,7 @@ export function Investasi_ViewPortofolioNew() { const loadData = await apiGetAllInvestasi(`?cat=portofolio&status=${param.id}&page=${pageNew}`) setActivePage((val) => val + 1); - return loadData; + return loadData.data; }} > {