Update Versi 1.5.27 #32

Merged
bagasbanuna merged 1009 commits from staging into main 2025-12-17 12:22:28 +08:00
2183 changed files with 96840 additions and 24374 deletions
Showing only changes of commit 8060924a09 - Show all commits

View File

@@ -0,0 +1,130 @@
import _ from "lodash";
import { NextResponse } from "next/server";
import prisma from "@/lib/prisma";
export { GET, PUT };
async function GET(
request: Request,
{ params }: { params: { id: string; status: string } }
) {
const { id, status } = params;
const fixStatus = _.startCase(status);
let fixData;
try {
const checkStatus = await prisma.donasiMaster_StatusDonasi.findFirst({
where: {
name: fixStatus,
},
});
console.log("[CHECK STATUS]", checkStatus);
if (!checkStatus)
return NextResponse.json({
status: 400,
success: false,
reason: "Gagal mendapatkan data",
});
const res = await prisma.donasi.findMany({
where: {
authorId: id,
donasiMaster_StatusDonasiId: checkStatus.id,
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",
},
});
fixData = res.map((v: any) => ({
..._.omit(v, ["DonasiMaster_Durasi"]),
nameDonasiDurasi: v.DonasiMaster_Durasi.name,
}));
return NextResponse.json({
status: 200,
success: true,
message: "Berhasil mendapatkan data",
data: fixData,
});
} catch (error) {
console.log("[ERROR]", error);
return NextResponse.json({
status: 500,
success: false,
message: "Error mendapatkan data",
reason: (error as Error).message,
});
}
}
async function PUT(
request: Request,
{ params }: { params: { id: string; status: string } }
) {
const { id, status } = params;
const fixStatus = _.startCase(status);
try {
const checkStatus = await prisma.donasiMaster_StatusDonasi.findFirst({
where: {
name: fixStatus,
},
});
if (!checkStatus)
return NextResponse.json({
status: 400,
success: false,
reason: "Gagal mendapatkan data",
});
const res = await prisma.donasi.update({
where: {
id: id,
},
data: {
donasiMaster_StatusDonasiId: checkStatus.id,
},
});
if (!res)
return NextResponse.json({
status: 400,
success: false,
reason: "Gagal mengubah status",
});
return NextResponse.json({
status: 200,
success: true,
message: "Berhasil mengubah status",
});
} catch (error) {
console.log("[ERROR]", error);
return NextResponse.json({
status: 500,
success: false,
message: "Error mendapatkan data",
reason: (error as Error).message,
});
}
}

View File

@@ -1,6 +1,7 @@
import { NextResponse } from "next/server";
import prisma from "@/lib/prisma";
export { GET };
export { GET, DELETE, PUT };
async function GET(request: Request, { params }: { params: { id: string } }) {
const { id } = params;
@@ -23,6 +24,17 @@ async function GET(request: Request, { params }: { params: { id: string } }) {
where: {
id: id,
},
include: {
Author: true,
imageDonasi: true,
CeritaDonasi: true,
DonasiMaster_Ketegori: true,
DonasiMaster_Durasi: true,
DonasiMaster_Status: true,
Donasi_Invoice: true,
Donasi_Kabar: true,
Donasi_PencairanDana: true,
},
});
}
@@ -42,3 +54,171 @@ async function GET(request: Request, { params }: { params: { id: string } }) {
});
}
}
async function DELETE(
request: Request,
{ params }: { params: { id: string } }
) {
try {
const id = params.id;
console.log("[ID]", id);
const checkData = await prisma.donasi.findUnique({
where: {
id: id,
},
include: {
CeritaDonasi: {
select: {
imageId: true,
},
},
},
});
console.log(["DATA"], checkData);
const deleteStory = await prisma.donasi_Cerita.delete({
where: {
donasiId: id,
},
});
if (!deleteStory)
return NextResponse.json({
status: 400,
success: false,
reason: "Gagal menghapus data cerita",
});
const deleteImageStory = await fetch(
`https://wibu-storage.wibudev.com/api/files/${checkData?.CeritaDonasi?.imageId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (!deleteImageStory) {
console.log("[DELETE IMAGE STORY]", deleteImageStory);
}
const res = await prisma.donasi.delete({
where: {
id: id,
},
});
if (!res)
return NextResponse.json({
status: 400,
success: false,
reason: "Gagal menghapus donasi",
});
const deleteImageDonation = await fetch(
`https://wibu-storage.wibudev.com/api/files/${checkData?.imageId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (!deleteImageDonation) {
console.log("[DELETE IMAGE DONATION]", deleteImageDonation);
}
return NextResponse.json({
status: 200,
success: true,
message: "Donasi berhasil dihapus",
});
} catch (error) {
console.log("[ERROR]", error);
return NextResponse.json({
status: 500,
success: false,
message: "Gagal menghapus donasi",
reason: (error as Error).message,
});
}
}
async function PUT(request: Request, { params }: { params: { id: string } }) {
const { id } = params;
const { data } = await request.json();
const { searchParams } = new URL(request.url);
const category = searchParams.get("category");
console.log("[ID]", id);
console.log("[DATA]", data);
console.log("[CATEGORY]", category);
try {
if (category === "edit-donation") {
if (data && data.newImageId) {
await prisma.donasi.update({
where: {
id: id,
},
data: {
imageId: data.newImageId,
},
});
}
const update = await prisma.donasi.update({
where: {
id: id,
},
data: {
donasiMaster_KategoriId: data.donasiMaster_KategoriId,
donasiMaster_DurasiId: data.donasiMaster_DurasiId,
title: data.title,
target: data.target,
},
});
if (!update)
return NextResponse.json({
status: 400,
success: false,
reason: "Gagal mengupdate donasi",
});
const deleteImageDonasi = await fetch(
`https://wibu-storage.wibudev.com/api/files/${data.imageId}/delete`,
{
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.WS_APIKEY}`,
},
}
);
if (!deleteImageDonasi) {
console.log("[DELETE IMAGE DONASI]", deleteImageDonasi);
}
} else if (category === "edit-story") {
} else if (category === "edit-bank-account") {
}
return NextResponse.json({
status: 200,
success: true,
message: "Donasi berhasil diupdate",
});
} catch (error) {
console.log("[ERROR]", error);
return NextResponse.json({
status: 500,
success: false,
message: "Gagal mengupdate donasi",
reason: (error as Error).message,
});
}
}

View File

@@ -1,4 +1,6 @@
import _ from "lodash";
import { NextResponse } from "next/server";
import prisma from "@/lib/prisma";
export { POST };
@@ -6,11 +8,9 @@ async function POST(request: Request) {
const { data } = await request.json();
const { searchParams } = new URL(request.url);
const category = searchParams.get("category");
console.log("[DATA]", data);
console.log("[CATEGORY]", category);
let fixData;
try {
// CODE HERE
@@ -27,11 +27,11 @@ async function POST(request: Request) {
} else if (category === "permanent") {
const dataDonasi = await prisma.donasi.create({
data: {
target: data.target,
authorId: data.authorId,
title: data.title,
target: data.target,
donasiMaster_DurasiId: data.donasiMaster_DurasiId,
donasiMaster_KategoriId: data.donasiMaster_KategoriId,
authorId: data.authorId,
namaBank: data.namaBank,
rekening: data.rekening,
imageId: data.imageId,
@@ -48,23 +48,33 @@ async function POST(request: Request) {
},
});
if (!dataDonasi) return { status: 400, message: "Gagal disimpan" };
if (!dataDonasi)
return NextResponse.json({
status: 400,
success: false,
reason: "Gagal menambah donasi",
});
const del = await prisma.donasi_TemporaryCreate.delete({
where: {
id: data.id,
id: data.temporaryId,
},
});
const dataCerita = await prisma.donasi_Cerita.create({
data: {
donasiId: dataDonasi.id,
pembukaan: data.CeritaDonasi.pembukaan,
cerita: data.CeritaDonasi.cerita,
pembukaan: data.pembukaan,
cerita: data.cerita,
imageId: data.imageCeritaId,
},
});
if (!dataCerita) return { status: 400, message: "Gagal disimpan" };
if (!dataCerita)
return NextResponse.json({
status: 400,
success: false,
reason: "Gagal menambah cerita donasi",
});
}
return NextResponse.json({
@@ -78,7 +88,7 @@ async function POST(request: Request) {
return NextResponse.json({
status: 500,
success: false,
error: "Gagal menambah donasi",
message: "Error menambah donasi",
reason: (error as Error).message,
});
}

View File

@@ -1,11 +1,11 @@
import { NextResponse } from "next/server";
import prisma from "@/lib/prisma";
export { GET };
async function GET(request: Request) {
const { searchParams } = new URL(request.url);
const category = searchParams.get("category");
console.log("[CATEGORY]", category);
let fixData;
try {