From d000910b9fb99c87c03ce0801ec61b39d8ea21d7 Mon Sep 17 00:00:00 2001 From: amal Date: Wed, 20 Aug 2025 17:13:07 +0800 Subject: [PATCH] upd : api mobile detail tugas task divisi Deskripsi: - api get list detail tugas task divisi - api tambah detail tugas task divisi - api edit detail tugas task divisi - api tambah data task divisi > detail tugas No Issues --- src/app/api/mobile/task/[id]/route.ts | 16 ++++++- src/app/api/mobile/task/detail/[id]/route.ts | 49 +++++++++++++++++++- src/app/api/mobile/task/route.ts | 25 ++++++++-- 3 files changed, 83 insertions(+), 7 deletions(-) diff --git a/src/app/api/mobile/task/[id]/route.ts b/src/app/api/mobile/task/[id]/route.ts index 312945e..a7260f0 100644 --- a/src/app/api/mobile/task/[id]/route.ts +++ b/src/app/api/mobile/task/[id]/route.ts @@ -179,7 +179,7 @@ export async function GET(request: Request, context: { params: { id: string } }) export async function POST(request: Request, context: { params: { id: string } }) { try { const { id } = context.params; - const { title, dateStart, dateEnd, idDivision, user } = (await request.json()); + const { title, dateStart, dateEnd, idDivision, user, dataDetail } = (await request.json()); const userMobile = await funGetUserById({ id: String(user) }) if (userMobile.id == "null" || userMobile.id == undefined || userMobile.id == "") { @@ -215,6 +215,20 @@ export async function POST(request: Request, context: { params: { id: string } } } }); + if (dataDetail.length > 0) { + const dataDetailFix = dataDetail.map((v: any) => ({ + ...v, + idTask: create.id, + date: new Date(v.date), + timeStart: v.timeStart == null ? null : new Date(new Date('1970-01-01 ' + v.timeStart).getTime() - (new Date('1970-01-01 ' + v.timeStart).getTimezoneOffset() * 60000)).toISOString(), + timeEnd: v.timeEnd == null ? null : new Date(new Date('1970-01-01 ' + v.timeEnd).getTime() - (new Date('1970-01-01 ' + v.timeEnd).getTimezoneOffset() * 60000)).toISOString(), + })) + + const dataDetailCreate = await prisma.divisionProjectTaskDetail.createMany({ + data: dataDetailFix + }) + } + // const cek progress const dataTask = await prisma.divisionProjectTask.findMany({ where: { diff --git a/src/app/api/mobile/task/detail/[id]/route.ts b/src/app/api/mobile/task/detail/[id]/route.ts index cc53e39..e5c1423 100644 --- a/src/app/api/mobile/task/detail/[id]/route.ts +++ b/src/app/api/mobile/task/detail/[id]/route.ts @@ -2,6 +2,7 @@ import { prisma } from "@/module/_global"; import { funGetUserById } from "@/module/auth"; import { createLogUserMobile } from "@/module/user"; import _ from "lodash"; +import moment from "moment"; import { NextResponse } from "next/server"; @@ -166,6 +167,7 @@ export async function GET(request: Request, context: { params: { id: string } }) const { id } = context.params; const { searchParams } = new URL(request.url); const user = searchParams.get("user"); + const kategori = searchParams.get("cat"); const userMobile = await funGetUserById({ id: String(user) }) if (userMobile.id == "null" || userMobile.id == undefined || userMobile.id == "") { @@ -183,7 +185,30 @@ export async function GET(request: Request, context: { params: { id: string } }) return NextResponse.json({ success: false, message: "Gagal mendapatkan detail tugas, data tidak ditemukan" }, { status: 200 }); } - return NextResponse.json({ success: true, message: "Berhasil mendapatkan detail tugas divisi", data }, { status: 200 }); + let dataFix + if (kategori == "detailTask") { + const dataDetail = await prisma.divisionProjectTaskDetail.findMany({ + where: { + idTask: String(id) + }, + orderBy: { + date: "asc" + } + }) + + const dataDetailFix = dataDetail.map((data: any) => ({ + ...data, + date: moment(data?.date).format('DD-MM-YYYY'), + timeStart: data.timeStart == null ? "" : moment.utc(data.timeStart).format("HH:mm"), + timeEnd: data.timeEnd == null ? "" : moment.utc(data.timeEnd).format("HH:mm") + })) + + dataFix = dataDetailFix + } else { + dataFix = data + } + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan detail tugas divisi", data: dataFix }, { status: 200 }); } catch (error) { @@ -198,7 +223,7 @@ export async function GET(request: Request, context: { params: { id: string } }) export async function POST(request: Request, context: { params: { id: string } }) { try { const { id } = context.params; - const { title, dateStart, dateEnd, user } = (await request.json()); + const { title, dateStart, dateEnd, user, dataDetail } = (await request.json()); const userMobile = await funGetUserById({ id: String(user) }) if (userMobile.id == "null" || userMobile.id == undefined || userMobile.id == "") { @@ -232,6 +257,26 @@ export async function POST(request: Request, context: { params: { id: string } } }, }); + const dataDetailDelete = await prisma.divisionProjectTaskDetail.deleteMany({ + where: { + idTask: id + } + }) + + if (dataDetail.length > 0) { + const dataDetailFix = dataDetail.map((v: any) => ({ + ...v, + idTask: id, + date: new Date(v.date), + timeStart: v.timeStart == null ? null : new Date(new Date('1970-01-01 ' + v.timeStart).getTime() - (new Date('1970-01-01 ' + v.timeStart).getTimezoneOffset() * 60000)).toISOString(), + timeEnd: v.timeEnd == null ? null : new Date(new Date('1970-01-01 ' + v.timeEnd).getTime() - (new Date('1970-01-01 ' + v.timeEnd).getTimezoneOffset() * 60000)).toISOString(), + })) + + const dataDetailCreate = await prisma.divisionProjectTaskDetail.createMany({ + data: dataDetailFix + }) + } + // create log user const log = await createLogUserMobile({ act: 'UPDATE', desc: 'User mengupdate data detail task divisi', table: 'divisionProjectTask', data: id, user: userMobile.id }) diff --git a/src/app/api/mobile/task/route.ts b/src/app/api/mobile/task/route.ts index ebaf027..479f4ea 100644 --- a/src/app/api/mobile/task/route.ts +++ b/src/app/api/mobile/task/route.ts @@ -142,7 +142,7 @@ export async function POST(request: Request) { if (task.length > 0) { const dataTask = task.map((v: any) => ({ - ..._.omit(v, ["dateStart", "dateEnd", "title", "dateStartFix", "dateEndFix"]), + ..._.omit(v, ["dateStart", "dateEnd", "title", "dateStartFix", "dateEndFix", "dataDetail"]), idDivision: idDivision, idProject: data.id, title: v.title, @@ -150,9 +150,26 @@ export async function POST(request: Request) { dateEnd: new Date(v.dateEndFix), })) + let dataDetailFix = [] + for (let i = 0; i < dataTask.length; i++) { + const insertTask = await prisma.divisionProjectTask.create({ + data: dataTask[i], + select: { + id: true + } + }) + const dataDetail = task[i].dataDetail.map((v: any) => ({ + ...v, + idTask: insertTask.id, + date: new Date(v.date), + timeStart: v.timeStart == null ? null : new Date(new Date('1970-01-01 ' + v.timeStart).getTime() - (new Date('1970-01-01 ' + v.timeStart).getTimezoneOffset() * 60000)).toISOString(), + timeEnd: v.timeEnd == null ? null : new Date(new Date('1970-01-01 ' + v.timeEnd).getTime() - (new Date('1970-01-01 ' + v.timeEnd).getTimezoneOffset() * 60000)).toISOString(), + })) + dataDetailFix.push(...dataDetail) + } - const insertTask = await prisma.divisionProjectTask.createMany({ - data: dataTask + const insertDetail = await prisma.divisionProjectTaskDetail.createMany({ + data: dataDetailFix }) } @@ -350,7 +367,7 @@ export async function POST(request: Request) { token: tokenUnique, title: "Tugas Baru", body: "Anda memiliki tugas baru. Silahkan periksa detailnya.", - data: { id: data.id, category:'division/' + idDivision + '/task', content: data.id } + data: { id: data.id, category: 'division/' + idDivision + '/task', content: data.id } }) // create log user