Files
hipmi/src/app/api/mobile/portofolio/route.ts
bagasbanuna bb79a68f44 API – Mobile Notification
- src/app/api/mobile/notification/[id]/route.ts

API – Portofolio (Mobile)
- src/app/api/mobile/portofolio/route.ts

Untracked Files
- PROMPT-AI.md
- QWEN.md

### No Issue
2026-01-30 17:16:33 +08:00

156 lines
3.6 KiB
TypeScript

import { prisma } from "@/lib";
import { NextResponse } from "next/server";
export { GET, POST };
async function GET(request: Request, { params }: { params: { id: string } }) {
try {
const { searchParams } = new URL(request.url);
const id = searchParams.get("id");
const page = parseInt(searchParams.get("page") || "1");
const take = 10; // Default 10 data
const skip = page * take - take;
const data = await prisma.portofolio.findMany({
skip,
take,
orderBy: {
createdAt: "desc",
},
where: {
profileId: id,
active: true,
},
});
// Hitung total data untuk informasi pagination
const total = await prisma.portofolio.count({
where: {
profileId: id,
active: true,
},
});
const totalPages = Math.ceil(total / take);
return NextResponse.json(
{
success: true,
message: "Berhasil mendapatkan data",
data: data,
meta: {
page,
take,
skip,
total,
totalPages,
},
},
{ status: 200 },
);
} catch (error) {
return NextResponse.json(
{
success: false,
message: "API Error Get Data Potofolio",
reason: (error as Error).message,
},
{ status: 500 },
);
}
}
async function POST(request: Request) {
try {
const { data } = await request.json();
console.log("DATA >>", data);
const createPortofolio = await prisma.portofolio.create({
data: {
profileId: data.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 (
data.subBidang.length > 0 ||
data.subBidang.map((item: any) => item.id !== "")
) {
for (let i of data.subBidang) {
const createSubBidang =
await prisma.portofolio_BidangDanSubBidangBisnis.create({
data: {
portofolioId: createPortofolio.id,
masterBidangBisnisId: data.masterBidangBisnisId,
masterSubBidangBisnisId: i.id,
},
});
console.log("CREATE SUB BIDANG >>", createSubBidang);
if (!createSubBidang)
return NextResponse.json(
{
success: false,
message: "Gagal membuat sub bidang bisnis",
},
{ status: 400 },
);
}
}
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",
data: createPortofolio,
},
{ status: 200 },
);
} catch (error) {
return NextResponse.json(
{
success: false,
message: "API Error Post Data",
reason: (error as Error).message,
},
{ status: 500 },
);
}
}