Resolved another bug related to master corporate groups
This commit is contained in:
@@ -14,7 +14,7 @@ import {toast} from "react-toastify";
|
|||||||
import readXlsxFile from "read-excel-file";
|
import readXlsxFile from "read-excel-file";
|
||||||
import {useFilePicker} from "use-file-picker";
|
import {useFilePicker} from "use-file-picker";
|
||||||
import {getUserCorporate} from "@/utils/groups";
|
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 {checkAccess} from "@/utils/permissions";
|
||||||
import usePermissions from "@/hooks/usePermissions";
|
import usePermissions from "@/hooks/usePermissions";
|
||||||
|
|
||||||
@@ -202,7 +202,6 @@ const filterTypes = ["corporate", "teacher", "mastercorporate"];
|
|||||||
export default function GroupList({user}: {user: User}) {
|
export default function GroupList({user}: {user: User}) {
|
||||||
const [isCreating, setIsCreating] = useState(false);
|
const [isCreating, setIsCreating] = useState(false);
|
||||||
const [editingGroup, setEditingGroup] = useState<Group>();
|
const [editingGroup, setEditingGroup] = useState<Group>();
|
||||||
const [filterByUser, setFilterByUser] = useState(false);
|
|
||||||
|
|
||||||
const {permissions} = usePermissions(user?.id || "");
|
const {permissions} = usePermissions(user?.id || "");
|
||||||
|
|
||||||
@@ -218,12 +217,6 @@ export default function GroupList({user}: {user: User}) {
|
|||||||
adminAdmins: user?.id,
|
adminAdmins: user?.id,
|
||||||
});
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (user && ["corporate", "teacher", "mastercorporate"].includes(user.type)) {
|
|
||||||
setFilterByUser(true);
|
|
||||||
}
|
|
||||||
}, [user]);
|
|
||||||
|
|
||||||
const deleteGroup = (group: Group) => {
|
const deleteGroup = (group: Group) => {
|
||||||
if (!confirm(`Are you sure you want to delete "${group.name}"?`)) return;
|
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", {
|
columnHelper.accessor("admin", {
|
||||||
header: "Admin",
|
header: "Admin",
|
||||||
cell: (info) => (
|
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}
|
{users.find((x) => x.id === info.getValue())?.name}
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
@@ -309,7 +302,7 @@ export default function GroupList({user}: {user: User}) {
|
|||||||
user={user}
|
user={user}
|
||||||
onClose={closeModal}
|
onClose={closeModal}
|
||||||
users={
|
users={
|
||||||
user?.type === "corporate" || user?.type === "teacher"
|
checkAccess(user, ["corporate", "teacher", "mastercorporate"])
|
||||||
? users.filter(
|
? users.filter(
|
||||||
(u) =>
|
(u) =>
|
||||||
groups
|
groups
|
||||||
|
|||||||
@@ -76,8 +76,7 @@ export default function UserList({
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
(async () => {
|
(async () => {
|
||||||
if (user && users) {
|
if (user && users) {
|
||||||
const filterUsers =
|
const filterUsers = ["corporate", "teacher", "mastercorporate"].includes(user.type)
|
||||||
user.type === "corporate" || user.type === "teacher"
|
|
||||||
? users.filter((u) => groups.flatMap((g) => g.participants).includes(u.id))
|
? users.filter((u) => groups.flatMap((g) => g.participants).includes(u.id))
|
||||||
: users;
|
: users;
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import {sessionOptions} from "@/lib/session";
|
|||||||
import {Group} from "@/interfaces/user";
|
import {Group} from "@/interfaces/user";
|
||||||
import {v4} from "uuid";
|
import {v4} from "uuid";
|
||||||
import {updateExpiryDateOnGroup, getGroupsForUser} from "@/utils/groups.be";
|
import {updateExpiryDateOnGroup, getGroupsForUser} from "@/utils/groups.be";
|
||||||
|
import {uniqBy} from "lodash";
|
||||||
|
|
||||||
const db = getFirestore(app);
|
const db = getFirestore(app);
|
||||||
|
|
||||||
@@ -31,15 +32,13 @@ async function get(req: NextApiRequest, res: NextApiResponse) {
|
|||||||
if (req.session?.user?.type === "mastercorporate") {
|
if (req.session?.user?.type === "mastercorporate") {
|
||||||
try {
|
try {
|
||||||
const masterCorporateGroups = await getGroupsForUser(admin, participant);
|
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)))
|
Promise.all(corporatesFromMaster.map((c) => getGroupsForUser(c, participant)))
|
||||||
.then((groups) => {
|
.then((groups) => {
|
||||||
res.status(200).json([...masterCorporateGroups, ...groups.flat()]);
|
res.status(200).json([...masterCorporateGroups, ...uniqBy(groups.flat(), "id")]);
|
||||||
return;
|
return;
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user