ENCOA-294 & ENCOA-293

This commit is contained in:
Tiago Ribeiro
2024-12-23 09:55:03 +00:00
parent f1d97aa6c9
commit 9cf13e3f26
6 changed files with 13 additions and 9 deletions

View File

@@ -24,6 +24,7 @@ import { WithLabeledEntities } from "@/interfaces/entity";
import Table from "@/components/High/Table";
import useEntities from "@/hooks/useEntities";
import { useAllowedEntities } from "@/hooks/useEntityPermissions";
import { findAllowedEntities } from "@/utils/permissions";
const columnHelper = createColumnHelper<WithLabeledEntities<User>>();
const searchFields = [["name"], ["email"], ["entities", ""]];
@@ -45,8 +46,6 @@ export default function UserList({
const { users, reload } = useEntitiesUsers(type)
const { entities } = useEntities()
const { balance } = useUserBalance();
const isAdmin = useMemo(() => ["admin", "developer"].includes(user?.type), [user?.type])
const entitiesViewStudents = useAllowedEntities(user, entities, "view_students")
@@ -65,6 +64,8 @@ export default function UserList({
const entitiesEditMasterCorporates = useAllowedEntities(user, entities, "edit_mastercorporates")
const entitiesDeleteMasterCorporates = useAllowedEntities(user, entities, "delete_mastercorporates")
const entitiesDownloadUsers = useAllowedEntities(user, entities, "download_user_list")
const appendUserFilters = useFilterStore((state) => state.appendUserFilter);
const router = useRouter();
@@ -342,7 +343,10 @@ export default function UserList({
];
const downloadExcel = (rows: WithLabeledEntities<User>[]) => {
const csv = exportListToExcel(rows);
if (entitiesDownloadUsers.length === 0) return toast.error("You are not allowed to download the user list.")
const allowedRows = rows.filter(r => mapBy(r.entities, 'id').some(e => mapBy(entitiesDownloadUsers, 'id').includes(e)))
const csv = exportListToExcel(allowedRows);
const element = document.createElement("a");
const file = new Blob([csv], { type: "text/csv" });
@@ -437,7 +441,7 @@ export default function UserList({
data={displayUsers}
columns={(!showDemographicInformation ? defaultColumns : demographicColumns) as any}
searchFields={searchFields}
onDownload={downloadExcel}
onDownload={entitiesDownloadUsers.length > 0 ? downloadExcel : undefined}
/>
</div>
</>