diff --git a/src/app/api/home/route.ts b/src/app/api/home/route.ts index 45f6514..7d7c85f 100644 --- a/src/app/api/home/route.ts +++ b/src/app/api/home/route.ts @@ -1,4 +1,3 @@ -import { DivisionProject } from './../../../../node_modules/.prisma/client/index.d'; import { prisma } from "@/module/_global"; import { funGetUserByCookies } from "@/module/auth"; import _, { ceil } from "lodash"; @@ -36,22 +35,28 @@ export async function GET(request: Request) { isActive: true, } } - } else if (roleUser == "admin" || roleUser == "cosupadmin") { + } else { kondisi = { isActive: true, idGroup: idGroup } - } else { - kondisi = { - isActive: true, - idGroup: idGroup, - ProjectMember: { - some: { - idUser: user.id - } - } - } } + // else if (roleUser == "admin" || roleUser == "cosupadmin") { + // kondisi = { + // isActive: true, + // idGroup: idGroup + // } + // } else { + // kondisi = { + // isActive: true, + // idGroup: idGroup, + // ProjectMember: { + // some: { + // idUser: user.id + // } + // } + // } + // } const data = await prisma.project.findMany({ skip: 0, @@ -96,22 +101,28 @@ export async function GET(request: Request) { isActive: true, } } - } else if (roleUser == "admin" || roleUser == "cosupadmin") { + } else { kondisi = { isActive: true, idGroup: idGroup } - } else { - kondisi = { - isActive: true, - idGroup: idGroup, - DivisionMember: { - some: { - idUser: user.id - } - } - } } + // else if (roleUser == "admin" || roleUser == "cosupadmin") { + // kondisi = { + // isActive: true, + // idGroup: idGroup + // } + // } else { + // kondisi = { + // isActive: true, + // idGroup: idGroup, + // DivisionMember: { + // some: { + // idUser: user.id + // } + // } + // } + // } const data = await prisma.division.findMany({ where: kondisi, @@ -134,7 +145,9 @@ export async function GET(request: Request) { jumlah: v.DivisionProject.length, })) - allData = _.orderBy(format, 'jumlah', 'desc').slice(0, 5) + const filter = format.filter((v: any) => v.jumlah > 0) + + allData = _.orderBy(filter, 'jumlah', 'desc').slice(0, 5) } else if (kategori == "progress") { let kondisi @@ -143,37 +156,50 @@ export async function GET(request: Request) { if (roleUser == "supadmin" || roleUser == "developer") { kondisi = { isActive: true, - Division: { + idVillage: idVillage, + Group: { isActive: true, - idVillage: idVillage, - Group: { - isActive: true, - } - } - } - } else if (roleUser == "admin" || roleUser == "cosupadmin") { - kondisi = { - isActive: true, - Division: { - isActive: true, - idGroup: idGroup } } + // kondisi = { + // isActive: true, + // Division: { + // isActive: true, + // idVillage: idVillage, + // Group: { + // isActive: true, + // } + // } + // } } else { kondisi = { isActive: true, - Division: { - isActive: true, - DivisionMember: { - some: { - idUser: user.id - } - } - } + idGroup: idGroup } } + // else if (roleUser == "admin" || roleUser == "cosupadmin") { + // kondisi = { + // isActive: true, + // Division: { + // isActive: true, + // idGroup: idGroup + // } + // } + // } else { + // kondisi = { + // isActive: true, + // Division: { + // isActive: true, + // DivisionMember: { + // some: { + // idUser: user.id + // } + // } + // } + // } + // } - const data = await prisma.divisionProject.groupBy({ + const data = await prisma.project.groupBy({ where: kondisi, by: ["status"], _count: true @@ -218,7 +244,7 @@ export async function GET(request: Request) { } } } - } else if (roleUser == "admin" || roleUser == "cosupadmin") { + } else { kondisi = { isActive: true, category: 'FILE', @@ -227,20 +253,30 @@ export async function GET(request: Request) { idGroup: idGroup } } - } else { - kondisi = { - isActive: true, - category: 'FILE', - Division: { - isActive: true, - DivisionMember: { - some: { - idUser: user.id - } - } - } - } } + // else if (roleUser == "admin" || roleUser == "cosupadmin") { + // kondisi = { + // isActive: true, + // category: 'FILE', + // Division: { + // isActive: true, + // idGroup: idGroup + // } + // } + // } else { + // kondisi = { + // isActive: true, + // category: 'FILE', + // Division: { + // isActive: true, + // DivisionMember: { + // some: { + // idUser: user.id + // } + // } + // } + // } + // } const data = await prisma.divisionDocumentFolderFile.findMany({ where: kondisi, @@ -377,7 +413,7 @@ export async function GET(request: Request) { } } } - } else if (roleUser == "admin" || roleUser == "cosupadmin") { + } else { kondisi = { isActive: true, status: 1, @@ -386,20 +422,30 @@ export async function GET(request: Request) { isActive: true } } - } else { - kondisi = { - isActive: true, - status: 1, - Division: { - isActive: true, - DivisionMember: { - some: { - idUser: user.id - } - } - } - } } + // else if (roleUser == "admin" || roleUser == "cosupadmin") { + // kondisi = { + // isActive: true, + // status: 1, + // Division: { + // idGroup: idGroup, + // isActive: true + // } + // } + // } else { + // kondisi = { + // isActive: true, + // status: 1, + // Division: { + // isActive: true, + // DivisionMember: { + // some: { + // idUser: user.id + // } + // } + // } + // } + // } const data = await prisma.divisionDisscussion.findMany({ skip: 0, diff --git a/src/app/api/mobile/discussion-general/[id]/comment/route.ts b/src/app/api/mobile/discussion-general/[id]/comment/route.ts index 34f78a2..c748522 100644 --- a/src/app/api/mobile/discussion-general/[id]/comment/route.ts +++ b/src/app/api/mobile/discussion-general/[id]/comment/route.ts @@ -37,6 +37,29 @@ export async function POST(request: Request, context: { params: { id: string } } } }) + const dataDiscussion = await prisma.discussion.findUnique({ + where: { + id + }, + select: { + createdBy: true, + User: { + select: { + Subscribe: { + select: { + subscription: true + } + }, + TokenDeviceUser: { + select: { + token: true + } + } + } + } + } + }) + const member = await prisma.discussionMember.findMany({ where: { idDiscussion: id, @@ -70,7 +93,10 @@ export async function POST(request: Request, context: { params: { id: string } } } }) - const memberFilter = member.filter((v: any) => v.idUser != userMobile.id) + const memberFilter = [...member, { idUser: dataDiscussion?.createdBy, User: dataDiscussion?.User }].filter((v: any) => v.idUser != userMobile.id) + .filter((v: any, index: number, self: any[]) => + index === self.findIndex((t) => t.idUser === v.idUser) + ); const dataFCM = memberFilter.map((v: any) => ({ ..._.omit(v, ["idUser", "User", "Subscribe", "TokenDeviceUser"]), diff --git a/src/app/api/mobile/discussion/[id]/comment/route.ts b/src/app/api/mobile/discussion/[id]/comment/route.ts index b205fcb..34d86ec 100644 --- a/src/app/api/mobile/discussion/[id]/comment/route.ts +++ b/src/app/api/mobile/discussion/[id]/comment/route.ts @@ -50,6 +50,21 @@ export async function POST(request: Request, context: { params: { id: string } } }, select: { idDivision: true, + createdBy: true, + User: { + select: { + Subscribe: { + select: { + subscription: true + } + }, + TokenDeviceUser: { + select: { + token: true + } + } + } + } } }) @@ -86,7 +101,10 @@ export async function POST(request: Request, context: { params: { id: string } } } }) - const memberFilter = member.filter((v: any) => v.idUser != userMobile.id) + const memberFilter = [...member, { idUser: dataDivision?.createdBy, User: dataDivision?.User }].filter((v: any) => v.idUser != userMobile.id) + .filter((v: any, index: number, self: any[]) => + index === self.findIndex((t) => t.idUser === v.idUser) + ); const dataFCM = memberFilter.map((v: any) => ({ ..._.omit(v, ["idUser", "User", "Subscribe", "TokenDeviceUser"]), diff --git a/src/app/api/mobile/division/route.ts b/src/app/api/mobile/division/route.ts index 48dfef7..9b6b538 100644 --- a/src/app/api/mobile/division/route.ts +++ b/src/app/api/mobile/division/route.ts @@ -342,4 +342,45 @@ export async function POST(request: Request) { console.error(error); return NextResponse.json({ success: false, message: "Gagal menambahkan divisi, coba lagi nanti (error: 500)", reason: (error as Error).message, }, { status: 500 }); } +}; + + +// CEK DATA DIVISI (NAME DI DESA DAN GROUP YG SAMA) +export async function PUT(request: Request) { + try { + + const sent = (await request.json()) + const user = sent.user + const userMobile = await funGetUserById({ id: String(user) }) + if (userMobile.id == "null" || userMobile.id == undefined || userMobile.id == "") { + return NextResponse.json({ success: false, message: "Anda harus login untuk mengakses ini" }, { status: 200 }); + } + + let fixGroup + if (sent.data.idGroup == "null" || sent.data.idGroup == undefined || sent.data.idGroup == "") { + fixGroup = userMobile.idGroup + } else { + fixGroup = sent.data.idGroup + } + + const checkData = await prisma.division.count({ + where: { + name: { + equals: sent.data.name, + mode: "insensitive" + }, + idGroup: fixGroup, + idVillage: String(userMobile.idVillage) + } + }) + + if (checkData > 0) { + return NextResponse.json({ success: true, message: "Divisi dengan nama ini sudah ada", available: false }, { status: 200 }); + } + + return NextResponse.json({ success: true, message: "Berhasil cek data divisi", available: true }, { status: 200 }); + } catch (error) { + console.error(error); + return NextResponse.json({ success: false, message: "Gagal menambahkan divisi, coba lagi nanti (error: 500)", reason: (error as Error).message, }, { status: 500 }); + } }; \ No newline at end of file diff --git a/src/app/api/mobile/project/[id]/route.ts b/src/app/api/mobile/project/[id]/route.ts index 7c09849..9f0152a 100644 --- a/src/app/api/mobile/project/[id]/route.ts +++ b/src/app/api/mobile/project/[id]/route.ts @@ -71,7 +71,7 @@ export async function GET(request: Request, context: { params: { id: string } }) createdAt: true }, orderBy: { - createdAt: 'asc' + dateStart: 'asc' } }) diff --git a/src/app/api/mobile/task/[id]/route.ts b/src/app/api/mobile/task/[id]/route.ts index a7260f0..7f285c6 100644 --- a/src/app/api/mobile/task/[id]/route.ts +++ b/src/app/api/mobile/task/[id]/route.ts @@ -76,7 +76,7 @@ export async function GET(request: Request, context: { params: { id: string } }) dateEnd: true, }, orderBy: { - createdAt: 'asc' + dateStart: 'asc' } }) diff --git a/src/app/api/project/[id]/route.ts b/src/app/api/project/[id]/route.ts index df7e87f..f8cecad 100644 --- a/src/app/api/project/[id]/route.ts +++ b/src/app/api/project/[id]/route.ts @@ -68,7 +68,7 @@ export async function GET(request: Request, context: { params: { id: string } }) createdAt: true }, orderBy: { - createdAt: 'asc' + dateStart: 'asc' } }) @@ -78,8 +78,8 @@ export async function GET(request: Request, context: { params: { id: string } }) dateEnd: moment(v.dateEnd).format("DD-MM-YYYY"), createdAt: moment(v.createdAt).format("DD-MM-YYYY HH:mm"), })) - const dataFix = _.orderBy(formatData, 'createdAt', 'asc') - allData = dataFix + // const dataFix = _.orderBy(formatData, 'createdAt', 'asc') + allData = formatData } else if (kategori == "file") { const dataFile = await prisma.projectFile.findMany({ diff --git a/src/app/api/task/[id]/route.ts b/src/app/api/task/[id]/route.ts index 7ef6090..8f1652b 100644 --- a/src/app/api/task/[id]/route.ts +++ b/src/app/api/task/[id]/route.ts @@ -75,7 +75,7 @@ export async function GET(request: Request, context: { params: { id: string } }) dateEnd: true, }, orderBy: { - createdAt: 'asc' + dateStart: 'asc' } }) diff --git a/src/app/api/version-app/route.ts b/src/app/api/version-app/route.ts index eca496f..4f67b29 100644 --- a/src/app/api/version-app/route.ts +++ b/src/app/api/version-app/route.ts @@ -2,7 +2,7 @@ import { NextResponse } from "next/server"; export async function GET(request: Request) { try { - return NextResponse.json({ success: true, version: "2.0.4", tahap: "beta", update: "-api mobile; -login tanpa otp (mobile app); -tambah laporan pada project dan tugas divisi; -tambah upload link pada project dan tugas divisi; -tambah detail tanggal dan jam pada project dan tugas divisi; -api jenna ai; -privacy policy" }, { status: 200 }); + return NextResponse.json({ success: true, version: "2.0.6", tahap: "beta", update: "-api mobile; -login tanpa otp (mobile app); -tambah laporan pada project dan tugas divisi; -tambah upload link pada project dan tugas divisi; -tambah detail tanggal dan jam pada project dan tugas divisi; -api jenna ai; -privacy policy" }, { status: 200 }); } catch (error) { console.error(error); return NextResponse.json({ success: false, version: "Gagal mendapatkan version, coba lagi nanti (error: 500)", reason: (error as Error).message, }, { status: 500 });