Fix APi voting mobile laod data

API – Event (Mobile)
- src/app/api/mobile/event/route.ts
- src/app/api/mobile/event/[id]/[status]/route.ts
- src/app/api/mobile/event/[id]/participants/route.ts

API – Voting (Mobile)
- src/app/api/mobile/voting/[id]/[status]/route.ts

Docs
- PROMPT-AI.md

### No Issue
This commit is contained in:
2026-02-04 17:49:32 +08:00
parent 42803f9b92
commit 6aceb212e4
5 changed files with 72 additions and 14 deletions

View File

@@ -1,6 +1,7 @@
import { NextResponse } from "next/server";
import prisma from "@/lib/prisma";
import _ from "lodash";
import { PAGINATION_DEFAULT_TAKE } from "@/lib/constans-value/constansValue";
export { GET, PUT };
@@ -14,7 +15,7 @@ async function GET(
const { searchParams } = new URL(request.url);
const page = Number(searchParams.get("page")) || 1;
const takeData = 10;
const takeData = PAGINATION_DEFAULT_TAKE
const skipData = page * takeData - takeData;
const data = await prisma.event.findMany({

View File

@@ -6,6 +6,7 @@ import {
NotificationMobileTitleType,
} from "../../../../../../../types/type-mobile-notification";
import { routeUserMobile } from "@/lib/mobile/route-page-mobile";
import { PAGINATION_DEFAULT_TAKE } from "@/lib/constans-value/constansValue";
export { GET, POST };
@@ -47,7 +48,7 @@ async function POST(request: Request, { params }: { params: { id: string } }) {
message: "Success join event",
data: createJoin,
},
{ status: 200 }
{ status: 200 },
);
} catch (error) {
return NextResponse.json(
@@ -56,7 +57,7 @@ async function POST(request: Request, { params }: { params: { id: string } }) {
message: "Error join event",
reason: (error as Error).message,
},
{ status: 500 }
{ status: 500 },
);
}
}
@@ -64,12 +65,17 @@ async function POST(request: Request, { params }: { params: { id: string } }) {
async function GET(request: Request, { params }: { params: { id: string } }) {
try {
const { id } = params;
const { searchParams } = new URL(request.url);
const page = Number(searchParams.get("page")) || 1;
const takeData = PAGINATION_DEFAULT_TAKE
const skipData = page * takeData - takeData;
const data = await prisma.event_Peserta.findMany({
where: {
eventId: id,
},
select: {
id: true,
eventId: true,
userId: true,
isPresent: true,
@@ -87,6 +93,8 @@ async function GET(request: Request, { params }: { params: { id: string } }) {
},
},
},
take: takeData,
skip: skipData,
});
return NextResponse.json(
@@ -94,8 +102,14 @@ async function GET(request: Request, { params }: { params: { id: string } }) {
success: true,
message: "Success get participants",
data: data,
meta: {
page,
take: takeData,
total: await prisma.event_Peserta.count({ where: { eventId: id } }),
totalPages: Math.ceil(await prisma.event_Peserta.count({ where: { eventId: id } }) / takeData),
},
},
{ status: 200 }
{ status: 200 },
);
} catch (error) {
return NextResponse.json(
@@ -104,7 +118,7 @@ async function GET(request: Request, { params }: { params: { id: string } }) {
message: "Error get participants",
reason: (error as Error).message,
},
{ status: 500 }
{ status: 500 },
);
}
}

View File

@@ -5,6 +5,7 @@ import _ from "lodash";
import moment from "moment";
import { NextResponse } from "next/server";
import { NotificationMobileBodyType } from "../../../../../types/type-mobile-notification";
import { PAGINATION_DEFAULT_TAKE } from "@/lib/constans-value/constansValue";
export { GET, POST };
@@ -77,7 +78,7 @@ async function GET(request: Request) {
const category = searchParams.get("category");
const userId = searchParams.get("userId");
const page = Number(searchParams.get("page")) || 1;
const takeData = 5;
const takeData = PAGINATION_DEFAULT_TAKE;
const skipData = page * takeData - takeData;
console.log("[CAT]", category);
@@ -165,6 +166,7 @@ async function GET(request: Request) {
userId: userId,
},
select: {
id: true,
eventId: true,
userId: true,
Event: {

View File

@@ -14,10 +14,31 @@ async function GET(
const fixStatusName = _.startCase(status);
console.log("[STATUS]", fixStatusName);
let fixData;
const { searchParams } = new URL(request.url);
const page = Number(searchParams.get("page")) || 1;
const takeData = 10;
const skipData = page * takeData - takeData;
let data;
let totalCount;
if (fixStatusName === "Publish") {
fixData = await prisma.voting.findMany({
data = await prisma.voting.findMany({
where: {
authorId: id,
isActive: true,
akhirVote: {
gte: new Date(),
},
Voting_Status: {
name: fixStatusName,
},
},
take: takeData,
skip: skipData,
});
totalCount = await prisma.voting.count({
where: {
authorId: id,
isActive: true,
@@ -30,7 +51,18 @@ async function GET(
},
});
} else {
fixData = await prisma.voting.findMany({
data = await prisma.voting.findMany({
where: {
authorId: id,
Voting_Status: {
name: fixStatusName,
},
},
take: takeData,
skip: skipData,
});
totalCount = await prisma.voting.count({
where: {
authorId: id,
Voting_Status: {
@@ -40,10 +72,18 @@ async function GET(
});
}
const totalPages = Math.ceil(totalCount / takeData);
return NextResponse.json({
success: true,
message: "Success get voting",
data: fixData,
data: data,
pagination: {
currentPage: page,
totalPages: totalPages,
totalData: totalCount,
dataPerPage: takeData,
},
});
} catch (error) {
console.log("[ERROR]", error);