From b3410a5804492b7bcbab4dc417ea10e2f6662047 Mon Sep 17 00:00:00 2001 From: bagasbanuna Date: Tue, 9 Dec 2025 17:38:25 +0800 Subject: [PATCH] Fix API Mobile for QC: Ayu Fix: - modified: src/app/api/mobile/admin/forum/route.ts ### No Issue --- src/app/api/mobile/admin/forum/route.ts | 56 +++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/src/app/api/mobile/admin/forum/route.ts b/src/app/api/mobile/admin/forum/route.ts index bc7e02d2..881ce3ae 100644 --- a/src/app/api/mobile/admin/forum/route.ts +++ b/src/app/api/mobile/admin/forum/route.ts @@ -1,5 +1,6 @@ import { NextResponse } from "next/server"; import { prisma } from "@/lib"; +import _ from "lodash"; export { GET }; @@ -51,7 +52,7 @@ async function GET(request: Request, { params }: { params: { name: string } }) { reportComment, }; } else if (category === "posting") { - fixData = await prisma.forum_Posting.findMany({ + const data = await prisma.forum_Posting.findMany({ take: page ? takeData : undefined, skip: page ? skipData : undefined, orderBy: { @@ -75,10 +76,24 @@ async function GET(request: Request, { params }: { params: { name: string } }) { Profile: true, }, }, + _count: { + select: { + Forum_ReportPosting: true, + Forum_Komentar: true, + }, + }, }, }); + + fixData = data.map((item) => ({ + ..._.omit(item, "_count"), + reportPosting: item._count.Forum_ReportPosting, + komentar: item._count.Forum_Komentar, + })); + + console.log("fixData >>", fixData); } else if (category === "report_posting") { - fixData = await prisma.forum_ReportPosting.findMany({ + const data = await prisma.forum_ReportPosting.findMany({ take: page ? takeData : undefined, skip: page ? skipData : undefined, orderBy: { @@ -123,8 +138,25 @@ async function GET(request: Request, { params }: { params: { name: string } }) { }, }, }); + + const filterLatest = (data: any) => + Object.values( + data.reduce((acc: any, item: any) => { + const key = item.Forum_Posting?.id; + if (!key) return acc; + if ( + !acc[key] || + new Date(item.createdAt) > new Date(acc[key].createdAt) + ) { + acc[key] = item; + } + return acc; + }, {}) + ); + + fixData = filterLatest(data); } else if (category === "report_comment") { - fixData = await prisma.forum_ReportKomentar.findMany({ + const data = await prisma.forum_ReportKomentar.findMany({ take: page ? takeData : undefined, skip: page ? skipData : undefined, orderBy: { @@ -160,6 +192,23 @@ async function GET(request: Request, { params }: { params: { name: string } }) { }, }, }); + + const filterLatest = (data: any) => + Object.values( + data.reduce((acc: any, item: any) => { + const key = item.Forum_Komentar?.id; + if (!key) return acc; + if ( + !acc[key] || + new Date(item.createdAt) > new Date(acc[key].createdAt) + ) { + acc[key] = item; + } + return acc; + }, {}) + ); + + fixData = filterLatest(data); } else { return NextResponse.json( { @@ -171,7 +220,6 @@ async function GET(request: Request, { params }: { params: { name: string } }) { ); } - return NextResponse.json( { success: true,