diff --git a/prisma/schema.prisma b/prisma/schema.prisma index f46fcb0..c2f5c11 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -423,6 +423,7 @@ model DivisionDisscussion { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt DivisionDisscussionComment DivisionDisscussionComment[] + DivisionDiscussionFile DivisionDiscussionFile[] } model DivisionDisscussionComment { @@ -437,6 +438,17 @@ model DivisionDisscussionComment { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } +model DivisionDiscussionFile { + id String @id @default(cuid()) + DivisionDisscussion DivisionDisscussion @relation(fields: [idDiscussion], references: [id]) + idDiscussion String + name String + extension String + idStorage String? + isActive Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} model DivisionDocumentFolderFile { id String @id @default(cuid()) diff --git a/src/app/api/mobile/discussion/[id]/route.ts b/src/app/api/mobile/discussion/[id]/route.ts index 33de9f9..07d9633 100644 --- a/src/app/api/mobile/discussion/[id]/route.ts +++ b/src/app/api/mobile/discussion/[id]/route.ts @@ -70,6 +70,21 @@ export async function GET(request: Request, context: { params: { id: string } }) })) return NextResponse.json({ success: true, message: "Berhasil mendapatkan komentar", data: omitMember }, { status: 200 }); + } else if (cat == "file") { + const data = await prisma.divisionDiscussionFile.findMany({ + where: { + idDiscussion: id, + isActive: true + }, + select: { + id: true, + idStorage: true, + name: true, + extension: true + } + }) + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan file", data: data }, { status: 200 }); } else { const data = await prisma.divisionDisscussion.findUnique({ where: { diff --git a/src/app/api/mobile/discussion/route.ts b/src/app/api/mobile/discussion/route.ts index 663b00b..f8d8d27 100644 --- a/src/app/api/mobile/discussion/route.ts +++ b/src/app/api/mobile/discussion/route.ts @@ -1,4 +1,5 @@ -import { funSendWebPush, prisma } from "@/module/_global"; +import { DivisionDiscussionFile } from './../../../../../node_modules/.prisma/client/index.d'; +import { DIR, funSendWebPush, funUploadFile, prisma } from "@/module/_global"; import { funGetUserById } from "@/module/auth"; import { createLogUserMobile } from "@/module/user"; import _ from "lodash"; @@ -102,7 +103,14 @@ export async function GET(request: Request) { // CREATE DISCUSSION export async function POST(request: Request) { try { - const { idDivision, desc, user } = (await request.json()); + const body = await request.formData() + const dataBody = body.get("data") + const cekFile = body.has("file0") + + // const { idDivision, desc, user } = (await request.json()); + const { idDivision, desc, user } = JSON.parse(String(dataBody)); + + const userMobile = await funGetUserById({ id: String(user) }) if (userMobile.id == "null" || userMobile.id == undefined || userMobile.id == "") { @@ -135,6 +143,29 @@ export async function POST(request: Request) { } }); + + if (cekFile) { + body.delete("data") + for (var pair of body.entries()) { + if (String(pair[0]).substring(0, 4) == "file") { + const file = body.get(pair[0]) as File + const fExt = file.name.split(".").pop() + const fName = decodeURIComponent(file.name.replace("." + fExt, "")) + const upload = await funUploadFile({ file: file, dirId: DIR.discussionDivision }) + if (upload.success) { + await prisma.divisionDiscussionFile.create({ + data: { + idStorage: upload.data.id, + idDiscussion: data.id, + name: fName, + extension: String(fExt) + } + }) + } + } + } + } + const memberDivision = await prisma.divisionMember.findMany({ where: { idDivision: idDivision diff --git a/src/module/_global/bin/val_global.ts b/src/module/_global/bin/val_global.ts index 40fae51..9cde0ca 100644 --- a/src/module/_global/bin/val_global.ts +++ b/src/module/_global/bin/val_global.ts @@ -13,7 +13,8 @@ export const DIR = { user: "cm0x8dbwn0005bp5tgmfcthzw", banner: "cm1sxex19004938bjvyaq8vta", announcement: "cmkdfkze4005hkhjgunsroi4t", - discussion: "cmkf5h7ic006jkhjgyrkog7ut" + discussion: "cmkf5h7ic006jkhjgyrkog7ut", + discussionDivision: "cmkdfktfm005fkhjggjvnqly5" } export const keyWibu = 'padahariminggukuturutayahkekotanaikdelmanistimewakududukdimuka'