ENCOA-217: Adapted the invite system to now work based on Entities instead of Users/Groups

This commit is contained in:
Tiago Ribeiro
2024-11-05 10:40:33 +00:00
parent df41611093
commit e8b56485ee
10 changed files with 63 additions and 102 deletions

View File

@@ -161,23 +161,42 @@ export default function BatchCreateUser({user, users, entities = [], permissions
const makeUsers = async () => {
const newUsers = infos.filter((x) => !users.map((u) => u.email).includes(x.email));
if (!confirm(`You are about to add ${newUsers.length}, are you sure you want to continue?`)) return;
const existingUsers = infos
.filter((x) => users.map((u) => u.email).includes(x.email))
.map((i) => users.find((u) => u.email === i.email))
.filter((x) => !!x && x.type === "student") as User[];
const newUsersSentence = newUsers.length > 0 ? `create ${newUsers.length} user(s)` : undefined;
const existingUsersSentence = existingUsers.length > 0 ? `invite ${existingUsers.length} registered student(s)` : undefined;
if (!confirm(`You are about to ${[newUsersSentence, existingUsersSentence].filter((x) => !!x).join(" and ")}, are you sure you want to continue?`))
return;
Promise.all(existingUsers.map(async (u) => await axios.post(`/api/invites`, {to: u.id, entity, from: user.id})))
.then(() => toast.success(`Successfully invited ${existingUsers.length} registered student(s)!`))
.finally(() => {
if (newUsers.length === 0) setIsLoading(false);
});
if (newUsers.length > 0) {
setIsLoading(true);
try {
const result = await axios.post("/api/batch_users", {users: newUsers.map((user) => ({...user, type, expiryDate}))});
console.log(result)
await axios.post("/api/batch_users", {users: newUsers.map((user) => ({...user, type, expiryDate}))});
toast.success(`Successfully added ${newUsers.length} user(s)!`);
onFinish();
} catch {
} catch(e) {
console.error(e)
toast.error("Something went wrong, please try again later!");
} finally {
setIsLoading(false);
setInfos([]);
clear();
}
} else {
setIsLoading(false);
setInfos([]);
clear();
}
};