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"] }