{"version":3,"sources":["helpers/UserHelper.js","controllers/Authorization.js","helpers/ServerResponseModel.js","routes.js","controllers/Logger.js","controllers/AdminController.js","controllers/AccountController.js","helpers/Paths.js","history.js","assets/Logo.png","components/LoginView.jsx","controllers/ExamController.js","helpers/Helpers.js","components/QNA.jsx","components/ExamNavBar.jsx","components/Exam.jsx","assets/LogoColored.png","components/MainNavbar.jsx","helpers/versionInfo.js","components/Dashboard.jsx","helpers/UnAuthorizedRoute.jsx","helpers/types.js","helpers/AuthorizedRoute.jsx","controllers/ExamManagementController.js","components/Report.jsx","components/TestInformation/Page1.jsx","components/TestInformation/Page3.jsx","components/TestInformation/Page2.jsx","components/TestInformation/CustomizeExam.jsx","components/TestInformation/Instructions.jsx","components/admin/AdminLogin.jsx","helpers/NotificationSystem.js","components/admin/ExamManagement/ImportUsers.jsx","controllers/GroupManagementController.js","components/admin/UserManagement/Student/SelectStudentGroups.jsx","components/admin/UserManagement/UserManagement.jsx","components/admin/UserManagement/ViewStudentResult.jsx","components/admin/UserManagement/StudentTakenExam.jsx","components/admin/UserManagement/Editor/EditorAllowedExams.jsx","components/admin/UserManagement/UserInformation.jsx","helpers/Permissions.js","helpers/Columns.js","components/admin/ExamManagement/ExamManagementView.jsx","components/admin/ExamManagement/AllowedStudents.jsx","components/admin/ExamManagement/ImportQuestions.jsx","components/admin/ExamManagement/Answers.jsx","components/admin/ExamManagement/EditQuestion.jsx","components/admin/ExamManagement/Questions.jsx","helpers/Colors.js","components/admin/ExamManagement/Sections.jsx","components/admin/ExamManagement/ManageExams.jsx","hooks/useUser.jsx","components/admin/Dashboard.jsx","components/admin/GroupManagement/GroupManagementView.jsx","components/admin/GroupManagement/GroupView.jsx","controllers/ApiTokenController.js","components/admin/ForeignAdmin/APITokenManagement.jsx","components/admin/AdminDashboard.jsx","controllers/student/profileManagement.js","components/student/ProfileManagement.jsx","components/student/StudentResults.jsx","controllers/foriegnstudent/ForiegnStudentMagicLinkController.js","components/foreignstudent/MagicLinkEndPoint.jsx","components/foreignstudent/MagicLinkExamResult.jsx","App.js","registerServiceWorker.js","index.js"],"names":["userTypes","type","key","getUserKey","find","user","toLowerCase","localUserDataObjectName","getUserType","customAuthorizationToken","getLocalUserData","e","isForeignAdmin","isForeign","JSON","parse","localStorage","getItem","setLocalUserData","data","setItem","stringify","error","clearUserData","removeItem","getAuthorizationHeader","Authorization","localUserData","token","getUsername","userName","ServerResponse","isSuccess","message","errors","errorResponse","serverResponse","apiUrls","authenticate","baseStudentPreFix","exams","startExam","continueExam","submit","finishExam","result","authorize","sectionedExam","examInfo","account","me","exam","taken","profile","get","updatePassword","updateProfile","updateEmail","updatePicture","foriegnStudent","magicLink","info","adminApiUrls","login","addUser","updateUser","removeUser","statistics","getUsers","users","updateAllowedExams","import","export","detail","group","add","update","delete","all","overview","apiToken","exportQuestions","baseExamManagementPath","importQuestions","list","getAllowedGroups","updateAllowedGroups","section","questions","answers","Log","value","mode","a","authHeader","Object","keys","length","axios","headers","status","getUserDetail","userType","userId","doAuthorizedGetCall","response","model","doAuthorizedPostCall","api","post","getStatistics","updateAllowedExam","importUsers","exportUsers","getSelf","Login","authenticationModel","authenticateError","undefined","captchaResponse","username","password","Axios","res","isAuthorized","preStudentPath","preAdminPath","studentRoutes","dashboard","instructions","report","results","getReportPath","id","adminPaths","userManagement","examManagement","groupManagement","tokenManagement","createBrowserHistory","Title","Typography","Text","LoginView","useState","setUsername","setPassword","isError","setIsError","recaptchaValue","setRecaptchaValue","setError","isLoading","setIsLoading","className","href","target","rel","src","WhiteLogo","width","alt","span","onClick","history","push","level","Form","method","onSubmit","preventDefault","FormGroup","Label","onChange","minLength","maxLength","name","placeholder","for","Password","iconRender","visible","EyeTwoTone","EyeInvisibleOutlined","sitekey","v","htmlType","size","loading","showIcon","getExamInfo","examId","getExams","getSectionedExam","takenExamId","submitQuestion","qi","ai","s","forEach","p","replace","url","getExamResult","getStudentTakenExams","shuffleArray","array","i","j","Math","floor","random","temp","downloadLocalFile","fileType","fileName","ft","file","Blob","link","document","createElement","URL","createObjectURL","download","body","appendChild","click","removeChild","Panel","Collapse","QNA","onSelectedAnswerChanged","props","question","text","map","InputGroup","check","Input","answerType","checked","answer","includes","style","fontSize","imageUrl","marginTop","showAnswer","expandIconPosition","header","filter","correct","getCorrectAnswer","ExamNavbar","Container","backIcon","ArrowLeftOutlined","color","onBack","Modal","confirm","title","icon","ExclamationCircleOutlined","onOk","back","goBack","content","okText","cancelText","examName","subTitle","questionsCount","isStarted","onConfirm","onFinishExam","ClockCircleOutlined","remainingTime","Exam","state","selectedQuestion","selectedQuestionIndex","totalSecondRemaining","timer","h","m","btnBackClicked","bind","btnNextClicked","getQuestion","startTimer","countDown","getRemainingTime","this","startTimmer","alert","q","match","params","location","setState","shuffleQNA","totalSeconds","sections","index","isCorrect","selectedAnswers","questionSection","sc","newSection","pathname","class","ArrowRightOutlined","sa","k","parseInt","secs","divisor_for_minutes","divisor_for_seconds","ceil","setInterval","seconds","secondsToTime","clearInterval","t","toLocaleString","minimumIntegerDigits","useGrouping","Component","MainNavbar","menu","Item","danger","Navbar","backgroundColor","sticky","NavbarBrand","ColoredLogo","overlay","shape","charAt","toUpperCase","getAppVersion","window","host","Search","Paragraph","Dashboard","userData","showResult","selectedExamId","examType","Jumbotron","Group","defaultValue","buttonStyle","Button","onSearch","button","btnDemo","allowDemo","isOver","takeExam","noOfQuestions","description","durationInSec","UnAuthorizedRoute","isAuthorizing","then","to","render","component","AuthorizedRoute","isAdminAuthorized","path","startsWith","resolvePath","getAllExam","getExamById","addExam","console","log","maxQuestions","passingScore","correlationId","teachers","testInformation","updateExam","deleteExam","addSection","updateSection","deleteSection","addQuestion","updateQuestion","deleteQuestion","addAnswer","updateAnswer","deleteAnswer","qid","groups","getStudentResult","sid","eid","getExamList","randomColor","require","Report","generatingReport","generatedReport","imageHeight","imageWidth","getSections","finishedGeneratingReport","admin","studentId","rc","luminosity","count","attr","activeKey","defaultActiveKey","extra","takenScore","totalScore","points","rightDescription","wrongDescription","imgPath","doc","jsPDF","addImage","save","sectionResult","sectionTotal","sectionObtained","total","obtained","suffix","setTimeout","elm","getElementById","ih","offsetHeight","iw","offsetWidth","domtoimage","toPng","height","transform","dataUrl","orientation","unit","format","ph","internal","pageSize","pw","gutter","justify","studentName","date","split","Date","toLocaleDateString","Page1","InputChecked","InputUnChecked","Page3","fontWeight","bordered","label","TimeLabel","QuestionCount","NextButton","PreviousButton","FinishButton","Page2","CustomizeExam","setSections","updateTime","min","max","defaultChecked","newSections","allow","handleSectionSelection","Instructions","useEffect","examData","setName","startPage","currentPage","setCurrentPage","time","setTime","setExamInfo","load","pages","reduce","n","paddingBottom","disabled","AdminLogin","showErrorNotification","notify","showSuccessNotification","tp","Store","addNotification","insert","container","animationIn","animationOut","dismiss","duration","onScreen","ImportUsers","show","onClose","onImport","ready","setReady","csv","rawUsers","setRawUsers","okButtonProps","combinedErrors","onCancel","maxCount","accept","showUploadList","beforeUpload","reader","FileReader","onload","trim","readAsText","UploadOutlined","getAllStudentGroups","getStudentGroupDetail","groupId","deleteStudentGroup","addStudentGroup","groupData","updateStudentGroup","getGroupsOverview","SelectStudentGroups","selectedGroups","onSelectionFinished","setShow","groupOverview","setGroupOverview","columns","dataIndex","record","selected","g","getGroupOverview","x","closable","searchableProps","inputProps","prefix","SearchOutlined","searchable","dataSource","CheckCircleOutlined","Option","Select","UserManagement","loadUsers","el","setExamList","setUsers","u","tUsername","tFirstName","firstName","tLastName","lastName","tEmail","email","tIsForeign","tCorrelationId","emptyModel","FirstName","LastName","Username","removeStudentPolicy","dateToRemove","groupIds","setModel","selectedFilter","setSelectedFilter","filterOptions","after","options","studentRemoveOptions","showImportDialog","setShowImportDialog","handleInput","addNewUser","ms","setDeletingStatus","deleting","row","SyncOutlined","spin","DownloadOutlined","c","autoComplete","o","d","setMonth","getMonth","gs","PlusOutlined","sort","ViewStudentResult","from","zIndex","top","footer","StudentTakenExam","takenExams","setTakenExams","showExamResult","EditorAllowedExams","allowedExams","examList","setExams","col","cursor","selectedExam","setSelectedExam","ue","UserInformation","setLoading","f","customData","updateUserData","autocomplete","DeleteFilled","r","EditFilled","Permissions","examViewColumns","CheckOutlined","CloseOutlined","TextArea","ExamManagementView","newExam","allowAllStudents","IsExamCert","isReady","handleExamInput","handleExamUpdateInput","updated","b","concat","showAllowedStudents","showImportQuestions","rows","AllowedStudents","allowedStudents","setAllowedStudents","updating","setUpdating","allowed","ax","ImportQuestions","onUpload","importExamViewModel","setImportExamViewModel","Answers","questionId","questionsAnswers","sectionId","onUpdate","newAnswer","setNewAnswer","handleUpdateInput","setAnswers","getUpdateModel","showUpdateDialog","setModalVisibility","updatedAnswers","na","updatedAnswer","pagination","getAnswers","EditQuestion","onQuestionDeleted","onQuestionUpdated","updatedQuestion","setUpdatedQuestion","handleChange","fileList","customRequest","addEventListener","readAsDataURL","originFileObj","Questions","sectionQuestions","newQuestion","setNewQuestion","showEditQuestion","visble","setQuestions","qs","EditTwoTone","left","Sections","examSections","percentage","searchedQuestions","setNewSection","event","ns","ghost","ManageExams","setExam","showAllowedExam","setShowAllowedExam","showImport","setShowImport","loadExam","setUser","useUser","setAllowAdminEdits","allowAdminEdits","readOnly","isExamCert","Meta","Card","setData","borderRadius","borderWidth","borderColor","hoverable","students","GroupManagementView","setGroups","combinedErros","addNewGroup","newGroupModel","groupCorrelationId","useDestination","setNewGroupModel","PlusCircleFilled","GroupView","groupModel","setGroupModel","getAllTokens","deleteToken","addNewApiToken","vm","APITokenManagement","noExpiry","setNoExpiry","expiryDate","setExpiryDate","loadingAdd","setLoadingAdd","loadingLoad","setLoadingLoad","tokens","setTokens","addToken","success","loadTokens","apiTokenManagement","toDate","indicator","LoadingOutlined","addonAfter","navigator","clipboard","writeText","CopyFilled","moment","AdminDashboard","permissions","isPermissionUpdated","setIsPermissionUpdated","MainLogo","iconShape","exact","getStudentProfile","updateStudentProfile","updateStudentEmail","updateStudentPassword","updateStudentProfilePicture","TabPane","Tabs","ProfileManagement","profilePicture","organization","setProfile","profileForm","useRef","passwordForm","emailForm","getProfile","current","setFieldsValue","showMessage","tabPosition","tab","files","onloadend","newProfilePicture","updateProfilePicture","AntDesignOutlined","xs","sm","md","lg","xl","onFinish","ref","layout","StudentResults","loadTakenExams","te","getMagicLinkInfo","fetch","json","MagicLinkEndPoint","magicLinkInfo","setMagicLinkInfo","loadData","spinning","direction","inProgress","allowFinal","MagicLinkExamResult","isPassed","App","displayName","isLocalhost","Boolean","hostname","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","catch","getElementsByTagName","getAttribute","rootElement","ReactDOM","process","origin","indexOf","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.351b4fff.chunk.js","sourcesContent":["export const userTypes = [\n {\n type: \"Admin\",\n key: 2,\n },\n {\n type: \"Student\",\n key: 1,\n },\n {\n type: \"User\",\n key: 3,\n },\n]\n\nexport function getUserKey(type) {\n return userTypes.find(\n (user) => user.type.toLowerCase() === type.toLowerCase()\n ).key\n}\n\nexport function getUserType(key) {\n return userTypes.find((user) => user.key === key).type\n}\n","import { userTypes } from \"../helpers/UserHelper\"\n\nlet localUserDataObjectName = \"userData\"\n\nexport function getUserType() {\n if (customAuthorizationToken) return 1\n try {\n const user = getLocalUserData()\n return user.type\n } catch (e) {\n return 0\n }\n}\n\nexport function isForeignAdmin() {\n try {\n const user = getLocalUserData()\n return user.isForeign && user.type === 2\n } catch (e) {\n return false\n }\n}\n\nexport function getLocalUserData() {\n try {\n const userData = JSON.parse(localStorage.getItem(localUserDataObjectName))\n return userData\n } catch (e) {\n return null\n }\n}\n\nexport function setLocalUserData(data) {\n try {\n localStorage.setItem(localUserDataObjectName, JSON.stringify(data))\n return true\n } catch (error) {\n return false\n }\n}\n\nexport function clearUserData() {\n localStorage.removeItem(localUserDataObjectName)\n return true\n}\n\nvar customAuthorizationToken = null\nexport function setCustomAuthorizationToken(token) {\n customAuthorizationToken = token\n}\n\nexport function getAuthorizationHeader() {\n if (customAuthorizationToken)\n return {\n Authorization: `Bearer ${customAuthorizationToken}`,\n }\n\n const localUserData = getLocalUserData()\n\n return localUserData == null\n ? {}\n : {\n Authorization: `Bearer ${localUserData.token}`,\n }\n}\n\nexport function getUsername() {\n const localUserData = getLocalUserData()\n\n return localUserData == null ? \"\" : localUserData.userName\n}\n","export const ServerResponse = {\n isSuccess: false,\n message: null,\n errors: [],\n data: null\n}\n\nexport function okResponse(data=null, message=\"\")\n{\n const serverResponse = ServerResponse;\n\n serverResponse.data = data;\n serverResponse.message = message;\n serverResponse.isSuccess = true;\n\n return serverResponse;\n}\n\nexport function errorResponse(errors=null, message=\"\", data=null)\n{\n const serverResponse = ServerResponse;\n\n serverResponse.data = data;\n serverResponse.message = message;\n serverResponse.isSuccess = false;\n serverResponse.errors = errors;\n \n return serverResponse;\n}","const baseStudentPreFix = \"api/student/\"\nconst baseExamManagementPath = \"api/exam/management/\"\n\nexport const apiUrls = {\n authenticate: baseStudentPreFix + \"authenticate\",\n exams: baseStudentPreFix + \"exams\",\n startExam: baseStudentPreFix + \"start-exam/\",\n continueExam: baseStudentPreFix + \"exam/continue/\",\n submit: baseStudentPreFix + \"exam/{id}/submit\",\n finishExam: baseStudentPreFix + \"exam/finish/\",\n result: baseStudentPreFix + \"exam/result/\",\n authorize: baseStudentPreFix + \"authorize\",\n sectionedExam: baseStudentPreFix + \"sectioned/exam\",\n examInfo: baseStudentPreFix + \"exam/info/\",\n account: {\n me: \"/api/user/me\",\n },\n exam: {\n taken: baseStudentPreFix + \"taken-exams\",\n },\n profile: {\n get: baseStudentPreFix + \"profile/get-profile\",\n updatePassword: baseStudentPreFix + \"profile/update-password\",\n updateProfile: baseStudentPreFix + \"profile/update-profile\",\n updateEmail: baseStudentPreFix + \"profile/update-email\",\n updatePicture: baseStudentPreFix + \"profile/update-profile-picture\",\n },\n\n foriegnStudent: {\n magicLink: {\n info: \"api/foreign-student/magic-link/info/\",\n },\n },\n}\n\nexport const adminApiUrls = {\n login: \"api/user/authenticate\",\n authorize: \"api/user/authorize\",\n addUser: \"api/user/management/add\",\n updateUser: \"api/user/management/update\",\n removeUser: \"api/user/management/remove\",\n statistics: \"api/user/management/statistics\",\n getUsers: \"api/user/management/get\",\n users: {\n updateAllowedExams: \"api/user/management/update-allowed-exams?userId=\",\n import: \"api/user/management/import\",\n export: \"api/user/management/export\",\n detail: \"api/user/management/get-user-detail\",\n },\n group: {\n add: \"api/student/groups/add\",\n update: \"api/student/groups/update\",\n delete: \"api/student/groups/delete/\",\n get: \"api/student/groups/\",\n all: \"api/student/groups/all\",\n overview: \"api/student/groups/overview\",\n },\n apiToken: {\n all: \"api/tokens/all\",\n delete: \"api/tokens/delete/\",\n add: \"api/tokens/add\",\n },\n exam: {\n exportQuestions: baseExamManagementPath + \"export/\",\n importQuestions: baseExamManagementPath + \"import/\",\n list: baseExamManagementPath + \"exam-list\",\n result: baseExamManagementPath + \"student/result/\",\n all: baseExamManagementPath + \"all\",\n add: baseExamManagementPath + \"add\",\n update: baseExamManagementPath + \"update\",\n delete: baseExamManagementPath + \"delete/\",\n get: baseExamManagementPath + \"get/\",\n getAllowedGroups: baseExamManagementPath + \"allowed-groups/\",\n updateAllowedGroups: baseExamManagementPath + \"allowed-groups/update/\",\n section: {\n all: baseExamManagementPath + \"section/all/\",\n add: baseExamManagementPath + \"section/add\",\n update: baseExamManagementPath + \"section/update\",\n delete: baseExamManagementPath + \"section/delete/\",\n },\n questions: {\n all: baseExamManagementPath + \"questions/all\",\n add: baseExamManagementPath + \"questions/add\",\n update: baseExamManagementPath + \"questions/update\",\n delete: baseExamManagementPath + \"questions/delete/\",\n get: baseExamManagementPath + \"questions/\",\n },\n answers: {\n all: baseExamManagementPath + \"answers/all\",\n add: baseExamManagementPath + \"answers/add\",\n update: baseExamManagementPath + \"answers/update\",\n delete: baseExamManagementPath + \"answers/delete/\",\n },\n },\n}\n","var mode = \"development\"\n\nexport function Log(value) {\n if (mode === \"development\") {\n }\n}\n","import axios from \"axios\"\nimport { adminApiUrls } from \"../routes\"\nimport { getAuthorizationHeader } from \"./Authorization\"\n\nexport async function isAdminAuthorized() {\n try {\n const authHeader = getAuthorizationHeader()\n if (Object.keys(authHeader).length === 0) return false\n\n const response = await axios.get(adminApiUrls.authorize, {\n headers: authHeader,\n })\n\n if (response.status === 200) return true\n } catch (e) {\n return false\n }\n}\n\nexport async function getUserDetail(userType, userId) {\n const response = await doAuthorizedGetCall(\n adminApiUrls.users.detail + \"?userId=\" + userId + \"&userType=\" + userType\n )\n return response.data\n}\n\nexport async function getUsers() {\n return (await doAuthorizedGetCall(adminApiUrls.getUsers)).data\n}\n\nexport async function updateUser(model) {\n return (await doAuthorizedPostCall(adminApiUrls.updateUser, model)).data\n}\n\nexport async function removeUser(userId, userType) {\n return (\n await doAuthorizedGetCall(\n adminApiUrls.removeUser + \"?userId=\" + userId + \"&userType=\" + userType\n )\n ).data\n}\n\nexport async function addUser(model) {\n const response = (await doAuthorizedPostCall(adminApiUrls.addUser, model))\n .data\n return response\n}\n\nexport async function doAuthorizedGetCall(api) {\n return await axios.get(api, {\n headers: getAuthorizationHeader(),\n })\n}\n\nexport async function doAuthorizedPostCall(api, data) {\n return await axios.post(api, data, {\n headers: getAuthorizationHeader(),\n })\n}\n\nexport async function getStatistics() {\n return (await doAuthorizedGetCall(adminApiUrls.statistics)).data\n}\n\nexport async function updateAllowedExam(exams, userId) {\n return (\n await doAuthorizedPostCall(\n adminApiUrls.users.updateAllowedExams + userId,\n exams\n )\n ).data\n}\n\nexport async function importUsers(users) {\n return (await doAuthorizedPostCall(adminApiUrls.users.import, users)).data\n}\n\nexport async function exportUsers() {\n return (await doAuthorizedGetCall(adminApiUrls.users.export)).data\n}\n","import Axios from \"axios\"\nimport { getAuthorizationHeader } from \"./Authorization\"\nimport { errorResponse, ServerResponse } from \"../helpers/ServerResponseModel\"\nimport { adminApiUrls, apiUrls } from \"../routes\"\nimport { Log } from \"./Logger\"\nimport { doAuthorizedGetCall } from \"./AdminController\"\n\nexport async function getSelf() {\n try {\n const response = await doAuthorizedGetCall(apiUrls.account.me)\n\n return response.data\n } catch (e) {\n Log(e)\n return errorResponse(null, e.message)\n }\n}\n\nexport async function Login(authenticationModel, type = 1) {\n const response = ServerResponse\n const authenticateError = \"Unable to authenticate!\"\n\n if (\n authenticationModel.captchaResponse === undefined ||\n authenticationModel.captchaResponse === null ||\n authenticationModel.captchaResponse === \"\"\n ) {\n if (!(!process.env.NODE_ENV || process.env.NODE_ENV === \"development\")) {\n response.message = \"Please verify you are not a robot!\"\n return response\n }\n }\n\n response.message = authenticateError\n\n if (authenticationModel == null) return response\n\n if (\n authenticationModel.username == null ||\n authenticationModel.password == null\n )\n return response\n\n if (\n authenticationModel.username.length < 4 ||\n authenticationModel.username.length > 30 ||\n authenticationModel.password.length < 6 ||\n authenticationModel.password.length > 30\n )\n return response\n\n try {\n const res = await Axios.post(\n type === 1 ? apiUrls.authenticate : adminApiUrls.login,\n authenticationModel\n )\n\n if (res.status === 200) {\n return res.data\n }\n\n return response\n } catch (e) {\n return response\n }\n}\n\nexport async function isAuthorized() {\n try {\n const authHeader = getAuthorizationHeader()\n\n if (Object.keys(authHeader).length === 0) return false\n\n const response = await Axios.get(apiUrls.authorize, {\n headers: authHeader,\n })\n\n if (response.status === 200) return true\n } catch (e) {\n Log(e)\n }\n\n return false\n}\n","export const preStudentPath = \"/student/\"\nexport const preAdminPath = \"/admin/\"\n\nexport const studentRoutes = {\n login: preStudentPath + \"login\",\n dashboard: preStudentPath + \"dashboard\",\n instructions: preStudentPath + \"exam/instructions\",\n report: preStudentPath + \"exam/report/:id\",\n exam: preStudentPath + \"exam/:id\",\n profile: preStudentPath + \"profile\",\n results: preStudentPath + \"results\",\n}\n\nexport function getExamPath(id) {\n return \"/student/exam/\" + id\n}\n\nexport function getDemoPath() {\n return \"/student/exam/demo\"\n}\n\nexport function getReportPath(id) {\n return \"/student/exam/report/\" + id\n}\n\nexport const adminPaths = {\n login: preAdminPath + \"login\",\n dashboard: preAdminPath + \"dashboard\",\n userManagement: preAdminPath + \"dashboard/user-management\",\n examManagement: preAdminPath + \"dashboard/exam-management\",\n groupManagement: preAdminPath + \"dashboard/group-management\",\n tokenManagement: preAdminPath + \"dashboard/api-token-management\",\n}\n","import { createBrowserHistory } from 'history';\n\nexport default createBrowserHistory();","export default __webpack_public_path__ + \"static/media/Logo.9da42620.png\";","import React, { useState } from \"react\"\nimport { Row, Col, Typography, Button, Alert, Input } from \"antd\"\nimport { Form, FormGroup, Label } from \"reactstrap\"\nimport { Login } from \"../controllers/AccountController\"\nimport { setLocalUserData } from \"../controllers/Authorization\"\nimport { Log } from \"../controllers/Logger\"\nimport { studentRoutes, adminPaths } from \"../helpers/Paths\"\nimport history from \"../history\"\nimport WhiteLogo from \"../assets/Logo.png\"\nimport ReCAPTCHA from \"react-google-recaptcha\"\nimport { EyeInvisibleOutlined, EyeTwoTone } from \"@ant-design/icons\"\n\nconst { Title, Text } = Typography\n\nexport default function LoginView() {\n const [username, setUsername] = useState(\"\")\n const [password, setPassword] = useState(\"\")\n const [isError, setIsError] = useState(false)\n const [recaptchaValue, setRecaptchaValue] = useState(\"\")\n const [error, setError] = useState(\"\")\n const [isLoading, setIsLoading] = useState(false)\n\n return (\n
\n \n logo\n \n \n \n \n Student\n
\n Login\n
\n \n Student\n <br />\n Login\n \n history.push(adminPaths.login)}>\n Switch to Admin Login\n \n \n \n
\n \n Sign in to OnionCert.\n \n {\n e.preventDefault()\n setIsLoading(true)\n var data = await Login({\n username: username,\n password: password,\n captchaResponse: recaptchaValue,\n })\n setIsLoading(false)\n\n setIsError(!data.isSuccess)\n setError(data.message)\n\n if (data.isSuccess) {\n setLocalUserData(data.data)\n history.push(studentRoutes.dashboard)\n }\n\n return false\n }}>\n
\n \n \n setUsername(e.target.value)}\n type='text'\n minLength='4'\n maxLength='30'\n name='email'\n id='email'\n placeholder='Email Address'\n />\n \n \n \n setPassword(e.target.value)}\n type='password'\n name='password'\n placeholder='Password'\n iconRender={(visible) =>\n visible ? (\n \n ) : (\n \n )\n }\n />\n \n setRecaptchaValue(v)}\n />\n
\n
\n \n {\" \"}\n Login\n \n \n
\n \n
\n \n
\n
\n )\n}\n","import Axios from \"axios\"\nimport { getAuthorizationHeader } from \"./Authorization\"\nimport { apiUrls } from \"../routes\"\n\nexport async function getExamInfo(examId) {\n return (await doAuthorizedGetCall(apiUrls.examInfo + examId)).data\n}\n\nexport async function getExams() {\n const result = await doAuthorizedGetCall(apiUrls.exams)\n return result.data\n}\n\nexport async function startExam(examId, mode) {\n const result = await doAuthorizedGetCall(\n apiUrls.startExam + `${examId}?mode=${mode}`\n )\n\n return result.data\n}\n\nexport async function getSectionedExam(examId) {\n if (!examId) return null\n\n return (\n await doAuthorizedGetCall(apiUrls.sectionedExam + \"?examId=\" + examId)\n ).data\n}\n\nexport async function continueExam(takenExamId) {\n const result = await doAuthorizedGetCall(apiUrls.continueExam + takenExamId)\n\n return result.data\n}\n\nexport async function submitQuestion(id, qi, ai) {\n var s = \"\"\n\n ai.forEach((a) => (s += `answerId=${a}&`))\n\n var p = apiUrls.submit.replace(\"{id}\", id)\n p = `${p}?questionId=${qi}&${s}`\n\n return (await doAuthorizedGetCall(p)).data\n}\n\nexport async function finishExam(id) {\n var url = apiUrls.finishExam + id\n\n return (await doAuthorizedGetCall(url)).data\n}\n\nasync function doAuthorizedGetCall(url) {\n return await Axios.get(url, {\n headers: getAuthorizationHeader(),\n })\n}\n\nasync function doAuthorizedPostCall(url, data) {\n return await Axios.get(url, {\n data: data,\n headers: getAuthorizationHeader(),\n })\n}\n\nexport async function getExamResult(id) {\n return (await doAuthorizedGetCall(apiUrls.result + id)).data\n}\n\nexport async function getStudentTakenExams() {\n try {\n return (await doAuthorizedGetCall(apiUrls.exam.taken)).data\n } catch (e) {\n return {\n data: [],\n isSuccess: false,\n message: \"Unable to taken exams\",\n }\n }\n}\n","export function shuffleArray(array) {\n for (var i = array.length - 1; i > 0; i--) {\n var j = Math.floor(Math.random() * (i + 1))\n var temp = array[i]\n array[i] = array[j]\n array[j] = temp\n }\n\n return array\n}\n\nexport function downloadLocalFile(fileType, data, fileName) {\n var ft\n\n switch (fileType) {\n case \"csv\":\n ft = \"text/csv\"\n break\n\n default:\n ft = \"text/plain\"\n break\n }\n\n const file = new Blob([data], { type: ft })\n var link = document.createElement(\"a\")\n link.href = URL.createObjectURL(file)\n link.download = fileName\n document.body.appendChild(link) // Required for FF\n link.click()\n document.body.removeChild(link)\n}\n","import React, { useState } from \"react\"\nimport { Typography, Image, Collapse, Row, Col } from \"antd\"\nimport {\n Button,\n FormGroup,\n Input,\n InputGroup,\n InputGroupText,\n Label,\n} from \"reactstrap\"\nimport { shuffleArray } from \"../helpers/Helpers\"\nimport \"./Student.css\"\n\nconst { Title } = Typography\nconst { Panel } = Collapse\n\nexport default function QNA({ onSelectedAnswerChanged, ...props }) {\n const getAnswer = function () {\n return props.question.answers.map((a, i) => {\n return (\n \n \n (props.question.answer = a.id)}\n />\n \n {a.text}\n \n \n \n )\n })\n }\n\n const [showAnswers, setShowAnswers] = useState(false)\n\n const getCorrectAnswer = function () {\n if (props.question.showAnswer) {\n return (\n \n \n
    \n {props.question.answers\n .filter((e) => e.correct)\n .map((a) => (\n
  1. {a.text}
  2. \n ))}\n
\n
\n \n )\n }\n }\n\n return (\n
\n \n {props.question.text}\n \n\n \n \n {\n await onSelectedAnswerChanged(e.target.value)\n }}>\n {getAnswer()}\n
\n \n \n
\n {props.question.imageUrl && props.question.imageUrl !== \"\" ? (\n \n ) : null}\n
\n \n \n
{getCorrectAnswer()}
\n \n \n )\n}\n","import React from \"react\"\nimport { Container, Navbar } from \"react-bootstrap\"\nimport { Button, PageHeader, Modal, Popconfirm } from \"antd\"\nimport {\n ClockCircleOutlined,\n ExclamationCircleOutlined,\n ArrowLeftOutlined,\n} from \"@ant-design/icons\"\nimport history from \"../history\"\nimport \"./Student.css\"\n\nexport default function ExamNavbar(props) {\n function confirm() {\n Modal.confirm({\n title: \"Confirm\",\n icon: ,\n onOk: () => (props.back ? history.goBack() : history.push(\"/\")),\n content: \"Sure you want to exit the exam?\",\n okText: \"Exit\",\n cancelText: \"Cancel\",\n })\n }\n\n return (\n
\n \n \n }\n className='px-0'\n onBack={() => confirm()}\n title={{props.examName}}\n subTitle={\n \n {props.questionsCount} Questions\n \n }\n />\n\n
\n {props.isStarted ? (\n \n \n Finish\n \n \n ) : (\n <>\n )}\n
\n \n {props.remainingTime}\n
\n
\n
\n
\n )\n}\n","import React, { Component } from \"react\"\nimport { Button, Typography } from \"antd\"\nimport { ArrowLeftOutlined, ArrowRightOutlined } from \"@ant-design/icons\"\nimport { Container } from \"react-bootstrap\"\nimport {\n continueExam,\n submitQuestion,\n finishExam,\n} from \"../controllers/ExamController\"\nimport QNA from \"./QNA\"\nimport history from \"../history\"\nimport { shuffleArray } from \"../helpers/Helpers\"\nimport { getReportPath } from \"../helpers/Paths\"\nimport ExamNavBar from \"./ExamNavBar\"\nimport \"./Student.css\"\n\nconst { Title } = Typography\n\nexport default class Exam extends Component {\n constructor(props) {\n super(props)\n\n this.state = {\n questions: [],\n selectedQuestion: null,\n selectedQuestionIndex: 0,\n totalSecondRemaining: -1,\n timer: {\n h: 0,\n m: 0,\n s: 0,\n },\n mode: 1,\n name: \"\",\n }\n\n this.examId = -1\n this.timer = 0\n\n this.btnBackClicked = this.btnBackClicked.bind(this)\n this.btnNextClicked = this.btnNextClicked.bind(this)\n this.getQuestion = this.getQuestion.bind(this)\n this.onSelectedAnswerChanged = this.onSelectedAnswerChanged.bind(this)\n this.startTimer = this.startTimer.bind(this)\n this.countDown = this.countDown.bind(this)\n this.getRemainingTime = this.getRemainingTime.bind(this)\n this.finishExam = this.finishExam.bind(this)\n }\n\n componentDidUpdate() {\n if (this.state.mode === 2) {\n localStorage.setItem(\n \"exam\",\n JSON.stringify({\n questions: this.state.questions,\n mode: 2,\n name: this.state.name,\n startTimmer: this.state.startTimer,\n totalSecondRemaining: this.state.totalSecondRemaining,\n selectedQuestionIndex: this.state.selectedQuestionIndex,\n selectedQuestion: this.state.selectedQuestion,\n })\n )\n }\n if (this.state.totalSecondRemaining === 0) {\n this.finishExam()\n alert(\"Exam Over!\")\n }\n }\n\n shuffleQNA(question) {\n return shuffleArray(\n question.map((q) => {\n return {\n ...q,\n answers: shuffleArray(q.answers),\n }\n })\n )\n }\n\n async componentDidMount() {\n this.examId = this.props.match.params.id\n\n if (this.examId === \"demo\") {\n if (this.props.location.exam) {\n this.setState(\n {\n questions: this.shuffleQNA(\n this.props.location.exam.questions\n ),\n name: this.props.location.exam.name,\n mode: 2,\n startTimmer: true,\n totalSecondRemaining: this.props.location.exam.totalSeconds,\n },\n () => {\n this.startTimer()\n }\n )\n } else if (localStorage.getItem(\"exam\") !== null) {\n var i = JSON.parse(localStorage.getItem(\"exam\"))\n this.setState(\n {\n ...i,\n },\n () => {\n this.startTimer()\n }\n )\n if (i.totalSecondRemaining === 0) history.push(\"/\")\n } else history.push(\"/\")\n } else {\n var result = await continueExam(this.examId)\n\n if (!result.isSuccess) history.push(\"/\")\n this.setState({\n questions: this.shuffleQNA(result.data.questions),\n totalSecondRemaining: result.data.totalSeconds,\n startTimmer: true,\n mode: 1,\n name: result.data.name,\n sections: result.data.sections,\n })\n this.startTimer()\n }\n }\n\n getQuestion() {\n const questions = this.state.questions\n\n if (questions.length === 0) return\n\n const index = this.state.selectedQuestionIndex\n\n const question = {\n text: questions[index].text,\n imageUrl: questions[index].imageUrl,\n answers: questions[index].answers.map((a) => {\n return {\n id: a.id,\n text: a.text,\n correct: a.isCorrect,\n }\n }),\n answer: questions[index].selectedAnswers ?? [],\n showAnswer: this.state.mode === 2,\n answerType: questions[index].answerType,\n }\n\n return (\n <>\n \n \n )\n }\n\n async finishExam() {\n if (this.state.mode === 2) {\n var data = {\n name: this.state.name,\n sections: [],\n }\n\n this.state.questions.forEach((q) => {\n let s = q.questionSection\n\n let sec = data.sections.filter((sc) => sc.id === s.id)\n\n if (sec.length === 1) {\n data = {\n ...data,\n sections: data.sections.map((sc) => {\n if (sc.id === s.id) {\n return {\n ...sc,\n questions: [...sc.questions, q],\n }\n }\n\n return sc\n }),\n }\n } else {\n const newSection = {\n ...s,\n questions: [q],\n }\n\n data.sections.push(newSection)\n }\n })\n\n localStorage.removeItem(\"exam\")\n\n history.push({\n pathname: getReportPath(\"demo\"),\n results: data,\n })\n } else {\n const result = await finishExam(this.examId)\n\n if (result.isSuccess) {\n if (result.data?.isForeign) {\n history.push({\n pathname: \"/magic-exam-result\",\n results: result.data,\n })\n } else history.push(getReportPath(this.examId))\n }\n }\n }\n\n render() {\n return (\n <>\n await this.finishExam()}\n remainingTime={this.getRemainingTime()}\n examName={this.state.name}\n questionsCount={this.state.questions.length}\n />\n \n \n {this.state.selectedQuestionIndex + 1} /{\" \"}\n {this.state.questions.length} Question\n \n
{this.getQuestion()}
\n
\n
\n
\n \n \n \n Previous\n \n \n {this.state.selectedQuestionIndex + 1 ==\n this.state.questions.length\n ? \"Finish\"\n : \"Next\"}\n \n \n \n
\n \n )\n }\n\n btnNextClicked() {\n const index = this.state.selectedQuestionIndex\n\n if (index + 1 === this.state.questions.length) return\n\n this.setState({\n selectedQuestionIndex: index + 1,\n })\n }\n\n async onSelectedAnswerChanged(i) {\n var sa = []\n\n this.setState({\n question: this.state.questions.map((q, k) => {\n if (k === this.state.selectedQuestionIndex) {\n var a = parseInt(i)\n\n if (q.answerType === 1) {\n q.selectedAnswers = [a]\n } else {\n if (!q.selectedAnswers) q.selectedAnswers = []\n\n if (q.selectedAnswers.includes(a)) {\n q.selectedAnswers = q.selectedAnswers.filter(\n (q) => q !== a\n )\n } else q.selectedAnswers.push(a)\n }\n\n sa = q.selectedAnswers\n }\n return q\n }),\n })\n\n if (this.state.mode === 2) return\n\n const respose = await submitQuestion(\n this.examId,\n this.state.questions[this.state.selectedQuestionIndex].id,\n sa\n )\n }\n\n btnBackClicked() {\n const index = this.state.selectedQuestionIndex\n\n if (index === 0) return\n\n this.setState({\n selectedQuestionIndex: index - 1,\n })\n }\n\n secondsToTime(secs) {\n let hours = Math.floor(secs / (60 * 60))\n\n let divisor_for_minutes = secs % (60 * 60)\n let minutes = Math.floor(divisor_for_minutes / 60)\n\n let divisor_for_seconds = divisor_for_minutes % 60\n let seconds = Math.ceil(divisor_for_seconds)\n\n let obj = {\n h: hours,\n m: minutes,\n s: seconds,\n }\n return obj\n }\n\n startTimer() {\n if (this.timer === 0 && this.state.totalSecondRemaining > 0) {\n this.timer = setInterval(this.countDown, 1000)\n }\n }\n\n countDown() {\n // Remove one second, set state so a re-render happens.\n let seconds = this.state.totalSecondRemaining - 1\n this.setState({\n timer: this.secondsToTime(seconds),\n totalSecondRemaining: seconds,\n })\n // Check if we're at zero.\n if (seconds === 0) {\n clearInterval(this.timer)\n }\n }\n\n getRemainingTime() {\n var t = {\n h: this.state.timer.h.toLocaleString(\"en-US\", {\n minimumIntegerDigits: 2,\n useGrouping: false,\n }),\n m: this.state.timer.m.toLocaleString(\"en-US\", {\n minimumIntegerDigits: 2,\n useGrouping: false,\n }),\n s: this.state.timer.s.toLocaleString(\"en-US\", {\n minimumIntegerDigits: 2,\n useGrouping: false,\n }),\n }\n\n return (\n \n {t.h}:{t.m}:{t.s}\n \n )\n }\n}\n","export default __webpack_public_path__ + \"static/media/LogoColored.4b67ca46.png\";","import React from \"react\"\nimport { Navbar, NavbarBrand } from \"react-bootstrap\"\nimport { Button, Avatar, Menu, Dropdown } from \"antd\"\nimport ColoredLogo from \"../assets/LogoColored.png\"\nimport { clearUserData } from \"../controllers/Authorization\"\nimport history from \"../history\"\nimport { studentRoutes } from \"../helpers/Paths\"\n\nexport default function MainNavbar(props) {\n const menu = (\n \n \n

{props.username}

\n
\n\n \n {\n history.push(studentRoutes.dashboard)\n }}>\n Dashboard\n \n \n \n {\n history.push(studentRoutes.profile)\n }}>\n Profile\n \n \n \n {\n history.push(studentRoutes.results)\n }}>\n Results\n \n \n \n {\n clearUserData()\n history.push(\"/student-login\")\n }}>\n Logout\n \n \n
\n )\n return (\n \n \n {\n history.push(studentRoutes.dashboard)\n }}\n className='cursor-pointer'\n alt='logo'\n src={ColoredLogo}\n width='150'\n />\n \n {\n history.push(studentRoutes.dashboard)\n }}\n size='large'>\n Browse Exams\n \n \n \n {props.username.charAt(0).toUpperCase()}\n \n \n \n )\n}\n","export const appVersion = \"v1.0.2\"\nexport const stagingVersion = \"v1.0.4-staging\"\n\nexport function getAppVersion() {\n return window.location.host === \"exam.workersbadge.com\"\n ? appVersion\n : stagingVersion\n}\n","import React, { Component } from \"react\"\nimport { Typography, Radio, Button, Input } from \"antd\"\nimport { ClockCircleOutlined } from \"@ant-design/icons\"\nimport { Jumbotron, Container } from \"react-bootstrap\"\nimport { getExams } from \"../controllers/ExamController\"\nimport { getReportPath, studentRoutes } from \"../helpers/Paths\"\nimport history from \"../history\"\nimport MainNavbar from \"./MainNavbar\"\nimport \"./Student.css\"\nimport { getAppVersion } from \"../helpers/versionInfo\"\n\nconst { Search } = Input\nconst { Title, Text, Paragraph } = Typography\n\nexport default class Dashboard extends Component {\n constructor(props) {\n super(props)\n\n const userData = JSON.parse(localStorage.getItem(\"userData\"))\n\n this.state = {\n username: userData.userName,\n exams: [],\n showResult: false,\n selectedExamId: 0,\n examType: \"a\",\n }\n\n this.getExams = this.getExams.bind(this)\n this.showResult = this.showResult.bind(this)\n }\n\n async componentDidMount() {\n const exams = await getExams()\n this.setState({\n exams: exams.map((e) => {\n return { ...e, visible: true }\n }),\n })\n }\n\n showResult(e) {\n history.push(getReportPath(e))\n this.setState({\n showResult: true,\n selectedExamId: e,\n })\n }\n\n render() {\n return (\n
\n \n \n \n \n Welcome to Exam Portal ({getAppVersion()})\n \n \n\n
\n
\n \n this.setState({ examType: e.target.value })\n }\n className='mx-auto my-5'\n size='large'\n defaultValue='a'\n buttonStyle='solid'>\n All Exams\n New Exams\n Completed Exams\n \n
\n
\n {\n this.setState({\n exams: this.state.exams.map((e) => {\n if (\n e.name\n .toLowerCase()\n .includes(value.toLowerCase())\n )\n return {\n ...e,\n visible: true,\n }\n\n return {\n ...e,\n visible: false,\n }\n }),\n })\n }}\n placeholder='Search Exam'\n />\n
\n
\n\n
{this.getExams()}
\n
\n
\n )\n }\n\n getExams() {\n return this.state.exams\n .filter((e) => {\n if (e.taken === true && this.state.examType === \"c\") return e\n else if (e.taken === false && this.state.examType === \"b\") return e\n else if (this.state.examType === \"a\") return e\n })\n .map((e, k) => {\n if (!e.visible) return <>\n var button = null\n var btnDemo = null\n\n if (e.allowDemo) {\n if (e.taken && e.isOver) {\n btnDemo = (\n await this.takeExam(e.id, 2)}>\n Demo\n \n )\n } else if (!e.taken) {\n btnDemo = (\n await this.takeExam(e.id, 2)}>\n Demo\n \n )\n }\n }\n\n if (e.taken && (e.isOver || !e.taken)) {\n button = (\n
\n
\n await this.takeExam(e.id, 1)}>\n Take Again\n \n {btnDemo}\n
\n\n
\n this.showResult(e.takenExamId)}>\n Result\n \n
\n
\n )\n } else if (e.taken) {\n button = (\n
\n {\n history.push(`exam/${e.takenExamId}`)\n }}>\n Continue now\n \n {btnDemo}\n
\n )\n } else {\n button = (\n
\n await this.takeExam(e.id, 1)}>\n Take Exam\n \n {btnDemo}\n
\n )\n }\n\n return (\n /*displaying each exam*/\n \n
\n
\n \n {e.name}\n \n \n {e.noOfQuestions} Questions\n \n \n {e.description}\n \n
\n
\n
\n \n \n {\" \"}\n {e.durationInSec / 60} Minutes\n \n
\n
\n
\n {button}\n
\n )\n })\n }\n\n async takeExam(examId, mode) {\n history.push(studentRoutes.instructions, {\n examId: examId,\n mode: mode,\n })\n }\n}\n","import React, { Component } from \"react\"\nimport { Route, Redirect } from \"react-router-dom\"\nimport { isAuthorized } from \"../controllers/AccountController\"\nimport { adminPaths, studentRoutes } from \"./Paths\"\n\nexport default class UnAuthorizedRoute extends Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isAuthorized: false,\n isAuthorizing: true,\n }\n }\n\n componentDidMount() {\n isAuthorized().then((result) => {\n this.setState({\n isAuthorized: result,\n isAuthorizing: false,\n })\n })\n }\n\n render() {\n if (this.state.isAuthorizing) return
\n\n if (this.state.isAuthorized) {\n return (\n = 2\n ? adminPaths.dashboard\n : studentRoutes.dashboard\n }\n />\n )\n }\n\n return (\n {\n return \n }}\n />\n )\n }\n}\n","export const answerType = {\n multiple: 2,\n single: 1,\n}\n\nexport const userTypes = {\n student: 1,\n admin: 2,\n user: 3,\n}\n","import React, { Component } from \"react\"\nimport { Route, Redirect } from \"react-router-dom\"\nimport { isAuthorized } from \"../controllers/AccountController\"\nimport { isAdminAuthorized } from \"../controllers/AdminController\"\nimport { getUserType } from \"../controllers/Authorization\"\nimport { localRoutes } from \"../routes\"\nimport {\n adminPaths,\n preAdminPath,\n preStudentPath,\n studentRoutes,\n} from \"./Paths\"\nimport { userTypes } from \"./types\"\n\nexport default class AuthorizedRoute extends Component {\n constructor(props) {\n super(props)\n this.state = {\n isAuthorized: false,\n isAuthorizing: true,\n }\n }\n\n componentDidMount() {\n if (!this.props.type || this.props.type === 1) {\n isAuthorized().then((result) => {\n this.setState({\n isAuthorized: result,\n isAuthorizing: false,\n })\n })\n } else {\n isAdminAuthorized().then((result) => {\n this.setState({\n isAuthorized: result,\n isAuthorizing: false,\n })\n })\n }\n }\n\n resolvePath(path) {\n if (!path) {\n if (getUserType() === userTypes.student) return studentRoutes.dashboard\n\n return adminPaths.dashboard\n }\n\n if (\n path.startsWith(preAdminPath) &&\n getUserType() === userTypes.student\n ) {\n return studentRoutes.dashboard\n }\n\n if (\n path.startsWith(preStudentPath) &&\n getUserType() === userTypes.admin\n ) {\n return adminPaths.dashboard\n }\n\n return path\n }\n\n render() {\n if (this.state.isAuthorizing) return
\n\n if (!this.state.isAuthorized) {\n if (getUserType() !== 0) {\n if (getUserType() === userTypes.student) {\n return \n } else {\n return \n }\n }\n\n return (\n \n )\n }\n\n if (this.resolvePath(this.props.path) !== this.props.path)\n return \n\n return (\n {\n return \n }}\n />\n )\n }\n}\n","import { adminApiUrls } from \"../routes\"\nimport { doAuthorizedGetCall, doAuthorizedPostCall } from \"./AdminController\"\n\nexport async function getAllExam() {\n const response = await doAuthorizedGetCall(adminApiUrls.exam.all)\n\n return response.data\n}\n\nexport async function getExamById(id) {\n const response = await doAuthorizedGetCall(adminApiUrls.exam.get + id)\n return response.data\n}\n\nexport async function addExam(exam) {\n console.log(exam)\n if (exam.durationInSec === 0 || exam.durationInSec === \"\") {\n exam.durationInSec = 10 * 60\n }\n if (exam.maxQuestions === 0) {\n exam.maxQuestions = 10\n }\n if (exam.passingScore === 0) {\n exam.passingScore = 6\n }\n if (!exam.correlationId) {\n exam.correlationId = null\n }\n if (!exam.examType || exam.examType <= 0) {\n exam.examType = 2\n }\n if (!exam.teachers || exam.teachers === \"\") {\n exam.teachers = \"Teacher 1 | Teacher 2\"\n }\n if (!exam.instructions || exam.instructions === \"\") {\n exam.instructions = \"Test\"\n }\n if (!exam.testInformation || exam.testInformation === \"\") {\n exam.testInformation = \"Test\"\n }\n\n const response = await doAuthorizedPostCall(adminApiUrls.exam.add, exam)\n return response.data\n}\n\nexport async function updateExam(exam) {\n const response = await doAuthorizedPostCall(adminApiUrls.exam.update, exam)\n return response.data\n}\n\nexport async function deleteExam(id) {\n const response = await doAuthorizedGetCall(adminApiUrls.exam.delete + id)\n return response.data\n}\n\n//sections\nexport async function getAllSections(id) {\n const response = await doAuthorizedGetCall(\n adminApiUrls.exam.section.all + id\n )\n\n return response.data\n}\n\nexport async function addSection(section) {\n const response = await doAuthorizedPostCall(\n adminApiUrls.exam.section.add,\n section\n )\n return response.data\n}\n\nexport async function updateSection(section) {\n const response = await doAuthorizedPostCall(\n adminApiUrls.exam.section.update,\n section\n )\n return response.data\n}\n\nexport async function deleteSection(id, examId) {\n const response = await doAuthorizedGetCall(\n adminApiUrls.exam.section.delete + id + \"?examId=\" + examId\n )\n return response.data\n}\n\n//question\n\nexport async function getQuestionById(id) {\n const response = await doAuthorizedGetCall(\n adminApiUrls.exam.questions.get + id\n )\n return response.data\n}\n\nexport async function addQuestion(question) {\n const response = await doAuthorizedPostCall(\n adminApiUrls.exam.questions.add,\n question\n )\n return response.data\n}\n\nexport async function updateQuestion(question) {\n const response = await doAuthorizedPostCall(\n adminApiUrls.exam.questions.update,\n question\n )\n return response.data\n}\n\nexport async function deleteQuestion(id, examId) {\n const response = await doAuthorizedGetCall(\n adminApiUrls.exam.questions.delete + id + \"?examId=\" + examId\n )\n return response.data\n}\n\n//answers\nexport async function getAllAnswers() {\n const response = await doAuthorizedGetCall(adminApiUrls.exam.answers.all)\n\n return response.data\n}\n\nexport async function addAnswer(answer) {\n const response = await doAuthorizedPostCall(\n adminApiUrls.exam.answers.add,\n answer\n )\n return response.data\n}\n\nexport async function updateAnswer(answer) {\n const response = await doAuthorizedPostCall(\n adminApiUrls.exam.answers.update,\n answer\n )\n return response.data\n}\n\nexport async function deleteAnswer(id, qid) {\n const response = await doAuthorizedGetCall(\n adminApiUrls.exam.answers.delete + id + \"?questionId=\" + qid\n )\n return response.data\n}\n\nexport async function getAllowedGroups(id) {\n return (await doAuthorizedGetCall(adminApiUrls.exam.getAllowedGroups + id))\n .data\n}\n\nexport async function updateAllowedGroups(id, groups) {\n return (\n await doAuthorizedPostCall(\n adminApiUrls.exam.updateAllowedGroups + id,\n groups\n )\n ).data\n}\n\nexport async function getStudentResult(sid, eid) {\n return (\n await doAuthorizedGetCall(\n adminApiUrls.exam.result + sid + \"?examId=\" + eid\n )\n ).data\n}\n\nexport async function getExamList() {\n return (await doAuthorizedGetCall(adminApiUrls.exam.list)).data\n}\n\nexport async function exportQuestions(examId) {\n return (\n await doAuthorizedGetCall(adminApiUrls.exam.exportQuestions + examId)\n ).data\n}\n\nexport async function importQuestions(data) {\n return (await doAuthorizedPostCall(adminApiUrls.exam.importQuestions, data))\n .data\n}\n","import React, { Component } from \"react\"\nimport { getExamResult } from \"../controllers/ExamController\"\nimport { FormGroup, Container } from \"react-bootstrap\"\nimport {\n Button,\n PageHeader,\n Statistic,\n Typography,\n Row,\n Col,\n Collapse,\n Alert,\n} from \"antd\"\nimport { InputGroup, Label } from \"reactstrap\"\nimport { PieChart } from \"react-minimal-pie-chart\"\nimport \"./report.css\"\nimport history from \"../history\"\nimport { jsPDF } from \"jspdf\"\nimport domtoimage from \"dom-to-image\"\nimport { getStudentResult } from \"../controllers/ExamManagementController\"\n\nvar randomColor = require(\"randomcolor\")\nconst { Title, Text } = Typography\nconst { Panel } = Collapse\nconst moment = require(\"moment\")\n\nclass Report extends Component {\n constructor(props) {\n super(props)\n\n this.state = {\n result: null,\n generatingReport: false,\n generatedReport: null,\n imageHeight: 0,\n imageWidth: 0,\n type: 1,\n }\n\n this.getSections = this.getSections.bind(this)\n this.finishedGeneratingReport = this.finishedGeneratingReport.bind(this)\n }\n\n async componentDidMount() {\n var id\n\n if (this.props.examId === undefined || this.props.examId === null) {\n id = this.props.match.params.id\n\n if (id === \"demo\") {\n if (this.props.location.results) {\n localStorage.setItem(\n \"examresult\",\n JSON.stringify(this.props.location.results)\n )\n\n await this.setState({\n result: this.props.location.results,\n })\n } else {\n const res = localStorage.getItem(\"examresult\")\n if (res === null) history.push(\"/\")\n\n await this.setState({\n result: JSON.parse(res),\n })\n }\n } else {\n const result = await getExamResult(id)\n\n await this.setState({\n result: result.data,\n })\n }\n } else {\n id = this.props.examId\n if (!this.props.admin) {\n const result = await getExamResult(id)\n\n await this.setState({\n result: result.data,\n })\n } else {\n const sid = this.props.studentId\n\n const result = await getStudentResult(sid, id)\n\n await this.setState({\n result: result.data,\n type: 2,\n })\n }\n }\n\n const rc = randomColor({\n luminosity: \"dark\",\n count: this.state.result.sections.length,\n })\n this.setState({\n result: {\n ...this.state.result,\n sections: this.state.result.sections.map((s, i) => {\n return { ...s, color: rc[i] }\n }),\n },\n })\n }\n\n getSections() {\n if (!this.state.result) return <>\n\n return this.state.result.sections.map((s, i) => {\n var attr = {}\n if (!this.state.generatingReport) {\n attr = {\n defaultActiveKey: i + 1,\n }\n } else attr = { activeKey: 0 }\n return (\n \n \n {s.name}\n \n }\n key={1}\n extra={\n

\n Score:{\" \"}\n \n {s.takenScore + \" / \" + s.totalScore}\n \n

\n }>\n {this.state.generatingReport ? (\n <>\n ) : (\n
\n {s.questions.map((q, i) => {\n return (\n \n
\n Question {i + 1} \n
\n {q.takenScore} / {q.points}\n
\n
\n
{q.text}
\n {this.state.generatingReport ? (\n <>\n ) : (\n
\n {q.answers.map((a) => {\n return (\n \n \n \n \n {a.text}\n \n \n
\n {q.selectedAnswers?.includes(\n a.id\n ) ? (\n a.isCorrect ? (\n \n ) : (\n \n )\n ) : null}\n
\n \n )\n })}\n
\n )}\n
\n )\n })}\n \n )}\n \n \n )\n })\n }\n\n finishedGeneratingReport() {\n this.setState({\n generatingReport: false,\n })\n }\n\n convertPhotoImageToPdf(imgPath) {\n var doc = new jsPDF(undefined, null, null, true)\n doc.addImage(imgPath, \"PNG\", 10, 10, 0, 0, null, \"FAST\", 0)\n //if want add one page\n //doc.addPage()\n doc.save(\"testPdf.pdf\")\n }\n\n render() {\n if (!this.state.result) return <>\n\n const sectionResult = []\n\n this.state.result.sections.forEach((s) => {\n let sectionTotal = 0\n let sectionObtained = 0\n s.questions.forEach((q) => {\n q.answers.forEach((a) => {\n sectionTotal += a.points\n\n if (a.isCorrect && q?.selectedAnswers?.includes(a.id))\n sectionObtained += a.points\n })\n })\n\n sectionResult.push({\n total: sectionTotal,\n obtained: sectionObtained,\n name: s.name,\n })\n })\n return (\n <>\n \n
\n \n {\n history.push(\"/\")\n }\n : null,\n }}\n title={this.state.result?.name}\n subTitle={\"Final Report\"}\n />\n
\n \n Score:\n \n \n
\n
\n {\n await this.setState({\n generatingReport: true,\n })\n\n setTimeout(async () => {\n const scale = 2\n var elm = document.getElementById(\"report\")\n var ih = elm.offsetHeight * scale\n var iw = elm.offsetWidth * scale\n\n const dataUrl = await domtoimage.toPng(elm, {\n height: ih,\n style: {\n transform: `scale(${scale}) translate(${\n elm.offsetWidth / 2 / scale\n }px, ${elm.offsetHeight / 2 / scale}px)`,\n },\n width: iw,\n })\n\n this.setState({\n generatedReport: dataUrl,\n generatingReport: false,\n imageHeight: ih,\n imageWidth: iw,\n })\n\n var doc = new jsPDF({\n orientation: \"l\",\n unit: \"px\",\n format: [iw, ih],\n })\n\n var ph = doc.internal.pageSize.height\n var pw = doc.internal.pageSize.width\n\n doc.addImage(dataUrl, \"PNG\", 0, 0, pw, ph)\n doc.save(\"result.pdf\")\n }, 1000)\n }}>\n Export\n \n
\n
\n
\n \n \n \n
\n \n Summary\n \n \n Exam Name:  \n \n {this.state.result.name}\n \n \n \n Student Name:  \n \n {this.state.result.studentName}\n \n \n \n Date tested:  \n \n {this.state.result.date?.split(\"T\")[0] ??\n new Date().toLocaleDateString(\"en-US\")}\n \n \n \n Student Id:  \n \n {this.state.result.studentId}\n \n \n \n Result:  \n \n {this.state.result.result}\n \n \n \n Teachers:  \n \n {this.state.result.teachers}\n \n \n {/* \n Total Time:  \n 00:00\n \n \n Number of Questions:  \n \n {this.state.result.sections.length}\n \n */}\n
\n \n \n
\n
\n \n Total Score\n \n \n Final Score:  \n \n {this.state.result.takenScore} /{\" \"}\n {this.state.result.totalScore}\n \n \n {this.state.result.sections.map((a, i) => {\n return (\n \n \n {a.name} ( {a.takenScore} /{\" \"}\n {a.totalScore} ){\" \"}\n {\" \"}\n \n )\n })}\n
\n {\n return {\n title: s.name,\n value: s.takenScore,\n color: s.color,\n }\n })}\n />\n
\n \n \n
\n {this.getSections()}\n
\n
\n {this.state.generatingReport ? (\n
\n ) : (\n <>\n )}\n \n \n )\n }\n}\n\nexport default Report\n","import React, { useEffect, useState } from \"react\"\nimport { Typography } from \"antd\"\n\nconst { Title, Text } = Typography\n\nexport default function Page1({ examId, examInfo, ...props }) {\n return (\n
\n \n Exam Instructions\n \n
\n Test Information\n {examInfo.testInformation}\n
\n\n
\n Test Instructions\n {examInfo.instructions}\n
\n
\n )\n}\n","import React from \"react\"\nimport { Typography, Descriptions, Radio, Checkbox } from \"antd\"\n\nconst { Title, Text } = Typography\nconst InputChecked = (\n
\n \n \n
\n)\nconst InputUnChecked = (\n
\n \n \n
\n)\n\nexport default function Page3() {\n return (\n
\n \n Question List and Test Final Report\n \n
\n \n Before completing the test, remember you will be able to review\n the Question List. This list will show if you did or did NOT\n answer each question, or if you marked any of them for further\n review.\n \n \n The following icons will show the status mentioned above:\n \n
\n\n \n \n The question has been answered or any steps have been performed.\n Whenever you click the Next button, the question will be saved as\n Answered.\n \n \n The question has NOT been answered nor have any step been\n performed.\n \n \n\n
\n \n You can review a question as many times as you consider necessary\n by clicking on its stem or number in the Question List. Once you\n have finished the review, click on the Finish Test button to exit\n the test and obtain the final report with the results.\n \n
\n
\n )\n}\n","import React from \"react\"\nimport { Typography, Descriptions, Button } from \"antd\"\nimport {\n ClockCircleOutlined,\n ArrowLeftOutlined,\n ArrowRightOutlined,\n} from \"@ant-design/icons\"\n\nconst { Title, Text } = Typography\nconst TimeLabel = (\n
\n \n 88:88\n
\n)\nconst QuestionCount = (\n
\n 2 / 10 Question\n
\n)\nconst NextButton = (\n
\n \n
\n)\nconst PreviousButton = (\n
\n \n
\n)\nconst FinishButton = (\n
\n \n
\n)\n\nexport default function Page2() {\n return (\n
\n \n Test Interface\n \n \n The following controls will be available during the test\n \n\n \n \n The Timer displays the remaining test time.\n \n \n The Counter displays the question in which you are and the total\n number of questions of the test.\n \n \n The Next button takes you to the next question, saving your\n progress.\n \n \n The Previous button takes you to the previous question, saving\n your progress.\n \n \n The Finish button will end the test and calculate the results for\n you.\n \n \n
\n )\n}\n","import React from \"react\"\nimport { Typography, InputNumber, Switch } from \"antd\"\nimport { Accordion, Button, Card } from \"react-bootstrap\"\nimport { Input, InputGroup, InputGroupAddon, InputGroupText } from \"reactstrap\"\n\nconst { Title, Text } = Typography\n\nexport default function CustomizeExam({\n sections,\n setSections,\n updateTime,\n props,\n}) {\n function onChangeTime(value) {\n updateTime(parseInt(value))\n }\n\n const handleSectionSelection = function (sid) {\n const newSections = [\n ...sections.map((s) => {\n if (s.id !== sid) return s\n s.allow = !s.allow\n return s\n }),\n ]\n\n setSections(newSections)\n }\n\n const getSections = function () {\n if (!sections) return null\n\n return sections.map((s, i) => {\n return (\n \n handleSectionSelection(s.id)}\n checked={s.allow}\n />\n
\n {s.name}\n \n )\n })\n }\n\n return (\n
\n \n Customize Exam\n \n \n Set time for the exam\n \n Enter minutes between 1 - 60\n \n \n Select Sections for the exam\n \n Check the Section to Select\n
{getSections()}
\n
\n )\n}\n","import React, { useEffect, useRef } from \"react\"\nimport { useState } from \"react\"\nimport { Button } from \"antd\"\nimport { ArrowLeftOutlined, ArrowRightOutlined } from \"@ant-design/icons\"\nimport { Container } from \"react-bootstrap\"\nimport Page1 from \"./Page1\"\nimport Page3 from \"./Page3\"\nimport Page2 from \"./Page2\"\nimport {\n getExamInfo,\n getSectionedExam,\n startExam,\n} from \"../../controllers/ExamController\"\nimport history from \"../../history\"\nimport CustomizeExam from \"./CustomizeExam\"\nimport { getDemoPath, getExamPath } from \"../../helpers/Paths\"\nimport ExamNavBar from \"../ExamNavBar\"\n\nexport default function Instructions(props) {\n if (!props.location.state) history.push(\"/\")\n\n useEffect(() => {\n const update = async function () {\n const examData = await getSectionedExam(examId)\n\n setSections(\n examData.sections.map((s) => {\n s.allow = true\n return s\n })\n )\n setName(examData.name)\n }\n\n update()\n }, [props])\n\n const { examId, mode, back } = props.location.state\n\n const startPage = mode === 1 ? 1 : 0\n\n const [name, setName] = useState(\"\")\n const [currentPage, setCurrentPage] = useState(startPage)\n const [time, setTime] = useState(10)\n const [sections, setSections] = useState([])\n\n const [examInfo, setExamInfo] = useState({})\n\n useEffect(() => {\n const load = async function () {\n const response = await getExamInfo(examId)\n setExamInfo(response.data)\n }\n\n load()\n }, [])\n\n const pages = [\n setSections(s)}\n examId={props.location.state.examId}\n time={examInfo.durationInSec / 60}\n updateTime={(t) => {\n setTime(t)\n }}\n />,\n ,\n ,\n ,\n ]\n\n const btnBackClicked = function () {\n if (currentPage === startPage) return\n\n setCurrentPage(currentPage - 1)\n }\n\n const btnNextClicked = async function () {\n if (currentPage === 0) {\n if (!time || time <= 0) {\n alert(\"Enter correct time!\")\n return\n }\n\n if (sections.reduce((p, n) => (p + n.allow ? 1 : 0), 0) == 0) {\n alert(\"Select atleast 1 section!\")\n return\n }\n }\n\n if (currentPage === pages.length - 1) {\n const questions = []\n\n sections.forEach((s) => {\n if (s.allow) {\n s.questions.forEach((q) => questions.push(q))\n }\n })\n\n if (mode === 2) {\n history.push({\n pathname: getDemoPath(),\n exam: {\n name: name,\n questions: questions,\n totalSeconds: time * 60,\n },\n })\n }\n\n const result = await startExam(examId, mode)\n\n if (result.isSuccess) {\n if (mode === 1) history.push(getExamPath(result.data.examId))\n else\n history.push({\n pathname: getDemoPath(),\n exam: {\n name: result.data.name,\n questions: result.data.questions,\n },\n })\n } else {\n alert(\"Unknow error occured on server!\")\n }\n\n return\n }\n\n setCurrentPage(currentPage + 1)\n }\n\n return (\n <>\n \n \n {pages[currentPage]}\n \n
\n \n startPage ? false : true}>\n \n Previous\n \n\n \n {currentPage === pages.length - 1 ? \"Begin\" : \"Next\"}\n \n \n \n
\n \n )\n}\n","import React, { useState } from \"react\"\nimport { Row, Col, Typography, Button, Alert, Input } from \"antd\"\nimport { Form, FormGroup, Label } from \"reactstrap\"\nimport { adminPaths, studentRoutes } from \"../../helpers/Paths\"\nimport { Login } from \"../../controllers/AccountController\"\nimport { setLocalUserData } from \"../../controllers/Authorization\"\nimport { Log } from \"../../controllers/Logger\"\nimport history from \"../../history\"\nimport WhiteLogo from \"../../assets/Logo.png\"\nimport ReCAPTCHA from \"react-google-recaptcha\"\nimport { EyeInvisibleOutlined, EyeTwoTone } from \"@ant-design/icons\"\n\nconst { Title, Text } = Typography\n\nexport default function AdminLogin() {\n const [username, setUsername] = useState(\"\")\n const [password, setPassword] = useState(\"\")\n const [recaptchaValue, setRecaptchaValue] = useState(\"\")\n const [isError, setIsError] = useState(false)\n const [error, setError] = useState(\"\")\n const [isLoading, setIsLoading] = useState(false)\n\n return (\n
\n \n \n \n \n \n \n Admin\n
\n Login\n
\n \n Admin\n <br />\n Login\n \n history.push(studentRoutes.login)}>\n Switch to Student Login\n \n \n \n
\n \n Sign in to OnionCert.\n \n {\n e.preventDefault()\n\n setIsLoading(true)\n\n var data = await Login(\n {\n username: username,\n password: password,\n captchaResponse: recaptchaValue,\n },\n 2\n )\n setIsLoading(false)\n\n setIsError(!data.isSuccess)\n setError(data.message)\n\n if (data.isSuccess) {\n setLocalUserData(data.data)\n history.push(adminPaths.dashboard)\n }\n\n return false\n }}>\n
\n \n \n setUsername(e.target.value)}\n type='text'\n maxLength={30}\n minLength={4}\n name='email'\n id='email'\n placeholder='Email Address'\n />\n \n \n \n setPassword(e.target.value)}\n type='password'\n iconRender={(visible) =>\n visible ? (\n \n ) : (\n \n )\n }\n name='password'\n placeholder='Password'\n />\n \n setRecaptchaValue(v)}\n />\n
\n
\n \n Login\n \n \n
\n \n
\n \n
\n
\n )\n}\n","import { Store } from \"react-notifications-component\"\nimport { message } from \"antd\"\nexport function showWarningNotification(m, t = \"Warning\") {\n notify(m, t, \"warning\")\n}\n\nexport function showErrorNotification(m, t = \"Error\") {\n notify(m, t, \"danger\")\n}\n\nexport function showSuccessNotification(m, t = \"Message\") {\n notify(m, t, \"success\")\n}\n\nexport function notify(m, t, tp) {\n Store.addNotification({\n title: t,\n message: m,\n type: tp,\n insert: \"bottom\",\n container: \"top-left\",\n animationIn: [\"animate__animated\", \"animate__fadeIn\"],\n animationOut: [\"animate__animated\", \"animate__fadeOut\"],\n dismiss: {\n duration: 5000,\n onScreen: true,\n },\n })\n}\n","import { Button, Modal, Upload } from \"antd\"\nimport React, { useState } from \"react\"\nimport { UploadOutlined } from \"@ant-design/icons\"\nimport Papa from \"papaparse\"\nimport { importUsers } from \"../../../controllers/AdminController\"\nimport {\n showErrorNotification,\n showSuccessNotification,\n} from \"../../../helpers/NotificationSystem\"\n\nexport default function ImportUsers({ show, onClose, onImport, ...props }) {\n const [ready, setReady] = useState(false)\n const [rawUsers, setRawUsers] = useState({\n csv: \"\",\n })\n\n return (\n {\n const res = await importUsers(rawUsers)\n if (res.isSuccess) {\n showSuccessNotification(res.message)\n if (onImport) onImport()\n onClose()\n } else {\n showErrorNotification(res.combinedErrors)\n }\n setReady(false)\n }}\n onCancel={() => {\n if (onClose !== undefined) onClose()\n }}>\n
\n {\n const reader = new FileReader()\n\n reader.onload = async (e) => {\n setRawUsers({\n csv: e.target.result.trim(),\n })\n setReady(true)\n }\n reader.readAsText(file)\n\n // Prevent upload\n return false\n }}\n {...props}>\n \n \n
{ready ? \"Ready To Import\" : \"Select a CSV file\"}
\n
\n \n )\n}\n","import { adminApiUrls } from \"../routes\"\nimport { doAuthorizedGetCall, doAuthorizedPostCall } from \"./AdminController\"\n\nexport async function getAllStudentGroups() {\n return (await doAuthorizedGetCall(adminApiUrls.group.all)).data\n}\n\nexport async function getStudentGroupDetail(groupId) {\n return (await doAuthorizedGetCall(adminApiUrls.group.get + groupId)).data\n}\n\nexport async function deleteStudentGroup(groupId) {\n return (await doAuthorizedGetCall(adminApiUrls.group.delete + groupId)).data\n}\n\nexport async function addStudentGroup(groupData) {\n return (await doAuthorizedPostCall(adminApiUrls.group.add, groupData)).data\n}\n\nexport async function updateStudentGroup(groupData) {\n return (await doAuthorizedPostCall(adminApiUrls.group.update, groupData))\n .data\n}\n\nexport async function getGroupsOverview() {\n return (await doAuthorizedGetCall(adminApiUrls.group.overview)).data\n}\n","import React, { useState } from \"react\"\nimport { Table } from \"ant-table-extensions\"\nimport { Button, Modal, Tag } from \"antd\"\nimport { useEffect } from \"react\"\nimport { getGroupsOverview } from \"../../../../controllers/GroupManagementController\"\nimport Checkbox from \"antd/lib/checkbox/Checkbox\"\nimport { CheckCircleOutlined, SearchOutlined } from \"@ant-design/icons\"\n\nexport default function SelectStudentGroups({\n selectedGroups,\n onSelectionFinished,\n ...prop\n}) {\n const [show, setShow] = useState(false)\n const [groupOverview, setGroupOverview] = useState([])\n\n const columns = [\n {\n title: \"Id\",\n dataIndex: \"id\",\n key: \"id\",\n },\n {\n title: \"Group Name\",\n dataIndex: \"name\",\n key: \"groupName\",\n },\n {\n title: \"Select\",\n dataIndex: \"select\",\n key: \"select\",\n render: (text, record) => {\n return (\n {\n setGroupOverview(\n groupOverview.map((g) => {\n if (g.id === record.id) {\n g.selected = v.target.checked\n }\n return g\n })\n )\n }}\n />\n )\n },\n },\n ]\n\n useEffect(() => {\n const getGroupOverview = async () => {\n const groupOverview = await getGroupsOverview()\n\n if (groupOverview.isSuccess)\n setGroupOverview(\n groupOverview.data.map((group) => {\n return {\n ...group,\n selected: selectedGroups.includes(group.id),\n }\n })\n )\n }\n\n getGroupOverview()\n }, [])\n\n useEffect(() => {\n setGroupOverview(\n groupOverview.map((group) => {\n return {\n ...group,\n selected: selectedGroups.includes(group.id),\n }\n })\n )\n }, [selectedGroups])\n\n return (\n <>\n {\n if (onSelectionFinished !== null)\n onSelectionFinished(groupOverview.filter((x) => x.selected))\n\n setShow(false)\n }}\n title='Select Student Group'\n onCancel={() => setShow(false)}>\n {groupOverview.filter((g) => g.selected).length > 0 ? (\n
\n {groupOverview\n .filter((x) => x.selected)\n .map((g) => {\n return (\n {\n setGroupOverview(\n groupOverview.map((group) => {\n if (group.id === g.id) {\n return { ...group, selected: false }\n }\n return group\n })\n )\n }}>\n {g.name}\n \n )\n })}\n
\n ) : (\n <>\n )}\n ,\n },\n }}\n searchable={true}\n columns={columns}\n dataSource={groupOverview}>\n \n\n }\n onClick={() => {\n setShow(true)\n }}>\n Select Groups\n \n \n )\n}\n","import React, { useEffect, useState } from \"react\"\nimport {\n Typography,\n Col,\n Row,\n Button,\n Input,\n Tag,\n Select,\n Space,\n Switch,\n InputNumber,\n} from \"antd\"\nimport { Table } from \"ant-table-extensions\"\nimport {\n PlusOutlined,\n MenuOutlined,\n UploadOutlined,\n DownloadOutlined,\n SearchOutlined,\n SyncOutlined,\n} from \"@ant-design/icons\"\nimport history from \"../../../history\"\nimport Dropdown from \"react-dropdown\"\nimport \"react-dropdown/style.css\"\nimport \"../Dashboard.css\"\nimport {\n showErrorNotification,\n showSuccessNotification,\n} from \"../../../helpers/NotificationSystem\"\nimport {\n addUser,\n exportUsers,\n getUsers,\n removeUser,\n updateUser,\n} from \"../../../controllers/AdminController\"\nimport { getExamList } from \"../../../controllers/ExamManagementController\"\nimport ImportUsers from \"../ExamManagement/ImportUsers\"\nimport AllowedExams from \"./AllowedExams\"\nimport { downloadLocalFile } from \"../../../helpers/Helpers\"\nimport { adminPaths } from \"../../../helpers/Paths\"\nimport { getUserKey, getUserType, userTypes } from \"../../../helpers/UserHelper\"\nimport { getGroupsOverview } from \"../../../controllers/GroupManagementController\"\nimport SelectStudentGroups from \"./Student/SelectStudentGroups\"\n\nconst { Option } = Select\nconst { Title } = Typography\nconst { Search } = Input\n\nexport default function UserManagement() {\n const loadUsers = async function () {\n const el = await getExamList()\n setExamList(el.data)\n const response = await getUsers()\n setUsers(\n response.data.map((u) => {\n u.tUsername = u.username\n u.tFirstName = u.firstName\n u.tLastName = u.lastName\n u.tEmail = u.email\n u.tIsForeign = u.isForeign\n u.tCorrelationId = u.correlationId\n return u\n })\n )\n }\n const emptyModel = {\n FirstName: \"\",\n LastName: \"\",\n Username: \"\",\n Password: \"\",\n email: \"\",\n type: 1,\n removeStudentPolicy: 2,\n dateToRemove: new Date(),\n groupIds: [],\n groups: [],\n isForeign: false,\n correlationId: \"\",\n }\n const initModel = function () {\n setModel(emptyModel)\n }\n\n useEffect(() => {\n loadUsers()\n }, [])\n\n //#region Data\n\n const [examList, setExamList] = useState([])\n\n const [model, setModel] = useState(emptyModel)\n\n const [selectedFilter, setSelectedFilter] = useState(0)\n\n const filterOptions = [\n {\n label: \"Filter\",\n value: 0,\n },\n {\n label: \"Student\",\n value: 1,\n },\n {\n label: \"Admin\",\n value: 2,\n },\n {\n label: \"User\",\n value: 3,\n },\n ]\n\n const [users, setUsers] = useState([])\n\n const after = []\n\n for (var x = 0; x < 12; x++) {\n after.push({\n label: x + 1 + \" Month\",\n value: x + 1,\n })\n }\n\n const options = [\n {\n label: \"Student\",\n value: 1,\n },\n {\n label: \"Admin\",\n value: 2,\n },\n {\n label: \"User\",\n value: 3,\n },\n ]\n\n const studentRemoveOptions = [\n {\n label: \"Auto Remove\",\n value: 1,\n },\n {\n label: \"Keep Student\",\n value: 2,\n },\n ]\n\n const [showImportDialog, setShowImportDialog] = useState(false)\n\n //#endregion\n\n //#region Handlers\n\n const closeImportDialog = () => {\n setShowImportDialog(false)\n }\n\n const handleInput = function (name, value) {\n setModel({\n ...model,\n [name]: value,\n })\n }\n\n const addNewUser = async function () {\n const ms = {\n ...model,\n groupIds: model.groups.map((g) => g.id),\n }\n\n const response = await addUser(ms)\n\n if (!response.isSuccess) {\n if (response.errors) {\n let errors = \"\"\n response.errors.forEach((a) => {\n errors += a + \"\\n\"\n })\n\n showErrorNotification(errors)\n } else if (response.message) {\n showErrorNotification(response.message)\n }\n } else {\n initModel()\n await loadUsers()\n showSuccessNotification(response.message)\n }\n }\n\n const setDeletingStatus = function (id, status) {\n setUsers(\n users.map((u) => {\n if (u.id === id) {\n return {\n ...u,\n deleting: status,\n }\n }\n return u\n })\n )\n }\n\n const columns = [\n {\n title: \"Name\",\n dataIndex: \"name\",\n key: \"name\",\n render: (text, row) => (\n

\n {row.firstName} {row.lastName}\n

\n ),\n },\n {\n title: \"Username\",\n dataIndex: \"username\",\n key: \"username\",\n },\n {\n title: \"Email\",\n dataIndex: \"email\",\n key: \"email\",\n },\n {\n title: \"Type\",\n dataIndex: \"userType\",\n key: \"userType\",\n render: (text, row) =>\n row.userType === getUserKey(\"student\") ? (\n Student\n ) : row.userType === getUserKey(\"admin\") ? (\n Admin\n ) : (\n User\n ),\n },\n {\n title: \"Action\",\n dataIndex: \"view\",\n key: \"view\",\n render: (text, row) => (\n <>\n \n {\n history.push(\n adminPaths.userManagement +\n \"/user/\" +\n getUserType(row.userType).toLowerCase() +\n \"/\" +\n row.id\n )\n }}>\n View\n \n {row.deleting ? (\n } color='error'>\n Deleting\n \n ) : (\n {\n setDeletingStatus(row.id, true)\n const response = await removeUser(\n row.id,\n row.userType\n )\n setDeletingStatus(row.id, false)\n if (response.isSuccess) {\n setUsers(users.filter((u) => u.id !== row.id))\n showSuccessNotification(response.message)\n } else {\n showErrorNotification(response.message)\n }\n }}>\n delete\n \n )}\n \n \n ),\n },\n ]\n\n //#endregion\n\n return (\n
\n
\n
\n \n User Management\n \n
\n
\n }\n type='dashed'\n size='large'\n onClick={async (c) => {\n const users = await exportUsers()\n\n if (users.isSuccess) {\n downloadLocalFile(\"csv\", users.data, \"users\")\n showSuccessNotification(\n \"CSV file exported successfully\"\n )\n }\n }}>\n Export Users\n \n
\n\n
\n }\n type='dashed'\n size='large'\n onClick={async (c) => setShowImportDialog(true)}>\n Import Users\n \n
\n
\n
\n
\n {\n await loadUsers()\n }}\n onClose={closeImportDialog}\n show={showImportDialog}\n />\n \n Add User\n \n \n \n \n \n handleInput(\"FirstName\", e.target.value)\n }\n />\n \n \n \n \n handleInput(\"LastName\", e.target.value)\n }\n />\n \n \n \n \n \n
\n \n handleInput(\"Username\", e.target.value)\n }\n />\n \n \n \n \n
\n \n handleInput(\"Password\", e.target.value)\n }\n />\n \n \n
\n \n \n \n handleInput(\"email\", e.target.value)}\n />\n \n \n \n {\n handleInput(\"type\", e)\n }}\n placeholder='Select an option'>\n {options.map((o) => {\n return (\n \n )\n })}\n \n \n \n \n \n
\n \n {\n handleInput(\"correlationId\", e.target.value)\n }}\n />\n
\n \n \n
\n \n {\n handleInput(\"isForeign\", e)\n }}\n />\n
\n \n
\n \n {model.type === 1 ? (\n <>\n \n \n {\n handleInput(\"removeStudentPolicy\", e)\n }}\n placeholder='Select an option'>\n {studentRemoveOptions.map((o) => (\n \n ))}\n \n \n {model.removeStudentPolicy === 1 ? (\n \n \n {\n var d = new Date()\n d.setMonth(d.getMonth() + e)\n\n setModel({\n ...model,\n dateToRemove: d,\n })\n }}\n defaultValue={after[0].value}\n placeholder='After Month'>\n {after.map((o) => (\n \n ))}\n \n \n ) : (\n <>\n )}\n \n ) : (\n <>\n )}\n \n {model.type === 1 ? (\n <>\n {model.groups.length > 0 ? (\n \n \n
\n {model.groups.map((g) => {\n return {g.name}\n })}\n
\n \n
\n ) : (\n <>\n )}\n \n \n {\n setModel({ ...model, groups: gs })\n }}\n />\n \n \n \n ) : (\n <>\n )}\n
\n
\n\n
\n }\n type='primary'\n size='large'\n onClick={async (c) => await addNewUser()}>\n Add New User\n \n
\n
\n
\n\n
\n
\n \n setSelectedFilter(e.value)}\n />\n
\n ,\n },\n }}\n searchable={true}\n columns={columns}\n dataSource={users\n .filter((e) => {\n if (selectedFilter === 0) return e\n\n if (e.userType === selectedFilter) return e\n })\n .sort((u) => u.username)}\n />\n
\n
\n
\n )\n}\n","import React from \"react\"\nimport { Modal } from \"antd\"\nimport Report from \"../../Report\"\n\nexport default function ViewStudentResult({\n show,\n examId,\n onClose,\n studentId,\n from,\n ...props\n}) {\n return (\n {\n if (onClose !== null) onClose()\n }}\n footer={null}>\n \n \n )\n}\n","import React, { useEffect, useState } from \"react\"\nimport { Button, Table } from \"antd\"\nimport ViewStudentResult from \"./ViewStudentResult\"\n\nexport default function StudentTakenExam({\n from = \"admin\",\n exams,\n studentId,\n ...props\n}) {\n const [takenExams, setTakenExams] = useState([])\n useEffect(() => {\n setTakenExams(exams)\n }, [exams])\n\n const showExamResult = (id, show) => {\n setTakenExams(\n takenExams.map((t) => {\n if (t.id === id) {\n return {\n ...t,\n showResult: show,\n }\n }\n\n return t\n })\n )\n }\n\n const columns = [\n {\n title: \"Exam Name\",\n dataIndex: \"name\",\n key: \"name\",\n },\n {\n title: \"Exam Date\",\n dataIndex: \"startTime\",\n key: \"startDate\",\n },\n {\n title: \"Report\",\n render: (text, record) => {\n return (\n <>\n {\n showExamResult(record.id, false)\n }}\n />\n \n \n )\n },\n },\n ]\n\n return \n}\n","import React, { useEffect, useState } from \"react\"\nimport { Button, Input, Tag, Table, Select } from \"antd\"\nimport { updateAllowedExam } from \"../../../../controllers/AdminController\"\nimport { showErrorNotification } from \"../../../../helpers/NotificationSystem\"\n\nconst { Option } = Select\n\nexport default function EditorAllowedExams({\n allowedExams,\n examList,\n userId,\n ...props\n}) {\n const [exams, setExams] = useState([])\n\n useEffect(() => {\n setExams(allowedExams)\n }, [allowedExams])\n\n const col = [\n {\n title: \"Exam\",\n dataIndex: \"name\",\n key: \"name\",\n },\n {\n title: \"Action\",\n render: (text, record) => (\n {\n var response = await updateAllowedExam(\n exams.filter((e) => e.id !== record.id).map((e) => e.id),\n userId\n )\n\n if (response.isSuccess) {\n setExams(exams.filter((e) => e.id !== record.id))\n }\n }}\n style={{ cursor: \"pointer\" }}>\n Delete\n \n ),\n },\n ]\n\n const [selectedExam, setSelectedExam] = useState(null)\n\n return (\n
\n
\n 0 ? examList[0].id : null}\n value={selectedExam}\n placeholder='Select Exam To Allow'\n onChange={(value) => {\n setSelectedExam(value)\n }}\n className='flex-grow-1 mr-3'>\n {examList.map((e) => (\n \n ))}\n \n {\n if (selectedExam === null) {\n showErrorNotification(\"Select Exam\")\n return\n }\n var ue = [...exams.map((e) => e.id), selectedExam]\n const response = await updateAllowedExam(ue, userId)\n\n if (response.isSuccess) {\n if (exams.filter((a) => a.id === selectedExam).length > 0)\n return\n setExams([\n ...exams,\n examList.filter((e) => e.id === selectedExam)[0],\n ])\n }\n }}>\n Add\n \n
\n
\n
\n \n \n )\n}\n","import React, { useEffect, useState } from \"react\"\nimport {\n Typography,\n PageHeader,\n Breadcrumb,\n Col,\n Row,\n Button,\n Input,\n Select,\n Tag,\n Switch,\n InputNumber,\n} from \"antd\"\nimport { EditFilled, DeleteFilled } from \"@ant-design/icons\"\nimport history from \"../../../history\"\nimport {\n getUserDetail,\n removeUser,\n updateUser,\n} from \"../../../controllers/AdminController\"\nimport { getExamList } from \"../../../controllers/ExamManagementController\"\nimport {\n showErrorNotification,\n showSuccessNotification,\n} from \"../../../helpers/NotificationSystem\"\nimport StudentTakenExam from \"./StudentTakenExam\"\nimport EditorAllowedExams from \"./Editor/EditorAllowedExams\"\nimport \"react-dropdown/style.css\"\nimport { getUserKey } from \"../../../helpers/UserHelper\"\nimport SelectStudentGroups from \"./Student/SelectStudentGroups\"\n\nexport default function UserInformation(props) {\n let { type, id } = props.match.params\n const { Title } = Typography\n const { Option } = Select\n const [loading, setLoading] = useState(false)\n\n const [examList, setExamList] = useState([])\n\n useEffect(() => {\n const f = async () => {\n const detail = await getUserDetail(getUserKey(type), id)\n if (detail.isSuccess) {\n const user = detail.data\n const x = {\n firstName: user.firstName,\n lastName: user.lastName,\n username: user.username,\n email: user.email,\n type: getUserKey(type),\n password: \"\",\n removeStudentPolicy: 2,\n dateToRemove: new Date(),\n customData: user.customData,\n id: user.id,\n allowedExams: user.allowedExams,\n groupIds: user.groups?.map((g) => g.id) ?? [],\n groups: user.groups ?? [],\n isForeign: user.isForeign,\n correlationId: user.correlationId,\n }\n setModel(x)\n } else {\n history.goBack()\n }\n\n const el = await getExamList()\n setExamList(el.data)\n }\n f()\n }, [])\n const [model, setModel] = useState({\n firstName: \"\",\n lastName: \"\",\n username: \"\",\n email: \"\",\n type: getUserKey(type),\n password: \"\",\n removeStudentPolicy: 2,\n dateToRemove: new Date(),\n groupIds: [],\n customData: {\n takenExams: [],\n },\n groups: [],\n isForeign: false,\n correlationId: \"\",\n })\n\n const after = []\n\n for (var x = 0; x < 12; x++) {\n after.push({\n label: x + 1 + \" Month\",\n value: x + 1,\n })\n }\n\n const options = [\n {\n label: \"Student\",\n value: 1,\n },\n {\n label: \"Admin\",\n value: 2,\n },\n {\n label: \"User\",\n value: 3,\n },\n ]\n\n const handleInput = function (name, value) {\n setModel({\n ...model,\n [name]: value,\n })\n }\n\n const updateUserData = async function () {\n setLoading(true)\n const ms = {\n ...model,\n groupIds: model.groups.map((g) => g.id),\n }\n const response = await updateUser(ms)\n\n setLoading(false)\n if (!response.isSuccess) {\n if (response.errors?.length > 0) {\n let error = \"\"\n response.errors.forEach((e, k) => {\n error += k + 1 + \". \" + e + \"\\n\\n\"\n })\n showErrorNotification(error)\n } else if (response.message) {\n showErrorNotification(response.message)\n }\n } else {\n showSuccessNotification(response.message)\n }\n }\n return (\n
\n
\n history.goBack()}\n className='p-0'\n title='User Information'\n />\n \n User Management\n User Information\n \n
\n \n Update User\n \n \n
\n \n \n handleInput(\"firstName\", e.target.value)\n }\n />\n \n \n \n \n handleInput(\"lastName\", e.target.value)\n }\n />\n \n \n \n \n \n\n \n handleInput(\"username\", e.target.value)\n }\n />\n \n \n \n \n \n handleInput(\"password\", e.target.value)\n }\n />\n \n \n \n \n \n \n handleInput(\"email\", e.target.value)}\n />\n \n \n \n {\n handleInput(\"type\", e)\n }}\n placeholder='Select an option'>\n {options.map((o) => {\n return (\n \n )\n })}\n \n \n \n \n \n
\n \n {\n handleInput(\"correlationId\", e.target.value)\n }}\n />\n
\n \n \n
\n \n {\n handleInput(\"isForeign\", e)\n }}\n />\n
\n \n \n {model.type === 1 ? (\n <>\n \n \n
\n {model.groups.map((g) => {\n return {g.name}\n })}\n
\n \n \n \n \n {\n setModel({\n ...model,\n groups: gs,\n })\n }}\n />\n \n \n \n ) : (\n <>\n )}\n\n
\n
\n }\n size='large'\n danger\n onClick={async () => {\n const r = await removeUser(model.id, model.type)\n if (r.isSuccess) {\n showSuccessNotification(r.message)\n history.goBack()\n } else showErrorNotification(r.message ?? \"Error\")\n }}>\n Delete User\n \n\n }\n type='primary'\n size='large'\n onClick={async (c) => await updateUserData()}>\n Update User\n \n
\n
\n \n\n {model.type === 1 ? (\n \n ) : model.type === 3 ? (\n \n ) : (\n <>\n )}\n \n \n )\n}\n","export var Permissions\n\nexport function updatePermission(p) {\n Permissions = p\n}\n","import { CheckOutlined, CloseOutlined } from \"@ant-design/icons\"\nimport { Button } from \"antd\"\nimport history from \"../history\"\nimport React, { Component } from \"react\"\nimport { adminPaths } from \"./Paths\"\n\nexport const examViewColumns = [\n {\n title: \"Id\",\n dataIndex: \"id\",\n key: \"id\",\n },\n {\n title: \"Name\",\n dataIndex: \"name\",\n key: \"name\",\n },\n {\n title: \"Duration\",\n dataIndex: \"durationInSec\",\n key: \"durationInSec\",\n render: (text, row) => {row.durationInSec / 60} mins,\n },\n {\n title: \"Total Sections\",\n dataIndex: \"sections\",\n key: \"sections\",\n render: (text, row) => {row.sections.length},\n },\n {\n title: \"Total Questions\",\n dataIndex: \"questions\",\n key: \"question\",\n render: (text, row) => {row.questions.length},\n },\n {\n title: \"Demo\",\n dataIndex: \"allowDemo\",\n key: \"allowDemo\",\n render: (text, row) => (\n {row.allowDemo ? : }\n ),\n },\n {\n title: \"Detail\",\n dataIndex: \"view\",\n key: \"view\",\n render: (text, row) => (\n <>\n \n history.push({\n pathname: adminPaths.examManagement + \"/exam/\" + row.id,\n row,\n })\n }>\n View\n \n \n ),\n },\n]\n","import React, { Component } from \"react\"\nimport { Row, Col, Input, Button, Typography, InputNumber, Switch } from \"antd\"\nimport { Table } from \"ant-table-extensions\"\nimport {\n addExam,\n getAllExam,\n} from \"../../../controllers/ExamManagementController\"\nimport {\n showErrorNotification,\n showSuccessNotification,\n} from \"../../../helpers/NotificationSystem\"\nimport \"../Dashboard.css\"\nimport { examViewColumns } from \"../../../helpers/Columns\"\nimport { Permissions } from \"../../../helpers/Permissions\"\n\nconst { Title } = Typography\nconst { TextArea } = Input\n\nexport default class ExamManagementView extends Component {\n constructor(props) {\n super(props)\n\n this.state = {\n newExam: {\n id: 0,\n durationInSec: 0,\n name: \"\",\n allowDemo: false,\n description: \"\",\n allowAllStudents: true,\n testInformation: \"\",\n instructions: \"\",\n passingScore: 0,\n maxQuestions: 10,\n isForeign: false,\n correlationId: \"\",\n IsExamCert: false,\n teachers: \"\",\n examType: 0,\n isReady: false,\n },\n exams: [],\n updateExam: [],\n }\n\n this.handleExamInput = this.handleExamInput.bind(this)\n this.handleExamUpdateInput = this.handleExamUpdateInput.bind(this)\n }\n\n async componentDidMount() {\n const exams = await getAllExam()\n this.setState({\n exams: exams.data.map((e) => {\n e.updated = {\n id: e.id,\n durationInSec: e.durationInSec,\n name: e.name,\n allowDemo: e.allowDemo,\n description: e.description,\n testInformation: e.testInformation,\n instructions: e.instructions,\n passingScore: e.passingScore,\n maxQuestions: 10,\n isForeign: e.isForeign,\n correlationId: e.correlationId,\n IsExamCert: e.IsExamCert,\n teachers: e.teachers,\n examType: e.examType,\n isReady: e.isReady,\n }\n\n e.newSection = {\n id: 0,\n examId: e.id,\n name: \"\",\n }\n e.questions = e.sections.reduce((a, b) => a.concat(b.questions), [])\n\n e.showAllowedStudents = false\n e.showImportQuestions = false\n\n return e\n }),\n })\n }\n\n handleExamInput(name, value) {\n this.setState({\n newExam: {\n ...this.state.newExam,\n [name]: value,\n },\n })\n }\n\n handleExamUpdateInput(id, name, value) {\n this.setState({\n exams: this.state.exams.map((e) => {\n if (e.id === id) {\n e.updated = { ...e.updated, [name]: value }\n }\n return e\n }),\n })\n }\n\n render() {\n return (\n
\n
\n \n Exam Management\n \n\n \n \n Create New Exam\n \n \n
\n \n \n this.handleExamInput(\n e.target.name,\n e.target.value\n )\n }\n />\n \n \n \n \n this.handleExamInput(\"maxQuestions\", e)\n }\n />\n \n \n \n \n this.handleExamInput(\"durationInSec\", e * 60)\n }\n />\n \n \n \n \n this.handleExamInput(\"passingScore\", parseInt(e))\n }\n />\n \n \n \n \n \n \n this.handleExamInput(\n e.target.name,\n e.target.value\n )\n }\n />\n \n \n \n \n this.handleExamInput(\n e.target.name,\n e.target.value\n )\n }\n />\n \n \n \n \n
\n \n \n this.handleExamInput(\n \"teachers\",\n e.target.value\n )\n }\n />\n
\n \n \n
\n \n \n this.handleExamInput(\n \"correlationId\",\n e.target.value\n )\n }\n />\n
\n \n \n
\n \n \n this.handleExamInput(\"examType\", parseInt(e))\n }\n />\n
\n \n \n\n \n \n
\n \n {\n this.handleExamInput(\"allowDemo\", e)\n }}\n />\n
\n
\n \n {\n this.handleExamInput(\"allowAllStudents\", e)\n }}\n />\n
\n
\n \n {\n this.handleExamInput(\"IsExamCert\", e)\n }}\n />\n
\n
\n \n {\n this.handleExamInput(\"isForeign\", e)\n }}\n />\n
\n\n
\n \n {\n this.handleExamInput(\"isReady\", e)\n }}\n />\n
\n \n\n \n {\n const response = await addExam(this.state.newExam)\n\n if (response.isSuccess) {\n this.setState({\n exams: [\n ...this.state.exams,\n {\n ...response.data,\n updated: {\n id: response.data.id,\n durationInSec:\n response.data.durationInSec,\n name: response.data.name,\n allowDemo: response.data.allowDemo,\n description:\n response.data.description,\n passingScore:\n response.data.passingScore,\n maxQuestions: 10,\n isForeign: response.data.isForeign,\n correlationId:\n response.data.correlationId,\n IsExamCert:\n response.data.IsExamCert,\n teachers: response.data.teachers,\n examType: response.data.examType,\n },\n questions:\n response.data.sections.reduce(\n (a, b) => a.concat(b.questions),\n []\n ),\n },\n ],\n newExam: {\n id: 0,\n durationInSec: 0,\n name: \"\",\n allowDemo: false,\n description: \"\",\n allowAllStudents: true,\n maxQuestions: 10,\n isForeign: false,\n correlationId: \"\",\n IsExamCert: false,\n teachers: \"\",\n examType: 0,\n },\n })\n showSuccessNotification(\"Exam Added\")\n } else\n showErrorNotification(response.combinedErrors)\n }}>\n Add New Exam\n \n \n \n \n\n
\n
\n \n
\n \n
\n \n \n )\n }\n}\n","import { Checkbox, Modal } from \"antd\"\nimport React, { useEffect, useState } from \"react\"\nimport {\n getAllowedGroups,\n updateAllowedGroups,\n} from \"../../../controllers/ExamManagementController\"\nimport { showErrorNotification } from \"../../../helpers/NotificationSystem\"\n\nexport default function AllowedStudents({ examId, show, onClose, ...props }) {\n const [allowedStudents, setAllowedStudents] = useState([])\n const [updating, setUpdating] = useState(true)\n\n useEffect(() => {\n const update = async () => {\n const allowedStudents = await getAllowedGroups(examId)\n setAllowedStudents(allowedStudents.data)\n setUpdating(false)\n }\n\n update()\n }, [])\n\n return (\n {\n setUpdating(true)\n\n const response = await updateAllowedGroups(\n examId,\n allowedStudents.filter((m) => m.allowed).map((s) => s.id)\n )\n\n setUpdating(false)\n\n if (response.isSuccess) {\n if (onClose !== null) {\n onClose()\n }\n } else {\n showErrorNotification(\"Error\")\n }\n }}\n onCancel={() => {\n if (onClose !== null) {\n onClose()\n }\n }}>\n {allowedStudents.map((a, k) => {\n return (\n {\n setAllowedStudents(\n allowedStudents.map((ax) => {\n if (ax.id === a.id) {\n ax.allowed = v.target.checked\n }\n return ax\n })\n )\n }}>\n {a.name}\n \n )\n })}\n \n )\n}\n","import { UploadOutlined } from \"@ant-design/icons\"\nimport { Button, Modal, Upload } from \"antd\"\nimport React, { useState } from \"react\"\nimport { importQuestions } from \"../../../controllers/ExamManagementController\"\nimport {\n showErrorNotification,\n showSuccessNotification,\n} from \"../../../helpers/NotificationSystem\"\n\nexport default function ImportQuestions({\n examId,\n onUpload,\n show,\n onClose,\n ...props\n}) {\n const [ready, setReady] = useState(false)\n const [importExamViewModel, setImportExamViewModel] = useState({\n examId: examId,\n csv: \"\",\n })\n\n return (\n {\n const response = await importQuestions(importExamViewModel)\n\n if (response.isSuccess) {\n showSuccessNotification(response.message)\n onUpload?.()\n onClose()\n } else showErrorNotification(response.combinedErrors)\n }}\n onCancel={() => {\n if (onClose) onClose()\n }}>\n
\n {\n const reader = new FileReader()\n\n reader.onload = async (e) => {\n setImportExamViewModel({\n ...importExamViewModel,\n csv: e.target.result.trim(),\n })\n setReady(true)\n }\n reader.readAsText(file, \"latin1\")\n\n // Prevent upload\n return false\n }}\n {...props}>\n \n \n
{ready ? \"Ready To Import\" : \"Select a CSV file\"}
\n
\n \n )\n}\n","import {\n Button,\n Col,\n Collapse,\n Divider,\n Input,\n Popconfirm,\n Row,\n Space,\n Switch,\n Upload,\n} from \"antd\"\nimport { Table } from \"ant-table-extensions\"\nimport Checkbox from \"antd/lib/checkbox/Checkbox\"\nimport TextArea from \"antd/lib/input/TextArea\"\nimport React, { useEffect, useState } from \"react\"\nimport {\n addAnswer,\n deleteAnswer,\n updateAnswer,\n} from \"../../../controllers/ExamManagementController\"\nimport { FaCheck, FaTimes } from \"react-icons/fa\"\nimport {\n showErrorNotification,\n showSuccessNotification,\n} from \"../../../helpers/NotificationSystem\"\nimport Modal from \"antd/lib/modal/Modal\"\n\nconst { Panel } = Collapse\n\nexport default function Answers({\n examId,\n questionId,\n sectionId,\n questionsAnswers,\n onUpdate,\n ...props\n}) {\n const [newAnswer, setNewAnswer] = useState({\n id: 0,\n text: \"\",\n isCorrect: false,\n label: \"\",\n questionId: questionId,\n wrongDescription: \"\",\n rightDescription: \"\",\n })\n\n const handleInput = (name, value) => {\n setNewAnswer({\n ...newAnswer,\n [name]: value,\n })\n }\n\n const handleUpdateInput = (id, name, value) => {\n setAnswers(\n answers.map((a) => {\n if (a.id === id) {\n const x = {\n ...a,\n updated: {\n ...a.updated,\n [name]: value,\n },\n }\n return x\n }\n\n return a\n })\n )\n }\n\n const getUpdateModel = (a) => {\n return {\n id: a.id,\n text: a.text,\n isCorrect: a.isCorrect,\n label: a.label,\n questionId: questionId,\n wrongDescription: a.wrongDescription,\n rightDescription: a.rightDescription,\n }\n }\n\n const [answers, setAnswers] = useState(\n questionsAnswers.map((a) => {\n a.updated = getUpdateModel(a)\n\n a.showUpdateDialog = false\n\n return a\n })\n )\n\n const setModalVisibility = (id, visible) => {\n setAnswers(\n answers.map((a) => {\n if (a.id === id) {\n a = {\n ...a,\n showUpdateDialog: visible,\n }\n }\n\n return a\n })\n )\n }\n\n const getAnswers = () => {\n const columns = [\n {\n title: \"Label\",\n dataIndex: \"label\",\n key: \"label\",\n },\n {\n title: \"Text\",\n dataIndex: \"text\",\n key: \"text\",\n },\n {\n title: \"Correct\",\n dataIndex: \"isCorrect\",\n key: \"isCorrect\",\n render: (c) => (c ? : ),\n },\n {\n title: \"Actions\",\n key: \"actions\",\n render: (text, record) => {\n return (\n \n {\n setModalVisibility(record.id, true)\n }}>\n Update\n \n\n {\n setModalVisibility(record.id, false)\n }}\n onOk={async () => {\n const response = await updateAnswer(record.updated)\n\n if (response.isSuccess) {\n showSuccessNotification(\"Question Updated!\")\n const x = answers.map((a) => {\n if (a.id == record.id) {\n const na = response.data\n\n na.updated = getUpdateModel(na)\n return na\n }\n\n return a\n })\n setAnswers(x)\n onUpdate(x)\n } else\n showErrorNotification(\n \"Unable to updated question!\"\n )\n }}\n visible={record.showUpdateDialog}>\n
\n \n
Label\n Text\n Is Correct?\n \n \n \n \n handleUpdateInput(\n record.id,\n e.target.name,\n e.target.value\n )\n }\n />\n \n \n \n handleUpdateInput(\n record.id,\n e.target.name,\n e.target.value\n )\n }\n />\n \n \n {\n handleUpdateInput(\n record.id,\n e.target.name,\n e.target.checked\n )\n }}\n />\n \n \n \n \n \n handleUpdateInput(\n record.id,\n e.target.name,\n e.target.value\n )\n }\n />\n \n \n {\n handleUpdateInput(\n record.id,\n e.target.name,\n e.target.value\n )\n }}\n />\n \n \n \n \n {\n const response = await deleteAnswer(\n record.id,\n questionId\n )\n\n if (response.isSuccess) {\n const updatedAnswer = answers.filter(\n (a) => a.id !== record.id\n )\n setAnswers(updatedAnswer)\n onUpdate(updatedAnswer)\n } else {\n showErrorNotification(\"Unable to delete answer\")\n }\n }}\n okText='Yes'\n cancelText='No'>\n Delete\n \n \n )\n },\n },\n ]\n\n return (\n \n )\n }\n\n return (\n
\n \n
\n \n handleInput(e.target.name, e.target.value)}\n />\n \n \n \n handleInput(e.target.name, e.target.value)}\n />\n \n \n \n {\n handleInput(\"isCorrect\", e)\n }}>\n Is Correct ?\n \n \n \n \n \n \n handleInput(e.target.name, e.target.value)}\n />\n \n \n \n handleInput(e.target.name, e.target.value)}\n />\n \n \n
\n {\n const response = await addAnswer(newAnswer)\n if (response.isSuccess) {\n const updatedAnswers = [\n {\n ...response.data,\n updated: getUpdateModel(response.data),\n },\n ...answers,\n ]\n setAnswers(updatedAnswers)\n onUpdate(updatedAnswers)\n } else {\n showErrorNotification(response.combinedErrors)\n }\n }}>\n Add Answer\n \n
\n Answers\n {getAnswers()}\n \n )\n}\n","import {\n Button,\n Col,\n Image,\n Input,\n Row,\n Select,\n Typography,\n Upload,\n} from \"antd\"\nimport React from \"react\"\nimport { useState } from \"react\"\nimport {\n deleteQuestion,\n updateQuestion,\n} from \"../../../controllers/ExamManagementController\"\nimport {\n showErrorNotification,\n showSuccessNotification,\n} from \"../../../helpers/NotificationSystem\"\nimport Answers from \"./Answers\"\n\nconst { Search } = Input\n\nconst { Title, Text } = Typography\n\nexport default function EditQuestion({\n examId,\n question,\n onQuestionDeleted,\n onQuestionUpdated,\n sectionId,\n ...props\n}) {\n const [updatedQuestion, setUpdatedQuestion] = useState({\n ...question,\n examId: examId,\n })\n\n const handleChange = (n, e) => {\n setUpdatedQuestion({\n ...updatedQuestion,\n [n]: e.target.value,\n })\n }\n\n return (\n
\n
\n \n Update Question\n \n \n
\n Question Text:\n }\n onChange={(e) => {\n handleChange(\"text\", e)\n }}\n />\n \n \n Points:}\n onChange={(e) => {\n handleChange(\"points\", e)\n }}\n />\n \n \n handleChange(\"answerType\", parseInt(v))}>\n Single\n Multiple\n \n \n \n\n
\n
\n
\n \n
\n {}}\n onChange={(info) => {\n const reader = new FileReader()\n reader.addEventListener(\"load\", () =>\n setUpdatedQuestion({\n ...updatedQuestion,\n imageUrl: reader.result,\n })\n )\n reader.readAsDataURL(info.file.originFileObj)\n }}>\n \n \n
\n\n
\n {\n const response = await deleteQuestion(\n question.id,\n examId\n )\n\n if (!response.isSuccess) {\n showErrorNotification(response.combinedErrors)\n } else onQuestionDeleted(question.id)\n }}>\n Delete Question\n \n {\n const response = await updateQuestion(updatedQuestion)\n\n if (response.isSuccess) {\n onQuestionUpdated(response.data)\n\n showSuccessNotification(\"Question Updated\")\n } else {\n showErrorNotification(response.combinedErrors)\n }\n }}>\n Update Question\n \n
\n
\n \n
\n \n Add Options\n \n {\n setUpdatedQuestion({ ...updatedQuestion, answers: answers })\n }}\n questionId={updatedQuestion.id}\n questionsAnswers={updatedQuestion.answers}\n />\n
\n \n )\n}\n","import {\n Row,\n Col,\n Typography,\n Button,\n Divider,\n Image,\n Input,\n Select,\n Upload,\n Alert,\n Modal,\n} from \"antd\"\nimport { EditTwoTone } from \"@ant-design/icons\"\nimport { InputGroup, Label } from \"reactstrap\"\nimport React, { useState } from \"react\"\nimport { addQuestion } from \"../../../controllers/ExamManagementController\"\nimport {\n showErrorNotification,\n showSuccessNotification,\n} from \"../../../helpers/NotificationSystem\"\nimport EditQuestion from \"./EditQuestion\"\nconst { Search } = Input\n\nconst { Title, Text } = Typography\n\nexport default function Questions({\n sectionId,\n examId,\n sectionQuestions,\n ...props\n}) {\n const [newQuestion, setNewQuestion] = useState({\n id: 0,\n text: \"\",\n examId: examId,\n sectionId: sectionId,\n answerType: 1,\n imageUrl: \"\",\n points: 1,\n })\n const [questions, setQuestions] = useState(\n sectionQuestions.map((q) => {\n q.showEditQuestion = false\n q.visble = true\n\n return q\n })\n )\n\n return (\n <>\n
\n
\n \n
\n \n Question text:{\" \"}\n \n }\n onChange={(e) => {\n setNewQuestion({\n ...newQuestion,\n text: e.target.value,\n })\n }}\n />\n \n \n Points: \n }\n min='1'\n value={newQuestion.points}\n placeholder='Points'\n onChange={(e) => {\n setNewQuestion({\n ...newQuestion,\n points: e.target.value,\n })\n }}\n />\n \n \n \n setNewQuestion({\n ...newQuestion,\n answerType: parseInt(v),\n })\n }>\n Single\n Multiple\n \n \n \n\n
\n
\n \n
\n {}}\n onChange={(info) => {\n const reader = new FileReader()\n reader.addEventListener(\"load\", () =>\n setNewQuestion({\n ...newQuestion,\n imageUrl: reader.result,\n })\n )\n reader.readAsDataURL(info.file.originFileObj)\n }}>\n \n \n {\n const response = await addQuestion(newQuestion)\n if (response.isSuccess) {\n showSuccessNotification(\"Question Added\")\n setQuestions([\n ...questions,\n {\n ...response.data,\n updated: {\n id: response.data.id,\n text: response.data.text,\n examId: examId,\n sectionId: sectionId,\n answerType: response.data.answerType,\n imageUrl: \"\",\n points: response.data.points,\n },\n showEditQuestion: false,\n visble: true,\n },\n ])\n } else showErrorNotification(\"Unable to add question\")\n }}>\n Add New Question\n \n
\n \n\n \n Questions List\n \n
\n {\n setQuestions(\n questions.map((s) => {\n if (\n s.text.toLowerCase().includes(value.toLowerCase())\n ) {\n return {\n ...s,\n visble: true,\n }\n }\n\n return {\n ...s,\n visble: false,\n }\n })\n )\n }}\n />\n
\n\n {questions.map((q, k) => {\n if (!q.visble) return <>\n return (\n \n
\n
\n \n Question {k + 1}\n \n Points ({q.points})\n
\n
\n {\n setQuestions(\n questions.map((qs) => {\n if (qs.id === q.id) {\n return {\n ...qs,\n showEditQuestion: true,\n }\n }\n return qs\n })\n )\n }}\n className='d-flex align-items-center'\n type='text'\n icon={}>\n Edit Question\n \n {\n setQuestions(\n questions.map((qs) => {\n if (qs.id === q.id) {\n return {\n ...qs,\n showEditQuestion: false,\n }\n }\n return qs\n })\n )\n }}\n footer={null}>\n {\n setQuestions(\n questions.filter((qs) => qs.id !== q.id)\n )\n }}\n onQuestionUpdated={(q) => {\n setQuestions(\n questions.map((qs) => {\n if (qs.id === q.id) {\n return {\n ...qs,\n ...q,\n showEditQuestion: false,\n }\n }\n return qs\n })\n )\n }}\n />\n \n
\n
\n
\n
\n
\n {q.text}\n
\n
\n {q.answers.map((a) => {\n return (\n \n \n \n \n {a.text}\n \n \n
\n \n \n
\n \n )\n })}\n
\n
\n
\n \n
\n
\n \n )\n })}\n \n \n )\n}\n","export const ExamManagementColors = {\n exam: \"#5DC597\",\n section: \"#E3939A\",\n question: \"#F4B641\",\n}\n","import React, { useEffect, useState } from \"react\"\nimport {\n Typography,\n Col,\n Collapse,\n Row,\n Input,\n Button,\n Divider,\n InputNumber,\n} from \"antd\"\nimport {\n showErrorNotification,\n showSuccessNotification,\n} from \"../../../helpers/NotificationSystem\"\nimport {\n addSection,\n deleteSection,\n updateSection,\n} from \"../../../controllers/ExamManagementController\"\nimport Questions from \"./Questions\"\nimport { ExamManagementColors } from \"../../../helpers/Colors\"\n\nconst { Panel } = Collapse\nconst { Text, Title } = Typography\nconst { Search } = Input\n\nexport default function Sections({ examId, examSections, ...props }) {\n const [sections, setSections] = useState(\n examSections.map((s) => {\n s.updated = {\n id: s.id,\n examId: examId,\n name: s.name,\n percentage: s.percentage,\n }\n s.searchedQuestions = s.questions\n return s\n })\n )\n\n const [newSection, setNewSection] = useState({\n name: \"\",\n id: 0,\n examId: examId,\n percentage: 0,\n })\n return (\n <>\n Add Section\n
\n
\n
\n
\n

Name

\n {\n setNewSection({\n ...newSection,\n name: event.target.value,\n })\n }}\n />\n
\n
\n

Percentage

\n {\n setNewSection({\n ...newSection,\n percentage: value,\n })\n }}\n />\n
\n
\n {\n const ns = newSection\n if (ns.percentage === 0 || ns.percentage === null) {\n ns.percentage = 100\n }\n const response = await addSection(ns)\n if (response.isSuccess) {\n const { data } = response\n data.updated = {\n id: data.id,\n examId: examId,\n name: data.name,\n percentage: data.percentage,\n }\n data.searchedQuestions = data.questions\n setSections([...sections, response.data])\n showSuccessNotification(\"Section Added\")\n } else showErrorNotification(\"Unable to add section\")\n }}>\n Add Section\n \n
\n
\n\n \n {sections.map((section, index) => (\n \n \n Update Section\n \n\n
\n
\n
\n
\n

Name

\n {\n setSections(\n sections.map((s) => {\n if (s.id === section.id) {\n return {\n ...s,\n updated: {\n ...s.updated,\n name: event.target.value,\n },\n }\n }\n return s\n })\n )\n }}\n />\n
\n
\n

Percentage

\n {\n setSections(\n sections.map((s) => {\n if (s.id === section.id) {\n return {\n ...s,\n updated: {\n ...s.updated,\n percentage: value,\n },\n }\n }\n return s\n })\n )\n }}\n />\n
\n
\n
\n
\n
\n {\n const response = await deleteSection(\n section.id,\n examId\n )\n if (response.isSuccess) {\n showSuccessNotification(\"Section Delete\")\n\n setSections(\n sections\n .map((s) => {\n if (s.id == section.id) {\n return null\n }\n\n return s\n })\n .filter((s) => s != null)\n )\n } else\n showErrorNotification(\"Unable to delete section\")\n }}>\n Delete Section\n \n {\n const response = await updateSection(section.updated)\n\n if (response.isSuccess) {\n setSections(\n sections.map((s) => {\n if (s.id == section.id) {\n s.name = s.updated.name\n }\n\n return s\n })\n )\n showSuccessNotification(\"Section Added\")\n } else showErrorNotification(\"Unable to add section\")\n }}>\n Update Section\n \n
\n\n \n Add Question\n \n\n \n
\n ))}\n
\n \n )\n}\n","import {\n Col,\n Row,\n PageHeader,\n Breadcrumb,\n Typography,\n Input,\n Switch,\n Button,\n InputNumber,\n} from \"antd\"\nimport React, { useEffect, useState } from \"react\"\nimport {\n getExamById,\n deleteExam,\n exportQuestions,\n updateExam,\n} from \"../../../controllers/ExamManagementController\"\nimport { adminPaths } from \"../../../helpers/Paths\"\nimport {\n showErrorNotification,\n showSuccessNotification,\n} from \"../../../helpers/NotificationSystem\"\nimport AllowedStudents from \"./AllowedStudents\"\nimport { downloadLocalFile } from \"../../../helpers/Helpers\"\nimport ImportQuestions from \"./ImportQuestions\"\nimport history from \"../../../history\"\nimport Sections from \"./Sections\"\nimport { Permissions } from \"../../../helpers/Permissions\"\nimport useAdmin from \"../../../hooks/useAdmin\"\nimport useUser from \"../../../hooks/useUser\"\n\nexport default function ManageExams(props) {\n const { id } = props.match.params\n const [exam, setExam] = useState(null)\n const [showAllowedExam, setShowAllowedExam] = useState(false)\n const [showImport, setShowImport] = useState(false)\n const loadExam = async () => {\n const response = await getExamById(id)\n if (response.isSuccess) {\n setExam({\n ...response.data,\n updated: response.data,\n })\n } else {\n history.push(adminPaths.examManagement)\n }\n }\n useEffect(() => {\n loadExam()\n }, [])\n\n const handleExamUpdateInput = (name, value) => {\n setExam({\n ...exam,\n updated: { ...exam.updated, [name]: value },\n })\n }\n\n const { Title } = Typography\n const { TextArea } = Input\n const admin = useUser()\n\n useEffect(() => {\n if (!admin) return\n\n if (admin.isForeign) setAllowAdminEdits(false)\n if (admin.type !== 2) setAllowAdminEdits(false)\n }, [admin])\n\n const [allowAdminEdits, setAllowAdminEdits] = useState(true)\n\n const render = () => {\n if (exam == null) return <>\n\n return (\n
\n setShowAllowedExam(false)}\n show={showAllowedExam}\n />\n {\n loadExam()\n }}\n examId={exam.id}\n show={showImport}\n onClose={() => {\n setShowImport(false)\n }}\n />\n
\n history.goBack()}\n className='p-0'\n title='Exam Information'\n />\n \n Exam Management\n Exam Information\n \n\n
\n \n Basic Info\n \n \n
\n \n \n handleExamUpdateInput(\n e.target.name,\n e.target.value\n )\n }\n />\n \n \n \n \n handleExamUpdateInput(\"maxQuestions\", e)\n }\n />\n \n \n \n {\n handleExamUpdateInput(\"durationInSec\", e * 60)\n }}\n />\n \n \n \n \n handleExamUpdateInput(\"passingScore\", e)\n }\n />\n \n \n \n {\n handleExamUpdateInput(\"allowDemo\", e)\n }}>\n Allow Demo\n \n \n \n \n \n \n \n handleExamUpdateInput(\n e.target.name,\n e.target.value\n )\n }\n />\n \n \n \n \n handleExamUpdateInput(\n e.target.name,\n e.target.value\n )\n }\n />\n \n \n\n \n \n
\n \n {\n if (!allowAdminEdits) return\n handleExamUpdateInput(\n \"teachers\",\n e.target.value\n )\n }}\n />\n
\n \n \n
\n \n {\n if (!allowAdminEdits) return\n handleExamUpdateInput(\n \"correlationId\",\n e.target.value\n )\n }}\n />\n
\n \n \n
\n \n {\n if (!allowAdminEdits) return\n handleExamUpdateInput(\"examType\", parseInt(e))\n }}\n />\n
\n \n \n\n \n \n
\n \n {\n if (!allowAdminEdits) return\n handleExamUpdateInput(\"isExamCert\", e)\n }}\n />\n
\n\n
\n \n {\n if (!allowAdminEdits) return\n handleExamUpdateInput(\"isForeign\", e)\n }}\n />\n
\n\n
\n \n {\n handleExamUpdateInput(\"isReady\", e)\n }}\n />\n
\n \n \n
\n
\n {\n const questions = await exportQuestions(exam.id)\n downloadLocalFile(\n \"csv\",\n questions.data,\n \"questions.csv\"\n )\n }}>\n Export Questions\n \n {\n setShowImport(true)\n }}>\n Import Questions\n \n {\n setShowAllowedExam(true)\n }}>\n Allowed Groups\n \n
\n
\n {\n const response = await deleteExam(exam.id)\n if (response.isSuccess) {\n history.goBack()\n }\n }}>\n Delete\n \n {\n const response = await updateExam(exam.updated)\n if (response.isSuccess) {\n showSuccessNotification(\"Updated\")\n\n setExam({\n ...exam.updated,\n updated: exam.updated,\n })\n } else\n showErrorNotification(response.combinedErrors)\n }}>\n Update Exam\n \n
\n
\n \n\n {exam == null ? (\n <>\n ) : (\n \n )}\n \n \n )\n }\n\n return render()\n}\n","import React, { useState } from \"react\"\nimport { useEffect } from \"react\"\nimport { getSelf } from \"../controllers/AccountController\"\n\nexport default function useUser() {\n const [user, setUser] = useState(null)\n\n useEffect(() => {\n const load = async () => {\n const response = await getSelf()\n if (response.isSuccess) {\n setUser(response.data)\n } else {\n }\n }\n\n load()\n }, [])\n return user\n}\n","import React, { useEffect, useState } from \"react\"\nimport { getStatistics } from \"../../controllers/AdminController\"\nimport \"./Dashboard.css\"\nimport { Typography, Card, Col, Row } from \"antd\"\n\nconst { Meta } = Card\nconst { Title } = Typography\n\nexport default function Dashboard() {\n const [data, setData] = useState(null)\n\n useEffect(() => {\n const load = async () => {\n const response = await getStatistics()\n\n setData(response.data)\n }\n\n load()\n }, [])\n\n const height = \"220px\"\n\n const render = () => {\n if (data == null) return <>\n\n return (\n
\n \n Main DashBoard\n \n \n
\n \n

\n {data.users.filter((t) => t.type === 2)[0]?.count ?? 0}\n

\n \n \n \n
\n \n

\n {data.users.filter((t) => t.type === 3)[0]?.count ?? 0}\n

\n \n \n \n
\n \n

\n {data.students}\n

\n \n \n \n \n\n \n
\n \n
\n \n {data.exam.exams}\n \n \n
\n \n \n
\n \n
\n \n {data.exam.sections}\n \n \n
\n \n \n
\n \n
\n \n {data.exam.questions}\n \n \n
\n \n \n \n \n )\n }\n\n return render()\n}\n","import { PlusCircleFilled } from \"@ant-design/icons\"\nimport {\n Button,\n Col,\n Input,\n InputNumber,\n Row,\n Switch,\n Table,\n Typography,\n} from \"antd\"\nimport React, { useEffect, useState } from \"react\"\nimport {\n addStudentGroup,\n getAllStudentGroups,\n} from \"../../../controllers/GroupManagementController\"\nimport {\n showErrorNotification,\n showSuccessNotification,\n} from \"../../../helpers/NotificationSystem\"\nimport { adminPaths } from \"../../../helpers/Paths\"\nimport history from \"../../../history\"\n\nconst { Title } = Typography\n\nexport default function GroupManagementView() {\n useEffect(() => {\n async function load() {\n const response = await getAllStudentGroups()\n if (response.isSuccess) {\n setGroups(response.data)\n } else {\n showErrorNotification(response.combinedErros)\n }\n }\n\n load()\n }, [])\n\n const addNewGroup = async () => {\n const response = await addStudentGroup(newGroupModel)\n if (response.isSuccess) {\n setGroups([...groups, response.data])\n showSuccessNotification(response.message)\n } else {\n showErrorNotification(response.combinedErrors)\n }\n }\n\n const [newGroupModel, setNewGroupModel] = useState({\n name: \"\",\n isForeign: false,\n groupCorrelationId: \"\",\n useDestination: 0,\n })\n const [groups, setGroups] = useState([])\n return (\n
\n
\n
\n \n Group Management\n \n
\n
\n \n Add Group\n \n\n \n
\n \n\n \n setNewGroupModel({\n ...newGroupModel,\n name: e.target.value,\n })\n }\n />\n \n \n \n
\n \n\n \n setNewGroupModel({\n ...newGroupModel,\n groupCorrelationId: e.target.value,\n })\n }\n />\n
\n \n \n \n
\n \n\n {\n setNewGroupModel({\n ...newGroupModel,\n useDestination: parseInt(e),\n })\n }}\n />\n
\n \n \n \n \n
\n \n {\n setNewGroupModel({\n ...newGroupModel,\n isForeign: e,\n })\n }}\n />\n
\n \n \n {\n await addNewGroup()\n }}\n size='large'\n type='primary'\n icon={}>\n Add\n \n \n \n \n \n\n
\n \n Groups\n \n\n (\n <>\n {\n history.push(\n adminPaths.groupManagement + \"/\" + row.id\n )\n }}>\n View\n \n \n ),\n },\n ]}\n />\n
\n \n \n )\n}\n","import React, { useState } from \"react\"\nimport { useEffect } from \"react\"\nimport {\n deleteStudentGroup,\n getStudentGroupDetail,\n updateStudentGroup,\n} from \"../../../controllers/GroupManagementController\"\nimport {\n Button,\n Col,\n Input,\n InputNumber,\n Row,\n Switch,\n Table,\n Typography,\n} from \"antd\"\nimport { UploadOutlined } from \"@ant-design/icons\"\nimport history from \"../../../history\"\nimport { adminPaths } from \"../../../helpers/Paths\"\nimport {\n showErrorNotification,\n showSuccessNotification,\n} from \"../../../helpers/NotificationSystem\"\n\nconst { Title } = Typography\n\nexport default function GroupView(props) {\n const { id } = props.match.params\n const [groupModel, setGroupModel] = useState({\n id: 0,\n name: \"\",\n isForeign: false,\n groupCorrelationId: \"\",\n useDestination: 0,\n })\n const [users, setUsers] = useState([])\n\n useEffect(() => {\n async function load() {\n const response = await getStudentGroupDetail(id)\n if (response.isSuccess) {\n setGroupModel({\n name: response.data.name,\n id: response.data.id,\n useDestination: response.data.useDestination,\n isForeign: response.data.isForeign,\n groupCorrelationId: response.data.groupCorrelationId,\n })\n setUsers(response.data.students)\n } else {\n history.push(adminPaths.groupManagement)\n }\n }\n\n load()\n }, [])\n\n return (\n
\n
\n
\n \n User Management\n \n
\n
\n \n Update Group\n \n\n \n
\n \n \n setGroupModel({\n ...groupModel,\n name: e.target.value,\n })\n }\n />\n \n \n \n
\n \n\n \n setGroupModel({\n ...groupModel,\n groupCorrelationId: e.target.value,\n })\n }\n />\n
\n \n \n \n
\n \n\n {\n setGroupModel({\n ...groupModel,\n useDestination: parseInt(e),\n })\n }}\n />\n
\n \n \n
\n
\n \n {\n setGroupModel({\n ...groupModel,\n isForeign: e,\n })\n }}\n />\n
\n
\n {\n const response = await updateStudentGroup(groupModel)\n\n if (response.isSuccess) {\n showSuccessNotification(response.message)\n } else showErrorNotification(response.combinedErrors)\n }}\n size='large'\n type='primary'\n icon={}>\n Update\n \n\n
\n {\n const response = await deleteStudentGroup(\n groupModel.id\n )\n if (response.isSuccess) {\n showSuccessNotification(response.message)\n history.push(adminPaths.groupManagement)\n } else showErrorNotification(response.message)\n }}\n className='ml-3'>\n {\" \"}\n Delete{\" \"}\n \n
\n
\n
\n \n\n
\n \n Users\n \n\n (\n <>\n {\n history.push(\n adminPaths.userManagement +\n \"/user/\" +\n \"student\" +\n \"/\" +\n record.id\n )\n }}>\n View\n \n \n ),\n },\n ]}\n />\n
\n \n \n )\n}\n","import { adminApiUrls } from \"../routes\"\nimport { doAuthorizedGetCall, doAuthorizedPostCall } from \"./AdminController\"\n\nexport async function getAllTokens() {\n return (await doAuthorizedGetCall(adminApiUrls.apiToken.all)).data\n}\n\nexport async function deleteToken(id) {\n return (await doAuthorizedGetCall(adminApiUrls.apiToken.delete + id)).data\n}\n\nexport async function addNewApiToken(vm) {\n return (await doAuthorizedPostCall(adminApiUrls.apiToken.add, vm)).data\n}\n","import {\n Button,\n Checkbox,\n DatePicker,\n Input,\n message,\n Space,\n Spin,\n Table,\n Typography,\n} from \"antd\"\nimport React, { useEffect, useState } from \"react\"\nimport { Permissions } from \"../../../helpers/Permissions\"\nimport moment from \"moment\"\nimport {\n addNewApiToken,\n deleteToken,\n getAllTokens,\n} from \"../../../controllers/ApiTokenController\"\nimport { CopyFilled, LoadingOutlined } from \"@ant-design/icons\"\nconst { Title } = Typography\n\nexport default function APITokenManagement() {\n const [noExpiry, setNoExpiry] = useState(true)\n const [expiryDate, setExpiryDate] = useState(null)\n const [loadingAdd, setLoadingAdd] = useState(false)\n const [loadingLoad, setLoadingLoad] = useState(false)\n const [tokens, setTokens] = useState([])\n\n const addToken = async () => {\n setLoadingAdd(true)\n message.info(\"Adding new token...\")\n const response = await addNewApiToken({\n noExpiry: noExpiry,\n expiryDate: expiryDate ?? new Date(),\n })\n setLoadingAdd(false)\n if (response.isSuccess) {\n message.success(\"Token added successfully\")\n setTokens([...tokens, response.data])\n } else {\n message.error(\"Error while adding token\")\n }\n }\n\n useEffect(() => {\n const loadTokens = async () => {\n setLoadingLoad(true)\n var response = await getAllTokens()\n setLoadingLoad(false)\n\n if (response.isSuccess) {\n setTokens(response.data)\n } else message.info(\"Error while loading tokens\")\n }\n\n loadTokens()\n }, [])\n\n if (!Permissions.apiTokenManagement)\n return (\n
\n

API Token Management Is Only Allowed For Foreign Admins

\n
\n )\n return (\n
\n
\n \n API Token Management\n \n\n
\n \n Generate New Api Token\n \n\n
\n
\n setNoExpiry(e.target.checked)}>\n No Expiry\n \n\n {!noExpiry && (\n setExpiryDate(e.toDate())}\n />\n )}\n
\n \n Generate Token\n \n
\n
\n \n \n Tokens\n \n\n {loadingLoad ? (\n <>\n
\n } />\n
\n \n ) : (\n {\n return (\n {\n navigator.clipboard.writeText(text)\n message.info(\"Copied to clipboard\")\n }}\n size='small'\n icon={}\n className='m-0 p-0'\n />\n }\n />\n )\n },\n },\n {\n title: \"Expiry Date\",\n dataIndex: \"expiryDate\",\n key: \"expiryDate\",\n render: (text, record) => {\n if (record.noExpiry) return No Expiry\n\n return (\n \n {moment(record.expiryDate).format(\n \"DD-MM-YYYY\"\n )}\n \n )\n },\n },\n {\n title: \"Action\",\n dataIndex: \"action\",\n key: \"action\",\n render: (text, record) => {\n return (\n \n {\n setTokens(\n tokens.map((t) => {\n if (t.id === record.id) {\n return {\n ...t,\n deleting: true,\n }\n }\n\n return t\n })\n )\n const response = await deleteToken(\n record.id\n )\n if (response.isSuccess) {\n setTokens(\n tokens.filter(\n (t) => t.id !== record.id\n )\n )\n message.success(\n \"Token deleted successfully\"\n )\n } else {\n message.error(\n \"Error while deleting token\"\n )\n setTokens(\n tokens.map((t) => {\n if (t.id === record.id) {\n return {\n ...t,\n deleting: false,\n }\n }\n\n return t\n })\n )\n }\n }}\n loading={record.deleting}\n size='small'\n danger>\n Delete\n \n \n )\n },\n },\n ]}\n />\n )}\n
\n
\n \n )\n}\n","import React, { useState } from \"react\"\nimport { Button } from \"antd\"\nimport { FaChartBar, FaLock, FaPencilAlt, FaUser } from \"react-icons/fa\"\nimport {\n ProSidebar,\n Menu,\n MenuItem,\n SidebarContent,\n SidebarHeader,\n SidebarFooter,\n} from \"react-pro-sidebar\"\nimport \"react-pro-sidebar/dist/css/styles.css\"\nimport { Link, Route, Switch } from \"react-router-dom\"\nimport {\n clearUserData,\n getUsername,\n getUserType,\n isForeignAdmin,\n} from \"../../controllers/Authorization\"\nimport { adminPaths } from \"../../helpers/Paths\"\nimport UserManagement from \"./UserManagement/UserManagement\"\nimport UserInformation from \"./UserManagement/UserInformation\"\nimport history from \"./../../history\"\nimport ExamManagementView from \"./ExamManagement/ExamManagementView\"\nimport ManageExams from \"./ExamManagement/ManageExams\"\nimport Dashboard from \"./Dashboard\"\nimport MainLogo from \"../../assets/Logo.png\"\nimport \"./Dashboard.css\"\nimport { getUserKey } from \"../../helpers/UserHelper\"\nimport GroupManagementView from \"./GroupManagement/GroupManagementView\"\nimport GroupView from \"./GroupManagement/GroupView\"\nimport APITokenManagement from \"./ForeignAdmin/APITokenManagement\"\nimport { updatePermission } from \"../../helpers/Permissions\"\nimport { useEffect } from \"react\"\nimport { userTypes } from \"../../helpers/types\"\nimport { getAppVersion } from \"../../helpers/versionInfo\"\n\nexport default function AdminDashboard() {\n const [permissions, setPermissions] = useState({\n exam: {\n add: getUserType() === userTypes.admin,\n update: true,\n delete: getUserType() === userTypes.admin,\n },\n groups: getUserType() === userTypes.admin,\n apiTokenManagement: isForeignAdmin(),\n })\n\n const [isPermissionUpdated, setIsPermissionUpdated] = useState(false)\n\n useEffect(() => {\n updatePermission(permissions)\n setIsPermissionUpdated(true)\n }, [permissions])\n\n if (!isPermissionUpdated) return <>\n\n return (\n
\n
\n \n \n {\n history.push(adminPaths.dashboard)\n }}\n src={MainLogo}\n id='main-logo'\n alt='OnionCert Logo'\n />\n

\n Admin Panel\n

\n
\n \n \n }>\n Dashboard\n \n {getUserType() === getUserKey(\"admin\") ? (\n <>\n }>\n \n Group Management\n \n \n }>\n \n User Management\n \n \n \n ) : (\n <>\n )}\n }>\n \n Exam Management\n \n \n {permissions.apiTokenManagement && (\n }>\n \n Token Management\n \n \n )}\n \n \n \n {getUsername()}\n {\n clearUserData()\n history.push(adminPaths.login)\n }}>\n Logout\n \n

{getAppVersion()}

\n
\n
\n
\n\n
\n \n \n \n \n\n \n \n \n\n }\n exact\n path={adminPaths.groupManagement + \"/:id\"}\n />\n\n \n \n \n }\n path={adminPaths.userManagement + \"/user/:type/:id\"}>\n\n \n \n \n\n \n \n \n\n }\n exact\n path={adminPaths.examManagement + \"/exam/:id\"}>\n \n
\n
\n )\n}\n","import { errorResponse } from \"../../helpers/ServerResponseModel\"\nimport { apiUrls } from \"../../routes\"\nimport { doAuthorizedGetCall, doAuthorizedPostCall } from \"../AdminController\"\n\nexport async function getStudentProfile() {\n try {\n return (await doAuthorizedGetCall(apiUrls.profile.get)).data\n } catch (e) {\n return errorResponse(null, \"Unable to load profile\")\n }\n}\n\nexport async function updateStudentProfile(data) {\n try {\n return (await doAuthorizedPostCall(apiUrls.profile.updateProfile, data))\n .data\n } catch (e) {\n return errorResponse(null, \"Unable to update profile\")\n }\n}\n\nexport async function updateStudentEmail(data) {\n try {\n return (await doAuthorizedPostCall(apiUrls.profile.updateEmail, data))\n .data\n } catch (e) {\n return errorResponse(null, \"Unable to update email\")\n }\n}\n\nexport async function updateStudentPassword(data) {\n try {\n return (await doAuthorizedPostCall(apiUrls.profile.updatePassword, data))\n .data\n } catch (e) {\n return errorResponse(null, \"Unable to update password\")\n }\n}\n\nexport async function updateStudentProfilePicture(data) {\n try {\n return (await doAuthorizedPostCall(apiUrls.profile.updatePicture, data))\n .data\n } catch (e) {\n return errorResponse(null, \"Unable to update profile picture\")\n }\n}\n","import { AntDesignOutlined } from \"@ant-design/icons\"\nimport {\n Col,\n Input,\n message,\n Row,\n Typography,\n Form,\n Button,\n Avatar,\n Tabs,\n} from \"antd\"\nimport React from \"react\"\nimport { useState } from \"react\"\nimport { useRef } from \"react\"\nimport { useEffect } from \"react\"\nimport { Container, Jumbotron } from \"react-bootstrap\"\nimport {\n getStudentProfile,\n updateStudentEmail,\n updateStudentPassword,\n updateStudentProfile,\n updateStudentProfilePicture,\n} from \"../../controllers/student/profileManagement\"\nimport {\n showErrorNotification,\n showSuccessNotification,\n} from \"../../helpers/NotificationSystem\"\nimport MainNavbar from \"../MainNavbar\"\n\nconst { Title } = Typography\nconst { TabPane } = Tabs\n\nexport default function ProfileManagement() {\n const [loading, setLoading] = useState(false)\n const [profile, setProfile] = useState({\n username: \"\",\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n profilePicture: \"\",\n id: 0,\n organization: \"\",\n })\n\n const profileForm = useRef()\n const passwordForm = useRef()\n const emailForm = useRef()\n\n useEffect(() => {\n const getProfile = async () => {\n const res = await getStudentProfile()\n if (res.isSuccess) {\n setProfile(res.data)\n profileForm.current?.setFieldsValue(res.data)\n passwordForm.current?.setFieldsValue(res.data)\n emailForm.current?.setFieldsValue(res.data)\n } else message.error(res.message)\n }\n\n getProfile()\n }, [])\n\n const showMessage = (title, type) => {\n const d = {\n content: title,\n style: {\n marginTop: \"80px\",\n },\n key: \"1\",\n }\n if (type === \"success\") message.success({ ...d })\n else if (type === \"info\") message.info({ ...d })\n else if (type === \"error\") message.error({ ...d })\n else if (type === \"loading\") message.loading({ ...d })\n }\n\n const updateProfilePicture = (e) => {\n var file = e.target.files[0]\n var reader = new FileReader()\n reader.onloadend = async function () {\n showMessage(\"Uploading profile picture...\", \"loading\")\n\n const res = await updateStudentProfilePicture({\n newProfilePicture: reader.result,\n })\n\n if (res.isSuccess) {\n showMessage(\"Profile picture updated successfully\", \"success\")\n setProfile({\n ...profile,\n profilePicture: reader.result,\n })\n } else {\n showMessage(\n res.message ?? \"Unable to update profile picture\",\n \"error\"\n )\n }\n }\n reader.readAsDataURL(file)\n }\n\n return (\n \n \n \n Profile Manangement\n \n\n \n \n \n \n
\n updateProfilePicture(e)}\n type={\"file\"}\n accept='.jpg, .jpej, .png'\n id='profile'\n className='hidden'\n />\n {\n document.getElementById(\"profile\").click()\n }}\n src={profile.profilePicture}\n className='cursor-pointer'\n icon={}\n size={{ xs: 24, sm: 32, md: 40, lg: 150, xl: 150 }}\n />\n
\n

\n {profile.username}\n {\" (\" + profile.id + \")\"}\n

\n

Student

\n
\n
\n
\n {\n setLoading(true)\n const response = await updateStudentProfile(f)\n\n setLoading(false)\n if (response.isSuccess) {\n showSuccessNotification(response.message)\n } else\n showErrorNotification(response.combinedErrors)\n\n return false\n }}\n ref={profileForm}\n layout='vertical'>\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n Update\n \n \n \n
\n \n \n \n \n \n \n {\n setLoading(true)\n const response = await updateStudentEmail(f)\n setLoading(false)\n if (response.isSuccess) {\n showSuccessNotification(response.message)\n } else showErrorNotification(response.combinedErrors)\n\n return false\n }}\n ref={emailForm}\n layout='vertical'>\n \n \n \n \n\n \n \n Update\n \n \n \n \n \n \n \n \n \n {\n console.log(f)\n setLoading(true)\n const response = await updateStudentPassword(f)\n\n setLoading(false)\n if (response.isSuccess) {\n showSuccessNotification(response.message)\n } else showErrorNotification(response.combinedErrors)\n\n return false\n }}\n ref={passwordForm}\n layout='vertical'>\n \n \n \n \n \n \n \n \n\n \n \n Update\n \n \n \n \n \n \n \n \n )\n}\n","import { Typography } from \"antd\"\nimport React, { useState } from \"react\"\nimport { useEffect } from \"react\"\nimport { Container, Jumbotron } from \"react-bootstrap\"\nimport { getUsername } from \"../../controllers/Authorization\"\nimport { getStudentTakenExams } from \"../../controllers/ExamController\"\nimport { showErrorNotification } from \"../../helpers/NotificationSystem\"\nimport StudentTakenExam from \"../admin/UserManagement/StudentTakenExam\"\nimport MainNavbar from \"../MainNavbar\"\n\nconst { Title } = Typography\n\nexport default function StudentResults() {\n const [takenExams, setTakenExams] = useState([])\n\n useEffect(() => {\n const loadTakenExams = async () => {\n const te = await getStudentTakenExams()\n\n if (te.isSuccess) {\n setTakenExams(te.data)\n } else showErrorNotification(te.message)\n }\n\n loadTakenExams()\n }, [])\n return (\n \n \n \n Student Results\n \n
\n \n
\n
\n )\n}\n","import { errorResponse } from \"../../helpers/ServerResponseModel\"\nimport { apiUrls } from \"../../routes\"\n\nexport async function getMagicLinkInfo(id) {\n try {\n const response = await fetch(\n `${apiUrls.foriegnStudent.magicLink.info}${id}`\n )\n const data = await response.json()\n return data\n } catch (e) {\n return errorResponse(\"Error in getting magic link info\")\n }\n}\n","import { LoadingOutlined } from \"@ant-design/icons\"\nimport { Button, message, Space, Spin } from \"antd\"\nimport React, { useEffect } from \"react\"\nimport { useState } from \"react\"\nimport {\n setCustomAuthorizationToken,\n useCustomAuthorizationToken,\n} from \"../../controllers/Authorization\"\nimport { getSectionedExam } from \"../../controllers/ExamController\"\nimport { getMagicLinkInfo } from \"../../controllers/foriegnstudent/ForiegnStudentMagicLinkController\"\nimport { studentRoutes } from \"../../helpers/Paths\"\n\nexport default function MagicLinkEndPoint(props) {\n const [loading, setLoading] = useState(true)\n const [magicLinkInfo, setMagicLinkInfo] = useState({})\n\n useEffect(() => {\n const loadData = async () => {\n if (props?.match?.params?.id) {\n const result = await getMagicLinkInfo(props?.match?.params?.id)\n if (result.isSuccess) {\n setCustomAuthorizationToken(result.data.token)\n setLoading(false)\n setMagicLinkInfo(result.data)\n } else {\n props.history.push(\"/\")\n }\n } else {\n props.history.push(\"/\")\n }\n }\n\n loadData()\n }, [])\n const takeExam = (mode) => {\n props.history.push(studentRoutes.instructions, {\n examId: magicLinkInfo.examId,\n mode: mode,\n back: true,\n })\n }\n return (\n
\n } spinning={loading}>\n
\n \n {magicLinkInfo.isOver && (\n

Exam Over

\n )}\n {magicLinkInfo && magicLinkInfo.isOver ? (\n <>\n ) : magicLinkInfo.inProgress ? (\n <>\n {\n props.history.push(\n `/student/exam/${magicLinkInfo.takenExamId}`\n )\n }}\n size='large'\n type='primary'>\n Continue Exam\n \n \n ) : (\n <>\n {magicLinkInfo.allowDemo && (\n {\n takeExam(2)\n }}\n size='large'\n type='primary'>\n Take Demo\n \n )}\n {magicLinkInfo.allowFinal && (\n {\n takeExam(1)\n }}\n size='large'\n type='dashed'>\n Take Exam\n \n )}\n \n )}\n
\n
\n
\n
\n )\n}\n","import React from \"react\"\nimport { Link } from \"react-router-dom\"\nimport { studentRoutes } from \"../../helpers/Paths\"\n\nexport default function MagicLinkExamResult({ history, location, ...props }) {\n const { results } = location\n\n if (!results) {\n history.push(studentRoutes.login)\n return <>\n }\n\n return (\n
\n

\n {\"You have \" +\n (results.isPassed ? \"Passed\" : \"Failed\") +\n \" the Exam.\"}\n

\n

\n Click here to get\n back to Workers Badge\n

\n
\n )\n}\n","import React, { Component } from \"react\"\nimport \"./custom.css\"\nimport LoginView from \"./components/LoginView\"\nimport { Redirect, Route, Switch } from \"react-router-dom\"\nimport Exam from \"./components/Exam\"\nimport Dashboard from \"./components/Dashboard\"\nimport UnAuthorizedRoute from \"./helpers/UnAuthorizedRoute\"\nimport AuthorizedRoute from \"./helpers/AuthorizedRoute\"\nimport Report from \"./components/Report\"\nimport Instructions from \"./components/TestInformation/Instructions\"\nimport { adminPaths, studentRoutes } from \"./helpers/Paths\"\nimport AdminLogin from \"./components/admin/AdminLogin\"\nimport AdminDashboard from \"./components/admin/AdminDashboard\"\nimport \"react-notifications-component/dist/theme.css\"\nimport { ReactNotifications } from \"react-notifications-component\"\nimport \"./styles/css/antd.css\"\nimport ProfileManagement from \"./components/student/ProfileManagement\"\nimport StudentResults from \"./components/student/StudentResults\"\nimport MagicLinkEndPoint from \"./components/foreignstudent/MagicLinkEndPoint\"\nimport MagicLinkExamResult from \"./components/foreignstudent/MagicLinkExamResult\"\n\nexport default class App extends Component {\n static displayName = App.name\n\n render() {\n return (\n <>\n \n \n }\n />\n }\n />\n\n \n \n \n \n \n \n \n \n\n \n\n \n \n \n )\n }\n}\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport default function register () {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW (swUrl) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker (swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister () {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import \"bootstrap/dist/css/bootstrap.css\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Router } from \"react-router-dom\"\nimport App from \"./App\"\nimport registerServiceWorker from \"./registerServiceWorker\"\nimport history from \"./history\"\n\nconst baseUrl = document.getElementsByTagName(\"base\")[0].getAttribute(\"href\")\nconst rootElement = document.getElementById(\"root\")\n\nReactDOM.render(\n \n \n ,\n rootElement\n)\n\nregisterServiceWorker()\n"],"sourceRoot":""}