diff --git a/src/app/(application)/member/page.tsx b/src/app/(application)/member/page.tsx
index 3bdaf36..9343340 100644
--- a/src/app/(application)/member/page.tsx
+++ b/src/app/(application)/member/page.tsx
@@ -3,7 +3,7 @@ import { ViewListMember } from "@/module/user/member";
function Page({ searchParams }: { searchParams: { page: string } }) {
if (searchParams.page == "filter")
- return
+ return
return (
diff --git a/src/app/(application)/position/page.tsx b/src/app/(application)/position/page.tsx
index c377930..fc42b06 100644
--- a/src/app/(application)/position/page.tsx
+++ b/src/app/(application)/position/page.tsx
@@ -4,7 +4,7 @@ import React from 'react';
function Page({ searchParams }: { searchParams: { page: string } }) {
if (searchParams.page == "filter")
- return
+ return
return (
diff --git a/src/module/_global/view/view_filter.tsx b/src/module/_global/view/view_filter.tsx
index 9bf3048..ad1392e 100644
--- a/src/module/_global/view/view_filter.tsx
+++ b/src/module/_global/view/view_filter.tsx
@@ -1,43 +1,47 @@
'use client'
import { Box, Group, Divider, Button, Text } from "@mantine/core";
-import { useState } from "react";
+import { useEffect, useState } from "react";
import { FaCheck } from "react-icons/fa6";
import { WARNA } from "../fun/WARNA";
import LayoutNavbarNew from "../layout/layout_navbar_new";
import { useRouter } from "next/navigation";
+import { API_ADDRESS } from "../bin/api_address";
+import { useShallowEffect } from "@mantine/hooks";
-const dataFilter = [
- {
- id: 1,
- name: 'Dinas'
- },
- {
- id: 2,
- name: 'Adat'
- },
- {
- id: 3,
- name: 'LPD'
- },
- {
- id: 4,
- name: 'Karang Taruna'
- },
- {
- id: 5,
- name: 'BPD'
- },
- {
- id: 6,
- name: 'LPM'
- },
-]
-export default function ViewFilter() {
+interface dataGroup {
+ id: string;
+ name: string;
+}
+
+export default function ViewFilter({linkFilter}: {linkFilter: string}) {
const [selectedFilter, setSelectedFilter] = useState(null);
+ const [checked, setChecked] = useState([]);
+ const [searchParams, setSearchParams] = useState({ groupId: '' });
- const handleFilterClick = (filterName: string) => {
- setSelectedFilter(filterName);
+ const handleFilterClick = (id: string) => {
+ setSelectedFilter(id);
};
+
+ async function getAllGroupFilter() {
+ try {
+ const response = await fetch(`${API_ADDRESS.apiGetAllGroup}&active=true&groupId=${searchParams.groupId}`);
+ const data = await response.json();
+ console.log("mana data", response);
+ setChecked(data);
+ } catch (error) {
+ console.error(error);
+ }
+ }
+
+ useEffect(() => {
+ if (selectedFilter) {
+ setSearchParams({ groupId: selectedFilter });
+ }
+ }, [selectedFilter]);
+
+ useEffect(() => {
+ getAllGroupFilter();
+ }, [searchParams.groupId]);
const router = useRouter()
@@ -45,18 +49,18 @@ export default function ViewFilter() {
- {dataFilter.map((filter) => (
+ {checked.map((filter) => (
handleFilterClick(filter.name)}
+ onClick={() => handleFilterClick(filter.id)}
>
-
+
{filter.name}
- {selectedFilter === filter.name && }
+ {selectedFilter === filter.id && }
@@ -66,7 +70,9 @@ export default function ViewFilter() {
radius={100}
size="lg"
color={WARNA.biruTua}
- onClick={() => { router.back() }}
+ onClick={() => {
+ router.push(`/${linkFilter}?group=` + selectedFilter)
+ }}
>
Terapkan
diff --git a/src/module/group/components/list_group_active.tsx b/src/module/group/components/list_group_active.tsx
index 53046e2..01f053e 100644
--- a/src/module/group/components/list_group_active.tsx
+++ b/src/module/group/components/list_group_active.tsx
@@ -50,7 +50,7 @@ export default function ListGroupActive({ status }: { status: boolean }) {
}
};
- useEffect(() => {
+ useShallowEffect(() => {
getData();
}, [status]);
diff --git a/src/module/group/components/ui/edit_drawer_group.tsx b/src/module/group/components/ui/edit_drawer_group.tsx
index 049ea01..104a0c8 100644
--- a/src/module/group/components/ui/edit_drawer_group.tsx
+++ b/src/module/group/components/ui/edit_drawer_group.tsx
@@ -12,6 +12,7 @@ import {
Text,
TextInput,
} from "@mantine/core";
+import { useShallowEffect } from "@mantine/hooks";
import React, { useEffect, useState } from "react";
import toast from "react-hot-toast";
import { FaPencil, FaToggleOff } from "react-icons/fa6";
@@ -42,7 +43,7 @@ export default function EditDrawerGroup({
- useEffect(() => {
+ useShallowEffect(() => {
getOneGroup();
}, []);
@@ -109,7 +110,7 @@ export default function EditDrawerGroup({
- Non Aktifkan
+ {isActive == false ? "Aktifkan" : "Non Aktifkan"}
void, id: string | null,
+export default function DrawerDetailPosition({ onUpdated, id, isActive }: {
+ onUpdated: (val: boolean) => void, id: string | null, isActive: boolean | null;
}) {
const [openDrawerGroup, setOpenDrawerGroup] = useState(false)
const [isModal, setModal] = useState(false)
@@ -28,12 +29,6 @@ export default function DrawerDetailPosition({ onUpdated, id }: {
setOpenDrawerGroup(false)
}
- function onTrue(val: boolean) {
- if (val) {
- onUpdated(true)
- }
- setModal(false)
- }
async function getAllGroup() {
try {
const res = await fetch(`${API_ADDRESS.apiGetAllGroup}&villageId=121212&active=true`)
@@ -65,7 +60,7 @@ export default function DrawerDetailPosition({ onUpdated, id }: {
body: JSON.stringify({
id: data.id,
name: data.name,
- idGroup: data.idGroup
+ idGroup: data.idGroup,
}),
})
@@ -84,7 +79,7 @@ export default function DrawerDetailPosition({ onUpdated, id }: {
}
}
- useEffect(() => {
+ useShallowEffect(() => {
getAllGroup()
getOneData()
}, [])
@@ -98,7 +93,8 @@ export default function DrawerDetailPosition({ onUpdated, id }: {
"Content-Type": "application/json",
},
body: JSON.stringify({
- data
+ id,
+ isActive,
}),
});
@@ -132,7 +128,7 @@ export default function DrawerDetailPosition({ onUpdated, id }: {
- Non Aktifkan
+ {isActive == false ? "Aktifkan" : "Non Aktifkan"}
diff --git a/src/module/position/component/ui/drawer_list_position.tsx b/src/module/position/component/ui/drawer_list_position.tsx
index 95ce035..c0f7549 100644
--- a/src/module/position/component/ui/drawer_list_position.tsx
+++ b/src/module/position/component/ui/drawer_list_position.tsx
@@ -1,5 +1,6 @@
import { WARNA, LayoutDrawer, API_ADDRESS } from "@/module/_global";
import { Box, Stack, SimpleGrid, Flex, TextInput, Button, Text, Select } from "@mantine/core";
+import { useShallowEffect } from "@mantine/hooks";
import { useRouter } from "next/navigation";
import { useEffect, useState } from "react";
import toast from "react-hot-toast";
@@ -31,7 +32,7 @@ export default function DrawerListPosition({ onCreated }: { onCreated: (val: boo
}
}
- useEffect(() => {
+ useShallowEffect(() => {
getAllGroup()
}, [])
diff --git a/src/module/position/component/ui/list_position_active.tsx b/src/module/position/component/ui/list_position_active.tsx
index 4a657db..6bf07f7 100644
--- a/src/module/position/component/ui/list_position_active.tsx
+++ b/src/module/position/component/ui/list_position_active.tsx
@@ -7,6 +7,7 @@ import DrawerDetailPosition from "./drawer_detail_position";
import toast from "react-hot-toast";
import _ from "lodash";
import { useShallowEffect } from "@mantine/hooks";
+import { useSearchParams } from "next/navigation";
type dataPosition = {
name: string;
@@ -23,12 +24,14 @@ export default function ListPositionActive({ status }: { status: boolean }) {
const [loading, setLoading] = useState(true);
const [selectId, setSelectId] = useState(null);
const [active, setActive] = useState(null)
+ const searchParams = useSearchParams()
+ const group = searchParams.get('group')
async function getAllPosition() {
try {
setDataPosition([]);
setLoading(true)
- const res = await fetch(`${API_ADDRESS.apiGetAllPosition}&active=` + status);
+ const res = await fetch(`${API_ADDRESS.apiGetAllPosition}&active=${status}&groupId=${group}`);
const data = await res.json();
setDataPosition(data);
setLoading(false);
@@ -41,7 +44,7 @@ export default function ListPositionActive({ status }: { status: boolean }) {
useShallowEffect(() => {
getAllPosition();
- }, [status])
+ }, [status, group])
return (
@@ -111,6 +114,7 @@ export default function ListPositionActive({ status }: { status: boolean }) {
>
{
setOpenDrawer(false);
}}
diff --git a/src/module/user/api/get/getAllUser.ts b/src/module/user/api/get/getAllUser.ts
index 4d9a7c2..82733f7 100644
--- a/src/module/user/api/get/getAllUser.ts
+++ b/src/module/user/api/get/getAllUser.ts
@@ -7,11 +7,11 @@ export async function getAllUser(req: NextRequest) {
try {
let fixGroup
const searchParams = req.nextUrl.searchParams;
- const idGroup = searchParams.get("groupID");
+ const idGroup = searchParams.get("groupId");
const active = searchParams.get("active");
const user = await funGetUserByCookies();
- if (idGroup == null || idGroup == undefined) {
+ if (idGroup == "null" || idGroup == undefined) {
fixGroup = user.idGroup
} else {
fixGroup = idGroup
diff --git a/src/module/user/api/get/getOneUser.ts b/src/module/user/api/get/getOneUser.ts
index 2ab5788..03abcfb 100644
--- a/src/module/user/api/get/getOneUser.ts
+++ b/src/module/user/api/get/getOneUser.ts
@@ -19,6 +19,7 @@ export async function getOneUser(req: NextRequest) {
email: true,
gender: true,
idGroup: true,
+ isActive: true,
idPosition: true,
UserRole: {
select: {
diff --git a/src/module/user/member/component/ui/drawer_detail_member.tsx b/src/module/user/member/component/ui/drawer_detail_member.tsx
index 35cdb31..7f035b2 100644
--- a/src/module/user/member/component/ui/drawer_detail_member.tsx
+++ b/src/module/user/member/component/ui/drawer_detail_member.tsx
@@ -2,39 +2,42 @@
import { API_ADDRESS, WARNA } from "@/module/_global";
import LayoutModal from "@/module/_global/layout/layout_modal";
import { Box, Flex, SimpleGrid, Stack, Text } from "@mantine/core";
+import { useShallowEffect } from "@mantine/hooks";
import { useRouter } from "next/navigation";
import { useState } from "react";
import toast from "react-hot-toast";
import { FaPencil, FaToggleOff } from "react-icons/fa6";
import { ImUserCheck } from "react-icons/im";
-export default function DrawerDetailMember({ onDeleted, id }: { onDeleted: (val: boolean) => void, id: string | undefined }) {
+export default function DrawerDetailMember({ onDeleted, id, status }: { onDeleted: (val: boolean) => void, id: string | undefined, status: boolean |undefined }) {
const router = useRouter()
const [isModal, setModal] = useState(false)
+
async function nonActive(val: boolean) {
- // try {
- // if (val) {
- // const res = await fetch(API_ADDRESS.apiDeleteUser, {
- // method: 'POST',
- // headers: {
- // 'Content-Type': 'application/json',
- // },
- // body: JSON.stringify({ id: id}),
- // })
- // if (res.status == 200) {
- // onDeleted(true);
- // } else {
- // onDeleted(false);
- // }
- // }
- // router.push('/member')
- // setModal(false)
- // } catch (error) {
- // console.error(error)
- // setModal(false);
- // toast.error("Terjadi kesalahan");
- // }
+ try {
+ const res = await fetch(API_ADDRESS.apiDeleteUser, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({
+ id,
+ isActive: status
+ }),
+ })
+ if (res.status == 200) {
+ onDeleted(true);
+ } else {
+ onDeleted(false);
+ }
+ router.push('/member')
+ setModal(false)
+ } catch (error) {
+ console.error(error)
+ setModal(false);
+ toast.error("Terjadi kesalahan");
+ }
}
return (
@@ -53,7 +56,7 @@ export default function DrawerDetailMember({ onDeleted, id }: { onDeleted: (val:
- Non Aktifkan
+ {status === false ? "Aktifkan" : "Non Aktifkan"}
diff --git a/src/module/user/member/component/ui/navbar_detail_member.tsx b/src/module/user/member/component/ui/navbar_detail_member.tsx
index 2222cc7..324bab2 100644
--- a/src/module/user/member/component/ui/navbar_detail_member.tsx
+++ b/src/module/user/member/component/ui/navbar_detail_member.tsx
@@ -25,6 +25,7 @@ interface DataMember {
gender: string
position: string
group: string
+ isActive: boolean | undefined
}
export default function NavbarDetailMember({ id }: IdMember) {
@@ -102,7 +103,7 @@ export default function NavbarDetailMember({ id }: IdMember) {
setOpen(false)}>
- setOpen(false)} />
+ setOpen(false)} />
diff --git a/src/module/user/member/component/ui/tab_list_member.tsx b/src/module/user/member/component/ui/tab_list_member.tsx
index e6f8687..e35d2bc 100644
--- a/src/module/user/member/component/ui/tab_list_member.tsx
+++ b/src/module/user/member/component/ui/tab_list_member.tsx
@@ -2,7 +2,7 @@
import { API_ADDRESS, WARNA } from "@/module/_global"
import { Box, Group, ActionIcon, Text } from "@mantine/core"
import { useShallowEffect } from "@mantine/hooks"
-import { useRouter } from "next/navigation"
+import { useRouter, useSearchParams } from "next/navigation"
import { useEffect, useState } from "react"
import { HiMiniUser } from "react-icons/hi2"
@@ -22,12 +22,14 @@ export default function TabListMember({ status }: { status: boolean }) {
const router = useRouter()
const [loading, setLoading] = useState(true);
const [dataMember, setDataMember] = useState([])
+ const searchParams = useSearchParams()
+ const group = searchParams.get('group')
async function getAllUser() {
try {
setLoading(true)
- const res = await fetch(API_ADDRESS.apiGetAllUser + '&active=' + status )
+ const res = await fetch(`${API_ADDRESS.apiGetAllUser}&active=${status}&groupId=${group}` )
const data = await res.json()
setDataMember(data)