{"version":3,"sources":["redux/reducers/initialState.js","redux/reducers/index.js","redux/reducers/authReducer.js","redux/actions/actionTypes.js","redux/reducers/studentDataReducer.js","redux/reducers/commonDataReducer.js","api/apiConfig.js","api/authApi.js","redux/actions/authActions.js","components/StudentDashboard/DashboardItem.js","components/AdiThemeProvider.js","api/studentDataApi.js","redux/actions/studentDataActions.js","components/StudentDashboard/index.js","components/Home/index.js","components/Header/AccountMenu.js","components/NotificationMessage/index.js","components/Header/NotificationBell.js","components/Header/index.js","components/Footer/index.js","components/PageNotFound.js","components/CommonFunctions/index.js","api/adminDataApi.js","components/RegistrationForm/index.js","components/LoginForm/index.js","components/MyProfile/index.js","components/BillingHistory/index.js","components/ViewAllNotifications/index.js","components/LessonIcon/index.js","components/TestIcon/index.js","components/VideoJS/index.js","components/Curriculum/Test.js","components/Curriculum/index.js","components/Transcript/index.js","components/Grid/index.js","components/Grid/GridLinkButton.js","components/Transcript/TranscriptPopup.js","components/Grid/GridDropdownField.js","components/Grid/GridButton.js","components/Grid/GridToggleField.js","components/Admin/NotificationsPopup.js","components/Admin/ProfileImage.js","components/Admin/AdminAnnouncements.js","components/Admin/PromoCodes.js","components/Grid/GridCalendar.js","components/Grid/GridEmailButton.js","components/Admin/DeviceListPopup.js","components/Admin/ActivityLogPopup.js","components/Admin/AdminStudentRegistrationPopup.js","components/Admin/DeleteUserPopup.js","components/EmailList/index.js","components/Admin/JobListingPopup.js","components/Admin/index.js","components/DocuSignComplete/index.js","components/JobListingSearch/index.js","components/App.js","index.js","redux/configureStore.js"],"names":["auth","studentData","commonData","stateList","rootReducer","combineReducers","state","initialState","action","type","device","user","isLoading","loadingMessage","dash","curriculum","concat","map","section","userID","axios","defaults","baseURL","getApiUrl","defaultConfig","window","location","href","indexOf","setDefaultConfig","headers","d","deviceUniqueId","y","isMobile","isTablet","b","osName","osVersion","browserName","engineVersion","getAuthTokenCookie","hasAuthToken","getAuthHeaders","getCookie","getConfigObject","appendToDefaultConfig","_config","token","t","get","url","config","then","response","catch","handleError","post","data","error","name","v","document","cookie","match","setCookie","value","hours","Date","time","getTime","setTime","setFullYear","getFullYear","toUTCString","getEmailVerificationCode","api","getTextVerificationCode","logInUser","email","password","authState","NewAuthToken","getProfileImagePath","profileImage","btoa","listUserNotification","showAll","deviceReady","apiConfig","userLoggedIn","userLoggedOut","dataLoading","checkAuthToken","dispatch","getState","result","verifyEmail","code","encodeURIComponent","authApi","verifyText","logOutUser","updateUser","phone","addressLine1","addressLine2","city","zip","diplomaFirstName","diplomaLastName","Email","Phone","AddressLine1","AddressLine2","City","State","Zip","DiplomaFirstName","DiplomaLastName","userUpdateResult","setDataLoading","CircularProgressWithLabel","props","CircularProgress","variant","className","Box","sx","position","display","top","left","bottom","right","alignItems","justifyContent","Typography","component","color","progressLabel","connect","actions","bindActionCreators","authActions","title","children","icon","progress","undefined","theme","createTheme","status","danger","palette","primary","main","darker","neutral","contrastText","answered","notAnswered","white","AdiThemeProvider","ThemeProvider","listAnnouncement","studentDashboardLoaded","loadStudentDashboard","studentDataApi","curriculumLoaded","loadCurriculum","clearCurriculum","studentDataActions","actionsRef","useRef","useState","announcementList","setAnnouncementList","jobOfferList","setJobOfferList","useEffect","_announcementList","filter","announcement","AnnouncementTypeID","current","console","log","IsDocSigned","IsActive","FirstName","DocuSignUrl","IsPaid","SectionPercentCompleted","SectionCountCompleted","SectionCountTotal","DaysRemaining","Button","Link","to","DateEnrolled","moment","format","DateStarted","PromoCodeName","PaymentAmount","toFixed","fontSize","length","Title","Description","Url","IconButton","target","LinearProgress","onClick","Alert","severity","createOrder","order","create","purchase_units","amount","application_context","shipping_preference","onApprove","capture","details","request","PayPalOrderId","id","PayPalPayerId","payer","payer_id","PayPalEmail","email_address","PayPalFirstName","given_name","PayPalLastName","surname","Amount","HomePage","AccountMenuButton","style","startIcon","React","showAccountMenu","setShowAccountMenu","keepAliveTimer","setInterval","event","currentTarget","backgroundImage","ProfileImage","charAt","LastName","Popover","open","Boolean","anchorEl","onClose","anchorOrigin","vertical","horizontal","UserLevelID","NotificationMessageInner","notification","Message","NotificationMessage","Route","notificationList","setNotificationList","_notificationList","Badge","badgeContent","NotificationCount","key","UserNotificationID","IsLoggedIn","src","alt","Footer","TextField","label","PageNotFound","validateEmail","String","toLowerCase","validatePassword","scrollToTop","scrollTo","formatPhoneNumber","phoneNumberString","replace","listPromoCode","setActiveStep","activeStep","doLogin","isAdmin","onRegistration","query","URLSearchParams","useLocation","search","promoCode","setPromoCode","promoCodeList","setPromoCodeList","newUser","setNewUser","showPassword","values","setValues","_promoCodeList","FormControl","fullWidth","InputLabel","Select","labelId","onChange","_promoCode","MenuItem","PromoKey","firstName","lastName","mask","placeholder","helperText","autoComplete","InputProps","endAdornment","InputAdornment","aria-label","onMouseDown","preventDefault","FormControlLabel","control","Checkbox","checked","checkedBox","disabled","sendEmail","registerUser","UserID","AppMessage","setUser","emailVerify","setEmailVerify","textVerify","setTextVerify","codeFail","setCodeFail","showEmailSent","setShowEmailSent","invalidPasswordResetCode","setInvalidPasswordResetCode","activationMethod","setActivationMethod","handleClickShowPassword","handleMouseDownPassword","isLoginValid","text","EmailVerificationRequired","IsUser","TextVerificationRequired","onSubmit","stopPropagation","fields","marginTop","RadioGroup","row","aria-labelledby","newValue","Radio","success","IsSuccess","contactEditMode","setContactEditMode","mailEditMode","setMailEditMode","userInfo","setUserInfo","userMailingAddress","setUserMailingAddress","IsVeteran","getUploadParams","onChangeStatus","meta","remove","maxFiles","accept","multiple","canCancel","inputContent","select","option","BillingHistory","listUserNotificationAdmin","TableContainer","Paper","Table","TableHead","TableRow","TableCell","align","TableBody","border","scope","Created","utc","local","Viewed","LessonIcon","lesson","IsCompleted","TestIcon","test","IsComplete","IsPassed","VideoJS","options","onReady","onPlay","onPause","onEnded","onTimeUpdate","videoRef","playerRef","videoElement","player","videojs","on","this","currentTime","dispose","data-vjs-player","ref","activeTest","setActiveTest","testData","setTestData","activeQuestion","setActiveQuestion","viewAnswerSheet","setViewAnswerSheet","answerSheetButtonText","setAnswerSheetButtonText","setNextQuestion","nextQuestion","QuestionList","question","QuestionNumber","checkIsLastQuestion","UserAnswerID","loadTestData","startOver","sectionChapterID","getSectionTest","SectionChapterID","SectionChapterQuestionID","Header","SectionName","SectionChapterName","QuestionCountCorrect","QuestionCountTotal","GradeLetter","Question","defaultValue","AnswerList","answer","SectionChapterQuestionAnswerID","Answer","userTestID","sectionChapterQuestionID","sectionChapterQuestionAnswerID","UserTestID","testHeader","IsCorrectAnswer","IsUserAnswer","LessonName","lessonName","dangerouslySetInnerHTML","__html","loadingTimeout","videoTime","videoProgressInterval","expandedSection","setExpandedSection","activeLesson","setActiveLesson","autoplay","controls","responsive","fluid","videoJsOptions","setVideoJsOptions","sectionID","sectonChapterID","sectionChapterLessonID","setTimeout","clearInterval","sources","SectionID","SectionChapterLessonID","split","join","videoUrl","clearTimeout","nextSectionID","ChapterList","chapter","availableLessonList","LessonList","_lesson","IsAvailable","nextLesson","element","getElementsByClassName","scrollArgs","getBoundingClientRect","pageYOffset","videoTimeString","toISOString","substring","Accordion","expanded","AccordionSummary","expandIcon","aria-controls","PDFFileDownload","fileName","AccordionDetails","Test","lessonNameIndex","Progress","QuestionCountAnswered","popUp","Object","keys","GPA","height","stickyHeader","lessonIndex","Grade","$","Grid","gridApi","columnApi","prefsApplied","setPrefsApplied","columnDefs","setColumnDefs","columnSets","columnSetList","setColumnSetList","columnSetMenuOpen","setColumnSetMenuOpen","selectedColumnSet","setSelectedColumnSet","gridCustomized","setGridCustomized","promptSaveColumnSet","setPromptSaveColumnSet","columnSetSaveOption","setColumnSetSaveOption","newColumnSetTitle","setNewColumnSetTitle","newColumnSetError","setNewColumnSetError","visibleRowCount","setVisibleRowCount","totalRowCount","setTotalRowCount","searchString","setSearchString","setColumnJumpOptions","gridExportInProgress","searchTimeout","serverSideFieldListVisible","setServerSideFieldListVisible","_defaultColDef","enableCellChangeFlash","sortable","resizable","defaultColDef","screen","width","initGridPrefs","force","rawPrefList","arrColSet","dictColSet","curKey","curPref","ObjectID","trackAs","colSet","Name","JSON","parse","Value","splice","push","preventPinningOnMobile","getColumnState","curCol","setColumnPinned","colId","setColumnSet","columnSetTitle","handleColumnSetMenuButtonClosed","columnState","setColumnState","defaultColumnState","filterModel","setFilterModel","sortModel","setSortModel","arrColDef","handleColDefDataType","_colDef","colDef","dataType","valueFormatter","params","valueGetter","field","Number","isNaN","parseFloat","toLocaleString","maximumFractionDigits","minimumFractionDigits","cellClass","cellRendererFramework","parseInt","curColDef","childColDef","arrColJumpOption","headerName","curChildColDef","getDisplayedRowCount","updateTotalRowCount","rowData","authUser","_totalRowCount","forEachNode","node","level","getExportFileName","dtNow","getMonth","getDate","getHours","getMinutes","getSeconds","Skeleton","animation","aria-haspopup","keepMounted","curColumnSet","Divider","liveUpdates","Tooltip","placement","refreshFunc","exportDataAsExcel","columnGroups","_searchString","onFilterChanged","startAdornment","serverSideFieldList","transformOrigin","hide","FormGroup","setServerSideFieldList","hideDefaultTotals","getElementById","groupHeaderHeight","onGridReady","onColumnMoved","onColumnVisible","onColumnPinned","onColumnResized","onCellFocused","onSortChanged","quickFilterText","cellFlashDelay","immutableData","getRowNodeId","domLayout","autoHeight","onCellEditingStarted","onCellEditingStopped","suppressContextMenu","onSelectionChanged","onRangeSelectionChanged","rowSelection","allowShowChangeAfterFilter","rowDeselection","onRowClicked","overlayLoadingTemplate","overlayNoRowsTemplate","enableRangeSelection","autoGroupColumnDef","suppressMovableColumns","getRowClass","rowHeight","groupDefaultExpanded","groupSuppressAutoColumn","suppressAggFuncInHeader","groupHideOpenParents","onModelUpdated","setColumnVisible","suppressClipboardPaste","onBodyScroll","Dialog","DialogTitle","DialogContent","autoFocus","margin","required","FormHelperText","DialogActions","toUpperCase","stringify","getFilterModel","getSortModel","GridLinkButton","onCellClicked","rel","linkLabel","textAlign","background","student","closeFunc","fullScreen","float","paddingTop","getPrintUrl","GridDropdownField","changeTimeout","saving","setSaving","fieldID","filterOptions","createFilterOptions","limit","selectedOptionList","setSelectedOptionList","Autocomplete","optionListFunc","optionList","getOptionLabel","onDataChanged","renderInput","numbersOnly","GridButton","link","linkFunc","disableFunc","GridToggleField","setValue","checkDisabled","disableMessage","getTooltip","Switch","e","inputProps","NotificationsPopup","onUserAdded","notificationType","setNotificationType","notificationMessage","setNotificationMessage","externalUrl","setExternalUrl","multiline","AdminAnnouncements","editMode","setEditMode","loadAnnouncementList","AnnouncementTypeName","announcementID","AnnouncementID","FormLabel","AdminPromoCodes","editPromoCode","setEditPromoCode","setpromoCodeList","loadpromoCodeList","UserCount","deletePromoCode","str","navigator","clipboard","writeText","Promise","reject","PromoCodeID","Price","DocuSignTemplate","DefaultUserIsActive","GridCalendar","dayjs","LocalizationProvider","dateAdapter","AdapterDayjs","Stack","spacing","DesktopDatePicker","inputFormat","valueChanged","$d","GridVisibilityIcon","DeviceListPopup","userDeviceList","setUserDeviceList","minWidth","DeviceUniqueId","Browser","DeviceType","EmailVerified","TextVerified","IPAddress","ActivityLogPopup","userActivityList","setUserActivityList","activity","DateTime","ActivityName","AdminStudentRegistrationPopup","DeleteUserPopup","deleting","setDeleting","emailList","setEmailList","expand","setExpand","mailTo","_emailList","EmailID","transform","Subject","DateDelivered","DateRead","DateDropped","DropReason","colSpan","MailFrom","MailTo","Body","JobListingPopup","jobListingList","setJobListingList","showImport","setShowImport","importing","setImporting","importResult","setImportResult","promptDelete","setPromptDelete","loadJobListingList","JobListingID","IsExpired","padding","Details","detailKey","detailIndex","xhr","importJobListing","jobListingID","Admin","setRowData","showTranscript","setShowTranscript","showDeviceList","setShowDeviceList","showActivityLog","setShowActivityLog","showAdminStudentRegistrationPopup","setShowAdminStudentRegistrationPopup","showAdminStudentAnnouncementsPopup","setShowAdminStudentAnnouncementPopup","showNotificationsPopup","setShowNotificationsPopup","showPromoCodePopup","setShowPromoCodePopup","showDeleteUser","setShowDeleteUser","showEmailList","setShowEmailList","showJobListings","setShowJobListings","loadUserList","userList","autoSizeAllColumns","IsDocRequired","DateDocSigned","IsPaymentRequired","DatePaid","pinned","IsCourseCompleted","ActiveSectionName","dateIssued","suppressMenu","suppressSorting","GridEmailButton","days","i","daysOut","isActive","PromoCodes","reference","trackDocSigned","JobListingSearch","passwordEntered","sessionStorage","getItem","isLoggedIn","setIsLoggedIn","setPassword","passwordInvalid","setPasswordInvalid","filteredList","setFilteredList","searchField","setSearchField","selectedState","setSelectedState","searchListings","job","_searchCompare","toLocaleLowerCase","_value","Location","Headline","listJobListing","_jobListingList","focus","Tabs","Tab","onKeyDown","DatePosted","DateExpired","marginBottom","setItem","setSessionStorage","protocol","d2","performance","now","c","r","Math","random","floor","toString","generateUUID","deviceDetect","hash","exact","path","MyProfile","Curriculum","Transcript","DocuSignComplete","ViewAllNotifications","store","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createStore","applyMiddleware","thunk","reduxImmutableStateInvariant","configureStore","ReactDOM","render","currency"],"mappings":"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","file":"static/js/main.41945738.chunk.js","sourcesContent":["export default {\r\n auth: null,\r\n studentData: {},\r\n commonData: {\r\n stateList: [\r\n \"AL\",\r\n \"AK\",\r\n \"AZ\",\r\n \"AR\",\r\n \"CA\",\r\n \"CO\",\r\n \"CT\",\r\n \"DE\",\r\n \"FL\",\r\n \"GA\",\r\n \"HI\",\r\n \"ID\",\r\n \"IL\",\r\n \"IN\",\r\n \"IA\",\r\n \"KS\",\r\n \"KY\",\r\n \"LA\",\r\n \"ME\",\r\n \"MD\",\r\n \"MA\",\r\n \"MI\",\r\n \"MN\",\r\n \"MS\",\r\n \"MO\",\r\n \"MT\",\r\n \"NE\",\r\n \"NV\",\r\n \"NH\",\r\n \"NJ\",\r\n \"NM\",\r\n \"NY\",\r\n \"NC\",\r\n \"ND\",\r\n \"OH\",\r\n \"OK\",\r\n \"OR\",\r\n \"PA\",\r\n \"RI\",\r\n \"SC\",\r\n \"SD\",\r\n \"TN\",\r\n \"TX\",\r\n \"UT\",\r\n \"VT\",\r\n \"VA\",\r\n \"WA\",\r\n \"WV\",\r\n \"WI\",\r\n \"WY\",\r\n ],\r\n },\r\n};\r\n","import { combineReducers } from \"redux\";\r\nimport auth from \"./authReducer\";\r\nimport commonData from \"./commonDataReducer\";\r\nimport studentData from \"./studentDataReducer\";\r\n\r\nconst rootReducer = combineReducers({\r\n auth,\r\n studentData,\r\n commonData,\r\n});\r\n\r\nexport default rootReducer;\r\n","import * as types from \"../actions/actionTypes\";\r\nimport initialState from \"./initialState\";\r\n\r\nexport default function authReducer(state = initialState.auth, action) {\r\n switch (action.type) {\r\n case types.AUTH_DEVICE_READY:\r\n return { ...state, device: { ...action.device } };\r\n case types.AUTH_USER_LOGIN:\r\n return { ...state, user: { ...action.user } };\r\n case types.AUTH_DATA_LOADING:\r\n return {\r\n ...state,\r\n isLoading: action.isLoading,\r\n loadingMessage: action.loadingMessage,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","export const AUTH_DEVICE_READY = 'AUTH_DEVICE_READY';\r\nexport const AUTH_USER_LOGIN = 'AUTH_USER_LOGIN';\r\nexport const AUTH_DATA_LOADING = 'AUTH_DATA_LOADING';\r\nexport const STUDENT_DASHBOARD_LOADED = 'STUDENT_DASHBOARD_LOADED';\r\nexport const STUDENT_CURRICULUM_LOADED = 'STUDENT_CURRICULUM_LOADED';\r\nexport const STUDENT_CURRICULUM_CLEARED = 'STUDENT_CURRICULUM_CLEARED';\r\n","import * as types from '../actions/actionTypes';\r\nimport initialState from './initialState';\r\n\r\nexport default function studentDataReducer(\r\n state = initialState.studentData,\r\n action\r\n) {\r\n switch (action.type) {\r\n case types.STUDENT_DASHBOARD_LOADED:\r\n return { ...state, dash: { ...action.dash } };\r\n case types.STUDENT_CURRICULUM_LOADED:\r\n return {\r\n ...state,\r\n curriculum: action.curriculum\r\n ? [].concat(\r\n action.curriculum.map(section => {\r\n return { ...section };\r\n })\r\n )\r\n : null,\r\n userID: action.userID\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import * as types from \"../actions/actionTypes\";\r\nimport initialState from \"./initialState\";\r\n\r\nexport default function commonDataReducer(\r\n state = initialState.commonData,\r\n action\r\n) {\r\n switch (action.type) {\r\n default:\r\n return state;\r\n }\r\n}\r\n","import axios from 'axios';\r\n\r\naxios.defaults.baseURL = getApiUrl();\r\n\r\nlet defaultConfig = null;\r\n\r\nexport function getApiUrl() {\r\n return window.location.href.indexOf('localhost') !== -1\r\n ? 'https://localhost:44330/'\r\n : '/adi-api/';\r\n}\r\n\r\nexport function setDefaultConfig(device) {\r\n let headers = {\r\n d: device.deviceUniqueId,\r\n y: device.isMobile ? 'Mobile' : device.isTablet ? 'Tablet' : 'Desktop',\r\n b:\r\n (device.osName ? device.osName : '') +\r\n (device.osVersion ? ' ' + device.osVersion : '') +\r\n (device.browserName ? ' ' + device.browserName : '') +\r\n (device.engineVersion ? ' ' + device.engineVersion : '')\r\n };\r\n\r\n if (getAuthTokenCookie()) {\r\n device.hasAuthToken = true;\r\n }\r\n\r\n defaultConfig = {\r\n headers: headers\r\n };\r\n\r\n return { ...device };\r\n}\r\n\r\nexport function getAuthHeaders() {\r\n return defaultConfig ? defaultConfig.headers : {};\r\n}\r\n\r\nexport function setAuthToken(token) {\r\n setCookie('adi-t', token);\r\n}\r\n\r\nexport function getAuthTokenCookie() {\r\n return getCookie('adi-t');\r\n}\r\n\r\nfunction getConfigObject(appendToDefaultConfig) {\r\n let _config = { ...defaultConfig };\r\n\r\n const token = getAuthTokenCookie();\r\n if (_config && token) {\r\n _config.headers.t = token;\r\n }\r\n\r\n if (appendToDefaultConfig) {\r\n if (appendToDefaultConfig.headers) {\r\n _config.headers = {\r\n ..._config.headers,\r\n ...appendToDefaultConfig.headers\r\n };\r\n }\r\n }\r\n\r\n return _config;\r\n}\r\n\r\nexport function get(url, config) {\r\n return axios\r\n .get(url, url.indexOf('http') === -1 ? getConfigObject(config) : config)\r\n .then(function(response) {\r\n return response;\r\n })\r\n .catch(handleError);\r\n}\r\n\r\nexport function post(url, data, config) {\r\n return axios\r\n .post(\r\n url,\r\n data,\r\n url.indexOf('http') === -1 ? getConfigObject(config) : null\r\n )\r\n .then(function(response) {\r\n return response;\r\n })\r\n .catch(handleError);\r\n}\r\n\r\nexport function handleError(error) {\r\n // eslint-disable-next-line no-console\r\n\r\n throw error;\r\n}\r\n\r\nexport function getCookie(name) {\r\n var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');\r\n return v ? v[2] : null;\r\n}\r\n\r\nexport function setCookie(name, value, hours) {\r\n var d = new Date();\r\n if (hours) {\r\n var time = d.getTime();\r\n time += 3600 * 1000;\r\n d.setTime(time);\r\n } else {\r\n d.setFullYear(d.getFullYear() + 1);\r\n }\r\n document.cookie = name + '=' + value + ';path=/;expires=' + d.toUTCString();\r\n}\r\n\r\nexport function getSessionStorage(name) {\r\n if (typeof window !== 'undefined' && window.sessionStorage) {\r\n return window.sessionStorage.getItem(name);\r\n }\r\n\r\n return '';\r\n}\r\n\r\nexport function setSessionStorage(name, value) {\r\n if (typeof window !== 'undefined' && window.sessionStorage) {\r\n window.sessionStorage.setItem(name, value);\r\n }\r\n}\r\n","import * as api from './apiConfig';\r\n\r\nexport function checkAuthToken() {\r\n return api.get('API/UserAuth/CheckAuthToken').then(response => response.data);\r\n}\r\n\r\nexport function getEmailVerificationCode() {\r\n return api\r\n .get('API/UserAuth/GetEmailVerificationCode')\r\n .then(response => response.data);\r\n}\r\n\r\nexport function verifyEmail(code) {\r\n return api\r\n .get('API/UserAuth/VerifyEmail?code=' + encodeURIComponent(code))\r\n .then(response => response.data);\r\n}\r\n\r\nexport function getTextVerificationCode() {\r\n return api\r\n .get('API/UserAuth/GetTextVerificationCode')\r\n .then(response => response.data);\r\n}\r\n\r\nexport function verifyText(code) {\r\n return api\r\n .get('API/UserAuth/VerifyText?code=' + encodeURIComponent(code))\r\n .then(response => response.data);\r\n}\r\n\r\nexport function registerUser(\r\n promoCode,\r\n email,\r\n password,\r\n firstName,\r\n lastName,\r\n phone,\r\n sendEmail\r\n) {\r\n return api\r\n .post('API/UserAuth/Register?sendEmail=' + (sendEmail ? 'true' : 'false'), {\r\n promoCode,\r\n email,\r\n password,\r\n firstName,\r\n lastName,\r\n phone\r\n })\r\n .then(response => response.data);\r\n}\r\n\r\nexport function logInUser(email, password) {\r\n return api\r\n .post('API/UserAuth/LogIn', {\r\n email,\r\n password\r\n })\r\n .then(response => {\r\n const authState = response.data;\r\n if (authState && authState.NewAuthToken) {\r\n api.setAuthToken(authState.NewAuthToken);\r\n }\r\n\r\n return authState;\r\n });\r\n}\r\n\r\nexport function logOutUser() {\r\n return api.post('API/UserAuth/LogOut').then(response => {\r\n return true;\r\n });\r\n}\r\n\r\nexport function getProfileImagePath(profileImage) {\r\n return (\r\n api.getApiUrl() +\r\n 'FileDownload/ProfileImage/' +\r\n btoa(\r\n api.getAuthHeaders().d + '|' + api.getAuthHeaders().t + '|' + profileImage\r\n )\r\n );\r\n}\r\n\r\nexport function updateUser(\r\n email,\r\n phone,\r\n addressLine1,\r\n addressLine2,\r\n city,\r\n state,\r\n zip,\r\n diplomaFirstName,\r\n diplomaLastName\r\n) {\r\n return api\r\n .post('API/UserAuth/UpdateUser', {\r\n Email: email,\r\n Phone: phone,\r\n AddressLine1: addressLine1,\r\n AddressLine2: addressLine2,\r\n City: city,\r\n State: state,\r\n Zip: zip,\r\n DiplomaFirstName: diplomaFirstName,\r\n DiplomaLastName: diplomaLastName\r\n })\r\n .then(response => {\r\n return response.data;\r\n });\r\n}\r\n\r\nexport function listUserNotification(showAll) {\r\n return api\r\n .get(\r\n 'API/UserAuth/ListUserNotification?showAll=' +\r\n (showAll ? 'true' : 'false')\r\n )\r\n .then(response => {\r\n return response.data;\r\n });\r\n}\r\n\r\nexport function savePayPalPayment(request) {\r\n return api.post('API/UserAuth/SavePayment', request).then(response => {\r\n return response.data;\r\n });\r\n}\r\n\r\nexport function trackDocSigned(reference) {\r\n return api\r\n .post(\r\n 'API/UserAuth/TrackDocSigned?reference=' + encodeURIComponent(reference)\r\n )\r\n .then(response => {\r\n return response.data;\r\n });\r\n}\r\n\r\nexport function requestPasswordReset(email) {\r\n return api\r\n .post(\r\n 'API/UserAuth/RequestPasswordReset?email=' + encodeURIComponent(email)\r\n )\r\n .then(response => {\r\n return response.data;\r\n });\r\n}\r\n\r\nexport function resetPassword(email, code, password) {\r\n return api\r\n .post(\r\n 'API/UserAuth/ResetPassword?email=' +\r\n encodeURIComponent(email) +\r\n '&code=' +\r\n encodeURIComponent(code) +\r\n '&password=' +\r\n encodeURIComponent(password)\r\n )\r\n .then(response => {\r\n return response.data;\r\n });\r\n}\r\n\r\nexport function listJobListing(password) {\r\n return api\r\n .get('API/UserAuth/ListJobListing?password=' + encodeURIComponent(password))\r\n .then(response => {\r\n return response.data;\r\n });\r\n}\r\n\r\nexport function generateUUID() {\r\n // Public Domain/MIT\r\n var d = new Date().getTime(); //Timestamp\r\n var d2 =\r\n (typeof performance !== 'undefined' &&\r\n performance.now &&\r\n performance.now() * 1000) ||\r\n 0; //Time in microseconds since page-load or 0 if unsupported\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\r\n var r = Math.random() * 16; //random number between 0 and 16\r\n if (d > 0) {\r\n //Use timestamp until depleted\r\n r = (d + r) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n } else {\r\n //Use microseconds since page-load if supported\r\n r = (d2 + r) % 16 | 0;\r\n d2 = Math.floor(d2 / 16);\r\n }\r\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\r\n });\r\n}\r\n","import * as types from './actionTypes';\r\nimport * as apiConfig from '../../api/apiConfig';\r\nimport * as authApi from '../../api/authApi';\r\n\r\nexport function deviceReady(device) {\r\n return {\r\n type: types.AUTH_DEVICE_READY,\r\n device: apiConfig.setDefaultConfig(device)\r\n };\r\n}\r\n\r\nexport function userLoggedIn(user) {\r\n return {\r\n type: types.AUTH_USER_LOGIN,\r\n user\r\n };\r\n}\r\n\r\nexport function userLoggedOut() {\r\n return {\r\n type: types.AUTH_USER_LOGIN,\r\n user: null\r\n };\r\n}\r\n\r\nexport function dataLoading(isLoading, loadingMessage) {\r\n return {\r\n type: types.AUTH_DATA_LOADING,\r\n isLoading,\r\n loadingMessage\r\n };\r\n}\r\n\r\nexport function checkAuthToken() {\r\n return function(dispatch, getState) {\r\n return authApi.checkAuthToken().then(result => {\r\n dispatch(userLoggedIn(result));\r\n return result;\r\n });\r\n };\r\n}\r\n\r\nexport function verifyEmail(code) {\r\n return function(dispatch, getState) {\r\n return authApi.verifyEmail(code).then(result => {\r\n dispatch(userLoggedIn(result));\r\n return result;\r\n });\r\n };\r\n}\r\n\r\nexport function verifyText(code) {\r\n return function(dispatch, getState) {\r\n return authApi.verifyText(code).then(result => {\r\n dispatch(userLoggedIn(result));\r\n return result;\r\n });\r\n };\r\n}\r\n\r\nexport function logInUser(email, password) {\r\n return function(dispatch, getState) {\r\n return authApi.logInUser(email, password).then(result => {\r\n dispatch(userLoggedIn(result));\r\n return result;\r\n });\r\n };\r\n}\r\n\r\nexport function logOutUser() {\r\n return function(dispatch, getState) {\r\n return authApi.logOutUser().then(result => {\r\n dispatch(userLoggedOut(result));\r\n return result;\r\n });\r\n };\r\n}\r\n\r\nexport function updateUser(\r\n email,\r\n phone,\r\n addressLine1,\r\n addressLine2,\r\n city,\r\n state,\r\n zip,\r\n diplomaFirstName,\r\n diplomaLastName\r\n) {\r\n return function(dispatch, getState) {\r\n return authApi\r\n .updateUser(\r\n email,\r\n phone,\r\n addressLine1,\r\n addressLine2,\r\n city,\r\n state,\r\n zip,\r\n diplomaFirstName,\r\n diplomaLastName\r\n )\r\n .then(userUpdateResult => {\r\n return userUpdateResult;\r\n });\r\n };\r\n}\r\n\r\nexport function setDataLoading(isLoading, loadingMessage) {\r\n return function(dispatch, getState) {\r\n return dispatch(dataLoading(isLoading, loadingMessage));\r\n };\r\n}\r\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from 'redux';\nimport * as authActions from '../../redux/actions/authActions';\n\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\n\nimport './index.css';\n\nfunction CircularProgressWithLabel(props) {\n return (\n <>\n \n \n \n \n \n {props.progressLabel}\n \n \n \n \n );\n}\n\nfunction DashboardItem({ title, children, icon, progress, progressLabel }) {\n return (\n
\n
\n

{title}

\n
{children}
\n {icon ?
{icon}
: null}\n {progress !== undefined ? (\n
\n \n
\n ) : null}\n
\n
\n );\n}\n\nfunction mapStateToProps(state) {\n return {\n auth: state.auth,\n commonData: state.commonData\n };\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n actions: bindActionCreators(authActions, dispatch)\n };\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DashboardItem);\n","import React from 'react';\r\nimport { createTheme, ThemeProvider } from '@mui/material/styles';\r\n\r\nconst theme = createTheme({\r\n status: {\r\n danger: '#e53e3e'\r\n },\r\n palette: {\r\n primary: {\r\n main: '#0971f1',\r\n darker: '#053e85'\r\n },\r\n neutral: {\r\n main: '#d4af37',\r\n contrastText: '#ffffff'\r\n },\r\n answered: {\r\n main: '#000135',\r\n contrastText: '#d4af37'\r\n },\r\n notAnswered: {\r\n main: '#FFFFFF',\r\n contrastText: '#d4af37'\r\n },\r\n white: {\r\n main: '#FFFFFF',\r\n contrastText: '#000135'\r\n }\r\n }\r\n});\r\n\r\nfunction AdiThemeProvider({ children }) {\r\n return {children};\r\n}\r\n\r\nexport default AdiThemeProvider;\r\n","import * as api from './apiConfig';\r\n\r\nexport function getStudentDashboard(userID) {\r\n return api\r\n .get(\r\n 'API/StudentData/GetStudentDashboard' +\r\n (userID ? '?userID=' + userID : '')\r\n )\r\n .then(response => response.data);\r\n}\r\n\r\nexport function listCurriculum(userID) {\r\n return api\r\n .get('API/StudentData/ListCurriculum' + (userID ? '?userID=' + userID : ''))\r\n .then(response => response.data);\r\n}\r\n\r\nexport function getLessonVideo(\r\n sectionID,\r\n sectonChapterID,\r\n sectionChapterLessonID\r\n) {\r\n return api\r\n .get(\r\n 'API/StudentData/GetLessonVideo?sectionID=' +\r\n sectionID +\r\n '§onChapterID=' +\r\n sectonChapterID +\r\n '§ionChapterLessonID=' +\r\n sectionChapterLessonID\r\n )\r\n .then(response => response.data.split('\"').join(''));\r\n}\r\n\r\nexport function updateLessonVideoTime(sectionChapterLessonID, time) {\r\n return api\r\n .post(\r\n 'API/StudentData/UpdateLessonVideoTime?sectionChapterLessonID=' +\r\n sectionChapterLessonID +\r\n '&time=' +\r\n encodeURIComponent(time)\r\n )\r\n .then(response => response.data);\r\n}\r\n\r\nexport function updateLessonVideoEnded(sectionChapterLessonID) {\r\n return api\r\n .post(\r\n 'API/StudentData/UpdateLessonVideoEnded?sectionChapterLessonID=' +\r\n sectionChapterLessonID\r\n )\r\n .then(response => response.data);\r\n}\r\n\r\nexport function getSectionTest(sectionChapterID, startOver) {\r\n return api\r\n .get(\r\n 'API/StudentData/GetSectionTest?sectionChapterID=' +\r\n sectionChapterID +\r\n '&startOver=' +\r\n (startOver ? 'true' : 'false')\r\n )\r\n .then(response => response.data);\r\n}\r\n\r\nexport function saveSectionTestAnswer(\r\n userTestID,\r\n sectionChapterQuestionID,\r\n sectionChapterQuestionAnswerID\r\n) {\r\n return api\r\n .post(\r\n 'API/StudentData/SaveSectionTestAnswer?userTestID=' +\r\n userTestID +\r\n '§ionChapterQuestionID=' +\r\n sectionChapterQuestionID +\r\n '§ionChapterQuestionAnswerID=' +\r\n sectionChapterQuestionAnswerID\r\n )\r\n .then(response => response.data);\r\n}\r\n\r\nexport function getSectionPDF(fileName) {\r\n return api\r\n .get(\r\n 'API/StudentData/GetSectionPDF?fileName=' + encodeURIComponent(fileName)\r\n )\r\n .then(response => response.data);\r\n}\r\n\r\nexport function listAnnouncement() {\r\n return api\r\n .get('API/StudentData/ListAnnouncement')\r\n .then(response => response.data);\r\n}\r\n","import * as types from './actionTypes';\r\nimport * as studentDataApi from '../../api/studentDataApi';\r\n\r\nexport function studentDashboardLoaded(dash) {\r\n return {\r\n type: types.STUDENT_DASHBOARD_LOADED,\r\n dash\r\n };\r\n}\r\n\r\nexport function loadStudentDashboard(userID) {\r\n return function(dispatch, getState) {\r\n return studentDataApi.getStudentDashboard(userID).then(result => {\r\n dispatch(studentDashboardLoaded(result));\r\n return result;\r\n });\r\n };\r\n}\r\n\r\nexport function curriculumLoaded(curriculum, userID) {\r\n return {\r\n type: types.STUDENT_CURRICULUM_LOADED,\r\n curriculum,\r\n userID\r\n };\r\n}\r\n\r\nexport function loadCurriculum(userID) {\r\n return function(dispatch, getState) {\r\n return studentDataApi.listCurriculum(userID).then(result => {\r\n dispatch(curriculumLoaded(result, userID));\r\n return result;\r\n });\r\n };\r\n}\r\n\r\nexport function clearCurriculum() {\r\n return function(dispatch, getState) {\r\n return dispatch(curriculumLoaded(null, null));\r\n };\r\n}\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { Link } from 'react-router-dom';\r\nimport moment from 'moment';\r\n\r\nimport { PayPalButtons } from '@paypal/react-paypal-js';\r\nimport SchoolIcon from '@mui/icons-material/School';\r\nimport DescriptionIcon from '@mui/icons-material/Description';\r\nimport AutoStoriesIcon from '@mui/icons-material/AutoStories';\r\nimport DesktopWindowsIcon from '@mui/icons-material/DesktopWindows';\r\nimport CampaignIcon from '@mui/icons-material/Campaign';\r\nimport LaunchIcon from '@mui/icons-material/Launch';\r\nimport Button from '@mui/material/Button';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\r\nimport DeleteIcon from '@mui/icons-material/Delete';\r\nimport EditIcon from '@mui/icons-material/Edit';\r\nimport { Alert, LinearProgress } from '@mui/material';\r\n\r\nimport DashBoardItem from './DashboardItem';\r\nimport AdiThemeProvider from '../AdiThemeProvider';\r\nimport { getApiUrl } from '../../api/apiConfig';\r\nimport { savePayPalPayment } from '../../api/authApi';\r\nimport * as studentDataActions from '../../redux/actions/studentDataActions';\r\nimport * as authActions from '../../redux/actions/authActions';\r\n\r\nimport { listAnnouncement } from 'api/studentDataApi';\r\n\r\nimport './index.css';\r\n\r\nfunction StudentDashboard({ auth, actions, studentData }) {\r\n const actionsRef = useRef();\r\n const [announcementList, setAnnouncementList] = useState(null);\r\n const [jobOfferList, setJobOfferList] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!studentData.dash) {\r\n actions.loadStudentDashboard();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n loadAnnouncementList();\r\n }, []);\r\n\r\n function loadAnnouncementList() {\r\n listAnnouncement().then(_announcementList => {\r\n setAnnouncementList(\r\n _announcementList.filter(\r\n announcement => announcement.AnnouncementTypeID === 1\r\n )\r\n );\r\n setJobOfferList(\r\n _announcementList.filter(\r\n announcement => announcement.AnnouncementTypeID === 2\r\n )\r\n );\r\n });\r\n }\r\n\r\n actionsRef.current = actions;\r\n\r\n useEffect(() => {\r\n console.log('studentData', studentData);\r\n }, [studentData]);\r\n\r\n return studentData.dash ? (\r\n
\r\n
\r\n {auth.user.IsDocSigned ? (\r\n auth.user.IsActive ? (\r\n

Welcome, {auth.user.FirstName}

\r\n ) : (\r\n

\r\n {auth.user.DocuSignUrl\r\n ? 'Enrollment Packet Sent'\r\n : 'Registration Complete'}\r\n

\r\n )\r\n ) : (\r\n

Complete Registration

\r\n )}\r\n {auth.user.IsPaid ? (\r\n auth.user.IsDocSigned ? (\r\n auth.user.IsActive ? (\r\n <>\r\n

Are you ready for your next lesson?

\r\n\r\n
\r\n \r\n {studentData.dash.SectionPercentCompleted ? (\r\n <>{studentData.dash.SectionPercentCompleted}%\r\n ) : (\r\n <>0%\r\n )}\r\n \r\n }>\r\n
\r\n

\r\n {studentData.dash.SectionCountCompleted} out of{' '}\r\n {studentData.dash.SectionCountTotal} complete\r\n

\r\n
\r\n
\r\n
\r\n {studentData.dash.DaysRemaining > 0 ? (\r\n \r\n Go to current section\r\n \r\n ) : (\r\n <>Access Expired\r\n )}\r\n
\r\n \r\n\r\n }>\r\n

\r\n Take a look at your 3D Interactive Learning Platform\r\n Transcript!\r\n

\r\n
\r\n \r\n \r\n View\r\n \r\n \r\n
\r\n \r\n\r\n 90\r\n ? 100\r\n : (studentData.dash.DaysRemaining / 90) * 100\r\n }\r\n progressLabel={\r\n <>\r\n {studentData.dash.DaysRemaining ? (\r\n <>\r\n {studentData.dash.DaysRemaining} days\r\n \r\n ) : (\r\n <>\r\n 0days\r\n \r\n )}\r\n \r\n }>\r\n

\r\n Students receive access to their course material for up to\r\n 90 days.\r\n

\r\n \r\n\r\n }>\r\n

\r\n Diploma shipping address. Please verify how your name\r\n should appear on your diploma:\r\n

\r\n
\r\n {studentData.dash.AddressLine1 ? (\r\n <>\r\n

\r\n {studentData.dash.DiplomaFirstName}{' '}\r\n {studentData.dash.DiplomaLastName}\r\n

\r\n

{studentData.dash.AddressLine1}

\r\n

\r\n {studentData.dash.AddressLine2\r\n ? studentData.dash.AddressLine2\r\n : null}\r\n

\r\n

\r\n {studentData.dash.City}, {studentData.dash.State},{' '}\r\n {studentData.dash.Zip}\r\n

\r\n \r\n ) : (\r\n

\r\n Click the button below to add your mailing address.\r\n

\r\n )}\r\n
\r\n
\r\n \r\n \r\n Update\r\n \r\n \r\n
\r\n \r\n\r\n \r\n

\r\n Thank you for trusting ADI with your career. Below is a\r\n summmary of your account.\r\n

\r\n
\r\n

\r\n Registration Date:{' '}\r\n {studentData.dash.DateEnrolled\r\n ? moment(studentData.dash.DateEnrolled).format(\r\n 'MM/DD/YYYY'\r\n )\r\n : 'Not yet enrolled'}\r\n

\r\n

\r\n Start Date:{' '}\r\n {studentData.dash.DateStarted\r\n ? moment(studentData.dash.DateStarted).format(\r\n 'MM/DD/YYYY'\r\n )\r\n : 'Not yet started'}\r\n

\r\n

\r\n Location:{' '}\r\n {studentData.dash.PromoCodeName\r\n ? studentData.dash.PromoCodeName\r\n : 'Not yet enrolled'}\r\n

\r\n

\r\n Registration Fee: ${auth.user.PaymentAmount.toFixed(2)}\r\n

\r\n
\r\n {/* \r\n \r\n Download\r\n \r\n */}\r\n
\r\n\r\n {/* }>\r\n

\r\n Press the download button below to have instant access to\r\n your digital textbook!\r\n

\r\n
\r\n \r\n \r\n \r\n
\r\n */}\r\n
\r\n\r\n
\r\n
\r\n
\r\n

\r\n \r\n Job Placement Resources\r\n

\r\n
\r\n\r\n
\r\n\r\n
\r\n {jobOfferList ? (\r\n jobOfferList.length ? (\r\n jobOfferList.map(announcement => (\r\n
\r\n
\r\n
{announcement.Title}
\r\n

{announcement.Description}

\r\n
\r\n {announcement.Url ? (\r\n
\r\n \r\n \r\n \r\n
\r\n ) : null}\r\n
\r\n ))\r\n ) : (\r\n
\r\n No resources have been added.\r\n
\r\n )\r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n\r\n
\r\n
\r\n

\r\n Announcements\r\n

\r\n
\r\n\r\n
\r\n\r\n
\r\n {announcementList ? (\r\n announcementList.length ? (\r\n announcementList.map(announcement => (\r\n
\r\n
\r\n
{announcement.Title}
\r\n

{announcement.Description}

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n ))\r\n ) : (\r\n
\r\n No announcements have been added.\r\n
\r\n )\r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n ) : (\r\n
\r\n {auth.user.DocuSignUrl ? (\r\n

\r\n Thank you for completing your enrollment paperwork using\r\n DocuSign, the #1 trusted eSignature platform. Your records\r\n are digital sealed and secured.\r\n

\r\n ) : null}\r\n

\r\n You’ve completed the Automotive Dealerships Institute’s\r\n registration process. Check your email inbox for how to get\r\n started. We are available to answer questions at 877-998-7200.\r\n Office hours are Monday through Friday 8:00am to 5:30pm MST.\r\n

\r\n\r\n \r\n {\r\n actions\r\n .logOutUser()\r\n .then(\r\n result =>\r\n (window.location =\r\n 'https://autodealerinstitute.com/')\r\n );\r\n }}>\r\n Done\r\n \r\n \r\n
\r\n )\r\n ) : (\r\n
\r\n \r\n

\r\n Click the button below to continue to DocuSign to complete\r\n registration paperwork.\r\n

\r\n
\r\n \r\n {\r\n return actions.order.capture().then(details => {\r\n console.log('details', details);\r\n if (details.status === 'COMPLETED') {\r\n actionsRef.current.setDataLoading(\r\n true,\r\n 'Saving payment information...'\r\n );\r\n savePayPalPayment({\r\n PayPalOrderId: details.id,\r\n PayPalPayerId: details.payer\r\n ? details.payer.payer_id\r\n : '',\r\n PayPalEmail: details.payer\r\n ? details.payer.email_address\r\n : '',\r\n PayPalFirstName:\r\n details.payer && details.payer.name\r\n ? details.payer.name.given_name\r\n : '',\r\n PayPalLastName:\r\n details.payer && details.payer.name\r\n ? details.payer.name.surname\r\n : '',\r\n Amount: details.purchase_units[0].amount.value\r\n }).then(result => {\r\n console.log('payment result', result);\r\n actionsRef.current.checkAuthToken();\r\n actionsRef.current.setDataLoading(false);\r\n });\r\n }\r\n });\r\n }}\r\n />\r\n
\r\n
\r\n )}\r\n
\r\n \r\n ) : null;\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n auth: state.auth,\r\n studentData: state.studentData,\r\n commonData: state.commonData\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: {\r\n ...bindActionCreators(authActions, dispatch),\r\n ...bindActionCreators(studentDataActions, dispatch)\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(StudentDashboard);\r\n","import React from \"react\";\r\n//import { Link } from \"react-router-dom\";\r\nimport StudentDashboard from \"../StudentDashboard\";\r\n\r\nfunction HomePage() {\r\n return ;\r\n}\r\n\r\nexport default HomePage;\r\n","import * as React from 'react';\r\nimport Popover from '@mui/material/Popover';\r\nimport Button from '@mui/material/Button';\r\nimport AssignmentIndIcon from '@mui/icons-material/AssignmentInd';\r\nimport PowerSettingsNewIcon from '@mui/icons-material/PowerSettingsNew';\r\nimport AttachMoneyIcon from '@mui/icons-material/AttachMoney';\r\nimport DashboardIcon from '@mui/icons-material/Dashboard';\r\nimport MenuIcon from '@mui/icons-material/Menu';\r\nimport { Link } from 'react-router-dom';\r\nimport { useRef, useEffect } from 'react';\r\n\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport * as authActions from '../../redux/actions/authActions';\r\nimport * as studentDataActions from '../../redux/actions/studentDataActions';\r\nimport { getProfileImagePath } from '../../api/authApi';\r\n\r\nfunction AccountMenuButton(props) {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nfunction AccountMenu({ auth, actions }) {\r\n const [showAccountMenu, setShowAccountMenu] = React.useState(null);\r\n const keepAliveTimer = useRef();\r\n\r\n useEffect(() => {\r\n keepAliveTimer.current = setInterval(() => {\r\n actions.checkAuthToken();\r\n }, 15000);\r\n }, []);\r\n\r\n return (\r\n <>\r\n {\r\n setShowAccountMenu(event.currentTarget);\r\n }}\r\n className=\"account-menu-desktop\">\r\n \r\n {auth && auth.user && !auth.user.ProfileImage ? (\r\n
\r\n {auth.user.FirstName.charAt(0) + auth.user.LastName.charAt(0)}\r\n
\r\n ) : null}\r\n \r\n\r\n
\r\n {auth.user.FirstName} {auth.user.LastName}\r\n
\r\n \r\n\r\n {\r\n setShowAccountMenu(event.currentTarget);\r\n }}\r\n className=\"account-menu-mobile\">\r\n \r\n \r\n\r\n {\r\n setShowAccountMenu(null);\r\n }}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'left'\r\n }}>\r\n
\r\n {auth.user.UserLevelID !== 9 ? (\r\n {\r\n setShowAccountMenu(null);\r\n }}\r\n to=\"/\"\r\n startIcon={}>\r\n Dashboard\r\n \r\n ) : null}\r\n\r\n {auth.user.UserLevelID !== 9 ? (\r\n {\r\n setShowAccountMenu(null);\r\n }}\r\n to=\"/my-profile\"\r\n startIcon={}>\r\n My Profile\r\n \r\n ) : null}\r\n\r\n {/* {auth.user.UserLevelID !== 9 ? (\r\n {\r\n setShowAccountMenu(null);\r\n }}\r\n to=\"/billing-history\"\r\n startIcon={}\r\n >\r\n Billing History\r\n \r\n ) : null} */}\r\n\r\n {\r\n actions.clearCurriculum();\r\n actions.logOutUser();\r\n }}\r\n startIcon={}>\r\n Sign Out\r\n \r\n\r\n {auth.user.UserLevelID !== 9 ? (\r\n {\r\n setShowAccountMenu(null);\r\n }}\r\n component={Link}\r\n to=\"/all-notifications\">\r\n View All Notifications\r\n \r\n ) : null}\r\n
\r\n \r\n \r\n );\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n auth: state.auth\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: {\r\n ...bindActionCreators(authActions, dispatch),\r\n ...bindActionCreators(studentDataActions, dispatch)\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AccountMenu);\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport Button from '@mui/material/Button';\r\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';\r\n\r\nimport './index.css';\r\n\r\nfunction NotificationMessageInner({ notification }) {\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n {notification.Message}\r\n \r\n );\r\n}\r\n\r\nfunction NotificationMessage({ notification }) {\r\n return (\r\n \r\n {notification.Url ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default NotificationMessage;\r\n","import * as React from \"react\";\r\nimport Popover from \"@mui/material/Popover\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport NotificationsNoneIcon from \"@mui/icons-material/NotificationsNone\";\r\nimport Button from \"@mui/material/Button\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Badge from \"@mui/material/Badge\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as authActions from \"../../redux/actions/authActions\";\r\nimport { listUserNotification } from \"../../api/authApi\";\r\nimport NotificationMessage from \"../NotificationMessage\";\r\n\r\nfunction NotificationBell({ auth, actions, notification }) {\r\n const [showAccountMenu, setShowAccountMenu] = React.useState(null);\r\n const [notificationList, setNotificationList] = useState(null);\r\n\r\n useEffect(() => {\r\n if (showAccountMenu) {\r\n listUserNotification(false).then((_notificationList) => {\r\n setNotificationList(_notificationList);\r\n actions.checkAuthToken();\r\n });\r\n }\r\n }, [showAccountMenu]);\r\n\r\n return (\r\n <>\r\n {auth.user.UserLevelID !== 9 ? (\r\n {\r\n setShowAccountMenu(event.currentTarget);\r\n }}\r\n >\r\n \r\n \r\n ) : null}\r\n\r\n {auth.user.UserLevelID !== 9 ? (\r\n {\r\n setShowAccountMenu(null);\r\n }}\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"left\",\r\n }}\r\n >\r\n
\r\n
\r\n {notificationList && notificationList.length ? (\r\n notificationList.map((notification) => (\r\n \r\n ))\r\n ) : (\r\n

\r\n You have no new notifications.\r\n

\r\n )}\r\n\r\n {auth.user.UserLevelID !== 9 ? (\r\n {\r\n setShowAccountMenu(null);\r\n }}\r\n component={Link}\r\n to=\"/all-notifications\"\r\n >\r\n View All Notifications\r\n \r\n ) : null}\r\n
\r\n
\r\n \r\n ) : null}\r\n \r\n );\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n auth: state.auth,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: bindActionCreators(authActions, dispatch),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(NotificationBell);\r\n","import React from 'react';\r\nimport NotificationsNoneIcon from '@mui/icons-material/NotificationsNone';\r\nimport Button from '@mui/material/Button';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport AccountMenu from './AccountMenu';\r\nimport NotificationBell from './NotificationBell';\r\nimport './index.css';\r\n\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport * as authActions from '../../redux/actions/authActions';\r\n\r\nconst Header = ({ auth, actions }) => {\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n );\r\n};\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n auth: state.auth\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: bindActionCreators(authActions, dispatch)\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Header);\r\n","import React from 'react';\nimport './index.css';\nimport MenuBookIcon from '@mui/icons-material/MenuBook';\nimport TextField from '@mui/material/TextField';\nimport Button from '@mui/material/Button';\nimport AdiThemeProvider from '../AdiThemeProvider';\n\nconst Footer = () => {\n return (\n
\n
\n
\n \n\n
\n
Contact ADI
\n\n

\n\n
\n Local 480-998-7200

\n Toll-Free 1-877-592-6313{' '}\n

Fax 480-998-7220\n
\n\n

\n\n
\n 6613 N Scottsdale Road

Suite 100

Scottsdale,\n Arizona 85250\n
\n\n

\n\n
\n ®Automotive Dealership Institute™ ADI™ and Auto Dealer Institute™\n are Registered Trademarks of Automotive Dealership Institute, Inc.\n
\n
\n
\n\n
\n
\n \n
\n\n
\n
Keep Up to Date - Get Email Updates
\n

Stay tuned for the latest company news

\n
\n\n
\n \n \n \n Subscribe Now\n \n \n
\n\n
\n
Quick Links
\n
\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Footer;\n","import React from \"react\";\r\n\r\nconst PageNotFound = () =>

Oops! Page not found.

;\r\n\r\nexport default PageNotFound;\r\n","export function validateEmail(email) {\r\n return String(email)\r\n .toLowerCase()\r\n .match(\r\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\r\n );\r\n}\r\n\r\nexport function validatePassword(password) {\r\n return String(password).length >= 7;\r\n}\r\n\r\nexport function scrollToTop() {\r\n window.scrollTo(0, 0);\r\n}\r\n\r\nexport function formatPhoneNumber(phoneNumberString) {\r\n var cleaned = (\"\" + phoneNumberString).replace(/\\D/g, \"\");\r\n var match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\r\n if (match) {\r\n return \"(\" + match[1] + \") \" + match[2] + \"-\" + match[3];\r\n }\r\n return null;\r\n}\r\n","import * as api from './apiConfig';\r\n\r\nexport function listUser() {\r\n return api.get('API/AdminData/ListUser').then(response => response.data);\r\n}\r\n\r\nexport function sendUserNotification(notification) {\r\n return api\r\n .post('API/AdminData/SendUserNotification', notification)\r\n .then(response => response.data);\r\n}\r\n\r\nexport function updateUserDateExpires(userID, daysOut) {\r\n return api\r\n .post(\r\n 'API/AdminData/UpdateUserDateExpires?userID=' +\r\n userID +\r\n '&daysOut=' +\r\n daysOut\r\n )\r\n .then(response => response.data);\r\n}\r\n\r\nexport function updateUserIsActive(userID, isActive) {\r\n return api\r\n .post(\r\n 'API/AdminData/UpdateUserIsActive?userID=' +\r\n userID +\r\n '&isActive=' +\r\n (isActive ? 'true' : 'false')\r\n )\r\n .then(response => response.data);\r\n}\r\n\r\nexport function listUserActivity(userID) {\r\n return api\r\n .get('API/AdminData/ListUserActivity' + (userID ? '?userID=' + userID : ''))\r\n .then(response => response.data);\r\n}\r\n\r\nexport function listUserDevice(userID) {\r\n return api\r\n .get('API/AdminData/ListUserDevice?userID=' + userID)\r\n .then(response => response.data);\r\n}\r\n\r\nexport function listUserNotificationAdmin(userID) {\r\n return api\r\n .get('API/AdminData/ListUserNotification?userID=' + userID)\r\n .then(response => response.data);\r\n}\r\n\r\nexport function saveAnnouncement(announcement) {\r\n return api\r\n .post('API/AdminData/SaveAnnouncement', announcement)\r\n .then(response => response.data);\r\n}\r\n\r\nexport function deleteAnnouncement(announcementID) {\r\n return api\r\n .post('API/AdminData/DeleteAnnouncement?announcementID=' + announcementID)\r\n .then(response => response.data);\r\n}\r\n\r\nexport function updateDiplomaIssueDate(userID, dateIssued) {\r\n return api\r\n .post(\r\n 'API/AdminData/UpdateDiplomaIssueDate?userID=' +\r\n userID +\r\n '&dateIssued=' +\r\n encodeURIComponent(dateIssued)\r\n )\r\n .then(response => response.data);\r\n}\r\n\r\nexport function listPromoCode() {\r\n return api.get('API/AdminData/ListPromoCode').then(response => response.data);\r\n}\r\n\r\nexport function savePromoCode(promoCode) {\r\n return api\r\n .post('API/AdminData/SavePromoCode', promoCode)\r\n .then(response => response.data);\r\n}\r\n\r\nexport function deletePromoCode(promoCode) {\r\n return api\r\n .post('API/AdminData/DeletePromoCode', promoCode)\r\n .then(response => response.data);\r\n}\r\n\r\nexport function deleteUser(userID) {\r\n return api\r\n .post('API/AdminData/DeleteUser?userID=' + userID)\r\n .then(response => response.data);\r\n}\r\n\r\nexport function listEmail(mailTo) {\r\n return api\r\n .get('API/AdminData/ListEmail?mailTo=' + encodeURIComponent(mailTo))\r\n .then(response => response.data);\r\n}\r\n\r\nexport function listJobListing() {\r\n return api\r\n .get('API/AdminData/ListJobListing')\r\n .then(response => response.data);\r\n}\r\n\r\nexport function importJobListing(fileName) {\r\n return api\r\n .post(\r\n 'API/AdminData/ImportJobListing?fileName=' + encodeURIComponent(fileName)\r\n )\r\n .then(response => response.data);\r\n}\r\n\r\nexport function deleteJobListing(jobListingID) {\r\n return api\r\n .post('API/AdminData/DeleteJobListing?jobListingID=' + jobListingID)\r\n .then(response => response.data);\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport TextField from '@mui/material/TextField';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport Button from '@mui/material/Button';\r\nimport AdiThemeProvider from '../AdiThemeProvider';\r\nimport InputMask from 'react-input-mask';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport InputAdornment from '@mui/material/InputAdornment';\r\nimport Visibility from '@mui/icons-material/Visibility';\r\nimport VisibilityOff from '@mui/icons-material/VisibilityOff';\r\nimport Select from '@mui/material/Select';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport FormControl from '@mui/material/FormControl';\r\n\r\nimport * as authActions from '../../redux/actions/authActions';\r\nimport { listPromoCode } from '../../api/adminDataApi';\r\nimport { registerUser } from '../../api/authApi';\r\nimport { getCookie, setCookie } from '../../api/apiConfig';\r\nimport { validateEmail, validatePassword } from '../CommonFunctions';\r\n\r\nimport './index.css';\r\n\r\nfunction useQuery() {\r\n return new URLSearchParams(useLocation().search);\r\n}\r\n\r\nconst RegistrationForm = ({\r\n auth,\r\n actions,\r\n activeStep,\r\n setActiveStep,\r\n doLogin,\r\n isAdmin,\r\n onRegistration\r\n}) => {\r\n let query = useQuery();\r\n const [promoCode, setPromoCode] = useState(\r\n query.get('promoCode')\r\n ? query.get('promoCode')\r\n : getCookie('promoCode')\r\n ? getCookie('promoCode')\r\n : ''\r\n );\r\n const [promoCodeList, setPromoCodeList] = useState(null);\r\n\r\n const [newUser, setNewUser] = useState({});\r\n\r\n const [values, setValues] = React.useState({\r\n password: '',\r\n showPassword: false\r\n });\r\n\r\n console.log('promoCode', promoCode);\r\n\r\n useEffect(() => {\r\n if (isAdmin) {\r\n listPromoCode().then(_promoCodeList => setPromoCodeList(_promoCodeList));\r\n }\r\n }, []);\r\n\r\n // useEffect(() => {\r\n // if (!promoCode && activeStep === 'Register') {\r\n // window.location =\r\n // 'https://www.autodealerinstitute.com/coupon-code-assistance';\r\n // }\r\n // }, [activeStep]);\r\n\r\n useEffect(() => {\r\n if (promoCode) {\r\n setCookie('promoCode', promoCode);\r\n }\r\n }, [promoCode]);\r\n\r\n const handleClickShowPassword = () => {\r\n setValues({\r\n ...values,\r\n showPassword: !values.showPassword\r\n });\r\n };\r\n\r\n const handleMouseDownPassword = event => {\r\n event.preventDefault();\r\n };\r\n\r\n return (\r\n <>\r\n {newUser.error ?

{newUser.error}

: null}\r\n\r\n {!isAdmin ? (\r\n <>\r\n

Welcome!

\r\n\r\n

\r\n Complete the form below and we’ll email you enrollment documents to\r\n complete and sign using DocuSign, the #1 trusted eSignature\r\n platform. Your records are digitally sealed and secured with layers\r\n of security and authentication.\r\n

\r\n \r\n ) : (\r\n <>\r\n

\r\n The student will receive their login information in their email.\r\n

\r\n\r\n {promoCodeList ? (\r\n \r\n Promo Code\r\n setPromoCode(event.target.value)}>\r\n {promoCodeList.map(_promoCode => (\r\n \r\n {_promoCode.PromoCodeName}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n \r\n )}\r\n\r\n \r\n setNewUser({\r\n ...newUser,\r\n firstName: event.target.value\r\n })\r\n }\r\n />\r\n\r\n \r\n setNewUser({\r\n ...newUser,\r\n lastName: event.target.value\r\n })\r\n }\r\n />\r\n\r\n \r\n setNewUser({\r\n ...newUser,\r\n email: event.target.value\r\n })\r\n }\r\n />\r\n\r\n \r\n setNewUser({\r\n ...newUser,\r\n phone: event.target.value\r\n })\r\n }>\r\n {() => (\r\n \r\n )}\r\n \r\n\r\n \r\n setNewUser({\r\n ...newUser,\r\n password: event.target.value\r\n })\r\n }\r\n InputProps={{\r\n endAdornment: (\r\n \r\n \r\n {values.showPassword ? : }\r\n \r\n \r\n )\r\n }}\r\n />\r\n\r\n {!isAdmin ? (\r\n \r\n setNewUser({\r\n ...newUser,\r\n checkedBox: event.target.checked\r\n })\r\n }\r\n />\r\n }\r\n className=\"checkbox\"\r\n label={\r\n <>\r\n By signing up, you agree to Terms of Service{' '}\r\n and Privacy Policy\r\n \r\n }\r\n />\r\n ) : null}\r\n\r\n \r\n {\r\n actions.setDataLoading(true, 'Creating your account...');\r\n registerUser(\r\n promoCode,\r\n newUser.email,\r\n newUser.password,\r\n newUser.firstName,\r\n newUser.lastName,\r\n newUser.phone,\r\n isAdmin\r\n ).then(result => {\r\n console.log('registerUser result', result);\r\n if (result && result.UserID) {\r\n if (onRegistration) {\r\n onRegistration();\r\n actions.setDataLoading(false);\r\n } else {\r\n //If the user registered successfully, go ahead and log them in with the known credentials\r\n doLogin(newUser.email, newUser.password).then(result =>\r\n actions.setDataLoading(false)\r\n );\r\n }\r\n } else {\r\n actions.setDataLoading(false);\r\n setNewUser({\r\n ...newUser,\r\n error: result.AppMessage\r\n });\r\n }\r\n });\r\n }}>\r\n Create Account\r\n \r\n \r\n\r\n {!isAdmin ? (\r\n

\r\n Already a member?{' '}\r\n {\r\n setActiveStep('Login');\r\n }}>\r\n Login here.\r\n \r\n

\r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n auth: state.auth\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: bindActionCreators(authActions, dispatch)\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(RegistrationForm);\r\n","import React, { useEffect, useState } from 'react';\r\nimport './index.css';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport TextField from '@mui/material/TextField';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport Button from '@mui/material/Button';\r\nimport AdiThemeProvider from '../AdiThemeProvider';\r\nimport ReactCodeInput from 'react-code-input';\r\nimport InputMask from 'react-input-mask';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Input from '@mui/material/Input';\r\nimport FilledInput from '@mui/material/FilledInput';\r\nimport OutlinedInput from '@mui/material/OutlinedInput';\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport InputAdornment from '@mui/material/InputAdornment';\r\nimport FormHelperText from '@mui/material/FormHelperText';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport Visibility from '@mui/icons-material/Visibility';\r\nimport VisibilityOff from '@mui/icons-material/VisibilityOff';\r\nimport Radio from '@mui/material/Radio';\r\nimport RadioGroup from '@mui/material/RadioGroup';\r\nimport FormLabel from '@mui/material/FormLabel';\r\n\r\nimport * as authActions from '../../redux/actions/authActions';\r\nimport {\r\n registerUser,\r\n getEmailVerificationCode,\r\n getTextVerificationCode,\r\n requestPasswordReset,\r\n resetPassword\r\n} from '../../api/authApi';\r\nimport {\r\n scrollToTop,\r\n validateEmail,\r\n validatePassword\r\n} from '../CommonFunctions';\r\nimport RegistrationForm from '../RegistrationForm';\r\n\r\nconst LoginForm = ({ auth, actions }) => {\r\n const [activeStep, setActiveStep] = useState(null);\r\n const [newUser, setNewUser] = useState({});\r\n const [user, setUser] = useState({});\r\n const [emailVerify, setEmailVerify] = useState({});\r\n const [textVerify, setTextVerify] = useState({});\r\n const [codeFail, setCodeFail] = useState({});\r\n const [showEmailSent, setShowEmailSent] = useState(false);\r\n const [invalidPasswordResetCode, setInvalidPasswordResetCode] = useState(\r\n false\r\n );\r\n const [activationMethod, setActivationMethod] = useState(null);\r\n\r\n const [values, setValues] = React.useState({\r\n password: '',\r\n showPassword: false\r\n });\r\n\r\n const handleClickShowPassword = () => {\r\n setValues({\r\n ...values,\r\n showPassword: !values.showPassword\r\n });\r\n };\r\n\r\n const handleMouseDownPassword = event => {\r\n event.preventDefault();\r\n };\r\n\r\n useEffect(() => {\r\n if (textVerify.code && String(textVerify.code).length === 6)\r\n submitTextCode();\r\n }, [textVerify]);\r\n\r\n function submitTextCode() {\r\n setCodeFail({ ...codeFail, text: false });\r\n actions.verifyText(textVerify.code).then(result => {\r\n if (!result.EmailVerificationRequired) {\r\n setCodeFail({ ...codeFail, text: true });\r\n }\r\n console.log('verifyText result', result);\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n if (emailVerify.code && String(emailVerify.code).length === 6)\r\n submitEmailCode();\r\n }, [emailVerify]);\r\n\r\n function submitEmailCode() {\r\n setCodeFail({ ...codeFail, email: false });\r\n actions.verifyEmail(emailVerify.code).then(result => {\r\n if (!result.EmailVerificationRequired) {\r\n setCodeFail({ ...codeFail, email: true });\r\n }\r\n console.log('verifyEmail result', result);\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n console.log('auth', auth);\r\n if (auth && auth.token && !auth.user) {\r\n //Try to log the user in based on their token\r\n actions.checkAuthToken();\r\n }\r\n\r\n if (auth && !auth.user) {\r\n actions.checkAuthToken().then(result => {\r\n console.log('auth token result', result);\r\n });\r\n }\r\n\r\n if (auth) {\r\n if (auth.user && auth.user.IsUser) {\r\n if (\r\n (auth.user.EmailVerificationRequired ||\r\n auth.user.TextVerificationRequired) &&\r\n !activationMethod\r\n ) {\r\n setActiveStep('Activation');\r\n } else if (\r\n auth.user.EmailVerificationRequired &&\r\n activationMethod === 'Email'\r\n ) {\r\n setActiveStep('Email');\r\n } else if (\r\n auth.user.TextVerificationRequired &&\r\n activationMethod === 'Text'\r\n ) {\r\n setActiveStep('Text');\r\n } else {\r\n setActiveStep('Login');\r\n }\r\n } else if (!activeStep) {\r\n if (auth.device.hasAuthToken) {\r\n setActiveStep('Login');\r\n } else {\r\n setActiveStep('Register');\r\n }\r\n }\r\n }\r\n }, [auth]);\r\n\r\n useEffect(() => {\r\n scrollToTop();\r\n }, [activeStep]);\r\n\r\n function doLogin(email, password) {\r\n return actions.logInUser(email, password).then(result => {\r\n console.log('result in app', result);\r\n return result;\r\n });\r\n }\r\n\r\n function isLoginValid() {\r\n return (\r\n user.email &&\r\n user.password &&\r\n validateEmail(user.email) &&\r\n validatePassword(user.password)\r\n );\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n

Welcome Back!

\r\n\r\n

Please use the form below to sign in

\r\n\r\n {user.error ?

{user.error}

: null}\r\n {\r\n console.log('On Submit Called');\r\n actions.setDataLoading(true, 'Logging in...');\r\n if (isLoginValid()) {\r\n setUser({ ...user, error: '' });\r\n doLogin(user.email, user.password).then(result => {\r\n actions.setDataLoading(false);\r\n if (!result.IsUser) {\r\n actions.setDataLoading(false);\r\n setUser({\r\n ...user,\r\n error: 'Invalid email or password. Please try again.'\r\n });\r\n }\r\n });\r\n }\r\n\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }}>\r\n
\r\n \r\n setUser({\r\n ...user,\r\n email: event.target.value\r\n })\r\n }\r\n />\r\n\r\n \r\n setUser({\r\n ...user,\r\n password: event.target.value\r\n })\r\n }\r\n InputProps={{\r\n endAdornment: (\r\n \r\n \r\n {values.showPassword ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n )\r\n }}\r\n />\r\n
\r\n\r\n \r\n \r\n Sign In\r\n \r\n \r\n \r\n\r\n

\r\n {\"Don't have an account?\"}{' '}\r\n {\r\n setActiveStep('Register');\r\n }}>\r\n Register here.\r\n \r\n

\r\n

\r\n {\r\n setActiveStep('PasswordReset');\r\n }}>\r\n Forgot password?\r\n \r\n

\r\n
\r\n\r\n \r\n <>\r\n

\r\n Please enter your email so we can help you reset your password.\r\n

\r\n \r\n setUser({ ...user, email: event.target.value })\r\n }\r\n />\r\n\r\n \r\n {\r\n actions.setDataLoading(true, 'Requesting...');\r\n requestPasswordReset(user.email).then(result => {\r\n setShowEmailSent(true);\r\n setActiveStep('ResetVerify');\r\n actions.setDataLoading(false);\r\n });\r\n }}>\r\n Submit\r\n \r\n \r\n \r\n
\r\n\r\n \r\n <>\r\n

Please enter the code we sent to your email.

\r\n
\r\n \r\n setEmailVerify({\r\n ...emailVerify,\r\n code: value\r\n })\r\n }\r\n />\r\n
\r\n\r\n \r\n {\r\n setActiveStep('NewPassword');\r\n }}>\r\n Submit\r\n \r\n \r\n\r\n {invalidPasswordResetCode ? (\r\n

\r\n Invalid code, please try again.\r\n

\r\n ) : showEmailSent ? (\r\n

\r\n We've sent you an email with further instructions on how to\r\n reset your password.\r\n

\r\n ) : null}\r\n \r\n
\r\n\r\n \r\n <>\r\n

Please enter a new password.

\r\n \r\n setUser({\r\n ...user,\r\n password: event.target.value\r\n })\r\n }\r\n InputProps={{\r\n endAdornment: (\r\n \r\n \r\n {values.showPassword ? : }\r\n \r\n \r\n )\r\n }}\r\n />\r\n\r\n \r\n {\r\n setInvalidPasswordResetCode(false);\r\n actions.setDataLoading(true, 'Saving your password...');\r\n resetPassword(\r\n user.email,\r\n emailVerify.code,\r\n user.password\r\n ).then(result => {\r\n actions.setDataLoading(false);\r\n if (result === 'SUCCESS') {\r\n doLogin(user.email, user.password);\r\n } else {\r\n setEmailVerify({\r\n ...emailVerify,\r\n code: null\r\n });\r\n setInvalidPasswordResetCode(true);\r\n setActiveStep('ResetVerify');\r\n }\r\n });\r\n }}>\r\n Change Password\r\n \r\n \r\n \r\n \r\n\r\n \r\n

Device Activation

\r\n\r\n

\r\n To continue logging in, you must activate this device. We'll send a\r\n code to either your email address or the phone number on file.\r\n

\r\n\r\n

Select which method you'd like to use to activate this device.

\r\n\r\n {auth && auth.user ? (\r\n
\r\n \r\n setActivationMethod(newValue)}>\r\n }\r\n label={'Send email to ' + auth.user.Email}\r\n />\r\n }\r\n label={'Send text message to ' + auth.user.Phone}\r\n />\r\n \r\n \r\n
\r\n ) : null}\r\n\r\n \r\n {\r\n actions.setDataLoading(true, 'Requesting code...');\r\n if (activationMethod === 'Email') {\r\n getEmailVerificationCode().then(result => {\r\n actions.setDataLoading(false);\r\n setActiveStep('Email');\r\n });\r\n } else {\r\n getTextVerificationCode().then(result => {\r\n actions.setDataLoading(false);\r\n setActiveStep('Email');\r\n });\r\n }\r\n }}>\r\n Continue\r\n \r\n \r\n \r\n\r\n
\r\n

Email Verification

\r\n\r\n

\r\n We sent a code to{' '}\r\n {auth && auth.user && auth.user.Email\r\n ? auth.user.Email\r\n : ' the email address we have on file'}\r\n . Please use the form below to verify.\r\n

\r\n\r\n
\r\n \r\n setEmailVerify({\r\n ...emailVerify,\r\n code: value\r\n })\r\n }\r\n />\r\n
\r\n\r\n {codeFail.email ? (\r\n

Invalid code, please try again.

\r\n ) : null}\r\n\r\n \r\n {\r\n actions.verifyEmail(emailVerify.code).then(result => {\r\n console.log('verifyEmail result', result);\r\n });\r\n }}>\r\n Submit\r\n \r\n \r\n\r\n

\r\n {\"Didn't receive a code?\"}{' '}\r\n {\r\n setEmailVerify({ ...emailVerify, error: '' });\r\n getEmailVerificationCode().then(result => {\r\n console.log('getEmailVerificationCode', result);\r\n setEmailVerify({\r\n ...emailVerify,\r\n error: result.AppMessage,\r\n success: result.IsSuccess\r\n });\r\n });\r\n }}>\r\n Click here\r\n {' '}\r\n {'to resend.'}\r\n

\r\n\r\n {emailVerify.error ? (\r\n

{emailVerify.error}

\r\n ) : emailVerify.success ? (\r\n

Code requested successfully

\r\n ) : null}\r\n
\r\n\r\n
\r\n

Text Verification

\r\n\r\n

\r\n We sent a code to{' '}\r\n {auth && auth.user && auth.user.Phone\r\n ? auth.user.Phone\r\n : ' the phone number we have on file'}\r\n .. Please use the form below to verify\r\n

\r\n\r\n
\r\n \r\n setTextVerify({\r\n ...textVerify,\r\n code: value\r\n })\r\n }\r\n />\r\n
\r\n\r\n {codeFail.text ? (\r\n

Invalid code, please try again.

\r\n ) : null}\r\n\r\n \r\n {\r\n actions.verifyText(textVerify.code).then(result => {\r\n console.log('verifyText result', result);\r\n });\r\n }}>\r\n Submit\r\n \r\n \r\n\r\n

\r\n {\"Didn't receive a code?\"}{' '}\r\n {\r\n setTextVerify({ ...textVerify, error: '' });\r\n getTextVerificationCode().then(result => {\r\n console.log('getTextVerificationCode', result);\r\n setTextVerify({\r\n ...textVerify,\r\n error: result.AppMessage,\r\n success: result.IsSuccess\r\n });\r\n });\r\n }}>\r\n Click here\r\n {' '}\r\n {'to resend.'}\r\n

\r\n\r\n {textVerify.error ? (\r\n

{textVerify.error}

\r\n ) : textVerify.success ? (\r\n

Code requested successfully

\r\n ) : null}\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n auth: state.auth\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: bindActionCreators(authActions, dispatch)\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LoginForm);\r\n","import React, { useEffect, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport TextField from '@mui/material/TextField';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport InputMask from 'react-input-mask';\r\nimport Button from '@mui/material/Button';\r\nimport SchoolIcon from '@mui/icons-material/School';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport EditIcon from '@mui/icons-material/Edit';\r\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\r\nimport Dropzone from 'react-dropzone-uploader';\r\nimport 'react-dropzone-uploader/dist/styles.css';\r\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\r\n\r\nimport {\r\n formatPhoneNumber,\r\n validateEmail,\r\n validatePassword\r\n} from '../CommonFunctions';\r\n\r\nimport { getApiUrl, getAuthHeaders } from '../../api/apiConfig';\r\nimport { getProfileImagePath } from '../../api/authApi';\r\nimport * as authActions from '../../redux/actions/authActions';\r\nimport * as studentDataActions from '../../redux/actions/studentDataActions';\r\n\r\nimport './index.css';\r\n\r\nfunction MyProfile({ auth, actions, commonData }) {\r\n const [contactEditMode, setContactEditMode] = React.useState(false);\r\n const [mailEditMode, setMailEditMode] = React.useState(\r\n !auth.user.AddressLine1\r\n );\r\n const [userInfo, setUserInfo] = useState({\r\n email: auth.user.Email,\r\n phone: auth.user.Phone\r\n });\r\n\r\n const [userMailingAddress, setUserMailingAddress] = useState({\r\n diplomaFirstName: auth.user.DiplomaFirstName,\r\n diplomaLastName: auth.user.DiplomaLastName,\r\n addressLine1: auth.user.AddressLine1,\r\n addressLine2: auth.user.AddressLine2,\r\n city: auth.user.City,\r\n state: auth.user.State,\r\n zip: auth.user.Zip\r\n });\r\n\r\n function isEditValid() {\r\n return (\r\n auth.user.Email &&\r\n auth.user.password &&\r\n validateEmail(auth.user.email) &&\r\n validatePassword(auth.user.password)\r\n );\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {auth.user.IsDocSigned ? (\r\n

Registration Paperwork

\r\n ) : (\r\n

Complete Registration

\r\n )}\r\n \r\n DocuSign \r\n \r\n {auth.user.IsDocSigned ? (\r\n

\r\n Your registration paperwork can be accessed through your DocuSign\r\n account.\r\n

\r\n ) : (\r\n

\r\n Click here to continue to DocuSign to complete registration\r\n paperwork.\r\n

\r\n )}\r\n
\r\n

\r\n \r\n \r\n \r\n My Profile\r\n

\r\n
\r\n \r\n {auth && auth.user && !auth.user.ProfileImage ? (\r\n
\r\n {auth.user.FirstName.charAt(0) + auth.user.LastName.charAt(0)}\r\n
\r\n ) : null}\r\n\r\n {contactEditMode ? (\r\n {\r\n return {\r\n url: getApiUrl() + 'FileUpload/ProfileImage',\r\n headers: getAuthHeaders()\r\n };\r\n }}\r\n onChangeStatus={({ meta, remove }, status) => {\r\n if (status === 'headers_received') {\r\n remove();\r\n actions.checkAuthToken();\r\n setContactEditMode(false);\r\n } else if (status === 'aborted') {\r\n //toast(`${meta.name}, upload failed...`);\r\n }\r\n }}\r\n maxFiles={1}\r\n accept=\"image/*\"\r\n multiple={false}\r\n canCancel={false}\r\n inputContent=\"Upload Photo\"\r\n />\r\n ) : null}\r\n
\r\n
\r\n

\r\n {auth.user.FirstName} {auth.user.LastName}\r\n

\r\n \r\n setUserInfo({ ...userInfo, email: event.target.value })\r\n }\r\n className=\"email-address\"\r\n disabled={!contactEditMode}\r\n />\r\n\r\n {contactEditMode ? (\r\n \r\n setUserInfo({ ...userInfo, phone: event.target.value })\r\n }>\r\n {() => (\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n {contactEditMode ? (\r\n
\r\n {\r\n actions\r\n .updateUser(\r\n userInfo.email,\r\n userInfo.phone,\r\n auth.user.AddressLine1,\r\n auth.user.AddressLine2,\r\n auth.user.City,\r\n auth.user.State,\r\n auth.user.Zip\r\n )\r\n .then(result => {\r\n console.log('result', result);\r\n if (result.IsSuccess) {\r\n actions\r\n .checkAuthToken()\r\n .then(result => setContactEditMode(false));\r\n } else {\r\n //TODO: Show error\r\n console.log('updateUser AppMessage', result.AppMessage);\r\n }\r\n });\r\n }}>\r\n Save\r\n \r\n {\r\n setContactEditMode(false);\r\n }}>\r\n Cancel\r\n \r\n
\r\n ) : (\r\n
\r\n {\r\n setContactEditMode(true);\r\n }}>\r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n {mailEditMode ? (\r\n
\r\n {\r\n actions\r\n .updateUser(\r\n auth.user.Email,\r\n auth.user.Phone,\r\n userMailingAddress.addressLine1,\r\n userMailingAddress.addressLine2,\r\n userMailingAddress.city,\r\n userMailingAddress.state,\r\n userMailingAddress.zip,\r\n userMailingAddress.diplomaFirstName,\r\n userMailingAddress.diplomaLastName\r\n )\r\n .then(result => {\r\n if (result.IsSuccess) {\r\n actions\r\n .checkAuthToken()\r\n .then(result => setMailEditMode(false));\r\n\r\n actions.loadStudentDashboard();\r\n } else {\r\n //TODO: Show error\r\n console.log('updateUser AppMessage', result.AppMessage);\r\n }\r\n });\r\n }}>\r\n Save\r\n \r\n {auth.user.AddressLine1 ? (\r\n {\r\n setMailEditMode(false);\r\n }}>\r\n Cancel\r\n \r\n ) : null}\r\n
\r\n ) : (\r\n
\r\n {\r\n setMailEditMode(true);\r\n }}>\r\n \r\n \r\n
\r\n )}\r\n
\r\n

\r\n <>\r\n {auth.user.AddressLine1\r\n ? 'Diploma shipping address. This is where we will send your diploma:'\r\n : 'Please fill out the form below so we can send you your diploma.'}\r\n \r\n

\r\n {mailEditMode ? (\r\n
\r\n \r\n setUserMailingAddress({\r\n ...userMailingAddress,\r\n diplomaFirstName: event.target.value\r\n })\r\n }\r\n />\r\n\r\n \r\n setUserMailingAddress({\r\n ...userMailingAddress,\r\n diplomaLastName: event.target.value\r\n })\r\n }\r\n />\r\n\r\n \r\n setUserMailingAddress({\r\n ...userMailingAddress,\r\n addressLine1: event.target.value\r\n })\r\n }\r\n />\r\n\r\n \r\n setUserMailingAddress({\r\n ...userMailingAddress,\r\n addressLine2: event.target.value\r\n })\r\n }\r\n />\r\n\r\n \r\n setUserMailingAddress({\r\n ...userMailingAddress,\r\n city: event.target.value\r\n })\r\n }\r\n />\r\n\r\n \r\n setUserMailingAddress({\r\n ...userMailingAddress,\r\n state: event.target.value\r\n })\r\n }>\r\n {commonData.stateList.map(option => (\r\n \r\n {option}\r\n \r\n ))}\r\n \r\n\r\n \r\n setUserMailingAddress({\r\n ...userMailingAddress,\r\n zip: event.target.value\r\n })\r\n }\r\n />\r\n
\r\n ) : (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n

\r\n {auth.user.DiplomaFirstName} {auth.user.DiplomaLastName}\r\n

\r\n

{auth.user.AddressLine1}

\r\n

\r\n {auth.user.AddressLine2 ? auth.user.AddressLine2 : null}\r\n

\r\n

\r\n {auth.user.City}, {auth.user.State}, {auth.user.Zip}\r\n

\r\n
\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n auth: state.auth,\r\n commonData: state.commonData\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: {\r\n ...bindActionCreators(authActions, dispatch),\r\n ...bindActionCreators(studentDataActions, dispatch)\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MyProfile);\r\n","import React from \"react\";\r\nimport \"./index.css\";\r\n\r\nfunction BillingHistory() {\r\n return

Billing History

;\r\n}\r\n\r\nexport default BillingHistory;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport moment from \"moment\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport Table from \"@mui/material/Table\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableContainer from \"@mui/material/TableContainer\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport Paper from \"@mui/material/Paper\";\r\nimport ArrowBackIcon from \"@mui/icons-material/ArrowBack\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\n\r\nimport { listUserNotification } from \"../../api/authApi\";\r\nimport { listUserNotificationAdmin } from \"../../api/adminDataApi\";\r\n\r\nimport * as authActions from \"../../redux/actions/authActions\";\r\n\r\nimport NotificationMessage from \"../NotificationMessage\";\r\n\r\nimport \"./index.css\";\r\n\r\nfunction ViewAllNotifications({ auth, actions, isAdmin, userID }) {\r\n const [notificationList, setNotificationList] = useState(null);\r\n\r\n useEffect(() => {\r\n actions.setDataLoading(true, \"Loading your notifications...\");\r\n if (isAdmin) {\r\n listUserNotificationAdmin(userID).then((_notificationList) => {\r\n actions.setDataLoading(false);\r\n setNotificationList(_notificationList);\r\n });\r\n } else {\r\n listUserNotification(true).then((_notificationList) => {\r\n actions.setDataLoading(false);\r\n setNotificationList(_notificationList);\r\n });\r\n }\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n {!isAdmin ? (\r\n <>\r\n

\r\n \r\n \r\n \r\n All Notifications\r\n

\r\n \r\n ) : null}\r\n\r\n {notificationList ? (\r\n \r\n \r\n \r\n \r\n Notification\r\n Sent\r\n Received\r\n \r\n \r\n \r\n {notificationList.map((notification) => (\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {notification.Created\r\n ? moment\r\n .utc(notification.Created)\r\n .local()\r\n .format(\"M/D/YYYY h:mm:ss a\")\r\n : null}\r\n \r\n \r\n {notification.Viewed\r\n ? moment\r\n .utc(notification.Viewed)\r\n .local()\r\n .format(\"M/D/YYYY h:mm:ss a\")\r\n : null}\r\n \r\n \r\n ))}\r\n
\r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n auth: state.auth,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: bindActionCreators(authActions, dispatch),\r\n };\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ViewAllNotifications);\r\n","import React from \"react\";\r\n\r\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\r\n\r\nimport \"./index.css\";\r\n\r\nfunction LessonIcon({ lesson }) {\r\n return lesson.IsCompleted ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default LessonIcon;\r\n","import React, { useEffect } from 'react';\r\n\r\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\r\n\r\nimport './index.css';\r\n\r\nfunction TestIcon({ test }) {\r\n return test.IsComplete || test.IsPassed ? (\r\n test.IsPassed ? (\r\n
\r\n \r\n
\r\n ) : (\r\n
\r\n \r\n
\r\n )\r\n ) : (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default TestIcon;\r\n","import React from 'react';\r\nimport videojs from 'video.js';\r\nimport 'video.js/dist/video-js.css';\r\n\r\nexport const VideoJS = ({\r\n options,\r\n onReady,\r\n onPlay,\r\n onPause,\r\n onEnded,\r\n onTimeUpdate,\r\n}) => {\r\n const videoRef = React.useRef(null);\r\n const playerRef = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n // Make sure Video.js player is only initialized once\r\n if (!playerRef.current) {\r\n const videoElement = videoRef.current;\r\n\r\n if (!videoElement) return;\r\n\r\n const player = (playerRef.current = videojs(videoElement, options, () => {\r\n videojs.log('player is ready');\r\n onReady && onReady(player);\r\n player.on('timeupdate', function () {\r\n onTimeUpdate(this.currentTime());\r\n });\r\n }));\r\n\r\n // You could update an existing player in the `else` block here\r\n // on prop change, for example:\r\n } else {\r\n // const player = playerRef.current;\r\n // player.autoplay(options.autoplay);\r\n // player.src(options.sources);\r\n }\r\n }, [options, videoRef]);\r\n\r\n // Dispose the Video.js player when the functional component unmounts\r\n React.useEffect(() => {\r\n const player = playerRef.current;\r\n\r\n return () => {\r\n if (player) {\r\n player.dispose();\r\n playerRef.current = null;\r\n }\r\n };\r\n }, [playerRef]);\r\n\r\n return (\r\n
\r\n onPlay()}\r\n onPause={() => onPause()}\r\n onEnded={() => onEnded()}\r\n className=\"video-js vjs-big-play-centered\"\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default VideoJS;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\n\r\nimport Button from '@mui/material/Button';\r\nimport Radio from '@mui/material/Radio';\r\nimport RadioGroup from '@mui/material/RadioGroup';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\r\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\r\nimport UnpublishedIcon from '@mui/icons-material/Unpublished';\r\n\r\nimport {\r\n getSectionTest,\r\n saveSectionTestAnswer\r\n} from '../../api/studentDataApi';\r\n\r\nimport * as studentDataActions from '../../redux/actions/studentDataActions';\r\nimport * as authActions from '../../redux/actions/authActions';\r\n\r\nimport AdiThemeProvider from '../AdiThemeProvider';\r\n\r\nimport './index.css';\r\n\r\nfunction Test({ auth, actions, studentData, activeTest, setActiveTest }) {\r\n const [testData, setTestData] = useState(null);\r\n const [activeQuestion, setActiveQuestion] = useState(null);\r\n const [viewAnswerSheet, setViewAnswerSheet] = useState(false);\r\n const [answerSheetButtonText, setAnswerSheetButtonText] = useState(\r\n 'See Answer Sheet'\r\n );\r\n\r\n useEffect(() => {\r\n loadTestData();\r\n }, []);\r\n\r\n useEffect(() => {\r\n console.log('testData', testData);\r\n if (\r\n !activeQuestion &&\r\n testData &&\r\n testData.QuestionList &&\r\n testData.QuestionList.length\r\n ) {\r\n const nextQuestion = testData.QuestionList.filter(\r\n question =>\r\n !question.UserAnswerID &&\r\n (!activeQuestion ||\r\n activeQuestion.SectionChapterQuestionID !==\r\n question.SectionChapterQuestionID)\r\n )[0];\r\n setActiveQuestion(nextQuestion ? nextQuestion : testData.QuestionList[0]);\r\n }\r\n }, [testData]);\r\n\r\n function setNextQuestion() {\r\n const nextQuestion = testData.QuestionList.filter(\r\n question => question.QuestionNumber > activeQuestion.QuestionNumber\r\n )[0];\r\n setActiveQuestion(nextQuestion ? nextQuestion : testData.QuestionList[0]);\r\n }\r\n\r\n function checkIsLastQuestion() {\r\n console.log(\r\n 'checkIsLastQuestion',\r\n testData.QuestionList.filter(question => !question.UserAnswerID)\r\n );\r\n\r\n return (\r\n testData.QuestionList.filter(question => !question.UserAnswerID)\r\n .length === 1\r\n );\r\n }\r\n\r\n function loadTestData(startOver) {\r\n getSectionTest(activeTest.SectionChapterID, startOver).then(test =>\r\n setTestData(test)\r\n );\r\n }\r\n\r\n function retakeTest() {\r\n setViewAnswerSheet(false);\r\n setActiveQuestion(null);\r\n loadTestData(true);\r\n }\r\n\r\n return testData ? (\r\n <>\r\n
\r\n
\r\n
\r\n {testData.Header.SectionName} Exam\r\n
\r\n
\r\n
\r\n {!testData.Header.IsComplete ? (\r\n <>\r\n
\r\n
\r\n {activeQuestion ? (\r\n
\r\n
\r\n

\r\n Question {activeQuestion.QuestionNumber} out of{' '}\r\n {testData.QuestionList.length}\r\n

\r\n\r\n {testData.QuestionList.map(question => (\r\n \r\n setActiveQuestion(question)}>\r\n {question.QuestionNumber}\r\n \r\n \r\n ))}\r\n
\r\n\r\n
\r\n
{activeQuestion.Question}
\r\n \r\n setActiveQuestion({\r\n ...activeQuestion,\r\n UserAnswerID: event.target.value\r\n })\r\n }>\r\n {activeQuestion.AnswerList.map(answer => (\r\n }\r\n label={answer.Answer}\r\n />\r\n ))}\r\n \r\n
\r\n\r\n
\r\n \r\n {\r\n saveSectionTestAnswer(\r\n testData.Header.UserTestID,\r\n activeQuestion.SectionChapterQuestionID,\r\n activeQuestion.UserAnswerID\r\n ).then(testHeader => {\r\n if (testHeader.IsComplete) {\r\n loadTestData();\r\n actions.loadCurriculum();\r\n } else {\r\n setTestData({\r\n ...testData,\r\n Header: testHeader,\r\n QuestionList: testData.QuestionList.map(\r\n question =>\r\n question.SectionChapterQuestionID ===\r\n activeQuestion.SectionChapterQuestionID\r\n ? {\r\n ...question,\r\n UserAnswerID:\r\n activeQuestion.UserAnswerID\r\n }\r\n : { ...question }\r\n )\r\n });\r\n setNextQuestion();\r\n }\r\n });\r\n }}>\r\n {checkIsLastQuestion() ? 'Finish' : 'Continue'}\r\n \r\n \r\n\r\n {checkIsLastQuestion() ? null : (\r\n \r\n {\r\n setNextQuestion();\r\n }}>\r\n Skip Question\r\n \r\n \r\n )}\r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n \r\n ) : !testData.Header.IsPassed ? (\r\n
\r\n
\r\n
Your score needs to be 70% or higher.
\r\n
Please study this chapter and retake the test.
\r\n
\r\n
\r\n
\r\n

Exam Score:

\r\n
\r\n \r\n

{testData.Header.QuestionCountCorrect} Correct

\r\n
\r\n
\r\n \r\n

\r\n {testData.Header.QuestionCountTotal -\r\n testData.Header.QuestionCountCorrect}{' '}\r\n Wrong\r\n

\r\n
\r\n
\r\n
\r\n

Rating:

\r\n

{testData.Header.GradeLetter}

\r\n
\r\n
\r\n \r\n retakeTest()}\r\n variant=\"contained\"\r\n color=\"neutral\">\r\n Retake\r\n \r\n \r\n \r\n {\r\n setViewAnswerSheet(true);\r\n }}>\r\n {answerSheetButtonText}\r\n \r\n \r\n
\r\n ) : (\r\n
\r\n
\r\n
Congratulations! You have successfully passed
\r\n
{testData.Header.SectionChapterName}
\r\n
\r\n
\r\n
\r\n

Exam Score:

\r\n
\r\n \r\n

{testData.Header.QuestionCountCorrect} Correct

\r\n
\r\n
\r\n \r\n

\r\n {testData.Header.QuestionCountTotal -\r\n testData.Header.QuestionCountCorrect}{' '}\r\n Wrong\r\n

\r\n
\r\n
\r\n
\r\n

Rating:

\r\n

{testData.Header.GradeLetter}

\r\n
\r\n
\r\n \r\n setActiveTest(null)}\r\n variant=\"contained\"\r\n color=\"neutral\">\r\n Curriculum\r\n \r\n \r\n \r\n {\r\n if (answerSheetButtonText === 'See Answer Sheet') {\r\n setViewAnswerSheet(true);\r\n setAnswerSheetButtonText('Hide Answer Sheet');\r\n } else {\r\n setViewAnswerSheet(false);\r\n setAnswerSheetButtonText('See Answer Sheet');\r\n }\r\n }}>\r\n {answerSheetButtonText}\r\n \r\n \r\n
\r\n )}\r\n\r\n {viewAnswerSheet ? (\r\n
\r\n
\r\n
\r\n {testData.QuestionList.map(question => (\r\n <>\r\n
\r\n
{question.Question}
\r\n\r\n
    \r\n {question.AnswerList.map(answer => (\r\n
  • \r\n
    \r\n {answer.IsCorrectAnswer ? (\r\n \r\n ) : null}\r\n {!answer.IsCorrectAnswer && answer.IsUserAnswer ? (\r\n \r\n ) : null}\r\n
    \r\n {answer.Answer}\r\n
  • \r\n ))}\r\n
\r\n {question.UserAnswerID &&\r\n question.AnswerList.filter(\r\n answer => answer.IsCorrectAnswer && answer.IsUserAnswer\r\n ).length ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n ) : null}\r\n \r\n ) : null;\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n auth: state.auth,\r\n studentData: state.studentData,\r\n commonData: state.commonData\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: {\r\n ...bindActionCreators(authActions, dispatch),\r\n ...bindActionCreators(studentDataActions, dispatch)\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Test);\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport Accordion from '@mui/material/Accordion';\r\nimport AccordionDetails from '@mui/material/AccordionDetails';\r\nimport AccordionSummary from '@mui/material/AccordionSummary';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\r\nimport UnpublishedIcon from '@mui/icons-material/Unpublished';\r\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\r\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Button from '@mui/material/Button';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport FileDownloadIcon from '@mui/icons-material/FileDownload';\r\n\r\nimport {\r\n getLessonVideo,\r\n updateLessonVideoTime,\r\n updateLessonVideoEnded,\r\n getSectionPDF\r\n} from '../../api/studentDataApi';\r\n\r\nimport * as studentDataActions from '../../redux/actions/studentDataActions';\r\nimport * as authActions from '../../redux/actions/authActions';\r\n\r\nimport { scrollToTop } from '../CommonFunctions';\r\n\r\nimport DashBoardItem from '../StudentDashboard/DashboardItem';\r\nimport LessonIcon from '../LessonIcon';\r\nimport TestIcon from '../TestIcon';\r\nimport VideoJS from '../VideoJS';\r\nimport Test from './Test';\r\n\r\nimport './index.css';\r\n\r\nfunction LessonName({ lessonName }) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction Curriculum({ auth, actions, studentData }) {\r\n const loadingTimeout = useRef();\r\n const videoTime = useRef();\r\n const videoProgressInterval = useRef();\r\n const playerRef = React.useRef(null);\r\n\r\n const [expandedSection, setExpandedSection] = useState(false);\r\n const [activeLesson, setActiveLesson] = useState(null);\r\n const [activeTest, setActiveTest] = useState(null);\r\n const [videoJsOptions, setVideoJsOptions] = useState({\r\n autoplay: true,\r\n controls: true,\r\n responsive: true,\r\n fluid: true\r\n });\r\n\r\n const [activeVideoTime, setActiveVideoTime] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!studentData.curriculum) {\r\n actions.loadCurriculum();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (activeLesson) {\r\n scrollToTop();\r\n\r\n //Load the video URL\r\n loadingTimeout.current = setTimeout(() => {\r\n actions.setDataLoading(true);\r\n }, 500);\r\n\r\n if (videoProgressInterval.current) {\r\n clearInterval(videoProgressInterval.current);\r\n }\r\n\r\n videoTime.current = null;\r\n setVideoJsOptions({ ...videoJsOptions, sources: [] });\r\n\r\n getLessonVideo(\r\n activeLesson.SectionID,\r\n activeLesson.SectionChapterID,\r\n activeLesson.SectionChapterLessonID\r\n ).then(videoUrl => {\r\n if (loadingTimeout.current) {\r\n clearTimeout(loadingTimeout.current);\r\n }\r\n\r\n setVideoJsOptions({\r\n ...videoJsOptions,\r\n sources: [\r\n {\r\n src: videoUrl,\r\n type: 'video/mp4'\r\n }\r\n ]\r\n });\r\n\r\n actions.setDataLoading(false);\r\n });\r\n }\r\n }, [activeLesson]);\r\n\r\n useEffect(() => {\r\n setActiveLesson(null);\r\n if (videoProgressInterval.current) {\r\n clearInterval(videoProgressInterval.current);\r\n }\r\n\r\n scrollToTop();\r\n }, [activeTest]);\r\n\r\n useEffect(() => {\r\n console.log('studentData', studentData);\r\n if (studentData.curriculum && !expandedSection) {\r\n let nextSectionID = 0;\r\n studentData.curriculum.map(section => {\r\n section.ChapterList.map(chapter => {\r\n const availableLessonList = chapter.LessonList.filter(\r\n _lesson => _lesson.IsAvailable\r\n );\r\n\r\n if (availableLessonList.length) {\r\n const nextLesson =\r\n availableLessonList[availableLessonList.length - 1];\r\n nextSectionID = nextLesson.SectionID;\r\n }\r\n });\r\n });\r\n\r\n if (nextSectionID) {\r\n setExpandedSection(nextSectionID);\r\n }\r\n }\r\n }, [studentData]);\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n const elements = document.getElementsByClassName('Mui-expanded');\r\n const element = elements[0];\r\n const offset = -100;\r\n\r\n if (element) {\r\n let scrollArgs = {\r\n top: element.getBoundingClientRect().top + window.pageYOffset + offset\r\n };\r\n // if (!instant) {\r\n // scrollArgs.behavior = 'smooth';\r\n // }\r\n window.scrollTo(scrollArgs);\r\n }\r\n }, 400);\r\n }, [expandedSection]);\r\n\r\n const handlePlayerReady = player => {\r\n playerRef.current = player;\r\n\r\n // You can handle player events here, for example:\r\n player.on('waiting', () => {\r\n console.log('player is waiting');\r\n });\r\n\r\n player.on('dispose', () => {\r\n console.log('player will dispose');\r\n });\r\n };\r\n\r\n return studentData.curriculum ? (\r\n
\r\n
\r\n

\r\n \r\n \r\n \r\n {!activeTest && !activeLesson ? (\r\n <>\r\n \r\n Dashboard\r\n {' '}\r\n | Curriculum\r\n \r\n ) : (\r\n <>\r\n \r\n Dashboard\r\n {' '}\r\n |{' '}\r\n {\r\n setActiveTest(null);\r\n setActiveLesson(null);\r\n }}>\r\n Curriculum\r\n \r\n \r\n )}\r\n

\r\n\r\n {activeTest ? (\r\n \r\n ) : (\r\n <>\r\n {activeLesson ? (\r\n
\r\n
\r\n
\r\n {activeLesson.SectionName} {' '}\r\n {activeLesson.SectionChapterName}{' '}\r\n {activeLesson.LessonName}\r\n
\r\n
\r\n
\r\n
\r\n {videoJsOptions &&\r\n videoJsOptions.sources &&\r\n videoJsOptions.sources.length ? (\r\n {\r\n videoProgressInterval.current = setInterval(() => {\r\n const videoTimeString = videoTime.current\r\n ? new Date(videoTime.current * 1000)\r\n .toISOString()\r\n .substring(14, 19)\r\n : '00:00';\r\n\r\n updateLessonVideoTime(\r\n activeLesson.SectionChapterLessonID,\r\n videoTimeString\r\n );\r\n }, 5000);\r\n\r\n console.log('track video played');\r\n }}\r\n onPause={() => {\r\n if (videoProgressInterval.current) {\r\n clearInterval(videoProgressInterval.current);\r\n }\r\n\r\n console.log('track video paused');\r\n }}\r\n onTimeUpdate={currentTime => {\r\n videoTime.current = currentTime;\r\n }}\r\n onEnded={() => {\r\n if (videoProgressInterval.current) {\r\n clearInterval(videoProgressInterval.current);\r\n }\r\n\r\n updateLessonVideoEnded(\r\n activeLesson.SectionChapterLessonID\r\n ).then(result => actions.loadCurriculum());\r\n\r\n console.log('track video ended');\r\n }}\r\n />\r\n ) : null}\r\n
\r\n
\r\n
\r\n ) : null}\r\n\r\n
\r\n {studentData.curriculum.map(section => (\r\n <>\r\n
\r\n \r\n setExpandedSection(\r\n expandedSection === section.SectionID\r\n ? null\r\n : section.SectionID\r\n )\r\n }>\r\n }\r\n aria-controls=\"panel1bh-content\"\r\n id=\"panel1bh-header\">\r\n {section.SectionName}\r\n\r\n {section.PDFFileDownload ? (\r\n {\r\n getSectionPDF(section.PDFFileDownload).then(\r\n url => {\r\n if (url) {\r\n window.location = url;\r\n }\r\n }\r\n );\r\n event.stopPropagation();\r\n }}>\r\n Please download Section PDFs before proceeding{' '}\r\n \r\n \r\n ) : null}\r\n \r\n \r\n
    \r\n {section.ChapterList.map(chapter => (\r\n
  • \r\n \r\n {chapter.SectionChapterName}\r\n
    \r\n
      \r\n {chapter.LessonList.map(lesson => (\r\n \r\n \r\n\r\n {lesson.IsAvailable\r\n ? lesson.LessonName.split('\\n').map(\r\n (lessonName, lessonNameIndex) =>\r\n lessonNameIndex === 0 ? (\r\n \r\n setActiveLesson(lesson)\r\n }>\r\n \r\n \r\n ) : (\r\n
      \r\n {lessonName}\r\n
      \r\n )\r\n )\r\n : lesson.LessonName.split(\r\n '\\n'\r\n ).map((lessonName, lessonNameIndex) =>\r\n lessonNameIndex === 0 ? (\r\n \r\n ) : (\r\n
      \r\n {lessonName}\r\n
      \r\n )\r\n )}\r\n \r\n ))}\r\n\r\n \r\n \r\n\r\n {chapter.Test.IsAvailable ? (\r\n \r\n setActiveTest(chapter.Test)\r\n }>\r\n Exam\r\n \r\n ) : (\r\n <>Exam\r\n )}\r\n \r\n
    \r\n
    \r\n
  • \r\n ))}\r\n
\r\n\r\n
\r\n
Section Progress
\r\n
\r\n \r\n
\r\n
\r\n {section.ChapterList.filter(\r\n chapter =>\r\n chapter.Test && chapter.Test.QuestionCountAnswered\r\n ).map(chapter => (\r\n <>\r\n
\r\n
\r\n Exam: {chapter.SectionChapterName}\r\n
\r\n {chapter.Test.IsPassed ? (\r\n
Congratulations! You passed.
\r\n ) : (\r\n
Please try again.
\r\n )}\r\n\r\n
\r\n
Exam Score:
\r\n

\r\n {' '}\r\n {chapter.Test.QuestionCountCorrect\r\n ? chapter.Test.QuestionCountCorrect +\r\n ' Correct'\r\n : 0 + ' Correct'}\r\n

\r\n

\r\n {' '}\r\n {chapter.Test.QuestionCountAnswered\r\n ? chapter.Test.QuestionCountAnswered -\r\n chapter.Test.QuestionCountCorrect\r\n : 0}{' '}\r\n Wrong\r\n

\r\n
\r\n
\r\n
Result:
\r\n {chapter.Test.IsPassed ? (\r\n

Passed

\r\n ) : (\r\n

Failed

\r\n )}\r\n
\r\n
\r\n
\r\n \r\n ))}\r\n
\r\n
\r\n \r\n
\r\n \r\n ))}\r\n
\r\n \r\n )}\r\n
\r\n
\r\n ) : null;\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n auth: state.auth,\r\n studentData: state.studentData,\r\n commonData: state.commonData\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: {\r\n ...bindActionCreators(authActions, dispatch),\r\n ...bindActionCreators(studentDataActions, dispatch)\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Curriculum);\r\n","import React, { useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport Table from '@mui/material/Table';\r\nimport TableBody from '@mui/material/TableBody';\r\nimport TableCell from '@mui/material/TableCell';\r\nimport TableContainer from '@mui/material/TableContainer';\r\nimport TableHead from '@mui/material/TableHead';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport Paper from '@mui/material/Paper';\r\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\r\nimport IconButton from '@mui/material/IconButton';\r\n\r\nimport * as studentDataActions from '../../redux/actions/studentDataActions';\r\nimport LessonIcon from '../LessonIcon';\r\nimport TestIcon from '../TestIcon';\r\n\r\nimport './index.css';\r\n\r\nfunction Transcript({ auth, actions, studentData, popUp }) {\r\n useEffect(() => {\r\n if (!studentData.curriculum) {\r\n actions.loadCurriculum();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (\r\n !studentData.dash ||\r\n !Object.keys(studentData.dash).length ||\r\n (studentData.userID && studentData.dash.UserID != studentData.userID)\r\n ) {\r\n actions.loadStudentDashboard(studentData.userID ? studentData.userID : 0);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n console.log('studentData', studentData);\r\n }, [studentData]);\r\n\r\n return studentData.curriculum ? (\r\n
\r\n
\r\n {!popUp ? (\r\n

\r\n \r\n \r\n \r\n Transcript\r\n

\r\n ) : null}\r\n
\r\n
Total GPA:
\r\n
\r\n {studentData && studentData.dash && studentData.dash.GPA\r\n ? studentData.dash.GPA.toFixed(1)\r\n : '0.0'}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Section\r\n Chapter Name\r\n Lesson Name\r\n Completed\r\n Result\r\n \r\n \r\n \r\n {studentData.curriculum.map(section =>\r\n section.ChapterList.map(chapter => (\r\n <>\r\n {chapter.LessonList.map((lesson, lessonIndex) => (\r\n \r\n {section.SectionName}\r\n {chapter.SectionChapterName}\r\n \r\n {lesson.LessonName.split('\\n')[0]}\r\n \r\n \r\n \r\n \r\n --\r\n \r\n ))}\r\n\r\n \r\n {section.SectionName}\r\n {chapter.SectionChapterName}\r\n Exam\r\n \r\n \r\n \r\n \r\n {chapter.Test.Grade && chapter.Test.IsComplete\r\n ? chapter.Test.Grade\r\n : '--'}\r\n \r\n \r\n \r\n ))\r\n )}\r\n \r\n \r\n \r\n
\r\n
\r\n ) : null;\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n auth: state.auth,\r\n studentData: state.studentData,\r\n commonData: state.commonData\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: bindActionCreators(studentDataActions, dispatch)\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Transcript);\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport moment from 'moment';\r\n\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport 'ag-grid-enterprise';\r\nimport { Menu, MenuItem, Button, Divider } from '@mui/material';\r\nimport AppsIcon from '@mui/icons-material/Apps';\r\nimport OfflineBoltIcon from '@mui/icons-material/OfflineBolt';\r\nimport CachedIcon from '@mui/icons-material/Cached';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport Skeleton from '@mui/material/Skeleton';\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n TextField,\r\n Box,\r\n Popover\r\n} from '@mui/material';\r\n\r\nimport Radio from '@mui/material/Radio';\r\nimport RadioGroup from '@mui/material/RadioGroup';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport FormLabel from '@mui/material/FormLabel';\r\nimport FormHelperText from '@mui/material/FormHelperText';\r\nimport InputAdornment from '@mui/material/InputAdornment';\r\nimport SearchIcon from '@mui/icons-material/Search';\r\nimport Autocomplete from '@mui/material/Autocomplete';\r\n\r\nimport 'ag-grid-community/dist/styles/ag-grid.css';\r\nimport 'ag-grid-community/dist/styles/ag-theme-alpine.css';\r\nimport './Grid.css';\r\nimport GetAppIcon from '@mui/icons-material/GetApp';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport FormGroup from '@mui/material/FormGroup';\r\nimport Checkbox from '@mui/material/Checkbox';\r\n\r\nconst $ = window.$;\r\n\r\nfunction Grid(props) {\r\n const gridApi = useRef();\r\n const columnApi = useRef();\r\n const [prefsApplied, setPrefsApplied] = useState(false);\r\n const [columnDefs, setColumnDefs] = useState([]);\r\n const [columnSetList, setColumnSetList] = useState(\r\n props.columnSets ? props.columnSets : []\r\n );\r\n const [columnSetMenuOpen, setColumnSetMenuOpen] = useState(null);\r\n const [selectedColumnSet, setSelectedColumnSet] = useState(null);\r\n const [gridCustomized, setGridCustomized] = useState(false);\r\n const [promptSaveColumnSet, setPromptSaveColumnSet] = useState(false);\r\n const [columnSetSaveOption, setColumnSetSaveOption] = useState('overwrite');\r\n const [newColumnSetTitle, setNewColumnSetTitle] = useState('');\r\n const [newColumnSetError, setNewColumnSetError] = useState(null);\r\n const [visibleRowCount, setVisibleRowCount] = useState(0);\r\n const [totalRowCount, setTotalRowCount] = useState(0);\r\n const [searchString, setSearchString] = useState(null);\r\n const [columnJumpOptions, setColumnJumpOptions] = useState([]);\r\n const [columnJumpInputValue, setColumnJumpInputValue] = useState(null);\r\n const [gridExportInProgress, setGridExportInProgress] = useState(false);\r\n const searchTimeout = useRef();\r\n const [serverSideFieldListVisible, setServerSideFieldListVisible] = useState(\r\n null\r\n );\r\n\r\n const _defaultColDef = {\r\n enableCellChangeFlash: true,\r\n sortable: true,\r\n filter: true,\r\n resizable: true\r\n };\r\n\r\n const defaultColDef = props.defaultColDef\r\n ? { ...props.defaultColDef, ..._defaultColDef }\r\n : _defaultColDef;\r\n\r\n useEffect(() => {\r\n var arrColDef = [];\r\n\r\n if (props.columnDefs) {\r\n props.columnDefs.map(curColDef => {\r\n let colDef = handleColDefDataType(curColDef);\r\n\r\n if (colDef.children) {\r\n colDef.children = colDef.children.map(childColDef =>\r\n handleColDefDataType(childColDef)\r\n );\r\n }\r\n\r\n if (props.trackAs && !colDef.colId) {\r\n colDef.colId = props.trackAs + '_' + colDef.field;\r\n }\r\n\r\n arrColDef.push(colDef);\r\n });\r\n }\r\n\r\n function handleColDefDataType(_colDef) {\r\n let colDef = { ..._colDef };\r\n\r\n switch (colDef.dataType) {\r\n case 'dateTime': {\r\n if (!colDef.valueFormatter) {\r\n colDef.valueFormatter = function(params) {\r\n return params.value\r\n ? moment\r\n .utc(params.value)\r\n .local()\r\n .format('M/D/YYYY h:mm:ss a')\r\n : '';\r\n };\r\n }\r\n\r\n colDef.filter = 'agDateColumnFilter';\r\n break;\r\n }\r\n case 'date': {\r\n if (!colDef.valueFormatter) {\r\n colDef.valueFormatter = function(params) {\r\n return params.value\r\n ? moment(params.value).format('M/D/YYYY')\r\n : '';\r\n };\r\n }\r\n\r\n colDef.filter = 'agDateColumnFilter';\r\n\r\n break;\r\n }\r\n case 'dollars': {\r\n colDef.valueGetter = function(params) {\r\n let value =\r\n params.data &&\r\n params.data[colDef.field] !== null &&\r\n params.data[colDef.field] !== undefined &&\r\n params.data[colDef.field] !== ''\r\n ? Number(params.data[colDef.field])\r\n : '';\r\n\r\n return value;\r\n };\r\n\r\n colDef.valueFormatter = function(params) {\r\n return params.value && !isNaN(params.value)\r\n ? '$' +\r\n parseFloat(params.value).toLocaleString(undefined, {\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 2\r\n })\r\n : '';\r\n };\r\n\r\n colDef.cellClass = 'right dollars';\r\n\r\n colDef.filter = 'agNumberColumnFilter';\r\n\r\n break;\r\n }\r\n case 'bool': {\r\n colDef.valueFormatter = function(params) {\r\n return params.value !== null && params.value !== undefined\r\n ? params.value && params.value != 'False'\r\n ? 'Yes'\r\n : ''\r\n : '';\r\n };\r\n break;\r\n }\r\n case 'numeric':\r\n case 'integer': {\r\n if (!colDef.cellRendererFramework) {\r\n colDef.cellClass = 'right';\r\n }\r\n\r\n colDef.valueGetter = function(params) {\r\n let value =\r\n params.data &&\r\n params.data[colDef.field] !== null &&\r\n params.data[colDef.field] !== undefined &&\r\n params.data[colDef.field] !== ''\r\n ? Number(params.data[colDef.field])\r\n : '';\r\n\r\n if (value && colDef.dataType == 'integer') {\r\n if (!isNaN(value)) {\r\n value = parseInt(value);\r\n }\r\n }\r\n\r\n return value;\r\n };\r\n\r\n colDef.valueFormatter = function(params) {\r\n return params.value && !isNaN(params.value)\r\n ? parseFloat(params.value).toLocaleString()\r\n : '';\r\n };\r\n\r\n colDef.filter = 'agNumberColumnFilter';\r\n\r\n break;\r\n }\r\n case 'alphanumeric': {\r\n colDef.valueGetter = function(params) {\r\n let value =\r\n params.data &&\r\n params.data[colDef.field] !== null &&\r\n params.data[colDef.field] !== undefined &&\r\n params.data[colDef.field] !== ''\r\n ? params.data[colDef.field]\r\n : '';\r\n\r\n if (value) {\r\n if (!isNaN(value)) {\r\n value = parseFloat(value);\r\n }\r\n }\r\n\r\n return value;\r\n };\r\n\r\n break;\r\n }\r\n default:\r\n //do nothing\r\n break;\r\n }\r\n\r\n return colDef;\r\n }\r\n\r\n setColumnDefs(arrColDef);\r\n\r\n var arrColJumpOption = [];\r\n\r\n arrColDef.map(curColDef => {\r\n if (curColDef.children) {\r\n arrColJumpOption.push({\r\n headerName: curColDef.headerName,\r\n field: curColDef.children[0].field\r\n });\r\n\r\n curColDef.children.map(curChildColDef => {\r\n arrColJumpOption.push({\r\n headerName: curChildColDef.headerName,\r\n field: curChildColDef.field\r\n });\r\n });\r\n } else {\r\n arrColJumpOption.push({\r\n headerName: curColDef.headerName,\r\n field: curColDef.field\r\n });\r\n }\r\n });\r\n\r\n setColumnJumpOptions(arrColJumpOption);\r\n\r\n preventPinningOnMobile();\r\n }, [props.columnDefs]);\r\n\r\n useEffect(() => {\r\n if (gridApi.current) {\r\n setVisibleRowCount(gridApi.current.getDisplayedRowCount());\r\n updateTotalRowCount();\r\n }\r\n }, [props.rowData, gridApi.current]);\r\n\r\n useEffect(() => {\r\n if (getRawPrefs()) {\r\n if (gridApi.current) {\r\n initGridPrefs();\r\n }\r\n }\r\n }, [getRawPrefs()]);\r\n\r\n useEffect(() => {\r\n if (columnSetList.length) {\r\n if (newColumnSetTitle) {\r\n setColumnSet(newColumnSetTitle);\r\n setColumnSetSaveOption('overwrite');\r\n setNewColumnSetTitle('');\r\n } else {\r\n setColumnSet(columnSetList[0].title);\r\n }\r\n }\r\n }, [columnSetList.length]);\r\n\r\n useEffect(() => {}, [selectedColumnSet]);\r\n\r\n useEffect(() => {\r\n if (prefsApplied) {\r\n initGridPrefs(true);\r\n }\r\n }, [props.authUser]);\r\n\r\n useEffect(() => {\r\n // cleanup function to cancel the timeout if it hasn't finished.\r\n return () => {\r\n if (searchTimeout.current) {\r\n clearTimeout(searchTimeout.current);\r\n }\r\n };\r\n }, []);\r\n\r\n function isMobile() {\r\n return window.screen && window.screen.width <= 667;\r\n }\r\n\r\n function getRawPrefs() {\r\n return [];\r\n }\r\n\r\n function initGridPrefs(force) {\r\n if (!prefsApplied || force) {\r\n const rawPrefList = getRawPrefs();\r\n\r\n let arrColSet = [];\r\n\r\n if (rawPrefList) {\r\n let dictColSet = {};\r\n rawPrefList.map(curPref => {\r\n let title = curPref.ObjectID.split(props.trackAs)[1];\r\n if (title) {\r\n if (!dictColSet[title]) {\r\n dictColSet[title] = { title };\r\n }\r\n\r\n let colSet = { ...dictColSet[title] };\r\n colSet[curPref.Name] = JSON.parse(curPref.Value);\r\n\r\n dictColSet[title] = colSet;\r\n }\r\n });\r\n\r\n for (var curKey in dictColSet) {\r\n if (curKey === 'Default') {\r\n arrColSet.splice(0, 0, dictColSet[curKey]);\r\n } else {\r\n arrColSet.push(dictColSet[curKey]);\r\n }\r\n }\r\n }\r\n\r\n if (\r\n !arrColSet.length &&\r\n !columnSetList.filter(colSet => colSet.title === 'Default').length\r\n ) {\r\n arrColSet.push({ title: 'Default' });\r\n }\r\n\r\n setColumnSetList(arrColSet.concat(columnSetList));\r\n }\r\n }\r\n\r\n function preventPinningOnMobile() {\r\n if (columnApi.current && isMobile()) {\r\n columnApi.current\r\n .getColumnState()\r\n .map(curCol => columnApi.current.setColumnPinned(curCol.colId));\r\n }\r\n }\r\n\r\n function setColumnSet(columnSetTitle) {\r\n if (columnApi.current) {\r\n var colSet = columnSetList.filter(\r\n colSet => colSet.title === columnSetTitle\r\n )[0];\r\n\r\n setSelectedColumnSet(colSet);\r\n handleColumnSetMenuButtonClosed();\r\n\r\n if (colSet.columnState) {\r\n columnApi.current.setColumnState(colSet.columnState);\r\n } else if (\r\n colSet.title === 'Default' &&\r\n columnApi.current.defaultColumnState &&\r\n columnSetList.length > 1\r\n ) {\r\n columnApi.current.setColumnState(columnApi.current.defaultColumnState);\r\n }\r\n\r\n if (colSet.filterModel) {\r\n gridApi.current.setFilterModel(colSet.filterModel);\r\n }\r\n\r\n if (colSet.sortModel) {\r\n gridApi.current.setSortModel(colSet.sortModel);\r\n }\r\n\r\n preventPinningOnMobile();\r\n\r\n setGridCustomized(false);\r\n setPrefsApplied(false);\r\n setTimeout(() => {\r\n setPrefsApplied(true);\r\n }, 200);\r\n }\r\n }\r\n\r\n const handleColumnSetMenuButtonClick = event => {\r\n setColumnSetMenuOpen(event.currentTarget);\r\n };\r\n\r\n const handleColumnSetMenuButtonClosed = () => {\r\n setColumnSetMenuOpen(null);\r\n };\r\n\r\n function onGridReady(params) {\r\n gridApi.current = params.api;\r\n columnApi.current = params.columnApi;\r\n\r\n if (getRawPrefs()) {\r\n initGridPrefs();\r\n }\r\n\r\n if (props.onGridReady) {\r\n props.onGridReady(params);\r\n }\r\n }\r\n\r\n function onColumnMoved(params) {\r\n if (prefsApplied) {\r\n setGridCustomized(true);\r\n }\r\n\r\n if (props.onColumnMoved) {\r\n props.onColumnMoved(params);\r\n }\r\n }\r\n\r\n function onColumnResized(params) {\r\n if (prefsApplied) {\r\n setGridCustomized(true);\r\n }\r\n\r\n if (props.onColumnResized) {\r\n props.onColumnResized(params);\r\n }\r\n }\r\n\r\n function onColumnPinned(params) {\r\n if (prefsApplied) {\r\n setGridCustomized(true);\r\n }\r\n\r\n if (props.onColumnPinned) {\r\n props.onColumnPinned(params);\r\n }\r\n }\r\n\r\n function onColumnVisible(params) {\r\n if (prefsApplied) {\r\n setGridCustomized(true);\r\n }\r\n\r\n if (props.onColumnVisible) {\r\n props.onColumnVisible(params);\r\n }\r\n }\r\n\r\n function onFilterChanged(params) {\r\n if (prefsApplied) {\r\n setGridCustomized(true);\r\n }\r\n\r\n setVisibleRowCount(gridApi.current.getDisplayedRowCount());\r\n updateTotalRowCount();\r\n\r\n if (props.onFilterChanged) {\r\n props.onFilterChanged(params);\r\n }\r\n }\r\n\r\n function updateTotalRowCount() {\r\n let _totalRowCount = 0;\r\n\r\n gridApi.current.forEachNode(node => {\r\n if (node.level === 0) {\r\n _totalRowCount++;\r\n }\r\n });\r\n\r\n setTotalRowCount(_totalRowCount);\r\n }\r\n\r\n function onSortChanged(params) {\r\n if (prefsApplied) {\r\n setGridCustomized(true);\r\n }\r\n\r\n if (props.onSortChanged) {\r\n props.onSortChanged(params);\r\n }\r\n }\r\n\r\n function confirmSaveColumnSet() {\r\n var exists = columnSetList.filter(\r\n curColumnSet =>\r\n curColumnSet.title.toUpperCase() === newColumnSetTitle.toUpperCase()\r\n ).length;\r\n\r\n if (exists && columnSetSaveOption === 'new') {\r\n setNewColumnSetError('Column set already exists with that title');\r\n } else {\r\n setNewColumnSetError(null);\r\n\r\n const preferenceKey =\r\n props.trackAs +\r\n (columnSetSaveOption === 'new'\r\n ? newColumnSetTitle\r\n : selectedColumnSet.title);\r\n\r\n const rawPreferenceList = [\r\n {\r\n URL: null,\r\n ObjectID: preferenceKey,\r\n Type: 'json',\r\n Name: 'columnSet',\r\n Value: JSON.stringify({ name: newColumnSetTitle })\r\n },\r\n {\r\n URL: null,\r\n ObjectID: preferenceKey,\r\n Type: 'json',\r\n Name: 'columnState',\r\n Value: JSON.stringify(columnApi.current.getColumnState())\r\n },\r\n {\r\n URL: null,\r\n ObjectID: preferenceKey,\r\n Type: 'json',\r\n Name: 'filterModel',\r\n Value: JSON.stringify(gridApi.current.getFilterModel())\r\n },\r\n {\r\n URL: null,\r\n ObjectID: preferenceKey,\r\n Type: 'json',\r\n Name: 'sortModel',\r\n Value: JSON.stringify(gridApi.current.getSortModel())\r\n }\r\n ];\r\n\r\n setPromptSaveColumnSet(false);\r\n initGridPrefs(true);\r\n }\r\n }\r\n\r\n function clearFilters() {\r\n document.getElementById('filterTextBox').value = '';\r\n setSearchString(null);\r\n gridApi.current.setFilterModel(null);\r\n gridApi.current.onFilterChanged();\r\n }\r\n\r\n function getExportFileName() {\r\n var dtNow = new Date();\r\n var sTimeStamp =\r\n dtNow.getFullYear() +\r\n '-' +\r\n ((dtNow.getMonth() + 1 < 10 ? '0' : '') + (dtNow.getMonth() + 1)) +\r\n '-' +\r\n dtNow.getDate() +\r\n ' ' +\r\n dtNow.getHours() +\r\n '_' +\r\n dtNow.getMinutes() +\r\n '_' +\r\n dtNow.getSeconds();\r\n\r\n return 'Export_' + sTimeStamp;\r\n }\r\n\r\n function exportCsv() {\r\n setGridExportInProgress(true);\r\n\r\n props.actions\r\n .requestExport(\r\n '',\r\n getExportFileName() + '.csv',\r\n gridApi.current.getDataAsCsv()\r\n )\r\n .then(result => {\r\n setGridExportInProgress(false);\r\n });\r\n }\r\n\r\n function exportExcel() {\r\n gridApi.current.exportDataAsExcel({\r\n fileName: getExportFileName() + '.xlsx',\r\n columnGroups: true\r\n });\r\n }\r\n\r\n function onModelUpdated() {\r\n if (props.serverSideFieldList && columnApi.current) {\r\n if (props.columnDefs) {\r\n props.columnDefs.map(curColDef => {\r\n if (\r\n !props.serverSideFieldList.filter(\r\n field => field === curColDef.field\r\n ).length\r\n ) {\r\n columnApi.current.setColumnVisible(curColDef.field, false);\r\n } else {\r\n columnApi.current.setColumnVisible(curColDef.field, true);\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (columnApi.current && !columnApi.current.defaultColumnState) {\r\n columnApi.current.defaultColumnState = columnApi.current.getColumnState();\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {!prefsApplied ? (\r\n <>\r\n \r\n \r\n \r\n ) : null}\r\n\r\n
\r\n
\r\n {columnSetList.length && props.trackAs && selectedColumnSet ? (\r\n
\r\n \r\n \r\n \r\n \r\n {columnSetList.map(curColumnSet => (\r\n {\r\n setColumnSet(curColumnSet.title);\r\n }}>\r\n <>{curColumnSet.title}\r\n \r\n ))}\r\n \r\n {\r\n setPromptSaveColumnSet(true);\r\n handleColumnSetMenuButtonClosed();\r\n }}>\r\n Save Grid Changes\r\n \r\n \r\n\r\n
\r\n {selectedColumnSet.title !== 'Default'\r\n ? selectedColumnSet.title\r\n : ''}\r\n
\r\n
\r\n ) : null}\r\n\r\n
\r\n {props.liveUpdates ? (\r\n \r\n \r\n \r\n ) : props.refreshFunc ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n {/*
\r\n option.headerName}\r\n renderInput={params => (\r\n \r\n )}\r\n value={columnJumpInputValue}\r\n // inputValue={columnJumpInputValue}\r\n onChange={(event, newValue) => {\r\n if (newValue && newValue.field) {\r\n columnApi.current.setColumnVisible(newValue.field, true);\r\n gridApi.current.ensureColumnVisible(newValue.field);\r\n }\r\n\r\n document\r\n .getElementsByClassName('column-jump')[0]\r\n .getElementsByClassName('MuiAutocomplete-clearIndicator')[0]\r\n .click();\r\n }}\r\n />\r\n
*/}\r\n\r\n
\r\n {\r\n if (searchTimeout.current) {\r\n clearTimeout(searchTimeout.current);\r\n }\r\n\r\n const _searchString = event.target.value;\r\n searchTimeout.current = setTimeout(() => {\r\n setSearchString(_searchString);\r\n gridApi.current.onFilterChanged();\r\n }, 150);\r\n }}\r\n InputProps={{\r\n startAdornment: (\r\n \r\n \r\n \r\n )\r\n }}\r\n />\r\n
\r\n\r\n {props.serverSideFieldList && props.serverSideFieldList.length ? (\r\n
\r\n {\r\n setServerSideFieldListVisible(event.currentTarget);\r\n }}>\r\n More fields \r\n \r\n setServerSideFieldListVisible(null)}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'center'\r\n }}\r\n transformOrigin={{\r\n vertical: 'top',\r\n horizontal: 'center'\r\n }}>\r\n \r\n {props.columnDefs.map(curColDef => {\r\n return !curColDef.hide ? (\r\n \r\n curColDef.field === field\r\n ).length\r\n }\r\n onChange={event => {\r\n props.setServerSideFieldList(\r\n props.serverSideFieldList.filter(\r\n field => curColDef.field === field\r\n ).length\r\n ? props.serverSideFieldList.filter(\r\n field => curColDef.field !== field\r\n )\r\n : props.serverSideFieldList.concat([\r\n curColDef.field\r\n ])\r\n );\r\n }}\r\n name={curColDef.field}\r\n />\r\n }\r\n label={curColDef.headerName}\r\n />\r\n \r\n ) : null;\r\n })}\r\n\r\n {\r\n setServerSideFieldListVisible(null);\r\n props.refreshFunc();\r\n }}>\r\n Update Grid\r\n \r\n \r\n \r\n
\r\n ) : null}\r\n\r\n {!props.hideDefaultTotals ? (\r\n
\r\n
\r\n {visibleRowCount !== totalRowCount ? (\r\n <>\r\n {visibleRowCount} showing / \r\n \r\n ) : null}\r\n {totalRowCount ? totalRowCount : 0} total{' '}\r\n
\r\n {visibleRowCount !== (totalRowCount ? totalRowCount : 0) ? (\r\n <>\r\n \r\n Clear filters\r\n \r\n \r\n ) : null}\r\n
\r\n ) : null}\r\n\r\n
{props.children}
\r\n
\r\n \r\n {\r\n //TODO - make this work for the react grid\r\n // setTimeout(() => {\r\n // $(\".ag-header-group-cell-label\").each(function () {\r\n // var containerLeftPosition = $(this)\r\n // .closest(\".ag-header-container\")\r\n // .css(\"left\");\r\n // if (containerLeftPosition) {\r\n // var containerOffset = parseInt(containerLeftPosition);\r\n // var headerOffset = parseInt(\r\n // $(this).closest(\".ag-header-group-cell\").css(\"left\")\r\n // );\r\n // var newMargin = 0;\r\n // if (\r\n // containerOffset &&\r\n // containerOffset < 0 &&\r\n // !isNaN(headerOffset)\r\n // ) {\r\n // newMargin = containerOffset * -1 - headerOffset;\r\n // }\r\n // if (newMargin > 0) {\r\n // $(this).css(\"margin-left\", newMargin + \"px\");\r\n // } else {\r\n // $(this).css(\"margin-left\", \"\");\r\n // }\r\n // }\r\n // });\r\n // }, 0);\r\n }}>\r\n
\r\n \r\n\r\n \r\n Save Column Set\r\n \r\n \r\n {\r\n setColumnSetSaveOption(event.target.value);\r\n }}>\r\n }\r\n label={\r\n 'Overwrite ' +\r\n (selectedColumnSet ? selectedColumnSet.title : '')\r\n }\r\n />\r\n }\r\n label=\"Save New\"\r\n />\r\n \r\n \r\n {columnSetSaveOption === 'new' ? (\r\n \r\n {\r\n setNewColumnSetTitle(event.target.value);\r\n }}\r\n required\r\n />\r\n <>\r\n {newColumnSetError ? (\r\n {newColumnSetError}\r\n ) : null}\r\n \r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n Save\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nGrid.propTypes = {\r\n columnDefs: PropTypes.array.isRequired,\r\n rowData: PropTypes.array,\r\n defaultColDef: PropTypes.object,\r\n onGridReady: PropTypes.func\r\n};\r\n\r\nexport default Grid;\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport * as PropTypes from \"prop-types\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport OpenInNewIcon from \"@mui/icons-material/OpenInNew\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\n\r\nfunction GridLinkButton(params) {\r\n return (\r\n \r\n {params.colDef.linkLabel ? params.colDef.linkLabel : params.value}{\" \"}\r\n \r\n {!params.colDef.onCellClicked ? (\r\n \r\n ) : null}\r\n \r\n \r\n );\r\n}\r\n\r\nGridLinkButton.propTypes = {\r\n params: PropTypes.object,\r\n};\r\n\r\nexport default GridLinkButton;\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n LinearProgress,\r\n TextField\r\n} from '@mui/material';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Button from '@mui/material/Button';\r\nimport LocalPrintshopIcon from '@mui/icons-material/LocalPrintshop';\r\nimport Transcript from '.';\r\n\r\nimport { getApiUrl, getAuthHeaders } from '../../api/apiConfig';\r\n\r\nimport * as studentDataActions from '../../redux/actions/studentDataActions';\r\n\r\nfunction TranscriptPopup({ student, closeFunc, auth, actions, studentData }) {\r\n useEffect(() => {\r\n actions.loadCurriculum(student.UserID);\r\n }, []);\r\n\r\n useEffect(() => {\r\n console.log('studentData', studentData);\r\n }, [studentData]);\r\n\r\n function getPrintUrl() {\r\n const headers = getAuthHeaders();\r\n\r\n return (\r\n getApiUrl() +\r\n '/doc/transcript/?t=' +\r\n headers.t +\r\n '&d=' +\r\n headers.d +\r\n '&userID=' +\r\n student.UserID\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {\r\n closeFunc();\r\n }}>\r\n \r\n \r\n Transcript for {student.FirstName} {student.LastName}\r\n \r\n \r\n {studentData.curriculum && studentData.userID === student.UserID ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n   Print\r\n \r\n\r\n {\r\n closeFunc();\r\n }}\r\n variant=\"outlined\">\r\n Close\r\n \r\n \r\n \r\n );\r\n}\r\nfunction mapStateToProps(state) {\r\n return {\r\n auth: state.auth,\r\n studentData: state.studentData,\r\n commonData: state.commonData\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: bindActionCreators(studentDataActions, dispatch)\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(TranscriptPopup);\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport { TextField } from '@mui/material';\r\nimport Autocomplete, { createFilterOptions } from '@mui/material/Autocomplete';\r\n\r\nfunction GridDropdownField(params) {\r\n const changeTimeout = useRef();\r\n const initted = useRef();\r\n const [saving, setSaving] = useState(false);\r\n const fieldID = params.data\r\n ? 'mi-grid-input_' +\r\n params.data[params.colDef.field] +\r\n '_' +\r\n params.colDef.field\r\n : '';\r\n\r\n const filterOptions = createFilterOptions({\r\n limit: 100\r\n });\r\n\r\n const [selectedOptionList, setSelectedOptionList] = useState([params.value]);\r\n\r\n useEffect(() => {\r\n // cleanup function to cancel the timeout if it hasn't finished.\r\n return () => {\r\n if (changeTimeout.current) {\r\n clearTimeout(changeTimeout.current);\r\n }\r\n };\r\n }, []);\r\n\r\n function valueChanged(newValue) {\r\n if (params.colDef.onDataChanged) {\r\n if (changeTimeout.current) {\r\n clearTimeout(changeTimeout.current);\r\n }\r\n\r\n changeTimeout.current = setTimeout(() => {\r\n setSaving(true);\r\n params.colDef\r\n .onDataChanged(params.data, params.colDef.field, newValue)\r\n .then(result => setSaving(false));\r\n }, 100);\r\n }\r\n }\r\n\r\n return fieldID ? (\r\n
\r\n option || ''}\r\n defaultValue={selectedOptionList}\r\n onChange={(event, value) => {\r\n setSelectedOptionList(value);\r\n valueChanged(value);\r\n }}\r\n disabled={saving}\r\n fullWidth={true}\r\n renderInput={props => (\r\n \r\n )}\r\n />\r\n
\r\n ) : null;\r\n}\r\n\r\nGridDropdownField.propTypes = {\r\n params: PropTypes.object\r\n};\r\n\r\nexport default GridDropdownField;\r\n","import React from \"react\";\r\nimport * as PropTypes from \"prop-types\";\r\nimport { Button } from \"@mui/material\";\r\n\r\nfunction GridButton(props) {\r\n let link = \"\";\r\n if (props.colDef && props.colDef.linkFunc) {\r\n link = props.colDef.linkFunc(props);\r\n }\r\n\r\n let disabled = false;\r\n if (props.colDef && props.colDef.disableFunc) {\r\n disabled = props.colDef.disableFunc(props);\r\n }\r\n\r\n return props.value ? (\r\n \r\n {props.value}\r\n \r\n ) : null;\r\n}\r\n\r\nGridButton.propTypes = {\r\n params: PropTypes.object,\r\n};\r\n\r\nexport default GridButton;\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport Switch from '@mui/material/Switch';\r\nimport { Tooltip } from '@mui/material';\r\n\r\nfunction GridToggleField(params) {\r\n const [value, setValue] = useState(params.value);\r\n const changeTimeout = useRef();\r\n const [saving, setSaving] = useState(false);\r\n const fieldID = params.data\r\n ? 'mi-grid-input_' +\r\n params.data[params.colDef.field] +\r\n '_' +\r\n params.colDef.field\r\n : '';\r\n\r\n useEffect(() => {\r\n // cleanup function to cancel the timeout if it hasn't finished.\r\n return () => {\r\n if (changeTimeout.current) {\r\n clearTimeout(changeTimeout.current);\r\n }\r\n };\r\n }, []);\r\n\r\n function onChange(e) {\r\n setValue(e.target.checked);\r\n setSaving(true);\r\n params.colDef\r\n .onDataChanged(\r\n params.data,\r\n params.colDef.field,\r\n e.target.checked ? true : false\r\n )\r\n .then(result => setSaving(false));\r\n }\r\n\r\n function getTooltip() {\r\n const disableMessage = checkDisabled();\r\n return disableMessage\r\n ? disableMessage\r\n : params.value\r\n ? 'Click to turn off access'\r\n : 'Click to allow access';\r\n }\r\n\r\n function checkDisabled() {\r\n if (params.colDef.disableFunc) {\r\n return params.colDef.disableFunc(params);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return fieldID ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : null;\r\n}\r\n\r\nGridToggleField.propTypes = {\r\n params: PropTypes.object\r\n};\r\n\r\nexport default GridToggleField;\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n LinearProgress,\r\n TextField\r\n} from '@mui/material';\r\n\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Button from '@mui/material/Button';\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport Select from '@mui/material/Select';\r\n\r\nimport { sendUserNotification } from '../../api/adminDataApi';\r\n\r\nimport ViewAllNotifications from '../ViewAllNotifications';\r\n\r\nimport './index.css';\r\n\r\nfunction NotificationsPopup({ student, closeFunc, onUserAdded }) {\r\n const [notificationType, setNotificationType] = useState(null);\r\n const [notificationMessage, setNotificationMessage] = useState(null);\r\n const [externalUrl, setExternalUrl] = useState(null);\r\n\r\n return (\r\n \r\n \r\n {\r\n closeFunc();\r\n }}>\r\n \r\n \r\n {student.FirstName} {student.LastName}'s Notifications\r\n \r\n \r\n
\r\n
\r\n

\r\n You can send {student.FirstName} a new notification by using this\r\n form.\r\n

\r\n
\r\n \r\n \r\n Send user to:\r\n \r\n setNotificationType(event.target.value)}>\r\n User Dashboard\r\n User Profile\r\n User Curriculum\r\n User Transcript\r\n External Site\r\n \r\n \r\n
\r\n
\r\n {notificationType === '' ? (\r\n
\r\n setExternalUrl(event.target.value)}\r\n value={externalUrl}\r\n fullWidth\r\n placeholder=\"https://\"\r\n />\r\n
\r\n ) : null}\r\n\r\n
\r\n setNotificationMessage(event.target.value)}\r\n value={notificationMessage}\r\n fullWidth\r\n multiline\r\n />\r\n
\r\n\r\n
\r\n {\r\n sendUserNotification({\r\n UserID: student.UserID,\r\n Message: notificationMessage,\r\n Route:\r\n notificationType.indexOf('/') === 0\r\n ? notificationType\r\n : null,\r\n Url:\r\n notificationType.indexOf('/') !== 0 ? externalUrl : null\r\n }).then(result => {\r\n setNotificationType(null);\r\n setNotificationMessage(null);\r\n setExternalUrl(null);\r\n closeFunc();\r\n });\r\n }}>\r\n Send\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {\r\n closeFunc();\r\n }}\r\n variant=\"outlined\">\r\n Close\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default NotificationsPopup;\r\n","import React from 'react';\r\n\r\nimport { getProfileImagePath } from '../../api/authApi';\r\n\r\nfunction ProfileImage(props) {\r\n const student = props.data;\r\n\r\n return (\r\n
\r\n \r\n {student && student.UserID && !student.ProfileImage ? (\r\n
\r\n {student.FirstName.charAt(0) + student.LastName.charAt(0)}\r\n
\r\n ) : null}\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default ProfileImage;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport AdiThemeProvider from '../AdiThemeProvider';\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n LinearProgress,\r\n TextField\r\n} from '@mui/material';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Button from '@mui/material/Button';\r\nimport LaunchIcon from '@mui/icons-material/Launch';\r\nimport EditIcon from '@mui/icons-material/Edit';\r\nimport Radio from '@mui/material/Radio';\r\nimport RadioGroup from '@mui/material/RadioGroup';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport FormLabel from '@mui/material/FormLabel';\r\nimport DeleteIcon from '@mui/icons-material/Delete';\r\n\r\nimport { saveAnnouncement, deleteAnnouncement } from 'api/adminDataApi';\r\nimport { listAnnouncement } from 'api/studentDataApi';\r\n\r\nimport './index.css';\r\n\r\nfunction AdminAnnouncements({ student, closeFunc, onUserAdded }) {\r\n const [editMode, setEditMode] = useState(false);\r\n const [announcementList, setAnnouncementList] = useState(null);\r\n\r\n useEffect(() => {\r\n loadAnnouncementList();\r\n }, []);\r\n\r\n function loadAnnouncementList() {\r\n listAnnouncement().then(_announcementList =>\r\n setAnnouncementList(_announcementList)\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {\r\n closeFunc();\r\n }}>\r\n \r\n \r\n Announcements\r\n \r\n \r\n <>\r\n
\r\n
\r\n {announcementList ? (\r\n announcementList.length ? (\r\n announcementList.map(announcement => (\r\n
\r\n
\r\n

\r\n {announcement.AnnouncementTypeName}\r\n

\r\n
{announcement.Title}
\r\n

{announcement.Description}

\r\n
\r\n {announcement.Url ? (\r\n
\r\n \r\n \r\n \r\n
\r\n ) : null}\r\n
\r\n {\r\n setEditMode(null);\r\n setTimeout(\r\n () => setEditMode({ ...announcement }),\r\n 100\r\n );\r\n }}>\r\n \r\n \r\n\r\n {\r\n deleteAnnouncement(\r\n announcement.AnnouncementID\r\n ).then(result => {\r\n loadAnnouncementList();\r\n });\r\n }}>\r\n \r\n \r\n
\r\n
\r\n ))\r\n ) : (\r\n
No announcements have been added.
\r\n )\r\n ) : (\r\n \r\n )}\r\n
\r\n\r\n
\r\n
\r\n {editMode ? (\r\n <>\r\n
\r\n

\r\n {editMode.AnnouncementID === 0 ? 'Add' : 'Edit'} an\r\n Announcement\r\n

\r\n
\r\n \r\n setEditMode({ ...editMode, Title: event.target.value })\r\n }\r\n />\r\n\r\n \r\n setEditMode({\r\n ...editMode,\r\n Description: event.target.value\r\n })\r\n }\r\n />\r\n\r\n \r\n setEditMode({ ...editMode, Url: event.target.value })\r\n }\r\n />\r\n\r\n
\r\n \r\n \r\n Announcement Type\r\n \r\n \r\n setEditMode({\r\n ...editMode,\r\n AnnouncementTypeID: parseInt(newValue)\r\n })\r\n }>\r\n }\r\n label=\"Announcement\"\r\n />\r\n }\r\n label=\"Job Placement Resource\"\r\n />\r\n \r\n \r\n\r\n
\r\n \r\n {\r\n saveAnnouncement(editMode).then(result => {\r\n setEditMode(null);\r\n loadAnnouncementList();\r\n });\r\n }}\r\n variant=\"contained\"\r\n color=\"neutral\"\r\n disabled={\r\n (editMode.Url &&\r\n editMode.Url.indexOf('http') !== 0) ||\r\n !editMode.Title\r\n }>\r\n Save\r\n \r\n \r\n
\r\n\r\n {\r\n setEditMode(null);\r\n }}\r\n variant=\"outlined\">\r\n Cancel\r\n \r\n
\r\n \r\n ) : (\r\n {\r\n setEditMode({ AnnouncementID: 0 });\r\n }}\r\n variant=\"outlined\">\r\n Add New Announcement\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {\r\n closeFunc();\r\n }}\r\n variant=\"outlined\">\r\n Close\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default AdminAnnouncements;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport AdiThemeProvider from '../AdiThemeProvider';\r\nimport {\r\n Checkbox,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n LinearProgress,\r\n TextField,\r\n Tooltip\r\n} from '@mui/material';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Button from '@mui/material/Button';\r\nimport LaunchIcon from '@mui/icons-material/Launch';\r\nimport EditIcon from '@mui/icons-material/Edit';\r\nimport Radio from '@mui/material/Radio';\r\nimport RadioGroup from '@mui/material/RadioGroup';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport FormLabel from '@mui/material/FormLabel';\r\nimport DeleteIcon from '@mui/icons-material/Delete';\r\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\r\nimport {\r\n savePromoCode,\r\n deletePromoCode,\r\n listPromoCode\r\n} from 'api/adminDataApi';\r\n\r\nimport './index.css';\r\n\r\nfunction AdminPromoCodes({ student, closeFunc, onUserAdded }) {\r\n const [editPromoCode, setEditPromoCode] = useState(false);\r\n const [promoCodeList, setpromoCodeList] = useState(null);\r\n\r\n useEffect(() => {\r\n loadpromoCodeList();\r\n }, []);\r\n\r\n function loadpromoCodeList() {\r\n listPromoCode().then(_promoCodeList => setpromoCodeList(_promoCodeList));\r\n }\r\n\r\n const copyToClipboard = str => {\r\n if (navigator && navigator.clipboard && navigator.clipboard.writeText)\r\n return navigator.clipboard.writeText(str);\r\n return Promise.reject('The Clipboard API is not available.');\r\n };\r\n\r\n return (\r\n \r\n \r\n {\r\n closeFunc();\r\n }}>\r\n \r\n \r\n Promo Codes\r\n \r\n \r\n <>\r\n
\r\n
\r\n {promoCodeList ? (\r\n promoCodeList.length ? (\r\n promoCodeList.map(promoCode => (\r\n
\r\n
\r\n {\r\n setEditPromoCode(null);\r\n setTimeout(\r\n () => setEditPromoCode({ ...promoCode }),\r\n 100\r\n );\r\n }}>\r\n \r\n \r\n\r\n {!promoCode.UserCount ? (\r\n {\r\n deletePromoCode(promoCode).then(result => {\r\n loadpromoCodeList();\r\n });\r\n }}>\r\n \r\n \r\n ) : null}\r\n
\r\n\r\n
\r\n
{promoCode.PromoCodeName}
\r\n

\r\n Code: {promoCode.PromoKey}\r\n
\r\n Users: {promoCode.UserCount}\r\n

\r\n \r\n
\r\n \r\n setEditPromoCode({\r\n ...editPromoCode,\r\n PromoCodeName: event.target.value\r\n })\r\n }\r\n />\r\n\r\n \r\n setEditPromoCode({\r\n ...editPromoCode,\r\n PromoKey: event.target.value\r\n })\r\n }\r\n />\r\n\r\n \r\n setEditPromoCode({\r\n ...editPromoCode,\r\n Price: event.target.value\r\n })\r\n }\r\n />\r\n\r\n \r\n setEditPromoCode({\r\n ...editPromoCode,\r\n DocuSignTemplate: event.target.value\r\n })\r\n }\r\n />\r\n\r\n \r\n \r\n setEditPromoCode({\r\n ...editPromoCode,\r\n DefaultUserIsActive: event.target.checked\r\n })\r\n }\r\n />\r\n }\r\n label={'Allow access to dashboard by default'}\r\n />\r\n \r\n\r\n
\r\n
\r\n \r\n {\r\n savePromoCode(editPromoCode).then(result => {\r\n setEditPromoCode(null);\r\n loadpromoCodeList();\r\n });\r\n }}\r\n variant=\"contained\"\r\n color=\"neutral\"\r\n disabled={\r\n !editPromoCode.PromoCodeName ||\r\n !editPromoCode.PromoKey ||\r\n isNaN(parseFloat(editPromoCode.Price))\r\n }>\r\n Save\r\n \r\n \r\n
\r\n\r\n {\r\n setEditPromoCode(null);\r\n }}\r\n variant=\"outlined\">\r\n Cancel\r\n \r\n \r\n ) : (\r\n {\r\n setEditPromoCode({ PromoCodeID: 0 });\r\n }}\r\n variant=\"outlined\">\r\n Add New Promo Code\r\n \r\n )}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {\r\n closeFunc();\r\n }}\r\n variant=\"outlined\">\r\n Close\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default AdminPromoCodes;\r\n","import React, { useState, useRef } from 'react';\r\nimport dayjs from 'dayjs';\r\nimport moment from 'moment';\r\nimport Stack from '@mui/material/Stack';\r\nimport TextField from '@mui/material/TextField';\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\r\nimport { DesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker';\r\n\r\nfunction GridCalendar(params) {\r\n const [value, setValue] = useState(params.value ? dayjs(params.value) : null);\r\n const [saving, setSaving] = useState(false);\r\n\r\n console.log();\r\n\r\n const changeTimeout = useRef();\r\n\r\n const handleDateChange = newValue => {\r\n setValue(newValue);\r\n valueChanged(moment(newValue.$d).format('YYYY-MM-DD'));\r\n };\r\n\r\n function valueChanged(newValue) {\r\n if (params.colDef.onDataChanged) {\r\n if (changeTimeout.current) {\r\n clearTimeout(changeTimeout.current);\r\n }\r\n\r\n changeTimeout.current = setTimeout(() => {\r\n setSaving(true);\r\n params.colDef\r\n .onDataChanged(params.data, params.colDef.field, newValue)\r\n .then(result => setSaving(false));\r\n }, 100);\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n );\r\n}\r\n\r\nexport default GridCalendar;\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport EmailIcon from '@mui/icons-material/Email';\r\nfunction GridVisibilityIcon(params) {\r\n return (\r\n
\r\n {params.value ? : null}\r\n
\r\n );\r\n}\r\n\r\nGridVisibilityIcon.propTypes = {\r\n params: PropTypes.object\r\n};\r\n\r\nexport default GridVisibilityIcon;\r\n","import React, { useState, useRef, useEffect } from \"react\";\r\nimport moment from \"moment\";\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n LinearProgress,\r\n TextField,\r\n} from \"@mui/material\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Button from \"@mui/material/Button\";\r\nimport Table from \"@mui/material/Table\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport TableContainer from \"@mui/material/TableContainer\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport Paper from \"@mui/material/Paper\";\r\n\r\nimport * as studentDataActions from \"../../redux/actions/studentDataActions\";\r\nimport { listUserDevice } from \"../../api/adminDataApi\";\r\n\r\nimport \"./index.css\";\r\n\r\nfunction DeviceListPopup({ student, closeFunc }) {\r\n const [userDeviceList, setUserDeviceList] = useState(null);\r\n\r\n useEffect(() => {\r\n listUserDevice(student.UserID).then((result) => {\r\n setUserDeviceList(result);\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n {\r\n closeFunc();\r\n }}\r\n >\r\n \r\n \r\n Device List for {student.FirstName} {student.LastName}\r\n \r\n \r\n {userDeviceList ? (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Device Identifier\r\n \r\n \r\n Browser\r\n \r\n \r\n Device Type\r\n \r\n \r\n Email Verified\r\n \r\n \r\n Text Verified\r\n \r\n \r\n IP Address\r\n \r\n \r\n Status\r\n \r\n \r\n \r\n \r\n {userDeviceList.map((device) => (\r\n \r\n {device.DeviceUniqueId}\r\n {device.Browser}\r\n {device.DeviceType}\r\n \r\n {device.EmailVerified\r\n ? moment\r\n .utc(device.EmailVerified)\r\n .local()\r\n .format(\"MM/DD/YYYY\")\r\n : \"Not yet verified\"}\r\n \r\n \r\n {device.TextVerified\r\n ? moment\r\n .utc(device.TextVerified)\r\n .local()\r\n .format(\"MM/DD/YYYY\")\r\n : \"Not yet verified\"}\r\n \r\n {device.IPAddress}\r\n \r\n {device.IsActive ? (\r\n

Active

\r\n ) : (\r\n \"Not Active\"\r\n )}\r\n
\r\n
\r\n ))}\r\n
\r\n \r\n
\r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n \r\n {\r\n closeFunc();\r\n }}\r\n variant=\"outlined\"\r\n >\r\n Close\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default DeviceListPopup;\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport moment from 'moment';\r\n\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n LinearProgress,\r\n TextField\r\n} from '@mui/material';\r\n\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Button from '@mui/material/Button';\r\nimport Table from '@mui/material/Table';\r\nimport TableBody from '@mui/material/TableBody';\r\nimport TableCell from '@mui/material/TableCell';\r\nimport TableContainer from '@mui/material/TableContainer';\r\nimport TableHead from '@mui/material/TableHead';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport Paper from '@mui/material/Paper';\r\n\r\nimport { listUserActivity } from '../../api/adminDataApi';\r\n\r\nimport './index.css';\r\n\r\nfunction ActivityLogPopup({ student, closeFunc }) {\r\n const [userActivityList, setUserActivityList] = useState(null);\r\n\r\n useEffect(() => {\r\n listUserActivity(student.UserID).then(result => {\r\n setUserActivityList(result);\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n {\r\n closeFunc();\r\n }}>\r\n \r\n \r\n Activity Log for {student.FirstName} {student.LastName}\r\n \r\n \r\n {userActivityList ? (\r\n userActivityList.length ? (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Activity Name\r\n \r\n \r\n Time\r\n \r\n \r\n Section\r\n \r\n \r\n Chapter\r\n \r\n \r\n Grade\r\n \r\n\r\n \r\n Status\r\n \r\n \r\n \r\n \r\n {userActivityList.map(activity => (\r\n \r\n {activity.ActivityName}\r\n \r\n {activity.DateTime\r\n ? moment\r\n .utc(activity.DateTime)\r\n .local()\r\n .format('MM/DD/YYYY')\r\n : null}\r\n \r\n {activity.SectionName}\r\n {activity.SectionChapterName}\r\n \r\n {activity.Grade ? activity.Grade : '--'}\r\n \r\n \r\n {activity.IsComplete ? (\r\n

Completed

\r\n ) : (\r\n 'In Progress'\r\n )}\r\n
\r\n
\r\n ))}\r\n
\r\n \r\n
\r\n
\r\n ) : (\r\n
\r\n No activity has been recorded for this user.\r\n
\r\n )\r\n ) : (\r\n \r\n )}\r\n
\r\n \r\n {\r\n closeFunc();\r\n }}\r\n variant=\"outlined\">\r\n Close\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ActivityLogPopup;\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n LinearProgress,\r\n TextField\r\n} from '@mui/material';\r\n\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Button from '@mui/material/Button';\r\n\r\nimport RegistrationForm from '../RegistrationForm';\r\n\r\nimport './index.css';\r\n\r\nfunction AdminStudentRegistrationPopup({ student, closeFunc, onUserAdded }) {\r\n return (\r\n \r\n \r\n {\r\n closeFunc();\r\n }}>\r\n \r\n \r\n Add New User\r\n \r\n \r\n \r\n \r\n \r\n {\r\n closeFunc();\r\n }}\r\n variant=\"outlined\">\r\n Close\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default AdminStudentRegistrationPopup;\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport moment from 'moment';\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle\r\n} from '@mui/material';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Button from '@mui/material/Button';\r\n\r\nimport { deleteUser } from '../../api/adminDataApi';\r\n\r\nimport './index.css';\r\n\r\nfunction DeleteUserPopup({ student, closeFunc }) {\r\n const [deleting, setDeleting] = useState(null);\r\n\r\n return (\r\n \r\n \r\n {\r\n closeFunc();\r\n }}>\r\n \r\n \r\n Delete {student.FirstName} {student.LastName}\r\n \r\n \r\n

\r\n Are you sure you want to delete the user with the email address \"\r\n {student.Email}\"? Deleting cannot be undone.\r\n

\r\n
\r\n \r\n {\r\n setDeleting(true);\r\n deleteUser(student.UserID).then(result => closeFunc());\r\n }}>\r\n Confirm Deletion\r\n \r\n {\r\n closeFunc();\r\n }}\r\n variant=\"outlined\">\r\n Close\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default DeleteUserPopup;\r\n","import React, { useEffect, useState } from 'react';\r\nimport moment from 'moment';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n LinearProgress,\r\n Button\r\n} from '@mui/material';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Table from '@mui/material/Table';\r\nimport TableBody from '@mui/material/TableBody';\r\nimport TableCell from '@mui/material/TableCell';\r\nimport TableContainer from '@mui/material/TableContainer';\r\nimport TableHead from '@mui/material/TableHead';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport Paper from '@mui/material/Paper';\r\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\r\nimport { listEmail } from '../../api/adminDataApi';\r\n\r\nimport LessonIcon from '../LessonIcon';\r\nimport TestIcon from '../TestIcon';\r\n\r\nimport './index.css';\r\n\r\nfunction EmailList({ auth, student, closeFunc }) {\r\n const [emailList, setEmailList] = useState(null);\r\n const [expand, setExpand] = useState({});\r\n\r\n useEffect(() => {\r\n listEmail(student.Email).then(_emailList => setEmailList(_emailList));\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n {\r\n closeFunc();\r\n }}>\r\n \r\n \r\n Emails for {student.FirstName} {student.LastName} ({student.Email})\r\n \r\n \r\n {emailList ? (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Subject\r\n \r\n Sent\r\n \r\n \r\n Delivered\r\n \r\n \r\n Read\r\n \r\n \r\n Dropped\r\n \r\n \r\n \r\n \r\n {emailList.map(email => (\r\n <>\r\n \r\n \r\n \r\n setExpand({\r\n ...expand,\r\n [email.EmailID]: !expand[email.EmailID]\r\n })\r\n }>\r\n {' '}\r\n {email.Subject}\r\n \r\n \r\n \r\n {moment(email.Created).format('M/D/YYYY h:mm:ss a')}\r\n \r\n \r\n {email.DateDelivered\r\n ? moment(email.DateDelivered).format(\r\n 'M/D/YYYY h:mm:ss a'\r\n )\r\n : null}\r\n \r\n \r\n {email.DateRead\r\n ? moment(email.DateRead).format(\r\n 'M/D/YYYY h:mm:ss a'\r\n )\r\n : null}\r\n \r\n \r\n {email.DateDropped\r\n ? moment(email.DateDropped).format(\r\n 'M/D/YYYY h:mm:ss a'\r\n )\r\n : null}\r\n {email.DropReason\r\n ? ' (' + email.DropReason + ')'\r\n : ''}\r\n \r\n \r\n\r\n {expand && expand[email.EmailID] ? (\r\n \r\n \r\n
\r\n

\r\n From: {email.MailFrom}\r\n

\r\n

\r\n To: {email.MailTo}\r\n

\r\n
\r\n
\r\n \r\n \r\n ) : null}\r\n \r\n ))}\r\n \r\n \r\n \r\n
\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n \r\n {\r\n closeFunc();\r\n }}\r\n variant=\"outlined\">\r\n Close\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n auth: state.auth,\r\n studentData: state.studentData,\r\n commonData: state.commonData\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {};\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(EmailList);\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport moment from 'moment';\r\n\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n LinearProgress\r\n} from '@mui/material';\r\nimport { getApiUrl, getAuthHeaders } from '../../api/apiConfig';\r\nimport Dropzone from 'react-dropzone-uploader';\r\nimport 'react-dropzone-uploader/dist/styles.css';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Button from '@mui/material/Button';\r\nimport Grid from '../Grid';\r\nimport GridButton from '../Grid/GridButton';\r\nimport {\r\n Alert,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableRow,\r\n TableContainer,\r\n Paper\r\n} from '@mui/material';\r\n\r\nimport {\r\n deleteJobListing,\r\n importJobListing,\r\n listJobListing\r\n} from '../../api/adminDataApi';\r\n\r\nimport './index.css';\r\n\r\nfunction JobListingPopup({ closeFunc }) {\r\n const gridApi = useRef();\r\n const columnApi = useRef();\r\n\r\n const [jobListingList, setJobListingList] = useState(null);\r\n const [showImport, setShowImport] = useState(false);\r\n const [importing, setImporting] = useState(false);\r\n const [importResult, setImportResult] = useState(null);\r\n const [promptDelete, setPromptDelete] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!showImport) {\r\n setImportResult(null);\r\n setImporting(false);\r\n }\r\n }, [showImport]);\r\n\r\n function loadJobListingList() {\r\n listJobListing().then(result => {\r\n setJobListingList(result);\r\n });\r\n }\r\n\r\n function onGridReady(params) {\r\n gridApi.current = params.api;\r\n columnApi.current = params.columnApi;\r\n loadJobListingList();\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n {\r\n closeFunc();\r\n }}>\r\n \r\n \r\n Job Listings\r\n \r\n \r\n data.JobListingID}\r\n getRowClass={params => {\r\n return params.data.IsExpired ? 'disabled' : '';\r\n }}\r\n refreshFunc={loadJobListingList}>\r\n
\r\n setShowImport(true)}>\r\n Import Listings\r\n \r\n
\r\n \r\n
\r\n \r\n {\r\n closeFunc();\r\n }}\r\n variant=\"outlined\">\r\n Close\r\n \r\n \r\n \r\n {showImport && (\r\n \r\n \r\n {\r\n setShowImport(false);\r\n }}>\r\n \r\n \r\n Import Job Listings\r\n \r\n \r\n {importResult ? (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {importResult && importResult.AppMessage ? (\r\n \r\n {importResult.AppMessage}\r\n \r\n ) : (\r\n \r\n Import was successful!\r\n \r\n )}\r\n \r\n \r\n {Object.keys(importResult.Details)\r\n .filter(detailKey => detailKey !== 'AppMessage')\r\n .map((detailKey, detailIndex) => (\r\n \r\n \r\n {detailKey}\r\n \r\n \r\n {importResult.Details[detailKey]}\r\n \r\n \r\n ))}\r\n \r\n
\r\n
\r\n
\r\n ) : importing ? (\r\n \r\n ) : (\r\n <>\r\n

\r\n To import job listings, please upload the file using the field\r\n below.\r\n

\r\n {\r\n return {\r\n url: getApiUrl() + 'FileUpload/JobListingSpreadsheet',\r\n headers: getAuthHeaders()\r\n };\r\n }}\r\n onChangeStatus={({ meta, remove, xhr }, status) => {\r\n if (status == 'done') {\r\n setImportResult(null);\r\n setImporting(false);\r\n\r\n try {\r\n const result = xhr.response;\r\n const fileName = result.split('fileName:')[1];\r\n if (fileName) {\r\n setImporting(true);\r\n importJobListing(fileName).then(result => {\r\n setImportResult(result);\r\n\r\n loadJobListingList();\r\n });\r\n\r\n remove();\r\n }\r\n } catch (e) {}\r\n } else if (status === 'aborted') {\r\n //toast(`${meta.name}, upload failed...`);\r\n }\r\n }}\r\n maxFiles={1}\r\n accept=\".xlsx\"\r\n multiple={false}\r\n canCancel={false}\r\n inputContent=\"Click or drop file here to upload\"\r\n />\r\n \r\n )}\r\n
\r\n \r\n {\r\n setShowImport(false);\r\n }}\r\n variant=\"outlined\">\r\n Close\r\n \r\n \r\n \r\n )}\r\n\r\n {promptDelete && (\r\n \r\n \r\n {\r\n setPromptDelete(null);\r\n }}>\r\n \r\n \r\n Delete Job Listing\r\n \r\n \r\n

Are you sure you want to delete this listing?

\r\n
\r\n \r\n {\r\n deleteJobListing(promptDelete.JobListingID).then(result => {\r\n setPromptDelete(null);\r\n loadJobListingList();\r\n });\r\n }}\r\n variant=\"contained\"\r\n color=\"primary\">\r\n Confirm Delete\r\n \r\n {\r\n setPromptDelete(null);\r\n }}\r\n variant=\"outlined\">\r\n Cancel\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default JobListingPopup;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport Grid from '../Grid';\r\nimport GridLinkButton from '../Grid/GridLinkButton';\r\nimport TranscriptPopup from '../Transcript/TranscriptPopup';\r\nimport GridDropdownField from '../Grid/GridDropdownField';\r\nimport GridButton from '../Grid/GridButton';\r\nimport GridToggleField from '../Grid/GridToggleField';\r\nimport Button from '@mui/material/Button';\r\n\r\nimport NotificationsPopup from './NotificationsPopup';\r\nimport ProfileImage from './ProfileImage';\r\nimport AdminAnnouncements from './AdminAnnouncements';\r\nimport PromoCodes from './PromoCodes';\r\nimport GridCalendar from '../Grid/GridCalendar';\r\nimport GridEmailButton from '../Grid/GridEmailButton';\r\n\r\nimport {\r\n listUser,\r\n updateDiplomaIssueDate,\r\n updateUserDateExpires,\r\n updateUserIsActive\r\n} from '../../api/adminDataApi';\r\n\r\nimport DeviceListPopup from './DeviceListPopup';\r\nimport ActivityLogPopup from './ActivityLogPopup';\r\nimport AdminStudentRegistrationPopup from './AdminStudentRegistrationPopup';\r\nimport DeleteUserPopup from './DeleteUserPopup';\r\nimport EmailList from '../EmailList';\r\n\r\nimport './index.css';\r\nimport JobListingPopup from './JobListingPopup';\r\n\r\nfunction Admin() {\r\n const gridApi = useRef();\r\n const columnApi = useRef();\r\n const [rowData, setRowData] = useState(null);\r\n const [showTranscript, setShowTranscript] = useState(null);\r\n const [showDeviceList, setShowDeviceList] = useState(null);\r\n const [showActivityLog, setShowActivityLog] = useState(null);\r\n const [\r\n showAdminStudentRegistrationPopup,\r\n setShowAdminStudentRegistrationPopup\r\n ] = useState(null);\r\n const [\r\n showAdminStudentAnnouncementsPopup,\r\n setShowAdminStudentAnnouncementPopup\r\n ] = useState(null);\r\n const [showNotificationsPopup, setShowNotificationsPopup] = useState(null);\r\n const [showPromoCodePopup, setShowPromoCodePopup] = useState(null);\r\n const [showDeleteUser, setShowDeleteUser] = useState(null);\r\n const [showEmailList, setShowEmailList] = useState(null);\r\n const [showJobListings, setShowJobListings] = useState(false);\r\n\r\n function onGridReady(params) {\r\n gridApi.current = params.api;\r\n columnApi.current = params.columnApi;\r\n loadUserList();\r\n }\r\n\r\n function loadUserList() {\r\n listUser().then(userList => setRowData(userList));\r\n setTimeout(() => {\r\n columnApi.current.autoSizeAllColumns();\r\n }, 500);\r\n }\r\n\r\n function getNumberOfDays() {\r\n let days = [];\r\n\r\n for (var i = 1; i <= 90; i++) {\r\n days.push(i);\r\n }\r\n\r\n return days;\r\n }\r\n\r\n function disableFunc(params) {\r\n if (params.data.IsDocRequired && !params.data.DateDocSigned) {\r\n return 'Documents not signed';\r\n } else if (params.data.IsPaymentRequired && !params.data.DatePaid) {\r\n return 'Payment not completed';\r\n }\r\n\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n

Admin

\r\n \r\n params.data.IsCourseCompleted\r\n ? 'Completed'\r\n : params.data.ActiveSectionName,\r\n cellRendererFramework: GridLinkButton,\r\n onCellClicked: function(params) {\r\n setShowTranscript(params.data);\r\n },\r\n cellClass: params => {\r\n return params.data.SectionPercentCompleted >= 100\r\n ? 'success'\r\n : '';\r\n }\r\n },\r\n {\r\n field: 'DaysRemaining',\r\n headerName: 'Time Remaining',\r\n cellClass: params => {\r\n return params.data.DaysRemaining < 10 ? 'warn' : '';\r\n }\r\n },\r\n // {\r\n // field: 'DeviceCount',\r\n // headerName: 'Device Count',\r\n // cellRendererFramework: GridLinkButton,\r\n // onCellClicked: function(params) {\r\n // setShowDeviceList(params.data);\r\n // }\r\n // },\r\n {\r\n field: 'DateCompleted',\r\n headerName: 'Graduation Date',\r\n dataType: 'date'\r\n },\r\n {\r\n field: 'Address',\r\n headerName: 'Diploma Shipping Address',\r\n children: [\r\n { field: 'DiplomaFirstName', headerName: 'First Name' },\r\n { field: 'DiplomaLastName', headerName: 'Last Name' },\r\n { field: 'AddressLine1', headerName: 'Address Line 1' },\r\n { field: 'City', headerName: 'City' },\r\n { field: 'State', headerName: 'State' },\r\n { field: 'Zip', headerName: 'Zip' }\r\n ]\r\n },\r\n {\r\n field: 'DateDiplomaIssued',\r\n headerName: 'Diploma Issue Date',\r\n dataType: 'date',\r\n cellRendererFramework: GridCalendar,\r\n onDataChanged: (student, field, newValue) => {\r\n return updateDiplomaIssueDate(student.UserID, newValue).then(\r\n result => {\r\n loadUserList();\r\n return result;\r\n }\r\n );\r\n }\r\n },\r\n {\r\n field: 'EmailCount',\r\n headerName: 'Emails',\r\n suppressMenu: true,\r\n suppressSorting: true,\r\n pinned: 'right',\r\n cellRendererFramework: GridEmailButton,\r\n onCellClicked: function(params) {\r\n setShowEmailList(params.data);\r\n }\r\n },\r\n {\r\n field: 'UserNotifications',\r\n headerName: 'Notifications',\r\n pinned: 'right',\r\n cellRendererFramework: GridButton,\r\n onCellClicked: function(params) {\r\n setShowNotificationsPopup(params.data);\r\n },\r\n valueGetter: function(params) {\r\n return 'Notifications';\r\n }\r\n },\r\n {\r\n field: 'DaysExtended',\r\n headerName: 'Extend Access',\r\n pinned: 'right',\r\n cellRendererFramework: GridDropdownField,\r\n optionListFunc: getNumberOfDays,\r\n numbersOnly: true,\r\n onDataChanged: (student, field, newValue) => {\r\n return updateUserDateExpires(student.UserID, newValue).then(\r\n result => {\r\n loadUserList();\r\n return result;\r\n }\r\n );\r\n }\r\n },\r\n {\r\n field: 'ActivityLog',\r\n headerName: 'Activity Log',\r\n pinned: 'right',\r\n cellRendererFramework: GridButton,\r\n onCellClicked: function(params) {\r\n setShowActivityLog(params.data);\r\n },\r\n valueGetter: function(params) {\r\n return 'Activity Log';\r\n }\r\n },\r\n {\r\n field: 'IsActive',\r\n headerName: 'Status',\r\n pinned: 'right',\r\n disableFunc,\r\n cellRendererFramework: GridToggleField,\r\n onDataChanged: (student, field, newValue) => {\r\n return updateUserIsActive(student.UserID, newValue).then(\r\n result => {\r\n loadUserList();\r\n return result;\r\n }\r\n );\r\n }\r\n },\r\n {\r\n field: 'Delete',\r\n headerName: 'Delete',\r\n cellRendererFramework: GridButton,\r\n onCellClicked: function(params) {\r\n setShowDeleteUser(params.data);\r\n },\r\n valueGetter: function(params) {\r\n return 'Delete';\r\n },\r\n width: 100\r\n }\r\n ]}\r\n rowData={rowData}\r\n onGridReady={onGridReady}\r\n immutableData={true}\r\n getRowNodeId={data => data.UserID}\r\n getRowClass={params => {\r\n return disableFunc(params) ? 'disabled' : '';\r\n }}\r\n refreshFunc={loadUserList}>\r\n
\r\n {\r\n setShowAdminStudentRegistrationPopup(true);\r\n }}>\r\n + Add User\r\n \r\n\r\n {\r\n setShowPromoCodePopup(true);\r\n }}>\r\n Promo Codes\r\n \r\n\r\n {\r\n setShowAdminStudentAnnouncementPopup(true);\r\n }}>\r\n User Announcements\r\n \r\n\r\n {\r\n setShowJobListings(true);\r\n }}>\r\n Job Listings\r\n \r\n
\r\n \r\n {showTranscript ? (\r\n setShowTranscript(null)}\r\n student={showTranscript}\r\n />\r\n ) : null}\r\n\r\n {showDeviceList ? (\r\n setShowDeviceList(null)}\r\n student={showDeviceList}\r\n />\r\n ) : null}\r\n\r\n {showActivityLog ? (\r\n setShowActivityLog(null)}\r\n student={showActivityLog}\r\n />\r\n ) : null}\r\n\r\n {showAdminStudentRegistrationPopup ? (\r\n setShowAdminStudentRegistrationPopup(null)}\r\n student={showAdminStudentRegistrationPopup}\r\n onUserAdded={() => {\r\n setShowAdminStudentRegistrationPopup(null);\r\n loadUserList();\r\n }}\r\n />\r\n ) : null}\r\n\r\n {showAdminStudentAnnouncementsPopup ? (\r\n setShowAdminStudentAnnouncementPopup(null)}\r\n student={showAdminStudentAnnouncementsPopup}\r\n />\r\n ) : null}\r\n\r\n {showNotificationsPopup ? (\r\n setShowNotificationsPopup(null)}\r\n student={showNotificationsPopup}\r\n />\r\n ) : null}\r\n\r\n {showPromoCodePopup ? (\r\n setShowPromoCodePopup(null)} />\r\n ) : null}\r\n\r\n {showActivityLog ? (\r\n setShowActivityLog(null)}\r\n student={showActivityLog}\r\n />\r\n ) : null}\r\n\r\n {showDeleteUser ? (\r\n {\r\n setShowDeleteUser(null);\r\n loadUserList();\r\n }}\r\n student={showDeleteUser}\r\n />\r\n ) : null}\r\n\r\n {showEmailList ? (\r\n {\r\n setShowEmailList(null);\r\n }}\r\n student={showEmailList}\r\n />\r\n ) : null}\r\n\r\n {showJobListings ? (\r\n {\r\n setShowJobListings(null);\r\n }}\r\n />\r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\nexport default Admin;\r\n","import React, { useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\n\r\nimport { LinearProgress } from '@mui/material';\r\n\r\nimport { trackDocSigned } from '../../api/authApi';\r\n\r\nimport * as authActions from '../../redux/actions/authActions';\r\n\r\nimport StudentDashboard from '../StudentDashboard';\r\n\r\nfunction DocuSignComplete({ actions, auth }) {\r\n useEffect(() => {\r\n const reference = window.location.href.split('?')[1];\r\n if (reference) {\r\n trackDocSigned(reference).then(result => actions.checkAuthToken());\r\n }\r\n }, []);\r\n\r\n return auth && auth.user && auth.user.IsDocSigned ? (\r\n \r\n ) : (\r\n \r\n );\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n auth: state.auth,\r\n studentData: state.studentData,\r\n commonData: state.commonData\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n actions: {\r\n ...bindActionCreators(authActions, dispatch)\r\n }\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(DocuSignComplete);\r\n","import React, { useEffect, useState, useRef } from 'react';\r\n\r\nimport './index.css';\r\nimport { getSessionStorage, setSessionStorage } from 'api/apiConfig';\r\nimport {\r\n TextField,\r\n Button,\r\n Alert,\r\n LinearProgress,\r\n IconButton\r\n} from '@mui/material';\r\nimport InputAdornment from '@mui/material/InputAdornment';\r\n\r\nimport { listJobListing } from 'api/authApi';\r\nimport {\r\n ArrowDownward,\r\n ArrowUpward,\r\n ChevronRight,\r\n KeyboardArrowDown,\r\n KeyboardArrowUp,\r\n Search\r\n} from '@mui/icons-material';\r\nimport Tabs from '@mui/material/Tabs';\r\nimport Tab from '@mui/material/Tab';\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport FormControl from '@mui/material/FormControl';\r\nimport Select from '@mui/material/Select';\r\nimport moment from 'moment';\r\n\r\nfunction JobListingSearch() {\r\n const passwordRequired = 'password08';\r\n const passwordEntered = getSessionStorage('adi-pw');\r\n const [isLoggedIn, setIsLoggedIn] = useState(false);\r\n const [password, setPassword] = useState('');\r\n const [passwordInvalid, setPasswordInvalid] = useState(false);\r\n const [jobListingList, setJobListingList] = useState(null);\r\n const [filteredList, setFilteredList] = useState(null);\r\n const [searchString, setSearchString] = useState('');\r\n const [expanded, setExpanded] = useState({});\r\n const [searchField, setSearchField] = useState('City');\r\n const [selectedState, setSelectedState] = useState('');\r\n\r\n useEffect(() => {\r\n setIsLoggedIn(passwordEntered === passwordRequired);\r\n }, [passwordEntered]);\r\n\r\n useEffect(() => {\r\n if (isLoggedIn && !jobListingList) {\r\n listJobListing(passwordEntered).then(_jobListingList =>\r\n setJobListingList(_jobListingList)\r\n );\r\n }\r\n }, [isLoggedIn]);\r\n\r\n useEffect(() => {\r\n if (jobListingList) {\r\n if (!filteredList) {\r\n setFilteredList(jobListingList);\r\n }\r\n }\r\n }, [jobListingList]);\r\n\r\n useEffect(() => {\r\n if (document.getElementById('searchString')) {\r\n document.getElementById('searchString').focus();\r\n }\r\n }, [searchField]);\r\n\r\n useEffect(() => {\r\n if (selectedState && searchField === 'State') {\r\n searchListings();\r\n }\r\n }, [selectedState]);\r\n\r\n function searchListings() {\r\n setFilteredList(\r\n jobListingList.filter(job => {\r\n let _searchCompare =\r\n searchField === 'State'\r\n ? selectedState.toLocaleLowerCase()\r\n : searchString.toLocaleLowerCase();\r\n let _value = '';\r\n switch (searchField) {\r\n case 'City':\r\n _value = String(job.Location).toLocaleLowerCase();\r\n break;\r\n case 'State':\r\n _value = String(job.State).toLocaleLowerCase();\r\n break;\r\n default:\r\n _value = String(job.Headline).toLocaleLowerCase();\r\n break;\r\n }\r\n\r\n return _value.indexOf(_searchCompare) !== -1;\r\n })\r\n );\r\n }\r\n\r\n return (\r\n
\r\n {isLoggedIn ? (\r\n filteredList ? (\r\n
\r\n
\r\n setSearchField(newValue)}>\r\n Search by: \r\n\r\n \r\n \r\n {/* */}\r\n \r\n\r\n {searchField === 'State' ? (\r\n \r\n State\r\n setSelectedState(event.target.value)}>\r\n {[\r\n 'AK',\r\n 'AL',\r\n 'AR',\r\n 'AZ',\r\n 'CA',\r\n 'CO',\r\n 'CT',\r\n 'DC',\r\n 'DE',\r\n 'FL',\r\n 'GA',\r\n 'HI',\r\n 'IA',\r\n 'ID',\r\n 'IL',\r\n 'IN',\r\n 'KS',\r\n 'KY',\r\n 'LA',\r\n 'MA',\r\n 'MD',\r\n 'ME',\r\n 'MI',\r\n 'MN',\r\n 'MO',\r\n 'MS',\r\n 'MT',\r\n 'NC',\r\n 'ND',\r\n 'NE',\r\n 'NH',\r\n 'NJ',\r\n 'NM',\r\n 'NV',\r\n 'NY',\r\n 'OH',\r\n 'OK',\r\n 'OR',\r\n 'PA',\r\n 'PR',\r\n 'RI',\r\n 'SC',\r\n 'SD',\r\n 'TN',\r\n 'TX',\r\n 'UT',\r\n 'VA',\r\n 'VI',\r\n 'VT',\r\n 'WA',\r\n 'WI',\r\n 'WV',\r\n 'WY'\r\n ].map(state => (\r\n {state}\r\n ))}\r\n \r\n \r\n ) : (\r\n setSearchString(event.target.value)}\r\n onKeyDown={event => {\r\n if (event.key === 'Enter') {\r\n searchListings();\r\n }\r\n }}\r\n id=\"searchString\"\r\n variant=\"filled\"\r\n label={'Search listings by ' + searchField}\r\n InputProps={{\r\n endAdornment: (\r\n \r\n {\r\n searchListings();\r\n }}>\r\n \r\n \r\n \r\n )\r\n }}\r\n />\r\n )}\r\n\r\n
\r\n {filteredList.length === jobListingList.length\r\n ? 'Showing all ' + filteredList.length + ' job listings'\r\n : filteredList.length + ' results'}\r\n\r\n {filteredList.length !== jobListingList.length && (\r\n {\r\n setSearchString('');\r\n setSelectedState('');\r\n setFilteredList(jobListingList);\r\n }}>\r\n Clear Search\r\n \r\n )}\r\n
\r\n
\r\n\r\n {filteredList.map(job => (\r\n
\r\n \r\n View Listing\r\n \r\n \r\n\r\n {/*

\r\n \r\n {job.Headline}\r\n \r\n

*/}\r\n

\r\n Location: {job.Location}\r\n {job.State ? ', ' + job.State : ''}\r\n

\r\n \r\n {job.Description}\r\n {/* \r\n setExpanded({\r\n ...expanded,\r\n [job.JobListingID]: !expanded[job.JobListingID]\r\n })\r\n }>\r\n {expanded[job.JobListingID] ? (\r\n <>\r\n Show Less \r\n \r\n ) : (\r\n <>\r\n Show More \r\n \r\n )}\r\n */}\r\n

\r\n\r\n {job.DatePosted && (\r\n Posted: {moment(job.DatePosted).format('MM/DD/YYYY')}\r\n )}\r\n {job.DateExpired && (\r\n \r\n Valid Until: {moment(job.DateExpired).format('MM/DD/YYYY')}\r\n \r\n )}\r\n
\r\n ))}\r\n
\r\n ) : (\r\n \r\n )\r\n ) : (\r\n
\r\n {passwordInvalid && (\r\n \r\n Enter a valid password\r\n \r\n )}\r\n {\r\n setPasswordInvalid(false);\r\n\r\n if (password === passwordRequired) {\r\n setSessionStorage('adi-pw', password);\r\n setIsLoggedIn(true);\r\n } else {\r\n setPasswordInvalid(true);\r\n }\r\n }}>\r\n setPassword(event.target.value)}\r\n variant=\"filled\"\r\n label=\"Enter Password\"\r\n type=\"password\"\r\n fullWidth\r\n inputProps={{ autoComplete: 'off' }}\r\n />\r\n
\r\n \r\n Log In\r\n \r\n \r\n
\r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default JobListingSearch;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Route, Switch } from 'react-router-dom';\r\nimport { deviceDetect } from 'react-device-detect';\r\nimport { connect } from 'react-redux';\r\nimport { bindActionCreators } from 'redux';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\n\r\nimport LinearProgress from '@mui/material/LinearProgress';\r\nimport Button from '@mui/material/Button';\r\n\r\nimport * as authActions from '../redux/actions/authActions';\r\nimport {\r\n registerUser,\r\n getEmailVerificationCode,\r\n getTextVerificationCode,\r\n generateUUID\r\n} from '../api/authApi';\r\n\r\nimport { getCookie, setCookie } from '../api/apiConfig';\r\n\r\nimport HomePage from './Home';\r\nimport Header from './Header';\r\nimport Footer from './Footer';\r\nimport PageNotFound from './PageNotFound';\r\nimport LoginForm from './LoginForm';\r\nimport MyProfile from './MyProfile';\r\nimport BillingHistory from './BillingHistory';\r\nimport ViewAllNotifications from './ViewAllNotifications';\r\nimport Curriculum from './Curriculum';\r\nimport Transcript from './Transcript';\r\nimport Admin from './Admin';\r\nimport DocuSignComplete from './DocuSignComplete';\r\nimport JobListingSearch from './JobListingSearch';\r\n\r\nimport './index.css';\r\n\r\nfunction App({ auth, actions }) {\r\n useEffect(() => {\r\n if (\r\n typeof window !== 'undefined' &&\r\n window.location.href &&\r\n String(window.location.href).indexOf('localhost') === -1\r\n ) {\r\n if (window.location.protocol === 'http:') {\r\n window.location.href = window.location.href.replace('http:', 'https:');\r\n }\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n let deviceUniqueId = getCookie('adi-visitor');\r\n if (!deviceUniqueId) {\r\n deviceUniqueId = generateUUID();\r\n setCookie('adi-visitor', deviceUniqueId);\r\n }\r\n\r\n if (deviceUniqueId) {\r\n actions.deviceReady({\r\n ...deviceDetect(),\r\n deviceUniqueId\r\n });\r\n }\r\n }, []);\r\n\r\n if (auth) {\r\n return window.location.hash === '#/job-board' ? (\r\n \r\n ) : (\r\n <>\r\n
\r\n
\r\n {auth.user && auth.user.IsLoggedIn ? (\r\n auth.user.UserLevelID === 9 ? (\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n ) : (\r\n \r\n )}\r\n
\r\n\r\n