Compare commits

...

12 Commits

Author SHA1 Message Date
2e2a5c2566 Mobile API: Donation & Admin Donation
Add:
- src/app/api/mobile/admin/donation/[id]/disbursement/
- src/app/api/mobile/donation/[id]/disbursement/
- src/app/api/mobile/donation/[id]/donatur/

### No Issue
2025-10-29 17:31:41 +08:00
ccfb361564 chore(release): 1.5.8 2025-10-29 17:27:44 +08:00
5553f451e8 update version 2025-10-28 17:50:19 +08:00
027ec4f6c5 chore(release): 1.5.7 2025-10-28 17:49:52 +08:00
8485209a75 Mobile API: Donation & Admin Donation
Add:
- prisma/migrations/20251028063234_donasi_invoice_relation_bank_master/ : penambahan master bank ke donasi invoce
- src/app/api/mobile/admin/donation/[id]/invoice/

Fix:
- prisma/schema.prisma
- src/app/api/mobile/admin/donation/[id]/donatur/route.ts
- src/app/api/mobile/admin/donation/[id]/route.ts
- src/app/api/mobile/donation/[id]/invoice/route.ts

### No Issue
2025-10-28 17:48:36 +08:00
d9e2fdaf30 Donasi API Mobile
Add:
- src/app/api/mobile/admin/donation/[id]/
- src/app/api/mobile/master/transaction-status/

Fix:
-  src/app/api/admin/donasi/[id]/donatur/route.ts

### No Issue
2025-10-28 10:12:16 +08:00
7fe5826f5c test 2025-10-27 11:27:59 +08:00
c47decf246 New github 2 2025-10-27 11:22:14 +08:00
4ef93e0509 New gitwibu 2025-10-27 11:18:59 +08:00
3052dabbce New gitwibu 2025-10-27 11:17:57 +08:00
nabillah
4fc0ebf7ee New gitwibu 2025-10-27 11:15:17 +08:00
nabillah
577ee38220 Mobile API: Event
Add:
- src/app/api/mobile/admin/event/[id]/participants/
- src/app/api/mobile/admin/master/type-of-event/
2025-10-24 16:39:33 +08:00
18 changed files with 1187 additions and 140 deletions

View File

@@ -2,6 +2,10 @@
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
## [1.5.8](https://wibugit.wibudev.com/wibu/hipmi/compare/v1.5.7...v1.5.8) (2025-10-29)
## [1.5.7](https://wibugit.wibudev.com/wibu/hipmi/compare/v1.5.6...v1.5.7) (2025-10-28)
## [1.5.6](https://wibugit.wibudev.com/bip/hipmi/compare/v1.5.5...v1.5.6) (2025-10-21)
## [1.5.5](https://wibugit.wibudev.com/bip/hipmi/compare/v1.5.4...v1.5.5) (2025-10-20)

View File

@@ -1,6 +1,6 @@
{
"name": "hipmi",
"version": "1.5.6",
"version": "1.5.8",
"private": true,
"prisma": {
"seed": "bun prisma/seed.ts"

View File

@@ -0,0 +1,5 @@
-- AlterTable
ALTER TABLE "Donasi_Invoice" ADD COLUMN "masterBankId" TEXT;
-- AddForeignKey
ALTER TABLE "Donasi_Invoice" ADD CONSTRAINT "Donasi_Invoice_masterBankId_fkey" FOREIGN KEY ("masterBankId") REFERENCES "MasterBank"("id") ON DELETE SET NULL ON UPDATE CASCADE;

View File

@@ -202,6 +202,7 @@ model MasterBank {
updatedAt DateTime @updatedAt
Investasi_Invoice Investasi_Invoice[]
EventTransaksi EventTransaksi[]
Donasi_Invoice Donasi_Invoice[]
}
model MasterStatus {
@@ -577,6 +578,8 @@ model Donasi_Invoice {
imagesId String?
imageId String?
MasterBank MasterBank? @relation(fields: [masterBankId], references: [id])
masterBankId String? @default("null")
}
model Donasi_Kabar {

View File

@@ -3,16 +3,17 @@ import backendLogger from "@/util/backendLogger";
import _ from "lodash";
import { NextResponse } from "next/server";
export async function GET(req: Request,
{ params }: { params: { id: string } }) {
export async function GET(
req: Request,
{ params }: { params: { id: string } }
) {
try {
let fixData;
const { id } = params;
const { searchParams } = new URL(req.url);
const page = searchParams.get("page");
const status = searchParams.get("status");
const takeData = 10
const takeData = 10;
const skipData = Number(page) * takeData - takeData;
if (!page) {
@@ -34,9 +35,8 @@ export async function GET(req: Request,
donasiMaster_StatusInvoiceId: true,
imagesId: true,
imageId: true,
},
})
});
} else {
const fixStatus = _.startCase(status ? status : "");
const data = await prisma.donasi_Invoice.findMany({
@@ -46,15 +46,14 @@ export async function GET(req: Request,
createdAt: "desc",
},
where: {
donasiId: id,
active: true,
DonasiMaster_StatusInvoice: {
name: {
contains: fixStatus,
mode: "insensitive",
}
}
},
},
},
select: {
id: true,
@@ -66,10 +65,8 @@ export async function GET(req: Request,
donasiMaster_StatusInvoiceId: true,
imagesId: true,
imageId: true,
},
})
});
const nCount = await prisma.donasi_Invoice.count({
where: {
@@ -79,33 +76,34 @@ export async function GET(req: Request,
name: {
contains: fixStatus,
mode: "insensitive",
}
}
}
})
},
},
},
});
fixData = {
data: data,
nPage: _.ceil(nCount / takeData)
}
nPage: _.ceil(nCount / takeData),
};
}
return NextResponse.json({
return NextResponse.json(
{
success: true,
message: "Success",
data: fixData,
},
{ status: 200 }
)
);
} catch (error) {
backendLogger.error("Error get data donatur >>", error);
return NextResponse.json({
return NextResponse.json(
{
success: false,
message: "Error get data donatur",
reason: (error as Error).message
reason: (error as Error).message,
},
{ status: 500 }
)
);
}
}

View File

@@ -0,0 +1,166 @@
import prisma from "@/lib/prisma";
import { NextResponse } from "next/server";
export { POST, GET };
async function POST(request: Request, { params }: { params: { id: string } }) {
const { id } = params;
const { data } = await request.json();
try {
const dataDonasi = await prisma.donasi.findUnique({
where: {
id: id,
},
select: {
akumulasiPencairan: true,
totalPencairan: true,
},
});
if (!dataDonasi)
return NextResponse.json(
{
success: false,
message: "Pencarian Donasi Gagal",
reason: "Pencarian Donasi Gagal",
},
{ status: 400 }
);
const createPencairan = await prisma.donasi_PencairanDana.create({
data: {
donasiId: id,
nominalCair: +data.nominalCair,
deskripsi: data.deskripsi,
title: data.title,
imageId: data.imageId,
},
});
if (!createPencairan)
return NextResponse.json(
{
success: false,
message: "Pencairan Dana Gagal",
reason: "Pencairan Dana Gagal",
},
{ status: 400 }
);
const hasilTotalPencairan =
Number(dataDonasi.totalPencairan) + Number(data.nominalCair);
// const hasilAkumulasiPencairan = Number(dataDonasi.akumulasiPencairan) + 1;
const countPencairan = await prisma.donasi_PencairanDana.count({
where: {
donasiId: id,
},
});
const updateDonasi = await prisma.donasi.update({
where: {
id: id,
},
data: {
akumulasiPencairan: countPencairan,
totalPencairan: hasilTotalPencairan,
},
});
if (!updateDonasi)
return NextResponse.json(
{
success: false,
message: "Update Donasi Gagal",
reason: "Update Donasi Gagal",
},
{ status: 400 }
);
return NextResponse.json(
{
success: true,
message: "Pencairan Dana Berhasil",
// data: data,
},
{ status: 200 }
);
} catch (error) {
console.error("[ERROR]", error);
return NextResponse.json(
{
success: false,
message: "Pencairan Dana Gagal",
reason: (error as Error).message,
},
{ status: 500 }
);
}
}
async function GET(request: Request, { params }: { params: { id: string } }) {
const { id } = params;
const { searchParams } = new URL(request.url);
const category = searchParams.get("category");
const page = searchParams.get("page");
const takeData = 10;
const skipData = Number(page) * takeData - takeData;
console.log("[CATEGORY]", category);
let fixData;
try {
if (category === "get-all") {
fixData = await prisma.donasi_PencairanDana.findMany({
take: page ? takeData : undefined,
skip: page ? skipData : undefined,
orderBy: {
createdAt: "desc",
},
where: {
donasiId: id,
},
select: {
id: true,
createdAt: true,
nominalCair: true,
},
});
} else if (category === "get-one") {
fixData = await prisma.donasi_PencairanDana.findUnique({
where: {
id: id,
},
});
} else {
return NextResponse.json(
{
success: false,
message: "Category tidak ditemukan",
reason: "Category tidak ditemukan",
},
{ status: 400 }
);
}
return NextResponse.json(
{
success: true,
message: "Success get data disbursement",
data: fixData,
},
{ status: 200 }
);
} catch (error) {
console.error("[ERROR]", error);
return NextResponse.json(
{
success: false,
message: "Gagal mendapatkan data disbursement",
reason: (error as Error).message,
},
{ status: 500 }
);
}
}

View File

@@ -0,0 +1,115 @@
import _ from "lodash";
import { NextResponse } from "next/server";
import { prisma } from "@/lib";
export { GET };
async function GET(req: Request, { params }: { params: { id: string } }) {
const { id } = params;
const { searchParams } = new URL(req.url);
const page = searchParams.get("page");
const status = searchParams.get("status");
const takeData = 10;
const skipData = Number(page) * takeData - takeData;
const fixStatus = _.startCase(status || "");
console.log("[FIX STATUS]", fixStatus);
let fixData;
try {
if (status === null) {
fixData = await prisma.donasi_Invoice.findMany({
take: page ? takeData : undefined,
skip: page ? skipData : undefined,
orderBy: {
createdAt: "desc",
},
where: {
donasiId: id,
active: true,
},
select: {
id: true,
nominal: true,
createdAt: true,
Author: true,
DonasiMaster_Bank: true,
DonasiMaster_StatusInvoice: true,
donasiMaster_StatusInvoiceId: true,
imagesId: true,
imageId: true,
MasterBank: true,
},
});
} else {
const checkStatusTransaksi =
await prisma.donasiMaster_StatusInvoice.findFirst({
where: {
name: fixStatus,
},
});
console.log("[CHECK STATUS TRANSAKSI]", checkStatusTransaksi);
if (!checkStatusTransaksi)
return NextResponse.json(
{
success: false,
message: "Error get detail Investasi",
reason: "Status not found",
},
{ status: 500 }
);
const data = await prisma.donasi_Invoice.findMany({
take: page ? takeData : undefined,
skip: page ? skipData : undefined,
orderBy: {
createdAt: "desc",
},
where: {
donasiId: id,
active: true,
DonasiMaster_StatusInvoice: {
name: {
contains: checkStatusTransaksi.name,
mode: "insensitive",
},
},
},
select: {
id: true,
nominal: true,
createdAt: true,
Author: true,
DonasiMaster_Bank: true,
DonasiMaster_StatusInvoice: true,
donasiMaster_StatusInvoiceId: true,
imagesId: true,
imageId: true,
},
});
fixData = data;
}
return NextResponse.json(
{
success: true,
message: "Berhasil mendapatkan data",
data: fixData,
},
{ status: 200 }
);
} catch (error) {
console.log("[ERROR]", error);
return NextResponse.json(
{
success: false,
message: "Error get detail Investasi",
reason: (error as Error).message,
},
{ status: 500 }
);
}
}

View File

@@ -0,0 +1,176 @@
import { NextResponse } from "next/server";
import { prisma } from "@/lib";
import _ from "lodash";
export { GET, PUT };
async function GET(req: Request, { params }: { params: { id: string } }) {
const { id } = params;
console.log("[ID]", id);
try {
const data = await prisma.donasi_Invoice.findUnique({
where: {
id: id,
},
select: {
id: true,
donasiId: true,
nominal: true,
createdAt: true,
Author: true,
DonasiMaster_StatusInvoice: true,
imageId: true,
MasterBank: true,
},
});
return NextResponse.json(
{
success: true,
message: "Berhasil mendapatkan data",
data: data,
},
{ status: 200 }
);
} catch (error) {
console.log("[ERROR]", error);
return NextResponse.json(
{
success: false,
message: "Error get detail Investasi",
reason: (error as Error).message,
},
{ status: 500 }
);
}
}
// TYPE DATA
interface DataType {
donationId: string;
nominal: number;
}
async function PUT(req: Request, { params }: { params: { id: string } }) {
const { id } = params;
const { data } = await req.json();
const { searchParams } = new URL(req.url);
const status = searchParams.get("status");
const fixStatus = _.startCase(status as string);
console.log("[ID]", id);
console.log("[DATA]", data);
console.log("[FIX STATUS]", fixStatus);
const cloneData = data as DataType;
try {
const checkStatusTransaksi =
await prisma.donasiMaster_StatusInvoice.findFirst({
where: {
name: fixStatus,
},
});
if (!checkStatusTransaksi)
return NextResponse.json(
{
success: false,
message: "Failed update status invoice",
reason: "Status not found",
},
{ status: 500 }
);
const donasi = await prisma.donasi.findUnique({
where: {
id: data?.donationId,
},
select: {
target: true,
terkumpul: true,
},
});
if (!donasi) {
return NextResponse.json(
{
success: false,
message: "Failed update status invoice",
reason: "Donasi not found",
},
{ status: 500 }
);
}
const updateInvoice = await prisma.donasi_Invoice.update({
where: {
id: id,
},
data: {
donasiMaster_StatusInvoiceId: checkStatusTransaksi.id,
},
});
if (!updateInvoice) {
return NextResponse.json(
{
success: false,
message: "Failed update status invoice",
reason: "Update invoice failed",
},
{ status: 500 }
);
}
let totalNominal =
Number(cloneData.nominal) + (Number(donasi.terkumpul) || 0);
const progres =
Math.floor((totalNominal / Number(donasi.target)) * 1000) / 10;
console.log("[STATUS]", checkStatusTransaksi);
console.log("[TOTAL NOMINAL]", totalNominal);
console.log("[PROGRES]", progres);
const updateDonasi = await prisma.donasi.update({
where: {
id: data?.donationId,
},
data: {
terkumpul: "" + totalNominal,
progres: "" + progres,
},
});
if (!updateDonasi) {
return NextResponse.json(
{
success: false,
message: "Failed update status invoice",
reason: "Update donasi failed",
},
{ status: 500 }
);
}
return NextResponse.json(
{
success: true,
message: "Berhasil update status invoice",
data: updateDonasi,
},
{ status: 200 }
);
} catch (error) {
console.log("[ERROR]", error);
return NextResponse.json(
{
success: false,
message: "Error update status invoice",
reason: (error as Error).message,
},
{ status: 500 }
);
}
}

View File

@@ -0,0 +1,152 @@
import prisma from "@/lib/prisma";
import _ from "lodash";
import { NextResponse } from "next/server";
export { GET, PUT };
async function GET(request: Request, { params }: { params: { id: string } }) {
try {
const { id } = params;
const donasiId = id;
const data = await prisma.donasi.findUnique({
where: {
id: donasiId,
},
select: {
id: true,
title: true,
target: true,
active: true,
createdAt: true,
updatedAt: true,
publishTime: true,
catatan: true,
progres: true,
terkumpul: true,
authorId: true,
namaBank: true,
rekening: true,
totalPencairan: true,
akumulasiPencairan: true,
imagesId: true,
donasiMaster_KategoriId: true,
donasiMaster_DurasiId: true,
donasiMaster_StatusDonasiId: true,
Author: true,
imageDonasi: true,
CeritaDonasi: true,
DonasiMaster_Ketegori: true,
DonasiMaster_Durasi: true,
DonasiMaster_Status: true,
imageId: true,
},
});
const successInvoice = await prisma.donasi_Invoice.count({
where: {
donasiId: donasiId,
DonasiMaster_StatusInvoice: {
name: "Berhasil",
},
},
});
return NextResponse.json(
{
success: true,
message: "Data Donasi Berhasil Diambil",
data: {
donasi: data,
donatur: successInvoice,
},
},
{ status: 200 }
);
} catch (error) {
return NextResponse.json(
{
success: false,
message: "Error get detail Investasi",
reason: (error as Error).message,
},
{ status: 500 }
);
}
}
async function PUT(request: Request, { params }: { params: { id: string } }) {
const { id } = params;
const { data } = await request.json();
const { searchParams } = new URL(request.url);
const status = searchParams.get("status");
const fixStatus = _.startCase(status as string);
console.log("[PUT ID]", id);
console.log("[PUT DATA DONASI]", data);
console.log("[PUT DATA DONASI]", fixStatus);
let fixData;
try {
const checkStatus = await prisma.donasiMaster_StatusDonasi.findFirst({
where: {
name: fixStatus,
},
});
console.log("[PUT CHECK STATUS]", checkStatus);
if (!checkStatus)
return NextResponse.json(
{
success: false,
message: "Error update data event",
reason: "Status not found",
},
{ status: 500 }
);
if (fixStatus === "Reject") {
const updateData = await prisma.donasi.update({
where: {
id: id,
},
data: {
catatan: data,
donasiMaster_StatusDonasiId: checkStatus.id,
},
});
fixData = updateData;
} else if (fixStatus === "Publish") {
const updateData = await prisma.donasi.update({
where: {
id: id,
},
data: {
donasiMaster_StatusDonasiId: checkStatus.id,
publishTime: new Date(),
},
});
fixData = updateData;
}
return NextResponse.json(
{
success: true,
message: "Data Donasi Berhasil Diambil",
data: data,
},
{ status: 200 }
);
} catch (error) {
return NextResponse.json(
{
success: false,
message: "Error get detail Investasi",
reason: (error as Error).message,
},
{ status: 500 }
);
}
}

View File

@@ -0,0 +1,134 @@
import _ from "lodash";
import { NextResponse } from "next/server";
export { GET };
async function GET(request: Request) {
const { searchParams } = new URL(request.url);
const category = searchParams.get("category");
const page = searchParams.get("page");
const search = searchParams.get("search");
const takeData = 10;
const skipData = Number(page) * takeData - takeData;
console.log("[CATEGORY]", category);
let fixData;
try {
if (category === "dashboard") {
const publish = await prisma.donasi.count({
where: {
DonasiMaster_Status: {
name: "Publish",
},
},
});
const review = await prisma.donasi.count({
where: {
DonasiMaster_Status: {
name: "Review",
},
},
});
const reject = await prisma.donasi.count({
where: {
DonasiMaster_Status: {
name: "Reject",
},
},
});
const countCategoryDonation = await prisma.donasiMaster_Kategori.findMany(
{
orderBy: {
createdAt: "asc",
},
where: {
active: true,
},
}
);
const categoryDonation = countCategoryDonation.length;
fixData = {
publish,
review,
reject,
categoryDonation,
};
} else {
const fixCategory = _.startCase(category || "");
const checkStatus = await prisma.donasiMaster_StatusDonasi.findFirst({
where: {
name: fixCategory,
},
});
console.log("[STATUS]", checkStatus);
if (!checkStatus) {
return NextResponse.json(
{
success: false,
message: "Failed to get data donation",
reason: "Status not found",
},
{ status: 500 }
);
}
fixData = await prisma.donasi.findMany({
take: page ? takeData : undefined,
skip: page ? skipData : undefined,
orderBy: {
createdAt: "desc",
},
where: {
DonasiMaster_Status: {
name: checkStatus.name,
},
active: true,
title: {
contains: search || "",
mode: "insensitive",
},
},
select: {
id: true,
title: true,
Author: {
select: {
id: true,
username: true,
},
},
},
});
console.log("[LIST]", fixData);
}
return NextResponse.json(
{
success: true,
message: `Success get data donation ${category}`,
data: fixData,
},
{ status: 200 }
);
} catch (error) {
console.error("Error get data donation:", error);
return NextResponse.json(
{
success: false,
message: "Failed to get data donation",
reason: (error as Error).message,
},
{ status: 500 }
);
}
}

View File

@@ -0,0 +1,53 @@
import { NextResponse } from "next/server";
import prisma from "@/lib/prisma";
export { GET };
async function GET(request: Request, { params }: { params: { id: string } }) {
try {
const { id } = params;
const data = await prisma.event_Peserta.findMany({
where: {
eventId: id,
},
select: {
eventId: true,
userId: true,
isPresent: true,
User: {
select: {
id: true,
username: true,
nomor: true,
Profile: {
select: {
id: true,
name: true,
imageId: true,
},
},
},
},
},
});
return NextResponse.json(
{
success: true,
message: "Success get participants",
data: data,
},
{ status: 200 }
);
} catch (error) {
return NextResponse.json(
{
success: false,
message: "Error get participants",
reason: (error as Error).message,
},
{ status: 500 }
);
}
}

View File

@@ -0,0 +1,59 @@
import { NextResponse } from "next/server";
import prisma from "@/lib/prisma";
export { GET, PUT };
async function GET(request: Request, { params }: { params: { id: string } }) {
const { id } = params;
try {
const data = await prisma.eventMaster_TipeAcara.findUnique({
where: {
id: Number(id),
},
});
return NextResponse.json({
success: true,
message: "Success get type of event",
data: data,
});
} catch (error) {
console.error("Error get type of event", error);
return NextResponse.json({
success: false,
message: "Error get type of event",
reason: (error as Error).message,
});
}
}
async function PUT(request: Request, { params }: { params: { id: string } }) {
const { id } = params;
const { data } = await request.json();
try {
const updated = await prisma.eventMaster_TipeAcara.update({
where: {
id: Number(id),
},
data: {
name: data.name,
active: data.active,
},
});
return NextResponse.json({
success: true,
message: "Success update type of event",
data: updated,
});
} catch (error) {
console.error("Error update type of event", error);
return NextResponse.json({
success: false,
message: "Error update type of event",
reason: (error as Error).message,
});
}
}

View File

@@ -0,0 +1,70 @@
import { NextResponse } from "next/server";
import prisma from "@/lib/prisma";
export { GET, POST };
async function GET(request: Request) {
try {
const data = await prisma.eventMaster_TipeAcara.findMany({
orderBy: {
updatedAt: "desc",
},
});
return NextResponse.json({
success: true,
message: "Success get type of event",
data: data,
});
} catch (error) {
console.error("Error get type of event", error);
return NextResponse.json({
success: false,
message: "Error get type of event",
reason: (error as Error).message,
});
}
}
async function POST(request: Request) {
const { data } = await request.json();
try {
const checkList = await prisma.eventMaster_TipeAcara.count({});
if (!checkList) {
return NextResponse.json(
{
success: false,
message: "Type of event already exists",
},
{ status: 400 }
);
}
const created = await prisma.eventMaster_TipeAcara.create({
data: {
id: checkList + 1,
name: data,
},
});
return NextResponse.json(
{
success: true,
message: "Success create type of event",
},
{ status: 201 }
);
} catch (error) {
console.error("Error create type of event", error);
return NextResponse.json(
{
success: false,
message: "Error create type of event",
reason: (error as Error).message,
},
{ status: 500 }
);
}
}

View File

@@ -0,0 +1,37 @@
import { NextResponse } from "next/server";
import { prisma } from "@/lib";
export { GET };
async function GET(request: Request, { params }: { params: { id: string } }) {
const { id } = params;
const { searchParams } = new URL(request.url);
const page = Number(searchParams.get("page"));
const takeData = 5;
const skipData = page * takeData - takeData;
try {
const data = await prisma.donasi_PencairanDana.findMany({
take: page ? takeData : undefined,
skip: page ? skipData : undefined,
orderBy: {
createdAt: "asc",
},
where: {
donasiId: id,
},
});
return NextResponse.json({
success: true,
message: "Success get disbursement data",
data: data,
});
} catch (error) {
return NextResponse.json({
success: false,
message: "Error get disbursement data",
reason: error as Error,
});
}
}

View File

@@ -0,0 +1,74 @@
import prisma from "@/lib/prisma";
import { NextResponse } from "next/server";
export async function GET(
request: Request,
{ params }: { params: { id: string } }
) {
try {
let fixData;
const { id } = params;
const { searchParams } = new URL(request.url);
const page = Number(searchParams.get("page"));
const takeData = 10;
const skipData = page * takeData - takeData;
fixData = await prisma.donasi_Invoice.findMany({
take: page ? takeData : undefined,
skip: page ? skipData : undefined,
orderBy: {
createdAt: "desc",
},
where: {
donasiId: id,
DonasiMaster_StatusInvoice: {
name: "Berhasil",
},
},
select: {
id: true,
Author: {
select: {
id: true,
username: true,
},
},
nominal: true,
createdAt: true,
// updatedAt: true,
// DonasiMaster_StatusInvoice: true,
// donasiMaster_StatusInvoiceId: true,
// Donasi: {
// select: {
// id: true,
// title: true,
// target: true,
// progres: true,
// authorId: true,
// imagesId: true,
// publishTime: true,
// donasiMaster_KategoriId: true,
// donasiMaster_DurasiId: true,
// donasiMaster_StatusDonasiId: true,
// imageDonasi: true,
// DonasiMaster_Ketegori: true,
// DonasiMaster_Durasi: true,
// DonasiMaster_Status: true,
// },
// },
},
});
return NextResponse.json({
success: true,
message: "Data berhasil diambil",
data: fixData,
});
} catch (error) {
return NextResponse.json({
success: false,
message: "Terjadi kesalahan saat mengambil data",
reason: error as Error,
});
}
}

View File

@@ -13,7 +13,7 @@ async function POST(request: Request, { params }: { params: { id: string } }) {
data: {
donasiId: id,
nominal: data.nominal,
donasiMaster_BankId: data.bankId,
masterBankId: data.bankId,
authorId: data.authorId,
},
select: {
@@ -65,6 +65,7 @@ async function GET(request: Request, { params }: { params: { id: string } }) {
createdAt: true,
donasiMaster_BankId: true,
donasiMaster_StatusInvoiceId: true,
MasterBank: true,
Donasi: {
select: {
id: true,
@@ -137,13 +138,14 @@ async function PUT(request: Request, { params }: { params: { id: string } }) {
message: "Status tidak ditemukan",
});
}
const update = await prisma.donasi_Invoice.update({
where: {
id: id,
},
data: {
donasiMaster_StatusInvoiceId: checkStatus.id,
imageId: data.fileId,
imageId: data || null,
},
select: {
id: true,
@@ -162,6 +164,8 @@ async function PUT(request: Request, { params }: { params: { id: string } }) {
},
});
console.log("[UPDATE INVOICE]", update);
return NextResponse.json({
status: 200,
success: true,

View File

@@ -11,8 +11,6 @@ export async function GET(
const { searchParams } = new URL(request.url);
const userId = searchParams.get("userId");
console.log("userId", userId);
const checkDataEvent = await prisma.event.findUnique({
where: {
id: id,
@@ -53,8 +51,6 @@ export async function GET(
},
});
console.log("checkPeserta", checkPeserta);
if (checkPeserta) {
peserta = true;
} else {
@@ -116,33 +112,6 @@ export async function POST(
console.log("id", id);
console.log("data", data);
// const checkEvent = await prisma.event.findUnique({
// where: {
// id: id,
// },
// });
// if (!checkEvent) {
// return NextResponse.json(
// { message: "Event Not Found", response: null },
// { status: 400 }
// );
// }
// const checkPeserta = await prisma.event_Peserta.findFirst({
// where: {
// userId: userId,
// eventId: id,
// },
// });
// if (!checkPeserta) {
// return NextResponse.json(
// { message: "Peserta Not Found", response: null },
// { status: 400 }
// );
// }
if (category === "join_and_confirm") {
const join = await prisma.event_Peserta.create({
data: {
@@ -152,14 +121,13 @@ export async function POST(
},
});
console.log("join", join);
fixData = join;
} else if (category === "confirmation") {
const checkPeserta = await prisma.event_Peserta.findFirst({
where: {
userId: data.userId,
eventId: id,
isPresent: true,
isPresent: false,
},
});
@@ -179,7 +147,6 @@ export async function POST(
},
});
console.log("confirm", confirm);
fixData = confirm;
}

View File

@@ -0,0 +1,30 @@
import { prisma } from "@/lib";
import { NextResponse } from "next/server";
export async function GET(request: Request) {
try {
const res = await prisma.masterStatusTransaksi.findMany({
orderBy: {
updatedAt: "asc",
},
where: {
isActive: true,
},
});
return NextResponse.json(
{ success: true, message: "Berhasil mendapatkan data", data: res },
{ status: 200 }
);
} catch (error) {
console.log("[ERROR]", error);
return NextResponse.json(
{
success: false,
message: "API Error Get Data",
reason: (error as Error).message,
},
{ status: 500 }
);
}
}