diff --git a/src/app/api/new/donasi/master/route.ts b/src/app/api/new/donasi/master/route.ts
new file mode 100644
index 00000000..f42e4ab5
--- /dev/null
+++ b/src/app/api/new/donasi/master/route.ts
@@ -0,0 +1,33 @@
+import { prisma } from "@/app/lib";
+import { NextResponse } from "next/server";
+export const dynamic = "force-dynamic";
+
+
+// GET ALL DATA MASTER UNTUK DONASI
+export async function GET(request: Request) {
+ try {
+ let dataFix
+ const { searchParams } = new URL(request.url)
+ const kategori = searchParams.get("cat")
+
+ if (kategori == "kategori") {
+ dataFix = await prisma.donasiMaster_Kategori.findMany({
+ orderBy: {
+ createdAt: "asc",
+ },
+ where: {
+ active: true,
+ }
+ })
+ } else if (kategori == "durasi") {
+ dataFix = await prisma.donasiMaster_Durasi.findMany()
+ }
+
+ return NextResponse.json({ success: true, message: "Berhasil mendapatkan data", data: dataFix }, { status: 200 });
+
+ }
+ catch (error) {
+ console.error(error);
+ return NextResponse.json({ success: false, message: "Gagal mendapatkan data, coba lagi nanti ", reason: (error as Error).message, }, { status: 500 });
+ }
+}
\ No newline at end of file
diff --git a/src/app/dev/donasi/create/create_donasi/page.tsx b/src/app/dev/donasi/create/create_donasi/page.tsx
index 2202dfdf..aef24090 100644
--- a/src/app/dev/donasi/create/create_donasi/page.tsx
+++ b/src/app/dev/donasi/create/create_donasi/page.tsx
@@ -1,14 +1,12 @@
-import { CreateDonasi } from "@/app_modules/donasi";
-import {
- Donasi_getMasterDurasi,
- Donasi_getMasterKategori,
-} from "@/app_modules/donasi/fun";
+import { CreateDonasiNew } from "@/app_modules/donasi";
+
export default async function Page() {
- const masterKategori = await Donasi_getMasterKategori();
- const masterDurasi = await Donasi_getMasterDurasi();
+ // const masterKategori = await Donasi_getMasterKategori();
+ // const masterDurasi = await Donasi_getMasterDurasi();
return (
-
+ //
+
);
}
diff --git a/src/app_modules/donasi/create/create_cerita_penggalang.tsx b/src/app_modules/donasi/create/create_cerita_penggalang.tsx
index 046a4cef..ae5defbd 100644
--- a/src/app_modules/donasi/create/create_cerita_penggalang.tsx
+++ b/src/app_modules/donasi/create/create_cerita_penggalang.tsx
@@ -272,7 +272,7 @@ export default function CreateCeritaPenggalangDonasi({
},
}}
withAsterisk
- placeholder="Maskuan nomor rekening"
+ placeholder="Masukan nomor rekening"
label="Nomor rekening"
maxLength={100}
onChange={(val) => {
diff --git a/src/app_modules/donasi/create/create_donasi_new.tsx b/src/app_modules/donasi/create/create_donasi_new.tsx
new file mode 100644
index 00000000..85389da1
--- /dev/null
+++ b/src/app_modules/donasi/create/create_donasi_new.tsx
@@ -0,0 +1,264 @@
+"use client";
+import { DIRECTORY_ID } from "@/app/lib";
+import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
+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 { funGlobal_UploadToStorage } from "@/app_modules/_global/fun";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal";
+import { AspectRatio, Button, FileButton, Group, Image, Select, Stack, Text, TextInput, } from "@mantine/core";
+import { IconCamera, IconUpload } from "@tabler/icons-react";
+import { useAtom } from "jotai";
+import _ from "lodash";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import Donasi_funCreateTemporary from "../fun/create/fun_create_donasi_temporary";
+import { gs_donasi_tabs_posting } from "../global_state";
+import { apiGetMasterDonasi } from "../lib/api_donasi";
+import { useShallowEffect } from "@mantine/hooks";
+
+export default function CreateDonasiNew() {
+ const router = useRouter();
+ const [loadingMaster, setLoadingMaster] = useState(true)
+ const [isLoading, setLoading] = useState(false);
+ const [kategori, setKategori] = useState([]);
+ const [durasi, setDurasi] = useState([]);
+ const [data, setData] = useState({
+ kategoriId: "",
+ title: "",
+ target: "",
+ durasiId: "",
+ });
+ const [targetDana, setTargetDana] = useState("");
+ const [file, setFile] = useState(null);
+ const [img, setImg] = useState();
+ const [tabsPostingDonasi, setTabsPostingDonasi] = useAtom(
+ gs_donasi_tabs_posting
+ );
+
+ async function onGetMaster() {
+ try {
+ setLoadingMaster(true)
+ const responseKategori = await apiGetMasterDonasi("?cat=kategori")
+ const responseDurasi = await apiGetMasterDonasi("?cat=durasi")
+ if (responseKategori.success) {
+ setKategori(responseKategori.data)
+ }
+ if (responseDurasi.success) {
+ setDurasi(responseDurasi.data)
+ }
+ } catch (error) {
+ console.log(error);
+ } finally {
+ setLoadingMaster(false)
+ }
+ }
+
+ useShallowEffect(() => {
+ onGetMaster()
+ }, [])
+
+ async function onCreate() {
+ const body = {
+ donasiMaster_KategoriId: data.kategoriId,
+ donasiMaster_DurasiId: data.durasiId,
+ title: data.title,
+ target: targetDana,
+ };
+
+ if (_.values(body).includes(""))
+ return ComponentGlobal_NotifikasiPeringatan("Lengkapin Data");
+
+ try {
+ setLoading(true);
+
+ const uploadImage = await funGlobal_UploadToStorage({
+ file: file as File,
+ dirId: DIRECTORY_ID.donasi_image,
+ });
+ if (!uploadImage.success) {
+ setLoading(false);
+ return ComponentGlobal_NotifikasiPeringatan("Gagal upload file gambar");
+ }
+
+ const res = await Donasi_funCreateTemporary({
+ data: body as any,
+ fileId: uploadImage.data.id,
+ });
+ if (res.status === 201) {
+ setTabsPostingDonasi("Review");
+ router.push(RouterDonasi.create_cerita_penggalang + `${res.donasiId}`);
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ setLoading(false);
+ }
+ } catch (error) {
+ console.log(error);
+ }
+ }
+
+ return (
+ <>
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/donasi/index.ts b/src/app_modules/donasi/index.ts
index 62da8ec0..f5d776c2 100644
--- a/src/app_modules/donasi/index.ts
+++ b/src/app_modules/donasi/index.ts
@@ -5,6 +5,7 @@ import GalangDanaDonasi from "./main/galang_dana/ui_galang_dana";
import GalangDanaDonasiNew from "./main/galang_dana/ui_galang_dana_new";
import DonasiSayaDonasi from "./main/donasi_saya";
import CreateDonasi from "./create/create_donasi";
+import CreateDonasiNew from "./create/create_donasi_new";
import LayoutCreateDonasi from "./create/layout";
import DetailMainDonasi from "./detail/detail_main";
import LayoutDetailMainDonasi from "./detail/detail_main/layout";
@@ -103,4 +104,5 @@ export {
LayoutDonasi_EditRekening,
MainDonasiNew,
GalangDanaDonasiNew,
+ CreateDonasiNew
};
diff --git a/src/app_modules/donasi/lib/api_donasi.ts b/src/app_modules/donasi/lib/api_donasi.ts
index 36e2f5f6..04f661f3 100644
--- a/src/app_modules/donasi/lib/api_donasi.ts
+++ b/src/app_modules/donasi/lib/api_donasi.ts
@@ -1,4 +1,9 @@
export const apiGetAllDonasi = async (path?: string) => {
const response = await fetch(`/api/new/donasi${(path) ? path : ''}`)
return await response.json().catch(() => null)
+}
+
+export const apiGetMasterDonasi = async (path?: string) => {
+ const response = await fetch(`/api/new/donasi/master${(path) ? path : ''}`)
+ return await response.json().catch(() => null)
}
\ No newline at end of file