diff --git a/src/dashboards/MasterCorporate.tsx b/src/dashboards/MasterCorporate.tsx
index e4a252a2..ee6dba4d 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 || 'N/A');
+ 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,21 +132,26 @@ const MasterStatistical = (props: Props) => {
};
};
- const corporateScores = corporates.reduce(
- (accm, id) => ({
- ...accm,
- [id]: getCorporateScores(id),
- }),
- {}
- ) as Record;
+ const getCorporatesScoresHash = (data: string[]) =>
+ data.reduce(
+ (accm, id) => ({
+ ...accm,
+ [id]: getCorporateScores(id),
+ }),
+ {}
+ ) as Record;
- const consolidateScore = Object.values(corporateScores).reduce(
- (acc: UserCount, { userCount, maxUserCount }: UserCount) => ({
- userCount: acc.userCount + userCount,
- maxUserCount: acc.maxUserCount + maxUserCount,
- }),
- { userCount: 0, maxUserCount: 0 }
- );
+ 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 +297,31 @@ 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}
/>