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,7 +42,10 @@ 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") {
if (kategori != "semua") {
kondisi = { kondisi = {
isActive: active == 'false' ? false : true, isActive: active == 'false' ? false : true,
idVillage: String(villaId), idVillage: String(villaId),
@@ -57,6 +62,7 @@ export async function GET(request: Request) {
} }
} }
} }
}
const totalData = await prisma.division.count({ const totalData = await prisma.division.count({
where: kondisi where: kondisi

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,11 +23,13 @@ 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") && ?
(roleLogin.get() != "user" && roleLogin.get() != "coadmin")
?
<Tabs.List <Tabs.List
bg={"white"} bg={"white"}
style={{ style={{
@@ -56,6 +59,36 @@ export default function TabListDivision() {
Tidak Aktif Tidak Aktif
</Tabs.Tab> </Tabs.Tab>
</Tabs.List> </Tabs.List>
:
<Tabs.List
bg={"white"}
style={{
border: `1px solid ${"#EDEDED"}`,
padding: 5,
borderRadius: 100,
}}
>
<Tabs.Tab
value="true"
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 />