From 00cb58744612a5da1eefad30412aba7e42dac26d Mon Sep 17 00:00:00 2001 From: amel Date: Mon, 5 Aug 2024 14:02:47 +0800 Subject: [PATCH] fitur: divisi Deskripsi: - tambah divisi No Issues --- src/module/_global/bin/api_address.ts | 1 + .../division_new/api/post/createDivision.ts | 32 +++-- .../components/create_admin_division.tsx | 2 +- .../components/create_division.tsx | 30 +++- .../components/ui/navbar_admin_division.tsx | 130 ++++++++++-------- .../components/ui/navbar_create_users.tsx | 31 ++++- 6 files changed, 146 insertions(+), 80 deletions(-) diff --git a/src/module/_global/bin/api_address.ts b/src/module/_global/bin/api_address.ts index d37c800..b1f6efa 100644 --- a/src/module/_global/bin/api_address.ts +++ b/src/module/_global/bin/api_address.ts @@ -38,4 +38,5 @@ export const API_ADDRESS = { // Division "apiGetAllDivision": "/api/division/get?path=get-all-division", + "apiCreateDivision": "/api/division/post?path=create-division", } \ No newline at end of file diff --git a/src/module/division_new/api/post/createDivision.ts b/src/module/division_new/api/post/createDivision.ts index 6718cf0..10e57f1 100644 --- a/src/module/division_new/api/post/createDivision.ts +++ b/src/module/division_new/api/post/createDivision.ts @@ -1,26 +1,40 @@ import { prisma } from "@/module/_global"; +import { funGetUserByCookies } from "@/module/auth"; +import _ from "lodash"; +import { revalidatePath } from "next/cache"; export default async function createDivision(req: Request) { try { - const data = await req.json(); - const insert = await prisma.division.create({ + const sent = await req.json(); + const user = await funGetUserByCookies(); + + const insertDivision = await prisma.division.create({ data: { - name: data.name, - idVillage: data.idVillage, - idGroup: data.idGroup, - desc: data.desc, - createdBy: data.createdBy + name: sent.data.name, + idVillage: String(user.idVillage), + idGroup: sent.data.idGroup, + desc: sent.data.desc, + createdBy: String(user.id) }, select: { id: true } }) + const dataMember = sent.member.map((v: any) => ({ + ..._.omit(v, ["isActive", "nik", "name", "phone", "email", "gender", "group", "position"]), + idUser: v.id, + idDivision: insertDivision.id, + isAdmin: sent.admin.some((i: any) => i == v.id) + })) + const insertMember = await prisma.divisionMember.createMany({ - data: data.member + data: dataMember }) - return Response.json(insert, { status: 201 }); + revalidatePath("/division"); + + return Response.json({ success: true, message: "Sukses menambahkan data divisi" }, { status: 201 }); } catch (error) { console.error(error); diff --git a/src/module/division_new/components/create_admin_division.tsx b/src/module/division_new/components/create_admin_division.tsx index 9dbdcc7..8c2569e 100644 --- a/src/module/division_new/components/create_admin_division.tsx +++ b/src/module/division_new/components/create_admin_division.tsx @@ -3,7 +3,7 @@ import NavbarAdminDivision from './ui/navbar_admin_division'; export default function CreateAdminDivision({ data }: { data: any }) { return ( - + { }} /> ); } diff --git a/src/module/division_new/components/create_division.tsx b/src/module/division_new/components/create_division.tsx index ac2f501..28e3322 100644 --- a/src/module/division_new/components/create_division.tsx +++ b/src/module/division_new/components/create_division.tsx @@ -24,6 +24,7 @@ import { funGetUserByCookies } from "@/module/auth"; import CreateAdminDivision from "./create_admin_division"; import CreateUsers from "./create_users"; import NavbarCreateUsers from "./ui/navbar_create_users"; +import NavbarAdminDivision from "./ui/navbar_admin_division"; export default function CreateDivision() { @@ -74,12 +75,30 @@ export default function CreateDivision() { } + function onChooseGroup(val: any) { + member.set([]) + setBody({ ...body, idGroup: val }) + } + + useShallowEffect(() => { loadData(); }, []); - if (isChooseAdmin) return + if (isChooseAdmin) return { + if (val) { + member.set([]) + setBody({ + ...body, + idGroup: "", + name: "", + desc: "", + }) + } + + setChooseAdmin(false) + }} /> if (isChooseAnggota) return { setChooseAnggota(false) }} /> @@ -101,8 +120,10 @@ export default function CreateDivision() { label: pro.name }))} onChange={(val) => { - setBody({ ...body, idGroup: val }) + onChooseGroup(val) }} + + value={body.idGroup} /> ) } @@ -112,9 +133,10 @@ export default function CreateDivision() { size="md" required radius={40} + value={body.name} onChange={(val) => { setBody({ ...body, name: val.target.value }) }} /> -