import { useEffect, useState } from "react"; import { useModalStore } from "../context/zustand-store/appStore"; import { useApiRequest } from "../utils/useApiRequest"; import { Popover } from "../components/PopOver/PopOver"; import { Tooltip } from "../components/Tooltip/Tooltip"; import Button from "../components/Button/Button"; import { DeleteButtonForPopOver } from "../components/PopOverButtons/PopOverButtons"; import { Grid } from "../components/Grid/Grid"; import Table from "../components/Table/Table"; import { AddRole } from "../partials/management/AddRole"; import { getFaPermissions } from "../utils/getFaPermissions"; import ShowStringList from "../components/ShowStringList/ShowStringList"; import ShowMoreInfo from "../components/ShowMoreInfo/ShowMoreInfo"; import Typography from "../components/Typography/Typography"; export default function Roles() { const { openModal } = useModalStore(); const [pagesInfo, setPagesInfo] = useState({ page: 1, page_size: 10 }); const [pagesTableData, setPagesTableData] = useState([]); const { data: pagesData, refetch } = useApiRequest({ api: "/auth/api/v1/role/", method: "get", params: pagesInfo, queryKey: ["roles", pagesInfo], }); useEffect(() => { if (pagesData?.results) { const tableData = pagesData.results.map((item: any, i: number) => { const accessList = Object.values( item?.permissions.reduce((acc: any, item: any) => { if (!acc[item.page]) { acc[item.page] = { page: item.page, names: [], descriptions: [], }; } acc[item.page].names.push(item.name); acc[item.page].descriptions.push(item.description); return acc; }, {}) ); return [ pagesInfo.page === 1 ? i + 1 : i + pagesInfo.page_size * (pagesInfo.page - 1) + 1, item?.role_name, item?.parent_role?.name || "-", item?.type?.name, item?.type?.key || "-", item?.description, {accessList?.map((opt: any) => ( {getFaPermissions(opt.page)} ))} {" "} , { setPagesInfo(e); }} count={pagesData?.count || 10} isPaginated title="لیست نقش ها" columns={[ "ردیف", "نقش", "نقش والد", "نوع نقش", "کلید", "توضیحات", "دسترسی ها", "عملیات", ]} rows={pagesTableData} /> ); }