diff --git a/src/app/(application)/division/create/page.tsx b/src/app/(application)/division/create/page.tsx index 4ccb230..b94d1ad 100644 --- a/src/app/(application)/division/create/page.tsx +++ b/src/app/(application)/division/create/page.tsx @@ -3,9 +3,9 @@ import React from 'react'; function Page({ searchParams }: { searchParams: { page: string } }) { if (searchParams.page == "anggota") - return - if (searchParams.page == "pilih-admin") - return + return + // if (searchParams.page == "pilih-admin") + // return return ( ); diff --git a/src/module/_global/bin/api_address.ts b/src/module/_global/bin/api_address.ts index bc54fdc..4dacc12 100644 --- a/src/module/_global/bin/api_address.ts +++ b/src/module/_global/bin/api_address.ts @@ -33,7 +33,8 @@ export const API_ADDRESS = { "apiCreatePosition": "/api/position/post?path=create-position", "apiUpdatePosition": "/api/position/post?path=update-position", "apiDeletePosition": "/api/position/post?path=delete-position", - + // Division + "apiGetAllDivision": "/api/division/get?path=get-all-division", } \ 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 d5f31e5..f13deed 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, title, menu }: { back?: string, title: string, menu: React.ReactNode }) => { return ( - + { + back!=undefined && () + } {_.startCase(title)} diff --git a/src/module/auth/api/funGetUserByCookies.ts b/src/module/auth/api/funGetUserByCookies.ts index a80515e..fdcf6b5 100644 --- a/src/module/auth/api/funGetUserByCookies.ts +++ b/src/module/auth/api/funGetUserByCookies.ts @@ -16,5 +16,5 @@ export default async function funGetUserByCookies() { }, }); - return { id: user?.id, name: user?.name, idVillage: user?.idVillage }; + return { id: user?.id, idUserRole: user?.idUserRole, name: user?.name, idVillage: user?.idVillage, idGroup: user?.idGroup, idPosition: user?.idPosition }; } \ No newline at end of file diff --git a/src/module/division_new/api/get/getAllDivision.ts b/src/module/division_new/api/get/getAllDivision.ts index 6645584..53c13e4 100644 --- a/src/module/division_new/api/get/getAllDivision.ts +++ b/src/module/division_new/api/get/getAllDivision.ts @@ -1,17 +1,27 @@ import { prisma } from "@/module/_global"; +import { funGetUserByCookies } from "@/module/auth"; import { NextRequest } from "next/server"; export default async function getAllDivision(req: NextRequest) { try { + let grup + const user = await funGetUserByCookies() const searchParams = req.nextUrl.searchParams - const groupID = searchParams.get('groupID'); + let groupID = searchParams.get('groupID'); + if (groupID == null || groupID == undefined) { + grup = user.idGroup + } else { + grup = groupID + } + const division = await prisma.division.findMany({ where: { isActive: true, - idGroup: String(groupID) + idGroup: grup } }) + return Response.json(division); } 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 2811208..9dbdcc7 100644 --- a/src/module/division_new/components/create_admin_division.tsx +++ b/src/module/division_new/components/create_admin_division.tsx @@ -1,7 +1,7 @@ import React from 'react'; import NavbarAdminDivision from './ui/navbar_admin_division'; -export default function CreateAdminDivision() { +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 0409d7a..a313b36 100644 --- a/src/module/division_new/components/create_division.tsx +++ b/src/module/division_new/components/create_division.tsx @@ -1,5 +1,7 @@ "use client"; -import { LayoutNavbarNew, WARNA } from "@/module/_global"; +import { API_ADDRESS, LayoutNavbarNew, WARNA } from "@/module/_global"; +import { TypeGroup } from "@/module/group"; +import { useHookstate } from "@hookstate/core"; import { Avatar, Box, @@ -12,65 +14,108 @@ import { Textarea, TextInput, } from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; import { useRouter } from "next/navigation"; -import React from "react"; +import React, { useState } from "react"; import { IoIosArrowDropright } from "react-icons/io"; -const dataUser = [ - { - id: 1, - img: "https://i.pravatar.cc/1000?img=3", - name: "Doni Setiawan", - }, - { - id: 2, - img: "https://i.pravatar.cc/1000?img=10", - name: "Ilham Udin", - }, - { - id: 3, - img: "https://i.pravatar.cc/1000?img=11", - name: "Didin Anang", - }, - { - id: 4, - img: "https://i.pravatar.cc/1000?img=21", - name: "Angga Saputra", - }, - { - id: 5, - img: "https://i.pravatar.cc/1000?img=32", - name: "Marcel Widianto", - }, - { - id: 6, - img: "https://i.pravatar.cc/1000?img=37", - name: "Bagas Nusantara", - }, -]; +import { globalMemberDivision } from "../lib/val_division"; +import toast from "react-hot-toast"; +import { funGetUserByCookies } from "@/module/auth"; +import CreateAdminDivision from "./create_admin_division"; +import CreateUsers from "./create_users"; +import NavbarCreateUsers from "./ui/navbar_create_users"; + export default function CreateDivision() { const router = useRouter(); + const [dataGroup, setDataGroup] = useState(); + const [roleUser, setRoleUser] = useState("") + const [isChooseAnggota, setChooseAnggota] = useState(false) + const [isChooseAdmin, setChooseAdmin] = useState(false) + const member = useHookstate(globalMemberDivision) + const [body, setBody] = useState({ + idGroup: "", + name: "", + desc: "", + }); + + async function loadData() { + const loadGroup = await fetch(API_ADDRESS.apiGetAllGroup + '&active=true'); + const dataGroup = await loadGroup.json(); + setDataGroup(dataGroup); + + const loadUser = await funGetUserByCookies(); + setRoleUser(loadUser.idUserRole) + } + + function onSubmit() { + if (roleUser == "supadmin" && (body.idGroup == "" || body.idGroup == null)) { + return toast.error("Error! grup harus diisi") + } + + if (body.name == "") { + return toast.error("Error! nama divisi harus diisi") + } + + if (member.length == 0) { + return toast.error("Error! belum ada anggota yang terdaftar") + } + + + + setChooseAdmin(true) + + } + + function onToChooseAnggota() { + if (roleUser == "supadmin" && body.idGroup == "") + return toast.error("Error! grup harus diisi") + setChooseAnggota(true) + } + + + + useShallowEffect(() => { + loadData(); + }, []); + + if (isChooseAdmin) return + + if (isChooseAnggota) return + return ( - ({ + value: String(pro.id), + label: pro.name + }))} + onChange={(val) => { + setBody({ ...body, idGroup: val }) + }} + /> + ) + } { setBody({ ...body, name: val.target.value }) }} /> -