diff --git a/src/pages/(admin)/BatchCreateUser.tsx b/src/pages/(admin)/BatchCreateUser.tsx index 3b30bc46..e340ee8b 100644 --- a/src/pages/(admin)/BatchCreateUser.tsx +++ b/src/pages/(admin)/BatchCreateUser.tsx @@ -112,7 +112,7 @@ export default function BatchCreateUser({user, users, entities = [], permissions const information = uniqBy( rows .map((row) => { - const [firstName, lastName, studentID, passport_id, email, phone, corporate, group, country] = row as string[]; + const [firstName, lastName, studentID, passport_id, email, phone, group, country] = row as string[]; const countryItem = countryCodes.findOne("countryCode" as any, country.toUpperCase()) || countryCodes.all().find((x) => x.countryNameEn.toLowerCase() === country.toLowerCase()); @@ -124,7 +124,6 @@ export default function BatchCreateUser({user, users, entities = [], permissions type: type, passport_id: passport_id?.toString().trim() || undefined, groupName: group, - corporate, studentID, entity, demographicInformation: { @@ -147,7 +146,9 @@ export default function BatchCreateUser({user, users, entities = [], permissions } setInfos(information); - } catch { + } catch(e) { + console.log(e) + toast.error( "Please upload an Excel file containing user information, one per line! All already registered e-mails have also been ignored!", ); @@ -166,7 +167,8 @@ export default function BatchCreateUser({user, users, entities = [], permissions setIsLoading(true); try { - await axios.post("/api/batch_users", {users: newUsers.map((user) => ({...user, type, expiryDate}))}); + const result = await axios.post("/api/batch_users", {users: newUsers.map((user) => ({...user, type, expiryDate}))}); + console.log(result) toast.success(`Successfully added ${newUsers.length} user(s)!`); onFinish(); } catch { @@ -193,7 +195,6 @@ export default function BatchCreateUser({user, users, entities = [], permissions Passport/National ID E-mail Phone Number - {user?.type !== "corporate" && Corporate (e-mail)} Classroom Name Country diff --git a/src/pages/dashboard/student.tsx b/src/pages/dashboard/student.tsx index 9e835994..e6063753 100644 --- a/src/pages/dashboard/student.tsx +++ b/src/pages/dashboard/student.tsx @@ -34,6 +34,7 @@ import {capitalize, uniqBy} from "lodash"; import moment from "moment"; import Head from "next/head"; import {useRouter} from "next/router"; +import { useMemo } from "react"; import {BsBook, BsClipboard, BsFileEarmarkText, BsHeadphones, BsMegaphone, BsPen, BsPencil, BsStar} from "react-icons/bs"; import {ToastContainer} from "react-toastify"; @@ -58,14 +59,13 @@ export const getServerSideProps = withIronSessionSsr(async ({req, res}) => { const entityIDS = mapBy(user.entities, "id") || []; const entities = await getEntitiesWithRoles(entityIDS); - const allAssignments = await getAssignmentsByAssignee(user.id, {archived: false}); + const assignments = await getAssignmentsByAssignee(user.id, {archived: false}); const stats = await getStatsByUser(user.id); const sessions = await getSessionsByUser(user.id, 10); const invites = await getInvitesByInvitee(user.id); const grading = await getGradingSystemByEntity(entityIDS[0] || ""); const formattedInvites = await Promise.all(invites.map(convertInvitersToUsers)); - const assignments = allAssignments.filter(activeAssignmentFilter); const examIDs = uniqBy( assignments.flatMap((a) => @@ -104,7 +104,7 @@ export default function Dashboard({user, entities, assignments, stats, invites, } }; - const studentAssignments = assignments.filter(activeAssignmentFilter); + const studentAssignments = useMemo(() => assignments.filter(activeAssignmentFilter), [assignments]); return ( <> diff --git a/src/pages/settings.tsx b/src/pages/settings.tsx index e1944e04..9d982f9a 100644 --- a/src/pages/settings.tsx +++ b/src/pages/settings.tsx @@ -32,6 +32,7 @@ import { getEntitiesWithRoles, getEntityWithRoles } from "@/utils/entities.be"; import { mapBy, serialize, redirect } from "@/utils"; import { EntityWithRoles } from "@/interfaces/entity"; import { requestUser } from "@/utils/api"; +import { isAdmin } from "@/utils/users"; export const getServerSideProps = withIronSessionSsr(async ({ req, res }) => { const user = await requestUser(req, res) @@ -41,7 +42,7 @@ export const getServerSideProps = withIronSessionSsr(async ({ req, res }) => { return redirect("/") const permissions = await getUserPermissions(user.id); - const entities = await getEntitiesWithRoles(mapBy(user.entities, 'id')) || [] + const entities = isAdmin(user) ? await getEntitiesWithRoles() : await getEntitiesWithRoles(mapBy(user.entities, 'id')) return { props: serialize({ user, permissions, entities }),