diff --git a/push-staging.wibu b/push-staging.wibu
deleted file mode 100644
index dd700a4b..00000000
--- a/push-staging.wibu
+++ /dev/null
@@ -1,3 +0,0 @@
-git add -A
-git commit -m "data auto"
-git push origin bagas/10-feb-25
diff --git a/run.dev b/run.dev
new file mode 100644
index 00000000..b75a60b1
--- /dev/null
+++ b/run.dev
@@ -0,0 +1 @@
+bun --env-file=.env run dev
\ No newline at end of file
diff --git a/src/app/api/map/[id]/route.ts b/src/app/api/map/[id]/route.ts
new file mode 100644
index 00000000..0bb546a0
--- /dev/null
+++ b/src/app/api/map/[id]/route.ts
@@ -0,0 +1,74 @@
+import { prisma } from "@/app/lib";
+import { funGetUserIdByToken } from "@/app_modules/_global/fun/get";
+import backendLogger from "@/util/backendLogger";
+import { NextResponse } from "next/server";
+
+export { POST };
+
+async function POST(request: Request, { params }: { params: { id: string } }) {
+ if (request.method !== "POST") {
+ return NextResponse.json(
+ {
+ success: false,
+ message: "Method not allowed",
+ },
+ { status: 405 }
+ );
+ }
+
+ try {
+ const userLoginId = await funGetUserIdByToken();
+ if (!userLoginId) {
+ return NextResponse.json(
+ {
+ success: false,
+ message: "User tidak ditemukan",
+ },
+ { status: 401 }
+ );
+ }
+
+ const { id } = params;
+ const { data } = await request.json();
+
+ const created = await prisma.businessMaps.create({
+ data: {
+ latitude: data.latitude,
+ longitude: data.longitude,
+ namePin: data.namePin,
+ imageId: data.imageId,
+ portofolioId: id,
+ authorId: userLoginId,
+ },
+ });
+
+ if (!created) {
+ return NextResponse.json(
+ {
+ success: false,
+ message: "Gagal membuat pin map",
+ },
+ { status: 400 }
+ );
+ }
+
+ return NextResponse.json(
+ {
+ success: true,
+ message: "Berhasil membuat portofolio",
+ data: created,
+ },
+ { status: 201 }
+ );
+ } catch (error) {
+ backendLogger.error("Error create pin map", error);
+ return NextResponse.json(
+ {
+ success: false,
+ message: "Gagal membuat pin map",
+ reason: (error as Error).message,
+ },
+ { status: 500 }
+ );
+ }
+}
diff --git a/src/app/api/master/bidang-bisnis/route.ts b/src/app/api/master/bidang-bisnis/route.ts
index aa73de99..9d1986cb 100644
--- a/src/app/api/master/bidang-bisnis/route.ts
+++ b/src/app/api/master/bidang-bisnis/route.ts
@@ -1,15 +1,8 @@
import { prisma } from "@/app/lib";
import backendLogger from "@/util/backendLogger";
-import { clientLogger } from "@/util/clientLogger";
import { NextResponse } from "next/server";
export async function GET(request: Request) {
- if (request.method !== "GET") {
- return NextResponse.json(
- { success: false, message: "Method not allowed" },
- { status: 405 }
- );
- }
try {
let fixData;
diff --git a/src/app/api/portofolio/[id]/route.ts b/src/app/api/portofolio/[id]/route.ts
index deea8fd8..62409ff3 100644
--- a/src/app/api/portofolio/[id]/route.ts
+++ b/src/app/api/portofolio/[id]/route.ts
@@ -18,25 +18,53 @@ async function POST(request: Request, { params }: { params: { id: string } }) {
const { id } = params;
const { data } = await request.json();
- // const createPortofolio = await prisma.portofolio.create({
- // data: {
- // profileId: id,
- // id_Portofolio: "Porto" + Date.now().toString(),
- // namaBisnis: data.namaBisnis,
- // deskripsi: data.deskripsi,
- // tlpn: data.tlpn,
- // alamatKantor: data.alamatKantor,
- // masterBidangBisnisId: data.masterBidangBisnisId,
- // logoId: data.fileId,
- // },
- // });
+ const createPortofolio = await prisma.portofolio.create({
+ data: {
+ profileId: id,
+ id_Portofolio: "Porto" + Date.now().toString(),
+ namaBisnis: data.namaBisnis,
+ deskripsi: data.deskripsi,
+ tlpn: data.tlpn,
+ alamatKantor: data.alamatKantor,
+ masterBidangBisnisId: data.masterBidangBisnisId,
+ logoId: data.fileId,
+ },
+ });
+
+ if (!createPortofolio)
+ return NextResponse.json(
+ {
+ success: false,
+ message: "Gagal membuat portofolio",
+ },
+ { status: 400 }
+ );
+
+ const createMedsos = await prisma.portofolio_MediaSosial.create({
+ data: {
+ portofolioId: createPortofolio.id,
+ facebook: data?.facebook,
+ instagram: data?.instagram,
+ tiktok: data?.tiktok,
+ twitter: data?.twitter,
+ youtube: data?.youtube,
+ },
+ });
+
+ if (!createMedsos)
+ return NextResponse.json(
+ {
+ success: false,
+ message: "Gagal menambahkan medsos",
+ },
+ { status: 400 }
+ );
return NextResponse.json(
{
success: true,
message: "Berhasil mendapatkan data",
- id,
- data,
+ data: createPortofolio,
},
{ status: 200 }
);
diff --git a/src/app/dev/map/create/[id]/page.tsx b/src/app/dev/map/create/[id]/page.tsx
index 320e0b54..2841a5d2 100644
--- a/src/app/dev/map/create/[id]/page.tsx
+++ b/src/app/dev/map/create/[id]/page.tsx
@@ -1,10 +1,9 @@
import { Map_CreateNewPin } from "@/app_modules/map/view";
-export default async function Page({ params }: { params: { id: string } }) {
- let portofolioId = params.id;
+export default async function Page() {
return (
<>
-
+
>
);
}
diff --git a/src/app/dev/portofolio/create/[id]/page.tsx b/src/app/dev/portofolio/create/[id]/page.tsx
index fcc6bef3..3cd64728 100644
--- a/src/app/dev/portofolio/create/[id]/page.tsx
+++ b/src/app/dev/portofolio/create/[id]/page.tsx
@@ -1,14 +1,9 @@
import { CreatePortofolio } from "@/app_modules/katalog/portofolio";
-import { Portofolio_getMasterBidangBisnis } from "@/app_modules/katalog/portofolio/fun/master/get_bidang_bisnis";
export default async function Page() {
- // const profileId = params.id;
- // const bidangBisnis = await Portofolio_getMasterBidangBisnis();
-
return (
<>
-
+
>
);
}
diff --git a/src/app_modules/katalog/portofolio/component/api_fetch_portofolio.ts b/src/app_modules/katalog/portofolio/component/api_fetch_portofolio.ts
index 398ea490..14f8f677 100644
--- a/src/app_modules/katalog/portofolio/component/api_fetch_portofolio.ts
+++ b/src/app_modules/katalog/portofolio/component/api_fetch_portofolio.ts
@@ -2,11 +2,11 @@ export {
apiCreatePortofolio,
};
-const apiCreatePortofolio = async ({ data }: { data: any }) => {
+const apiCreatePortofolio = async ({ profileId, data }: { profileId: string, data: any }) => {
const { token } = await fetch("/api/get-cookie").then((res) => res.json());
if (!token) return await token.json().catch(() => null);
- const res = await fetch(`/api/portofolio`, {
+ const res = await fetch(`/api/portofolio/${profileId}`, {
method: "POST",
body: JSON.stringify({ data }),
headers: {
diff --git a/src/app_modules/katalog/portofolio/component/button/comp_button_selanjutnya.tsx b/src/app_modules/katalog/portofolio/component/button/comp_button_selanjutnya.tsx
index 38c6034f..3e784300 100644
--- a/src/app_modules/katalog/portofolio/component/button/comp_button_selanjutnya.tsx
+++ b/src/app_modules/katalog/portofolio/component/button/comp_button_selanjutnya.tsx
@@ -14,7 +14,6 @@ import { funGlobal_UploadToStorage } from "@/app_modules/_global/fun";
import { clientLogger } from "@/util/clientLogger";
import { useRouter } from "next/navigation";
import { useState } from "react";
-import funCreatePortofolio from "../../fun/fun_create_portofolio";
import { apiCreatePortofolio } from "../api_fetch_portofolio";
interface ICreatePortofolio {
@@ -45,17 +44,52 @@ export function Portofolio_ComponentButtonSelanjutnya({
const router = useRouter();
const [loading, setLoading] = useState(false);
- async function onSubmit() {
- if (_.values(dataPortofolio).includes("")) {
+ const validateData = () => {
+ if (_.includes(_.values(dataPortofolio), "")) {
ComponentGlobal_NotifikasiPeringatan("Lengkapi Data");
- return;
+ return false;
}
if (dataPortofolio.tlpn.length < 10) {
ComponentGlobal_NotifikasiPeringatan("Nomor telepon minimal 10 angka");
- return;
+ return false;
}
+ return true;
+ };
+
+ const handleCreatePortofolio = async (fileId: string) => {
+ const newData: ICreatePortofolio = {
+ namaBisnis: dataPortofolio.namaBisnis,
+ masterBidangBisnisId: dataPortofolio.masterBidangBisnisId,
+ alamatKantor: dataPortofolio.alamatKantor,
+ tlpn: dataPortofolio.tlpn,
+ deskripsi: dataPortofolio.deskripsi,
+ facebook: dataMedsos.facebook,
+ twitter: dataMedsos.twitter,
+ instagram: dataMedsos.instagram,
+ tiktok: dataMedsos.tiktok,
+ youtube: dataMedsos.youtube,
+ fileId: fileId,
+ };
+
+ const response = await apiCreatePortofolio({
+ profileId: profileId,
+ data: newData,
+ });
+
+ if (response.success) {
+ ComponentGlobal_NotifikasiBerhasil("Berhasil disimpan");
+ router.replace(RouterMap.create + response.data.id, { scroll: false });
+ } else {
+ setLoading(false);
+ throw new Error("Failed to create portfolio");
+ }
+ };
+
+ const onSubmit = async () => {
+ if (!validateData()) return;
+
try {
setLoading(true);
@@ -65,59 +99,22 @@ export function Portofolio_ComponentButtonSelanjutnya({
});
if (!uploadFile.success) {
- setLoading(false);
ComponentGlobal_NotifikasiPeringatan("Gagal upload gambar");
return;
}
- const fileId = uploadFile.data.id;
-
- const newData: ICreatePortofolio = {
- namaBisnis: dataPortofolio.namaBisnis,
- masterBidangBisnisId: dataPortofolio.masterBidangBisnisId,
- alamatKantor: dataPortofolio.alamatKantor,
- tlpn: dataPortofolio.tlpn,
- deskripsi: dataPortofolio.deskripsi,
- facebook: dataMedsos.facebook,
- twitter: dataMedsos.twitter,
- instagram: dataMedsos.instagram,
- tiktok: dataMedsos.tiktok,
- youtube: dataMedsos.youtube,
- fileId: fileId,
- };
-
- // const responeCreated = await apiCreatePortofolio({
- // data: newData,
- // });
-
- // if (responeCreated.success) {
- // ComponentGlobal_NotifikasiBerhasil("Berhasil disimpan");
- // router.replace(RouterMap.create + responeCreated.id, { scroll: false });
- // }
-
-
- const res = await funCreatePortofolio({
- profileId: profileId,
- data: dataPortofolio as any,
- medsos: dataMedsos,
- fileId: fileId,
- });
- if (res.status === 201) {
- ComponentGlobal_NotifikasiBerhasil("Berhasil disimpan");
- router.replace(RouterMap.create + res.id, { scroll: false });
- } else {
- setLoading(false);
- ComponentGlobal_NotifikasiGagal("Gagal disimpan");
- }
+ await handleCreatePortofolio(uploadFile.data.id);
} catch (error) {
setLoading(false);
+ ComponentGlobal_NotifikasiGagal("Gagal disimpan");
clientLogger.error("Error create portofolio", error);
}
- }
+ };
+
return (
<>