diff --git a/src/dashboards/Admin.tsx b/src/dashboards/Admin.tsx
index 96d1cfb2..85939403 100644
--- a/src/dashboards/Admin.tsx
+++ b/src/dashboards/Admin.tsx
@@ -25,6 +25,7 @@ import IconCard from "./IconCard";
import useFilterStore from "@/stores/listFilterStore";
import { useRouter } from "next/router";
import usePaymentStatusUsers from "@/hooks/usePaymentStatusUsers";
+import CorporateStudentsLevels from "./CorporateStudentsLevels";
interface Props {
user: User;
@@ -293,6 +294,26 @@ export default function AdminDashboard({ user }: Props) {
);
};
+ const CorporateStudentsLevelsHelper = () => {
+ return (
+ <>
+
+
setPage("")}
+ className="flex gap-2 items-center text-mti-purple-light cursor-pointer hover:text-mti-purple-dark transition ease-in-out duration-300"
+ >
+
+ Back
+
+
+ Corporate Students Levels
+
+
+
+ >
+ );
+ };
+
const DefaultDashboard = () => (
<>
@@ -393,6 +414,12 @@ export default function AdminDashboard({ user }: Props) {
label="Content Management System (CMS)"
color="green"
/>
+ setPage("corporatestudentslevels")}
+ Icon={BsPersonFill}
+ label="Corporate Students Levels"
+ color="purple"
+ />
@@ -681,6 +708,7 @@ export default function AdminDashboard({ user }: Props) {
{page === "inactiveCountryManagers" && }
{page === "paymentdone" && }
{page === "paymentpending" && }
+ {page === "corporatestudentslevels" && }
{page === "" && }
>
);
diff --git a/src/dashboards/CorporateStudentsLevels.tsx b/src/dashboards/CorporateStudentsLevels.tsx
new file mode 100644
index 00000000..698c06ae
--- /dev/null
+++ b/src/dashboards/CorporateStudentsLevels.tsx
@@ -0,0 +1,140 @@
+import React from "react";
+import useUsers from "@/hooks/useUsers";
+import useGroups from "@/hooks/useGroups";
+import { User } from "@/interfaces/user";
+import Select from "@/components/Low/Select";
+import ProgressBar from "@/components/Low/ProgressBar";
+import {
+ BsBook,
+ BsClipboard,
+ BsHeadphones,
+ BsMegaphone,
+ BsPen,
+} from "react-icons/bs";
+import { MODULE_ARRAY } from "@/utils/moduleUtils";
+import { capitalize } from "lodash";
+import { getLevelLabel } from "@/utils/score";
+
+const Card = ({ user }: { user: User }) => {
+ return (
+
+
+
{user.name}
+
+
+ {MODULE_ARRAY.map((module) => {
+ const desiredLevel = user.desiredLevels[module] || 9;
+ const level = user.levels[module] || 0;
+ return (
+
+
+
+ {module === "reading" && (
+
+ )}
+ {module === "listening" && (
+
+ )}
+ {module === "writing" && (
+
+ )}
+ {module === "speaking" && (
+
+ )}
+ {module === "level" && (
+
+ )}
+
+
+
+ {capitalize(module)}
+
+
+ {module === "level" && (
+
+ English Level: {getLevelLabel(level).join(" / ")}
+
+ )}
+ {module !== "level" && (
+
+ Level {level} / Level 9
+ Desired Level: {desiredLevel}
+
+ )}
+
+
+
+
+
+ );
+ })}
+
+
+ );
+};
+
+const CorporateStudentsLevels = () => {
+ const { users } = useUsers();
+ const { groups } = useGroups();
+
+ const corporateUsers = users.filter((u) => u.type === "corporate") as User[];
+ const [corporateId, setCorporateId] = React.useState("");
+ const corporate =
+ corporateUsers.find((u) => u.id === corporateId) || corporateUsers[0];
+
+ const groupsFromCorporate = corporate
+ ? groups.filter((g) => g.admin === corporate.id)
+ : [];
+
+ const groupsParticipants = groupsFromCorporate
+ .flatMap((g) => g.participants)
+ .reduce((accm: User[], p) => {
+ const user = users.find((u) => u.id === p) as User;
+ if (user) {
+ return [...accm, user];
+ }
+ return accm;
+ }, []);
+
+ return (
+ <>
+