upd: divisi

Deskripsi:
- membuat list divisi berdasarkan kategori semua data dan data saya

NoIssues
This commit is contained in:
amel
2024-12-26 11:36:16 +08:00
parent 5300b6a130
commit 326d470839
3 changed files with 83 additions and 43 deletions

View File

@@ -18,6 +18,7 @@ export async function GET(request: Request) {
const roleUser = user.idUserRole const roleUser = user.idUserRole
const { searchParams } = new URL(request.url); const { searchParams } = new URL(request.url);
const idGroup = searchParams.get("group"); const idGroup = searchParams.get("group");
const kategori = searchParams.get("cat");
const name = searchParams.get('search'); const name = searchParams.get('search');
const page = searchParams.get('page'); const page = searchParams.get('page');
const active = searchParams.get("active"); const active = searchParams.get("active");
@@ -30,6 +31,7 @@ export async function GET(request: Request) {
} }
// JIKA (ROLE BUKAN USER DAN COADMIN) ATAU SEMUA ROLE DG KATEGORI == SEMUA
let kondisi: any = { let kondisi: any = {
isActive: active == 'false' ? false : true, isActive: active == 'false' ? false : true,
idVillage: String(villaId), idVillage: String(villaId),
@@ -40,19 +42,23 @@ export async function GET(request: Request) {
} }
} }
// JIKA ROLE = USER ATAU COADMIN DAN KATEGORI = MINE (DIVISI SAYA)
if (roleUser != "supadmin" && roleUser != "cosupadmin" && roleUser != "admin") { if (roleUser != "supadmin" && roleUser != "cosupadmin" && roleUser != "admin") {
kondisi = { if (kategori != "semua") {
isActive: active == 'false' ? false : true, kondisi = {
idVillage: String(villaId), isActive: active == 'false' ? false : true,
idGroup: grup, idVillage: String(villaId),
name: { idGroup: grup,
contains: (name == undefined || name == "null") ? "" : name, name: {
mode: "insensitive" contains: (name == undefined || name == "null") ? "" : name,
}, mode: "insensitive"
DivisionMember: { },
some: { DivisionMember: {
isActive: true, some: {
idUser: String(user.id) isActive: true,
idUser: String(user.id)
}
} }
} }
} }

View File

@@ -30,6 +30,7 @@ export default function ListDivision() {
const [isRefresh, setRefresh] = useState(false) const [isRefresh, setRefresh] = useState(false)
const notifLoadPage = useHookstate(globalNotifPage) const notifLoadPage = useHookstate(globalNotifPage)
const status = searchParams.get('active') const status = searchParams.get('active')
const kategori = searchParams.get('cat')
const handleList = () => { const handleList = () => {
@@ -43,7 +44,7 @@ export default function ListDivision() {
if (isPage == 1) { if (isPage == 1) {
setData([]) setData([])
} }
const response = await funGetAllDivision('?active=' + status + '&search=' + searchQuery + '&group=' + group + '&page=' + isPage) const response = await funGetAllDivision('?active=' + status + '&search=' + searchQuery + '&group=' + group + '&page=' + isPage + '&cat=' + kategori);
if (response.success) { if (response.success) {
setJumlah(response.total) setJumlah(response.total)
setNameGroup(response.filter.name) setNameGroup(response.filter.name)
@@ -72,7 +73,7 @@ export default function ListDivision() {
useShallowEffect(() => { useShallowEffect(() => {
setPage(1) setPage(1)
fetchData(true) fetchData(true)
}, [status, searchQuery]) }, [status, searchQuery, kategori])

View File

@@ -4,7 +4,7 @@ import { useHookstate } from "@hookstate/core";
import { Box, rem, Tabs } from "@mantine/core"; import { Box, rem, Tabs } from "@mantine/core";
import { useRouter, useSearchParams } from "next/navigation"; import { useRouter, useSearchParams } from "next/navigation";
import { IoMdCheckmarkCircleOutline } from "react-icons/io"; import { IoMdCheckmarkCircleOutline } from "react-icons/io";
import { IoCloseCircleOutline } from "react-icons/io5"; import { IoCloseCircleOutline, IoFileTrayOutline, IoFileTrayStackedOutline } from "react-icons/io5";
import ListDivision from "./list_division"; import ListDivision from "./list_division";
export default function TabListDivision() { export default function TabListDivision() {
@@ -13,6 +13,7 @@ export default function TabListDivision() {
const searchParams = useSearchParams(); const searchParams = useSearchParams();
const status = searchParams.get("active"); const status = searchParams.get("active");
const group = searchParams.get("group"); const group = searchParams.get("group");
const kategori = searchParams.get("cat");
const tema = useHookstate(TEMA) const tema = useHookstate(TEMA)
const roleLogin = useHookstate(globalRole) const roleLogin = useHookstate(globalRole)
@@ -22,40 +23,72 @@ export default function TabListDivision() {
variant="pills" variant="pills"
color={tema.get().bgFiturHome} color={tema.get().bgFiturHome}
radius="xl" radius="xl"
defaultValue={status == "false" ? "false" : "true"} defaultValue={status == "false" || kategori == "semua" ? "false" : "true"}
> >
{ {
roleLogin.get() != '' ? roleLogin.get() != ''
(roleLogin.get() != "user" && roleLogin.get() != "coadmin") && ?
<Tabs.List (roleLogin.get() != "user" && roleLogin.get() != "coadmin")
bg={"white"} ?
style={{ <Tabs.List
border: `1px solid ${"#EDEDED"}`, bg={"white"}
padding: 5, style={{
borderRadius: 100, border: `1px solid ${"#EDEDED"}`,
}} padding: 5,
> borderRadius: 100,
<Tabs.Tab
value="true"
w={"45%"}
leftSection={<IoMdCheckmarkCircleOutline style={iconStyle} />}
onClick={() => {
router.push("/division?active=true&group=" + group);
}} }}
> >
Aktif <Tabs.Tab
</Tabs.Tab> value="true"
<Tabs.Tab w={"45%"}
value="false" leftSection={<IoMdCheckmarkCircleOutline style={iconStyle} />}
w={"53%"} onClick={() => {
leftSection={<IoCloseCircleOutline style={iconStyle} />} router.push("/division?active=true&group=" + group);
onClick={() => { }}
router.push("/division?active=false&group=" + group); >
Aktif
</Tabs.Tab>
<Tabs.Tab
value="false"
w={"53%"}
leftSection={<IoCloseCircleOutline style={iconStyle} />}
onClick={() => {
router.push("/division?active=false&group=" + group);
}}
>
Tidak Aktif
</Tabs.Tab>
</Tabs.List>
:
<Tabs.List
bg={"white"}
style={{
border: `1px solid ${"#EDEDED"}`,
padding: 5,
borderRadius: 100,
}} }}
> >
Tidak Aktif <Tabs.Tab
</Tabs.Tab> value="true"
</Tabs.List> w={"45%"}
leftSection={<IoFileTrayOutline style={iconStyle} />}
onClick={() => {
router.push("/division");
}}
>
Divisi Saya
</Tabs.Tab>
<Tabs.Tab
value="false"
w={"53%"}
leftSection={<IoFileTrayStackedOutline style={iconStyle} />}
onClick={() => {
router.push("/division?cat=semua");
}}
>
Semua Divisi
</Tabs.Tab>
</Tabs.List>
: <></> : <></>
} }
<ListDivision /> <ListDivision />