diff --git a/src/app/api/mobile/admin/forum/[id]/comment/route.ts b/src/app/api/mobile/admin/forum/[id]/comment/route.ts index 49436f7a..fba11a88 100644 --- a/src/app/api/mobile/admin/forum/[id]/comment/route.ts +++ b/src/app/api/mobile/admin/forum/[id]/comment/route.ts @@ -1,12 +1,10 @@ - import _ from "lodash"; import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; -export async function GET( - request: Request, - { params }: { params: { id: string } } -) { +export { GET, PUT }; + +async function GET(request: Request, { params }: { params: { id: string } }) { const { id } = params; const { searchParams } = new URL(request.url); const search = searchParams.get("search"); @@ -17,7 +15,9 @@ export async function GET( let fixData; try { if (category === "get-all") { - fixData = await prisma.forum_Komentar.findMany({ + const getData = await prisma.forum_Komentar.findMany({ + take: page ? takeData : undefined, + skip: page ? skipData : undefined, orderBy: { createdAt: "desc", }, @@ -38,6 +38,11 @@ export async function GET( }, }, }); + + fixData = getData.map((v: any) => ({ + ..._.omit(v, ["Forum_ReportKomentar"]), + countReport: v.Forum_ReportKomentar.length, + })); } else if (category === "get-one") { fixData = await prisma.forum_Komentar.findUnique({ where: { @@ -63,6 +68,7 @@ export async function GET( { status: 200 } ); } catch (error) { + console.error(`[ERROR GET ${category} COMMENT]`, error); return NextResponse.json( { success: false, @@ -73,3 +79,36 @@ export async function GET( ); } } + +async function PUT(request: Request, { params }: { params: { id: string } }) { + const { id } = params; + try { + const deleteData = await prisma.forum_Komentar.update({ + where: { + id: id, + }, + data: { + isActive: false, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Success deactivate comment", + data: deleteData, + }, + { status: 200 } + ); + } catch (error) { + console.error("[ERROR DEACTIVATE COMMENT]", error); + return NextResponse.json( + { + success: false, + message: "Error deactivate comment", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/mobile/admin/forum/[id]/report-comment/route.ts b/src/app/api/mobile/admin/forum/[id]/report-comment/route.ts new file mode 100644 index 00000000..986f4ac8 --- /dev/null +++ b/src/app/api/mobile/admin/forum/[id]/report-comment/route.ts @@ -0,0 +1,69 @@ +import prisma from "@/lib/prisma"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + try { + let fixData; + const { id } = params; + const komentarId = id; + + fixData = await prisma.forum_ReportKomentar.findMany({ + take: page ? takeData : undefined, + skip: page ? skipData : undefined, + orderBy: { + createdAt: "desc", + }, + where: { + forum_KomentarId: komentarId, + }, + select: { + id: true, + deskripsi: true, + ForumMaster_KategoriReport: { + select: { + title: true, + deskripsi: true, + }, + }, + User: { + select: { + username: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Success get list report comment", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + console.error("[ERROR GET LIST REPORT COMMENT]", error); + return NextResponse.json( + { + success: false, + message: "Error get list report comment", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/mobile/admin/forum/[id]/report-posting/route.ts b/src/app/api/mobile/admin/forum/[id]/report-posting/route.ts new file mode 100644 index 00000000..d171e725 --- /dev/null +++ b/src/app/api/mobile/admin/forum/[id]/report-posting/route.ts @@ -0,0 +1,76 @@ +import { NextResponse } from "next/server"; +import { prisma } from "@/lib"; + +export 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; + let fixData; + + try { + fixData = await prisma.forum_ReportPosting.findMany({ + take: page ? takeData : undefined, + skip: page ? skipData : undefined, + orderBy: { + createdAt: "desc", + }, + where: { + forum_PostingId: id, + Forum_Posting: { + isActive: true, + diskusi: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }, + select: { + id: true, + deskripsi: true, + User: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + ForumMaster_KategoriReport: { + select: { + id: true, + title: true, + deskripsi: true, + }, + }, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Success get list report posting", + data: fixData, + }, + { status: 200 } + ); + } catch (error) { + console.error("[ERROR GET LIST REPORT POSTING]", error); + return NextResponse.json( + { + success: false, + message: "Error get list report posting", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/mobile/admin/forum/[id]/route.ts b/src/app/api/mobile/admin/forum/[id]/route.ts index 0a16d054..67798fa8 100644 --- a/src/app/api/mobile/admin/forum/[id]/route.ts +++ b/src/app/api/mobile/admin/forum/[id]/route.ts @@ -2,10 +2,9 @@ import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; import _ from "lodash"; -export async function GET( - request: Request, - { params }: { params: { id: string } } -) { +export { GET, PUT }; + +async function GET(request: Request, { params }: { params: { id: string } }) { const { searchParams } = new URL(request.url); const search = searchParams.get("search"); const page = searchParams.get("page"); @@ -14,13 +13,13 @@ export async function GET( const { id } = params; try { - const data = await prisma.forum_Posting.findFirst({ where: { id: id, }, select: { id: true, + isActive: true, diskusi: true, ForumMaster_StatusPosting: { select: { @@ -76,3 +75,46 @@ export async function GET( ); } } + +async function PUT(request: Request, { params }: { params: { id: string } }) { + const { id } = params; + try { + const data = await prisma.forum_Posting.update({ + where: { + id: id, + }, + data: { + isActive: false, + }, + }); + + const deactivateComment = await prisma.forum_Komentar.updateMany({ + where: { + forum_PostingId: id, + }, + data: { + isActive: false, + }, + }); + + console.log("[DEACTIVATE COMMENT]", deactivateComment); + return NextResponse.json( + { + success: true, + message: "Success deactivate posting", + data: data, + }, + { status: 200 } + ); + } catch (error) { + console.error("[ERROR DEACTIVATE POSTING]", error); + return NextResponse.json( + { + success: false, + message: "Error deactivate posting", + reason: (error as Error).message, + }, + { status: 500 } + ); + } +} diff --git a/src/app/api/mobile/admin/forum/route.ts b/src/app/api/mobile/admin/forum/route.ts index c52dd09c..bc7e02d2 100644 --- a/src/app/api/mobile/admin/forum/route.ts +++ b/src/app/api/mobile/admin/forum/route.ts @@ -7,7 +7,9 @@ async function GET(request: Request, { params }: { params: { name: string } }) { const { searchParams } = new URL(request.url); const category = searchParams.get("category"); const search = searchParams.get("search"); - + const page = searchParams.get("page"); + const takeData = 10; + const skipData = Number(page) * takeData - takeData; let fixData; try { @@ -50,6 +52,8 @@ async function GET(request: Request, { params }: { params: { name: string } }) { }; } else if (category === "posting") { fixData = await prisma.forum_Posting.findMany({ + take: page ? takeData : undefined, + skip: page ? skipData : undefined, orderBy: { createdAt: "desc", }, @@ -74,7 +78,88 @@ async function GET(request: Request, { params }: { params: { name: string } }) { }, }); } else if (category === "report_posting") { + fixData = await prisma.forum_ReportPosting.findMany({ + take: page ? takeData : undefined, + skip: page ? skipData : undefined, + orderBy: { + createdAt: "desc", + }, + where: { + Forum_Posting: { + isActive: true, + diskusi: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }, + select: { + id: true, + deskripsi: true, + createdAt: true, + User: { + select: { + id: true, + username: true, + Profile: { + select: { + name: true, + }, + }, + }, + }, + ForumMaster_KategoriReport: { + select: { + id: true, + title: true, + deskripsi: true, + }, + }, + Forum_Posting: { + select: { + id: true, + diskusi: true, + }, + }, + }, + }); } else if (category === "report_comment") { + fixData = await prisma.forum_ReportKomentar.findMany({ + take: page ? takeData : undefined, + skip: page ? skipData : undefined, + orderBy: { + createdAt: "desc", + }, + where: { + Forum_Komentar: { + isActive: true, + komentar: { + contains: search ? search : "", + mode: "insensitive", + }, + }, + }, + include: { + ForumMaster_KategoriReport: true, + User: { + select: { + username: true, + Profile: { + select: { + id: true, + name: true, + }, + }, + }, + }, + Forum_Komentar: { + select: { + id: true, + komentar: true, + }, + }, + }, + }); } else { return NextResponse.json( {