Resolved another bug related to master corporate groups

This commit is contained in:
Tiago Ribeiro
2024-08-20 16:29:55 +01:00
parent 4315a7b17c
commit 0ce3a16d3a
3 changed files with 11 additions and 20 deletions

View File

@@ -14,7 +14,7 @@ import {toast} from "react-toastify";
import readXlsxFile from "read-excel-file";
import {useFilePicker} from "use-file-picker";
import {getUserCorporate} from "@/utils/groups";
import {isAgentUser, isCorporateUser} from "@/resources/user";
import {isAgentUser, isCorporateUser, USER_TYPE_LABELS} from "@/resources/user";
import {checkAccess} from "@/utils/permissions";
import usePermissions from "@/hooks/usePermissions";
@@ -202,7 +202,6 @@ const filterTypes = ["corporate", "teacher", "mastercorporate"];
export default function GroupList({user}: {user: User}) {
const [isCreating, setIsCreating] = useState(false);
const [editingGroup, setEditingGroup] = useState<Group>();
const [filterByUser, setFilterByUser] = useState(false);
const {permissions} = usePermissions(user?.id || "");
@@ -218,12 +217,6 @@ export default function GroupList({user}: {user: User}) {
adminAdmins: user?.id,
});
useEffect(() => {
if (user && ["corporate", "teacher", "mastercorporate"].includes(user.type)) {
setFilterByUser(true);
}
}, [user]);
const deleteGroup = (group: Group) => {
if (!confirm(`Are you sure you want to delete "${group.name}"?`)) return;
@@ -246,7 +239,7 @@ export default function GroupList({user}: {user: User}) {
columnHelper.accessor("admin", {
header: "Admin",
cell: (info) => (
<div className="tooltip" data-tip={capitalize(users.find((x) => x.id === info.getValue())?.type)}>
<div className="tooltip" data-tip={USER_TYPE_LABELS[users.find((x) => x.id === info.getValue())?.type || "student"]}>
{users.find((x) => x.id === info.getValue())?.name}
</div>
),
@@ -309,7 +302,7 @@ export default function GroupList({user}: {user: User}) {
user={user}
onClose={closeModal}
users={
user?.type === "corporate" || user?.type === "teacher"
checkAccess(user, ["corporate", "teacher", "mastercorporate"])
? users.filter(
(u) =>
groups

View File

@@ -76,10 +76,9 @@ export default function UserList({
useEffect(() => {
(async () => {
if (user && users) {
const filterUsers =
user.type === "corporate" || user.type === "teacher"
? users.filter((u) => groups.flatMap((g) => g.participants).includes(u.id))
: users;
const filterUsers = ["corporate", "teacher", "mastercorporate"].includes(user.type)
? users.filter((u) => groups.flatMap((g) => g.participants).includes(u.id))
: users;
const filteredUsers = filters.reduce((d, f) => d.filter(f), filterUsers);
const sortedUsers = await asyncSorter<User>(filteredUsers, sortFunction);

View File

@@ -7,6 +7,7 @@ import {sessionOptions} from "@/lib/session";
import {Group} from "@/interfaces/user";
import {v4} from "uuid";
import {updateExpiryDateOnGroup, getGroupsForUser} from "@/utils/groups.be";
import {uniqBy} from "lodash";
const db = getFirestore(app);
@@ -31,15 +32,13 @@ async function get(req: NextApiRequest, res: NextApiResponse) {
if (req.session?.user?.type === "mastercorporate") {
try {
const masterCorporateGroups = await getGroupsForUser(admin, participant);
const corporatesFromMaster = masterCorporateGroups.filter((g) => g.name === "Corporate").flatMap((g) => g.participants);
const corporatesFromMaster = masterCorporateGroups.filter((g) => g.name.trim() === "Corporate").flatMap((g) => g.participants);
if (corporatesFromMaster.length === 0) return res.status(200).json(masterCorporateGroups);
if (corporatesFromMaster.length === 0) {
res.status(200).json(masterCorporateGroups);
return;
}
Promise.all(corporatesFromMaster.map((c) => getGroupsForUser(c, participant)))
.then((groups) => {
res.status(200).json([...masterCorporateGroups, ...groups.flat()]);
res.status(200).json([...masterCorporateGroups, ...uniqBy(groups.flat(), "id")]);
return;
})
.catch((e) => {