Files
hipmi/src/app/api/mobile/voting/[id]/contribution/route.ts
bagasbanuna 6f5849aa29 Fix API mobile
API – Voting (User)
- src/app/api/mobile/voting/route.ts
- src/app/api/mobile/voting/[id]/[status]/route.ts
- src/app/api/mobile/voting/[id]/contribution/route.ts

Docs
- PROMPT-AI.md

### No Issue
2026-02-05 17:35:49 +08:00

97 lines
2.3 KiB
TypeScript

import { NextResponse } from "next/server";
import prisma from "@/lib/prisma";
import { PAGINATION_DEFAULT_TAKE } from "@/lib/constans-value/constansValue";
export { GET };
async function GET(request: Request, { params }: { params: { id: string } }) {
const { id } = params;
const { searchParams } = new URL(request.url);
const authorId = searchParams.get("authorId");
const category = searchParams.get("category");
const page = Number(searchParams.get("page"));
const takeData = PAGINATION_DEFAULT_TAKE;
const skipData = page ? page * takeData - takeData : 0;
let fixData;
try {
if (category === "checked") {
const cek = await prisma.voting_Kontributor.count({
where: {
authorId: authorId,
votingId: id,
},
});
const cekPilihan = await prisma.voting_Kontributor.findFirst({
where: {
authorId: authorId,
votingId: id,
},
select: {
Voting_DaftarNamaVote: {
select: {
value: true,
},
},
},
});
if (cek > 0) {
fixData = true;
} else {
fixData = false;
}
fixData = {
isContribution: cek > 0,
nameChoice: cekPilihan?.Voting_DaftarNamaVote?.value,
};
} else if (category === "list") {
const listKontributor = await prisma.voting_Kontributor.findMany({
where: {
votingId: id,
},
take: page ? takeData : undefined,
skip: page ? skipData : undefined,
select: {
id: true,
Voting_DaftarNamaVote: {
select: {
value: true,
},
},
Author: {
select: {
id: true,
username: true,
Profile: {
select: {
id: true,
name: true,
imageId: true,
},
},
},
},
},
});
fixData = listKontributor;
}
return NextResponse.json({
success: true,
message: "Berhasil mendapatkan data",
data: fixData,
});
} catch (error) {
return NextResponse.json({
success: false,
message: "Gagal mendapatkan data",
reason: (error as Error).message,
});
}
}