From 7086a56e008412ec7af1e668f721bb76d4ca4a8c Mon Sep 17 00:00:00 2001 From: amal Date: Mon, 4 Aug 2025 14:11:47 +0800 Subject: [PATCH] upd : api mobile Deskripsi: - api upload multiple file pada dokumen divisi No ISsues --- src/app/api/mobile/document/upload/route.ts | 71 +++++++++++---------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/src/app/api/mobile/document/upload/route.ts b/src/app/api/mobile/document/upload/route.ts index fbb3963..95a0a53 100644 --- a/src/app/api/mobile/document/upload/route.ts +++ b/src/app/api/mobile/document/upload/route.ts @@ -10,8 +10,6 @@ export async function POST(request: Request) { try { const body = await request.formData() const dataBody = body.get("data") - const file = body.get("file") as File - const fileName = file.name const { idPath, idDivision, user } = JSON.parse(dataBody as string) @@ -57,39 +55,48 @@ export async function POST(request: Request) { ..._.omit(v, [""]), file: v.name + '.' + v.extension, })) - - const cek = dataOmit.some((i: any) => i.file == fileName) - - if (cek) { - return NextResponse.json({ success: false, message: "Terdapat file dengan nama yang sama" }, { status: 200 }); - } - - - const fExt = file.name.split(".").pop() - const fName = file.name.replace("." + fExt, "") - const upload = await funUploadFile({ file: file, dirId: DIR.document }) - if (upload.success) { - const dataInsert = await prisma.divisionDocumentFolderFile.create({ - data: { - name: fName, - path: idPath, - idDivision, - category: "FILE", - extension: String(fExt), - createdBy: userMobile.id, - idStorage: upload.data.id - }, - select: { - id: true + let failed = 0 + 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 fileName = file.name + const fExt = file.name.split(".").pop() + let fName = file.name.replace("." + fExt, "") + const cek = dataOmit.some((i: any) => i.file == fileName) + if (cek) { + const random = Math.floor(Math.random() * 1000) + fName = `${fName}_${random}` } - }); + const upload = await funUploadFile({ file: file, dirId: DIR.document }) + if (upload.success) { + const dataInsert = await prisma.divisionDocumentFolderFile.create({ + data: { + name: fName, + path: idPath, + idDivision, + category: "FILE", + extension: String(fExt), + createdBy: userMobile.id, + idStorage: upload.data.id + }, + select: { + id: true + } + }); - // create log user - const log = await createLogUserMobile({ act: 'CREATE', desc: 'User mengupload file baru', table: 'divisionDocumentFolderFile', data: dataInsert.id, user: userMobile.id }) - return NextResponse.json({ success: true, message: "Berhasil upload file" }, { status: 200 }); - } else { - return NextResponse.json({ success: false, message: "Gagal upload file, coba lagi nanti" }, { status: 200 }); + // create log user + const log = await createLogUserMobile({ act: 'CREATE', desc: 'User mengupload file baru', table: 'divisionDocumentFolderFile', data: dataInsert.id, user: userMobile.id }) + } else { + failed++ + } + } } + + if (failed > 0) { + return NextResponse.json({ success: false, message: "Beberapa file gagal diupload", failed }, { status: 200 }); + } + return NextResponse.json({ success: true, message: "Berhasil upload file" }, { status: 200 }); } catch (error) { console.error(error); return NextResponse.json({ success: false, message: "Gagal upload file, coba lagi nanti (error: 500)", reason: (error as Error).message, }, { status: 500 });