From 7c1d17079a7ab803e3d3007d0920487929c16070 Mon Sep 17 00:00:00 2001 From: nico Date: Tue, 11 Feb 2025 12:14:24 +0800 Subject: [PATCH 1/4] Delete Await Disconnect & Method API --- src/app/api/admin/collaboration/[status]/route.ts | 12 +----------- .../admin/collaboration/dashboard/[name]/route.ts | 11 ----------- src/app/api/admin/donasi/[status]/route.ts | 15 ++------------- .../api/admin/donasi/dashboard/[name]/route.ts | 11 ----------- src/app/api/admin/donasi/kategori/route.ts | 10 ---------- src/app/api/admin/event/[status]/route.ts | 12 ++---------- src/app/api/admin/event/dashboard/[name]/route.ts | 11 +---------- .../api/admin/event/dashboard/riwayat/route.ts | 10 ---------- src/app/api/admin/event/riwayat/route.ts | 11 +---------- .../forum/dashboard/report_komentar/route.ts | 12 +----------- .../admin/forum/dashboard/report_posting/route.ts | 11 ----------- src/app/api/admin/forum/komentar/route.ts | 11 ----------- src/app/api/admin/forum/posting/route.ts | 14 +------------- src/app/api/admin/forum/publish/route.ts | 11 ----------- .../api/admin/investasi/dashboard/[name]/route.ts | 12 +----------- src/app/api/admin/job/dashboard/[status]/route.ts | 14 ++------------ src/app/api/admin/job/dashboard/arsip/route.ts | 13 ++----------- .../api/admin/main_dashboard/portofolio/route.ts | 4 +--- src/app/api/admin/main_dashboard/user/route.ts | 9 +-------- .../api/admin/voting/dashboard/[name]/route.ts | 13 +------------ .../api/admin/voting/dashboard/riwayat/route.ts | 13 +------------ .../colab/lib/api_fetch_admin_collaboration.ts | 7 +++---- 22 files changed, 21 insertions(+), 226 deletions(-) diff --git a/src/app/api/admin/collaboration/[status]/route.ts b/src/app/api/admin/collaboration/[status]/route.ts index 6faf5146..34b49e8e 100644 --- a/src/app/api/admin/collaboration/[status]/route.ts +++ b/src/app/api/admin/collaboration/[status]/route.ts @@ -10,7 +10,6 @@ export async function GET(request: Request, { params }: const { status } = params; const { searchParams } = new URL(request.url); - const search = searchParams.get("search"); const page = searchParams.get("page"); const takeData = 10; const skipData = Number(page) * takeData - takeData; @@ -21,8 +20,6 @@ export async function GET(request: Request, { params }: if (!page) { fixData = await prisma.projectCollaboration.findMany({ - skip: skipData, - take: takeData, orderBy: { createdAt: "desc", }, @@ -32,10 +29,7 @@ export async function GET(request: Request, { params }: Author: { active: true, }, - title: { - contains: search ? search : "", - mode: "insensitive", - }, + }, select: { id: true, @@ -82,10 +76,6 @@ export async function GET(request: Request, { params }: Author: { active: true, }, - title: { - contains: search ? search : "", - mode: "insensitive", - }, }, select: { id: true, diff --git a/src/app/api/admin/collaboration/dashboard/[name]/route.ts b/src/app/api/admin/collaboration/dashboard/[name]/route.ts index 6ed3befe..2021194c 100644 --- a/src/app/api/admin/collaboration/dashboard/[name]/route.ts +++ b/src/app/api/admin/collaboration/dashboard/[name]/route.ts @@ -6,15 +6,6 @@ import { NextResponse } from "next/server"; export async function GET(request: Request, { params }: { params: { name: string } }) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json({ - success: false, - message: "Method not allowed", - }, - { status: 405 } - ); - } const { name } = params; try { let fixData; @@ -59,7 +50,5 @@ export async function GET(request: Request, { params }: { }, { status: 500 } ) - } finally { - await prisma.$disconnect } } \ No newline at end of file diff --git a/src/app/api/admin/donasi/[status]/route.ts b/src/app/api/admin/donasi/[status]/route.ts index 6d5756b1..9b1930eb 100644 --- a/src/app/api/admin/donasi/[status]/route.ts +++ b/src/app/api/admin/donasi/[status]/route.ts @@ -7,15 +7,6 @@ import { NextResponse } from "next/server"; export async function GET(request: Request, { params }: { params: { status: string } }) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json({ - succes: false, - message: "Method not allowed" - }, - { status: 405 } - ); - } const { status } = params; const { searchParams } = new URL(request.url); @@ -30,7 +21,7 @@ export async function GET(request: Request, if (!page) { - const data = await prisma.donasi.findMany({ + fixData = await prisma.donasi.findMany({ orderBy: { createdAt: "desc", }, @@ -83,7 +74,7 @@ export async function GET(request: Request, DonasiMaster_Ketegori: true, DonasiMaster_Durasi: true, imageId: true, - + }, }) @@ -120,7 +111,5 @@ export async function GET(request: Request, }, { status: 500 } ); - } finally { - await prisma.$disconnect(); } } \ No newline at end of file diff --git a/src/app/api/admin/donasi/dashboard/[name]/route.ts b/src/app/api/admin/donasi/dashboard/[name]/route.ts index 8b164d12..887dbfad 100644 --- a/src/app/api/admin/donasi/dashboard/[name]/route.ts +++ b/src/app/api/admin/donasi/dashboard/[name]/route.ts @@ -7,15 +7,6 @@ import { NextResponse } from "next/server"; export async function GET(request: Request, { params }: { params: { name: string } }) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json({ - success: false, - message: "Method not allowed", - }, - { status: 405 } - ); - } const { name } = params; try { @@ -44,7 +35,5 @@ export async function GET(request: Request, { params }: { }, { status: 500 } ) - } finally { - await prisma.$disconnect(); } } diff --git a/src/app/api/admin/donasi/kategori/route.ts b/src/app/api/admin/donasi/kategori/route.ts index de7e7c72..dc082a86 100644 --- a/src/app/api/admin/donasi/kategori/route.ts +++ b/src/app/api/admin/donasi/kategori/route.ts @@ -4,14 +4,6 @@ import { NextResponse } from "next/server"; export async function GET(request: Request) { const method = request.method; - if (method !== "GET") { - return NextResponse.json({ - success: false, - message: "Method nol allowed" - }, - { status: 405 } - ) - } try { const data = await prisma.donasiMaster_Kategori.findMany({ orderBy: { @@ -38,7 +30,5 @@ export async function GET(request: Request) { }, { status: 500 } ) - } finally { - await prisma.$disconnect } } \ No newline at end of file diff --git a/src/app/api/admin/event/[status]/route.ts b/src/app/api/admin/event/[status]/route.ts index 5c402e80..9876e90f 100644 --- a/src/app/api/admin/event/[status]/route.ts +++ b/src/app/api/admin/event/[status]/route.ts @@ -8,13 +8,7 @@ export async function GET( request: Request, { params }: { params: { status: string } } ) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json( - { success: false, message: "Method not allowed" }, - { status: 405 } - ); - } + const { status } = params; const { searchParams } = new URL(request.url); @@ -249,7 +243,5 @@ export async function GET( }, { status: 500 } ); - } finally { - await prisma.$disconnect(); - } + } } diff --git a/src/app/api/admin/event/dashboard/[name]/route.ts b/src/app/api/admin/event/dashboard/[name]/route.ts index 9ebc3310..efde57e9 100644 --- a/src/app/api/admin/event/dashboard/[name]/route.ts +++ b/src/app/api/admin/event/dashboard/[name]/route.ts @@ -7,13 +7,6 @@ export async function GET( request: Request, { params }: { params: { name: string } } ) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json( - { success: false, message: "Method not allowed" }, - { status: 405 } - ); - } const { name } = params; @@ -47,7 +40,5 @@ export async function GET( }, { status: 500 } ); - } finally { - await prisma.$disconnect(); - } + } } diff --git a/src/app/api/admin/event/dashboard/riwayat/route.ts b/src/app/api/admin/event/dashboard/riwayat/route.ts index 377d371d..568879d3 100644 --- a/src/app/api/admin/event/dashboard/riwayat/route.ts +++ b/src/app/api/admin/event/dashboard/riwayat/route.ts @@ -4,14 +4,6 @@ import _ from "lodash"; import { NextResponse } from "next/server"; export async function GET(request: Request) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json( - { success: false, message: "Method not allowed" }, - { status: 405 } - ); - } - try { let fixData; fixData = await prisma.event.count({ @@ -41,7 +33,5 @@ export async function GET(request: Request) { }, { status: 500 } ); - } finally { - await prisma.$disconnect(); } } diff --git a/src/app/api/admin/event/riwayat/route.ts b/src/app/api/admin/event/riwayat/route.ts index a863c095..6d656ad7 100644 --- a/src/app/api/admin/event/riwayat/route.ts +++ b/src/app/api/admin/event/riwayat/route.ts @@ -4,14 +4,7 @@ import _ from "lodash"; import { NextResponse } from "next/server"; export async function GET(request: Request) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json( - { success: false, message: "Method not allowed" }, - { status: 405 } - ); - } - + const { searchParams } = new URL(request.url); const search = searchParams.get("search"); const page = searchParams.get("page"); @@ -195,7 +188,5 @@ export async function GET(request: Request) { }, { status: 500 } ); - } finally { - await prisma.$disconnect(); } } diff --git a/src/app/api/admin/forum/dashboard/report_komentar/route.ts b/src/app/api/admin/forum/dashboard/report_komentar/route.ts index f397cb7c..3bea3768 100644 --- a/src/app/api/admin/forum/dashboard/report_komentar/route.ts +++ b/src/app/api/admin/forum/dashboard/report_komentar/route.ts @@ -3,15 +3,7 @@ import backendLogger from "@/util/backendLogger"; import { NextResponse } from "next/server"; export async function GET(request: Request) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json({ - success: false, - message: "Method not allowed", - }, - { status: 405 } - ) - } + try { let fixData; fixData = await prisma.forum_ReportKomentar.count({ @@ -35,7 +27,5 @@ export async function GET(request: Request) { }, { status: 500 } ) - } finally { - await prisma.$disconnect(); } } \ No newline at end of file diff --git a/src/app/api/admin/forum/dashboard/report_posting/route.ts b/src/app/api/admin/forum/dashboard/report_posting/route.ts index c0b5e3fb..21a325be 100644 --- a/src/app/api/admin/forum/dashboard/report_posting/route.ts +++ b/src/app/api/admin/forum/dashboard/report_posting/route.ts @@ -3,15 +3,6 @@ import backendLogger from "@/util/backendLogger"; import { NextResponse } from "next/server"; export async function GET(request: Request) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json({ - success: false, - message: "Method not allowed", - }, - { status: 405 } - ) - } try { let fixData; fixData = await prisma.forum_ReportPosting.count({ @@ -35,7 +26,5 @@ export async function GET(request: Request) { }, { status: 500 } ) - } finally { - await prisma.$disconnect(); } } \ No newline at end of file diff --git a/src/app/api/admin/forum/komentar/route.ts b/src/app/api/admin/forum/komentar/route.ts index 830d34d1..3fdf5cd6 100644 --- a/src/app/api/admin/forum/komentar/route.ts +++ b/src/app/api/admin/forum/komentar/route.ts @@ -5,15 +5,6 @@ import { NextResponse } from "next/server"; import _ from 'lodash'; export async function GET(request: Request) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json({ - success: false, - message: "Method not allowed" - }, - { status: 405 } - ); - } const { searchParams } = new URL(request.url); const search = searchParams.get("search"); @@ -127,7 +118,5 @@ export async function GET(request: Request) { reason: (error as Error).message }, ) - } finally { - await prisma.$disconnect(); } } \ No newline at end of file diff --git a/src/app/api/admin/forum/posting/route.ts b/src/app/api/admin/forum/posting/route.ts index 9e4dbed9..c163a8b1 100644 --- a/src/app/api/admin/forum/posting/route.ts +++ b/src/app/api/admin/forum/posting/route.ts @@ -5,16 +5,6 @@ import { NextResponse } from "next/server"; export async function GET(request: Request, { postingId }: { postingId: string }) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json({ - success: false, - message: "Method not allowed", - }, - { status: 405 } - ) - } - const { searchParams } = new URL(request.url); const search = searchParams.get('search'); @@ -144,7 +134,5 @@ export async function GET(request: Request, }, { status: 500 } ) - } finally { - await prisma.$disconnect(); - } + } } \ No newline at end of file diff --git a/src/app/api/admin/forum/publish/route.ts b/src/app/api/admin/forum/publish/route.ts index 43403b86..e53fa56f 100644 --- a/src/app/api/admin/forum/publish/route.ts +++ b/src/app/api/admin/forum/publish/route.ts @@ -4,15 +4,6 @@ import _ from "lodash"; import { NextResponse } from "next/server"; export async function GET(request: Request) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json({ - success: false, - message: "Method not allowed", - }, - { status: 405 } - ) - } const { searchParams } = new URL(request.url); const search = searchParams.get("search"); @@ -124,7 +115,5 @@ export async function GET(request: Request) { }, { status: 500 } ) - } finally { - await prisma.$disconnect() } } \ No newline at end of file diff --git a/src/app/api/admin/investasi/dashboard/[name]/route.ts b/src/app/api/admin/investasi/dashboard/[name]/route.ts index c577c34b..04c15e6d 100644 --- a/src/app/api/admin/investasi/dashboard/[name]/route.ts +++ b/src/app/api/admin/investasi/dashboard/[name]/route.ts @@ -4,15 +4,7 @@ import _ from "lodash"; import { NextResponse } from "next/server"; export async function GET(request: Request, { params }: { params: { name: string } }) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json({ - success: false, - message: "Method not allowed", - }, - { status: 405 } - ); - } + const { name } = params; try { let fixData; @@ -40,7 +32,5 @@ export async function GET(request: Request, { params }: { params: { name: string }, { status: 500 } ) - } finally { - await prisma.$disconnect(); } } diff --git a/src/app/api/admin/job/dashboard/[status]/route.ts b/src/app/api/admin/job/dashboard/[status]/route.ts index dd45ec7e..cd39017e 100644 --- a/src/app/api/admin/job/dashboard/[status]/route.ts +++ b/src/app/api/admin/job/dashboard/[status]/route.ts @@ -6,15 +6,7 @@ import { NextResponse } from "next/server"; export async function GET(request: Request, { params }: { params: { status: string } }) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json({ - success: false, - message: "Method not allowed", - }, - { status: 405 } - ) - } + const { status } = params; try { let fixData; @@ -44,7 +36,5 @@ export async function GET(request: Request, { params }: { }, { status: 500 } ) - } finally { - await prisma.$disconnect(); - } + } } \ No newline at end of file diff --git a/src/app/api/admin/job/dashboard/arsip/route.ts b/src/app/api/admin/job/dashboard/arsip/route.ts index fd1d45c5..9ba4f236 100644 --- a/src/app/api/admin/job/dashboard/arsip/route.ts +++ b/src/app/api/admin/job/dashboard/arsip/route.ts @@ -4,14 +4,7 @@ import { NextResponse } from "next/server"; export async function GET(request: Request) { const method = request.method; - if (method !== "GET") { - return NextResponse.json({ - success: false, - message: "Method not allowed", - }, - { status: 405 } - ); - } + try { let fixData; fixData = await prisma.job.count({ @@ -38,7 +31,5 @@ export async function GET(request: Request) { }, { status: 500 } ) - } finally { - await prisma.$disconnect(); - } + } } \ No newline at end of file diff --git a/src/app/api/admin/main_dashboard/portofolio/route.ts b/src/app/api/admin/main_dashboard/portofolio/route.ts index fa56632d..44b5b070 100644 --- a/src/app/api/admin/main_dashboard/portofolio/route.ts +++ b/src/app/api/admin/main_dashboard/portofolio/route.ts @@ -25,7 +25,5 @@ export async function GET(request: Request) { }, { status: 500 } ); - } finally { - await prisma.$disconnect(); - } + } } \ No newline at end of file diff --git a/src/app/api/admin/main_dashboard/user/route.ts b/src/app/api/admin/main_dashboard/user/route.ts index 2470f74b..9357f032 100644 --- a/src/app/api/admin/main_dashboard/user/route.ts +++ b/src/app/api/admin/main_dashboard/user/route.ts @@ -4,12 +4,7 @@ import { NextResponse } from "next/server"; export async function GET(request: Request) { const method = request.method; - if (method !== "GET") { - return NextResponse.json( - { success: false, message: "Method not allowed" }, - { status: 405 } - ); - } + try { const data = await prisma.user.count({ where: { @@ -35,8 +30,6 @@ export async function GET(request: Request) { { status: 500 } ) - } finally { - await prisma.$disconnect(); } } \ No newline at end of file diff --git a/src/app/api/admin/voting/dashboard/[name]/route.ts b/src/app/api/admin/voting/dashboard/[name]/route.ts index 3f498707..f952b5a0 100644 --- a/src/app/api/admin/voting/dashboard/[name]/route.ts +++ b/src/app/api/admin/voting/dashboard/[name]/route.ts @@ -6,16 +6,7 @@ import { NextResponse } from "next/server"; export async function GET(request: Request, { params }: { params: { name: string } }) { - const method = request.method; - if (method !== "GET") { - return NextResponse.json({ - success: false, - message: "Method not allowed", - }, - { status: 405 } - ) - } - + const { name } = params; try { let fixData; @@ -45,7 +36,5 @@ export async function GET(request: Request, { params }: { }, { status: 500 } ) - } finally { - await prisma.$disconnect(); } } \ No newline at end of file diff --git a/src/app/api/admin/voting/dashboard/riwayat/route.ts b/src/app/api/admin/voting/dashboard/riwayat/route.ts index c377c3de..c6288571 100644 --- a/src/app/api/admin/voting/dashboard/riwayat/route.ts +++ b/src/app/api/admin/voting/dashboard/riwayat/route.ts @@ -3,15 +3,6 @@ import backendLogger from "@/util/backendLogger"; 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; @@ -42,7 +33,5 @@ export async function GET(request: Request) { }, { status: 500 } ); - } finally { - await prisma.$disconnect(); - } + } } diff --git a/src/app_modules/admin/colab/lib/api_fetch_admin_collaboration.ts b/src/app_modules/admin/colab/lib/api_fetch_admin_collaboration.ts index d6375f84..4f873df8 100644 --- a/src/app_modules/admin/colab/lib/api_fetch_admin_collaboration.ts +++ b/src/app_modules/admin/colab/lib/api_fetch_admin_collaboration.ts @@ -25,18 +25,17 @@ const apiGetAdminCollaborationStatusCountDashboard = async ({ // console.log("Ini Response", await response.json()); return await response.json().catch(() => null); } -const apiGetAdminCollaborationStatusById = async ({ status, page, search }: { +const apiGetAdminCollaborationStatusById = async ({ status, page}: { status: "Publish" | "Reject", page: string, - search: string + }) => { const { token } = await fetch("/api/get-cookie").then((res) => res.json()); if (!token) return await token.json().catch(() => null); const isPage = page ? `?page=${page}` : ""; - const isSearch = search ? `&search=${search}` : ""; - const response = await fetch(`/api/admin/collaboration/${status}${isPage}${isSearch}`, { + const response = await fetch(`/api/admin/collaboration/${status}${isPage}`, { headers: { "Content-Type": "application/json", Accept: "application/json", From f7db89da212fa1e1b020e56bf1d03bceb2af8ddc Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Tue, 11 Feb 2025 17:33:27 +0800 Subject: [PATCH 2/4] fix portofolio deskripsiL: - fix server acton create to API --- push-staging.wibu | 3 - run.dev | 1 + src/app/api/map/[id]/route.ts | 74 ++++++++++++++ src/app/api/master/bidang-bisnis/route.ts | 7 -- src/app/api/portofolio/[id]/route.ts | 56 ++++++++--- src/app/dev/map/create/[id]/page.tsx | 5 +- src/app/dev/portofolio/create/[id]/page.tsx | 7 +- .../component/api_fetch_portofolio.ts | 4 +- .../button/comp_button_selanjutnya.tsx | 91 +++++++++--------- .../map/_component/api_fetch_map.ts | 25 +++++ .../button/comp_button_save_pin.tsx | 96 +++++++++++++------ src/app_modules/map/ui/ui_create_pin.tsx | 25 ++--- src/app_modules/map/view/create.tsx | 20 ++-- 13 files changed, 271 insertions(+), 143 deletions(-) delete mode 100644 push-staging.wibu create mode 100644 run.dev create mode 100644 src/app/api/map/[id]/route.ts create mode 100644 src/app_modules/map/_component/api_fetch_map.ts 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 ( <>