diff --git a/src/dashboards/MasterCorporate/MasterStatistical.tsx b/src/dashboards/MasterCorporate/MasterStatistical.tsx index ec205d6a..df3e06f4 100644 --- a/src/dashboards/MasterCorporate/MasterStatistical.tsx +++ b/src/dashboards/MasterCorporate/MasterStatistical.tsx @@ -74,10 +74,8 @@ const MasterStatistical = (props: Props) => { () => assignments.reduce((accmA: TableData[], a: AssignmentWithCorporateId) => { const userResults = a.assignees.map((assignee) => { - const userStats = a.results.find((r) => r.user === assignee)?.stats || []; const userData = users.find((u) => u.id === assignee); - if (!!userData) console.log(assignee, userData.name); - + const userStats = !!userData ? a.results.find((r) => r.user === assignee)?.stats || [] : []; const corporate = getUserName(users.find((u) => u.id === a.assigner)); const commonData = { user: userData, @@ -88,6 +86,7 @@ const MasterStatistical = (props: Props) => { corporate, assignment: a.name, }; + if (userStats.length === 0) { return { ...commonData, @@ -167,7 +166,7 @@ const MasterStatistical = (props: Props) => { header: "Student ID", id: "studentID", cell: (info) => { - return {(info.getValue() as StudentUser).studentID || "N/A"}; + return {(info.getValue() as StudentUser)?.studentID || "N/A"}; }, }), ...(displaySelection diff --git a/src/pages/api/assignments/corporate/[id].ts b/src/pages/api/assignments/corporate/[id].ts index 728273d8..242690b8 100644 --- a/src/pages/api/assignments/corporate/[id].ts +++ b/src/pages/api/assignments/corporate/[id].ts @@ -22,7 +22,7 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { async function GET(req: NextApiRequest, res: NextApiResponse) { const {id} = req.query as {id: string}; - const assigners = await getAllAssignersByCorporate(id); + const assigners = await getAllAssignersByCorporate(id, req.session.user!.type); const assignments = await getAssignmentsByAssigners([...assigners, id]); res.status(200).json(uniqBy(assignments, "id")); diff --git a/src/pages/api/assignments/corporate/index.ts b/src/pages/api/assignments/corporate/index.ts index e2557fe3..2b543250 100644 --- a/src/pages/api/assignments/corporate/index.ts +++ b/src/pages/api/assignments/corporate/index.ts @@ -29,7 +29,7 @@ async function GET(req: NextApiRequest, res: NextApiResponse) { try { const idsList = ids.split(","); - const assignments = await getAssignmentsForCorporates(idsList, startDateParsed, endDateParsed); + const assignments = await getAssignmentsForCorporates(req.session.user!.type, idsList, startDateParsed, endDateParsed); res.status(200).json(assignments); } catch (err: any) { res.status(500).json({error: err.message}); diff --git a/src/pages/api/assignments/statistical/excel.ts b/src/pages/api/assignments/statistical/excel.ts index da5befe0..aab31cb0 100644 --- a/src/pages/api/assignments/statistical/excel.ts +++ b/src/pages/api/assignments/statistical/excel.ts @@ -64,7 +64,7 @@ async function post(req: NextApiRequest, res: NextApiResponse) { }; const startDateParsed = startDate ? new Date(startDate) : undefined; const endDateParsed = endDate ? new Date(endDate) : undefined; - const assignments = await getAssignmentsForCorporates(ids, startDateParsed, endDateParsed); + const assignments = await getAssignmentsForCorporates(req.session.user.type, ids, startDateParsed, endDateParsed); const assignmentUsers = [...new Set(assignments.flatMap((a) => a.assignees))]; const assigners = [...new Set(assignments.map((a) => a.assigner))]; diff --git a/src/utils/assignments.be.ts b/src/utils/assignments.be.ts index e2341020..261f04b6 100644 --- a/src/utils/assignments.be.ts +++ b/src/utils/assignments.be.ts @@ -1,6 +1,7 @@ import client from "@/lib/mongodb"; import {Assignment} from "@/interfaces/results"; import {getAllAssignersByCorporate} from "@/utils/groups.be"; +import {Type} from "@/interfaces/user"; const db = client.db(process.env.MONGODB_DB); @@ -36,10 +37,10 @@ export const getAssignmentsByAssigners = async (ids: string[], startDate?: Date, .toArray(); }; -export const getAssignmentsForCorporates = async (idsList: string[], startDate?: Date, endDate?: Date) => { +export const getAssignmentsForCorporates = async (userType: Type, idsList: string[], startDate?: Date, endDate?: Date) => { const assigners = await Promise.all( idsList.map(async (id) => { - const assigners = await getAllAssignersByCorporate(id); + const assigners = await getAllAssignersByCorporate(id, userType); return { corporateId: id, assigners, diff --git a/src/utils/groups.be.ts b/src/utils/groups.be.ts index 7757ecd8..4c344dc8 100644 --- a/src/utils/groups.be.ts +++ b/src/utils/groups.be.ts @@ -1,6 +1,6 @@ import {app} from "@/firebase"; import {Assignment} from "@/interfaces/results"; -import {CorporateUser, Group, MasterCorporateUser, StudentUser, TeacherUser, User} from "@/interfaces/user"; +import {CorporateUser, Group, MasterCorporateUser, StudentUser, TeacherUser, Type, User} from "@/interfaces/user"; import client from "@/lib/mongodb"; import moment from "moment"; import {getLinkedUsers, getUser} from "./users.be"; @@ -71,9 +71,9 @@ export const getUsersGroups = async (ids: string[]) => { .toArray(); }; -export const getAllAssignersByCorporate = async (corporateID: string): Promise => { - const linkedTeachers = await getLinkedUsers(corporateID, "mastercorporate", "teacher"); - const linkedCorporates = await getLinkedUsers(corporateID, "mastercorporate", "corporate"); +export const getAllAssignersByCorporate = async (corporateID: string, type: Type): Promise => { + const linkedTeachers = await getLinkedUsers(corporateID, type, "teacher"); + const linkedCorporates = await getLinkedUsers(corporateID, type, "corporate"); return [...linkedTeachers.users.map((x) => x.id), ...linkedCorporates.users.map((x) => x.id)]; };