diff --git a/src/dashboards/MasterCorporate.tsx b/src/dashboards/MasterCorporate.tsx index e4a252a2..ecec3cdd 100644 --- a/src/dashboards/MasterCorporate.tsx +++ b/src/dashboards/MasterCorporate.tsx @@ -55,6 +55,7 @@ import MasterStatistical from "./MasterStatistical"; import {futureAssignmentFilter, pastAssignmentFilter, archivedAssignmentFilter, activeAssignmentFilter} from "@/utils/assignments"; import useUserBalance from "@/hooks/useUserBalance"; import AssignmentsPage from "./views/AssignmentsPage"; +import { group } from "console"; interface Props { user: MasterCorporateUser; @@ -360,8 +361,14 @@ export default function MasterCorporateDashboard({user}: Props) { ); - const corporateUserFilter = (x: User) => x.type === "corporate"; + const groupedByNameCorporates = groupBy(corporates, (x: CorporateUser) => x.corporateInformation?.companyInformation?.name); + const groupedByNameCorporatesKeys = Object.keys(groupedByNameCorporates); + const groupedByNameCorporateIds = groupedByNameCorporatesKeys.reduce((accm, x) => { + const corporateUserIds = (groupedByNameCorporates[x] as CorporateUser[]).map((y) => y.id); + return { ...accm, [x]: corporateUserIds }; + }, {}); + console.log("groupedByNameCorporates", groupedByNameCorporates, groupedByNameCorporateIds); const GroupsList = () => { return ( <> @@ -414,7 +421,7 @@ export default function MasterCorporateDashboard({user}: Props) {

Master Statistical

- + ); }; @@ -468,12 +475,20 @@ export default function MasterCorporateDashboard({user}: Props) { /> router.push("/#corporate")} /> + router.push("/#corporate")} + /> { const { users, corporateUsers } = props; - const corporateRelevantUsers = React.useMemo( - () => corporateUsers.filter((x) => x.type !== "student") as CorporateUser[], - [corporateUsers] - ); + // const corporateRelevantUsers = React.useMemo( + // () => corporateUsers.filter((x) => x.type !== "student") as CorporateUser[], + // [corporateUsers] + // ); const corporates = React.useMemo( - () => corporateRelevantUsers.map((x) => x.id), - [corporateRelevantUsers] + () => Object.values(corporateUsers).flat(), + [corporateUsers] ); const [selectedCorporates, setSelectedCorporates] = @@ -126,7 +132,7 @@ const MasterStatistical = (props: Props) => { }; }; - const corporateScores = corporates.reduce( + const getCorporatesScoresHash = (data: string[]) => data.reduce( (accm, id) => ({ ...accm, [id]: getCorporateScores(id), @@ -134,13 +140,16 @@ const MasterStatistical = (props: Props) => { {} ) as Record; - const consolidateScore = Object.values(corporateScores).reduce( + const getConsolidateScore = (data: Record) => Object.values(data).reduce( (acc: UserCount, { userCount, maxUserCount }: UserCount) => ({ userCount: acc.userCount + userCount, maxUserCount: acc.maxUserCount + maxUserCount, }), { userCount: 0, maxUserCount: 0 } - ); + ) + + const corporateScores = getCorporatesScoresHash(corporates); + const consolidateScore = getConsolidateScore(corporateScores); const getConsolidateScoreStr = (data: UserCount) => `${data.userCount}/${data.maxUserCount}`; @@ -286,23 +295,25 @@ const MasterStatistical = (props: Props) => { }} isSelected={areAllSelected} /> - {corporateRelevantUsers.map((group) => { - const isSelected = selectedCorporates.includes(group.id); + {Object.keys(corporateUsers).map((corporateName) => { + const group = corporateUsers[corporateName]; + const isSelected = group.every((id) => selectedCorporates.includes(id)); + + const valueHash = getCorporatesScoresHash(group); + const value = getConsolidateScoreStr(getConsolidateScore(valueHash)); return ( { if (isSelected) { - setSelectedCorporates( - selectedCorporates.filter((x) => x !== group.id) - ); + setSelectedCorporates(((prev) => prev.filter((x) => !group.includes(x)))); return; } - setSelectedCorporates([...selectedCorporates, group.id]); + setSelectedCorporates((prev) => [...new Set([...prev, ...group])]); }} isSelected={isSelected} />