diff --git a/src/dashboards/Admin.tsx b/src/dashboards/Admin.tsx index 7c4942da..105927eb 100644 --- a/src/dashboards/Admin.tsx +++ b/src/dashboards/Admin.tsx @@ -45,8 +45,8 @@ export default function AdminDashboard({user}: Props) { const router = useRouter(); useEffect(() => { - setShowModal(!!selectedUser && page === ""); - }, [selectedUser, page]); + setShowModal(!!selectedUser && router.asPath === "/#"); + }, [selectedUser, router.asPath]); // eslint-disable-next-line react-hooks/exhaustive-deps useEffect(reload, [page]); @@ -87,7 +87,7 @@ export default function AdminDashboard({user}: Props) { renderHeader={(total) => (
setPage("")} + onClick={() => router.push("/")} className="flex gap-2 items-center text-mti-purple-light cursor-pointer hover:text-mti-purple-dark transition ease-in-out duration-300"> Back @@ -116,7 +116,7 @@ export default function AdminDashboard({user}: Props) { renderHeader={(total) => (
setPage("")} + onClick={() => router.push("/")} className="flex gap-2 items-center text-mti-purple-light cursor-pointer hover:text-mti-purple-dark transition ease-in-out duration-300"> Back @@ -138,7 +138,7 @@ export default function AdminDashboard({user}: Props) { renderHeader={(total) => (
setPage("")} + onClick={() => router.push("/")} className="flex gap-2 items-center text-mti-purple-light cursor-pointer hover:text-mti-purple-dark transition ease-in-out duration-300"> Back @@ -157,7 +157,7 @@ export default function AdminDashboard({user}: Props) { renderHeader={(total) => (
setPage("")} + onClick={() => router.push("/")} className="flex gap-2 items-center text-mti-purple-light cursor-pointer hover:text-mti-purple-dark transition ease-in-out duration-300"> Back @@ -179,7 +179,7 @@ export default function AdminDashboard({user}: Props) { renderHeader={(total) => (
setPage("")} + onClick={() => router.push("/")} className="flex gap-2 items-center text-mti-purple-light cursor-pointer hover:text-mti-purple-dark transition ease-in-out duration-300"> Back @@ -201,7 +201,7 @@ export default function AdminDashboard({user}: Props) { renderHeader={(total) => (
setPage("")} + onClick={() => router.push("/")} className="flex gap-2 items-center text-mti-purple-light cursor-pointer hover:text-mti-purple-dark transition ease-in-out duration-300"> Back @@ -223,7 +223,7 @@ export default function AdminDashboard({user}: Props) { renderHeader={(total) => (
setPage("")} + onClick={() => router.push("/")} className="flex gap-2 items-center text-mti-purple-light cursor-pointer hover:text-mti-purple-dark transition ease-in-out duration-300"> Back @@ -245,7 +245,7 @@ export default function AdminDashboard({user}: Props) { renderHeader={(total) => (
setPage("")} + onClick={() => router.push("/")} className="flex gap-2 items-center text-mti-purple-light cursor-pointer hover:text-mti-purple-dark transition ease-in-out duration-300"> Back @@ -262,7 +262,7 @@ export default function AdminDashboard({user}: Props) { <>
setPage("")} + onClick={() => router.push("/")} className="flex gap-2 items-center text-mti-purple-light cursor-pointer hover:text-mti-purple-dark transition ease-in-out duration-300"> Back @@ -281,28 +281,28 @@ export default function AdminDashboard({user}: Props) { Icon={BsPersonFill} label="Students" value={users.filter((x) => x.type === "student").length} - onClick={() => setPage("students")} + onClick={() => router.push("/#students")} color="purple" /> x.type === "teacher").length} - onClick={() => setPage("teachers")} + onClick={() => router.push("/#teachers")} color="purple" /> x.type === "corporate").length} - onClick={() => setPage("corporate")} + onClick={() => router.push("/#corporate")} color="purple" /> x.type === "agent").length} - onClick={() => setPage("agents")} + onClick={() => router.push("/#agents")} color="purple" /> setPage("inactiveStudents")} + onClick={() => router.push("/#inactiveStudents")} Icon={BsPersonFill} label="Inactive Students" value={ @@ -322,14 +322,14 @@ export default function AdminDashboard({user}: Props) { color="rose" /> setPage("inactiveCountryManagers")} + onClick={() => router.push("/#inactiveCountryManagers")} Icon={BsBriefcaseFill} label="Inactive Country Managers" value={users.filter(inactiveCountryManagerFilter).length} color="rose" /> setPage("inactiveCorporate")} + onClick={() => router.push("/#inactiveCorporate")} Icon={BsBank} label="Inactive Corporate" value={ @@ -338,9 +338,15 @@ export default function AdminDashboard({user}: Props) { } color="rose" /> - setPage("paymentdone")} Icon={BsCurrencyDollar} label="Payment Done" value={done.length} color="purple" /> setPage("paymentpending")} + onClick={() => router.push("/#paymentdone")} + Icon={BsCurrencyDollar} + label="Payment Done" + value={done.length} + color="purple" + /> + router.push("/#paymentpending")} Icon={BsCurrencyDollar} label="Pending Payment" value={pending.length} @@ -352,7 +358,12 @@ export default function AdminDashboard({user}: Props) { label="Content Management System (CMS)" color="green" /> - setPage("corporatestudentslevels")} Icon={BsPersonFill} label="Corporate Students Levels" color="purple" /> + router.push("/#corporatestudentslevels")} + Icon={BsPersonFill} + label="Corporate Students Levels" + color="purple" + />
@@ -598,17 +609,17 @@ export default function AdminDashboard({user}: Props) { )} - {page === "students" && } - {page === "teachers" && } - {page === "corporate" && } - {page === "agents" && } - {page === "inactiveStudents" && } - {page === "inactiveCorporate" && } - {page === "inactiveCountryManagers" && } - {page === "paymentdone" && } - {page === "paymentpending" && } - {page === "corporatestudentslevels" && } - {page === "" && } + {router.asPath === "/#students" && } + {router.asPath === "/#teachers" && } + {router.asPath === "/#corporate" && } + {router.asPath === "/#agents" && } + {router.asPath === "/#inactiveStudents" && } + {router.asPath === "/#inactiveCorporate" && } + {router.asPath === "/#inactiveCountryManagers" && } + {router.asPath === "/#paymentdone" && } + {router.asPath === "/#paymentpending" && } + {router.asPath === "/#corporatestudentslevels" && } + {router.asPath === "/" && } ); } diff --git a/src/dashboards/Corporate.tsx b/src/dashboards/Corporate.tsx index fa961a46..7a70fbe3 100644 --- a/src/dashboards/Corporate.tsx +++ b/src/dashboards/Corporate.tsx @@ -51,6 +51,7 @@ import List from "@/components/List"; import {getUserCompanyName} from "@/resources/user"; import {futureAssignmentFilter, pastAssignmentFilter, archivedAssignmentFilter, activeAssignmentFilter} from "@/utils/assignments"; import useUserBalance from "@/hooks/useUserBalance"; +import AssignmentsPage from "./views/AssignmentsPage"; interface Props { user: CorporateUser; @@ -156,15 +157,11 @@ const StudentPerformanceList = ({items, stats, users}: {items: StudentPerformanc }; export default function CorporateDashboard({user, linkedCorporate}: Props) { - const [page, setPage] = useState(""); const [selectedUser, setSelectedUser] = useState(); const [showModal, setShowModal] = useState(false); - const [selectedAssignment, setSelectedAssignment] = useState(); - const [isCreatingAssignment, setIsCreatingAssignment] = useState(false); const {data: stats} = useFilterRecordsByUser(); const {users, reload, isLoading} = useUsers(); - const {codes} = useCodes(user.id); const {groups} = useGroups({admin: user.id}); const {assignments, isLoading: isAssignmentsLoading, reload: reloadAssignments} = useAssignments({corporate: user.id}); const {balance} = useUserBalance(); @@ -190,8 +187,8 @@ export default function CorporateDashboard({user, linkedCorporate}: Props) { ); useEffect(() => { - setShowModal(!!selectedUser && page === ""); - }, [selectedUser, page]); + setShowModal(!!selectedUser && router.asPath === "/#"); + }, [selectedUser, router.asPath]); const studentFilter = (user: User) => user.type === "student" && groups.flatMap((g) => g.participants).includes(user.id); const teacherFilter = (user: User) => user.type === "teacher" && groups.flatMap((g) => g.participants).includes(user.id); @@ -227,7 +224,7 @@ export default function CorporateDashboard({user, linkedCorporate}: Props) { renderHeader={(total) => (
setPage("")} + onClick={() => router.push("/")} className="flex gap-2 items-center text-mti-purple-light cursor-pointer hover:text-mti-purple-dark transition ease-in-out duration-300"> Back @@ -256,7 +253,7 @@ export default function CorporateDashboard({user, linkedCorporate}: Props) { renderHeader={(total) => (
setPage("")} + onClick={() => router.push("/")} className="flex gap-2 items-center text-mti-purple-light cursor-pointer hover:text-mti-purple-dark transition ease-in-out duration-300"> Back @@ -275,7 +272,7 @@ export default function CorporateDashboard({user, linkedCorporate}: Props) { <>
setPage("")} + onClick={() => router.push("/")} className="flex gap-2 items-center text-mti-purple-light cursor-pointer hover:text-mti-purple-dark transition ease-in-out duration-300"> Back @@ -288,111 +285,6 @@ export default function CorporateDashboard({user, linkedCorporate}: Props) { ); }; - const AssignmentsPage = () => { - return ( - <> - { - setSelectedAssignment(undefined); - setIsCreatingAssignment(false); - reloadAssignments(); - }} - assignment={selectedAssignment} - /> - { - setIsCreatingAssignment(false); - setSelectedAssignment(undefined); - reloadAssignments(); - }} - /> -
-
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 -
-
- Reload - -
-
-
-

Active Assignments ({assignments.filter(activeAssignmentFilter).length})

-
- {assignments.filter(activeAssignmentFilter).map((a) => ( - setSelectedAssignment(a)} key={a.id} /> - ))} -
-
-
-

Planned Assignments ({assignments.filter(futureAssignmentFilter).length})

-
-
setIsCreatingAssignment(true)} - className="w-[250px] h-[200px] flex flex-col gap-2 items-center justify-center bg-white hover:bg-mti-purple-ultralight text-mti-purple-light hover:text-mti-purple-dark border border-mti-gray-platinum hover:drop-shadow p-4 cursor-pointer rounded-xl transition ease-in-out duration-300"> - - New Assignment -
- {assignments.filter(futureAssignmentFilter).map((a) => ( - { - setSelectedAssignment(a); - setIsCreatingAssignment(true); - }} - key={a.id} - /> - ))} -
-
-
-

Past Assignments ({assignments.filter(pastAssignmentFilter).length})

-
- {assignments.filter(pastAssignmentFilter).map((a) => ( - setSelectedAssignment(a)} - key={a.id} - allowDownload - reload={reloadAssignments} - allowArchive - allowExcelDownload - /> - ))} -
-
-
-

Archived Assignments ({assignments.filter(archivedAssignmentFilter).length})

-
- {assignments.filter(archivedAssignmentFilter).map((a) => ( - setSelectedAssignment(a)} - key={a.id} - allowDownload - reload={reloadAssignments} - allowUnarchive - allowExcelDownload - /> - ))} -
-
- - ); - }; - const StudentPerformancePage = () => { const students = users .filter((x) => x.type === "student" && groups.flatMap((g) => g.participants).includes(x.id)) @@ -406,7 +298,7 @@ export default function CorporateDashboard({user, linkedCorporate}: Props) { <>
setPage("")} + onClick={() => router.push("/")} className="flex gap-2 items-center text-mti-purple-light cursor-pointer hover:text-mti-purple-dark transition ease-in-out duration-300"> Back @@ -457,14 +349,14 @@ export default function CorporateDashboard({user, linkedCorporate}: Props) { )}
setPage("students")} + onClick={() => router.push("/#students")} Icon={BsPersonFill} label="Students" value={users.filter(studentFilter).length} color="purple" /> setPage("teachers")} + onClick={() => router.push("/#teachers")} Icon={BsPencilSquare} label="Teachers" value={users.filter(teacherFilter).length} @@ -482,7 +374,7 @@ export default function CorporateDashboard({user, linkedCorporate}: Props) { value={averageLevelCalculator(stats.filter((s) => groups.flatMap((g) => g.participants).includes(s.user))).toFixed(1)} color="purple" /> - setPage("groups")} Icon={BsPeople} label="Groups" value={groups.length} color="purple" /> + router.push("/#groups")} Icon={BsPeople} label="Groups" value={groups.length} color="purple" /> setPage("studentsPerformance")} + onClick={() => router.push("/#studentsPerformance")} />