/* eslint-disable @next/next/no-img-element */ import Head from "next/head"; import Navbar from "@/components/Navbar"; import {BsFileEarmarkText, BsPencil, BsStar, BsBook, BsHeadphones, BsPen, BsMegaphone} from "react-icons/bs"; import {withIronSessionSsr} from "iron-session/next"; import {sessionOptions} from "@/lib/session"; import {useEffect, useState} from "react"; import useStats from "@/hooks/useStats"; import {averageScore, groupBySession, totalExams} from "@/utils/stats"; import useUser from "@/hooks/useUser"; import Sidebar from "@/components/Sidebar"; import Diagnostic from "@/components/Diagnostic"; import {ToastContainer} from "react-toastify"; import {capitalize} from "lodash"; import {Module} from "@/interfaces"; import ProgressBar from "@/components/Low/ProgressBar"; import Layout from "@/components/High/Layout"; import {calculateAverageLevel} from "@/utils/score"; import axios from "axios"; import DemographicInformationInput from "@/components/DemographicInformationInput"; import moment from "moment"; import Link from "next/link"; import {MODULE_ARRAY} from "@/utils/moduleUtils"; import ProfileSummary from "@/components/ProfileSummary"; import StudentDashboard from "@/dashboards/Student"; import AdminDashboard from "@/dashboards/Admin"; import CorporateDashboard from "@/dashboards/Corporate"; import TeacherDashboard from "@/dashboards/Teacher"; import AgentDashboard from "@/dashboards/Agent"; export const getServerSideProps = withIronSessionSsr(({req, res}) => { const user = req.session.user; if (!user || !user.isVerified) { res.setHeader("location", "/login"); res.statusCode = 302; res.end(); return { props: { user: null, }, }; } return { props: {user: req.session.user}, }; }, sessionOptions); export default function Home() { const [showDiagnostics, setShowDiagnostics] = useState(false); const [showDemographicInput, setShowDemographicInput] = useState(false); const {user, mutateUser} = useUser({redirectTo: "/login"}); useEffect(() => { if (user) { setShowDemographicInput(!user.demographicInformation); setShowDiagnostics(user.isFirstLogin); } }, [user]); const checkIfUserExpired = () => { const expirationDate = user!.subscriptionExpirationDate; if (expirationDate === null || expirationDate === undefined) return false; if (moment(expirationDate).isAfter(moment(new Date()))) return false; return true; }; if (user && (user.status === "disabled" || checkIfUserExpired())) { return ( <> EnCoach
{user.status === "disabled" ? ( <> Your account has been disabled! Please contact an administrator if you believe this to be a mistake. ) : ( <> Your subscription has expired!
Please purchase a new time pack{" "} here . If you are not the one in charge of your subscription, please contact the one responsible to extend it.
)}
); } if (user && showDemographicInput) { return ( <> EnCoach ); } if (user && showDiagnostics) { return ( <> EnCoach setShowDiagnostics(false)} /> ); } return ( <> EnCoach {user && ( {user.type === "student" && } {user.type === "teacher" && } {user.type === "corporate" && } {user.type === "agent" && } {user.type === "admin" && } {user.type === "developer" && } )} ); }