QC Investasi
# fix Tampilan admin investasi Tampilan admin donasi ## No issuee
This commit is contained in:
@@ -1,13 +1,47 @@
|
||||
"use server";
|
||||
|
||||
import prisma from "@/app/lib/prisma";
|
||||
import _, { ceil } from "lodash";
|
||||
|
||||
export default async function adminUserAccess_getListUser() {
|
||||
const get = await prisma.user.findMany({
|
||||
export default async function adminUserAccess_getListUser({
|
||||
search,
|
||||
page,
|
||||
}: {
|
||||
search?: string;
|
||||
page: number;
|
||||
}) {
|
||||
const dataSkip = _.toNumber(page) * 9 - 9;
|
||||
const dataTake = 9;
|
||||
|
||||
const getData = await prisma.user.findMany({
|
||||
skip: dataSkip,
|
||||
take: 9,
|
||||
orderBy: {
|
||||
updatedAt: "asc",
|
||||
},
|
||||
where: {
|
||||
masterUserRoleId: "1",
|
||||
username: {
|
||||
contains: search,
|
||||
mode: "insensitive",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return get;
|
||||
const nCount = await prisma.user.count({
|
||||
where: {
|
||||
masterUserRoleId: "1",
|
||||
username: {
|
||||
contains: search,
|
||||
mode: "insensitive",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const allData = {
|
||||
data: getData,
|
||||
nPage: ceil(nCount / dataTake),
|
||||
};
|
||||
|
||||
return allData;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
Button,
|
||||
Center,
|
||||
Group,
|
||||
Pagination,
|
||||
Paper,
|
||||
ScrollArea,
|
||||
Stack,
|
||||
@@ -19,17 +20,21 @@ import adminUserAccess_getListUser from "../fun/get/get_list_all_user";
|
||||
import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
|
||||
import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
|
||||
|
||||
export default function AdminUserAccess_View({
|
||||
listUser,
|
||||
}: {
|
||||
listUser: MODEL_USER[];
|
||||
}) {
|
||||
const [data, setData] = useState(listUser);
|
||||
export default function AdminUserAccess_View({ listUser }: { listUser: any }) {
|
||||
const [data, setData] = useState<MODEL_USER[]>(listUser.data);
|
||||
const [isActivePage, setActivePage] = useState(1);
|
||||
const [isNPage, setNPage] = useState(listUser.nPage);
|
||||
const [isSearch, setSearch] = useState("");
|
||||
|
||||
async function onAccess(id: string) {
|
||||
await adminUserAccess_funEditAccess(id, true).then(async (res) => {
|
||||
if (res.status === 200) {
|
||||
const value = await adminUserAccess_getListUser();
|
||||
setData(value as any);
|
||||
const value = await adminUserAccess_getListUser({
|
||||
page: 1,
|
||||
search: isSearch,
|
||||
});
|
||||
setData(value.data as any);
|
||||
setNPage(value.nPage);
|
||||
ComponentGlobal_NotifikasiBerhasil(res.message);
|
||||
} else {
|
||||
ComponentGlobal_NotifikasiGagal(res.message);
|
||||
@@ -40,8 +45,12 @@ export default function AdminUserAccess_View({
|
||||
async function onDelAccess(id: string) {
|
||||
await adminUserAccess_funEditAccess(id, false).then(async (res) => {
|
||||
if (res.status === 200) {
|
||||
const value = await adminUserAccess_getListUser();
|
||||
setData(value as any);
|
||||
const value = await adminUserAccess_getListUser({
|
||||
page: 1,
|
||||
search: isSearch,
|
||||
});
|
||||
setData(value.data as any);
|
||||
setNPage(value.nPage);
|
||||
ComponentGlobal_NotifikasiBerhasil(res.message);
|
||||
} else {
|
||||
ComponentGlobal_NotifikasiGagal(res.message);
|
||||
@@ -49,6 +58,27 @@ export default function AdminUserAccess_View({
|
||||
});
|
||||
}
|
||||
|
||||
async function onSearch(s: any) {
|
||||
setSearch(s);
|
||||
setActivePage(1);
|
||||
const loadData = await adminUserAccess_getListUser({
|
||||
search: s,
|
||||
page: 1,
|
||||
});
|
||||
setData(loadData.data as any);
|
||||
setNPage(loadData.nPage);
|
||||
}
|
||||
|
||||
async function onPageClick(p: any) {
|
||||
setActivePage(p);
|
||||
const loadData = await adminUserAccess_getListUser({
|
||||
search: isSearch,
|
||||
page: p,
|
||||
});
|
||||
setData(loadData.data as any);
|
||||
setNPage(loadData.nPage);
|
||||
}
|
||||
|
||||
const tableBody = data.map((e, i) => (
|
||||
<tr key={e.id}>
|
||||
<td>
|
||||
@@ -86,9 +116,10 @@ export default function AdminUserAccess_View({
|
||||
</td>
|
||||
</tr>
|
||||
));
|
||||
|
||||
return (
|
||||
<>
|
||||
<Stack spacing={"xs"}>
|
||||
<Stack spacing={"xs"} h={"90vh"}>
|
||||
{/* <pre>{JSON.stringify(listUser, null, 2)}</pre> */}
|
||||
<Group
|
||||
position="apart"
|
||||
@@ -97,14 +128,18 @@ export default function AdminUserAccess_View({
|
||||
style={{ borderRadius: "6px" }}
|
||||
>
|
||||
<Title order={4}>Table User</Title>
|
||||
{/* <TextInput
|
||||
icon={<IconSearch size={20} />}
|
||||
radius={"xl"}
|
||||
placeholder="Masukan username"
|
||||
/> */}
|
||||
<TextInput
|
||||
icon={<IconSearch size={20} />}
|
||||
radius={"xl"}
|
||||
placeholder="Masukan username"
|
||||
onChange={(val) => {
|
||||
onSearch(val.currentTarget.value);
|
||||
}}
|
||||
/>
|
||||
</Group>
|
||||
<Paper p={"md"} withBorder shadow="lg" h={"85vh"}>
|
||||
<ScrollArea h={"80vh"}>
|
||||
|
||||
<Paper p={"md"} withBorder shadow="lg" h={"100%"}>
|
||||
<ScrollArea>
|
||||
<Table
|
||||
verticalSpacing={"xs"}
|
||||
horizontalSpacing={"md"}
|
||||
@@ -128,6 +163,15 @@ export default function AdminUserAccess_View({
|
||||
<tbody>{tableBody}</tbody>
|
||||
</Table>
|
||||
</ScrollArea>
|
||||
<Center mt={"xl"}>
|
||||
<Pagination
|
||||
value={isActivePage}
|
||||
total={isNPage}
|
||||
onChange={(val) => {
|
||||
onPageClick(val);
|
||||
}}
|
||||
/>
|
||||
</Center>
|
||||
</Paper>
|
||||
</Stack>
|
||||
</>
|
||||
|
||||
Reference in New Issue
Block a user