Fix Api Mobile
API – Admin Forum - src/app/api/mobile/admin/forum/route.ts - src/app/api/mobile/admin/forum/[id]/comment/route.ts - src/app/api/mobile/admin/forum/[id]/report-posting/route.ts Docs - PROMPT-AI.md ### No Issue
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
|
||||
File utama: src/app/api/mobile/admin/investment/[id]/investor/route.ts
|
||||
File utama: src/app/api/mobile/admin/forum/[id]/comment/route.ts
|
||||
|
||||
Terapkan pagination pada file "File utama" pada method GET
|
||||
Analisa juga file "File utama", jika belum memiliki page dari seachParams maka terapkan. Juga pastikan take dan skip sudah sesuai dengan pagination. Buat default nya menjadi 10 untuk take data
|
||||
|
||||
@@ -7,6 +7,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, PUT };
|
||||
|
||||
@@ -14,9 +15,9 @@ async function GET(request: Request, { params }: { params: { id: string } }) {
|
||||
const { id } = params;
|
||||
const { searchParams } = new URL(request.url);
|
||||
const search = searchParams.get("search");
|
||||
const page = searchParams.get("page");
|
||||
const takeData = 10;
|
||||
const skipData = Number(page) * takeData - takeData;
|
||||
const page = Number(searchParams.get("page"));
|
||||
const takeData = PAGINATION_DEFAULT_TAKE;
|
||||
const skipData = page * takeData - takeData;
|
||||
const category = searchParams.get("category");
|
||||
let fixData;
|
||||
try {
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
import { NextResponse } from "next/server";
|
||||
import { prisma } from "@/lib";
|
||||
import { PAGINATION_DEFAULT_TAKE } from "@/lib/constans-value/constansValue";
|
||||
|
||||
export async function GET(
|
||||
request: Request,
|
||||
{ params }: { params: { id: string } }
|
||||
{ params }: { params: { id: string } },
|
||||
) {
|
||||
const { id } = params;
|
||||
const { searchParams } = new URL(request.url);
|
||||
const search = searchParams.get("search");
|
||||
const page = searchParams.get("page");
|
||||
const takeData = 10;
|
||||
const takeData = PAGINATION_DEFAULT_TAKE;
|
||||
const skipData = Number(page) * takeData - takeData;
|
||||
let fixData;
|
||||
|
||||
@@ -60,7 +61,7 @@ export async function GET(
|
||||
message: "Success get list report posting",
|
||||
data: fixData,
|
||||
},
|
||||
{ status: 200 }
|
||||
{ status: 200 },
|
||||
);
|
||||
} catch (error) {
|
||||
console.error("[ERROR GET LIST REPORT POSTING]", error);
|
||||
@@ -70,7 +71,7 @@ export async function GET(
|
||||
message: "Error get list report posting",
|
||||
reason: (error as Error).message,
|
||||
},
|
||||
{ status: 500 }
|
||||
{ status: 500 },
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,7 +80,11 @@ async function GET(request: Request, { params }: { params: { name: string } }) {
|
||||
_count: {
|
||||
select: {
|
||||
Forum_ReportPosting: true,
|
||||
Forum_Komentar: true,
|
||||
Forum_Komentar: {
|
||||
where: {
|
||||
isActive: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -140,6 +144,14 @@ async function GET(request: Request, { params }: { params: { name: string } }) {
|
||||
},
|
||||
});
|
||||
|
||||
// Hitung count report untuk setiap Forum_Posting id
|
||||
const countByPostingId = data.reduce((acc: any, item: any) => {
|
||||
const key = item.Forum_Posting?.id;
|
||||
if (!key) return acc;
|
||||
acc[key] = (acc[key] || 0) + 1;
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
const filterLatest = (data: any) =>
|
||||
Object.values(
|
||||
data.reduce((acc: any, item: any) => {
|
||||
@@ -152,10 +164,16 @@ async function GET(request: Request, { params }: { params: { name: string } }) {
|
||||
acc[key] = item;
|
||||
}
|
||||
return acc;
|
||||
}, {})
|
||||
}, {}),
|
||||
);
|
||||
|
||||
fixData = filterLatest(data);
|
||||
const filteredData = filterLatest(data);
|
||||
|
||||
// Tambahkan count ke setiap item
|
||||
fixData = filteredData.map((item: any) => ({
|
||||
...item,
|
||||
count: countByPostingId[item.Forum_Posting?.id] || 0,
|
||||
}));
|
||||
} else if (category === "report_comment") {
|
||||
const data = await prisma.forum_ReportKomentar.findMany({
|
||||
take: page ? takeData : undefined,
|
||||
@@ -194,6 +212,14 @@ async function GET(request: Request, { params }: { params: { name: string } }) {
|
||||
},
|
||||
});
|
||||
|
||||
// Hitung count report untuk setiap Forum_Komentar id
|
||||
const countByKomentarId = data.reduce((acc: any, item: any) => {
|
||||
const key = item.Forum_Komentar?.id;
|
||||
if (!key) return acc;
|
||||
acc[key] = (acc[key] || 0) + 1;
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
const filterLatest = (data: any) =>
|
||||
Object.values(
|
||||
data.reduce((acc: any, item: any) => {
|
||||
@@ -206,10 +232,16 @@ async function GET(request: Request, { params }: { params: { name: string } }) {
|
||||
acc[key] = item;
|
||||
}
|
||||
return acc;
|
||||
}, {})
|
||||
}, {}),
|
||||
);
|
||||
|
||||
fixData = filterLatest(data);
|
||||
const filteredData = filterLatest(data);
|
||||
|
||||
// Tambahkan count ke setiap item
|
||||
fixData = filteredData.map((item: any) => ({
|
||||
...item,
|
||||
count: countByKomentarId[item.Forum_Komentar?.id] || 0,
|
||||
}));
|
||||
} else {
|
||||
return NextResponse.json(
|
||||
{
|
||||
@@ -217,7 +249,7 @@ async function GET(request: Request, { params }: { params: { name: string } }) {
|
||||
message: "Invalid category",
|
||||
reason: "Invalid category",
|
||||
},
|
||||
{ status: 400 }
|
||||
{ status: 400 },
|
||||
);
|
||||
}
|
||||
|
||||
@@ -227,7 +259,7 @@ async function GET(request: Request, { params }: { params: { name: string } }) {
|
||||
message: `Success get data forum ${category}`,
|
||||
data: fixData,
|
||||
},
|
||||
{ status: 200 }
|
||||
{ status: 200 },
|
||||
);
|
||||
} catch (error) {
|
||||
return NextResponse.json(
|
||||
@@ -236,7 +268,7 @@ async function GET(request: Request, { params }: { params: { name: string } }) {
|
||||
message: `Error get data forum ${category}`,
|
||||
reason: (error as Error).message,
|
||||
},
|
||||
{ status: 500 }
|
||||
{ status: 500 },
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user