Company Name is now displayed on the Settings table, if available
This commit is contained in:
@@ -2,7 +2,7 @@ import Button from "@/components/Low/Button";
|
|||||||
import {PERMISSIONS} from "@/constants/userPermissions";
|
import {PERMISSIONS} from "@/constants/userPermissions";
|
||||||
import useGroups from "@/hooks/useGroups";
|
import useGroups from "@/hooks/useGroups";
|
||||||
import useUsers from "@/hooks/useUsers";
|
import useUsers from "@/hooks/useUsers";
|
||||||
import {Type, User, userTypes} from "@/interfaces/user";
|
import {Type, User, userTypes, CorporateUser} from "@/interfaces/user";
|
||||||
import {Popover, Transition} from "@headlessui/react";
|
import {Popover, Transition} from "@headlessui/react";
|
||||||
import {createColumnHelper, flexRender, getCoreRowModel, useReactTable} from "@tanstack/react-table";
|
import {createColumnHelper, flexRender, getCoreRowModel, useReactTable} from "@tanstack/react-table";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
@@ -19,6 +19,7 @@ import UserCard from "@/components/UserCard";
|
|||||||
import {USER_TYPE_LABELS} from "@/resources/user";
|
import {USER_TYPE_LABELS} from "@/resources/user";
|
||||||
import useFilterStore from "@/stores/listFilterStore";
|
import useFilterStore from "@/stores/listFilterStore";
|
||||||
import {useRouter} from "next/router";
|
import {useRouter} from "next/router";
|
||||||
|
import {isCorporateUser} from '@/resources/user';
|
||||||
|
|
||||||
const columnHelper = createColumnHelper<User>();
|
const columnHelper = createColumnHelper<User>();
|
||||||
|
|
||||||
@@ -325,6 +326,15 @@ export default function UserList({user, filters = []}: {user: User; filters?: ((
|
|||||||
) as any,
|
) as any,
|
||||||
cell: (info) => USER_TYPE_LABELS[info.getValue()],
|
cell: (info) => USER_TYPE_LABELS[info.getValue()],
|
||||||
}),
|
}),
|
||||||
|
columnHelper.accessor('corporateInformation.companyInformation.name', {
|
||||||
|
header: (
|
||||||
|
<button className="flex gap-2 items-center" onClick={() => setSorter((prev) => selectSorter(prev, "companyName"))}>
|
||||||
|
<span>Company Name</span>
|
||||||
|
<SorterArrow name="companyName" />
|
||||||
|
</button>
|
||||||
|
) as any,
|
||||||
|
cell: (info) => info.getValue(),
|
||||||
|
}),
|
||||||
columnHelper.accessor("subscriptionExpirationDate", {
|
columnHelper.accessor("subscriptionExpirationDate", {
|
||||||
header: (
|
header: (
|
||||||
<button className="flex gap-2 items-center" onClick={() => setSorter((prev) => selectSorter(prev, "expiryDate"))}>
|
<button className="flex gap-2 items-center" onClick={() => setSorter((prev) => selectSorter(prev, "expiryDate"))}>
|
||||||
@@ -378,6 +388,14 @@ export default function UserList({user, filters = []}: {user: User; filters?: ((
|
|||||||
return undefined;
|
return undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getCorporateName = (user: User) => {
|
||||||
|
if(isCorporateUser(user)) {
|
||||||
|
return user.corporateInformation?.companyInformation?.name
|
||||||
|
}
|
||||||
|
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
const sortFunction = (a: User, b: User) => {
|
const sortFunction = (a: User, b: User) => {
|
||||||
if (sorter === "name" || sorter === reverseString("name"))
|
if (sorter === "name" || sorter === reverseString("name"))
|
||||||
return sorter === "name" ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name);
|
return sorter === "name" ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name);
|
||||||
@@ -445,6 +463,18 @@ export default function UserList({user, filters = []}: {user: User; filters?: ((
|
|||||||
: b.demographicInformation!.gender.localeCompare(a.demographicInformation!.gender);
|
: b.demographicInformation!.gender.localeCompare(a.demographicInformation!.gender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(sorter === 'companyName' || sorter === reverseString('companyName')) {
|
||||||
|
const aCorporateName = getCorporateName(a);
|
||||||
|
const bCorporateName = getCorporateName(b);
|
||||||
|
if (!aCorporateName && bCorporateName) return sorter === "companyName" ? -1 : 1;
|
||||||
|
if (aCorporateName && !bCorporateName) return sorter === "companyName" ? 1 : -1;
|
||||||
|
if (!aCorporateName && !bCorporateName) return 0;
|
||||||
|
|
||||||
|
return sorter === "companyName"
|
||||||
|
? aCorporateName.localeCompare(bCorporateName)
|
||||||
|
: bCorporateName.localeCompare(aCorporateName);
|
||||||
|
}
|
||||||
|
|
||||||
return a.id.localeCompare(b.id);
|
return a.id.localeCompare(b.id);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import {Type} from "@/interfaces/user";
|
import {Type, User, CorporateUser} from "@/interfaces/user";
|
||||||
|
|
||||||
export const USER_TYPE_LABELS: {[key in Type]: string} = {
|
export const USER_TYPE_LABELS: {[key in Type]: string} = {
|
||||||
student: "Student",
|
student: "Student",
|
||||||
@@ -8,3 +8,7 @@ export const USER_TYPE_LABELS: {[key in Type]: string} = {
|
|||||||
admin: "Admin",
|
admin: "Admin",
|
||||||
developer: "Developer",
|
developer: "Developer",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export function isCorporateUser(user: User): user is CorporateUser {
|
||||||
|
return (user as CorporateUser).corporateInformation !== undefined;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user