|
|
|
@@ -16,18 +16,14 @@ import {countries, TCountries} from "countries-list";
|
|
|
|
import countryCodes from "country-codes-list";
|
|
|
|
import countryCodes from "country-codes-list";
|
|
|
|
import Modal from "@/components/Modal";
|
|
|
|
import Modal from "@/components/Modal";
|
|
|
|
import UserCard from "@/components/UserCard";
|
|
|
|
import UserCard from "@/components/UserCard";
|
|
|
|
import {USER_TYPE_LABELS} from "@/resources/user";
|
|
|
|
import {isAgentUser, 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';
|
|
|
|
import {isCorporateUser} from "@/resources/user";
|
|
|
|
import {useListSearch} from "@/hooks/useListSearch";
|
|
|
|
import {useListSearch} from "@/hooks/useListSearch";
|
|
|
|
|
|
|
|
|
|
|
|
const columnHelper = createColumnHelper<User>();
|
|
|
|
const columnHelper = createColumnHelper<User>();
|
|
|
|
const searchFields = [
|
|
|
|
const searchFields = [["name"], ["email"], ["corporateInformation", "companyInformation", "name"]];
|
|
|
|
['name'],
|
|
|
|
|
|
|
|
['email'],
|
|
|
|
|
|
|
|
['corporateInformation', 'companyInformation', 'name'],
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
export default function UserList({user, filters = []}: {user: User; filters?: ((user: User) => boolean)[]}) {
|
|
|
|
export default function UserList({user, filters = []}: {user: User; filters?: ((user: User) => boolean)[]}) {
|
|
|
|
const [showDemographicInformation, setShowDemographicInformation] = useState(false);
|
|
|
|
const [showDemographicInformation, setShowDemographicInformation] = useState(false);
|
|
|
|
const [sorter, setSorter] = useState<string>();
|
|
|
|
const [sorter, setSorter] = useState<string>();
|
|
|
|
@@ -331,14 +327,14 @@ 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', {
|
|
|
|
columnHelper.accessor("corporateInformation.companyInformation.name", {
|
|
|
|
header: (
|
|
|
|
header: (
|
|
|
|
<button className="flex gap-2 items-center" onClick={() => setSorter((prev) => selectSorter(prev, "companyName"))}>
|
|
|
|
<button className="flex gap-2 items-center" onClick={() => setSorter((prev) => selectSorter(prev, "companyName"))}>
|
|
|
|
<span>Company Name</span>
|
|
|
|
<span>Company Name</span>
|
|
|
|
<SorterArrow name="companyName" />
|
|
|
|
<SorterArrow name="companyName" />
|
|
|
|
</button>
|
|
|
|
</button>
|
|
|
|
) as any,
|
|
|
|
) as any,
|
|
|
|
cell: (info) => getCorporateName(info.row.original),
|
|
|
|
cell: (info) => getCompanyName(info.row.original),
|
|
|
|
}),
|
|
|
|
}),
|
|
|
|
columnHelper.accessor("subscriptionExpirationDate", {
|
|
|
|
columnHelper.accessor("subscriptionExpirationDate", {
|
|
|
|
header: (
|
|
|
|
header: (
|
|
|
|
@@ -393,13 +389,16 @@ export default function UserList({user, filters = []}: {user: User; filters?: ((
|
|
|
|
return undefined;
|
|
|
|
return undefined;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const getCorporateName = (user: User) => {
|
|
|
|
const getCompanyName = (user: User) => {
|
|
|
|
if (isCorporateUser(user)) {
|
|
|
|
if (isCorporateUser(user)) {
|
|
|
|
return user.corporateInformation?.companyInformation?.name
|
|
|
|
return user.corporateInformation?.companyInformation?.name;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (isAgentUser(user)) {
|
|
|
|
|
|
|
|
return user.agentInformation.companyName;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return '';
|
|
|
|
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"))
|
|
|
|
@@ -468,25 +467,20 @@ 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')) {
|
|
|
|
if (sorter === "companyName" || sorter === reverseString("companyName")) {
|
|
|
|
const aCorporateName = getCorporateName(a);
|
|
|
|
const aCorporateName = getCompanyName(a);
|
|
|
|
const bCorporateName = getCorporateName(b);
|
|
|
|
const bCorporateName = getCompanyName(b);
|
|
|
|
if (!aCorporateName && bCorporateName) return sorter === "companyName" ? -1 : 1;
|
|
|
|
if (!aCorporateName && bCorporateName) return sorter === "companyName" ? -1 : 1;
|
|
|
|
if (aCorporateName && !bCorporateName) return sorter === "companyName" ? 1 : -1;
|
|
|
|
if (aCorporateName && !bCorporateName) return sorter === "companyName" ? 1 : -1;
|
|
|
|
if (!aCorporateName && !bCorporateName) return 0;
|
|
|
|
if (!aCorporateName && !bCorporateName) return 0;
|
|
|
|
|
|
|
|
|
|
|
|
return sorter === "companyName"
|
|
|
|
return sorter === "companyName" ? aCorporateName.localeCompare(bCorporateName) : bCorporateName.localeCompare(aCorporateName);
|
|
|
|
? aCorporateName.localeCompare(bCorporateName)
|
|
|
|
|
|
|
|
: bCorporateName.localeCompare(aCorporateName);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return a.id.localeCompare(b.id);
|
|
|
|
return a.id.localeCompare(b.id);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const { rows: filteredRows, renderSearch } = useListSearch(
|
|
|
|
const {rows: filteredRows, renderSearch} = useListSearch(searchFields, displayUsers);
|
|
|
|
searchFields,
|
|
|
|
|
|
|
|
displayUsers,
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const table = useReactTable({
|
|
|
|
const table = useReactTable({
|
|
|
|
data: filteredRows,
|
|
|
|
data: filteredRows,
|
|
|
|
|