From 3bf3eed9aae98a21677bdf664842056af913ce14 Mon Sep 17 00:00:00 2001 From: amel Date: Mon, 12 Aug 2024 14:09:44 +0800 Subject: [PATCH] upd: divisi Deskripsi: - info divisi No Issues --- .../division/add-member/[id]/page.tsx | 12 + .../division/create-anggota/[id]/page.tsx | 10 - .../(application)/division/info/[id]/page.tsx | 9 +- src/app/api/division/[id]/detail/route.ts | 101 ++++++++ src/app/api/division/[id]/route.ts | 41 ++- src/app/api/user/route.ts | 2 +- .../components/create_anggota_division.tsx | 56 ++++- .../components/create_division.tsx | 2 - .../components/drawer_detail_division.tsx | 8 +- .../components/information_division.tsx | 233 ++++++++++++------ .../components/navbar_detail_division.tsx | 2 +- src/module/division_new/index.ts | 12 +- src/module/division_new/lib/api_division.ts | 27 +- src/module/division_new/lib/type_division.ts | 8 + .../view/view_Information_division.tsx | 11 - .../view/view_create_anggota_division.tsx | 12 - 16 files changed, 400 insertions(+), 146 deletions(-) create mode 100644 src/app/(application)/division/add-member/[id]/page.tsx delete mode 100644 src/app/(application)/division/create-anggota/[id]/page.tsx delete mode 100644 src/module/division_new/view/view_Information_division.tsx delete mode 100644 src/module/division_new/view/view_create_anggota_division.tsx diff --git a/src/app/(application)/division/add-member/[id]/page.tsx b/src/app/(application)/division/add-member/[id]/page.tsx new file mode 100644 index 0000000..b9180c6 --- /dev/null +++ b/src/app/(application)/division/add-member/[id]/page.tsx @@ -0,0 +1,12 @@ +import { CreateAnggotaDivision } from "@/module/division_new"; +import { Box } from "@mantine/core"; + +function Page({ params }: { params: { id: string } }) { + return ( + + + + ) +} + +export default Page; \ No newline at end of file diff --git a/src/app/(application)/division/create-anggota/[id]/page.tsx b/src/app/(application)/division/create-anggota/[id]/page.tsx deleted file mode 100644 index d881db6..0000000 --- a/src/app/(application)/division/create-anggota/[id]/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { ViewCreateAnggotaDivision } from "@/module/division_new"; - - -function Page() { - return ( - - ) -} - -export default Page; \ No newline at end of file diff --git a/src/app/(application)/division/info/[id]/page.tsx b/src/app/(application)/division/info/[id]/page.tsx index acfe9f0..a10be7f 100644 --- a/src/app/(application)/division/info/[id]/page.tsx +++ b/src/app/(application)/division/info/[id]/page.tsx @@ -1,8 +1,11 @@ -import { ViewInformationDivision } from "@/module/division_new"; +import { InformationDivision } from "@/module/division_new"; +import { Box } from "@mantine/core"; -function Page() { +function Page({ params }: { params: { id: string } }) { return ( - + + + ) } diff --git a/src/app/api/division/[id]/detail/route.ts b/src/app/api/division/[id]/detail/route.ts index 1269a5c..b307df2 100644 --- a/src/app/api/division/[id]/detail/route.ts +++ b/src/app/api/division/[id]/detail/route.ts @@ -154,4 +154,105 @@ export async function GET(request: Request, context: { params: { id: string } }) console.log(error); return NextResponse.json({ success: false, message: "Gagal mendapatkan divisi, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); } +} + + + + +// MENGELUARKAN ANGGOTA DARI DIVISI +export async function DELETE(request: Request, context: { params: { id: string } }) { + try { + const user = await funGetUserByCookies() + if (user.id == undefined) { + return NextResponse.json({ success: false, message: "Anda harus login untuk mengakses ini" }, { status: 401 }); + } + + const idDivision = context.params.id; + const { id } = (await request.json()); + + const data = await prisma.division.count({ + where: { + id: idDivision, + isActive: true + }, + }); + + if (data == 0) { + return NextResponse.json( + { + success: false, + message: "Hapus anggota divisi gagal, data tidak ditemukan", + }, + { status: 404 } + ); + } + + const update = await prisma.divisionMember.delete({ + where: { + id: id, + }, + }); + + return NextResponse.json( + { + success: true, + message: "Anggota divisi berhasil dihapus", + }, + { status: 200 } + ); + } catch (error) { + console.log(error); + return NextResponse.json({ success: false, message: "Gagal mendapatkan divisi, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); + } +} + + +// MENGGANTIS STATUS ADMIN DIVISI +export async function PUT(request: Request, context: { params: { id: string } }) { + try { + const user = await funGetUserByCookies() + if (user.id == undefined) { + return NextResponse.json({ success: false, message: "Anda harus login untuk mengakses ini" }, { status: 401 }); + } + + const idDivision = context.params.id; + const { id, isAdmin } = (await request.json()); + + const data = await prisma.division.count({ + where: { + id: idDivision, + isActive: true + }, + }); + + if (data == 0) { + return NextResponse.json( + { + success: false, + message: "Perubahan status admin gagal, data tidak ditemukan", + }, + { status: 404 } + ); + } + + const update = await prisma.divisionMember.update({ + where: { + id: id, + }, + data: { + isAdmin: !isAdmin + } + }); + + return NextResponse.json( + { + success: true, + message: "Status admin berhasil diupdate", + }, + { status: 200 } + ); + } catch (error) { + console.log(error); + return NextResponse.json({ success: false, message: "Gagal mendapatkan divisi, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); + } } \ No newline at end of file diff --git a/src/app/api/division/[id]/route.ts b/src/app/api/division/[id]/route.ts index 43f1c60..ce5b9b0 100644 --- a/src/app/api/division/[id]/route.ts +++ b/src/app/api/division/[id]/route.ts @@ -1,9 +1,10 @@ import { prisma } from "@/module/_global"; import { funGetUserByCookies } from "@/module/auth"; +import _ from "lodash"; import { NextResponse } from "next/server"; -// GET ONE DATA DIVISI :: UNTUK TAMPIL DATA DI HALAMAN EDIT +// GET ONE DATA DIVISI :: UNTUK TAMPIL DATA DI HALAMAN EDIT DAN INFO export async function GET(request: Request, context: { params: { id: string } }) { try { const { id } = context.params; @@ -20,11 +21,43 @@ export async function GET(request: Request, context: { params: { id: string } }) }); if (!data) { - return NextResponse.json( { success: false, message: "Gagal mendapatkan divisi, data tidak ditemukan", }, { status: 404 } ); + return NextResponse.json({ success: false, message: "Gagal mendapatkan divisi, data tidak ditemukan", }, { status: 404 }); } - return NextResponse.json( { success: true, message: "Berhasil mendapatkan divisi", data, }, { status: 200 } ); - + const member = await prisma.divisionMember.findMany({ + where: { + idDivision: String(id), + isActive: true + }, + select: { + id: true, + isAdmin: true, + isLeader: true, + idUser: true, + User: { + select: { + name: true + } + } + }, + orderBy: { + isAdmin: 'desc', + } + }) + + const fixMember = member.map((v: any) => ({ + ..._.omit(v, ["User"]), + name: v.User.name + })) + + const dataFix = { + division: data, + member: fixMember + } + + + return NextResponse.json({ success: true, message: "Berhasil mendapatkan divisi", data: dataFix, }, { status: 200 }); + } catch (error) { console.log(error); return NextResponse.json({ success: false, message: "Gagal mendapatkan divisi, coba lagi nanti", reason: (error as Error).message, }, { status: 500 }); diff --git a/src/app/api/user/route.ts b/src/app/api/user/route.ts index bbc03e5..4531d2f 100644 --- a/src/app/api/user/route.ts +++ b/src/app/api/user/route.ts @@ -7,7 +7,6 @@ import { NextResponse } from "next/server"; // GET ALL MEMBER / USER export async function GET(request: Request) { try { - let fixGroup const { searchParams } = new URL(request.url); const name = searchParams.get('search') @@ -23,6 +22,7 @@ export async function GET(request: Request) { fixGroup = idGroup } + const users = await prisma.user.findMany({ where: { isActive: active == "true" ? true : false, diff --git a/src/module/division_new/components/create_anggota_division.tsx b/src/module/division_new/components/create_anggota_division.tsx index 8db24da..44d50ba 100644 --- a/src/module/division_new/components/create_anggota_division.tsx +++ b/src/module/division_new/components/create_anggota_division.tsx @@ -1,12 +1,18 @@ "use client" -import { LayoutNavbarNew, WARNA } from '@/module/_global'; +import { API_ADDRESS, LayoutNavbarNew, WARNA } from '@/module/_global'; import LayoutModal from '@/module/_global/layout/layout_modal'; +import { funGetUserByCookies } from '@/module/auth'; +import { TypeUser } from '@/module/user'; +import { useHookstate } from '@hookstate/core'; import { Avatar, Box, Button, Divider, Group, Stack, Text, TextInput } from '@mantine/core'; -import { useRouter } from 'next/navigation'; +import { useParams, useRouter } from 'next/navigation'; import React, { useState } from 'react'; import toast from 'react-hot-toast'; import { FaCheck } from 'react-icons/fa6'; import { HiMagnifyingGlass } from 'react-icons/hi2'; +import { globalMemberDivision } from '../lib/val_division'; +import { useShallowEffect } from '@mantine/hooks'; +import { funGetAllmember } from '@/module/user/member/lib/api_member'; const dataUser = [ { @@ -43,27 +49,53 @@ const dataUser = [ export default function CreateAnggotaDivision() { const router = useRouter() - const [selectedFiles, setSelectedFiles] = useState>({}); + const [selectedFiles, setSelectedFiles] = useState([]); + const [dataMember, setDataMember] = useState([]) const [isOpen, setOpen] = useState(false) + const param = useParams<{ id: string }>() + const member = useHookstate(globalMemberDivision) const handleFileClick = (index: number) => { - setSelectedFiles((prevSelectedFiles) => ({ - ...prevSelectedFiles, - [index]: !prevSelectedFiles[index], - })); + if (selectedFiles.some((i: any) => i.id == dataMember[index].id)) { + setSelectedFiles(selectedFiles.filter((i: any) => i.id != dataMember[index].id)) + } else { + setSelectedFiles([...selectedFiles, { idUser: dataMember[index].id, name: dataMember[index].name }]) + } }; function onTrue(val: boolean) { if (val) { - toast.success("Sukses! Data tersimpan"); + toast.success("Sukses! Data tersimpan"); } setOpen(false) router.push("/division/info/1") - } + } + + async function loadData() { + console.log("masuk") + const res = await funGetAllmember('?active=true&group=group1'); + const user = await funGetUserByCookies(); + + console.log(res) + // if(res.success){ + // setDataMember(res.data.filter((i: any) => i.id != user.id)) + // }else{ + // toast.error(res.message) + // } + + // cek data member sebelumnya + if (member.length > 0) { + setSelectedFiles(JSON.parse(JSON.stringify(member.get()))) + } + } + + useShallowEffect(() => { + loadData() + }, []); return ( - @@ -115,8 +147,8 @@ export default function CreateAnggotaDivision() { setOpen(false)} - description="Apakah Anda yakin ingin menambahkan data?" - onYes={(val) => { onTrue(val) }} /> + description="Apakah Anda yakin ingin menambahkan data?" + onYes={(val) => { onTrue(val) }} /> ); } diff --git a/src/module/division_new/components/create_division.tsx b/src/module/division_new/components/create_division.tsx index a8bec20..d5ef1d9 100644 --- a/src/module/division_new/components/create_division.tsx +++ b/src/module/division_new/components/create_division.tsx @@ -20,8 +20,6 @@ import { IoIosArrowDropright } from "react-icons/io"; 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 { funGetAllGroup, IDataGroup } from "@/module/group"; import NavbarAdminDivision from "./navbar_admin_division"; import NavbarCreateUsers from "./navbar_create_users"; diff --git a/src/module/division_new/components/drawer_detail_division.tsx b/src/module/division_new/components/drawer_detail_division.tsx index 9504c3c..5c3dd1e 100644 --- a/src/module/division_new/components/drawer_detail_division.tsx +++ b/src/module/division_new/components/drawer_detail_division.tsx @@ -1,20 +1,22 @@ "use client" import { WARNA } from "@/module/_global"; import { Box, Stack, SimpleGrid, Flex, Text } from "@mantine/core"; -import { useRouter } from "next/navigation"; +import { useParams, useRouter } from "next/navigation"; import { BsInfoCircle } from "react-icons/bs"; import { FaPencil } from "react-icons/fa6"; import { TbReportAnalytics } from "react-icons/tb"; export default function DrawerDetailDivision() { + const param = useParams<{ id: string }>() const router = useRouter() + return ( - router.push('/division/info/1')} justify={'center'} align={'center'} direction={'column'} > + router.push('/division/info/' + param.id)} justify={'center'} align={'center'} direction={'column'} > @@ -23,7 +25,7 @@ export default function DrawerDetailDivision() { { - router.push('/division/report/1') + router.push('/division/report/' + param.id) }} justify={'center'} align={'center'} direction={'column'} > diff --git a/src/module/division_new/components/information_division.tsx b/src/module/division_new/components/information_division.tsx index 72f7948..8ddd052 100644 --- a/src/module/division_new/components/information_division.tsx +++ b/src/module/division_new/components/information_division.tsx @@ -1,63 +1,106 @@ "use client" -import { LayoutDrawer, LayoutNavbarNew, WARNA } from '@/module/_global'; -import { ActionIcon, Avatar, Box, Button, Divider, Flex, Group, Modal, SimpleGrid, Text, Title } from '@mantine/core'; -import { useRouter } from 'next/navigation'; +import { LayoutDrawer, LayoutNavbarNew, SkeletonSingle, WARNA } from '@/module/_global'; +import { ActionIcon, Avatar, Box, Button, Divider, Flex, Group, Skeleton, Stack, Text } from '@mantine/core'; +import { useShallowEffect } from '@mantine/hooks'; +import { useParams, useRouter } from 'next/navigation'; import React, { useState } from 'react'; +import toast from 'react-hot-toast'; import { AiOutlineUserAdd } from 'react-icons/ai'; import { FaUserTie } from 'react-icons/fa6'; -import { HiUserAdd } from 'react-icons/hi'; import { IoIosCloseCircle } from 'react-icons/io'; import { LuClipboardEdit } from 'react-icons/lu'; -import { MdAccountCircle } from 'react-icons/md'; +import { funDeleteMemberDivision, funEditStatusAdminDivision, funGetDivisionById } from '../lib/api_division'; +import { IDataMemberDivision } from '../lib/type_division'; +import LayoutModal from '@/module/_global/layout/layout_modal'; -const dataUser = [ - { - id: 1, - img: "https://i.pravatar.cc/1000?img=3", - name: "Doni Setiawan", - role: "Admin" - }, - { - id: 2, - img: "https://i.pravatar.cc/1000?img=10", - name: "Ilham Udin", - role: "Anggota" - }, - { - id: 3, - img: "https://i.pravatar.cc/1000?img=11", - name: "Didin Anang", - role: "Anggota" - }, - { - id: 4, - img: "https://i.pravatar.cc/1000?img=21", - name: "Angga Saputra", - role: "Anggota" - }, - { - id: 5, - img: "https://i.pravatar.cc/1000?img=32", - name: "Marcel Widianto", - role: "Anggota" - }, - { - id: 6, - img: "https://i.pravatar.cc/1000?img=37", - name: "Bagas Nusantara", - role: "Anggota" - }, -]; export default function InformationDivision() { const router = useRouter() const [openDrawer, setDrawer] = useState(false) + const param = useParams<{ id: string }>() + const [name, setName] = useState('') + const [deskripsi, setDeskripsi] = useState('') + const [member, setMember] = useState([]) + const [loading, setLoading] = useState(false) + const [valChooseMember, setChooseMember] = useState("") + const [valChooseMemberStatus, setChooseMemberStatus] = useState(false) + const [valChooseMemberName, setChooseMemberName] = useState("") + const [isOpenModal, setOpenModal] = useState(false) + + async function getOneData() { + try { + setLoading(true); + const res = await funGetDivisionById(param.id); + if (res.success) { + setName(res.data.division.name); + setDeskripsi(res.data.division.desc); + setMember(res.data.member) + } else { + toast.error(res.message); + } + setLoading(false); + + } catch (error) { + console.error(error); + toast.error("Gagal mendapatkan divisi, coba lagi nanti"); + } finally { + setLoading(false); + } + } + + useShallowEffect(() => { + getOneData(); + }, [param.id]) + + + async function onClickMember(id: string, status: boolean) { + setChooseMember(id) + setChooseMemberStatus(status) + setDrawer(true) + } + + + async function deleteMember() { + try { + const res = await funDeleteMemberDivision(param.id, { id: valChooseMember }) + if (res.success) { + toast.success(res.message) + setDrawer(false) + getOneData() + } else { + toast.error(res.message) + } + setOpenModal(false) + } catch (error) { + console.error(error); + setOpenModal(false) + toast.error("Gagal mendapatkan divisi, coba lagi nanti"); + } + } + + + async function editStatusAdmin() { + try { + const res = await funEditStatusAdminDivision(param.id, { id: valChooseMember, isAdmin: valChooseMemberStatus }) + if (res.success) { + toast.success(res.message) + getOneData() + } else { + toast.error(res.message) + } + setDrawer(false) + } catch (error) { + console.error(error); + toast.error("Gagal mendapatkan divisi, coba lagi nanti"); + } + } + return ( - { - router.push('/division/edit/1') + router.push('/division/edit/' + param.id) }} bg={WARNA.bgIcon} size="lg" radius="lg" aria-label="Settings"> } @@ -69,7 +112,20 @@ export default function InformationDivision() { borderRadius: 10, border: `1px solid ${WARNA.borderBiruMuda}`, }}> - Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. + { + loading ? + Array(3) + .fill(null) + .map((_, i) => ( + + + + )) + : + (deskripsi != null && deskripsi != undefined) ? + {deskripsi} + : <> + } @@ -78,10 +134,10 @@ export default function InformationDivision() { border: `1px solid ${WARNA.borderBiruMuda}`, }}> - 20 Anggota + {member.length} Anggota - router.push('/division/create-anggota/1')}> + router.push('/division/add-member/' + param.id)}> @@ -90,55 +146,74 @@ export default function InformationDivision() { - {dataUser.map((v, i) => { - return ( - - setDrawer(true)} - > - - - - - {v.name} - - - - - {v.role} - - - - + {loading + ? Array(3) + .fill(null) + .map((_, i) => ( + + - - ); - })} + )) + : member.map((v, i) => { + return ( + + { onClickMember(v.id, (v.isAdmin) ? true : false), setChooseMemberName(v.name) }} + > + + + + + {v.name} + + + + + {(v.isAdmin) ? 'Admin' : 'Anggota'} + + + + + + + ); + }) + } - setDrawer(false)} title=""> + setDrawer(false)} title={valChooseMemberName}> - setDrawer(false)}> + editStatusAdmin()}> - Jadikan Admin + {(valChooseMemberStatus == false) ? "Jadikan admin" : "Memberhentikan sebagai admin"} - setDrawer(false)}> + setOpenModal(true)}> - Keluarkan dari Group + Keluarkan dari divisi + + setOpenModal(false)} + description="Apakah Anda yakin ingin mengeluarkan anggota?" + onYes={(val) => { + if (!val) { + setOpenModal(false) + } else { + deleteMember() + } + }} /> ); } diff --git a/src/module/division_new/components/navbar_detail_division.tsx b/src/module/division_new/components/navbar_detail_division.tsx index 1239513..cd78b22 100644 --- a/src/module/division_new/components/navbar_detail_division.tsx +++ b/src/module/division_new/components/navbar_detail_division.tsx @@ -18,7 +18,7 @@ export default function NavbarDetailDivision() { try { const res = await funGetDivisionById(param.id); if (res.success) { - setName(res.data.name); + setName(res.data.division.name); } else { toast.error(res.message); } diff --git a/src/module/division_new/index.ts b/src/module/division_new/index.ts index 3fad27e..c655e43 100644 --- a/src/module/division_new/index.ts +++ b/src/module/division_new/index.ts @@ -1,4 +1,4 @@ -import { IFormDivision, IFormMemberDivision, IFormFixDivision, IDataDivison } from './lib/type_division'; +import { IFormDivision, IFormMemberDivision, IFormFixDivision, IDataDivison, IDataMemberDivision } from './lib/type_division'; import CreateUserDivisionCalender from "./_division_fitur/calender/components/create_user_division_calender"; import UlangiEvent from "./_division_fitur/calender/components/ulangi_event"; import UpdateUlangiEvent from "./_division_fitur/calender/components/update_calander/update_ulangi_event"; @@ -21,10 +21,8 @@ import ViewUpdateProgressDivisionTask from "./_division_fitur/task/view/view_upd import { apiDivision } from "./api/api_division"; import CreateAdminDivision from "./components/create_admin_division"; import CreateUsers from "./components/create_users"; -import ViewCreateAnggotaDivision from "./view/view_create_anggota_division"; import ViewCreateReport from "./view/view_create_report"; import ViewEditDivision from "./view/view_edit_division"; -import ViewInformationDivision from "./view/view_Information_division"; import ViewReportDivision from "./view/view_report_division"; import ListDivision from './components/list_division'; import CreateDivision from './components/create_division'; @@ -34,6 +32,8 @@ import FeatureDetailDivision from './components/feature_detail_division'; import ListTaskOnDetailDivision from './components/list_task'; import ListDocumentOnDetailDivision from './components/list_document'; import ListDiscussionOnDetailDivision from './components/list_discussion'; +import InformationDivision from './components/information_division'; +import CreateAnggotaDivision from './components/create_anggota_division'; export { CreateUsers }; export { CreateAdminDivision }; @@ -57,12 +57,10 @@ export { ViewDetailDiscussion }; export { ViewEditDiscussion }; export { ViewDocumentDivision }; export { ViewReportDivision }; -export { ViewInformationDivision }; export { ViewEditDivision }; -export { ViewCreateAnggotaDivision }; export { apiDivision } export { apiDiscussion } -export type { IFormDivision, IFormMemberDivision, IFormFixDivision, IDataDivison } +export type { IFormDivision, IFormMemberDivision, IFormFixDivision, IDataDivison, IDataMemberDivision } export { ListDivision } export { CreateDivision } export { NavbarDetailDivision } @@ -71,3 +69,5 @@ export { FeatureDetailDivision } export { ListTaskOnDetailDivision } export { ListDocumentOnDetailDivision } export { ListDiscussionOnDetailDivision } +export { InformationDivision } +export { CreateAnggotaDivision } diff --git a/src/module/division_new/lib/api_division.ts b/src/module/division_new/lib/api_division.ts index 5a376d7..5bbe0b4 100644 --- a/src/module/division_new/lib/api_division.ts +++ b/src/module/division_new/lib/api_division.ts @@ -1,4 +1,4 @@ -import { IFormFixDivision } from "./type_division"; +import { IFormFixDivision, IFormMemberDivision } from "./type_division"; export const funGetAllDivision = async (path?: string) => { const response = await fetch(`/api/division${(path) ? path : ''}`, { next: { tags: ['division'] } }); @@ -24,4 +24,27 @@ export const funCreateDivision = async (data: IFormFixDivision) => { body: JSON.stringify(data), }); return await response.json().catch(() => null); -} \ No newline at end of file +} + +export const funDeleteMemberDivision = async (path: string, data: { id: string }) => { + const response = await fetch(`/api/division/${path}/detail`, { + method: "DELETE", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(data), + }); + return await response.json().catch(() => null); +} + + +export const funEditStatusAdminDivision = async (path: string, data: { id: string, isAdmin: boolean }) => { + const response = await fetch(`/api/division/${path}/detail`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(data), + }); + return await response.json().catch(() => null); +}; \ No newline at end of file diff --git a/src/module/division_new/lib/type_division.ts b/src/module/division_new/lib/type_division.ts index 4c7f5cc..97f5636 100644 --- a/src/module/division_new/lib/type_division.ts +++ b/src/module/division_new/lib/type_division.ts @@ -47,4 +47,12 @@ export interface IDataDiscussionOnDetailDivision { title: string, date: string, user: string +} + +export interface IDataMemberDivision { + id: string, + idUser: string, + isAdmin: string, + isLeader: string, + name: string } \ No newline at end of file diff --git a/src/module/division_new/view/view_Information_division.tsx b/src/module/division_new/view/view_Information_division.tsx deleted file mode 100644 index d354ecb..0000000 --- a/src/module/division_new/view/view_Information_division.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react'; -import InformationDivision from '../components/information_division'; -import { Box } from '@mantine/core'; - -export default function ViewInformationDivision() { - return ( - - - - ); -} diff --git a/src/module/division_new/view/view_create_anggota_division.tsx b/src/module/division_new/view/view_create_anggota_division.tsx deleted file mode 100644 index fdf3a7b..0000000 --- a/src/module/division_new/view/view_create_anggota_division.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { Box } from '@mantine/core'; -import React from 'react'; -import CreateAnggotaDivision from '../components/create_anggota_division'; - -export default function ViewCreateAnggotaDivision() { - return ( - - - - ); -} -