From 836cd58627cdd36f3f3dbc041df00d93df748ec6 Mon Sep 17 00:00:00 2001 From: amel Date: Fri, 6 Sep 2024 12:19:21 +0800 Subject: [PATCH 1/2] upd: project Deskripsi: - pembatasan user role - bersih log user - masang log user - bersih console.log No Issues --- src/app/api/project/[id]/member/route.ts | 16 +- src/app/api/project/[id]/route.ts | 28 +- src/app/api/project/detail/[id]/route.ts | 42 ++- src/app/api/project/file/[id]/route.ts | 13 +- .../_global/layout/layout_navbar_new.tsx | 19 +- .../project/ui/add_detail_task_project.tsx | 2 +- .../project/ui/add_file_detail_project.tsx | 4 +- .../project/ui/add_member_detail_project.tsx | 4 +- src/module/project/ui/cancel_project.tsx | 2 +- src/module/project/ui/create_project.tsx | 333 ++++++++++-------- .../project/ui/create_users_project.tsx | 44 ++- src/module/project/ui/edit_task_project.tsx | 2 +- .../ui/list_anggota_detail_project.tsx | 25 +- src/module/project/ui/list_project.tsx | 6 +- .../project/ui/navbar_detail_project.tsx | 93 ++--- 15 files changed, 366 insertions(+), 267 deletions(-) diff --git a/src/app/api/project/[id]/member/route.ts b/src/app/api/project/[id]/member/route.ts index c8bed6f..9d20104 100644 --- a/src/app/api/project/[id]/member/route.ts +++ b/src/app/api/project/[id]/member/route.ts @@ -1,5 +1,6 @@ import { prisma } from "@/module/_global"; import { funGetUserByCookies } from "@/module/auth"; +import { createLogUser } from "@/module/user"; import _ from "lodash"; import { NextResponse } from "next/server"; @@ -24,7 +25,7 @@ export async function POST(request: Request, context: { params: { id: string } } if (data == 0) { return NextResponse.json( { - success: false, message: "Gagal mendapatkan project, data tidak ditemukan", + success: false, message: "Gagal mendapatkan kegiatan, data tidak ditemukan", }, { status: 404 } ); @@ -42,11 +43,13 @@ export async function POST(request: Request, context: { params: { id: string } } }) } - return NextResponse.json({ success: true, message: "Berhasil menambahkan anggota project" }, { status: 200 }); + // create log user + const log = await createLogUser({ act: 'CREATE', desc: 'User menambah anggota kegiatan', table: 'project', data: String(id) }) + return NextResponse.json({ success: true, message: "Berhasil menambahkan anggota kegiatan" }, { status: 200 }); } catch (error) { console.error(error); - return NextResponse.json({ success: false, message: "Gagal menambah anggota project, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); + return NextResponse.json({ success: false, message: "Gagal menambah anggota kegiatan, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); } } @@ -85,11 +88,14 @@ export async function DELETE(request: Request, context: { params: { id: string } } }) - return NextResponse.json({ success: true, message: "Berhasil mengeluarkan anggota project" }, { status: 200 }); + // create log user + const log = await createLogUser({ act: 'DELETE', desc: 'User mengeluarkan anggota kegiatan', table: 'project', data: String(id) }) + + return NextResponse.json({ success: true, message: "Berhasil mengeluarkan anggota kegiatan" }, { status: 200 }); } catch (error) { console.error(error); - return NextResponse.json({ success: false, message: "Gagal mengeluarkan anggota project, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); + return NextResponse.json({ success: false, message: "Gagal mengeluarkan anggota kegiatan, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); } } diff --git a/src/app/api/project/[id]/route.ts b/src/app/api/project/[id]/route.ts index ffbc5f8..5ba9c8d 100644 --- a/src/app/api/project/[id]/route.ts +++ b/src/app/api/project/[id]/route.ts @@ -1,5 +1,6 @@ import { prisma } from "@/module/_global"; import { funGetUserByCookies } from "@/module/auth"; +import { createLogUser } from "@/module/user"; import _ from "lodash"; import moment from "moment"; import { NextResponse } from "next/server"; @@ -159,7 +160,7 @@ export async function POST(request: Request, context: { params: { id: string } } if (data == 0) { return NextResponse.json( { - success: false, message: "Gagal mendapatkan project, data tidak ditemukan", + success: false, message: "Gagal mendapatkan kegiatan, data tidak ditemukan", }, { status: 404 } ); @@ -171,14 +172,20 @@ export async function POST(request: Request, context: { params: { id: string } } idProject: id, dateStart: new Date(moment(dateStart).format('YYYY-MM-DD')), dateEnd: new Date(moment(dateEnd).format('YYYY-MM-DD')), + }, + select: { + id: true } }) - return NextResponse.json({ success: true, message: "Detail project berhasil ditambahkan", data: dataCreate, }, { status: 200 }); + // create log user + const log = await createLogUser({ act: 'CREATE', desc: 'User membuat data tahapan kegiatan', table: 'projectTask', data: String(dataCreate.id) }) + + return NextResponse.json({ success: true, message: "Detail tahapan kegiatan berhasil ditambahkan", data: dataCreate, }, { status: 200 }); } catch (error) { console.error(error); - return NextResponse.json({ success: false, message: "Gagal tambah detail project, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); + return NextResponse.json({ success: false, message: "Gagal tambah tahapan kegiatan, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); } } @@ -218,11 +225,13 @@ export async function DELETE(request: Request, context: { params: { id: string } } }) - return NextResponse.json({ success: true, message: "Project berhasil dibatalkan" }, { status: 200 }); + // create log user + const log = await createLogUser({ act: 'UPDATE', desc: 'User membatalkan data kegiatan', table: 'project', data: String(id) }) + return NextResponse.json({ success: true, message: "Kegiatan berhasil dibatalkan" }, { status: 200 }); } catch (error) { console.error(error); - return NextResponse.json({ success: false, message: "Gagal membatalkan project, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); + return NextResponse.json({ success: false, message: "Gagal membatalkan kegiatan, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); } } @@ -246,7 +255,7 @@ export async function PUT(request: Request, context: { params: { id: string } }) if (data == 0) { return NextResponse.json( { - success: false, message: "Gagal mendapatkan project, data tidak ditemukan", + success: false, message: "Gagal mendapatkan kegiatan, data tidak ditemukan", }, { status: 404 } ); @@ -261,10 +270,13 @@ export async function PUT(request: Request, context: { params: { id: string } }) } }) - return NextResponse.json({ success: true, message: "Project berhasil diubah" }, { status: 200 }); + // create log user + const log = await createLogUser({ act: 'UPDATE', desc: 'User mengupdate data kegiatan', table: 'project', data: String(id) }) + + return NextResponse.json({ success: true, message: "Kegiatan berhasil diupdate" }, { status: 200 }); } catch (error) { console.error(error); - return NextResponse.json({ success: false, message: "Gagal mengubah project, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); + return NextResponse.json({ success: false, message: "Gagal mengupdate kegiatan, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); } } \ No newline at end of file diff --git a/src/app/api/project/detail/[id]/route.ts b/src/app/api/project/detail/[id]/route.ts index 5a16292..52f7b22 100644 --- a/src/app/api/project/detail/[id]/route.ts +++ b/src/app/api/project/detail/[id]/route.ts @@ -1,5 +1,6 @@ import { prisma } from "@/module/_global"; import { funGetUserByCookies } from "@/module/auth"; +import { createLogUser } from "@/module/user"; import moment from "moment"; import { NextResponse } from "next/server"; @@ -24,7 +25,7 @@ export async function DELETE(request: Request, context: { params: { id: string } return NextResponse.json( { success: false, - message: "Hapus project gagal, data tidak ditemukan", + message: "Hapus tahapan kegiatan gagal, data tidak ditemukan", }, { status: 404 } ); @@ -67,18 +68,21 @@ export async function DELETE(request: Request, context: { params: { id: string } } }) + // create log user + const log = await createLogUser({ act: 'DELETE', desc: 'User menghapus tahapan kegiatan', table: 'projectTask', data: String(id) }) + return NextResponse.json( { success: true, - message: "Project berhasil dihapus", + message: "Tahapan kegiatan berhasil dihapus", data, }, { status: 200 } ); } catch (error) { - console.log(error); - return NextResponse.json({ success: false, message: "Gagal menghapus project, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); + console.error(error); + return NextResponse.json({ success: false, message: "Gagal menghapus tahapan kegiatan, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); } } @@ -103,7 +107,7 @@ export async function PUT(request: Request, context: { params: { id: string } }) if (data == 0) { return NextResponse.json( { - success: false, message: "Gagal mendapatkan project, data tidak ditemukan", + success: false, message: "Gagal mendapatkan kegiatan, data tidak ditemukan", }, { status: 404 } ); @@ -148,12 +152,14 @@ export async function PUT(request: Request, context: { params: { id: string } }) } }) + // create log user + const log = await createLogUser({ act: 'UPDATE', desc: 'User mengupdate status tahapan kegiatan', table: 'projectTask', data: String(id) }) - return NextResponse.json({ success: true, message: "Status detail Project berhasil diupdate", data }, { status: 200 }); + return NextResponse.json({ success: true, message: "Status tahapan kegiatan berhasil diupdate", data }, { status: 200 }); } catch (error) { console.error(error); - return NextResponse.json({ success: false, message: "Gagal membatalkan project, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); + return NextResponse.json({ success: false, message: "Gagal mengupdate status tahapan kegiatan, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); } } @@ -202,6 +208,21 @@ export async function POST(request: Request, context: { params: { id: string } } const { id } = context.params; const { name, dateStart, dateEnd } = (await request.json()); + const dataTask = await prisma.projectTask.count({ + where: { + id + } + }) + + if (dataTask == 0) { + return NextResponse.json( + { + success: false, message: "Gagal mendapatkan kegiatan, data tidak ditemukan", + }, + { status: 404 } + ); + } + const data = await prisma.projectTask.update({ where: { id @@ -213,10 +234,13 @@ export async function POST(request: Request, context: { params: { id: string } } } }) - return NextResponse.json({ success: true, message: "Detail project berhasil diupdate", data }, { status: 200 }); + // create log user + const log = await createLogUser({ act: 'UPDATE', desc: 'User mengupdate tahapan kegiatan', table: 'projectTask', data: String(id) }) + + return NextResponse.json({ success: true, message: "Detail tahapan kegiatan berhasil diupdate", data }, { status: 200 }); } catch (error) { console.error(error); - return NextResponse.json({ success: false, message: "Gagal membatalkan project, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); + return NextResponse.json({ success: false, message: "Gagal mengupdate detail tahapan kegiatan, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); } } \ No newline at end of file diff --git a/src/app/api/project/file/[id]/route.ts b/src/app/api/project/file/[id]/route.ts index 7726c46..5f390d7 100644 --- a/src/app/api/project/file/[id]/route.ts +++ b/src/app/api/project/file/[id]/route.ts @@ -4,6 +4,7 @@ import { NextResponse } from "next/server"; import fs from "fs"; import path from "path"; import _ from "lodash"; +import { createLogUser } from "@/module/user"; // HAPUS FILE PROJECT BUKAN PAKE ISACTIVE export async function DELETE(request: Request, context: { params: { id: string } }) { @@ -44,6 +45,9 @@ export async function DELETE(request: Request, context: { params: { id: string } }, }); + // create log user + const log = await createLogUser({ act: 'DELETE', desc: 'User menghapus file kegiatan', table: 'project', data: String(dataRelasi?.idProject) }) + return NextResponse.json( { @@ -55,7 +59,7 @@ export async function DELETE(request: Request, context: { params: { id: string } ); } catch (error) { - console.log(error); + console.error(error); return NextResponse.json({ success: false, message: "Gagal menghapus file, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); } } @@ -118,7 +122,7 @@ export async function PUT(request: Request, context: { params: { id: string } }) } } catch (error) { - console.log(error); + console.error(error); return NextResponse.json({ success: false, message: "Upload file gagal, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); } } @@ -191,11 +195,12 @@ export async function POST(request: Request, context: { params: { id: string } } } } - + // create log user + const log = await createLogUser({ act: 'CREATE', desc: 'User menambah file kegiatan', table: 'project', data: String(id) }) return NextResponse.json({ success: true, message: "Berhasil mengupload file kegiatan" }, { status: 200 }); } catch (error) { - console.log(error); + console.error(error); return NextResponse.json({ success: false, message: "Gagal mengupload file, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); } } \ No newline at end of file diff --git a/src/module/_global/layout/layout_navbar_new.tsx b/src/module/_global/layout/layout_navbar_new.tsx index c451fe4..15e33fa 100644 --- a/src/module/_global/layout/layout_navbar_new.tsx +++ b/src/module/_global/layout/layout_navbar_new.tsx @@ -5,7 +5,7 @@ import { WARNA } from '../fun/WARNA'; import LayoutIconBack from './layout_icon_back'; import _ from 'lodash'; -export const LayoutNavbarNew = ({ back, title, menu }: { back?: string, title: string, menu: React.ReactNode }) => { +export const LayoutNavbarNew = ({ back, state, title, menu }: { back?: string, title: string, menu: React.ReactNode, state?: React.ReactNode }) => { return ( - - { - back!=undefined && () - } - + { + state != undefined && + + {state} + + } + { + back != undefined && + + + + } {_.startCase(title)} diff --git a/src/module/project/ui/add_detail_task_project.tsx b/src/module/project/ui/add_detail_task_project.tsx index a799ddf..c801e3d 100644 --- a/src/module/project/ui/add_detail_task_project.tsx +++ b/src/module/project/ui/add_detail_task_project.tsx @@ -45,7 +45,7 @@ export default function AddDetailTaskProject() { toast.error(res.message) } } catch (error) { - console.log(error) + console.error(error) toast.error("Gagal menambahkan tugas, coba lagi nanti") } } diff --git a/src/module/project/ui/add_file_detail_project.tsx b/src/module/project/ui/add_file_detail_project.tsx index b40e6fe..9c1df98 100644 --- a/src/module/project/ui/add_file_detail_project.tsx +++ b/src/module/project/ui/add_file_detail_project.tsx @@ -52,7 +52,7 @@ export default function AddFileDetailProject() { toast.error(res.message) } } catch (error) { - console.log(error) + console.error(error) toast.error("Gagal menambahkan file, coba lagi nanti") } } @@ -75,7 +75,7 @@ export default function AddFileDetailProject() { toast.error(response.message) } } catch (error) { - console.log(error) + console.error(error) toast.error("Gagal menambahkan file, coba lagi nanti"); } } diff --git a/src/module/project/ui/add_member_detail_project.tsx b/src/module/project/ui/add_member_detail_project.tsx index 28762ff..415cedd 100644 --- a/src/module/project/ui/add_member_detail_project.tsx +++ b/src/module/project/ui/add_member_detail_project.tsx @@ -38,7 +38,7 @@ export default function AddMemberDetailProject() { } setLoading(false) } catch (error) { - console.log(error) + console.error(error) toast.error("Gagal mendapatkan anggota, coba lagi nanti"); } finally { setLoading(false) @@ -97,7 +97,7 @@ export default function AddMemberDetailProject() { toast.error(res.message) } } catch (error) { - console.log(error) + console.error(error) toast.error("Gagal menambahkan anggota, coba lagi nanti"); } } diff --git a/src/module/project/ui/cancel_project.tsx b/src/module/project/ui/cancel_project.tsx index 4845eab..8881a8a 100644 --- a/src/module/project/ui/cancel_project.tsx +++ b/src/module/project/ui/cancel_project.tsx @@ -33,7 +33,7 @@ export default function CancelProject() { toast.error(res.message) } } catch (error) { - console.log(error) + console.error(error) toast.error("Gagal membatalkan Kegiatan, coba lagi nanti") } } diff --git a/src/module/project/ui/create_project.tsx b/src/module/project/ui/create_project.tsx index e519fb8..db38434 100644 --- a/src/module/project/ui/create_project.tsx +++ b/src/module/project/ui/create_project.tsx @@ -1,5 +1,5 @@ "use client"; -import { LayoutDrawer, LayoutNavbarNew, WARNA } from "@/module/_global"; +import { globalRole, LayoutDrawer, LayoutNavbarNew, WARNA } from "@/module/_global"; import { Avatar, Box, Button, Center, Divider, Flex, Grid, Group, rem, Select, SimpleGrid, Stack, Text, TextInput } from "@mantine/core"; import { useRouter, useSearchParams } from "next/navigation"; import React, { useRef, useState } from "react"; @@ -29,7 +29,6 @@ export default function CreateProject() { const [openDrawerTask, setOpenDrawerTask] = useState(false) const [isModal, setModal] = useState(false) const [dataGroup, setDataGroup] = useState([]); - const [roleUser, setRoleUser] = useState("") const [isChooseAnggota, setChooseAnggota] = useState(false) const member = useHookstate(globalMemberProject) const memberValue = member.get() as IFormMemberProject[] @@ -40,6 +39,8 @@ export default function CreateProject() { const [listFile, setListFile] = useState([]) const [indexDelFile, setIndexDelFile] = useState(0) const [indexDelTask, setIndexDelTask] = useState(0) + const roleLogin = useHookstate(globalRole) + const [body, setBody] = useState({ idGroup: "", title: "", @@ -69,12 +70,15 @@ export default function CreateProject() { toast.error(loadGroup.message); } - const loadUser = await funGetUserByCookies(); - setRoleUser(loadUser.idUserRole) + if (roleLogin.get() != "supadmin") { + const loadUser = await funGetUserByCookies(); + setBody({ ...body, idGroup: loadUser.idGroup }) + } + } function onToChooseAnggota() { - if (roleUser == "supadmin" && body.idGroup == "") + if (roleLogin.get() == "supadmin" && body.idGroup == "") return toast.error("Error! grup harus diisi") setChooseAnggota(true) } @@ -116,7 +120,7 @@ export default function CreateProject() { toast.error(response.message) } } catch (error) { - console.log(error) + console.error(error) toast.error("Gagal menambahkan kegiatan, coba lagi nanti"); } } @@ -137,7 +141,7 @@ export default function CreateProject() { { - (roleUser == "supadmin") && ( + (roleLogin.get() == "supadmin") && (