From cb0845e264b7a07c0ff64796d3e58039cabec1f2 Mon Sep 17 00:00:00 2001 From: bagasbanuna Date: Sat, 17 Jan 2026 16:00:46 +0800 Subject: [PATCH 1/2] Fix notification forum Fix: modified: src/app/api/mobile/admin/forum/[id]/route.ts modified: src/app/api/mobile/forum/[id]/comment/route.ts modified: src/app/api/mobile/forum/[id]/report-posting/route.ts modified: src/app/api/mobile/forum/route.ts modified: src/lib/mobile/route-page-mobile.ts Add: src/app/api/mobile/forum/[id]/preview-report-posting/ ### No Issue --- src/app/api/mobile/admin/forum/[id]/route.ts | 28 +++++ .../api/mobile/forum/[id]/comment/route.ts | 37 +++++- .../[id]/preview-report-posting/route.ts | 49 ++++++++ .../mobile/forum/[id]/report-posting/route.ts | 115 +++++++++++++++--- src/app/api/mobile/forum/route.ts | 44 +++++-- src/lib/mobile/route-page-mobile.ts | 8 ++ 6 files changed, 253 insertions(+), 28 deletions(-) create mode 100644 src/app/api/mobile/forum/[id]/preview-report-posting/route.ts diff --git a/src/app/api/mobile/admin/forum/[id]/route.ts b/src/app/api/mobile/admin/forum/[id]/route.ts index 67798fa8..7e3d6986 100644 --- a/src/app/api/mobile/admin/forum/[id]/route.ts +++ b/src/app/api/mobile/admin/forum/[id]/route.ts @@ -1,6 +1,12 @@ import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; import _ from "lodash"; +import { sendNotificationMobileToOneUser } from "@/lib/mobile/notification/send-notification"; +import { + NotificationMobileBodyType, + NotificationMobileTitleType, +} from "../../../../../../../types/type-mobile-notification"; +import { routeUserMobile } from "@/lib/mobile/route-page-mobile"; export { GET, PUT }; @@ -78,6 +84,11 @@ async function GET(request: Request, { params }: { params: { id: string } }) { async function PUT(request: Request, { params }: { params: { id: string } }) { const { id } = params; + const data = await request.json(); + const { senderId } = data; + + console.log("SENDER", senderId); + try { const data = await prisma.forum_Posting.update({ where: { @@ -86,6 +97,10 @@ async function PUT(request: Request, { params }: { params: { id: string } }) { data: { isActive: false, }, + select: { + authorId: true, + diskusi: true, + }, }); const deactivateComment = await prisma.forum_Komentar.updateMany({ @@ -97,6 +112,19 @@ async function PUT(request: Request, { params }: { params: { id: string } }) { }, }); + // SEND NOTIFICATION + await sendNotificationMobileToOneUser({ + recipientId: data?.authorId as string, + senderId: senderId, + payload: { + title: "Penghapusan Postingan" as NotificationMobileTitleType, + body: `Postingan anda telah dilaporkan: ${data?.diskusi}` as NotificationMobileBodyType, + type: "announcement", + kategoriApp: "FORUM", + deepLink: routeUserMobile.forumPreviewReportPosting({ id: id }), + }, + }); + console.log("[DEACTIVATE COMMENT]", deactivateComment); return NextResponse.json( { diff --git a/src/app/api/mobile/forum/[id]/comment/route.ts b/src/app/api/mobile/forum/[id]/comment/route.ts index 6c2aa898..04269853 100644 --- a/src/app/api/mobile/forum/[id]/comment/route.ts +++ b/src/app/api/mobile/forum/[id]/comment/route.ts @@ -1,11 +1,18 @@ import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; +import { sendNotificationMobileToOneUser } from "@/lib/mobile/notification/send-notification"; +import { + NotificationMobileBodyType, + NotificationMobileTitleType, +} from "../../../../../../../types/type-mobile-notification"; +import { routeUserMobile } from "@/lib/mobile/route-page-mobile"; export { POST, GET, DELETE }; async function POST(request: Request, { params }: { params: { id: string } }) { const { id } = params; const { data } = await request.json(); + const { comment, authorId } = data; console.log("[ID COMMENT]", id); console.log("[DATA COMMENT]", data); @@ -14,8 +21,8 @@ async function POST(request: Request, { params }: { params: { id: string } }) { const createComment = await prisma.forum_Komentar.create({ data: { forum_PostingId: id, - komentar: data.comment, - authorId: data.authorId, + komentar: comment, + authorId: authorId, }, select: { id: true, @@ -38,6 +45,24 @@ async function POST(request: Request, { params }: { params: { id: string } }) { }, }); + const findForum = await prisma.forum_Posting.findUnique({ + where: { id: id }, + select: { authorId: true, diskusi: true }, + }); + + // SEND NOTIFICATION + await sendNotificationMobileToOneUser({ + recipientId: findForum?.authorId as string, + senderId: authorId, + payload: { + title: "Komentar Baru" as NotificationMobileTitleType, + body: `Ayo cek komentar pada postingan: ${findForum?.diskusi}` as NotificationMobileBodyType, + type: "announcement", + kategoriApp: "FORUM", + deepLink: routeUserMobile.forumDetail({ id: id }), + }, + }); + if (!createComment) { return NextResponse.json({ status: 400, @@ -52,7 +77,6 @@ async function POST(request: Request, { params }: { params: { id: string } }) { message: "Berhasil update data", data: createComment, }); - } catch (error) { console.log("[ERROR COMMENT]", error); return NextResponse.json({ @@ -114,7 +138,10 @@ async function GET(request: Request, { params }: { params: { id: string } }) { } } -async function DELETE(request: Request, { params }: { params: { id: string } }) { +async function DELETE( + request: Request, + { params }: { params: { id: string } } +) { const { id } = params; try { @@ -146,4 +173,4 @@ async function DELETE(request: Request, { params }: { params: { id: string } }) reason: (error as Error).message || error, }); } -} \ No newline at end of file +} diff --git a/src/app/api/mobile/forum/[id]/preview-report-posting/route.ts b/src/app/api/mobile/forum/[id]/preview-report-posting/route.ts new file mode 100644 index 00000000..5bcdd686 --- /dev/null +++ b/src/app/api/mobile/forum/[id]/preview-report-posting/route.ts @@ -0,0 +1,49 @@ +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + const { id } = params; + + try { + const data = await prisma.forum_Posting.findUnique({ + where: { + id: id, + }, + select: { + id: true, + diskusi: true, + isActive: true, + createdAt: true, + authorId: true, + Author: { + select: { + id: true, + username: true, + }, + }, + // Forum_ReportPosting: { + // select: { + // deskripsi: true, + // ForumMaster_KategoriReport: true, + // }, + // }, + }, + }); + + return NextResponse.json({ + status: 200, + success: true, + data: data, + }); + } catch (error) { + console.log("[ERROR]", error); + return NextResponse.json({ + status: 500, + success: false, + message: "Gagal mendapatkan data posting", + reason: (error as Error).message, + }); + } +} diff --git a/src/app/api/mobile/forum/[id]/report-posting/route.ts b/src/app/api/mobile/forum/[id]/report-posting/route.ts index 73b6ea7a..9217906d 100644 --- a/src/app/api/mobile/forum/[id]/report-posting/route.ts +++ b/src/app/api/mobile/forum/[id]/report-posting/route.ts @@ -1,5 +1,17 @@ import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; +import { + sendNotificationMobileToManyUser, + sendNotificationMobileToOneUser, +} from "@/lib/mobile/notification/send-notification"; +import { + NotificationMobileBodyType, + NotificationMobileTitleType, +} from "../../../../../../../types/type-mobile-notification"; +import { + routeAdminMobile, + routeUserMobile, +} from "@/lib/mobile/route-page-mobile"; export { POST }; @@ -7,38 +19,73 @@ async function POST(request: Request, { params }: { params: { id: string } }) { let fixData; const { id } = params; const { data } = await request.json(); + const { authorId: reportedUserId, categoryId, description } = data; + console.log("[DATA]", data); console.log("[ID]", id); try { - const content = await prisma.forum_Posting.findUnique({ - where: { - id: id, - }, + // Postingan yang akan di report + const findPosting = await prisma.forum_Posting.findUnique({ + where: { id: id }, + select: { authorId: true, diskusi: true }, }); - const msg = `Report Postingan: "${content?.diskusi}"`; - const res = await fetch( - `https://cld-dkr-prod-wajs-server.wibudev.com/api/wa/code?nom=6282340374412&text=${msg}`, - { cache: "no-cache" } - ); + // List admin untuk dikirim notifikasi + const adminUsers = await prisma.user.findMany({ + where: { + masterUserRoleId: "2", + NOT: { id: findPosting?.authorId as any }, + }, + select: { id: true }, + }); - if (data.categoryId) { - fixData = await prisma.forum_ReportPosting.create({ + if (categoryId) { + const createReported = await prisma.forum_ReportPosting.create({ data: { forum_PostingId: id, - userId: data.authorId, - forumMaster_KategoriReportId: data.categoryId, + userId: reportedUserId, + forumMaster_KategoriReportId: categoryId, }, }); + + //SEND NOTIFICATION + await sendNotificationMobileToManyUser({ + recipientIds: adminUsers.map((user) => user.id), + senderId: reportedUserId, + payload: { + title: "Laporan Dari User" as NotificationMobileTitleType, + body: `Report terhadap postingan, ${findPosting?.diskusi}` as NotificationMobileBodyType, + type: "announcement", + kategoriApp: "FORUM", + deepLink: routeAdminMobile.forumPreviewReportPosting, + }, + }); + + fixData = createReported; } else { - fixData = await prisma.forum_ReportPosting.create({ + const createReported = await prisma.forum_ReportPosting.create({ data: { forum_PostingId: id, - userId: data.authorId, - deskripsi: data.description, + userId: reportedUserId, + deskripsi: description, }, }); + + //SEND NOTIFICATION + await sendNotificationMobileToManyUser({ + recipientIds: adminUsers.map((user) => user.id), + senderId: reportedUserId, + payload: { + title: "Laporan Dari User" as NotificationMobileTitleType, + body: `Report terhadap postingan, ${findPosting?.diskusi}` as NotificationMobileBodyType, + type: "announcement", + kategoriApp: "FORUM", + deepLink: routeAdminMobile.forumPreviewReportPosting, + }, + }); + + fixData = createReported; } if (!fixData) { @@ -64,3 +111,39 @@ async function POST(request: Request, { params }: { params: { id: string } }) { }); } } + +// async function GET(request: Request, { params }: { params: { id: string } }) { +// const { id } = params; + +// try { +// const report = await prisma.forum_ReportPosting.findUnique({ +// where: { id: id }, +// select: { +// id: true, +// ForumMaster_KategoriReport: true, +// deskripsi: true, +// Forum_Posting: { +// select: { +// id: true, +// diskusi: true, +// authorId: true, +// }, +// }, +// }, +// }); + +// return NextResponse.json({ +// status: 200, +// success: true, +// data: report, +// }); +// } catch (error) { +// console.log("[ERROR]", error); +// return NextResponse.json({ +// status: 500, +// success: false, +// message: "Gagal mendapatkan report posting", +// reason: (error as Error).message, +// }); +// } +// } diff --git a/src/app/api/mobile/forum/route.ts b/src/app/api/mobile/forum/route.ts index bd236cf4..9ecc0f91 100644 --- a/src/app/api/mobile/forum/route.ts +++ b/src/app/api/mobile/forum/route.ts @@ -1,22 +1,54 @@ import _ from "lodash"; import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; +import { sendNotificationMobileToManyUser } from "@/lib/mobile/notification/send-notification"; +import { NotificationMobileBodyType, NotificationMobileTitleType } from "../../../../../types/type-mobile-notification"; +import { routeUserMobile } from "@/lib/mobile/route-page-mobile"; export { POST, GET }; async function POST(request: Request) { const { data } = await request.json(); console.log("[DATA]", data); + const { diskusi, authorId } = data; try { const create = await prisma.forum_Posting.create({ data: { - diskusi: data.diskusi, - authorId: data.authorId, + diskusi: diskusi, + authorId: authorId, forumMaster_StatusPostingId: 1, }, }); + if (!create) { + return NextResponse.json({ + success: false, + message: "Gagal memposting", + status: 400, + }); + } + + const allUsers = await prisma.user.findMany({ + where: { + id: { not: authorId }, + }, + select: { id: true }, + }); + + // SEND NOTIFICATION + await sendNotificationMobileToManyUser({ + recipientIds: allUsers.map((user) => user.id), + senderId: authorId, + payload: { + title: "Ada Diskusi Baru" as NotificationMobileTitleType, + body: `${diskusi}` as NotificationMobileBodyType, + type: "announcement", + kategoriApp: "FORUM", + deepLink: routeUserMobile.forumBeranda, + }, + }); + return NextResponse.json({ success: true, message: "Berhasil membuat postingan", @@ -43,7 +75,6 @@ async function GET(request: Request) { const takeData = 5; const skipData = (Number(page) - 1) * takeData; - // console.log("authorId", authorId); // console.log("userLoginId", userLoginId); // console.log("search", search); @@ -83,7 +114,7 @@ async function GET(request: Request) { notIn: blockUserId, }, }, - + select: { id: true, diskusi: true, @@ -128,13 +159,12 @@ async function GET(request: Request) { fixData = newData; } else if (category === "forumku") { - const count = await prisma.forum_Posting.count({ where: { isActive: true, authorId: authorId, }, - }) + }); const data = await prisma.forum_Posting.findMany({ take: page ? takeData : undefined, @@ -191,7 +221,7 @@ async function GET(request: Request) { const dataFix = { data: newData, count, - } + }; fixData = dataFix; } else { diff --git a/src/lib/mobile/route-page-mobile.ts b/src/lib/mobile/route-page-mobile.ts index ef8ae87b..b480b566 100644 --- a/src/lib/mobile/route-page-mobile.ts +++ b/src/lib/mobile/route-page-mobile.ts @@ -15,6 +15,9 @@ const routeAdminMobile = { // VOTING votingByStatus: ({ status }: { status: StatusApp }) => `/admin/voting/${status}/status`, + + // FORUM + forumPreviewReportPosting: `/admin/forum/report-posting`, }; const routeUserMobile = { @@ -33,4 +36,9 @@ const routeUserMobile = { votingByStatus: ({ status }: { status?: StatusApp }) => `/voting/(tabs)/status?status=${status}`, votingDetailPublised: ({ id }: { id: string }) => `/voting/${id}`, + + // FORUM + forumBeranda: `/forum`, + forumDetail: ({ id }: { id: string }) => `/forum/${id}`, + forumPreviewReportPosting: ({ id }: { id: string }) => `/forum/${id}/preview-report-posting`, }; From 3c6dde6204851aa612c5adfcd06cc4779162b96e Mon Sep 17 00:00:00 2001 From: bagasbanuna Date: Mon, 19 Jan 2026 17:38:15 +0800 Subject: [PATCH 2/2] Fix API notification to report comment Fix: - src/app/api/mobile/admin/forum/[id]/comment/route.ts - src/app/api/mobile/admin/forum/[id]/route.ts - src/app/api/mobile/forum/[id]/preview-report-posting/route.ts - src/app/api/mobile/forum/[id]/report-commentar/route.ts - src/app/api/mobile/forum/[id]/report-posting/route.ts - src/lib/mobile/route-page-mobile.ts - tsconfig.json Deleted: - src/app/api/mobile/forum/[id]/report-comment/route.ts Add: - src/app/api/mobile/forum/[id]/preview-report-comment/ - src/app/api/mobile/forum/[id]/report-comment-del-soon/ ### No Issue --- .../mobile/admin/forum/[id]/comment/route.ts | 32 +++++++- src/app/api/mobile/admin/forum/[id]/route.ts | 12 +-- .../[id]/preview-report-comment/route.ts | 42 +++++++++++ .../[id]/preview-report-posting/route.ts | 12 +-- .../route.ts | 0 .../forum/[id]/report-commentar/route.ts | 74 +++++++++++++------ .../mobile/forum/[id]/report-posting/route.ts | 55 ++------------ src/lib/mobile/route-page-mobile.ts | 2 + tsconfig.json | 2 +- 9 files changed, 147 insertions(+), 84 deletions(-) create mode 100644 src/app/api/mobile/forum/[id]/preview-report-comment/route.ts rename src/app/api/mobile/forum/[id]/{report-comment => report-comment-del-soon}/route.ts (100%) 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 fba11a88..d334908d 100644 --- a/src/app/api/mobile/admin/forum/[id]/comment/route.ts +++ b/src/app/api/mobile/admin/forum/[id]/comment/route.ts @@ -1,6 +1,12 @@ import _ from "lodash"; import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; +import { sendNotificationMobileToOneUser } from "@/lib/mobile/notification/send-notification"; +import { + NotificationMobileBodyType, + NotificationMobileTitleType, +} from "../../../../../../../../types/type-mobile-notification"; +import { routeUserMobile } from "@/lib/mobile/route-page-mobile"; export { GET, PUT }; @@ -82,21 +88,43 @@ async function GET(request: Request, { params }: { params: { id: string } }) { async function PUT(request: Request, { params }: { params: { id: string } }) { const { id } = params; + const data = await request.json(); + + console.log("SENDER Comment", data); + try { - const deleteData = await prisma.forum_Komentar.update({ + const deactiveComment = await prisma.forum_Komentar.update({ where: { id: id, }, data: { isActive: false, }, + select: { + authorId: true, + komentar: true, + }, }); + // SEND NOTIFICATION + await sendNotificationMobileToOneUser({ + recipientId: deactiveComment?.authorId as string, + senderId: data?.senderId, + payload: { + title: "Penghapusan Komentar" as NotificationMobileTitleType, + body: `Komentar anda telah dilaporkan: ${deactiveComment?.komentar}` as NotificationMobileBodyType, + type: "announcement", + kategoriApp: "FORUM", + deepLink: routeUserMobile.forumPreviewReportComment({ id: id }), + }, + }); + + console.log("[DEACTIVATE COMMENT]"); return NextResponse.json( { success: true, message: "Success deactivate comment", - data: deleteData, + // data: deactiveComment, }, { status: 200 } ); diff --git a/src/app/api/mobile/admin/forum/[id]/route.ts b/src/app/api/mobile/admin/forum/[id]/route.ts index 7e3d6986..f96a70d1 100644 --- a/src/app/api/mobile/admin/forum/[id]/route.ts +++ b/src/app/api/mobile/admin/forum/[id]/route.ts @@ -87,10 +87,10 @@ async function PUT(request: Request, { params }: { params: { id: string } }) { const data = await request.json(); const { senderId } = data; - console.log("SENDER", senderId); + console.log("SENDER POSTING", data); try { - const data = await prisma.forum_Posting.update({ + const deactivePosting = await prisma.forum_Posting.update({ where: { id: id, }, @@ -114,23 +114,23 @@ async function PUT(request: Request, { params }: { params: { id: string } }) { // SEND NOTIFICATION await sendNotificationMobileToOneUser({ - recipientId: data?.authorId as string, + recipientId: deactivePosting?.authorId as string, senderId: senderId, payload: { title: "Penghapusan Postingan" as NotificationMobileTitleType, - body: `Postingan anda telah dilaporkan: ${data?.diskusi}` as NotificationMobileBodyType, + body: `Postingan anda telah dilaporkan: ${deactivePosting?.diskusi}` as NotificationMobileBodyType, type: "announcement", kategoriApp: "FORUM", deepLink: routeUserMobile.forumPreviewReportPosting({ id: id }), }, }); - console.log("[DEACTIVATE COMMENT]", deactivateComment); + console.log("[DEACTIVATE POSTINGAN & COMMENT]", deactivateComment); return NextResponse.json( { success: true, message: "Success deactivate posting", - data: data, + data: deactivePosting, }, { status: 200 } ); diff --git a/src/app/api/mobile/forum/[id]/preview-report-comment/route.ts b/src/app/api/mobile/forum/[id]/preview-report-comment/route.ts new file mode 100644 index 00000000..058dee31 --- /dev/null +++ b/src/app/api/mobile/forum/[id]/preview-report-comment/route.ts @@ -0,0 +1,42 @@ +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + const { id } = params; + + try { + const data = await prisma.forum_Komentar.findUnique({ + where: { + id: id, + }, + select: { + id: true, + komentar: true, + isActive: true, + createdAt: true, + Forum_ReportKomentar: { + select: { + deskripsi: true, + ForumMaster_KategoriReport: true, + }, + }, + }, + }); + + return NextResponse.json({ + status: 200, + success: true, + data: data, + }); + } catch (error) { + console.log("[ERROR]", error); + return NextResponse.json({ + status: 500, + success: false, + message: "Gagal mendapatkan data posting", + reason: (error as Error).message, + }); + } +} diff --git a/src/app/api/mobile/forum/[id]/preview-report-posting/route.ts b/src/app/api/mobile/forum/[id]/preview-report-posting/route.ts index 5bcdd686..b68db0eb 100644 --- a/src/app/api/mobile/forum/[id]/preview-report-posting/route.ts +++ b/src/app/api/mobile/forum/[id]/preview-report-posting/route.ts @@ -23,12 +23,12 @@ export async function GET( username: true, }, }, - // Forum_ReportPosting: { - // select: { - // deskripsi: true, - // ForumMaster_KategoriReport: true, - // }, - // }, + Forum_ReportPosting: { + select: { + deskripsi: true, + ForumMaster_KategoriReport: true, + }, + }, }, }); diff --git a/src/app/api/mobile/forum/[id]/report-comment/route.ts b/src/app/api/mobile/forum/[id]/report-comment-del-soon/route.ts similarity index 100% rename from src/app/api/mobile/forum/[id]/report-comment/route.ts rename to src/app/api/mobile/forum/[id]/report-comment-del-soon/route.ts diff --git a/src/app/api/mobile/forum/[id]/report-commentar/route.ts b/src/app/api/mobile/forum/[id]/report-commentar/route.ts index 49198f92..33e8ae61 100644 --- a/src/app/api/mobile/forum/[id]/report-commentar/route.ts +++ b/src/app/api/mobile/forum/[id]/report-commentar/route.ts @@ -1,5 +1,11 @@ import { prisma } from "@/lib"; +import { sendNotificationMobileToManyUser } from "@/lib/mobile/notification/send-notification"; +import { routeAdminMobile } from "@/lib/mobile/route-page-mobile"; import { NextResponse } from "next/server"; +import { + NotificationMobileBodyType, + NotificationMobileTitleType, +} from "../../../../../../../types/type-mobile-notification"; export { POST }; @@ -7,44 +13,70 @@ async function POST(request: Request, { params }: { params: { id: string } }) { let fixData; const { id } = params; const { data } = await request.json(); - console.log("[DATA]", data); - console.log("[ID]", id); + const { authorId: reportedUserId, categoryId, description } = data; try { - const content = await prisma.forum_Komentar.findUnique({ - where: { - id: id, - }, + // Komentar yang di report + const findComment = await prisma.forum_Komentar.findUnique({ + where: { id: id }, + select: { authorId: true, komentar: true }, }); - const reportList = await prisma.forumMaster_KategoriReport.findUnique({ + // List admin untuk dikirim notifikasi + const adminUsers = await prisma.user.findMany({ where: { - id: data.categoryId, + masterUserRoleId: "2", + NOT: { id: findComment?.authorId as any }, }, + select: { id: true }, }); - const msg = `Report Komentar: "${content?.komentar}" dengan kategori \n\n\n${reportList?.title} : \n\n${reportList?.deskripsi}`; - const res = await fetch( - `https://cld-dkr-prod-wajs-server.wibudev.com/api/wa/code?nom=6282340374412&text=${msg}`, - { cache: "no-cache" } - ); - - if (data.categoryId) { - fixData = await prisma.forum_ReportKomentar.create({ + if (categoryId) { + const createdReport = await prisma.forum_ReportKomentar.create({ data: { forum_KomentarId: id, - userId: data.authorId, - forumMaster_KategoriReportId: data.categoryId as any, + userId: reportedUserId, + forumMaster_KategoriReportId: categoryId, }, }); + + //SEND NOTIFICATION + await sendNotificationMobileToManyUser({ + recipientIds: adminUsers.map((user) => user.id), + senderId: reportedUserId, + payload: { + title: "Laporan Dari User" as NotificationMobileTitleType, + body: `Report terhadap komentar, ${findComment?.komentar}` as NotificationMobileBodyType, + type: "announcement", + kategoriApp: "FORUM", + deepLink: routeAdminMobile.forumPreviewReportComment, + }, + }); + + fixData = createdReport; } else { - fixData = await prisma.forum_ReportKomentar.create({ + const createdReport = await prisma.forum_ReportKomentar.create({ data: { forum_KomentarId: id, - userId: data.authorId, - deskripsi: data.description, + userId: reportedUserId, + deskripsi: description, }, }); + + //SEND NOTIFICATION + await sendNotificationMobileToManyUser({ + recipientIds: adminUsers.map((user) => user.id), + senderId: reportedUserId, + payload: { + title: "Laporan Dari User" as NotificationMobileTitleType, + body: `Report terhadap komentar, ${findComment?.komentar}` as NotificationMobileBodyType, + type: "announcement", + kategoriApp: "FORUM", + deepLink: routeAdminMobile.forumPreviewReportComment, + }, + }); + + fixData = createdReport; } if (!fixData) { diff --git a/src/app/api/mobile/forum/[id]/report-posting/route.ts b/src/app/api/mobile/forum/[id]/report-posting/route.ts index 9217906d..d4d93e49 100644 --- a/src/app/api/mobile/forum/[id]/report-posting/route.ts +++ b/src/app/api/mobile/forum/[id]/report-posting/route.ts @@ -1,17 +1,15 @@ -import { NextResponse } from "next/server"; -import prisma from "@/lib/prisma"; import { - sendNotificationMobileToManyUser, - sendNotificationMobileToOneUser, + sendNotificationMobileToManyUser } from "@/lib/mobile/notification/send-notification"; +import { + routeAdminMobile +} from "@/lib/mobile/route-page-mobile"; +import prisma from "@/lib/prisma"; +import { NextResponse } from "next/server"; import { NotificationMobileBodyType, NotificationMobileTitleType, } from "../../../../../../../types/type-mobile-notification"; -import { - routeAdminMobile, - routeUserMobile, -} from "@/lib/mobile/route-page-mobile"; export { POST }; @@ -21,9 +19,6 @@ async function POST(request: Request, { params }: { params: { id: string } }) { const { data } = await request.json(); const { authorId: reportedUserId, categoryId, description } = data; - console.log("[DATA]", data); - console.log("[ID]", id); - try { // Postingan yang akan di report const findPosting = await prisma.forum_Posting.findUnique({ @@ -110,40 +105,4 @@ async function POST(request: Request, { params }: { params: { id: string } }) { reason: (error as Error).message, }); } -} - -// async function GET(request: Request, { params }: { params: { id: string } }) { -// const { id } = params; - -// try { -// const report = await prisma.forum_ReportPosting.findUnique({ -// where: { id: id }, -// select: { -// id: true, -// ForumMaster_KategoriReport: true, -// deskripsi: true, -// Forum_Posting: { -// select: { -// id: true, -// diskusi: true, -// authorId: true, -// }, -// }, -// }, -// }); - -// return NextResponse.json({ -// status: 200, -// success: true, -// data: report, -// }); -// } catch (error) { -// console.log("[ERROR]", error); -// return NextResponse.json({ -// status: 500, -// success: false, -// message: "Gagal mendapatkan report posting", -// reason: (error as Error).message, -// }); -// } -// } +} \ No newline at end of file diff --git a/src/lib/mobile/route-page-mobile.ts b/src/lib/mobile/route-page-mobile.ts index b480b566..bc1a7d06 100644 --- a/src/lib/mobile/route-page-mobile.ts +++ b/src/lib/mobile/route-page-mobile.ts @@ -18,6 +18,7 @@ const routeAdminMobile = { // FORUM forumPreviewReportPosting: `/admin/forum/report-posting`, + forumPreviewReportComment: `/admin/forum/report-comment`, }; const routeUserMobile = { @@ -41,4 +42,5 @@ const routeUserMobile = { forumBeranda: `/forum`, forumDetail: ({ id }: { id: string }) => `/forum/${id}`, forumPreviewReportPosting: ({ id }: { id: string }) => `/forum/${id}/preview-report-posting`, + forumPreviewReportComment: ({ id }: { id: string }) => `/forum/${id}/preview-report-comment`, }; diff --git a/tsconfig.json b/tsconfig.json index 75848cd0..761e7ef5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,6 +23,6 @@ "@/*": ["./src/*"] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "src/app_modules/investasi/proses_transaksi/view.jsx", "src/app/api/investasi/midtrans/[id]/route.ts", "src/app_modules/job/create/TextEdit.tsx", "src/app/api/mobile/forum/[id]/report-comment/route.ts"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "src/app_modules/investasi/proses_transaksi/view.jsx", "src/app/api/investasi/midtrans/[id]/route.ts", "src/app_modules/job/create/TextEdit.tsx", "src/app/api/mobile/forum/[id]/report-comment-del-soon/route.ts"], "exclude": ["node_modules"] }