From 7338d3041be796beb97b2ad7db4178b2b827ddeb Mon Sep 17 00:00:00 2001 From: amel Date: Tue, 20 Aug 2024 17:31:19 +0800 Subject: [PATCH] upd: task Deskripsi: - update status task - progress task No Issues --- src/app/api/task/detail/[id]/route.ts | 31 ++++++++++++++++++- src/app/api/task/route.ts | 5 +-- src/module/task/lib/api_task.ts | 2 +- src/module/task/ui/detail_list_tugas_task.tsx | 2 +- src/module/task/ui/list_division_task.tsx | 4 +-- 5 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/app/api/task/detail/[id]/route.ts b/src/app/api/task/detail/[id]/route.ts index 1fb2f37..e298d29 100644 --- a/src/app/api/task/detail/[id]/route.ts +++ b/src/app/api/task/detail/[id]/route.ts @@ -1,5 +1,6 @@ import { prisma } from "@/module/_global"; import { funGetUserByCookies } from "@/module/auth"; +import _ from "lodash"; import moment from "moment"; import { NextResponse } from "next/server"; @@ -62,7 +63,7 @@ export async function PUT(request: Request, context: { params: { id: string } }) } const { id } = context.params; - const { status } = (await request.json()); + const { status, idProject } = (await request.json()); const data = await prisma.divisionProjectTask.count({ where: { id: id, @@ -88,6 +89,34 @@ export async function PUT(request: Request, context: { params: { id: string } }) }, }); + // const cek progress + const dataTask = await prisma.divisionProjectTask.findMany({ + where: { + isActive: true, + idProject: idProject + } + }) + + const semua = dataTask.length + const selesai = _.filter(dataTask, { status: 1 }).length + const progress = Math.ceil((selesai / semua) * 100) + let statusProject = 1 + + if (progress == 100) { + statusProject = 2 + } else if (progress == 0) { + statusProject = 0 + } + + const updProject = await prisma.divisionProject.update({ + where: { + id: idProject + }, + data: { + status: statusProject + } + }) + return NextResponse.json( { success: true, diff --git a/src/app/api/task/route.ts b/src/app/api/task/route.ts index 7232356..281be45 100644 --- a/src/app/api/task/route.ts +++ b/src/app/api/task/route.ts @@ -49,7 +49,8 @@ export async function GET(request: Request) { isActive: true }, select: { - title: true + title: true, + status: true } }, DivisionProjectMember: { @@ -65,7 +66,7 @@ export async function GET(request: Request) { const formatData = data.map((v: any) => ({ ..._.omit(v, ["DivisionProjectTask", "DivisionProjectMember"]), - progress: ceil(v.DivisionProjectTask.filter((i: any) => i.status === 1).length / v.DivisionProjectTask.length), + progress: ceil((v.DivisionProjectTask.filter((i: any) => i.status == 1).length*100) / v.DivisionProjectTask.length), member: v.DivisionProjectMember.length })) diff --git a/src/module/task/lib/api_task.ts b/src/module/task/lib/api_task.ts index b96b676..80815f3 100644 --- a/src/module/task/lib/api_task.ts +++ b/src/module/task/lib/api_task.ts @@ -37,7 +37,7 @@ export const funDeleteDetailTask = async (path: string) => { }; -export const funUpdateStatusDetailTask = async (path: string, data: { status: number }) => { +export const funUpdateStatusDetailTask = async (path: string, data: { status: number, idProject: string }) => { const response = await fetch(`/api/task/detail/${path}`, { method: "PUT", headers: { diff --git a/src/module/task/ui/detail_list_tugas_task.tsx b/src/module/task/ui/detail_list_tugas_task.tsx index 4170bbe..eb17ff1 100644 --- a/src/module/task/ui/detail_list_tugas_task.tsx +++ b/src/module/task/ui/detail_list_tugas_task.tsx @@ -68,7 +68,7 @@ export default function ListTugasDetailTask() { async function onUpdateStatus(val: number) { try { - const res = await funUpdateStatusDetailTask(idData, { status: val }); + const res = await funUpdateStatusDetailTask(idData, { status: val, idProject: param.detail }); if (res.success) { toast.success(res.message); refresh.set(true) diff --git a/src/module/task/ui/list_division_task.tsx b/src/module/task/ui/list_division_task.tsx index 22ad55f..838ca0d 100644 --- a/src/module/task/ui/list_division_task.tsx +++ b/src/module/task/ui/list_division_task.tsx @@ -176,8 +176,8 @@ export default function ListDivisionTask() { - - {v.status}% + + {v.progress}% {v.desc}