{"version":3,"sources":["images/GovGig_Logo_Transparent_512.png","images/header_logo_640x192.png","images/logo_wo_tagline_white_640x192.png","components/Logger.ts","aws-exports.js","AppConfig.ts","components/page/MarginRow.tsx","components/Tracking.ts","components/page/SimpleMenu.tsx","components/page/PopperMenuItem.tsx","components/page/Header.tsx","components/notify/NotifyBar.tsx","API.ts","components/form/DialogButton.tsx","components/confirm/ConfirmDialog.tsx","components/alert/AlertDialog.tsx","components/ActionLink.tsx","components/page/Footer.tsx","components/page/Page.tsx","pages/NotFoundPage.tsx","components/form/FormValidator.tsx","model/Question.ts","model/Lesson.ts","model/Course.ts","stores/StoreUtilities.ts","stores/UserStore.ts","model/Registration.ts","model/Class.ts","model/Account.ts","model/User.ts","model/Activity.ts","model/InvoiceItem.ts","model/Invoice.ts","model/Charge.ts","model/Agreement.ts","pages/signup/SignUpPage.tsx","components/form/TextFieldValidator.tsx","components/form/ProgressButton.tsx","components/auth/SignInDialog.tsx","components/Visible.tsx","components/auth/PasswordAssistDialog.tsx","pages/signIn/SignInPage.tsx","pages/LoadingPage.tsx","components/ControlTower.tsx","components/TitleBar.tsx","stores/AccountStore.ts","components/form/CheckboxValidator.tsx","pages/account/AccountPage.tsx","pages/SignOutPage.tsx","components/TitleButton.tsx","pages/account/AccountCard.tsx","pages/account/UserCard.tsx","pages/account/AccountInfo.tsx","pages/class/ClassCard.tsx","pages/account/AccountClasses.tsx","pages/account/AccountUsers.tsx","components/NavigationBar.tsx","pages/account/AccountChargeCard.tsx","pages/account/AccountBilling.tsx","pages/admin/AccountsPage.tsx","pages/account/AccountEditPage.tsx","pages/class/LessonCard.tsx","components/RegistrationCard.tsx","pages/class/ClassPage.tsx","pages/lesson/LessonPlayer.tsx","pages/class/QuizCard.tsx","pages/lesson/ClassCompletionDialog.tsx","components/page/ValueProposition.tsx","pages/lesson/ProfileActionDialog.tsx","pages/lesson/LessonPage.tsx","components/auth/PasswordChangeDialog.tsx","components/auth/EmailChangeDialog.tsx","pages/account/UserEditPage.tsx","pages/register/RegisterPage.tsx","pages/account/RosterCard.tsx","components/widgets/LinearGaugeSegment.tsx","pages/account/AccountClassPage.tsx","pages/content/CourseEditPage.tsx","pages/account/ClassHistoryCard.tsx","pages/account/AccountUserPage.tsx","pages/myClasses/MyClassesPage.tsx","pages/content/CourseCard.tsx","pages/content/CoursesPage.tsx","components/form/FormGroupSpacer.tsx","pages/reports/ReportsPage.tsx","pages/account/PaymentForm.tsx","pages/account/AccountClassEditPage.tsx","pages/course/CoursePage.tsx","pages/course/CoursePreviewPage.tsx","pages/reports/ActivityReport.tsx","pages/legal/TermsOfUseUS.tsx","pages/legal/TermsOfUsePage.tsx","pages/legal/PrivacyPolicyUS.tsx","pages/legal/PrivacyPolicyCCPA.tsx","pages/legal/PrivacyPolicyPage.tsx","components/ModalDialog.tsx","components/page/PrivacyPolicyDialog.tsx","components/page/TermsOfUseDialog.tsx","pages/content/CourseDetailPage.tsx","App.tsx","serviceWorker.ts","apis/CustomQueries.ts","apis/CustomMutations.ts","apis/LearningAPI.ts","components/Progress.ts","components/alert/Alert.ts","components/notify/Notify.tsx","components/confirm/Confirm.ts","stores/CourseStore.ts","stores/S3UrlCacheStore.ts","stores/CacheStore.ts","components/page/PrivacyPolicy.ts","components/page/TermsOfUse.ts","apis/BillingAPI.ts","apis/CertificateAPI.ts","index.tsx"],"names":["module","exports","LogLevel","awsmobile","AppConfig","env","process","REACT_APP_ENV","nodeEnv","version","commitId","REACT_APP_COMMIT_ID","build","REACT_APP_JOB_ID","stripe","apiKey","rollbar","accessToken","REACT_APP_ROLLBAR_ACCESS_TOKEN","google","trackingId","REACT_APP_GOOGLE_TRACKING_ID","options","checkBuildInterval","domain","REACT_APP_DOMAIN","homeUrl","jobsUrl","newsUrl","tinymce","branch","REACT_APP_BRANCH","MarginRow","classes","this","props","className","rootStyle","children","React","withStyles","theme","createStyles","breakpoints","down","paddingLeft","spacing","paddingRight","width","up","maxWidth","marginLeft","marginRight","withWidth","transformer","payload","level","code_version","client","javascript","body","trace","frames","locRegex","i","length","filename","matchResults","match","exception","description","JSON","stringify","message","Logger","config","get","logLevel","Warn","rollbarConfig","enabled","captureUncaught","captureUnhandledRejections","autoInstrument","network","networkRequestBody","log","dom","navigation","connectivity","maxTelemetryEvents","hostBlackList","environment","person","id","undefined","transform","Rollbar","info","configure","userId","msg","args","debug","Debug","console","Info","warning","warn","error","Error","critical","Critical","Tracking","ReactGA","initialize","initialized","set","path","cleaned","cleanPath","pageview","name","modalview","eventArgs","category","window","location","pathname","action","value","label","event","replace","UUIDPattern","RegExp","SimpleMenu","inject","observer","handleClick","anchorEl","currentTarget","handleClose","handleHome","ControlTower","route","Routes","home","handleFindJobs","open","handleClasses","myClasses","handleAccount","accountStore","account","handleAccounts","accounts","handleReports","reports","handleCourses","courses","handleSignOut","a","userStore","signOut","currentPath","currentRoute","classesButton","MenuItem","key","activeMenuItem","menuItem","onClick","findJobsButton","postJobsButton","signOutButton","menuItems","isAdminOrAgent","accountsButton","reportsButton","coursesButton","startsWith","push","accountButton","IconButton","color","aria-label","aria-owns","aria-haspopup","menuIcon","Menu","Boolean","onClose","observable","palette","primary","main","fontWeight","text","PopoverMenuItem","menuList","button","isXS","isWidthDown","MenuListComp","MenuList","menuListContainer","Array","isArray","map","item","to","rest","style","textDecoration","e","Fragment","menuItemRef","Grid","container","Popover","disableRestoreFocus","anchorOrigin","vertical","horizontal","transformOrigin","Component","Header","renderMenuItems","isAuthenticated","Button","activeButton","onClickAccounts","onClickReports","onClickCourses","onClickMyClasses","onClickFindJobs","PopperMenuItem","getMenuItemButton","onClickAccount","onClickSignOut","otherProps","renderArrow","isActive","String","includes","Comp","accountId","onClickHome","progress","AppBar","position","appBar","toolBar","disableGutters","href","linkStyle","src","logo","appLogo","alt","Typography","productTitle","variant","grow","Hidden","xsDown","smUp","user","progressWrapper","LinearProgress","hidden","isVisible","top","backgroundColor","contrastText","height","maxHeight","minHeight","flexGrow","marginBottom","margin","fontSize","padding","alpha","input","display","title","icon","secondary","variantIcon","success","CheckCircleIcon","WarningIcon","ErrorIcon","InfoIcon","variantAutoHideDuration","Transition","direction","AccountStatus","AccountType","AccountSize","ModelAttributeTypes","UserStatus","UserRole","ProfileStatus","SecurityStatus","WorkSetting","AgencyType","AgreementType","AssignmentSchedule","ClassStatus","LessonStatus","ServiceRequestType","EmploymentType","JobCandidateStatus","RecordUpdateOrigin","JobPostStatus","JobPostType","ActivityType","AddressType","JobInterestStatus","SubjectType","ModelSortDirection","NotifyBar","reason","notify","close","snackBarContent","Icon","SnackbarContent","aria-describedby","classNames","iconVariant","closeBtn","autoHideDuration","Snackbar","snackBar","TransitionComponent","marginTop","common","white","dark","opacity","alignItems","lineHeight","cursor","float","right","DialogButton","type","disabled","fullWidth","typeProp","variantProp","childrenProp","customClassName","primaryDialogButton","secondaryDialogButton","tertiaryDialogButton","size","minWidth","boxShadow","paddingTop","paddingBottom","background","paper","grey","ConfirmDialog","onCancel","confirm","cancel","onSubmit","content","DialogContentText","confirmLabel","buttons","cancelLabel","dialog","Dialog","scroll","aria-labelledby","DialogTitle","DialogContent","DialogActions","dialogActions","justifyContent","AlertDialog","alert","ActionLink","alignText","tracking","click","variation","textStyle","linkStyles","textStyles","linkText","linkStyleLight","linkStyleDark","Link","align","withTheme","Footer","onClickContact","onClickPrivacyPolicy","privacyPolicy","show","onClickTermsOfUse","termsOfUse","academyUrl","talentUrl","copyright","DOMParser","parseFromString","format","Date","now","textContent","xs","sm","link","Divider","divider","borderTop","borderTopColor","letterSpacing","Page","document","prevProps","componentDidMount","hideHeader","hideFooter","header","contentStyle","footer","default","flexDirection","overflow","flex","NotFoundPage","lg","root","logoImage","textAlign","FormValidator","state","isValid","fields","attachToForm","component","preventDefault","validateFields","setState","forEach","field","validate","resources","formvalidator","noValidate","Question","data","createdAt","updatedAt","lessonId","lesson","number","question","answers","correctAnswer","Lesson","courseId","course","videoUrl","videoDuration","questions","Course","items","loadQuestions","coverUrl","details","publishDate","sunsetDate","lessonCount","creditHours","isFree","handoutUrl","lessons","loadLessons","json","parse","find","l","num","index","findIndex","createUUID","uuid","getISODateFromDate","date","adjDate","setMinutes","getTimezoneOffset","toISOString","substr","getISODateToday","getISODateTime","isoToLocalDate","isoDate","isoToLocalDateTime","isoDateTime","getErrorMessage","err","response","raw","phoneToE164Format","phone","phoneNumber","parsePhoneNumberFromString","toString","numberToMoneyFormat","Intl","NumberFormat","currency","humanizeString","TypeError","separator","toLowerCase","decamelize","split","word","charAt","toUpperCase","slice","join","PermissionType","Registration","classId","class","classStatus","classProgress","lessonNumber","lessonStatus","videoProgress","score","startedAt","endsAt","completedAt","lessonsAssigned","nextAssignmentAt","Class","User","subDays","addYears","Passed","Failed","classCompleted","Ended","NotStarted","answer","isBefore","startOfToday","ownerId","termBegin","termEnd","seatsPurchased","seatsFilled","couponCode","assignmentSchedule","registrations","All","loadRegistrations","begin","end","schedule","Monthly","Math","round","Quarterly","startDate","addMonths","Account","address","city","postalCode","accountType","accountStatus","customerId","accountSize","users","Individual","Agency","Active","Small","loadClasses","loadUsers","active","invitedAt","firstName","lastName","email","jobTitle","userStatus","role","Registered","Inactive","r","Student","Candidate","Applicant","Admin","Agent","Employer","Activity","activityDate","activityType","objectId","values","InvoiceItem","customer","unit_amount","quantity","discounts","CustomField","Invoice","collection_method","auto_advance","custom_fields","custom_field","Charge","timestamp","amount","created","receipt_number","receipt_url","Agreement","agreementTypes","agreementKey","agreementType","UserStoreConstants","CognitoAttribute","UserStore","learningAPI","billingAPI","_attributes","signUp","username","password","cognitoUser","signOutCurrentAuthenticatedUser","Promise","resolve","reject","attributes","Auth","validationData","then","catch","confirmSignUp","code","resendSignUp","signIn","challengeName","initSession","result","createActivity","UserSignIn","checkInterval","clearInterval","finally","deleteAllCookies","currentSession","currentAuthenticatedUser","getUserAttribute","userAttributes","attribute","getName","getValue","getUserAttributes","updateUserAttributes","isLoading","getCurrentSessionPayload","getUsername","checkAuthentication","loadUser","completeNewPassword","newPassword","getUser","Suspended","configureUser","listRegistrations","getRegistration","registrationId","updateRegistration","registration","existing","resetRegistration","getClassRegistration","createInvoice","couponId","tokenId","invoice","coupon","fullName","updateUser","update","getCustomer","deleteSource","sourceId","listCharges","charges","getCharges","activity","cookies","cookie","c","d","hostname","cookieBase","encodeURIComponent","p","pop","shift","_cognitoUser","isAgent","isEmployer","isStudent","session","authTimeValue","getIdToken","authTime","fromUnixTime","groups","isAdmin","indexOf","isToday","reload","setInterval","createUser","UserCreate","updatedUser","forgotPassword","forgotPasswordSubmit","createAgreement","classObj","APITypes","getRegistrationLessonsAssigned","createRegistration","ClassRegistration","computed","TextFieldValidator","errorMessage","onBlur","inputParams","onChange","onAutocompleteChange","autocompleteOptions","getOptionLabel","target","validators","errorMessages","errorName","Object","keys","validatorName","validator","param","inputRef","Autocomplete","autoSelect","includeInputInList","renderInput","params","ref","InputProps","TextField","inputProps","helperText","required","minLength","maxLength","isMobilePhone","isEmail","isPostalCode","isStrongPassword","matches","isURL","isURLMatch","isUsername","minDate","maxDate","minValue","maxValue","isFloat","defaultLocale","defaultCountry","minPasswordLength","locale","passwordStrength","parseFloat","strength","hasLength","hasNumber","hasMixed","hasSpecial","test","isNaN","getTime","ProgressButton","processing","CircularProgress","progressButton","left","SignInDialog","onSignIn","onSignUp","signup","isProcessing","account2","newPasswordRequired","onForgotPassword","onShowPasswordAssist","Paper","dialogPaper","dialogHero","titleBackground","appTitle","autoComplete","dialogTitle","dialogContent","autoFocus","autoCorrect","autoCapitalize","dialogImage","fontFamily","Visible","if","PasswordAssistDialog","confirming","onResendCode","instructions","borderRadius","submitButton","HomePage","showPasswordAssist","init","onSignInClose","when","hide","signInDialog","overflowY","LoadingPage","accountEdit","accountsEdit","accountClassEdit","courseEdit","courseDetail","coursePurchase","notFound","privacy","privacyCCPA","register","signout","terms","signin","RouteRequirements","roles","lastNavigatedRoute","routeExists","routeRequiresLogin","routeKey","hasRequiredRole","routeMatch","routeRequirements","SignInPage","pageView","navigate","back","history","TitleBar","titleBar","actions","AccountStoreConstants","AccountStore","certificateAPI","courseStore","listAccounts","getAccount","listClasses","joinCourses","getClass","getClassAndRegistrations","registrationCount","updateClass","listUsers","getAccountUsers","u","joinClassesToUser","findClass","joinClassToRegistration","findUser","search","updateAccount","listAccountActivity","filter","listActivityByDate","activities","joinActivities","accountData","createAccount","classInput","createClass","newClass","listCourses","addClass","found","deleteRegistration","completedDate","create","student","day","monthYear","courseFound","sort","b","localeCompare","deleteUser","splice","CheckboxValidator","checked","noError","FormControl","Checkbox","FormHelperText","AccountTabNames","SignUpPage","isConfirming","termsCheckbox","confirmationCode","createUserInput","Company","createAccountInput","accountName","AccountCreate","addFreeClass","addFreeRegistration","agreementInput","PrivacyPolicy","TermsOfUse","freeClass","addClassRegistration","FormGroup","formGroup","fieldLabel","RadioGroup","row","FormControlLabel","control","Radio","labelPlacement","placeholder","termsOfUseText","radioGroup","SignOutPage","TitleButton","vari","primaryButton","secondaryButton","tertieryButton","noWrap","light","borderColor","AccountCard","onEdit","onCardAction","status","Card","card","CardContent","CardActionArea","actionArea","titleButtons","UserCard","formatNational","phoneToNationalFormat","Box","pb","owner","textOverflow","AccountInfo","ClassCard","onAddClass","onEditClass","s3UrlCacheStore","url","coverImageUrl","term","seats","isEnded","wrap","CardMedia","media","image","titleDescriptionMax","titleDescription","cover","mediaArea","AccountClasses","getCourse","subtitle","current","available","past","today","AccountUsers","onSearchChange","filterUsers","onCancelSearch","onAddStudent","allUsers","inactive","invited","registered","suspended","Invited","mt","bgcolor","searchBar","NavigationBar","onBack","chevron","verticalAlign","AccountChargeCard","onView","charge","AccountBilling","loadCharges","AccountTypeOptions","SortOptions","AccountPage","tabNames","handleChange","tabName","loadAccount","tab","tabValue","Tabs","indicatorColor","textColor","tabs","Tab","hiddenTab","AccountEditPage","onStripe","form","endAdornment","LessonCard","renderPlayIcon","playing","disabledIcon","getStatus","disabledIconPassed","playIconPassed","disabledIconFailed","playIconFailed","playIcon","onPlay","duration","seconds","time","addSeconds","secondsToDuration","flexShrink","alignSelf","RegistrationCard","renderProgress","progressClassName","classProgressNotStarted","InProgress","passing","classProgressPassing","classProgressFailing","classProgressFailed","progressBar","linearProgress","barColorPrimary","determinate","linearProgressDeterminateColor","renderMenu","resetEnabled","iconButton","menuAnchor","onOpenMenu","isPrinting","printingIndicator","keepMounted","onCloseMenu","onPrintCertificate","onResetClass","createCertificate","blobURL","URL","createObjectURL","downloadHandout","Storage","download","Body","downloadBlob","blob","createElement","addEventListener","clickHandler","setTimeout","revokeObjectURL","removeEventListener","scoreClassName","classScorePassing","classScoreFailed","failing","classScoreFailing","handoutLink","m","renderScore","bottom","zIndex","fountWeight","zOrder","ClassPage","onRegistrationCardAction","updatedRegistration","onLessonCardAction","isExpired","sortLessons","assignedLessons","registrationCard","lessonCard","LessonPlayer","firstPlay","playedSeconds","player","onReady","ready","seekTo","getDuration","onPause","onSeek","onProgress","floor","onEnded","hideContent","controls","playsinline","QuizCard","getAnswerClassName","questionIndex","showAnswer","questionNumber","lessonCompleted","getAnswer","abs","wrongAnswer","onAnswer","answerItem","cancelButton","borderStyle","borderWidth","ClassCompletionDialog","backgroundImage","SignInHero","backgroundSize","backgroundRepeat","backgroundPosition","heroIcon","ValueProposition","avatarIcon","heading","Avatar","classnames","avatar","colorClass","customColorClass","darkBlue","blueGrey","ProfileActionDialog","onJoinGovGig","updateUserInput","onAddCertificate","proposition","actionButton","LessonPage","lastProgressSaved","saveInterval","onTogglePlay","onQuiz","Quiz","isQuizCompleted","LessonComplete","onNext","nextLesson","getNextLesson","computeScore","computeClassProgress","ClassComplete","showCompletionDialog","onCloseCompletion","showProfileActionDialog","onCloseProfileAction","getLessonResultStatus","q","source","getRegistrationNextAssignmentAt","getLesson","showTakeQuiz","showQuiz","showNext","passed","count","quizContainer","quizButton","PasswordChangeDialog","changePassword","oldPassword","EmailChangeDialog","verifyCurrentUserAttributeSubmit","newEmail","verifyCurrentUserAttribute","oldEmail","UserEditPage","classFound","reg","toggleRegistration","onResendInvite","onChangeEmailOpen","showEmailChange","onEmailChange","updateEmail","onEmailChangeClose","onChangePasswordOpen","showPasswordChange","onPasswordChangeClose","onDelete","userRole","registerUserForClasses","registerUserForClass","URLSearchParams","sendInvite","roleDisabled","resendButton","checkboxLabel","RegisterPage","isVerifying","errorLink","verificationCode","UserRegister","py","validInfo","renderForm","renderWarning","msgLink","gutterBottom","RosterCard","renderAvatar","notStartedAvatar","notStartedIcon","inProgressAvatar","inProgressIcon","failedAvatar","failedIcon","passedAvatar","passedIcon","unRegisteredAvatar","unregisteredIcon","onRegister","onUnregister","middle","renderButton","removeButton","removeIcon","addButton","addIcon","LinearGaugeSegment","percent","AccountClassPage","registerUser","unregisteredIndex","unregistered","unRegisterUser","deleteClassRegistration","registeredIndex","registeredFilter","unregisteredFilter","sortRegistrations","notStarted","inProgress","failed","joinUsers","notStartedPercent","inProgressPercent","passedPercent","failedPercent","classCardContainer","controlBar","xl","md","segments","total","Tooltip","arrow","notStartedSegment","inProgressSegment","passedSegment","failedSegment","alignContent","gaugeBar","linearGauge","whiteSpace","CSV","AccountsPage","filterAccounts","onChangeAccountType","accountTypeFilter","onChangeSort","sortFilter","onAddAccount","allAccounts","Created","disableClearable","Name","flexWrap","ClassHistoryCard","onReset","started","AccountUserPage","completed","MyClassesPage","incomplete","group","CourseCard","CoursesPage","onAddCourse","loadCourses","FormGroupSpacer","formGroupSpacing","correctAnswers","ReportsTabNames","CourseEditPage","renderEditor","editorKey","plugins","menubar","toolbar","skin","keep_styles","valid_elements","style_formats","initialValue","initialDetails","onEditorChange","editor","onCoverChange","file","coverFile","onHandoutChange","handoutFile","uploadCover","uploadHandout","remove","updateCourse","CourseEdit","createCourse","CourseCreate","onCSVLoaded","progressValue","progressText","lastRow","nextQuestionNumber","n","parseInt","Title","VideoURL","VideoDuration","getMinutes","getSeconds","Description","Number","AnswerA","AnswerB","AnswerC","AnswerD","CorrectAnswer","__typename","put","contentType","downloadCSV","_Length","fill","quote","Blob","saveAs","deleteHandout","accept","fileInput","files","cssInputClass","onFileLoaded","downloadLink","downloadButton","progressError","textarea","elementStyle","base","PaymentForm","useSource","isPaying","handleSubmit","ev","confirmSubmit","createToken","token","onPayment","amountDue","fieldSet","textField","paymentField","border","borderBottomWidth","borderBottomStyle","borderBottomColor","fieldCheckbox","buttonSet","injectStripe","AccountClassEditPage","updateAmountDue","applyCoupon","silent","getCoupon","max_redemptions","times_redeemed","redeem_by","seatPrice","getCurrency","amount_off","amountOff","percent_off","formatCurrency","addDollarSign","s","toFixed","owners","invoiceResult","scheduleId","addPaidClass","ClassCreate","ClassEdit","getOwners","getCoursePrice","price","default_source","sources","fieldGroup","renderScheduleSelect","renderOwnerSelect","currencyField","paymentForm","selectContainer","Select","native","selectField","navigationBar","applyButtonContainer","CoursePage","mockClass","mockRegistration","backTitle","CoursePreviewPage","ActivityTypeFilter","useState","selectedVal","setSelectedVal","val","onFilterChanged","columnDef","tableData","ActivityReport","loadActivity","numDays","addDays","reverse","userName","mb","columns","filterComponent","showTitle","sorting","filtering","pageSize","pageSizeOptions","maxBodyHeight","components","Toolbar","range","ReportsPage","TermsOfUseUS","TermsOfUsePage","PrivacyPolicyUS","backLink","referrer","endsWith","table","td","borderSpacing","borderCollapse","PrivacyPolicyCCPA","PrivacyPolicyPage","option","ModalDialog","PrivacyPolicyDialog","iframe","TermsOfUseDialog","CourseDetailPage","priceData","imageUrl","formattedPrice","cardContent","CardActions","cardActions","parseHTML","Amplify","aws_exports","API","rawTheme","createMuiTheme","100","200","500","600","700","selected","hover","50","300","400","typography","textTransform","h1","h2","h3","h4","h5","h6","body1","body2","shape","overrides","MuiInputLabel","MuiCardContent","MuiMenuItem","MuiDialog","paperFullWidth","MuiDialogTitle","MuiDialogContent","MuiDialogActions","MuiPaper","elevation1","elevation2","App","CssBaseline","gql","deleteAccount","LearningAPI","query","gqlToString","CustomQueries","variables","makeQuery","CustomMutations","AgreementData","userData","operation","graphqlOperation","graphql","errors","Progress","Alert","Notify","interval","onClickReload","checkForNewBuild","axios","currentBuild","newBuild","trim","Confirm","onConfirm","confirmed","CourseStore","courseCache","updateCache","courseData","getProducts","products","getPrices","prices","product","nickname","S3UrlCacheStore","s3Resolver","removeKey","expireSecs","resolver","_expireSecs","_resolver","_cache","expires","getExpires","cacheItem","removeAll","removeExpired","modalView","BillingAPI","getPlans","getCoupons","post","del","CertificateAPI","certificateName","formData","responseType","headers","arrayBuffer","base64ToArrayBuffer","binaryString","atob","binaryLen","bytes","Uint8Array","ascii","charCodeAt","ReactDOM","render","StrictMode","getElementById","navigator","serviceWorker","unregister"],"mappings":"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","file":"static/js/main.19ac1a41.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/GovGig_Logo_Transparent_512.7355baac.png\";","module.exports = __webpack_public_path__ + \"static/media/header_logo_640x192.8d3875c3.png\";","module.exports = __webpack_public_path__ + \"static/media/logo_wo_tagline_white_640x192.4641bce3.png\";","import Rollbar from \"rollbar\"\nimport config from 'react-global-configuration';\n\nexport enum LogLevel {\n Debug = 0,\n Info = 1,\n Warn = 2,\n Error = 3,\n Critical = 4,\n None = 5,\n}\n\nconst transformer = function(payload: any) {\n if (payload.level !== 'error') {\n return\n }\n\n payload.code_version = process.env.REACT_APP_COMMIT_ID\n payload.client.javascript.code_version = process.env.REACT_APP_COMMIT_ID\n\n if (payload.body && payload.body.trace) {\n \n const trace = payload.body.trace\n if (trace && trace.frames) {\n // Parse the URL into three parts:\n // Ex output: [\"https://www.snapgig.com/settings/my-plan\",\"https\",\"/settings/my-plan\"] \n const locRegex = /^(https?):\\/\\/[a-zA-Z0-9.:_-]+(.*)/i\n \n for (let i = 0; i < trace.frames.length; i++) {\n const filename = trace.frames[i].filename\n if (filename) {\n const matchResults = filename.match(locRegex)\n if (matchResults) {\n // Be sure that the minified_url when uploading source maps includes 'dynamichost'\n payload.body.trace.frames[i].filename = matchResults[1] + '://dynamichost' + matchResults[2]\n }\n }\n }\n }\n\n if (trace.exception) {\n const exception = trace.exception\n \n if (exception.description) {\n const description = exception.description\n if (typeof description === 'object') {\n payload.body.trace.exception.description = JSON.stringify(description)\n }\n }\n if (exception.message) {\n const message = exception.message\n if (typeof message === 'object') {\n payload.body.trace.exception.message = JSON.stringify(message)\n }\n }\n }\n } \n}\n\nexport class Logger {\n static logLevel = LogLevel.Debug\n static rollbar: Rollbar\n \n static init() {\n const accessToken = config.get(\"rollbar.accessToken\")\n if (accessToken) {\n const userid = undefined\n\n // Note that \"production\" for NODE_ENV means any build run with \"npm run build\".\n // However, REACT_APP_ENV is how we specify local, dev, or prod environment for reporting purposes in the payload below.\n // The value for REACT_APP_ENV is specified in a local .env file, or as an environment variable in the Amplify console.\n \n const nodeEnv = process.env.NODE_ENV\n this.logLevel = (nodeEnv === \"production\") ? LogLevel.Warn : LogLevel.Debug\n\n const rollbarConfig = {\n enabled: nodeEnv === \"production\",\n accessToken,\n captureUncaught: true,\n captureUnhandledRejections: true,\n autoInstrument: {\n network: true,\n networkRequestBody: true,\n log: true,\n dom: true,\n navigation: true,\n connectivity: true\n },\n // reportLevel: 'error',\n maxTelemetryEvents: 10,\n hostBlackList: [\n ],\n payload: {\n environment: process.env.REACT_APP_ENV,\n person: {\n id: userid,\n },\n },\n client: {\n javascript: {\n code_version: process.env.REACT_APP_COMMIT_ID\n }\n },\n transform: transformer \n }\n\n Logger.rollbar = new Rollbar(rollbarConfig)\n this.info(`Rollbar initialized logLevel=${this.logLevel}`)\n } else {\n this.info(`Logger initialized logLevel=${this.logLevel} (Rollbar is disabled)`)\n }\n }\n\n static configure(options: any) {\n if (Logger.rollbar) {\n Logger.rollbar.configure(options)\n }\n }\n\n static configureUser(userId: string) {\n if (Logger.rollbar) {\n Logger.rollbar.configure({\n payload: {\n person: {\n id: userId,\n }\n }\n })\n }\n }\n\n static debug(msg: string, ...args: any[]) {\n if (args.length === 0) {\n if (Logger.rollbar) {\n Logger.rollbar.debug(msg)\n }\n if (this.logLevel <= LogLevel.Debug) {\n console.debug(msg)\n }\n }\n else {\n if (Logger.rollbar) {\n Logger.rollbar.debug(msg, args)\n }\n if (this.logLevel <= LogLevel.Debug) {\n console.debug(msg, args.length > 0 ? args : undefined)\n }\n }\n }\n\n static info(msg: string, ...args: any[]) {\n if (args.length === 0) {\n if (Logger.rollbar) {\n Logger.rollbar.info(msg)\n }\n if (this.logLevel <= LogLevel.Info) {\n console.info(msg)\n }\n } else {\n if (Logger.rollbar) {\n Logger.rollbar.info(msg, args)\n }\n if (this.logLevel <= LogLevel.Info) {\n console.info(msg, args)\n }\n }\n }\n\n static warn(msg: string, ...args: any[]) {\n this.warning(msg, args)\n }\n\n static warning(msg: string, ...args: any[]) {\n if (args.length === 0) {\n if (Logger.rollbar) {\n Logger.rollbar.warning(msg)\n }\n if (this.logLevel <= LogLevel.Warn) {\n console.warn(msg)\n }\n }\n else {\n if (Logger.rollbar) {\n Logger.rollbar.warning(msg, args)\n }\n if (this.logLevel <= LogLevel.Warn) {\n console.warn(msg, args)\n }\n }\n }\n\n static error(msg: string, ...args: any[]) {\n if (args.length === 0) {\n if (Logger.rollbar) {\n Logger.rollbar.error(msg)\n }\n if (this.logLevel <= LogLevel.Error) {\n console.error(msg)\n }\n }\n else {\n if (Logger.rollbar) {\n Logger.rollbar.error(msg, args)\n }\n if (this.logLevel <= LogLevel.Error) {\n console.error(msg, args)\n }\n }\n }\n\n static critical(msg: string, ...args: any[]) {\n if (args.length === 0) {\n if (Logger.rollbar) {\n Logger.rollbar.critical(msg)\n }\n if (this.logLevel <= LogLevel.Critical) {\n console.error(msg)\n }\n }\n else {\n if (Logger.rollbar) {\n Logger.rollbar.critical(msg, args)\n }\n if (this.logLevel <= LogLevel.Critical) {\n console.error(msg, args)\n }\n }\n }\n}\n\nexport default Logger","/* eslint-disable */\n// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n \"aws_project_region\": \"us-west-2\",\n \"aws_cloud_logic_custom\": [\n {\n \"name\": \"AdminQueries\",\n \"endpoint\": \"https://15o0rqay26.execute-api.us-west-2.amazonaws.com/main\",\n \"region\": \"us-west-2\"\n },\n {\n \"name\": \"AuthAPI\",\n \"endpoint\": \"https://sfukcy0667.execute-api.us-west-2.amazonaws.com/main\",\n \"region\": \"us-west-2\"\n },\n {\n \"name\": \"BillingAPI\",\n \"endpoint\": \"https://9wx396ax7d.execute-api.us-west-2.amazonaws.com/main\",\n \"region\": \"us-west-2\"\n },\n {\n \"name\": \"CertificateAPI\",\n \"endpoint\": \"https://ocavantaka.execute-api.us-west-2.amazonaws.com/main\",\n \"region\": \"us-west-2\"\n },\n {\n \"name\": \"DocumentService\",\n \"endpoint\": \"https://nmkjgowen8.execute-api.us-west-2.amazonaws.com/main\",\n \"region\": \"us-west-2\"\n }\n ],\n \"aws_appsync_graphqlEndpoint\": \"https://bxjuzqse5zbotjp4g7xpigjvnm.appsync-api.us-west-2.amazonaws.com/graphql\",\n \"aws_appsync_region\": \"us-west-2\",\n \"aws_appsync_authenticationType\": \"AMAZON_COGNITO_USER_POOLS\",\n \"aws_appsync_apiKey\": \"da2-hdfa2tqpkbhqnmhbu5pxbvh7yq\",\n \"aws_cognito_identity_pool_id\": \"us-west-2:f8a4e447-eead-4f8b-a54f-54d75455072b\",\n \"aws_cognito_region\": \"us-west-2\",\n \"aws_user_pools_id\": \"us-west-2_7bYPdGOFd\",\n \"aws_user_pools_web_client_id\": \"5cjgmnpo8ncb42jjlq8vh6u59v\",\n \"oauth\": {},\n \"aws_cognito_username_attributes\": [],\n \"aws_cognito_social_providers\": [],\n \"aws_cognito_signup_attributes\": [\n \"EMAIL\"\n ],\n \"aws_cognito_mfa_configuration\": \"OFF\",\n \"aws_cognito_mfa_types\": [\n \"SMS\"\n ],\n \"aws_cognito_password_protection_settings\": {\n \"passwordPolicyMinLength\": 8,\n \"passwordPolicyCharacters\": []\n },\n \"aws_cognito_verification_mechanisms\": [\n \"EMAIL\"\n ],\n \"aws_user_files_s3_bucket\": \"govgig-storage101642-main\",\n \"aws_user_files_s3_bucket_region\": \"us-west-2\"\n};\n\n\nexport default awsmobile;\n","const AppConfig = {\n env: process.env.REACT_APP_ENV,\n nodeEnv: process.env.NODE_ENV,\n version: process.env.REACT_APP_VERSION,\n commitId: process.env.REACT_APP_COMMIT_ID,\n build: process.env.REACT_APP_JOB_ID,\n stripe: {\n apiKey: process.env.REACT_APP_STRIPE_KEY\n },\n rollbar: {\n accessToken: process.env.REACT_APP_ROLLBAR_ACCESS_TOKEN\n },\n google: {\n trackingId: process.env.REACT_APP_GOOGLE_TRACKING_ID,\n options: {\n }\n },\n checkBuildInterval: 900000, // 15 minutes\n domain: process.env.REACT_APP_DOMAIN ?? \"govgig.us\",\n homeUrl: process.env.REACT_APP_HOME_URL ? process.env.REACT_APP_HOME_URL : \"/\",\n jobsUrl: process.env.REACT_APP_JOBS_URL,\n newsUrl: process.env.REACT_APP_NEWS_URL,\n tinymce: {\n apiKey: process.env.REACT_APP_TINYMCE_API_KEY\n },\n branch: process.env.REACT_APP_BRANCH\n};\n\nexport default AppConfig;","import * as React from 'react'\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\nimport withWidth from '@material-ui/core/withWidth'\n\nconst styles = (theme: Theme) => createStyles({\n rootStyle: {\n [theme.breakpoints.down('md')]: {\n paddingLeft: theme.spacing(0.5),\n paddingRight: theme.spacing(0.5),\n width: '100%'\n },\n [theme.breakpoints.up('md')]: {\n maxWidth: 960,\n marginLeft: 'auto',\n marginRight: 'auto',\n width: '100%'\n }\n }\n})\n\nclass MarginRow extends React.Component> {\n render() {\n const { classes } = this.props\n\n return (\n
\n {this.props.children}\n
\n )\n }\n}\n\nexport default withStyles(styles)(withWidth()(MarginRow))\n","import ReactGA, {EventArgs} from 'react-ga';\nimport {Logger} from \"./Logger\";\n\ninterface ITrackingEventArgs {\n category?: string\n action?: string\n value?: number\n label?: string\n}\n\nclass Tracking {\n\n static initialized = false\n static UUIDPattern = new RegExp(/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/)\n\n\n static initialize(trackingId: string, options: any) {\n ReactGA.initialize(trackingId, options)\n this.initialized = true\n Logger.debug(`Tracking.initialize: ${trackingId} options: ${JSON.stringify(options)}`)\n }\n\n static set(args: any) {\n if (this.initialized) {\n ReactGA.set(args)\n Logger.debug(`Tracking.set: ${JSON.stringify(args)}`)\n }\n }\n\n static pageView(path: string) {\n if (this.initialized) {\n const cleaned = Tracking.cleanPath(path)\n ReactGA.pageview(cleaned)\n Logger.debug(`Tracking.pageView: ${cleaned}`)\n }\n }\n\n static modalView(name: string) {\n if (this.initialized) {\n ReactGA.modalview(name)\n Logger.debug(`Tracking.modalview: ${name}`)\n }\n }\n\n static event(args: ITrackingEventArgs) {\n if (this.initialized) {\n const eventArgs: EventArgs = {\n category: args.category || Tracking.cleanPath(window.location.pathname),\n action: args.action || \"\",\n value: args.value,\n label: args.label\n }\n ReactGA.event(eventArgs)\n Logger.debug(`Tracking.event: ${JSON.stringify(eventArgs)}`)\n }\n }\n\n static cleanPath(path: string) {\n // Clean out the UUIDs from the path for analytic reporting\n const cleaned = path.replace(Tracking.UUIDPattern, \"uuid\")\n return cleaned\n }\n\n}\n\nexport default Tracking","import * as React from 'react'\nimport Menu from '@material-ui/core/Menu'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport IconButton from '@material-ui/core/IconButton'\nimport MenuIcon from '@material-ui/icons/Menu'\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\nimport {inject, observer} from \"mobx-react\";\nimport {observable} from \"mobx\";\nimport UserStore from \"../../stores/UserStore\";\nimport ControlTower, {Routes} from \"../ControlTower\";\nimport Tracking from \"../Tracking\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport config from 'react-global-configuration';\n\nconst styles = (theme: Theme) => createStyles({\n menuIcon: {\n color: theme.palette.primary.main\n },\n menuItem: { // TODO: Fix pseudo selector styles\n color: theme.palette.primary.main,\n // '&:hover': {\n // color: theme.palette.primary.contrastText,\n // backgroundColor: theme.palette.action.hover\n // },\n // '&:focus': {\n // color: theme.palette.primary.contrastText,\n // backgroundColor: theme.palette.action.selected\n // },\n // '&:active': {\n // color: theme.palette.primary.contrastText,\n // backgroundColor: theme.palette.action.active\n // }\n },\n activeMenuItem: {\n fontWeight: 900,\n color: theme.palette.text.primary,\n // '&:hover': {\n // color: theme.palette.secondary.main,\n // backgroundColor: theme.palette.action.hover\n // },\n // '&:focus': {\n // color: theme.palette.primary.contrastText,\n // backgroundColor: theme.palette.action.selected\n // },\n // '&:active': {\n // color: theme.palette.primary.contrastText,\n // backgroundColor: theme.palette.action.active\n // }\n }\n})\n\ninterface ISimpleMenuProps {\n userStore?: UserStore\n accountStore?: AccountStore\n}\n\n@inject(\"userStore\", \"accountStore\")\n@observer\nclass SimpleMenu extends React.Component & ISimpleMenuProps> {\n\n @observable anchorEl = null\n @observable showAuth = false\n @observable isAuthenticated = false\n\n handleClick = (event: any) => {\n this.anchorEl = event.currentTarget\n };\n\n handleClose = () => {\n this.anchorEl = null\n };\n\n handleHome = () => {\n ControlTower.route(Routes.home)\n }\n\n handleFindJobs = () => {\n const jobsUrl = config.get(\"jobsUrl\")\n if (jobsUrl) {\n ControlTower.open(`${jobsUrl}/find-jobs`, \"_self\")\n }\n }\n\n handleClasses = () => {\n ControlTower.route(`${Routes.myClasses}`)\n }\n\n handleAccount = () => {\n const { accountStore } = this.props\n ControlTower.route(`${Routes.account}/${accountStore!.account!.id}`)\n }\n\n handleAccounts = () => {\n ControlTower.route(`${Routes.accounts}`)\n }\n\n handleReports = () => {\n ControlTower.route(`${Routes.reports}`)\n }\n\n handleCourses = () => {\n ControlTower.route(`${Routes.courses}`)\n }\n\n handleSignOut = async () => {\n Tracking.event({action: \"SignOut\"})\n await this.props.userStore!.signOut()\n ControlTower.route(Routes.home)\n }\n\n render() {\n const { classes } = this.props\n\n const currentPath = ControlTower.currentRoute\n\n // const homeButton =\n // \n // Home\n // \n\n const classesButton =\n \n My Classes\n \n\n const findJobsButton =\n \n Find Jobs\n \n\n const postJobsButton = \n {\n const jobsUrl = config.get(\"jobsUrl\")\n if (jobsUrl) {\n ControlTower.open(`${jobsUrl}/create-job-posts`, \"_self\")\n }\n }}\n >\n Post Jobs\n \n\n const signOutButton =\n \n Log Out\n \n\n const menuItems = []\n\n if (this.props.userStore!.isAdminOrAgent) {\n const accountsButton =\n \n Accounts\n \n\n const reportsButton =\n \n Reports\n \n const coursesButton =\n \n Courses\n \n\n menuItems.push(\n // homeButton,\n accountsButton,\n reportsButton,\n coursesButton,\n findJobsButton,\n postJobsButton,\n signOutButton\n )\n } else {\n const accountButton =\n \n Account\n \n menuItems.push(\n // homeButton,\n classesButton,\n findJobsButton,\n postJobsButton,\n accountButton,\n signOutButton\n )\n }\n\n return (\n
\n
\n \n \n \n \n { menuItems }\n \n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(SimpleMenu)\n","import { Grid, isWidthDown, MenuItem, MenuItemProps, MenuList, Popover, Theme, WithStyles, withStyles, withWidth, WithWidth } from \"@material-ui/core\";\nimport { Link } from '@reach/router';\nimport { observable } from 'mobx';\nimport { observer } from \"mobx-react\";\nimport React, { MouseEvent, ReactNode } from \"react\";\nimport Tracking from \"../Tracking\";\n\nconst styles = (theme: Theme) => ({\n menuListContainer: {\n width: '100%',\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2)\n }\n})\n\ntype IPopperMenuItemListItem = MenuItemProps & { label: string, to: string, tracking: string } | any\n\ninterface IPopperMenuProps {\n button: (props: MenuItemProps & { button: true | undefined, open?: boolean }) => ReactNode\n menuList: IPopperMenuItemListItem | IPopperMenuItemListItem[]\n onClick: (e: React.MouseEvent) => Promise\n}\n\n@observer\nclass PopoverMenuItem extends React.Component {\n\n @observable open = false\n @observable menuItemRef: any = null\n\n @observable focusButton: boolean = false\n @observable focusMenu: boolean = false\n\n render() {\n const { classes, width, menuList, button } = this.props\n const { open } = this\n\n const isXS = isWidthDown('sm', width)\n\n const MenuListComp = (\n \n {Array.isArray(menuList)\n ? menuList.map((item: IPopperMenuItemListItem, key: number) => {\n const { label, to, ...rest } = item\n if (label && to) {\n return (\n {\n if (isXS) {\n Tracking.event({ category: 'Navigation', action: label })\n this.props.onClick(e)\n } else {\n this.open = false\n }\n }}\n >\n {label}\n \n )\n } else {\n return item\n }\n })\n : menuList}\n \n )\n\n return (\n \n {button({\n button: true,\n onClick: (e: MouseEvent) => {\n this.menuItemRef = e.currentTarget\n this.open = !this.open\n },\n 'aria-owns': open ? \"mouse-over-popover\" : 'undefined',\n 'aria-haspopup': \"true\",\n open,\n })}\n {isXS\n ? open && {MenuListComp}\n : this.open = false}\n >\n {MenuListComp}\n \n }\n \n )\n }\n}\n\nexport default withStyles(styles)(withWidth()(PopoverMenuItem))","import * as React from 'react'\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\nimport AppBar from '@material-ui/core/AppBar'\nimport Toolbar from '@material-ui/core/Toolbar'\nimport MarginRow from \"./MarginRow\";\nimport {alpha, Button, Hidden, isWidthDown, LinearProgress, Typography, WithWidth} from \"@material-ui/core\";\nimport {inject, observer} from \"mobx-react\";\nimport logo from '../../images/header_logo_640x192.png'\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport SimpleMenu from \"./SimpleMenu\";\nimport config from \"react-global-configuration\";\nimport UserStore from \"../../stores/UserStore\";\nimport Progress from \"../Progress\";\nimport Tracking from \"../Tracking\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport PopperMenuItem from \"./PopperMenuItem\";\nimport AccountCircleIcon from '@material-ui/icons/AccountCircle'\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown'\nimport {observable} from \"mobx\";\nimport withWidth from \"@material-ui/core/withWidth\";\n\nconst styles = (theme: Theme) => createStyles({\n appBar: {\n top: 0,\n backgroundColor: theme.palette.primary.contrastText,\n height: 76,\n maxHeight: 76,\n },\n toolBar: {\n minHeight: 76,\n height: 76\n },\n grow: {\n flexGrow: 1,\n },\n linkStyle: {\n marginBottom: '-5px',\n marginLeft: 5\n },\n appLogo: {\n height: 50, \n width: 'auto'\n },\n button: {\n margin: theme.spacing(2),\n color: theme.palette.primary.main,\n fontWeight: 400,\n fontSize: 16,\n padding: theme.spacing(2)\n },\n activeButton: {\n margin: theme.spacing(2),\n fontWeight: 600,\n color: theme.palette.primary.main,\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\n fontSize: 16,\n padding: theme.spacing(2),\n // border: `2px solid ${theme.palette.secondary.main}`,\n // borderRadius: 0,\n },\n input: {\n display: 'none',\n },\n title: {\n color: theme.palette.primary.contrastText,\n flexGrow: 1,\n paddingLeft: theme.spacing(1)\n },\n icon: {\n height: 20,\n width: 20,\n },\n progressWrapper: {\n flexGrow: 1\n },\n progress: {\n height: 3,\n backgroundColor: theme.palette.secondary.main\n },\n productTitle: {\n paddingLeft: theme.spacing(2),\n fontWeight: 500\n }\n})\n\ninterface IHeaderProps {\n userStore?: UserStore\n progress?: Progress\n}\n\n@inject(\"userStore\", \"progress\")\n@observer\nclass Header extends React.Component & WithWidth & IHeaderProps> {\n @observable anchorEl: Element | null = null\n\n render() {\n const {classes, userStore, progress} = this.props\n\n return (\n \n \n \n \n \"logo\"\n \n Academy\n \n \n {this.renderMenuItems()}\n \n \n {userStore!.user &&\n \n }\n {!userStore!.user &&\n \n }\n \n \n \n
\n {
\n
\n\n )\n }\n\n renderMenuItems = () => {\n const {\n classes,\n userStore\n } = this.props\n\n if (!userStore || !userStore.isAuthenticated) {\n return null\n }\n\n const currentPath = ControlTower.currentRoute\n const isXS = false // isWidthDown('sm', width)\n\n const menuItems = []\n // menuItems.push(\n // \n // Home\n // \n // )\n\n if (userStore.isAdminOrAgent) {\n menuItems.push(\n \n Accounts\n \n )\n menuItems.push(\n \n Reports\n \n )\n menuItems.push(\n \n Courses\n \n )\n } else {\n menuItems.push(\n \n My Classes\n \n )\n }\n\n menuItems.push(\n )\n\n menuItems.push(\n )\n\n menuItems.push(\n this.getMenuItemButton(\n isXS ? 'Account' : ,\n \"popper\",\n undefined,\n props,\n true\n )}\n menuList={[\n {\n this.onClickAccount(undefined)\n }}>\n Account\n ,\n {\n this.onClickSignOut(undefined)\n }}>\n Log Out\n ,\n ]}\n onClick={async (e) => {\n this.handleClose()\n }}\n />\n )\n\n return menuItems\n }\n\n getMenuItemButton = (label: string | React.ReactNode, key: string, route: string | undefined, otherProps: any = {}, renderArrow: boolean = false) => {\n const { classes, width } = this.props\n const currentPath = ControlTower.currentRoute\n const isActive = (\n (route === Routes.home && currentPath === route) // home route special case\n || (route !== Routes.home && route && String(currentPath).includes(route))\n )\n\n const Comp: any = isWidthDown('sm', width) ? MenuItem : Button\n\n return (\n {\n // Tracking.event({ category: 'Navigation', action: tracking })\n if (otherProps.onClick) {\n await otherProps.onClick(e)\n }\n if (route) {\n ControlTower.route(route)\n }\n }}>\n {label} {renderArrow && }\n \n )\n }\n\n get accountId(): string | undefined {\n const { userStore } = this.props\n if (userStore!.user && userStore!.user.account) {\n return userStore!.user!.account.id\n } else {\n return undefined\n }\n }\n\n handleClose = () => {\n this.anchorEl = null\n }\n\n onClickAccount = (event: any) => {\n ControlTower.route(`${Routes.account}/${this.accountId}`)\n }\n\n onClickAccounts = (event: any) => {\n ControlTower.route(Routes.accounts)\n }\n\n onClickReports = (event: any) => {\n ControlTower.route(Routes.reports)\n }\n\n onClickFindJobs = () => {\n const jobsUrl = config.get(\"jobsUrl\")\n if (jobsUrl) {\n ControlTower.open(`${jobsUrl}/find-jobs`, \"_self\")\n }\n }\n\n onClickHome = (event: any) => {\n ControlTower.route(Routes.home)\n }\n\n onClickMyClasses = (event: any) => {\n ControlTower.route(Routes.myClasses)\n }\n\n onClickCourses = (event: any) => {\n ControlTower.route(Routes.courses)\n }\n\n onClickSignOut = async (event: any) => {\n Tracking.event({ category: 'Navigation', action: \"UserLogOut\" })\n const homeUrl = config.get(\"homeUrl\")\n await this.props.userStore!.signOut()\n ControlTower.route(homeUrl)\n }\n}\n\nexport default withStyles(styles)(withWidth()(Header))","import * as React from 'react';\nimport classNames from 'classnames';\nimport {createStyles, Theme, withStyles, WithStyles} from \"@material-ui/core\";\nimport {inject, observer} from \"mobx-react\";\nimport Notify from \"./Notify\"\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport InfoIcon from '@material-ui/icons/Info';\nimport CloseIcon from '@material-ui/icons/Close';\nimport IconButton from '@material-ui/core/IconButton';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\nimport WarningIcon from '@material-ui/icons/Warning';\nimport Slide from \"@material-ui/core/Slide/Slide\";\n\nconst variantIcon = {\n success: CheckCircleIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n info: InfoIcon,\n};\n\nconst variantAutoHideDuration = {\n success: 3000,\n info: 3000,\n warning: undefined,\n error: undefined,\n}\n\nconst styles = (theme: Theme) => createStyles({\n snackBar: {\n [theme.breakpoints.down('sm')]: {\n // top: 57,\n // right: 0,\n width: \"calc(100vw - 12px)\",\n marginTop: 54,\n paddingLeft: 6,\n paddingRight: 8,\n },\n [theme.breakpoints.up('sm')]: {\n // top: 75,\n // right: 7\n marginTop: 39,\n paddingLeft: 0,\n paddingRight: 0,\n },\n },\n success: {\n color: theme.palette.common.white,\n backgroundColor: theme.palette.success.dark,\n fontWeight: 600,\n padding: \"0 10px 0 10px\"\n },\n info: {\n color: theme.palette.common.white,\n backgroundColor: theme.palette.info.dark,\n fontWeight: 600,\n padding: \"0 10px 0 10px\"\n },\n warning: {\n color: theme.palette.common.white,\n backgroundColor: theme.palette.warning.dark, // amber[700],\n fontWeight: 600,\n padding: \"0 10px 0 10px\"\n },\n error: {\n color: theme.palette.common.white,\n backgroundColor: theme.palette.error.dark,\n fontWeight: 600,\n padding: \"0 10px 0 10px\"\n },\n icon: {\n fontSize: 20,\n },\n iconVariant: {\n opacity: 0.9,\n marginRight: theme.spacing(1)\n },\n message: {\n display: 'flex',\n alignItems: 'center',\n paddingRight: 5,\n lineHeight: 1.3\n },\n closeBtn: {\n color: theme.palette.text.secondary,\n position: 'absolute',\n display: 'inline-block',\n cursor: 'pointer',\n float: 'right',\n top: 1,\n right: 3,\n [theme.breakpoints.down('sm')]: {\n padding: \"0 6px 0 5px\",\n },\n [theme.breakpoints.up('sm')]: {\n padding: \"0 0px 0 10px\",\n },\n }\n})\n\ninterface INotifyBarProps {\n notify?: Notify\n}\n\nfunction Transition(props: any) {\n return ;\n}\n\n@inject(\"notify\")\n@observer\nclass NotifyBar extends React.Component & INotifyBarProps> {\n\n onClose = (event: object, reason?: string) => {\n const {notify} = this.props\n \n if (notify && (!reason || reason !== \"clickaway\")) {\n notify.close()\n }\n }\n\n render() {\n const {notify, classes} = this.props\n const autoHideDuration = variantAutoHideDuration[notify!.variant]\n\n return (\n \n {this.snackBarContent()}\n \n )\n }\n\n snackBarContent = () => {\n const { notify, classes } = this.props;\n\n const Icon = variantIcon[notify!.variant];\n\n return (\n \n \n {notify!.message}\n \n }\n action={[\n \n \n ,\n ]}\n />\n );\n }\n}\n\nexport default withStyles(styles)(NotifyBar)\n","/* tslint:disable */\n/* eslint-disable */\n// This file was automatically generated and should not be edited.\n\nexport type CreateAccountInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n};\n\nexport enum AccountStatus {\n Inactive = \"Inactive\",\n Pending = \"Pending\",\n Active = \"Active\",\n Approved = \"Approved\",\n Suspended = \"Suspended\",\n Closed = \"Closed\",\n}\n\n\nexport enum AccountType {\n Individual = \"Individual\",\n Agency = \"Agency\",\n}\n\n\nexport enum AccountSize {\n Small = \"Small\",\n Medium = \"Medium\",\n Large = \"Large\",\n}\n\n\nexport type ModelAccountConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n ownerId?: ModelIDInput | null,\n name?: ModelStringInput | null,\n address?: ModelStringInput | null,\n city?: ModelStringInput | null,\n state?: ModelStringInput | null,\n postalCode?: ModelStringInput | null,\n country?: ModelStringInput | null,\n active?: ModelBooleanInput | null,\n dunsNumber?: ModelStringInput | null,\n cageCode?: ModelStringInput | null,\n naicsCode?: ModelStringInput | null,\n sicCode?: ModelStringInput | null,\n socioEconomicDesignation?: ModelStringInput | null,\n fein?: ModelStringInput | null,\n accountStatus?: ModelAccountStatusInput | null,\n phone?: ModelStringInput | null,\n webUrl?: ModelStringInput | null,\n accountType?: ModelAccountTypeInput | null,\n accountSize?: ModelAccountSizeInput | null,\n customerId?: ModelStringInput | null,\n industries?: ModelStringInput | null,\n and?: Array< ModelAccountConditionInput | null > | null,\n or?: Array< ModelAccountConditionInput | null > | null,\n not?: ModelAccountConditionInput | null,\n};\n\nexport type ModelStringInput = {\n ne?: string | null,\n eq?: string | null,\n le?: string | null,\n lt?: string | null,\n ge?: string | null,\n gt?: string | null,\n contains?: string | null,\n notContains?: string | null,\n between?: Array< string | null > | null,\n beginsWith?: string | null,\n attributeExists?: boolean | null,\n attributeType?: ModelAttributeTypes | null,\n size?: ModelSizeInput | null,\n};\n\nexport enum ModelAttributeTypes {\n binary = \"binary\",\n binarySet = \"binarySet\",\n bool = \"bool\",\n list = \"list\",\n map = \"map\",\n number = \"number\",\n numberSet = \"numberSet\",\n string = \"string\",\n stringSet = \"stringSet\",\n _null = \"_null\",\n}\n\n\nexport type ModelSizeInput = {\n ne?: number | null,\n eq?: number | null,\n le?: number | null,\n lt?: number | null,\n ge?: number | null,\n gt?: number | null,\n between?: Array< number | null > | null,\n};\n\nexport type ModelIDInput = {\n ne?: string | null,\n eq?: string | null,\n le?: string | null,\n lt?: string | null,\n ge?: string | null,\n gt?: string | null,\n contains?: string | null,\n notContains?: string | null,\n between?: Array< string | null > | null,\n beginsWith?: string | null,\n attributeExists?: boolean | null,\n attributeType?: ModelAttributeTypes | null,\n size?: ModelSizeInput | null,\n};\n\nexport type ModelBooleanInput = {\n ne?: boolean | null,\n eq?: boolean | null,\n attributeExists?: boolean | null,\n attributeType?: ModelAttributeTypes | null,\n};\n\nexport type ModelAccountStatusInput = {\n eq?: AccountStatus | null,\n ne?: AccountStatus | null,\n};\n\nexport type ModelAccountTypeInput = {\n eq?: AccountType | null,\n ne?: AccountType | null,\n};\n\nexport type ModelAccountSizeInput = {\n eq?: AccountSize | null,\n ne?: AccountSize | null,\n};\n\nexport type Account = {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: ModelUserConnection | null,\n contracts?: ModelContractConnection | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: ModelClassConnection | null,\n activity?: ModelActivityConnection | null,\n};\n\nexport type ModelUserConnection = {\n __typename: \"ModelUserConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type User = {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: Account | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: ModelProfileConnection | null,\n agreements?: ModelAgreementConnection | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: ModelRegistrationConnection | null,\n customerId?: string | null,\n};\n\nexport enum UserStatus {\n Inactive = \"Inactive\",\n Invited = \"Invited\",\n Registered = \"Registered\",\n Suspended = \"Suspended\",\n}\n\n\nexport enum UserRole {\n Admin = \"Admin\",\n Agent = \"Agent\",\n Applicant = \"Applicant\",\n Candidate = \"Candidate\",\n Employer = \"Employer\",\n Student = \"Student\",\n Owner = \"Owner\",\n}\n\n\nexport type ModelProfileConnection = {\n __typename: \"ModelProfileConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type Profile = {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: User | null,\n nickname?: string | null,\n profileServices?: ModelProfileServiceConnection | null,\n profileLocations?: ModelProfileLocationConnection | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: ModelExperienceConnection | null,\n education?: ModelEducationConnection | null,\n certifications?: ModelCertificationConnection | null,\n credentials?: string | null,\n};\n\nexport type ModelProfileServiceConnection = {\n __typename: \"ModelProfileServiceConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type ProfileService = {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: Profile | null,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n};\n\nexport type ModelProfileLocationConnection = {\n __typename: \"ModelProfileLocationConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type ProfileLocation = {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: Profile | null,\n locationId: string,\n};\n\nexport enum ProfileStatus {\n Pending = \"Pending\",\n Submitted = \"Submitted\",\n Reviewing = \"Reviewing\",\n Verifying = \"Verifying\",\n Accepted = \"Accepted\",\n Declined = \"Declined\",\n Academy = \"Academy\",\n Future = \"Future\",\n Inactive = \"Inactive\",\n}\n\n\nexport enum SecurityStatus {\n Active = \"Active\",\n Inactive = \"Inactive\",\n}\n\n\nexport enum WorkSetting {\n InPerson = \"InPerson\",\n Remote = \"Remote\",\n Hybrid = \"Hybrid\",\n}\n\n\nexport type ModelExperienceConnection = {\n __typename: \"ModelExperienceConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type Experience = {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: Profile | null,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n};\n\nexport enum AgencyType {\n Federal = \"Federal\",\n State = \"State\",\n County = \"County\",\n Municipal = \"Municipal\",\n Commercial = \"Commercial\",\n Other = \"Other\",\n None = \"None\",\n}\n\n\nexport type ModelEducationConnection = {\n __typename: \"ModelEducationConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type Education = {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: Profile | null,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n};\n\nexport type ModelCertificationConnection = {\n __typename: \"ModelCertificationConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type Certification = {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: Profile | null,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n};\n\nexport type ModelAgreementConnection = {\n __typename: \"ModelAgreementConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type Agreement = {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n};\n\nexport enum AgreementType {\n BackgroundCheck = \"BackgroundCheck\",\n ElectronicCommunication = \"ElectronicCommunication\",\n FederalExperience = \"FederalExperience\",\n I9Eligible = \"I9Eligible\",\n PrivacyPolicy = \"PrivacyPolicy\",\n TermsOfUse = \"TermsOfUse\",\n MasterServicesAndNonSolicitation = \"MasterServicesAndNonSolicitation\",\n ConfidentialityAndNonDisclosure = \"ConfidentialityAndNonDisclosure\",\n ExclusiveRecruitment = \"ExclusiveRecruitment\",\n StaffingAgreement = \"StaffingAgreement\",\n ProfessionalServicesAgreement = \"ProfessionalServicesAgreement\",\n}\n\n\nexport type ModelRegistrationConnection = {\n __typename: \"ModelRegistrationConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type Registration = {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n class?: Class | null,\n userId: string,\n user?: User | null,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n};\n\nexport type Class = {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: Course | null,\n accountId?: string | null,\n account?: Account | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: ModelRegistrationConnection | null,\n};\n\nexport type Course = {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: ModelClassConnection | null,\n};\n\nexport type ModelClassConnection = {\n __typename: \"ModelClassConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport enum AssignmentSchedule {\n All = \"All\",\n Monthly = \"Monthly\",\n Quarterly = \"Quarterly\",\n}\n\n\nexport enum ClassStatus {\n NotStarted = \"NotStarted\",\n InProgress = \"InProgress\",\n Passed = \"Passed\",\n Failed = \"Failed\",\n}\n\n\nexport enum LessonStatus {\n NotStarted = \"NotStarted\",\n InProgress = \"InProgress\",\n Ended = \"Ended\",\n Quiz = \"Quiz\",\n Passed = \"Passed\",\n Failed = \"Failed\",\n}\n\n\nexport type ModelContractConnection = {\n __typename: \"ModelContractConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type Contract = {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: ModelJobPostConnection | null,\n};\n\nexport type ModelJobPostConnection = {\n __typename: \"ModelJobPostConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type JobPost = {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: Account | null,\n contractId?: string | null,\n contract?: Contract | null,\n serviceRequestId?: string | null,\n serviceRequest?: ServiceRequest | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: ModelJobCandidateConnection | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n};\n\nexport type ServiceRequest = {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: Account | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: ModelJobPostConnection | null,\n};\n\nexport enum ServiceRequestType {\n RecruitingServices = \"RecruitingServices\",\n StaffingServices = \"StaffingServices\",\n ProfessionalServices = \"ProfessionalServices\",\n SelfService = \"SelfService\",\n}\n\n\nexport enum EmploymentType {\n Contract = \"Contract\",\n Direct = \"Direct\",\n FullTime = \"FullTime\",\n PartTime = \"PartTime\",\n Temporary = \"Temporary\",\n Internship = \"Internship\",\n}\n\n\nexport type ModelJobCandidateConnection = {\n __typename: \"ModelJobCandidateConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type JobCandidate = {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n jobPost?: JobPost | null,\n accountId: string,\n account?: Account | null,\n profileId: string,\n profile?: Profile | null,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n};\n\nexport enum JobCandidateStatus {\n Interested = \"Interested\",\n Invited = \"Invited\",\n Applied = \"Applied\",\n Accepted = \"Accepted\",\n Reviewing = \"Reviewing\",\n Rejected = \"Rejected\",\n Unlocked = \"Unlocked\",\n Contacted = \"Contacted\",\n Hired = \"Hired\",\n Declined = \"Declined\",\n}\n\n\nexport enum RecordUpdateOrigin {\n User = \"User\",\n Lambda = \"Lambda\",\n}\n\n\nexport enum JobPostStatus {\n Cart = \"Cart\",\n Draft = \"Draft\",\n Posted = \"Posted\",\n Pending = \"Pending\",\n Hired = \"Hired\",\n Closed = \"Closed\",\n}\n\n\nexport enum JobPostType {\n RecruitingServices = \"RecruitingServices\",\n StaffingServices = \"StaffingServices\",\n SelfService = \"SelfService\",\n}\n\n\nexport type ModelActivityConnection = {\n __typename: \"ModelActivityConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type Activity = {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account: Account,\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n};\n\nexport enum ActivityType {\n AccountCreate = \"AccountCreate\",\n ClassComplete = \"ClassComplete\",\n ClassCreate = \"ClassCreate\",\n ClassEdit = \"ClassEdit\",\n ClassPayment = \"ClassPayment\",\n ClassRegistration = \"ClassRegistration\",\n CourseCreate = \"CourseCreate\",\n CourseEdit = \"CourseEdit\",\n LessonComplete = \"LessonComplete\",\n UserCreate = \"UserCreate\",\n UserRegister = \"UserRegister\",\n UserSignIn = \"UserSignIn\",\n}\n\n\nexport type UpdateAccountInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name?: string | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n};\n\nexport type DeleteAccountInput = {\n id: string,\n};\n\nexport type CreateUserInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n};\n\nexport type ModelUserConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n active?: ModelBooleanInput | null,\n userStatus?: ModelUserStatusInput | null,\n accountId?: ModelIDInput | null,\n firstName?: ModelStringInput | null,\n lastName?: ModelStringInput | null,\n title?: ModelStringInput | null,\n email?: ModelStringInput | null,\n phone?: ModelStringInput | null,\n role?: ModelUserRoleInput | null,\n address?: ModelStringInput | null,\n city?: ModelStringInput | null,\n state?: ModelStringInput | null,\n postalCode?: ModelStringInput | null,\n country?: ModelStringInput | null,\n industry?: ModelStringInput | null,\n lastActiveAt?: ModelStringInput | null,\n jobTitle?: ModelStringInput | null,\n invitedAt?: ModelStringInput | null,\n customerId?: ModelStringInput | null,\n and?: Array< ModelUserConditionInput | null > | null,\n or?: Array< ModelUserConditionInput | null > | null,\n not?: ModelUserConditionInput | null,\n};\n\nexport type ModelUserStatusInput = {\n eq?: UserStatus | null,\n ne?: UserStatus | null,\n};\n\nexport type ModelUserRoleInput = {\n eq?: UserRole | null,\n ne?: UserRole | null,\n};\n\nexport type UpdateUserInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId?: string | null,\n firstName?: string | null,\n lastName?: string | null,\n title?: string | null,\n email?: string | null,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n};\n\nexport type DeleteUserInput = {\n id: string,\n};\n\nexport type CreateServiceGroupInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n};\n\nexport type ModelServiceGroupConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n name?: ModelStringInput | null,\n industries?: ModelStringInput | null,\n default?: ModelBooleanInput | null,\n and?: Array< ModelServiceGroupConditionInput | null > | null,\n or?: Array< ModelServiceGroupConditionInput | null > | null,\n not?: ModelServiceGroupConditionInput | null,\n};\n\nexport type ServiceGroup = {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: ModelServiceConnection | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n};\n\nexport type ModelServiceConnection = {\n __typename: \"ModelServiceConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type Service = {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n serviceGroup?: ServiceGroup | null,\n industries?: Array< string | null > | null,\n};\n\nexport type UpdateServiceGroupInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name?: string | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n};\n\nexport type DeleteServiceGroupInput = {\n id: string,\n};\n\nexport type CreateServiceInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n industries?: Array< string | null > | null,\n};\n\nexport type ModelServiceConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n name?: ModelStringInput | null,\n aliases?: ModelStringInput | null,\n active?: ModelBooleanInput | null,\n serviceGroupId?: ModelIDInput | null,\n industries?: ModelStringInput | null,\n and?: Array< ModelServiceConditionInput | null > | null,\n or?: Array< ModelServiceConditionInput | null > | null,\n not?: ModelServiceConditionInput | null,\n};\n\nexport type UpdateServiceInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name?: string | null,\n aliases?: Array< string | null > | null,\n active?: boolean | null,\n serviceGroupId?: string | null,\n industries?: Array< string | null > | null,\n};\n\nexport type DeleteServiceInput = {\n id: string,\n};\n\nexport type CreateLocationInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n organizationName: string,\n active?: boolean | null,\n name: string,\n aliases?: Array< string | null > | null,\n addressType?: AddressType | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country: string,\n latitude: number,\n longitude: number,\n};\n\nexport enum AddressType {\n Street = \"Street\",\n Neighborhood = \"Neighborhood\",\n PostalCode = \"PostalCode\",\n City = \"City\",\n County = \"County\",\n State = \"State\",\n Country = \"Country\",\n World = \"World\",\n}\n\n\nexport type ModelLocationConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n organizationName?: ModelStringInput | null,\n active?: ModelBooleanInput | null,\n name?: ModelStringInput | null,\n aliases?: ModelStringInput | null,\n addressType?: ModelAddressTypeInput | null,\n address?: ModelStringInput | null,\n city?: ModelStringInput | null,\n state?: ModelStringInput | null,\n postalCode?: ModelStringInput | null,\n country?: ModelStringInput | null,\n latitude?: ModelFloatInput | null,\n longitude?: ModelFloatInput | null,\n and?: Array< ModelLocationConditionInput | null > | null,\n or?: Array< ModelLocationConditionInput | null > | null,\n not?: ModelLocationConditionInput | null,\n};\n\nexport type ModelAddressTypeInput = {\n eq?: AddressType | null,\n ne?: AddressType | null,\n};\n\nexport type ModelFloatInput = {\n ne?: number | null,\n eq?: number | null,\n le?: number | null,\n lt?: number | null,\n ge?: number | null,\n gt?: number | null,\n between?: Array< number | null > | null,\n attributeExists?: boolean | null,\n attributeType?: ModelAttributeTypes | null,\n};\n\nexport type Location = {\n __typename: \"Location\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n organizationName: string,\n active?: boolean | null,\n name: string,\n aliases?: Array< string | null > | null,\n addressType?: AddressType | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country: string,\n latitude: number,\n longitude: number,\n};\n\nexport type UpdateLocationInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n organizationName?: string | null,\n active?: boolean | null,\n name?: string | null,\n aliases?: Array< string | null > | null,\n addressType?: AddressType | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n latitude?: number | null,\n longitude?: number | null,\n};\n\nexport type DeleteLocationInput = {\n id: string,\n};\n\nexport type CreateProfileInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n};\n\nexport type ModelProfileConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n alias?: ModelStringInput | null,\n active?: ModelBooleanInput | null,\n userId?: ModelIDInput | null,\n nickname?: ModelStringInput | null,\n availability?: ModelStringInput | null,\n availableDate?: ModelStringInput | null,\n desiredRate?: ModelStringInput | null,\n about?: ModelStringInput | null,\n resumeKey?: ModelStringInput | null,\n profileStatus?: ModelProfileStatusInput | null,\n statusMessage?: ModelStringInput | null,\n notes?: ModelStringInput | null,\n city?: ModelStringInput | null,\n state?: ModelStringInput | null,\n country?: ModelStringInput | null,\n federalExperience?: ModelFloatInput | null,\n totalExperience?: ModelFloatInput | null,\n industries?: ModelStringInput | null,\n securityClearance?: ModelStringInput | null,\n securityStatus?: ModelSecurityStatusInput | null,\n workSettings?: ModelWorkSettingListInput | null,\n credentials?: ModelStringInput | null,\n and?: Array< ModelProfileConditionInput | null > | null,\n or?: Array< ModelProfileConditionInput | null > | null,\n not?: ModelProfileConditionInput | null,\n};\n\nexport type ModelProfileStatusInput = {\n eq?: ProfileStatus | null,\n ne?: ProfileStatus | null,\n};\n\nexport type ModelSecurityStatusInput = {\n eq?: SecurityStatus | null,\n ne?: SecurityStatus | null,\n};\n\nexport type ModelWorkSettingListInput = {\n eq?: Array< WorkSetting | null > | null,\n ne?: Array< WorkSetting | null > | null,\n contains?: WorkSetting | null,\n notContains?: WorkSetting | null,\n};\n\nexport type UpdateProfileInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active?: boolean | null,\n userId?: string | null,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus?: ProfileStatus | null,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n};\n\nexport type DeleteProfileInput = {\n id: string,\n};\n\nexport type CreateProfileLocationInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n locationId: string,\n};\n\nexport type ModelProfileLocationConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n profileId?: ModelIDInput | null,\n locationId?: ModelIDInput | null,\n and?: Array< ModelProfileLocationConditionInput | null > | null,\n or?: Array< ModelProfileLocationConditionInput | null > | null,\n not?: ModelProfileLocationConditionInput | null,\n};\n\nexport type UpdateProfileLocationInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId?: string | null,\n profileId?: string | null,\n locationId?: string | null,\n};\n\nexport type DeleteProfileLocationInput = {\n id: string,\n};\n\nexport type CreateProfileServiceInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n};\n\nexport type ModelProfileServiceConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n profileId?: ModelIDInput | null,\n serviceId?: ModelIDInput | null,\n title?: ModelStringInput | null,\n industries?: ModelStringInput | null,\n and?: Array< ModelProfileServiceConditionInput | null > | null,\n or?: Array< ModelProfileServiceConditionInput | null > | null,\n not?: ModelProfileServiceConditionInput | null,\n};\n\nexport type UpdateProfileServiceInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId?: string | null,\n profileId?: string | null,\n serviceId?: string | null,\n title?: string | null,\n industries?: Array< string | null > | null,\n};\n\nexport type DeleteProfileServiceInput = {\n id: string,\n};\n\nexport type CreateExperienceInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n};\n\nexport type ModelExperienceConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n profileId?: ModelIDInput | null,\n jobTitle?: ModelStringInput | null,\n agencyType?: ModelAgencyTypeInput | null,\n agencyName?: ModelStringInput | null,\n employerName?: ModelStringInput | null,\n employerLocation?: ModelStringInput | null,\n startDate?: ModelStringInput | null,\n endDate?: ModelStringInput | null,\n projectNo?: ModelStringInput | null,\n projectName?: ModelStringInput | null,\n projectLocation?: ModelStringInput | null,\n projectDollarAmount?: ModelIntInput | null,\n jobDescription?: ModelStringInput | null,\n and?: Array< ModelExperienceConditionInput | null > | null,\n or?: Array< ModelExperienceConditionInput | null > | null,\n not?: ModelExperienceConditionInput | null,\n};\n\nexport type ModelAgencyTypeInput = {\n eq?: AgencyType | null,\n ne?: AgencyType | null,\n};\n\nexport type ModelIntInput = {\n ne?: number | null,\n eq?: number | null,\n le?: number | null,\n lt?: number | null,\n ge?: number | null,\n gt?: number | null,\n between?: Array< number | null > | null,\n attributeExists?: boolean | null,\n attributeType?: ModelAttributeTypes | null,\n};\n\nexport type UpdateExperienceInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId?: string | null,\n profileId?: string | null,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n};\n\nexport type DeleteExperienceInput = {\n id: string,\n};\n\nexport type CreateCertificationInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n};\n\nexport type ModelCertificationConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n profileId?: ModelIDInput | null,\n certificationType?: ModelStringInput | null,\n issuedAt?: ModelStringInput | null,\n expiresAt?: ModelStringInput | null,\n certificateKey?: ModelStringInput | null,\n and?: Array< ModelCertificationConditionInput | null > | null,\n or?: Array< ModelCertificationConditionInput | null > | null,\n not?: ModelCertificationConditionInput | null,\n};\n\nexport type UpdateCertificationInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId?: string | null,\n profileId?: string | null,\n certificationType?: string | null,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n};\n\nexport type DeleteCertificationInput = {\n id: string,\n};\n\nexport type CreateCertificationTypeInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n active: boolean,\n industries?: Array< string | null > | null,\n};\n\nexport type ModelCertificationTypeConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n name?: ModelStringInput | null,\n active?: ModelBooleanInput | null,\n industries?: ModelStringInput | null,\n and?: Array< ModelCertificationTypeConditionInput | null > | null,\n or?: Array< ModelCertificationTypeConditionInput | null > | null,\n not?: ModelCertificationTypeConditionInput | null,\n};\n\nexport type CertificationType = {\n __typename: \"CertificationType\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n active: boolean,\n industries?: Array< string | null > | null,\n};\n\nexport type UpdateCertificationTypeInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name?: string | null,\n active?: boolean | null,\n industries?: Array< string | null > | null,\n};\n\nexport type DeleteCertificationTypeInput = {\n id: string,\n};\n\nexport type CreateAgreementInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n};\n\nexport type ModelAgreementConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n accountId?: ModelIDInput | null,\n agreementTypes?: ModelAgreementTypeListInput | null,\n agreementKey?: ModelStringInput | null,\n and?: Array< ModelAgreementConditionInput | null > | null,\n or?: Array< ModelAgreementConditionInput | null > | null,\n not?: ModelAgreementConditionInput | null,\n};\n\nexport type ModelAgreementTypeListInput = {\n eq?: Array< AgreementType | null > | null,\n ne?: Array< AgreementType | null > | null,\n contains?: AgreementType | null,\n notContains?: AgreementType | null,\n};\n\nexport type UpdateAgreementInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId?: string | null,\n accountId?: string | null,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n};\n\nexport type DeleteAgreementInput = {\n id: string,\n};\n\nexport type CreateEducationInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n};\n\nexport type ModelEducationConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n profileId?: ModelIDInput | null,\n school?: ModelStringInput | null,\n degree?: ModelStringInput | null,\n field?: ModelStringInput | null,\n startDate?: ModelStringInput | null,\n endDate?: ModelStringInput | null,\n description?: ModelStringInput | null,\n and?: Array< ModelEducationConditionInput | null > | null,\n or?: Array< ModelEducationConditionInput | null > | null,\n not?: ModelEducationConditionInput | null,\n};\n\nexport type UpdateEducationInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId?: string | null,\n profileId?: string | null,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n};\n\nexport type DeleteEducationInput = {\n id: string,\n};\n\nexport type CreateServiceRequestInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n};\n\nexport type ModelServiceRequestConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n accountId?: ModelIDInput | null,\n serviceRequestType?: ModelServiceRequestTypeInput | null,\n name?: ModelStringInput | null,\n status?: ModelStringInput | null,\n completedDate?: ModelStringInput | null,\n and?: Array< ModelServiceRequestConditionInput | null > | null,\n or?: Array< ModelServiceRequestConditionInput | null > | null,\n not?: ModelServiceRequestConditionInput | null,\n};\n\nexport type ModelServiceRequestTypeInput = {\n eq?: ServiceRequestType | null,\n ne?: ServiceRequestType | null,\n};\n\nexport type UpdateServiceRequestInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId?: string | null,\n serviceRequestType?: ServiceRequestType | null,\n name?: string | null,\n status?: string | null,\n completedDate?: string | null,\n};\n\nexport type DeleteServiceRequestInput = {\n id: string,\n};\n\nexport type CreateContractInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n};\n\nexport type ModelContractConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n accountId?: ModelIDInput | null,\n issuedBy?: ModelStringInput | null,\n name?: ModelStringInput | null,\n number?: ModelStringInput | null,\n locationId?: ModelIDInput | null,\n startDate?: ModelStringInput | null,\n endDate?: ModelStringInput | null,\n perDiem?: ModelFloatInput | null,\n value?: ModelStringInput | null,\n category?: ModelStringInput | null,\n and?: Array< ModelContractConditionInput | null > | null,\n or?: Array< ModelContractConditionInput | null > | null,\n not?: ModelContractConditionInput | null,\n};\n\nexport type UpdateContractInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId?: string | null,\n issuedBy?: string | null,\n name?: string | null,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n};\n\nexport type DeleteContractInput = {\n id: string,\n};\n\nexport type CreateJobPostInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n};\n\nexport type ModelJobPostConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n accountId?: ModelIDInput | null,\n contractId?: ModelIDInput | null,\n serviceRequestId?: ModelIDInput | null,\n locationId?: ModelStringInput | null,\n serviceId?: ModelIDInput | null,\n industries?: ModelStringInput | null,\n title?: ModelStringInput | null,\n summary?: ModelStringInput | null,\n description?: ModelStringInput | null,\n startDate?: ModelStringInput | null,\n endDate?: ModelStringInput | null,\n openDate?: ModelStringInput | null,\n filledDate?: ModelStringInput | null,\n closedDate?: ModelStringInput | null,\n employmentType?: ModelEmploymentTypeInput | null,\n annualSalaryLow?: ModelFloatInput | null,\n annualSalaryHigh?: ModelFloatInput | null,\n statusId?: ModelIDInput | null,\n status?: ModelJobPostStatusInput | null,\n openings?: ModelIntInput | null,\n invoiceId?: ModelStringInput | null,\n jobPostType?: ModelJobPostTypeInput | null,\n hiringDate?: ModelStringInput | null,\n unlocksAvailable?: ModelIntInput | null,\n featured?: ModelBooleanInput | null,\n questions?: ModelStringInput | null,\n workSettings?: ModelWorkSettingListInput | null,\n securityClearance?: ModelStringInput | null,\n and?: Array< ModelJobPostConditionInput | null > | null,\n or?: Array< ModelJobPostConditionInput | null > | null,\n not?: ModelJobPostConditionInput | null,\n};\n\nexport type ModelEmploymentTypeInput = {\n eq?: EmploymentType | null,\n ne?: EmploymentType | null,\n};\n\nexport type ModelJobPostStatusInput = {\n eq?: JobPostStatus | null,\n ne?: JobPostStatus | null,\n};\n\nexport type ModelJobPostTypeInput = {\n eq?: JobPostType | null,\n ne?: JobPostType | null,\n};\n\nexport type UpdateJobPostInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId?: string | null,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId?: string | null,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary?: string | null,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType?: EmploymentType | null,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n};\n\nexport type DeleteJobPostInput = {\n id: string,\n};\n\nexport type CreateJobInterestInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n jobPostId: string,\n ranking?: number | null,\n status?: JobInterestStatus | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n};\n\nexport enum JobInterestStatus {\n Interested = \"Interested\",\n Invited = \"Invited\",\n Applied = \"Applied\",\n Accepted = \"Accepted\",\n Reviewing = \"Reviewing\",\n Rejected = \"Rejected\",\n Unlocked = \"Unlocked\",\n Contacted = \"Contacted\",\n Hired = \"Hired\",\n Declined = \"Declined\",\n}\n\n\nexport type ModelJobInterestConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n jobPostId?: ModelIDInput | null,\n ranking?: ModelFloatInput | null,\n status?: ModelJobInterestStatusInput | null,\n notes?: ModelStringInput | null,\n message?: ModelStringInput | null,\n unlocked?: ModelBooleanInput | null,\n application?: ModelStringInput | null,\n origin?: ModelRecordUpdateOriginInput | null,\n and?: Array< ModelJobInterestConditionInput | null > | null,\n or?: Array< ModelJobInterestConditionInput | null > | null,\n not?: ModelJobInterestConditionInput | null,\n};\n\nexport type ModelJobInterestStatusInput = {\n eq?: JobInterestStatus | null,\n ne?: JobInterestStatus | null,\n};\n\nexport type ModelRecordUpdateOriginInput = {\n eq?: RecordUpdateOrigin | null,\n ne?: RecordUpdateOrigin | null,\n};\n\nexport type JobInterest = {\n __typename: \"JobInterest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n jobPostId: string,\n ranking?: number | null,\n status?: JobInterestStatus | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n};\n\nexport type UpdateJobInterestInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId?: string | null,\n jobPostId?: string | null,\n ranking?: number | null,\n status?: JobInterestStatus | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n};\n\nexport type DeleteJobInterestInput = {\n id: string,\n};\n\nexport type CreateJobCandidateInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n accountId: string,\n profileId: string,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n};\n\nexport type ModelJobCandidateConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n jobPostId?: ModelIDInput | null,\n accountId?: ModelIDInput | null,\n profileId?: ModelIDInput | null,\n status?: ModelJobCandidateStatusInput | null,\n ranking?: ModelFloatInput | null,\n notes?: ModelStringInput | null,\n message?: ModelStringInput | null,\n unlocked?: ModelBooleanInput | null,\n application?: ModelStringInput | null,\n origin?: ModelRecordUpdateOriginInput | null,\n and?: Array< ModelJobCandidateConditionInput | null > | null,\n or?: Array< ModelJobCandidateConditionInput | null > | null,\n not?: ModelJobCandidateConditionInput | null,\n};\n\nexport type ModelJobCandidateStatusInput = {\n eq?: JobCandidateStatus | null,\n ne?: JobCandidateStatus | null,\n};\n\nexport type UpdateJobCandidateInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId?: string | null,\n accountId?: string | null,\n profileId?: string | null,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n};\n\nexport type DeleteJobCandidateInput = {\n id: string,\n};\n\nexport type CreateUserActivityInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n subjectType: SubjectType,\n subjectId: string,\n activityType: string,\n actorId: string,\n actorName?: string | null,\n accountId: string,\n details?: string | null,\n};\n\nexport enum SubjectType {\n Contract = \"Contract\",\n JobCandidate = \"JobCandidate\",\n JobInterest = \"JobInterest\",\n JobPost = \"JobPost\",\n Profile = \"Profile\",\n Invoice = \"Invoice\",\n User = \"User\",\n Account = \"Account\",\n}\n\n\nexport type ModelUserActivityConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n subjectType?: ModelSubjectTypeInput | null,\n subjectId?: ModelIDInput | null,\n activityType?: ModelStringInput | null,\n actorId?: ModelIDInput | null,\n actorName?: ModelStringInput | null,\n accountId?: ModelIDInput | null,\n details?: ModelStringInput | null,\n and?: Array< ModelUserActivityConditionInput | null > | null,\n or?: Array< ModelUserActivityConditionInput | null > | null,\n not?: ModelUserActivityConditionInput | null,\n};\n\nexport type ModelSubjectTypeInput = {\n eq?: SubjectType | null,\n ne?: SubjectType | null,\n};\n\nexport type UserActivity = {\n __typename: \"UserActivity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n subjectType: SubjectType,\n subjectId: string,\n activityType: string,\n actorId: string,\n actorName?: string | null,\n accountId: string,\n details?: string | null,\n};\n\nexport type UpdateUserActivityInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId?: string | null,\n subjectType?: SubjectType | null,\n subjectId?: string | null,\n activityType?: string | null,\n actorId?: string | null,\n actorName?: string | null,\n accountId?: string | null,\n details?: string | null,\n};\n\nexport type DeleteUserActivityInput = {\n id: string,\n};\n\nexport type CreateCourseInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n};\n\nexport type ModelCourseConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n title?: ModelStringInput | null,\n description?: ModelStringInput | null,\n coverUrl?: ModelStringInput | null,\n details?: ModelStringInput | null,\n publishDate?: ModelStringInput | null,\n sunsetDate?: ModelStringInput | null,\n lessonCount?: ModelIntInput | null,\n creditHours?: ModelFloatInput | null,\n isFree?: ModelBooleanInput | null,\n lessons?: ModelStringInput | null,\n handoutUrl?: ModelStringInput | null,\n and?: Array< ModelCourseConditionInput | null > | null,\n or?: Array< ModelCourseConditionInput | null > | null,\n not?: ModelCourseConditionInput | null,\n};\n\nexport type UpdateCourseInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title?: string | null,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n};\n\nexport type DeleteCourseInput = {\n id: string,\n};\n\nexport type CreateLessonInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n};\n\nexport type ModelLessonConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n courseId?: ModelIDInput | null,\n number?: ModelIntInput | null,\n title?: ModelStringInput | null,\n description?: ModelStringInput | null,\n videoUrl?: ModelStringInput | null,\n videoDuration?: ModelIntInput | null,\n and?: Array< ModelLessonConditionInput | null > | null,\n or?: Array< ModelLessonConditionInput | null > | null,\n not?: ModelLessonConditionInput | null,\n};\n\nexport type Lesson = {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: ModelQuestionConnection | null,\n};\n\nexport type ModelQuestionConnection = {\n __typename: \"ModelQuestionConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type Question = {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n lesson?: Lesson | null,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n};\n\nexport type UpdateLessonInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId?: string | null,\n number?: number | null,\n title?: string | null,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n};\n\nexport type DeleteLessonInput = {\n id: string,\n};\n\nexport type CreateQuestionInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n};\n\nexport type ModelQuestionConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n lessonId?: ModelIDInput | null,\n number?: ModelIntInput | null,\n question?: ModelStringInput | null,\n answers?: ModelStringInput | null,\n correctAnswer?: ModelIntInput | null,\n and?: Array< ModelQuestionConditionInput | null > | null,\n or?: Array< ModelQuestionConditionInput | null > | null,\n not?: ModelQuestionConditionInput | null,\n lessonQuestionsId?: ModelIDInput | null,\n};\n\nexport type UpdateQuestionInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId?: string | null,\n number?: number | null,\n question?: string | null,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n};\n\nexport type DeleteQuestionInput = {\n id: string,\n};\n\nexport type CreateClassInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n};\n\nexport type ModelClassConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n courseId?: ModelIDInput | null,\n accountId?: ModelIDInput | null,\n ownerId?: ModelIDInput | null,\n userId?: ModelIDInput | null,\n termBegin?: ModelStringInput | null,\n termEnd?: ModelStringInput | null,\n seatsPurchased?: ModelIntInput | null,\n seatsFilled?: ModelIntInput | null,\n couponCode?: ModelStringInput | null,\n assignmentSchedule?: ModelAssignmentScheduleInput | null,\n and?: Array< ModelClassConditionInput | null > | null,\n or?: Array< ModelClassConditionInput | null > | null,\n not?: ModelClassConditionInput | null,\n};\n\nexport type ModelAssignmentScheduleInput = {\n eq?: AssignmentSchedule | null,\n ne?: AssignmentSchedule | null,\n};\n\nexport type UpdateClassInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId?: string | null,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n};\n\nexport type DeleteClassInput = {\n id: string,\n};\n\nexport type CreateRegistrationInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n};\n\nexport type ModelRegistrationConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n accountId?: ModelIDInput | null,\n classId?: ModelIDInput | null,\n userId?: ModelIDInput | null,\n classStatus?: ModelClassStatusInput | null,\n classProgress?: ModelFloatInput | null,\n lessonNumber?: ModelIntInput | null,\n lessonId?: ModelIDInput | null,\n lessonStatus?: ModelLessonStatusInput | null,\n videoProgress?: ModelFloatInput | null,\n answers?: ModelIntInput | null,\n score?: ModelFloatInput | null,\n startedAt?: ModelStringInput | null,\n endsAt?: ModelStringInput | null,\n completedAt?: ModelStringInput | null,\n lessonsAssigned?: ModelIntInput | null,\n nextAssignmentAt?: ModelStringInput | null,\n and?: Array< ModelRegistrationConditionInput | null > | null,\n or?: Array< ModelRegistrationConditionInput | null > | null,\n not?: ModelRegistrationConditionInput | null,\n};\n\nexport type ModelClassStatusInput = {\n eq?: ClassStatus | null,\n ne?: ClassStatus | null,\n};\n\nexport type ModelLessonStatusInput = {\n eq?: LessonStatus | null,\n ne?: LessonStatus | null,\n};\n\nexport type UpdateRegistrationInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId?: string | null,\n classId?: string | null,\n userId?: string | null,\n classStatus?: ClassStatus | null,\n classProgress?: number | null,\n lessonNumber?: number | null,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score?: number | null,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n};\n\nexport type DeleteRegistrationInput = {\n id: string,\n};\n\nexport type CreateActivityInput = {\n id?: string | null,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n};\n\nexport type ModelActivityConditionInput = {\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n accountId?: ModelIDInput | null,\n userId?: ModelIDInput | null,\n activityDate?: ModelStringInput | null,\n activityType?: ModelActivityTypeInput | null,\n objectId?: ModelIDInput | null,\n values?: ModelStringInput | null,\n and?: Array< ModelActivityConditionInput | null > | null,\n or?: Array< ModelActivityConditionInput | null > | null,\n not?: ModelActivityConditionInput | null,\n};\n\nexport type ModelActivityTypeInput = {\n eq?: ActivityType | null,\n ne?: ActivityType | null,\n};\n\nexport type UpdateActivityInput = {\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId?: string | null,\n userId?: string | null,\n activityDate?: string | null,\n activityType?: ActivityType | null,\n objectId?: string | null,\n values?: string | null,\n};\n\nexport type DeleteActivityInput = {\n id: string,\n};\n\nexport type ModelUserFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n active?: ModelBooleanInput | null,\n userStatus?: ModelUserStatusInput | null,\n accountId?: ModelIDInput | null,\n firstName?: ModelStringInput | null,\n lastName?: ModelStringInput | null,\n title?: ModelStringInput | null,\n email?: ModelStringInput | null,\n phone?: ModelStringInput | null,\n role?: ModelUserRoleInput | null,\n address?: ModelStringInput | null,\n city?: ModelStringInput | null,\n state?: ModelStringInput | null,\n postalCode?: ModelStringInput | null,\n country?: ModelStringInput | null,\n industry?: ModelStringInput | null,\n lastActiveAt?: ModelStringInput | null,\n jobTitle?: ModelStringInput | null,\n invitedAt?: ModelStringInput | null,\n customerId?: ModelStringInput | null,\n and?: Array< ModelUserFilterInput | null > | null,\n or?: Array< ModelUserFilterInput | null > | null,\n not?: ModelUserFilterInput | null,\n};\n\nexport enum ModelSortDirection {\n ASC = \"ASC\",\n DESC = \"DESC\",\n}\n\n\nexport type ModelAgreementFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n accountId?: ModelIDInput | null,\n agreementTypes?: ModelAgreementTypeListInput | null,\n agreementKey?: ModelStringInput | null,\n and?: Array< ModelAgreementFilterInput | null > | null,\n or?: Array< ModelAgreementFilterInput | null > | null,\n not?: ModelAgreementFilterInput | null,\n};\n\nexport type ModelJobInterestFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n jobPostId?: ModelIDInput | null,\n ranking?: ModelFloatInput | null,\n status?: ModelJobInterestStatusInput | null,\n notes?: ModelStringInput | null,\n message?: ModelStringInput | null,\n unlocked?: ModelBooleanInput | null,\n application?: ModelStringInput | null,\n origin?: ModelRecordUpdateOriginInput | null,\n and?: Array< ModelJobInterestFilterInput | null > | null,\n or?: Array< ModelJobInterestFilterInput | null > | null,\n not?: ModelJobInterestFilterInput | null,\n};\n\nexport type ModelJobInterestConnection = {\n __typename: \"ModelJobInterestConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type ModelJobCandidateFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n jobPostId?: ModelIDInput | null,\n accountId?: ModelIDInput | null,\n profileId?: ModelIDInput | null,\n status?: ModelJobCandidateStatusInput | null,\n ranking?: ModelFloatInput | null,\n notes?: ModelStringInput | null,\n message?: ModelStringInput | null,\n unlocked?: ModelBooleanInput | null,\n application?: ModelStringInput | null,\n origin?: ModelRecordUpdateOriginInput | null,\n and?: Array< ModelJobCandidateFilterInput | null > | null,\n or?: Array< ModelJobCandidateFilterInput | null > | null,\n not?: ModelJobCandidateFilterInput | null,\n};\n\nexport type ModelUserActivityFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n subjectType?: ModelSubjectTypeInput | null,\n subjectId?: ModelIDInput | null,\n activityType?: ModelStringInput | null,\n actorId?: ModelIDInput | null,\n actorName?: ModelStringInput | null,\n accountId?: ModelIDInput | null,\n details?: ModelStringInput | null,\n and?: Array< ModelUserActivityFilterInput | null > | null,\n or?: Array< ModelUserActivityFilterInput | null > | null,\n not?: ModelUserActivityFilterInput | null,\n};\n\nexport type ModelUserActivityConnection = {\n __typename: \"ModelUserActivityConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type ModelLessonFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n courseId?: ModelIDInput | null,\n number?: ModelIntInput | null,\n title?: ModelStringInput | null,\n description?: ModelStringInput | null,\n videoUrl?: ModelStringInput | null,\n videoDuration?: ModelIntInput | null,\n and?: Array< ModelLessonFilterInput | null > | null,\n or?: Array< ModelLessonFilterInput | null > | null,\n not?: ModelLessonFilterInput | null,\n};\n\nexport type ModelLessonConnection = {\n __typename: \"ModelLessonConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type ModelQuestionFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n lessonId?: ModelIDInput | null,\n number?: ModelIntInput | null,\n question?: ModelStringInput | null,\n answers?: ModelStringInput | null,\n correctAnswer?: ModelIntInput | null,\n and?: Array< ModelQuestionFilterInput | null > | null,\n or?: Array< ModelQuestionFilterInput | null > | null,\n not?: ModelQuestionFilterInput | null,\n lessonQuestionsId?: ModelIDInput | null,\n};\n\nexport type ModelClassFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n courseId?: ModelIDInput | null,\n accountId?: ModelIDInput | null,\n ownerId?: ModelIDInput | null,\n userId?: ModelIDInput | null,\n termBegin?: ModelStringInput | null,\n termEnd?: ModelStringInput | null,\n seatsPurchased?: ModelIntInput | null,\n seatsFilled?: ModelIntInput | null,\n couponCode?: ModelStringInput | null,\n assignmentSchedule?: ModelAssignmentScheduleInput | null,\n and?: Array< ModelClassFilterInput | null > | null,\n or?: Array< ModelClassFilterInput | null > | null,\n not?: ModelClassFilterInput | null,\n};\n\nexport type ModelRegistrationFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n accountId?: ModelIDInput | null,\n classId?: ModelIDInput | null,\n userId?: ModelIDInput | null,\n classStatus?: ModelClassStatusInput | null,\n classProgress?: ModelFloatInput | null,\n lessonNumber?: ModelIntInput | null,\n lessonId?: ModelIDInput | null,\n lessonStatus?: ModelLessonStatusInput | null,\n videoProgress?: ModelFloatInput | null,\n answers?: ModelIntInput | null,\n score?: ModelFloatInput | null,\n startedAt?: ModelStringInput | null,\n endsAt?: ModelStringInput | null,\n completedAt?: ModelStringInput | null,\n lessonsAssigned?: ModelIntInput | null,\n nextAssignmentAt?: ModelStringInput | null,\n and?: Array< ModelRegistrationFilterInput | null > | null,\n or?: Array< ModelRegistrationFilterInput | null > | null,\n not?: ModelRegistrationFilterInput | null,\n};\n\nexport type ModelActivityFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n accountId?: ModelIDInput | null,\n userId?: ModelIDInput | null,\n activityDate?: ModelStringInput | null,\n activityType?: ModelActivityTypeInput | null,\n objectId?: ModelIDInput | null,\n values?: ModelStringInput | null,\n and?: Array< ModelActivityFilterInput | null > | null,\n or?: Array< ModelActivityFilterInput | null > | null,\n not?: ModelActivityFilterInput | null,\n};\n\nexport type ModelIDKeyConditionInput = {\n eq?: string | null,\n le?: string | null,\n lt?: string | null,\n ge?: string | null,\n gt?: string | null,\n between?: Array< string | null > | null,\n beginsWith?: string | null,\n};\n\nexport type ModelStringKeyConditionInput = {\n eq?: string | null,\n le?: string | null,\n lt?: string | null,\n ge?: string | null,\n gt?: string | null,\n between?: Array< string | null > | null,\n beginsWith?: string | null,\n};\n\nexport type ModelAccountFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n ownerId?: ModelIDInput | null,\n name?: ModelStringInput | null,\n address?: ModelStringInput | null,\n city?: ModelStringInput | null,\n state?: ModelStringInput | null,\n postalCode?: ModelStringInput | null,\n country?: ModelStringInput | null,\n active?: ModelBooleanInput | null,\n dunsNumber?: ModelStringInput | null,\n cageCode?: ModelStringInput | null,\n naicsCode?: ModelStringInput | null,\n sicCode?: ModelStringInput | null,\n socioEconomicDesignation?: ModelStringInput | null,\n fein?: ModelStringInput | null,\n accountStatus?: ModelAccountStatusInput | null,\n phone?: ModelStringInput | null,\n webUrl?: ModelStringInput | null,\n accountType?: ModelAccountTypeInput | null,\n accountSize?: ModelAccountSizeInput | null,\n customerId?: ModelStringInput | null,\n industries?: ModelStringInput | null,\n and?: Array< ModelAccountFilterInput | null > | null,\n or?: Array< ModelAccountFilterInput | null > | null,\n not?: ModelAccountFilterInput | null,\n};\n\nexport type ModelAccountConnection = {\n __typename: \"ModelAccountConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type ModelServiceGroupFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n name?: ModelStringInput | null,\n industries?: ModelStringInput | null,\n default?: ModelBooleanInput | null,\n and?: Array< ModelServiceGroupFilterInput | null > | null,\n or?: Array< ModelServiceGroupFilterInput | null > | null,\n not?: ModelServiceGroupFilterInput | null,\n};\n\nexport type ModelServiceGroupConnection = {\n __typename: \"ModelServiceGroupConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type ModelServiceFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n name?: ModelStringInput | null,\n aliases?: ModelStringInput | null,\n active?: ModelBooleanInput | null,\n serviceGroupId?: ModelIDInput | null,\n industries?: ModelStringInput | null,\n and?: Array< ModelServiceFilterInput | null > | null,\n or?: Array< ModelServiceFilterInput | null > | null,\n not?: ModelServiceFilterInput | null,\n};\n\nexport type ModelLocationFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n organizationName?: ModelStringInput | null,\n active?: ModelBooleanInput | null,\n name?: ModelStringInput | null,\n aliases?: ModelStringInput | null,\n addressType?: ModelAddressTypeInput | null,\n address?: ModelStringInput | null,\n city?: ModelStringInput | null,\n state?: ModelStringInput | null,\n postalCode?: ModelStringInput | null,\n country?: ModelStringInput | null,\n latitude?: ModelFloatInput | null,\n longitude?: ModelFloatInput | null,\n and?: Array< ModelLocationFilterInput | null > | null,\n or?: Array< ModelLocationFilterInput | null > | null,\n not?: ModelLocationFilterInput | null,\n};\n\nexport type ModelLocationConnection = {\n __typename: \"ModelLocationConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type ModelProfileFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n alias?: ModelStringInput | null,\n active?: ModelBooleanInput | null,\n userId?: ModelIDInput | null,\n nickname?: ModelStringInput | null,\n availability?: ModelStringInput | null,\n availableDate?: ModelStringInput | null,\n desiredRate?: ModelStringInput | null,\n about?: ModelStringInput | null,\n resumeKey?: ModelStringInput | null,\n profileStatus?: ModelProfileStatusInput | null,\n statusMessage?: ModelStringInput | null,\n notes?: ModelStringInput | null,\n city?: ModelStringInput | null,\n state?: ModelStringInput | null,\n country?: ModelStringInput | null,\n federalExperience?: ModelFloatInput | null,\n totalExperience?: ModelFloatInput | null,\n industries?: ModelStringInput | null,\n securityClearance?: ModelStringInput | null,\n securityStatus?: ModelSecurityStatusInput | null,\n workSettings?: ModelWorkSettingListInput | null,\n credentials?: ModelStringInput | null,\n and?: Array< ModelProfileFilterInput | null > | null,\n or?: Array< ModelProfileFilterInput | null > | null,\n not?: ModelProfileFilterInput | null,\n};\n\nexport type ModelProfileLocationFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n profileId?: ModelIDInput | null,\n locationId?: ModelIDInput | null,\n and?: Array< ModelProfileLocationFilterInput | null > | null,\n or?: Array< ModelProfileLocationFilterInput | null > | null,\n not?: ModelProfileLocationFilterInput | null,\n};\n\nexport type ModelProfileServiceFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n profileId?: ModelIDInput | null,\n serviceId?: ModelIDInput | null,\n title?: ModelStringInput | null,\n industries?: ModelStringInput | null,\n and?: Array< ModelProfileServiceFilterInput | null > | null,\n or?: Array< ModelProfileServiceFilterInput | null > | null,\n not?: ModelProfileServiceFilterInput | null,\n};\n\nexport type ModelExperienceFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n profileId?: ModelIDInput | null,\n jobTitle?: ModelStringInput | null,\n agencyType?: ModelAgencyTypeInput | null,\n agencyName?: ModelStringInput | null,\n employerName?: ModelStringInput | null,\n employerLocation?: ModelStringInput | null,\n startDate?: ModelStringInput | null,\n endDate?: ModelStringInput | null,\n projectNo?: ModelStringInput | null,\n projectName?: ModelStringInput | null,\n projectLocation?: ModelStringInput | null,\n projectDollarAmount?: ModelIntInput | null,\n jobDescription?: ModelStringInput | null,\n and?: Array< ModelExperienceFilterInput | null > | null,\n or?: Array< ModelExperienceFilterInput | null > | null,\n not?: ModelExperienceFilterInput | null,\n};\n\nexport type ModelCertificationFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n profileId?: ModelIDInput | null,\n certificationType?: ModelStringInput | null,\n issuedAt?: ModelStringInput | null,\n expiresAt?: ModelStringInput | null,\n certificateKey?: ModelStringInput | null,\n and?: Array< ModelCertificationFilterInput | null > | null,\n or?: Array< ModelCertificationFilterInput | null > | null,\n not?: ModelCertificationFilterInput | null,\n};\n\nexport type ModelCertificationTypeFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n name?: ModelStringInput | null,\n active?: ModelBooleanInput | null,\n industries?: ModelStringInput | null,\n and?: Array< ModelCertificationTypeFilterInput | null > | null,\n or?: Array< ModelCertificationTypeFilterInput | null > | null,\n not?: ModelCertificationTypeFilterInput | null,\n};\n\nexport type ModelCertificationTypeConnection = {\n __typename: \"ModelCertificationTypeConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type ModelEducationFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n userId?: ModelIDInput | null,\n profileId?: ModelIDInput | null,\n school?: ModelStringInput | null,\n degree?: ModelStringInput | null,\n field?: ModelStringInput | null,\n startDate?: ModelStringInput | null,\n endDate?: ModelStringInput | null,\n description?: ModelStringInput | null,\n and?: Array< ModelEducationFilterInput | null > | null,\n or?: Array< ModelEducationFilterInput | null > | null,\n not?: ModelEducationFilterInput | null,\n};\n\nexport type ModelServiceRequestFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n accountId?: ModelIDInput | null,\n serviceRequestType?: ModelServiceRequestTypeInput | null,\n name?: ModelStringInput | null,\n status?: ModelStringInput | null,\n completedDate?: ModelStringInput | null,\n and?: Array< ModelServiceRequestFilterInput | null > | null,\n or?: Array< ModelServiceRequestFilterInput | null > | null,\n not?: ModelServiceRequestFilterInput | null,\n};\n\nexport type ModelServiceRequestConnection = {\n __typename: \"ModelServiceRequestConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type ModelContractFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n accountId?: ModelIDInput | null,\n issuedBy?: ModelStringInput | null,\n name?: ModelStringInput | null,\n number?: ModelStringInput | null,\n locationId?: ModelIDInput | null,\n startDate?: ModelStringInput | null,\n endDate?: ModelStringInput | null,\n perDiem?: ModelFloatInput | null,\n value?: ModelStringInput | null,\n category?: ModelStringInput | null,\n and?: Array< ModelContractFilterInput | null > | null,\n or?: Array< ModelContractFilterInput | null > | null,\n not?: ModelContractFilterInput | null,\n};\n\nexport type ModelJobPostFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n accountId?: ModelIDInput | null,\n contractId?: ModelIDInput | null,\n serviceRequestId?: ModelIDInput | null,\n locationId?: ModelStringInput | null,\n serviceId?: ModelIDInput | null,\n industries?: ModelStringInput | null,\n title?: ModelStringInput | null,\n summary?: ModelStringInput | null,\n description?: ModelStringInput | null,\n startDate?: ModelStringInput | null,\n endDate?: ModelStringInput | null,\n openDate?: ModelStringInput | null,\n filledDate?: ModelStringInput | null,\n closedDate?: ModelStringInput | null,\n employmentType?: ModelEmploymentTypeInput | null,\n annualSalaryLow?: ModelFloatInput | null,\n annualSalaryHigh?: ModelFloatInput | null,\n statusId?: ModelIDInput | null,\n status?: ModelJobPostStatusInput | null,\n openings?: ModelIntInput | null,\n invoiceId?: ModelStringInput | null,\n jobPostType?: ModelJobPostTypeInput | null,\n hiringDate?: ModelStringInput | null,\n unlocksAvailable?: ModelIntInput | null,\n featured?: ModelBooleanInput | null,\n questions?: ModelStringInput | null,\n workSettings?: ModelWorkSettingListInput | null,\n securityClearance?: ModelStringInput | null,\n and?: Array< ModelJobPostFilterInput | null > | null,\n or?: Array< ModelJobPostFilterInput | null > | null,\n not?: ModelJobPostFilterInput | null,\n};\n\nexport type ModelCourseFilterInput = {\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n title?: ModelStringInput | null,\n description?: ModelStringInput | null,\n coverUrl?: ModelStringInput | null,\n details?: ModelStringInput | null,\n publishDate?: ModelStringInput | null,\n sunsetDate?: ModelStringInput | null,\n lessonCount?: ModelIntInput | null,\n creditHours?: ModelFloatInput | null,\n isFree?: ModelBooleanInput | null,\n lessons?: ModelStringInput | null,\n handoutUrl?: ModelStringInput | null,\n and?: Array< ModelCourseFilterInput | null > | null,\n or?: Array< ModelCourseFilterInput | null > | null,\n not?: ModelCourseFilterInput | null,\n};\n\nexport type ModelCourseConnection = {\n __typename: \"ModelCourseConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type ModelSubscriptionUserFilterInput = {\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n active?: ModelSubscriptionBooleanInput | null,\n userStatus?: ModelSubscriptionStringInput | null,\n firstName?: ModelSubscriptionStringInput | null,\n lastName?: ModelSubscriptionStringInput | null,\n title?: ModelSubscriptionStringInput | null,\n email?: ModelSubscriptionStringInput | null,\n phone?: ModelSubscriptionStringInput | null,\n role?: ModelSubscriptionStringInput | null,\n address?: ModelSubscriptionStringInput | null,\n city?: ModelSubscriptionStringInput | null,\n state?: ModelSubscriptionStringInput | null,\n postalCode?: ModelSubscriptionStringInput | null,\n country?: ModelSubscriptionStringInput | null,\n industry?: ModelSubscriptionStringInput | null,\n lastActiveAt?: ModelSubscriptionStringInput | null,\n jobTitle?: ModelSubscriptionStringInput | null,\n invitedAt?: ModelSubscriptionStringInput | null,\n customerId?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionUserFilterInput | null > | null,\n or?: Array< ModelSubscriptionUserFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionStringInput = {\n ne?: string | null,\n eq?: string | null,\n le?: string | null,\n lt?: string | null,\n ge?: string | null,\n gt?: string | null,\n contains?: string | null,\n notContains?: string | null,\n between?: Array< string | null > | null,\n beginsWith?: string | null,\n in?: Array< string | null > | null,\n notIn?: Array< string | null > | null,\n};\n\nexport type ModelSubscriptionBooleanInput = {\n ne?: boolean | null,\n eq?: boolean | null,\n};\n\nexport type ModelSubscriptionAgreementFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n accountId?: ModelSubscriptionIDInput | null,\n agreementTypes?: ModelSubscriptionStringInput | null,\n agreementKey?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionAgreementFilterInput | null > | null,\n or?: Array< ModelSubscriptionAgreementFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionIDInput = {\n ne?: string | null,\n eq?: string | null,\n le?: string | null,\n lt?: string | null,\n ge?: string | null,\n gt?: string | null,\n contains?: string | null,\n notContains?: string | null,\n between?: Array< string | null > | null,\n beginsWith?: string | null,\n in?: Array< string | null > | null,\n notIn?: Array< string | null > | null,\n};\n\nexport type ModelSubscriptionJobInterestFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n jobPostId?: ModelSubscriptionIDInput | null,\n ranking?: ModelSubscriptionFloatInput | null,\n status?: ModelSubscriptionStringInput | null,\n notes?: ModelSubscriptionStringInput | null,\n message?: ModelSubscriptionStringInput | null,\n unlocked?: ModelSubscriptionBooleanInput | null,\n application?: ModelSubscriptionStringInput | null,\n origin?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionJobInterestFilterInput | null > | null,\n or?: Array< ModelSubscriptionJobInterestFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionFloatInput = {\n ne?: number | null,\n eq?: number | null,\n le?: number | null,\n lt?: number | null,\n ge?: number | null,\n gt?: number | null,\n between?: Array< number | null > | null,\n in?: Array< number | null > | null,\n notIn?: Array< number | null > | null,\n};\n\nexport type ModelSubscriptionJobCandidateFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n jobPostId?: ModelSubscriptionIDInput | null,\n profileId?: ModelSubscriptionIDInput | null,\n status?: ModelSubscriptionStringInput | null,\n ranking?: ModelSubscriptionFloatInput | null,\n notes?: ModelSubscriptionStringInput | null,\n message?: ModelSubscriptionStringInput | null,\n unlocked?: ModelSubscriptionBooleanInput | null,\n application?: ModelSubscriptionStringInput | null,\n origin?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionJobCandidateFilterInput | null > | null,\n or?: Array< ModelSubscriptionJobCandidateFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionUserActivityFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n subjectType?: ModelSubscriptionStringInput | null,\n subjectId?: ModelSubscriptionIDInput | null,\n activityType?: ModelSubscriptionStringInput | null,\n actorId?: ModelSubscriptionIDInput | null,\n actorName?: ModelSubscriptionStringInput | null,\n details?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionUserActivityFilterInput | null > | null,\n or?: Array< ModelSubscriptionUserActivityFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionLessonFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n courseId?: ModelSubscriptionIDInput | null,\n number?: ModelSubscriptionIntInput | null,\n title?: ModelSubscriptionStringInput | null,\n description?: ModelSubscriptionStringInput | null,\n videoUrl?: ModelSubscriptionStringInput | null,\n videoDuration?: ModelSubscriptionIntInput | null,\n and?: Array< ModelSubscriptionLessonFilterInput | null > | null,\n or?: Array< ModelSubscriptionLessonFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionIntInput = {\n ne?: number | null,\n eq?: number | null,\n le?: number | null,\n lt?: number | null,\n ge?: number | null,\n gt?: number | null,\n between?: Array< number | null > | null,\n in?: Array< number | null > | null,\n notIn?: Array< number | null > | null,\n};\n\nexport type ModelSubscriptionQuestionFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n lessonId?: ModelSubscriptionIDInput | null,\n number?: ModelSubscriptionIntInput | null,\n question?: ModelSubscriptionStringInput | null,\n answers?: ModelSubscriptionStringInput | null,\n correctAnswer?: ModelSubscriptionIntInput | null,\n and?: Array< ModelSubscriptionQuestionFilterInput | null > | null,\n or?: Array< ModelSubscriptionQuestionFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionClassFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n courseId?: ModelSubscriptionIDInput | null,\n userId?: ModelSubscriptionIDInput | null,\n termBegin?: ModelSubscriptionStringInput | null,\n termEnd?: ModelSubscriptionStringInput | null,\n seatsPurchased?: ModelSubscriptionIntInput | null,\n seatsFilled?: ModelSubscriptionIntInput | null,\n couponCode?: ModelSubscriptionStringInput | null,\n assignmentSchedule?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionClassFilterInput | null > | null,\n or?: Array< ModelSubscriptionClassFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionRegistrationFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n classId?: ModelSubscriptionIDInput | null,\n classStatus?: ModelSubscriptionStringInput | null,\n classProgress?: ModelSubscriptionFloatInput | null,\n lessonNumber?: ModelSubscriptionIntInput | null,\n lessonId?: ModelSubscriptionIDInput | null,\n lessonStatus?: ModelSubscriptionStringInput | null,\n videoProgress?: ModelSubscriptionFloatInput | null,\n answers?: ModelSubscriptionIntInput | null,\n score?: ModelSubscriptionFloatInput | null,\n startedAt?: ModelSubscriptionStringInput | null,\n endsAt?: ModelSubscriptionStringInput | null,\n completedAt?: ModelSubscriptionStringInput | null,\n lessonsAssigned?: ModelSubscriptionIntInput | null,\n nextAssignmentAt?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionRegistrationFilterInput | null > | null,\n or?: Array< ModelSubscriptionRegistrationFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionActivityFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n activityDate?: ModelSubscriptionStringInput | null,\n activityType?: ModelSubscriptionStringInput | null,\n objectId?: ModelSubscriptionIDInput | null,\n values?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionActivityFilterInput | null > | null,\n or?: Array< ModelSubscriptionActivityFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionAccountFilterInput = {\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n name?: ModelSubscriptionStringInput | null,\n address?: ModelSubscriptionStringInput | null,\n city?: ModelSubscriptionStringInput | null,\n state?: ModelSubscriptionStringInput | null,\n postalCode?: ModelSubscriptionStringInput | null,\n country?: ModelSubscriptionStringInput | null,\n active?: ModelSubscriptionBooleanInput | null,\n dunsNumber?: ModelSubscriptionStringInput | null,\n cageCode?: ModelSubscriptionStringInput | null,\n naicsCode?: ModelSubscriptionStringInput | null,\n sicCode?: ModelSubscriptionStringInput | null,\n socioEconomicDesignation?: ModelSubscriptionStringInput | null,\n fein?: ModelSubscriptionStringInput | null,\n accountStatus?: ModelSubscriptionStringInput | null,\n phone?: ModelSubscriptionStringInput | null,\n webUrl?: ModelSubscriptionStringInput | null,\n accountType?: ModelSubscriptionStringInput | null,\n accountSize?: ModelSubscriptionStringInput | null,\n customerId?: ModelSubscriptionStringInput | null,\n industries?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionAccountFilterInput | null > | null,\n or?: Array< ModelSubscriptionAccountFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionServiceGroupFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n name?: ModelSubscriptionStringInput | null,\n industries?: ModelSubscriptionStringInput | null,\n default?: ModelSubscriptionBooleanInput | null,\n and?: Array< ModelSubscriptionServiceGroupFilterInput | null > | null,\n or?: Array< ModelSubscriptionServiceGroupFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionServiceFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n name?: ModelSubscriptionStringInput | null,\n aliases?: ModelSubscriptionStringInput | null,\n active?: ModelSubscriptionBooleanInput | null,\n serviceGroupId?: ModelSubscriptionIDInput | null,\n industries?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionServiceFilterInput | null > | null,\n or?: Array< ModelSubscriptionServiceFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionLocationFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n organizationName?: ModelSubscriptionStringInput | null,\n active?: ModelSubscriptionBooleanInput | null,\n name?: ModelSubscriptionStringInput | null,\n aliases?: ModelSubscriptionStringInput | null,\n addressType?: ModelSubscriptionStringInput | null,\n address?: ModelSubscriptionStringInput | null,\n city?: ModelSubscriptionStringInput | null,\n state?: ModelSubscriptionStringInput | null,\n postalCode?: ModelSubscriptionStringInput | null,\n country?: ModelSubscriptionStringInput | null,\n latitude?: ModelSubscriptionFloatInput | null,\n longitude?: ModelSubscriptionFloatInput | null,\n and?: Array< ModelSubscriptionLocationFilterInput | null > | null,\n or?: Array< ModelSubscriptionLocationFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionProfileFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n alias?: ModelSubscriptionStringInput | null,\n active?: ModelSubscriptionBooleanInput | null,\n nickname?: ModelSubscriptionStringInput | null,\n availability?: ModelSubscriptionStringInput | null,\n availableDate?: ModelSubscriptionStringInput | null,\n desiredRate?: ModelSubscriptionStringInput | null,\n about?: ModelSubscriptionStringInput | null,\n resumeKey?: ModelSubscriptionStringInput | null,\n profileStatus?: ModelSubscriptionStringInput | null,\n statusMessage?: ModelSubscriptionStringInput | null,\n notes?: ModelSubscriptionStringInput | null,\n city?: ModelSubscriptionStringInput | null,\n state?: ModelSubscriptionStringInput | null,\n country?: ModelSubscriptionStringInput | null,\n federalExperience?: ModelSubscriptionFloatInput | null,\n totalExperience?: ModelSubscriptionFloatInput | null,\n industries?: ModelSubscriptionStringInput | null,\n securityClearance?: ModelSubscriptionStringInput | null,\n securityStatus?: ModelSubscriptionStringInput | null,\n workSettings?: ModelSubscriptionStringInput | null,\n credentials?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionProfileFilterInput | null > | null,\n or?: Array< ModelSubscriptionProfileFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionProfileLocationFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n profileId?: ModelSubscriptionIDInput | null,\n locationId?: ModelSubscriptionIDInput | null,\n and?: Array< ModelSubscriptionProfileLocationFilterInput | null > | null,\n or?: Array< ModelSubscriptionProfileLocationFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionProfileServiceFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n profileId?: ModelSubscriptionIDInput | null,\n serviceId?: ModelSubscriptionIDInput | null,\n title?: ModelSubscriptionStringInput | null,\n industries?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionProfileServiceFilterInput | null > | null,\n or?: Array< ModelSubscriptionProfileServiceFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionExperienceFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n profileId?: ModelSubscriptionIDInput | null,\n jobTitle?: ModelSubscriptionStringInput | null,\n agencyType?: ModelSubscriptionStringInput | null,\n agencyName?: ModelSubscriptionStringInput | null,\n employerName?: ModelSubscriptionStringInput | null,\n employerLocation?: ModelSubscriptionStringInput | null,\n startDate?: ModelSubscriptionStringInput | null,\n endDate?: ModelSubscriptionStringInput | null,\n projectNo?: ModelSubscriptionStringInput | null,\n projectName?: ModelSubscriptionStringInput | null,\n projectLocation?: ModelSubscriptionStringInput | null,\n projectDollarAmount?: ModelSubscriptionIntInput | null,\n jobDescription?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionExperienceFilterInput | null > | null,\n or?: Array< ModelSubscriptionExperienceFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionCertificationFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n profileId?: ModelSubscriptionIDInput | null,\n certificationType?: ModelSubscriptionStringInput | null,\n issuedAt?: ModelSubscriptionStringInput | null,\n expiresAt?: ModelSubscriptionStringInput | null,\n certificateKey?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionCertificationFilterInput | null > | null,\n or?: Array< ModelSubscriptionCertificationFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionCertificationTypeFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n name?: ModelSubscriptionStringInput | null,\n active?: ModelSubscriptionBooleanInput | null,\n industries?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionCertificationTypeFilterInput | null > | null,\n or?: Array< ModelSubscriptionCertificationTypeFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionEducationFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n profileId?: ModelSubscriptionIDInput | null,\n school?: ModelSubscriptionStringInput | null,\n degree?: ModelSubscriptionStringInput | null,\n field?: ModelSubscriptionStringInput | null,\n startDate?: ModelSubscriptionStringInput | null,\n endDate?: ModelSubscriptionStringInput | null,\n description?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionEducationFilterInput | null > | null,\n or?: Array< ModelSubscriptionEducationFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionServiceRequestFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n serviceRequestType?: ModelSubscriptionStringInput | null,\n name?: ModelSubscriptionStringInput | null,\n status?: ModelSubscriptionStringInput | null,\n completedDate?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionServiceRequestFilterInput | null > | null,\n or?: Array< ModelSubscriptionServiceRequestFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionContractFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n issuedBy?: ModelSubscriptionStringInput | null,\n name?: ModelSubscriptionStringInput | null,\n number?: ModelSubscriptionStringInput | null,\n locationId?: ModelSubscriptionIDInput | null,\n startDate?: ModelSubscriptionStringInput | null,\n endDate?: ModelSubscriptionStringInput | null,\n perDiem?: ModelSubscriptionFloatInput | null,\n value?: ModelSubscriptionStringInput | null,\n category?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionContractFilterInput | null > | null,\n or?: Array< ModelSubscriptionContractFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionJobPostFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n contractId?: ModelSubscriptionIDInput | null,\n serviceRequestId?: ModelSubscriptionIDInput | null,\n locationId?: ModelSubscriptionStringInput | null,\n serviceId?: ModelSubscriptionIDInput | null,\n industries?: ModelSubscriptionStringInput | null,\n title?: ModelSubscriptionStringInput | null,\n summary?: ModelSubscriptionStringInput | null,\n description?: ModelSubscriptionStringInput | null,\n startDate?: ModelSubscriptionStringInput | null,\n endDate?: ModelSubscriptionStringInput | null,\n openDate?: ModelSubscriptionStringInput | null,\n filledDate?: ModelSubscriptionStringInput | null,\n closedDate?: ModelSubscriptionStringInput | null,\n employmentType?: ModelSubscriptionStringInput | null,\n annualSalaryLow?: ModelSubscriptionFloatInput | null,\n annualSalaryHigh?: ModelSubscriptionFloatInput | null,\n statusId?: ModelSubscriptionIDInput | null,\n status?: ModelSubscriptionStringInput | null,\n openings?: ModelSubscriptionIntInput | null,\n invoiceId?: ModelSubscriptionStringInput | null,\n jobPostType?: ModelSubscriptionStringInput | null,\n hiringDate?: ModelSubscriptionStringInput | null,\n unlocksAvailable?: ModelSubscriptionIntInput | null,\n featured?: ModelSubscriptionBooleanInput | null,\n questions?: ModelSubscriptionStringInput | null,\n workSettings?: ModelSubscriptionStringInput | null,\n securityClearance?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionJobPostFilterInput | null > | null,\n or?: Array< ModelSubscriptionJobPostFilterInput | null > | null,\n};\n\nexport type ModelSubscriptionCourseFilterInput = {\n id?: ModelSubscriptionIDInput | null,\n createdAt?: ModelSubscriptionStringInput | null,\n updatedAt?: ModelSubscriptionStringInput | null,\n title?: ModelSubscriptionStringInput | null,\n description?: ModelSubscriptionStringInput | null,\n coverUrl?: ModelSubscriptionStringInput | null,\n details?: ModelSubscriptionStringInput | null,\n publishDate?: ModelSubscriptionStringInput | null,\n sunsetDate?: ModelSubscriptionStringInput | null,\n lessonCount?: ModelSubscriptionIntInput | null,\n creditHours?: ModelSubscriptionFloatInput | null,\n isFree?: ModelSubscriptionBooleanInput | null,\n lessons?: ModelSubscriptionStringInput | null,\n handoutUrl?: ModelSubscriptionStringInput | null,\n and?: Array< ModelSubscriptionCourseFilterInput | null > | null,\n or?: Array< ModelSubscriptionCourseFilterInput | null > | null,\n};\n\nexport type CreateAccountMutationVariables = {\n input: CreateAccountInput,\n condition?: ModelAccountConditionInput | null,\n};\n\nexport type CreateAccountMutation = {\n createAccount?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n items: Array< {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n items: Array< {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n items: Array< {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type UpdateAccountMutationVariables = {\n input: UpdateAccountInput,\n condition?: ModelAccountConditionInput | null,\n};\n\nexport type UpdateAccountMutation = {\n updateAccount?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n items: Array< {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n items: Array< {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n items: Array< {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type DeleteAccountMutationVariables = {\n input: DeleteAccountInput,\n condition?: ModelAccountConditionInput | null,\n};\n\nexport type DeleteAccountMutation = {\n deleteAccount?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n items: Array< {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n items: Array< {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n items: Array< {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type CreateUserMutationVariables = {\n input: CreateUserInput,\n condition?: ModelUserConditionInput | null,\n};\n\nexport type CreateUserMutation = {\n createUser?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n items: Array< {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n items: Array< {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n};\n\nexport type UpdateUserMutationVariables = {\n input: UpdateUserInput,\n condition?: ModelUserConditionInput | null,\n};\n\nexport type UpdateUserMutation = {\n updateUser?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n items: Array< {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n items: Array< {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n};\n\nexport type DeleteUserMutationVariables = {\n input: DeleteUserInput,\n condition?: ModelUserConditionInput | null,\n};\n\nexport type DeleteUserMutation = {\n deleteUser?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n items: Array< {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n items: Array< {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n};\n\nexport type CreateServiceGroupMutationVariables = {\n input: CreateServiceGroupInput,\n condition?: ModelServiceGroupConditionInput | null,\n};\n\nexport type CreateServiceGroupMutation = {\n createServiceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n items: Array< {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n};\n\nexport type UpdateServiceGroupMutationVariables = {\n input: UpdateServiceGroupInput,\n condition?: ModelServiceGroupConditionInput | null,\n};\n\nexport type UpdateServiceGroupMutation = {\n updateServiceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n items: Array< {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n};\n\nexport type DeleteServiceGroupMutationVariables = {\n input: DeleteServiceGroupInput,\n condition?: ModelServiceGroupConditionInput | null,\n};\n\nexport type DeleteServiceGroupMutation = {\n deleteServiceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n items: Array< {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n};\n\nexport type CreateServiceMutationVariables = {\n input: CreateServiceInput,\n condition?: ModelServiceConditionInput | null,\n};\n\nexport type CreateServiceMutation = {\n createService?: {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n serviceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type UpdateServiceMutationVariables = {\n input: UpdateServiceInput,\n condition?: ModelServiceConditionInput | null,\n};\n\nexport type UpdateServiceMutation = {\n updateService?: {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n serviceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type DeleteServiceMutationVariables = {\n input: DeleteServiceInput,\n condition?: ModelServiceConditionInput | null,\n};\n\nexport type DeleteServiceMutation = {\n deleteService?: {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n serviceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type CreateLocationMutationVariables = {\n input: CreateLocationInput,\n condition?: ModelLocationConditionInput | null,\n};\n\nexport type CreateLocationMutation = {\n createLocation?: {\n __typename: \"Location\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n organizationName: string,\n active?: boolean | null,\n name: string,\n aliases?: Array< string | null > | null,\n addressType?: AddressType | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country: string,\n latitude: number,\n longitude: number,\n } | null,\n};\n\nexport type UpdateLocationMutationVariables = {\n input: UpdateLocationInput,\n condition?: ModelLocationConditionInput | null,\n};\n\nexport type UpdateLocationMutation = {\n updateLocation?: {\n __typename: \"Location\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n organizationName: string,\n active?: boolean | null,\n name: string,\n aliases?: Array< string | null > | null,\n addressType?: AddressType | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country: string,\n latitude: number,\n longitude: number,\n } | null,\n};\n\nexport type DeleteLocationMutationVariables = {\n input: DeleteLocationInput,\n condition?: ModelLocationConditionInput | null,\n};\n\nexport type DeleteLocationMutation = {\n deleteLocation?: {\n __typename: \"Location\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n organizationName: string,\n active?: boolean | null,\n name: string,\n aliases?: Array< string | null > | null,\n addressType?: AddressType | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country: string,\n latitude: number,\n longitude: number,\n } | null,\n};\n\nexport type CreateProfileMutationVariables = {\n input: CreateProfileInput,\n condition?: ModelProfileConditionInput | null,\n};\n\nexport type CreateProfileMutation = {\n createProfile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n items: Array< {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n items: Array< {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n locationId: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n items: Array< {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n items: Array< {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n items: Array< {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n};\n\nexport type UpdateProfileMutationVariables = {\n input: UpdateProfileInput,\n condition?: ModelProfileConditionInput | null,\n};\n\nexport type UpdateProfileMutation = {\n updateProfile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n items: Array< {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n items: Array< {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n locationId: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n items: Array< {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n items: Array< {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n items: Array< {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n};\n\nexport type DeleteProfileMutationVariables = {\n input: DeleteProfileInput,\n condition?: ModelProfileConditionInput | null,\n};\n\nexport type DeleteProfileMutation = {\n deleteProfile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n items: Array< {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n items: Array< {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n locationId: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n items: Array< {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n items: Array< {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n items: Array< {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n};\n\nexport type CreateProfileLocationMutationVariables = {\n input: CreateProfileLocationInput,\n condition?: ModelProfileLocationConditionInput | null,\n};\n\nexport type CreateProfileLocationMutation = {\n createProfileLocation?: {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n locationId: string,\n } | null,\n};\n\nexport type UpdateProfileLocationMutationVariables = {\n input: UpdateProfileLocationInput,\n condition?: ModelProfileLocationConditionInput | null,\n};\n\nexport type UpdateProfileLocationMutation = {\n updateProfileLocation?: {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n locationId: string,\n } | null,\n};\n\nexport type DeleteProfileLocationMutationVariables = {\n input: DeleteProfileLocationInput,\n condition?: ModelProfileLocationConditionInput | null,\n};\n\nexport type DeleteProfileLocationMutation = {\n deleteProfileLocation?: {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n locationId: string,\n } | null,\n};\n\nexport type CreateProfileServiceMutationVariables = {\n input: CreateProfileServiceInput,\n condition?: ModelProfileServiceConditionInput | null,\n};\n\nexport type CreateProfileServiceMutation = {\n createProfileService?: {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type UpdateProfileServiceMutationVariables = {\n input: UpdateProfileServiceInput,\n condition?: ModelProfileServiceConditionInput | null,\n};\n\nexport type UpdateProfileServiceMutation = {\n updateProfileService?: {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type DeleteProfileServiceMutationVariables = {\n input: DeleteProfileServiceInput,\n condition?: ModelProfileServiceConditionInput | null,\n};\n\nexport type DeleteProfileServiceMutation = {\n deleteProfileService?: {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type CreateExperienceMutationVariables = {\n input: CreateExperienceInput,\n condition?: ModelExperienceConditionInput | null,\n};\n\nexport type CreateExperienceMutation = {\n createExperience?: {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null,\n};\n\nexport type UpdateExperienceMutationVariables = {\n input: UpdateExperienceInput,\n condition?: ModelExperienceConditionInput | null,\n};\n\nexport type UpdateExperienceMutation = {\n updateExperience?: {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null,\n};\n\nexport type DeleteExperienceMutationVariables = {\n input: DeleteExperienceInput,\n condition?: ModelExperienceConditionInput | null,\n};\n\nexport type DeleteExperienceMutation = {\n deleteExperience?: {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null,\n};\n\nexport type CreateCertificationMutationVariables = {\n input: CreateCertificationInput,\n condition?: ModelCertificationConditionInput | null,\n};\n\nexport type CreateCertificationMutation = {\n createCertification?: {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null,\n};\n\nexport type UpdateCertificationMutationVariables = {\n input: UpdateCertificationInput,\n condition?: ModelCertificationConditionInput | null,\n};\n\nexport type UpdateCertificationMutation = {\n updateCertification?: {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null,\n};\n\nexport type DeleteCertificationMutationVariables = {\n input: DeleteCertificationInput,\n condition?: ModelCertificationConditionInput | null,\n};\n\nexport type DeleteCertificationMutation = {\n deleteCertification?: {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null,\n};\n\nexport type CreateCertificationTypeMutationVariables = {\n input: CreateCertificationTypeInput,\n condition?: ModelCertificationTypeConditionInput | null,\n};\n\nexport type CreateCertificationTypeMutation = {\n createCertificationType?: {\n __typename: \"CertificationType\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n active: boolean,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type UpdateCertificationTypeMutationVariables = {\n input: UpdateCertificationTypeInput,\n condition?: ModelCertificationTypeConditionInput | null,\n};\n\nexport type UpdateCertificationTypeMutation = {\n updateCertificationType?: {\n __typename: \"CertificationType\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n active: boolean,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type DeleteCertificationTypeMutationVariables = {\n input: DeleteCertificationTypeInput,\n condition?: ModelCertificationTypeConditionInput | null,\n};\n\nexport type DeleteCertificationTypeMutation = {\n deleteCertificationType?: {\n __typename: \"CertificationType\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n active: boolean,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type CreateAgreementMutationVariables = {\n input: CreateAgreementInput,\n condition?: ModelAgreementConditionInput | null,\n};\n\nexport type CreateAgreementMutation = {\n createAgreement?: {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null,\n};\n\nexport type UpdateAgreementMutationVariables = {\n input: UpdateAgreementInput,\n condition?: ModelAgreementConditionInput | null,\n};\n\nexport type UpdateAgreementMutation = {\n updateAgreement?: {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null,\n};\n\nexport type DeleteAgreementMutationVariables = {\n input: DeleteAgreementInput,\n condition?: ModelAgreementConditionInput | null,\n};\n\nexport type DeleteAgreementMutation = {\n deleteAgreement?: {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null,\n};\n\nexport type CreateEducationMutationVariables = {\n input: CreateEducationInput,\n condition?: ModelEducationConditionInput | null,\n};\n\nexport type CreateEducationMutation = {\n createEducation?: {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null,\n};\n\nexport type UpdateEducationMutationVariables = {\n input: UpdateEducationInput,\n condition?: ModelEducationConditionInput | null,\n};\n\nexport type UpdateEducationMutation = {\n updateEducation?: {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null,\n};\n\nexport type DeleteEducationMutationVariables = {\n input: DeleteEducationInput,\n condition?: ModelEducationConditionInput | null,\n};\n\nexport type DeleteEducationMutation = {\n deleteEducation?: {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null,\n};\n\nexport type CreateServiceRequestMutationVariables = {\n input: CreateServiceRequestInput,\n condition?: ModelServiceRequestConditionInput | null,\n};\n\nexport type CreateServiceRequestMutation = {\n createServiceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type UpdateServiceRequestMutationVariables = {\n input: UpdateServiceRequestInput,\n condition?: ModelServiceRequestConditionInput | null,\n};\n\nexport type UpdateServiceRequestMutation = {\n updateServiceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type DeleteServiceRequestMutationVariables = {\n input: DeleteServiceRequestInput,\n condition?: ModelServiceRequestConditionInput | null,\n};\n\nexport type DeleteServiceRequestMutation = {\n deleteServiceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type CreateContractMutationVariables = {\n input: CreateContractInput,\n condition?: ModelContractConditionInput | null,\n};\n\nexport type CreateContractMutation = {\n createContract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type UpdateContractMutationVariables = {\n input: UpdateContractInput,\n condition?: ModelContractConditionInput | null,\n};\n\nexport type UpdateContractMutation = {\n updateContract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type DeleteContractMutationVariables = {\n input: DeleteContractInput,\n condition?: ModelContractConditionInput | null,\n};\n\nexport type DeleteContractMutation = {\n deleteContract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type CreateJobPostMutationVariables = {\n input: CreateJobPostInput,\n condition?: ModelJobPostConditionInput | null,\n};\n\nexport type CreateJobPostMutation = {\n createJobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n items: Array< {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n accountId: string,\n profileId: string,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n};\n\nexport type UpdateJobPostMutationVariables = {\n input: UpdateJobPostInput,\n condition?: ModelJobPostConditionInput | null,\n};\n\nexport type UpdateJobPostMutation = {\n updateJobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n items: Array< {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n accountId: string,\n profileId: string,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n};\n\nexport type DeleteJobPostMutationVariables = {\n input: DeleteJobPostInput,\n condition?: ModelJobPostConditionInput | null,\n};\n\nexport type DeleteJobPostMutation = {\n deleteJobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n items: Array< {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n accountId: string,\n profileId: string,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n};\n\nexport type CreateJobInterestMutationVariables = {\n input: CreateJobInterestInput,\n condition?: ModelJobInterestConditionInput | null,\n};\n\nexport type CreateJobInterestMutation = {\n createJobInterest?: {\n __typename: \"JobInterest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n jobPostId: string,\n ranking?: number | null,\n status?: JobInterestStatus | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null,\n};\n\nexport type UpdateJobInterestMutationVariables = {\n input: UpdateJobInterestInput,\n condition?: ModelJobInterestConditionInput | null,\n};\n\nexport type UpdateJobInterestMutation = {\n updateJobInterest?: {\n __typename: \"JobInterest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n jobPostId: string,\n ranking?: number | null,\n status?: JobInterestStatus | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null,\n};\n\nexport type DeleteJobInterestMutationVariables = {\n input: DeleteJobInterestInput,\n condition?: ModelJobInterestConditionInput | null,\n};\n\nexport type DeleteJobInterestMutation = {\n deleteJobInterest?: {\n __typename: \"JobInterest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n jobPostId: string,\n ranking?: number | null,\n status?: JobInterestStatus | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null,\n};\n\nexport type CreateJobCandidateMutationVariables = {\n input: CreateJobCandidateInput,\n condition?: ModelJobCandidateConditionInput | null,\n};\n\nexport type CreateJobCandidateMutation = {\n createJobCandidate?: {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n jobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null,\n};\n\nexport type UpdateJobCandidateMutationVariables = {\n input: UpdateJobCandidateInput,\n condition?: ModelJobCandidateConditionInput | null,\n};\n\nexport type UpdateJobCandidateMutation = {\n updateJobCandidate?: {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n jobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null,\n};\n\nexport type DeleteJobCandidateMutationVariables = {\n input: DeleteJobCandidateInput,\n condition?: ModelJobCandidateConditionInput | null,\n};\n\nexport type DeleteJobCandidateMutation = {\n deleteJobCandidate?: {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n jobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null,\n};\n\nexport type CreateUserActivityMutationVariables = {\n input: CreateUserActivityInput,\n condition?: ModelUserActivityConditionInput | null,\n};\n\nexport type CreateUserActivityMutation = {\n createUserActivity?: {\n __typename: \"UserActivity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n subjectType: SubjectType,\n subjectId: string,\n activityType: string,\n actorId: string,\n actorName?: string | null,\n accountId: string,\n details?: string | null,\n } | null,\n};\n\nexport type UpdateUserActivityMutationVariables = {\n input: UpdateUserActivityInput,\n condition?: ModelUserActivityConditionInput | null,\n};\n\nexport type UpdateUserActivityMutation = {\n updateUserActivity?: {\n __typename: \"UserActivity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n subjectType: SubjectType,\n subjectId: string,\n activityType: string,\n actorId: string,\n actorName?: string | null,\n accountId: string,\n details?: string | null,\n } | null,\n};\n\nexport type DeleteUserActivityMutationVariables = {\n input: DeleteUserActivityInput,\n condition?: ModelUserActivityConditionInput | null,\n};\n\nexport type DeleteUserActivityMutation = {\n deleteUserActivity?: {\n __typename: \"UserActivity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n subjectType: SubjectType,\n subjectId: string,\n activityType: string,\n actorId: string,\n actorName?: string | null,\n accountId: string,\n details?: string | null,\n } | null,\n};\n\nexport type CreateCourseMutationVariables = {\n input: CreateCourseInput,\n condition?: ModelCourseConditionInput | null,\n};\n\nexport type CreateCourseMutation = {\n createCourse?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type UpdateCourseMutationVariables = {\n input: UpdateCourseInput,\n condition?: ModelCourseConditionInput | null,\n};\n\nexport type UpdateCourseMutation = {\n updateCourse?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type DeleteCourseMutationVariables = {\n input: DeleteCourseInput,\n condition?: ModelCourseConditionInput | null,\n};\n\nexport type DeleteCourseMutation = {\n deleteCourse?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type CreateLessonMutationVariables = {\n input: CreateLessonInput,\n condition?: ModelLessonConditionInput | null,\n};\n\nexport type CreateLessonMutation = {\n createLesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n items: Array< {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type UpdateLessonMutationVariables = {\n input: UpdateLessonInput,\n condition?: ModelLessonConditionInput | null,\n};\n\nexport type UpdateLessonMutation = {\n updateLesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n items: Array< {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type DeleteLessonMutationVariables = {\n input: DeleteLessonInput,\n condition?: ModelLessonConditionInput | null,\n};\n\nexport type DeleteLessonMutation = {\n deleteLesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n items: Array< {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type CreateQuestionMutationVariables = {\n input: CreateQuestionInput,\n condition?: ModelQuestionConditionInput | null,\n};\n\nexport type CreateQuestionMutation = {\n createQuestion?: {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n lesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null,\n};\n\nexport type UpdateQuestionMutationVariables = {\n input: UpdateQuestionInput,\n condition?: ModelQuestionConditionInput | null,\n};\n\nexport type UpdateQuestionMutation = {\n updateQuestion?: {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n lesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null,\n};\n\nexport type DeleteQuestionMutationVariables = {\n input: DeleteQuestionInput,\n condition?: ModelQuestionConditionInput | null,\n};\n\nexport type DeleteQuestionMutation = {\n deleteQuestion?: {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n lesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null,\n};\n\nexport type CreateClassMutationVariables = {\n input: CreateClassInput,\n condition?: ModelClassConditionInput | null,\n};\n\nexport type CreateClassMutation = {\n createClass?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type UpdateClassMutationVariables = {\n input: UpdateClassInput,\n condition?: ModelClassConditionInput | null,\n};\n\nexport type UpdateClassMutation = {\n updateClass?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type DeleteClassMutationVariables = {\n input: DeleteClassInput,\n condition?: ModelClassConditionInput | null,\n};\n\nexport type DeleteClassMutation = {\n deleteClass?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type CreateRegistrationMutationVariables = {\n input: CreateRegistrationInput,\n condition?: ModelRegistrationConditionInput | null,\n};\n\nexport type CreateRegistrationMutation = {\n createRegistration?: {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n class?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null,\n};\n\nexport type UpdateRegistrationMutationVariables = {\n input: UpdateRegistrationInput,\n condition?: ModelRegistrationConditionInput | null,\n};\n\nexport type UpdateRegistrationMutation = {\n updateRegistration?: {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n class?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null,\n};\n\nexport type DeleteRegistrationMutationVariables = {\n input: DeleteRegistrationInput,\n condition?: ModelRegistrationConditionInput | null,\n};\n\nexport type DeleteRegistrationMutation = {\n deleteRegistration?: {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n class?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null,\n};\n\nexport type CreateActivityMutationVariables = {\n input: CreateActivityInput,\n condition?: ModelActivityConditionInput | null,\n};\n\nexport type CreateActivityMutation = {\n createActivity?: {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n },\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null,\n};\n\nexport type UpdateActivityMutationVariables = {\n input: UpdateActivityInput,\n condition?: ModelActivityConditionInput | null,\n};\n\nexport type UpdateActivityMutation = {\n updateActivity?: {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n },\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null,\n};\n\nexport type DeleteActivityMutationVariables = {\n input: DeleteActivityInput,\n condition?: ModelActivityConditionInput | null,\n};\n\nexport type DeleteActivityMutation = {\n deleteActivity?: {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n },\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null,\n};\n\nexport type GetUserQueryVariables = {\n id: string,\n};\n\nexport type GetUserQuery = {\n getUser?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n items: Array< {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n items: Array< {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n};\n\nexport type ListUsersQueryVariables = {\n id?: string | null,\n filter?: ModelUserFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListUsersQuery = {\n listUsers?: {\n __typename: \"ModelUserConnection\",\n items: Array< {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetAgreementQueryVariables = {\n id: string,\n};\n\nexport type GetAgreementQuery = {\n getAgreement?: {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null,\n};\n\nexport type ListAgreementsQueryVariables = {\n id?: string | null,\n filter?: ModelAgreementFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListAgreementsQuery = {\n listAgreements?: {\n __typename: \"ModelAgreementConnection\",\n items: Array< {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetJobInterestQueryVariables = {\n id: string,\n};\n\nexport type GetJobInterestQuery = {\n getJobInterest?: {\n __typename: \"JobInterest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n jobPostId: string,\n ranking?: number | null,\n status?: JobInterestStatus | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null,\n};\n\nexport type ListJobInterestsQueryVariables = {\n id?: string | null,\n filter?: ModelJobInterestFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListJobInterestsQuery = {\n listJobInterests?: {\n __typename: \"ModelJobInterestConnection\",\n items: Array< {\n __typename: \"JobInterest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n jobPostId: string,\n ranking?: number | null,\n status?: JobInterestStatus | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetJobCandidateQueryVariables = {\n id: string,\n};\n\nexport type GetJobCandidateQuery = {\n getJobCandidate?: {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n jobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null,\n};\n\nexport type ListJobCandidatesQueryVariables = {\n id?: string | null,\n filter?: ModelJobCandidateFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListJobCandidatesQuery = {\n listJobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n items: Array< {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n jobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetUserActivityQueryVariables = {\n id: string,\n};\n\nexport type GetUserActivityQuery = {\n getUserActivity?: {\n __typename: \"UserActivity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n subjectType: SubjectType,\n subjectId: string,\n activityType: string,\n actorId: string,\n actorName?: string | null,\n accountId: string,\n details?: string | null,\n } | null,\n};\n\nexport type ListUserActivitiesQueryVariables = {\n id?: string | null,\n filter?: ModelUserActivityFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListUserActivitiesQuery = {\n listUserActivities?: {\n __typename: \"ModelUserActivityConnection\",\n items: Array< {\n __typename: \"UserActivity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n subjectType: SubjectType,\n subjectId: string,\n activityType: string,\n actorId: string,\n actorName?: string | null,\n accountId: string,\n details?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetLessonQueryVariables = {\n id: string,\n};\n\nexport type GetLessonQuery = {\n getLesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n items: Array< {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type ListLessonsQueryVariables = {\n id?: string | null,\n filter?: ModelLessonFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListLessonsQuery = {\n listLessons?: {\n __typename: \"ModelLessonConnection\",\n items: Array< {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n nextToken?: string | null,\n } | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetQuestionQueryVariables = {\n id: string,\n};\n\nexport type GetQuestionQuery = {\n getQuestion?: {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n lesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null,\n};\n\nexport type ListQuestionsQueryVariables = {\n id?: string | null,\n filter?: ModelQuestionFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListQuestionsQuery = {\n listQuestions?: {\n __typename: \"ModelQuestionConnection\",\n items: Array< {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n lesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n } | null,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetClassQueryVariables = {\n id: string,\n};\n\nexport type GetClassQuery = {\n getClass?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type ListClassesQueryVariables = {\n id?: string | null,\n filter?: ModelClassFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListClassesQuery = {\n listClasses?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetRegistrationQueryVariables = {\n id: string,\n};\n\nexport type GetRegistrationQuery = {\n getRegistration?: {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n class?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null,\n};\n\nexport type ListRegistrationsQueryVariables = {\n id?: string | null,\n filter?: ModelRegistrationFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListRegistrationsQuery = {\n listRegistrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n class?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetActivityQueryVariables = {\n id: string,\n};\n\nexport type GetActivityQuery = {\n getActivity?: {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n },\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null,\n};\n\nexport type ListActivitiesQueryVariables = {\n id?: string | null,\n filter?: ModelActivityFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListActivitiesQuery = {\n listActivities?: {\n __typename: \"ModelActivityConnection\",\n items: Array< {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n },\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListUsersByAccountQueryVariables = {\n accountId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelUserFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListUsersByAccountQuery = {\n listUsersByAccount?: {\n __typename: \"ModelUserConnection\",\n items: Array< {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListUsersByRoleAndAccountQueryVariables = {\n role: UserRole,\n accountId?: ModelIDKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelUserFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListUsersByRoleAndAccountQuery = {\n listUsersByRoleAndAccount?: {\n __typename: \"ModelUserConnection\",\n items: Array< {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListAgreementsByUserQueryVariables = {\n userId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelAgreementFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListAgreementsByUserQuery = {\n listAgreementsByUser?: {\n __typename: \"ModelAgreementConnection\",\n items: Array< {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListAgreementsByAccountQueryVariables = {\n accountId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelAgreementFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListAgreementsByAccountQuery = {\n listAgreementsByAccount?: {\n __typename: \"ModelAgreementConnection\",\n items: Array< {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListJobInterestsByUserQueryVariables = {\n userId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelJobInterestFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListJobInterestsByUserQuery = {\n listJobInterestsByUser?: {\n __typename: \"ModelJobInterestConnection\",\n items: Array< {\n __typename: \"JobInterest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n jobPostId: string,\n ranking?: number | null,\n status?: JobInterestStatus | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListJobInterestsByJobPostQueryVariables = {\n jobPostId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelJobInterestFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListJobInterestsByJobPostQuery = {\n listJobInterestsByJobPost?: {\n __typename: \"ModelJobInterestConnection\",\n items: Array< {\n __typename: \"JobInterest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n jobPostId: string,\n ranking?: number | null,\n status?: JobInterestStatus | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListJobCandidatesByJobPostQueryVariables = {\n jobPostId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelJobCandidateFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListJobCandidatesByJobPostQuery = {\n listJobCandidatesByJobPost?: {\n __typename: \"ModelJobCandidateConnection\",\n items: Array< {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n jobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListJobCandidatesByAccountQueryVariables = {\n accountId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelJobCandidateFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListJobCandidatesByAccountQuery = {\n listJobCandidatesByAccount?: {\n __typename: \"ModelJobCandidateConnection\",\n items: Array< {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n jobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListJobCandidatesByProfileQueryVariables = {\n profileId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelJobCandidateFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListJobCandidatesByProfileQuery = {\n listJobCandidatesByProfile?: {\n __typename: \"ModelJobCandidateConnection\",\n items: Array< {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n jobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListUserActivityByUserQueryVariables = {\n userId: string,\n createdAt?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelUserActivityFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListUserActivityByUserQuery = {\n listUserActivityByUser?: {\n __typename: \"ModelUserActivityConnection\",\n items: Array< {\n __typename: \"UserActivity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n subjectType: SubjectType,\n subjectId: string,\n activityType: string,\n actorId: string,\n actorName?: string | null,\n accountId: string,\n details?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListUserActivityBySubjectQueryVariables = {\n subjectId: string,\n createdAt?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelUserActivityFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListUserActivityBySubjectQuery = {\n listUserActivityBySubject?: {\n __typename: \"ModelUserActivityConnection\",\n items: Array< {\n __typename: \"UserActivity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n subjectType: SubjectType,\n subjectId: string,\n activityType: string,\n actorId: string,\n actorName?: string | null,\n accountId: string,\n details?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListClasesByCourseQueryVariables = {\n courseId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelClassFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListClasesByCourseQuery = {\n listClasesByCourse?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListClassesByAccountQueryVariables = {\n accountId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelClassFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListClassesByAccountQuery = {\n listClassesByAccount?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListRegistrationsByClassQueryVariables = {\n classId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelRegistrationFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListRegistrationsByClassQuery = {\n listRegistrationsByClass?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n class?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListRegistrationsByUserQueryVariables = {\n userId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelRegistrationFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListRegistrationsByUserQuery = {\n listRegistrationsByUser?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n class?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListActivityByDateQueryVariables = {\n activityDate: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelActivityFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListActivityByDateQuery = {\n listActivityByDate?: {\n __typename: \"ModelActivityConnection\",\n items: Array< {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n },\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetAccountQueryVariables = {\n id: string,\n};\n\nexport type GetAccountQuery = {\n getAccount?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n items: Array< {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n items: Array< {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n items: Array< {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type ListAccountsQueryVariables = {\n id?: string | null,\n filter?: ModelAccountFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListAccountsQuery = {\n listAccounts?: {\n __typename: \"ModelAccountConnection\",\n items: Array< {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetServiceGroupQueryVariables = {\n id: string,\n};\n\nexport type GetServiceGroupQuery = {\n getServiceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n items: Array< {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n};\n\nexport type ListServiceGroupsQueryVariables = {\n id?: string | null,\n filter?: ModelServiceGroupFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListServiceGroupsQuery = {\n listServiceGroups?: {\n __typename: \"ModelServiceGroupConnection\",\n items: Array< {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetServiceQueryVariables = {\n id: string,\n};\n\nexport type GetServiceQuery = {\n getService?: {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n serviceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type ListServicesQueryVariables = {\n id?: string | null,\n filter?: ModelServiceFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListServicesQuery = {\n listServices?: {\n __typename: \"ModelServiceConnection\",\n items: Array< {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n serviceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetLocationQueryVariables = {\n id: string,\n};\n\nexport type GetLocationQuery = {\n getLocation?: {\n __typename: \"Location\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n organizationName: string,\n active?: boolean | null,\n name: string,\n aliases?: Array< string | null > | null,\n addressType?: AddressType | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country: string,\n latitude: number,\n longitude: number,\n } | null,\n};\n\nexport type ListLocationsQueryVariables = {\n id?: string | null,\n filter?: ModelLocationFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListLocationsQuery = {\n listLocations?: {\n __typename: \"ModelLocationConnection\",\n items: Array< {\n __typename: \"Location\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n organizationName: string,\n active?: boolean | null,\n name: string,\n aliases?: Array< string | null > | null,\n addressType?: AddressType | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country: string,\n latitude: number,\n longitude: number,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetProfileQueryVariables = {\n id: string,\n};\n\nexport type GetProfileQuery = {\n getProfile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n items: Array< {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n items: Array< {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n locationId: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n items: Array< {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n items: Array< {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n items: Array< {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n};\n\nexport type ListProfilesQueryVariables = {\n id?: string | null,\n filter?: ModelProfileFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListProfilesQuery = {\n listProfiles?: {\n __typename: \"ModelProfileConnection\",\n items: Array< {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListProfilesByAliasQueryVariables = {\n alias: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelProfileFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListProfilesByAliasQuery = {\n listProfilesByAlias?: {\n __typename: \"ModelProfileConnection\",\n items: Array< {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListProfilesByUserQueryVariables = {\n userId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelProfileFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListProfilesByUserQuery = {\n listProfilesByUser?: {\n __typename: \"ModelProfileConnection\",\n items: Array< {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetProfileLocationQueryVariables = {\n id: string,\n};\n\nexport type GetProfileLocationQuery = {\n getProfileLocation?: {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n locationId: string,\n } | null,\n};\n\nexport type ListProfileLocationsQueryVariables = {\n id?: string | null,\n filter?: ModelProfileLocationFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListProfileLocationsQuery = {\n listProfileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n items: Array< {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n locationId: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListLocationsByProfileQueryVariables = {\n profileId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelProfileLocationFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListLocationsByProfileQuery = {\n listLocationsByProfile?: {\n __typename: \"ModelProfileLocationConnection\",\n items: Array< {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n locationId: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListProfilesByLocationQueryVariables = {\n locationId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelProfileLocationFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListProfilesByLocationQuery = {\n listProfilesByLocation?: {\n __typename: \"ModelProfileLocationConnection\",\n items: Array< {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n locationId: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetProfileServiceQueryVariables = {\n id: string,\n};\n\nexport type GetProfileServiceQuery = {\n getProfileService?: {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type ListProfileServicesQueryVariables = {\n id?: string | null,\n filter?: ModelProfileServiceFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListProfileServicesQuery = {\n listProfileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n items: Array< {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListServicesByProfileQueryVariables = {\n profileId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelProfileServiceFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListServicesByProfileQuery = {\n listServicesByProfile?: {\n __typename: \"ModelProfileServiceConnection\",\n items: Array< {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListProfilesByServiceQueryVariables = {\n serviceId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelProfileServiceFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListProfilesByServiceQuery = {\n listProfilesByService?: {\n __typename: \"ModelProfileServiceConnection\",\n items: Array< {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetExperienceQueryVariables = {\n id: string,\n};\n\nexport type GetExperienceQuery = {\n getExperience?: {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null,\n};\n\nexport type ListExperiencesQueryVariables = {\n id?: string | null,\n filter?: ModelExperienceFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListExperiencesQuery = {\n listExperiences?: {\n __typename: \"ModelExperienceConnection\",\n items: Array< {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListExperiencesByProfileQueryVariables = {\n profileId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelExperienceFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListExperiencesByProfileQuery = {\n listExperiencesByProfile?: {\n __typename: \"ModelExperienceConnection\",\n items: Array< {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetCertificationQueryVariables = {\n id: string,\n};\n\nexport type GetCertificationQuery = {\n getCertification?: {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null,\n};\n\nexport type ListCertificationsQueryVariables = {\n id?: string | null,\n filter?: ModelCertificationFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListCertificationsQuery = {\n listCertifications?: {\n __typename: \"ModelCertificationConnection\",\n items: Array< {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListCertificationsByProfileQueryVariables = {\n profileId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelCertificationFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListCertificationsByProfileQuery = {\n listCertificationsByProfile?: {\n __typename: \"ModelCertificationConnection\",\n items: Array< {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetCertificationTypeQueryVariables = {\n id: string,\n};\n\nexport type GetCertificationTypeQuery = {\n getCertificationType?: {\n __typename: \"CertificationType\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n active: boolean,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type ListCertificationTypesQueryVariables = {\n id?: string | null,\n filter?: ModelCertificationTypeFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListCertificationTypesQuery = {\n listCertificationTypes?: {\n __typename: \"ModelCertificationTypeConnection\",\n items: Array< {\n __typename: \"CertificationType\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n active: boolean,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetEducationQueryVariables = {\n id: string,\n};\n\nexport type GetEducationQuery = {\n getEducation?: {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null,\n};\n\nexport type ListEducationsQueryVariables = {\n id?: string | null,\n filter?: ModelEducationFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListEducationsQuery = {\n listEducations?: {\n __typename: \"ModelEducationConnection\",\n items: Array< {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListEducationByProfileQueryVariables = {\n profileId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelEducationFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListEducationByProfileQuery = {\n listEducationByProfile?: {\n __typename: \"ModelEducationConnection\",\n items: Array< {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetServiceRequestQueryVariables = {\n id: string,\n};\n\nexport type GetServiceRequestQuery = {\n getServiceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type ListServiceRequestsQueryVariables = {\n id?: string | null,\n filter?: ModelServiceRequestFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListServiceRequestsQuery = {\n listServiceRequests?: {\n __typename: \"ModelServiceRequestConnection\",\n items: Array< {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListServiceRequestsByAccountQueryVariables = {\n accountId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelServiceRequestFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListServiceRequestsByAccountQuery = {\n listServiceRequestsByAccount?: {\n __typename: \"ModelServiceRequestConnection\",\n items: Array< {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetContractQueryVariables = {\n id: string,\n};\n\nexport type GetContractQuery = {\n getContract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type ListContractsQueryVariables = {\n id?: string | null,\n filter?: ModelContractFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListContractsQuery = {\n listContracts?: {\n __typename: \"ModelContractConnection\",\n items: Array< {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListContractsByAccountQueryVariables = {\n accountId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelContractFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListContractsByAccountQuery = {\n listContractsByAccount?: {\n __typename: \"ModelContractConnection\",\n items: Array< {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetJobPostQueryVariables = {\n id: string,\n};\n\nexport type GetJobPostQuery = {\n getJobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n items: Array< {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n accountId: string,\n profileId: string,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n};\n\nexport type ListJobPostsQueryVariables = {\n id?: string | null,\n filter?: ModelJobPostFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListJobPostsQuery = {\n listJobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListJobPostsByAccountQueryVariables = {\n accountId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelJobPostFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListJobPostsByAccountQuery = {\n listJobPostsByAccount?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListJobPostsByContractQueryVariables = {\n contractId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelJobPostFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListJobPostsByContractQuery = {\n listJobPostsByContract?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListJobPostsByServiceRequestQueryVariables = {\n serviceRequestId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelJobPostFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListJobPostsByServiceRequestQuery = {\n listJobPostsByServiceRequest?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListJobPostsByLocationQueryVariables = {\n locationId: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelJobPostFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListJobPostsByLocationQuery = {\n listJobPostsByLocation?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListJobPostsByServiceQueryVariables = {\n serviceId: string,\n locationId?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelJobPostFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListJobPostsByServiceQuery = {\n listJobPostsByService?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetCourseQueryVariables = {\n id: string,\n};\n\nexport type GetCourseQuery = {\n getCourse?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type ListCoursesQueryVariables = {\n id?: string | null,\n filter?: ModelCourseFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListCoursesQuery = {\n listCourses?: {\n __typename: \"ModelCourseConnection\",\n items: Array< {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type OnCreateUserSubscriptionVariables = {\n filter?: ModelSubscriptionUserFilterInput | null,\n id?: string | null,\n};\n\nexport type OnCreateUserSubscription = {\n onCreateUser?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n items: Array< {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n items: Array< {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n};\n\nexport type OnUpdateUserSubscriptionVariables = {\n filter?: ModelSubscriptionUserFilterInput | null,\n id?: string | null,\n};\n\nexport type OnUpdateUserSubscription = {\n onUpdateUser?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n items: Array< {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n items: Array< {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n};\n\nexport type OnDeleteUserSubscriptionVariables = {\n filter?: ModelSubscriptionUserFilterInput | null,\n id?: string | null,\n};\n\nexport type OnDeleteUserSubscription = {\n onDeleteUser?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n items: Array< {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n nickname?: string | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n credentials?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n items: Array< {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n};\n\nexport type OnCreateAgreementSubscriptionVariables = {\n filter?: ModelSubscriptionAgreementFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnCreateAgreementSubscription = {\n onCreateAgreement?: {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null,\n};\n\nexport type OnUpdateAgreementSubscriptionVariables = {\n filter?: ModelSubscriptionAgreementFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnUpdateAgreementSubscription = {\n onUpdateAgreement?: {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null,\n};\n\nexport type OnDeleteAgreementSubscriptionVariables = {\n filter?: ModelSubscriptionAgreementFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnDeleteAgreementSubscription = {\n onDeleteAgreement?: {\n __typename: \"Agreement\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n accountId: string,\n agreementTypes?: Array< AgreementType | null > | null,\n agreementKey?: string | null,\n } | null,\n};\n\nexport type OnCreateJobInterestSubscriptionVariables = {\n filter?: ModelSubscriptionJobInterestFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnCreateJobInterestSubscription = {\n onCreateJobInterest?: {\n __typename: \"JobInterest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n jobPostId: string,\n ranking?: number | null,\n status?: JobInterestStatus | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null,\n};\n\nexport type OnUpdateJobInterestSubscriptionVariables = {\n filter?: ModelSubscriptionJobInterestFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnUpdateJobInterestSubscription = {\n onUpdateJobInterest?: {\n __typename: \"JobInterest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n jobPostId: string,\n ranking?: number | null,\n status?: JobInterestStatus | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null,\n};\n\nexport type OnDeleteJobInterestSubscriptionVariables = {\n filter?: ModelSubscriptionJobInterestFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnDeleteJobInterestSubscription = {\n onDeleteJobInterest?: {\n __typename: \"JobInterest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n jobPostId: string,\n ranking?: number | null,\n status?: JobInterestStatus | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null,\n};\n\nexport type OnCreateJobCandidateSubscriptionVariables = {\n filter?: ModelSubscriptionJobCandidateFilterInput | null,\n};\n\nexport type OnCreateJobCandidateSubscription = {\n onCreateJobCandidate?: {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n jobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null,\n};\n\nexport type OnUpdateJobCandidateSubscriptionVariables = {\n filter?: ModelSubscriptionJobCandidateFilterInput | null,\n};\n\nexport type OnUpdateJobCandidateSubscription = {\n onUpdateJobCandidate?: {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n jobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null,\n};\n\nexport type OnDeleteJobCandidateSubscriptionVariables = {\n filter?: ModelSubscriptionJobCandidateFilterInput | null,\n};\n\nexport type OnDeleteJobCandidateSubscription = {\n onDeleteJobCandidate?: {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n jobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null,\n};\n\nexport type OnCreateUserActivitySubscriptionVariables = {\n filter?: ModelSubscriptionUserActivityFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnCreateUserActivitySubscription = {\n onCreateUserActivity?: {\n __typename: \"UserActivity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n subjectType: SubjectType,\n subjectId: string,\n activityType: string,\n actorId: string,\n actorName?: string | null,\n accountId: string,\n details?: string | null,\n } | null,\n};\n\nexport type OnUpdateUserActivitySubscriptionVariables = {\n filter?: ModelSubscriptionUserActivityFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnUpdateUserActivitySubscription = {\n onUpdateUserActivity?: {\n __typename: \"UserActivity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n subjectType: SubjectType,\n subjectId: string,\n activityType: string,\n actorId: string,\n actorName?: string | null,\n accountId: string,\n details?: string | null,\n } | null,\n};\n\nexport type OnDeleteUserActivitySubscriptionVariables = {\n filter?: ModelSubscriptionUserActivityFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnDeleteUserActivitySubscription = {\n onDeleteUserActivity?: {\n __typename: \"UserActivity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n subjectType: SubjectType,\n subjectId: string,\n activityType: string,\n actorId: string,\n actorName?: string | null,\n accountId: string,\n details?: string | null,\n } | null,\n};\n\nexport type OnCreateLessonSubscriptionVariables = {\n filter?: ModelSubscriptionLessonFilterInput | null,\n};\n\nexport type OnCreateLessonSubscription = {\n onCreateLesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n items: Array< {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnUpdateLessonSubscriptionVariables = {\n filter?: ModelSubscriptionLessonFilterInput | null,\n};\n\nexport type OnUpdateLessonSubscription = {\n onUpdateLesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n items: Array< {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnDeleteLessonSubscriptionVariables = {\n filter?: ModelSubscriptionLessonFilterInput | null,\n};\n\nexport type OnDeleteLessonSubscription = {\n onDeleteLesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n items: Array< {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnCreateQuestionSubscriptionVariables = {\n filter?: ModelSubscriptionQuestionFilterInput | null,\n};\n\nexport type OnCreateQuestionSubscription = {\n onCreateQuestion?: {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n lesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null,\n};\n\nexport type OnUpdateQuestionSubscriptionVariables = {\n filter?: ModelSubscriptionQuestionFilterInput | null,\n};\n\nexport type OnUpdateQuestionSubscription = {\n onUpdateQuestion?: {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n lesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null,\n};\n\nexport type OnDeleteQuestionSubscriptionVariables = {\n filter?: ModelSubscriptionQuestionFilterInput | null,\n};\n\nexport type OnDeleteQuestionSubscription = {\n onDeleteQuestion?: {\n __typename: \"Question\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n lessonId: string,\n lesson?: {\n __typename: \"Lesson\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n number: number,\n title: string,\n description?: string | null,\n videoUrl?: string | null,\n videoDuration?: number | null,\n questions?: {\n __typename: \"ModelQuestionConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n number?: number | null,\n question: string,\n answers?: Array< string | null > | null,\n correctAnswer?: number | null,\n lessonQuestionsId?: string | null,\n } | null,\n};\n\nexport type OnCreateClassSubscriptionVariables = {\n filter?: ModelSubscriptionClassFilterInput | null,\n ownerId?: string | null,\n};\n\nexport type OnCreateClassSubscription = {\n onCreateClass?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnUpdateClassSubscriptionVariables = {\n filter?: ModelSubscriptionClassFilterInput | null,\n ownerId?: string | null,\n};\n\nexport type OnUpdateClassSubscription = {\n onUpdateClass?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnDeleteClassSubscriptionVariables = {\n filter?: ModelSubscriptionClassFilterInput | null,\n ownerId?: string | null,\n};\n\nexport type OnDeleteClassSubscription = {\n onDeleteClass?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n items: Array< {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n userId: string,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnCreateRegistrationSubscriptionVariables = {\n filter?: ModelSubscriptionRegistrationFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnCreateRegistrationSubscription = {\n onCreateRegistration?: {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n class?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null,\n};\n\nexport type OnUpdateRegistrationSubscriptionVariables = {\n filter?: ModelSubscriptionRegistrationFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnUpdateRegistrationSubscription = {\n onUpdateRegistration?: {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n class?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null,\n};\n\nexport type OnDeleteRegistrationSubscriptionVariables = {\n filter?: ModelSubscriptionRegistrationFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnDeleteRegistrationSubscription = {\n onDeleteRegistration?: {\n __typename: \"Registration\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n classId: string,\n class?: {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n course?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n } | null,\n accountId?: string | null,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n classStatus: ClassStatus,\n classProgress: number,\n lessonNumber: number,\n lessonId?: string | null,\n lessonStatus?: LessonStatus | null,\n videoProgress?: number | null,\n answers?: Array< number | null > | null,\n score: number,\n startedAt?: string | null,\n endsAt?: string | null,\n completedAt?: string | null,\n lessonsAssigned?: number | null,\n nextAssignmentAt?: string | null,\n } | null,\n};\n\nexport type OnCreateActivitySubscriptionVariables = {\n filter?: ModelSubscriptionActivityFilterInput | null,\n};\n\nexport type OnCreateActivitySubscription = {\n onCreateActivity?: {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n },\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null,\n};\n\nexport type OnUpdateActivitySubscriptionVariables = {\n filter?: ModelSubscriptionActivityFilterInput | null,\n};\n\nexport type OnUpdateActivitySubscription = {\n onUpdateActivity?: {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n },\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null,\n};\n\nexport type OnDeleteActivitySubscriptionVariables = {\n filter?: ModelSubscriptionActivityFilterInput | null,\n};\n\nexport type OnDeleteActivitySubscription = {\n onDeleteActivity?: {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n },\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null,\n};\n\nexport type OnCreateAccountSubscriptionVariables = {\n filter?: ModelSubscriptionAccountFilterInput | null,\n ownerId?: string | null,\n};\n\nexport type OnCreateAccountSubscription = {\n onCreateAccount?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n items: Array< {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n items: Array< {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n items: Array< {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnUpdateAccountSubscriptionVariables = {\n filter?: ModelSubscriptionAccountFilterInput | null,\n ownerId?: string | null,\n};\n\nexport type OnUpdateAccountSubscription = {\n onUpdateAccount?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n items: Array< {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n items: Array< {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n items: Array< {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnDeleteAccountSubscriptionVariables = {\n filter?: ModelSubscriptionAccountFilterInput | null,\n ownerId?: string | null,\n};\n\nexport type OnDeleteAccountSubscription = {\n onDeleteAccount?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n items: Array< {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n items: Array< {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n items: Array< {\n __typename: \"Activity\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n userId: string,\n activityDate: string,\n activityType: ActivityType,\n objectId: string,\n values?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnCreateServiceGroupSubscriptionVariables = {\n filter?: ModelSubscriptionServiceGroupFilterInput | null,\n};\n\nexport type OnCreateServiceGroupSubscription = {\n onCreateServiceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n items: Array< {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n};\n\nexport type OnUpdateServiceGroupSubscriptionVariables = {\n filter?: ModelSubscriptionServiceGroupFilterInput | null,\n};\n\nexport type OnUpdateServiceGroupSubscription = {\n onUpdateServiceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n items: Array< {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n};\n\nexport type OnDeleteServiceGroupSubscriptionVariables = {\n filter?: ModelSubscriptionServiceGroupFilterInput | null,\n};\n\nexport type OnDeleteServiceGroupSubscription = {\n onDeleteServiceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n items: Array< {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n};\n\nexport type OnCreateServiceSubscriptionVariables = {\n filter?: ModelSubscriptionServiceFilterInput | null,\n};\n\nexport type OnCreateServiceSubscription = {\n onCreateService?: {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n serviceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type OnUpdateServiceSubscriptionVariables = {\n filter?: ModelSubscriptionServiceFilterInput | null,\n};\n\nexport type OnUpdateServiceSubscription = {\n onUpdateService?: {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n serviceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type OnDeleteServiceSubscriptionVariables = {\n filter?: ModelSubscriptionServiceFilterInput | null,\n};\n\nexport type OnDeleteServiceSubscription = {\n onDeleteService?: {\n __typename: \"Service\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n aliases?: Array< string | null > | null,\n active: boolean,\n serviceGroupId: string,\n serviceGroup?: {\n __typename: \"ServiceGroup\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n services?: {\n __typename: \"ModelServiceConnection\",\n nextToken?: string | null,\n } | null,\n industries?: Array< string | null > | null,\n default?: boolean | null,\n } | null,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type OnCreateLocationSubscriptionVariables = {\n filter?: ModelSubscriptionLocationFilterInput | null,\n};\n\nexport type OnCreateLocationSubscription = {\n onCreateLocation?: {\n __typename: \"Location\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n organizationName: string,\n active?: boolean | null,\n name: string,\n aliases?: Array< string | null > | null,\n addressType?: AddressType | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country: string,\n latitude: number,\n longitude: number,\n } | null,\n};\n\nexport type OnUpdateLocationSubscriptionVariables = {\n filter?: ModelSubscriptionLocationFilterInput | null,\n};\n\nexport type OnUpdateLocationSubscription = {\n onUpdateLocation?: {\n __typename: \"Location\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n organizationName: string,\n active?: boolean | null,\n name: string,\n aliases?: Array< string | null > | null,\n addressType?: AddressType | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country: string,\n latitude: number,\n longitude: number,\n } | null,\n};\n\nexport type OnDeleteLocationSubscriptionVariables = {\n filter?: ModelSubscriptionLocationFilterInput | null,\n};\n\nexport type OnDeleteLocationSubscription = {\n onDeleteLocation?: {\n __typename: \"Location\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n organizationName: string,\n active?: boolean | null,\n name: string,\n aliases?: Array< string | null > | null,\n addressType?: AddressType | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country: string,\n latitude: number,\n longitude: number,\n } | null,\n};\n\nexport type OnCreateProfileSubscriptionVariables = {\n filter?: ModelSubscriptionProfileFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnCreateProfileSubscription = {\n onCreateProfile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n items: Array< {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n items: Array< {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n locationId: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n items: Array< {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n items: Array< {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n items: Array< {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n};\n\nexport type OnUpdateProfileSubscriptionVariables = {\n filter?: ModelSubscriptionProfileFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnUpdateProfileSubscription = {\n onUpdateProfile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n items: Array< {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n items: Array< {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n locationId: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n items: Array< {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n items: Array< {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n items: Array< {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n};\n\nexport type OnDeleteProfileSubscriptionVariables = {\n filter?: ModelSubscriptionProfileFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnDeleteProfileSubscription = {\n onDeleteProfile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n profiles?: {\n __typename: \"ModelProfileConnection\",\n nextToken?: string | null,\n } | null,\n agreements?: {\n __typename: \"ModelAgreementConnection\",\n nextToken?: string | null,\n } | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n registrations?: {\n __typename: \"ModelRegistrationConnection\",\n nextToken?: string | null,\n } | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n items: Array< {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n items: Array< {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n locationId: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n items: Array< {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n items: Array< {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n items: Array< {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n};\n\nexport type OnCreateProfileLocationSubscriptionVariables = {\n filter?: ModelSubscriptionProfileLocationFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnCreateProfileLocationSubscription = {\n onCreateProfileLocation?: {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n locationId: string,\n } | null,\n};\n\nexport type OnUpdateProfileLocationSubscriptionVariables = {\n filter?: ModelSubscriptionProfileLocationFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnUpdateProfileLocationSubscription = {\n onUpdateProfileLocation?: {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n locationId: string,\n } | null,\n};\n\nexport type OnDeleteProfileLocationSubscriptionVariables = {\n filter?: ModelSubscriptionProfileLocationFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnDeleteProfileLocationSubscription = {\n onDeleteProfileLocation?: {\n __typename: \"ProfileLocation\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n locationId: string,\n } | null,\n};\n\nexport type OnCreateProfileServiceSubscriptionVariables = {\n filter?: ModelSubscriptionProfileServiceFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnCreateProfileServiceSubscription = {\n onCreateProfileService?: {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type OnUpdateProfileServiceSubscriptionVariables = {\n filter?: ModelSubscriptionProfileServiceFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnUpdateProfileServiceSubscription = {\n onUpdateProfileService?: {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type OnDeleteProfileServiceSubscriptionVariables = {\n filter?: ModelSubscriptionProfileServiceFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnDeleteProfileServiceSubscription = {\n onDeleteProfileService?: {\n __typename: \"ProfileService\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n serviceId: string,\n title?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type OnCreateExperienceSubscriptionVariables = {\n filter?: ModelSubscriptionExperienceFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnCreateExperienceSubscription = {\n onCreateExperience?: {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null,\n};\n\nexport type OnUpdateExperienceSubscriptionVariables = {\n filter?: ModelSubscriptionExperienceFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnUpdateExperienceSubscription = {\n onUpdateExperience?: {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null,\n};\n\nexport type OnDeleteExperienceSubscriptionVariables = {\n filter?: ModelSubscriptionExperienceFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnDeleteExperienceSubscription = {\n onDeleteExperience?: {\n __typename: \"Experience\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n jobTitle?: string | null,\n agencyType?: AgencyType | null,\n agencyName?: string | null,\n employerName?: string | null,\n employerLocation?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n projectNo?: string | null,\n projectName?: string | null,\n projectLocation?: string | null,\n projectDollarAmount?: number | null,\n jobDescription?: string | null,\n } | null,\n};\n\nexport type OnCreateCertificationSubscriptionVariables = {\n filter?: ModelSubscriptionCertificationFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnCreateCertificationSubscription = {\n onCreateCertification?: {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null,\n};\n\nexport type OnUpdateCertificationSubscriptionVariables = {\n filter?: ModelSubscriptionCertificationFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnUpdateCertificationSubscription = {\n onUpdateCertification?: {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null,\n};\n\nexport type OnDeleteCertificationSubscriptionVariables = {\n filter?: ModelSubscriptionCertificationFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnDeleteCertificationSubscription = {\n onDeleteCertification?: {\n __typename: \"Certification\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n certificationType: string,\n issuedAt?: string | null,\n expiresAt?: string | null,\n certificateKey?: string | null,\n } | null,\n};\n\nexport type OnCreateCertificationTypeSubscriptionVariables = {\n filter?: ModelSubscriptionCertificationTypeFilterInput | null,\n};\n\nexport type OnCreateCertificationTypeSubscription = {\n onCreateCertificationType?: {\n __typename: \"CertificationType\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n active: boolean,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type OnUpdateCertificationTypeSubscriptionVariables = {\n filter?: ModelSubscriptionCertificationTypeFilterInput | null,\n};\n\nexport type OnUpdateCertificationTypeSubscription = {\n onUpdateCertificationType?: {\n __typename: \"CertificationType\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n active: boolean,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type OnDeleteCertificationTypeSubscriptionVariables = {\n filter?: ModelSubscriptionCertificationTypeFilterInput | null,\n};\n\nexport type OnDeleteCertificationTypeSubscription = {\n onDeleteCertificationType?: {\n __typename: \"CertificationType\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n name: string,\n active: boolean,\n industries?: Array< string | null > | null,\n } | null,\n};\n\nexport type OnCreateEducationSubscriptionVariables = {\n filter?: ModelSubscriptionEducationFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnCreateEducationSubscription = {\n onCreateEducation?: {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null,\n};\n\nexport type OnUpdateEducationSubscriptionVariables = {\n filter?: ModelSubscriptionEducationFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnUpdateEducationSubscription = {\n onUpdateEducation?: {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null,\n};\n\nexport type OnDeleteEducationSubscriptionVariables = {\n filter?: ModelSubscriptionEducationFilterInput | null,\n userId?: string | null,\n};\n\nexport type OnDeleteEducationSubscription = {\n onDeleteEducation?: {\n __typename: \"Education\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n userId: string,\n profileId: string,\n profile?: {\n __typename: \"Profile\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n alias?: string | null,\n active: boolean,\n userId: string,\n user?: {\n __typename: \"User\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n active?: boolean | null,\n userStatus?: UserStatus | null,\n accountId: string,\n firstName: string,\n lastName: string,\n title?: string | null,\n email: string,\n phone?: string | null,\n role?: UserRole | null,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n industry?: string | null,\n lastActiveAt?: string | null,\n jobTitle?: string | null,\n invitedAt?: string | null,\n customerId?: string | null,\n } | null,\n nickname?: string | null,\n profileServices?: {\n __typename: \"ModelProfileServiceConnection\",\n nextToken?: string | null,\n } | null,\n profileLocations?: {\n __typename: \"ModelProfileLocationConnection\",\n nextToken?: string | null,\n } | null,\n availability?: string | null,\n availableDate?: string | null,\n desiredRate?: string | null,\n about?: string | null,\n resumeKey?: string | null,\n profileStatus: ProfileStatus,\n statusMessage?: string | null,\n notes?: string | null,\n city?: string | null,\n state?: string | null,\n country?: string | null,\n federalExperience?: number | null,\n totalExperience?: number | null,\n industries?: Array< string | null > | null,\n securityClearance?: string | null,\n securityStatus?: SecurityStatus | null,\n workSettings?: Array< WorkSetting | null > | null,\n experiences?: {\n __typename: \"ModelExperienceConnection\",\n nextToken?: string | null,\n } | null,\n education?: {\n __typename: \"ModelEducationConnection\",\n nextToken?: string | null,\n } | null,\n certifications?: {\n __typename: \"ModelCertificationConnection\",\n nextToken?: string | null,\n } | null,\n credentials?: string | null,\n } | null,\n school?: string | null,\n degree?: string | null,\n field?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n description?: string | null,\n } | null,\n};\n\nexport type OnCreateServiceRequestSubscriptionVariables = {\n filter?: ModelSubscriptionServiceRequestFilterInput | null,\n};\n\nexport type OnCreateServiceRequestSubscription = {\n onCreateServiceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnUpdateServiceRequestSubscriptionVariables = {\n filter?: ModelSubscriptionServiceRequestFilterInput | null,\n};\n\nexport type OnUpdateServiceRequestSubscription = {\n onUpdateServiceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnDeleteServiceRequestSubscriptionVariables = {\n filter?: ModelSubscriptionServiceRequestFilterInput | null,\n};\n\nexport type OnDeleteServiceRequestSubscription = {\n onDeleteServiceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnCreateContractSubscriptionVariables = {\n filter?: ModelSubscriptionContractFilterInput | null,\n};\n\nexport type OnCreateContractSubscription = {\n onCreateContract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnUpdateContractSubscriptionVariables = {\n filter?: ModelSubscriptionContractFilterInput | null,\n};\n\nexport type OnUpdateContractSubscription = {\n onUpdateContract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnDeleteContractSubscriptionVariables = {\n filter?: ModelSubscriptionContractFilterInput | null,\n};\n\nexport type OnDeleteContractSubscription = {\n onDeleteContract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n items: Array< {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n contractId?: string | null,\n serviceRequestId?: string | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnCreateJobPostSubscriptionVariables = {\n filter?: ModelSubscriptionJobPostFilterInput | null,\n};\n\nexport type OnCreateJobPostSubscription = {\n onCreateJobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n items: Array< {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n accountId: string,\n profileId: string,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n};\n\nexport type OnUpdateJobPostSubscriptionVariables = {\n filter?: ModelSubscriptionJobPostFilterInput | null,\n};\n\nexport type OnUpdateJobPostSubscription = {\n onUpdateJobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n items: Array< {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n accountId: string,\n profileId: string,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n};\n\nexport type OnDeleteJobPostSubscriptionVariables = {\n filter?: ModelSubscriptionJobPostFilterInput | null,\n};\n\nexport type OnDeleteJobPostSubscription = {\n onDeleteJobPost?: {\n __typename: \"JobPost\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n users?: {\n __typename: \"ModelUserConnection\",\n nextToken?: string | null,\n } | null,\n contracts?: {\n __typename: \"ModelContractConnection\",\n nextToken?: string | null,\n } | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n nextToken?: string | null,\n } | null,\n activity?: {\n __typename: \"ModelActivityConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n contractId?: string | null,\n contract?: {\n __typename: \"Contract\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n issuedBy?: string | null,\n name: string,\n number?: string | null,\n locationId?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n perDiem?: number | null,\n value?: string | null,\n category?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n serviceRequestId?: string | null,\n serviceRequest?: {\n __typename: \"ServiceRequest\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n accountId: string,\n account?: {\n __typename: \"Account\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n ownerId?: string | null,\n name: string,\n address?: string | null,\n city?: string | null,\n state?: string | null,\n postalCode?: string | null,\n country?: string | null,\n active?: boolean | null,\n dunsNumber?: string | null,\n cageCode?: string | null,\n naicsCode?: string | null,\n sicCode?: string | null,\n socioEconomicDesignation?: string | null,\n fein?: string | null,\n accountStatus?: AccountStatus | null,\n phone?: string | null,\n webUrl?: string | null,\n accountType?: AccountType | null,\n accountSize?: AccountSize | null,\n customerId?: string | null,\n industries?: Array< string | null > | null,\n } | null,\n serviceRequestType: ServiceRequestType,\n name: string,\n status?: string | null,\n completedDate?: string | null,\n jobPosts?: {\n __typename: \"ModelJobPostConnection\",\n nextToken?: string | null,\n } | null,\n } | null,\n locationId?: string | null,\n serviceId: string,\n industries?: Array< string | null > | null,\n title?: string | null,\n summary: string,\n description?: string | null,\n startDate?: string | null,\n endDate?: string | null,\n openDate?: string | null,\n filledDate?: string | null,\n closedDate?: string | null,\n employmentType: EmploymentType,\n annualSalaryLow?: number | null,\n annualSalaryHigh?: number | null,\n jobCandidates?: {\n __typename: \"ModelJobCandidateConnection\",\n items: Array< {\n __typename: \"JobCandidate\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n jobPostId: string,\n accountId: string,\n profileId: string,\n status?: JobCandidateStatus | null,\n ranking?: number | null,\n notes?: string | null,\n message?: string | null,\n unlocked?: boolean | null,\n application?: string | null,\n origin?: RecordUpdateOrigin | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n statusId?: string | null,\n status?: JobPostStatus | null,\n openings?: number | null,\n invoiceId?: string | null,\n jobPostType?: JobPostType | null,\n hiringDate?: string | null,\n unlocksAvailable?: number | null,\n featured?: boolean | null,\n questions?: string | null,\n workSettings?: Array< WorkSetting | null > | null,\n securityClearance?: string | null,\n } | null,\n};\n\nexport type OnCreateCourseSubscriptionVariables = {\n filter?: ModelSubscriptionCourseFilterInput | null,\n};\n\nexport type OnCreateCourseSubscription = {\n onCreateCourse?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnUpdateCourseSubscriptionVariables = {\n filter?: ModelSubscriptionCourseFilterInput | null,\n};\n\nexport type OnUpdateCourseSubscription = {\n onUpdateCourse?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n\nexport type OnDeleteCourseSubscriptionVariables = {\n filter?: ModelSubscriptionCourseFilterInput | null,\n};\n\nexport type OnDeleteCourseSubscription = {\n onDeleteCourse?: {\n __typename: \"Course\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n title: string,\n description?: string | null,\n coverUrl?: string | null,\n details?: string | null,\n publishDate?: string | null,\n sunsetDate?: string | null,\n lessonCount?: number | null,\n creditHours?: number | null,\n isFree?: boolean | null,\n lessons?: string | null,\n handoutUrl?: string | null,\n classes?: {\n __typename: \"ModelClassConnection\",\n items: Array< {\n __typename: \"Class\",\n id: string,\n createdAt?: string | null,\n updatedAt?: string | null,\n courseId: string,\n accountId?: string | null,\n ownerId?: string | null,\n userId?: string | null,\n termBegin?: string | null,\n termEnd?: string | null,\n seatsPurchased?: number | null,\n seatsFilled?: number | null,\n couponCode?: string | null,\n assignmentSchedule?: AssignmentSchedule | null,\n } | null >,\n nextToken?: string | null,\n } | null,\n } | null,\n};\n","import * as React from 'react';\nimport Button from '@material-ui/core/Button';\nimport { createStyles, Theme, WithStyles, withStyles } from '@material-ui/core/styles'\n\nconst styles = (theme: Theme) => createStyles({\n primaryDialogButton: {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n marginTop: 0,\n minWidth: 80,\n boxShadow: 'rgba(0, 0, 0, 0.25) 0px 1px 3px 0px',\n paddingTop: theme.spacing(0.625),\n paddingBottom: theme.spacing(0.625)\n // \"&:hover\": {\n // color: theme.palette.primary.contrastText,\n // backgroundColor: theme.palette.primary.light,\n // }\n },\n secondaryDialogButton: {\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.primary.main,\n marginTop: 0,\n minWidth: 80,\n boxShadow: 'rgba(0, 0, 0, 0.25) 0px 1px 3px 0px',\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n \"&:hover\": {\n // color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.grey[300]\n }\n },\n tertiaryDialogButton: {\n fontWeight: 'bold',\n color: theme.palette.primary.main,\n marginTop: 0,\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n backgroundColor: theme.palette.grey[50],\n boxShadow: 'rgba(0, 0, 0, 0.25) 0px 1px 3px 0px',\n \"&:hover\": {\n // color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.grey[400]\n }\n }\n})\n\ninterface IDialogButtonProps {\n onClick?: any\n type?: string, \n variant?: any\n disabled?: boolean\n fullWidth?: boolean\n customClassName?: string\n id?: string\n}\n \nclass DialogButton extends React.Component & IDialogButtonProps> {\n render() {\n const { classes, onClick, disabled, fullWidth } = this.props\n\n const typeProp = this.props.type || \"button\"\n const variantProp = this.props.variant || \"contained\"\n const childrenProp = this.props.children || 'Button'\n\n let variant: any\n let className: any = this.props.customClassName ? this.props.customClassName : null\n let color: any\n let type: any\n\n switch (variantProp) {\n case \"primary\":\n variant = \"contained\"\n className = className ? className : classes.primaryDialogButton\n color = \"primary\"\n type = this.props.type || \"submit\"\n break\n case \"secondary\":\n variant = \"outlined\"\n className = className ? className : classes.secondaryDialogButton\n color = \"primary\"\n type = typeProp\n break;\n case \"tertiary\":\n variant = \"text\"\n className = className ? className : classes.tertiaryDialogButton\n color = \"primary\"\n type = typeProp\n break;\n default:\n variant = variantProp\n className = className ? className : classes.primaryDialogButton\n color = \"primary\"\n type = typeProp\n }\n \n return (\n \n )\n }\n}\n\nexport default withStyles(styles)(DialogButton)\n","import * as React from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\nimport { RouteComponentProps } from '@reach/router'\nimport DialogButton from '../form/DialogButton'\nimport {inject, observer} from \"mobx-react\";\nimport Confirm from \"./Confirm\";\n\nconst styles = (theme: Theme) => createStyles({\n dialogActions: {\n justifyContent: \"space-evenly\",\n paddingBottom: \"16px\"\n }\n})\n\ninterface IConfirmDialog {\n confirm?: Confirm\n}\n\n@inject(\"confirm\")\n@observer\nclass ConfirmDialog extends React.Component & RouteComponentProps & IConfirmDialog> {\n\n onCancel = () => {\n if (this.props.confirm) {\n this.props.confirm.cancel();\n }\n };\n\n onSubmit = (event: any) => {\n if (this.props.confirm) {\n this.props.confirm.confirm()\n }\n }\n\n render() {\n const { classes, confirm } = this.props\n\n const title = (confirm && confirm.title) ? confirm.title : \"Confirm\"\n let content\n if (confirm) {\n if (typeof confirm.content === \"string\") {\n content = \n {confirm.content}\n \n } else {\n content = confirm.content\n }\n }\n const confirmLabel = (confirm && confirm.buttons && confirm.buttons[0]) ? confirm.buttons[0] : \"Confirm\"\n const cancelLabel = (confirm && confirm.buttons && confirm.buttons[1]) ? confirm.buttons[1] : \"Cancel\"\n\n let dialog = null\n if (confirm && confirm.open) {\n dialog = \n {title}\n \n {content}\n \n \n \n {confirmLabel}\n \n {(!confirm.buttons || confirm.buttons[1]) &&\n \n {cancelLabel}\n \n }\n \n \n }\n\n return (dialog)\n }\n}\n\nexport default withStyles(styles)(ConfirmDialog)\n","import * as React from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\nimport { RouteComponentProps } from '@reach/router'\nimport DialogButton from '../form/DialogButton'\nimport {inject, observer} from \"mobx-react\";\nimport Alert from \"./Alert\";\n\nconst styles = (theme: Theme) => createStyles({\n dialogActions: {\n justifyContent: \"center\",\n paddingBottom: \"16px\"\n }\n})\n\ninterface IAlertDialog {\n alert?: Alert\n}\n\n@inject(\"alert\")\n@observer\nclass AlertDialog extends React.Component & RouteComponentProps & IAlertDialog> {\n\n onClose = () => {\n if (this.props.alert) {\n this.props.alert.close();\n }\n };\n\n onSubmit = (event: any) => {\n if (this.props.alert) {\n this.props.alert.close()\n }\n }\n\n render() {\n const { classes, alert } = this.props\n\n let dialog = null\n if (alert && alert.open) {\n dialog = \n {alert.title}\n \n \n {alert.message}\n \n \n \n \n Ok\n \n \n \n }\n\n return (dialog)\n }\n}\n\nexport default withStyles(styles)(AlertDialog)\n","import { createStyles, Theme, withStyles, WithStyles, withTheme, WithTheme } from '@material-ui/core/styles'\nimport { Link, Typography } from \"@material-ui/core\";\nimport React from \"react\";\nimport Tracking from \"./Tracking\";\nimport ControlTower from './ControlTower';\nimport classNames from 'classnames';\n\nconst styles = (theme: Theme) => createStyles({\n linkStyle: {\n textDecoration: 'none',\n cursor: \"pointer\"\n },\n linkStyleLight: {\n color: theme.palette.common.white,\n }, \n linkStyleDark: {\n color: theme.palette.primary.main,\n },\n linkText: {\n fontWeight: 'bold'\n }\n})\n\ninterface IActionLinkProps {\n text: string\n alignText?: 'center' | 'left' | 'right'\n variation?: 'light' | 'dark'\n tracking: string\n click?: Function\n route?: string\n textStyle?: string\n linkStyle?: string\n}\n\nclass ActionLink extends React.Component & WithTheme & IActionLinkProps> {\n render() {\n const { text, alignText, tracking, click, classes, route, variation, textStyle, linkStyle } = this.props\n let linkStyles = [classes.linkStyle]\n let textStyles = [classes.linkText]\n if (variation) {\n if (variation === 'light') {\n linkStyles.push(classes.linkStyleLight)\n } else if (variation === 'dark') {\n linkStyles.push(classes.linkStyleDark)\n }\n }\n if (textStyle) {\n textStyles.push(textStyle)\n }\n if (linkStyle) {\n linkStyles.push(linkStyle)\n }\n return (\n
\n {\n Tracking.event({\n action: `${tracking}`,\n label: text\n })\n if (route) {\n ControlTower.route(route)\n } else if (click) {\n click() \n }\n }}\n >\n \n {text}​\n \n \n
\n )\n }\n}\n\nexport default withTheme((withStyles(styles)(ActionLink)))\n","import * as React from 'react'\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\nimport {Divider, Grid, isWidthDown, withWidth, WithWidth} from \"@material-ui/core\";\nimport MarginRow from \"../page/MarginRow\";\nimport ControlTower from \"../ControlTower\";\nimport config from 'react-global-configuration';\nimport {observable} from \"mobx\";\nimport {inject, observer} from \"mobx-react\";\nimport PrivacyPolicy from \"./PrivacyPolicy\";\nimport TermsOfUse from \"./TermsOfUse\";\nimport {format} from \"date-fns\";\nimport ActionLink from \"../ActionLink\";\nimport logo from '../../images/logo_wo_tagline_white_640x192.png'\n\nconst styles = (theme: Theme) => createStyles({\n container: {\n paddingTop: theme.spacing(5),\n paddingBottom: theme.spacing(5),\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n width: '100%',\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary[700],\n borderTop: \"2px solid\",\n borderTopColor: theme.palette.divider\n },\n link: {\n textDecoration: 'none',\n \"&:hover\": {\n textDecoration: 'none',\n }\n },\n linkText: {\n color: theme.palette.common.white,\n fontSize: \"18px !important\",\n fontWeight: 400,\n letterSpacing: 0.5,\n textDecoration: 'none',\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n paddingTop: 0,\n },\n divider: {\n backgroundColor: theme.palette.primary[600],\n marginBottom: 8\n }\n})\n\ninterface IFooterProps {\n privacyPolicy?: PrivacyPolicy\n termsOfUse?: TermsOfUse\n}\n\n@inject(\"privacyPolicy\", \"termsOfUse\")\n@observer\nclass Footer extends React.Component & WithWidth & IFooterProps> {\n\n @observable showPrivacyPolicy: boolean = false\n @observable showTermsOfUse: boolean = false\n\n render() {\n const { classes, width } = this.props\n const homeUrl = config.get(\"homeUrl\")\n const academyUrl = `${homeUrl}/academy`\n const talentUrl = `${homeUrl}/talent`\n const jobsUrl = `${homeUrl}/jobs`\n const newsUrl = config.get(\"newsUrl\")\n const copyright = new DOMParser().parseFromString(`© ${format(Date.now(), 'yyyy')} GovGig`,\n 'text/html').body.textContent ?? \"\"\n const version = config.get(\"version\")\n\n return (\n
\n \n \n \n \n \"logo\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/* */}\n \n \n \n
\n )\n }\n\n onClickContact = () => {\n const homeUrl = config.get(\"homeUrl\")\n ControlTower.open(`${homeUrl}/contact`)\n }\n\n onClickPrivacyPolicy = () => {\n const { privacyPolicy } = this.props\n if (privacyPolicy) {\n privacyPolicy.show()\n }\n }\n\n onClickTermsOfUse = () => {\n const { termsOfUse } = this.props\n if (termsOfUse) {\n termsOfUse.show()\n }\n }\n}\n\nexport default withStyles(styles)(withWidth()(Footer))","import * as React from 'react'\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\nimport Header from \"./Header\";\nimport NotifyBar from \"../notify/NotifyBar\";\nimport ConfirmDialog from \"../confirm/ConfirmDialog\";\nimport AlertDialog from \"../alert/AlertDialog\";\nimport Footer from \"./Footer\";\n\nconst styles = (theme: Theme) => createStyles({\n rootStyle: {\n flexGrow: 1,\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.default,\n justifyContent: 'space-between',\n display: 'flex',\n flexDirection: 'column',\n minHeight: \"100vh\",\n overflow: \"hidden\"\n },\n contentStyle: {\n display: \"flex\",\n flex: \"auto\",\n flexGrow: 1,\n minHeight: \"100%\",\n overflow: \"hidden\"\n },\n header: {\n flex: \"none\",\n height: 76\n },\n footer: {\n }\n})\n\ninterface IPageProps {\n hideHeader?: boolean\n hideFooter?: boolean\n title?: string\n}\n\nclass Page extends React.Component & IPageProps> {\n\n componentDidMount() {\n if (this.props.title) {\n document.title = `GovGig Academy - ${this.props.title}`\n } else {\n document.title = \"GovGig Academy\"\n }\n }\n\n\n componentDidUpdate(prevProps: any) {\n if (prevProps.title !== this.props.title) {\n this.componentDidMount()\n }\n }\n\n render() {\n const { classes, hideHeader, hideFooter } = this.props\n\n return (\n
\n {!hideHeader &&\n
\n
\n
\n }\n \n \n \n
\n {this.props.children}\n
\n {!hideFooter &&\n
\n
\n
\n }\n
\n )\n }\n}\n\nexport default withStyles(styles)(Page)","import * as React from 'react'\nimport Page from '../components/page/Page'\nimport { RouteComponentProps } from '@reach/router'\nimport MarginRow from '../components/page/MarginRow'\nimport { Grid } from '@material-ui/core';\nimport Typography from '@material-ui/core/Typography'\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n justifyContent: \"center\"\n },\n logoImage: {\n height: '25%',\n width: '25%'\n },\n text: {\n paddingTop: 'calc(50vh - 100px)',\n textAlign: 'center',\n [theme.breakpoints.down('sm')]: {\n paddingBottom: 15\n },\n [theme.breakpoints.up('sm')]: {\n paddingBottom: 0\n }\n }\n})\n\nclass NotFoundPage extends React.Component & RouteComponentProps> {\n\n render() {\n\n const { classes } = this.props;\n\n return (\n \n \n \n \n
\n {/**/}\n Sorry, this page doesn't exist or cannot be accessed.\n
\n
\n
\n
\n
\n )\n }\n}\n\nexport default withStyles(styles)(NotFoundPage);","import * as React from \"react\";\nimport { createStyles, Theme, WithStyles, withStyles } from '@material-ui/core/styles'\nimport { Provider } from \"mobx-react\";\n\nconst styles = (theme: Theme) => createStyles({\n\n})\n\nexport interface IFieldValidator {\n validate?(value: string): boolean\n}\n\ninterface IFormValidatorProps {\n autoComplete?: any\n name?: string\n className?: any\n onSubmit?: any\n id?: string\n}\n\nclass FormValidator extends React.Component & IFormValidatorProps> {\n\n state = {\n isValid: true\n }\n\n fields: any[]\n\n constructor(props: any) {\n super(props);\n this.fields = []\n }\n\n render() {\n const {\n onSubmit,\n ...rest\n } = this.props\n\n const resources = {\n formvalidator: this\n }\n\n return (\n \n \n {this.props.children}\n \n \n )\n }\n\n attachToForm = (component: any) => {\n this.fields.push(component)\n }\n\n private onSubmit = (event: React.FormEvent): void => {\n event.preventDefault()\n\n const { onSubmit } = this.props\n\n // Validate fields\n const isValid = this.validateFields()\n this.setState({isValid})\n\n if (isValid && onSubmit) {\n onSubmit(event);\n }\n }\n\n private validateFields = (): boolean => {\n let isValid = true\n\n this.fields.forEach((field: any) => {\n if (field.validate) {\n const isFieldValid = field.validate(field.props.value)\n if (!isFieldValid) {\n isValid = false\n }\n }\n })\n\n return isValid\n }\n}\n\nexport default withStyles(styles)(FormValidator)","import Lesson from \"./Lesson\";\n\nexport class Question {\n id: string\n createdAt: string\n updatedAt: string\n lessonId: string\n lesson?: Lesson\n number: number\n question: string\n answers: string[]\n correctAnswer: number\n\n constructor (data: any) {\n this.id = data.id\n this.createdAt = data.createdAt\n this.updatedAt = data.updatedAt\n this.lessonId = data.lessonId\n this.lesson = data.lesson ? new Lesson(data.lesson) : undefined\n this.number = data.number\n this.question = data.question\n this.answers = data.answers\n this.correctAnswer = data.correctAnswer\n }\n}","import Course from \"./Course\";\nimport {Question} from \"./Question\";\n\n\nexport class Lesson {\n id: string\n createdAt: string\n updatedAt: string\n courseId: string\n course?: Course\n number: number\n title: string\n description: string\n videoUrl: string\n videoDuration: number\n questions: Question[]\n\n constructor (data: any) {\n this.id = data.id\n this.createdAt = data.createdAt\n this.updatedAt = data.updatedAt\n this.courseId = data.courseId\n this.course = data.course ? new Course(data.course) : undefined\n this.number = data.number\n this.title = data.title\n this.description = data.description\n this.videoUrl = data.videoUrl\n this.videoDuration = data.videoDuration\n this.questions = []\n if (data.questions && data.questions.items) {\n this.loadQuestions(data.questions.items)\n }\n }\n\n loadQuestions(items: any[]) {\n this.questions = items.map((item: any) => new Question(item))\n }\n\n}\n\nexport default Lesson","import Lesson from \"./Lesson\";\n\n\nexport class Course {\n id: string\n createdAt: string\n updatedAt: string\n title: string\n description: string\n coverUrl: string\n details: string\n publishDate: string\n sunsetDate: string\n lessonCount: number\n creditHours: number\n isFree: boolean\n handoutUrl: string\n lessons: Lesson[]\n\n constructor(data: any) {\n this.id = data.id\n this.createdAt = data.createdAt\n this.updatedAt = data.updatedAt\n this.title = data.title\n this.description = data.description\n this.coverUrl = data.coverUrl\n this.details = data.details\n this.publishDate = data.publishDate\n this.sunsetDate = data.sunsetDate\n this.lessonCount = data.lessonCount\n this.isFree = data.isFree\n this.creditHours = data.creditHours\n this.handoutUrl = data.handoutUrl\n this.lessons = []\n if (data.lessons && data.lessons.items) {\n this.loadLessons(data.lessons.items)\n }\n }\n\n loadLessons(data: any) {\n const json = JSON.parse(data)\n if (json.items) {\n this.lessons = json.items.map((item: any) => new Lesson(item))\n this.lessonCount = this.lessons.length\n }\n }\n\n getLesson(lessonId: string) {\n const lesson = this.lessons.find((l: Lesson) => { return l.id === lessonId})\n return lesson\n }\n\n getLessonNumber(num: number) {\n const lesson = this.lessons.find((l: Lesson) => { return l.number === num})\n return lesson\n }\n\n getNextLesson(num: number) {\n const index = this.lessons.findIndex((l: Lesson) => { return l.number === num})\n if (index >= 0 && index < this.lessons.length-1) {\n return this.lessons[index+1]\n } else {\n return null\n }\n }\n}\n\nexport default Course","import { parsePhoneNumberFromString } from 'libphonenumber-js'\nimport {addSeconds, format} from \"date-fns\";\nimport { v4 as uuid } from 'uuid';\n\nexport function createUUID() {\n return uuid()\n}\n\nexport function getISODateFromDate (date: Date): string {\n const adjDate = new Date(date)\n // Adjust by time zone offset to make sure the date string doesn't shift\n adjDate.setMinutes(-adjDate.getTimezoneOffset())\n return adjDate.toISOString().substr(0, 10)\n}\n\nexport function getISODateTimeFromDate(date: Date) : string {\n return date.toISOString()\n}\n\nexport function getISODateToday() : string {\n const date = new Date()\n return getISODateFromDate(date)\n}\n\nexport function getISODateTime() : string {\n const date = new Date()\n return date.toISOString()\n}\n\n// export function getExpireDate(minutes: number) : string {\n// const date = new Date()\n// const expireDate = addMinutes(date, minutes)\n// return getISODateTimeFromDate(expireDate)\n// }\n//\nexport function isoToLocalDate(isoDate: string) {\n const date = new Date(isoDate)\n date.setMinutes(date.getTimezoneOffset())\n return date\n}\n\nexport function isoToLocalDateTime(isoDateTime: string) {\n const date = new Date(isoDateTime)\n return date\n}\n\nexport function secondsToDuration(seconds: number) {\n let result\n if (!seconds) {\n result = \"0:00\"\n } else {\n const time = addSeconds(new Date(0), seconds)\n if (seconds > 3600) {\n result = format(time, \"h:m:ss\")\n } else {\n result = format(time, \"m:ss\")\n }\n }\n return result\n}\n\nexport function getErrorMessage(err: any) {\n if (err.response && err.response.data && err.response.data.details && err.response.data.details.raw && err.response.data.details.raw.message) {\n return err.response.data.details.raw.message\n } else if (err.response && err.response.data && err.response.data.message) {\n return err.response.data.message\n } else if (err.message) {\n return err.message\n } else {\n return \"Unknown error\"\n }\n}\n\nexport function timestampToISOString(timestamp: number): string {\n if (timestamp) {\n const date = new Date(timestamp*1000)\n return date.toISOString()\n } else {\n return \"\"\n }\n}\n\nexport function undefineEmptyStrings(map: object) {\n Object.keys(map).forEach(key => {\n const value = map[key]\n if (typeof value === \"string\" && value.length === 0) {\n map[key] = undefined\n }\n })\n}\n\nexport function phoneToE164Format(phone: string): string | null {\n const phoneNumber = parsePhoneNumberFromString(phone, \"US\")\n if (phoneNumber && phoneNumber.isValid()) {\n return phoneNumber.number.toString()\n } else {\n return null\n }\n}\n\nexport function phoneToNationalFormat(phone: string): string {\n if (phone) {\n const phoneNumber = parsePhoneNumberFromString(phone, \"US\")\n if (phoneNumber && phoneNumber.isValid()) {\n return phoneNumber.formatNational()\n }\n }\n\n return phone\n}\n\nexport function numberToMoneyFormat(value: number) : string {\n const formatter = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n })\n\n if (value === -0.00) {\n value = 0.00\n }\n return formatter.format(value)\n}\n\nexport function humanizeString (input: string): string {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = decamelize(input, ' ');\n input = titleCase(input)\n\n return input;\n}\n\nexport function decamelize(text: string, separator: string = '_'): string {\n return text\n .replace(/([\\p{Lowercase_Letter}\\d])(\\p{Uppercase_Letter})/gu, `$1${separator}$2`)\n .replace(/(\\p{Uppercase_Letter}+)(\\p{Uppercase_Letter}\\p{Lowercase_Letter}+)/gu, `$1${separator}$2`)\n .toLowerCase();\n}\n\nexport function titleCase(str: string): string {\n return str.toLowerCase().split(' ').map(function(word) {\n return (word.charAt(0).toUpperCase() + word.slice(1));\n }).join(' ');\n}\n","import {computed, observable} from \"mobx\";\nimport {CognitoUser, CognitoUserAttribute} from 'amazon-cognito-identity-js'\nimport {Auth} from 'aws-amplify'\nimport LearningAPI from '../apis/LearningAPI'\nimport Logger from \"../components/Logger\";\nimport User from \"../model/User\";\nimport {format, fromUnixTime, isToday} from \"date-fns\";\nimport ControlTower, {Routes} from \"../components/ControlTower\";\nimport {getISODateToday, phoneToE164Format} from \"./StoreUtilities\";\nimport * as APITypes from \"../API\"\nimport {\n AccountStatus,\n ActivityType,\n ClassStatus,\n CreateActivityInput,\n CreateRegistrationInput,\n LessonStatus, UpdateUserInput,\n UserRole,\n UserStatus\n} from \"../API\"\nimport Class from \"../model/Class\";\nimport Registration from \"../model/Registration\";\nimport Tracking from \"../components/Tracking\";\nimport Activity from \"../model/Activity\";\nimport Course from \"../model/Course\";\nimport Invoice from \"../model/Invoice\";\nimport Charge from \"../model/Charge\";\nimport BillingAPI from \"../apis/BillingAPI\";\nimport Account from \"../model/Account\";\nimport Agreement from \"../model/Agreement\";\n\n\nexport const UserStoreConstants = {\n\n USER_ALREADY_CONFIRMED: \"User cannot be confirm. Current status is CONFIRMED\",\n CONFIRMATION_SUCCESS: \"SUCCESS\",\n USER_NOT_FOUND: \"User not found\",\n USERNAME_EXISTS_EXCEPTION: \"UsernameExistsException\",\n EMAIL_EXISTS_MESSAGE: \"PreSignUp failed with error Email exists.\",\n USERNAME_NOT_CONFIRMED_EXCEPTION: \"UserNotConfirmedException\",\n USER_NOT_CONFIRMED: \"User not confirmed\",\n USER_ALREADY_CONFIRMED_MESSAGE: \"User is already confirmed.\",\n NOT_AUTHORIZED_EXCEPTION: \"NotAuthorizedException\",\n USER_NOT_FOUND_EXCEPTION: \"UserNotFoundException\",\n CODE_MISMATCH_EXEPTION: \"CodeMismatchException\",\n CONDITIONAL_REQUEST_FAILED: \"The conditional request failed\",\n EMAIL_VERIFICATION_PENDING: \"Email verification pending\",\n PHONE_VERIFICATION_PENDING: \"Phone verification pending\",\n COMPANY_EMAIL: \"\"\n}\n\nexport interface ICognitoAttributes {\n email?: string,\n phone_number?: string,\n \"custom:account\"?: string,\n \"custom:role\"?: string\n}\n\nexport const CognitoAttribute = {\n EMAIL: \"email\",\n PHONE_NUMBER: \"phone_number\",\n ACCOUNT: \"custom:account\",\n ROLE: \"custom:role\"\n}\n\nexport const CognitoAttributeValue = {\n FALSE: \"false\",\n TRUE: \"true\"\n}\n\nexport enum PermissionType {\n Read = \"Read\",\n Create = \"Create\",\n Update = \"Update\",\n Delete = \"Delete\"\n}\n\nclass UserStore {\n @observable groups: string[] = []\n @observable user?: User\n @observable isLoading: boolean = false\n @observable isAdmin: boolean = false\n\n learningAPI: LearningAPI\n billingAPI: BillingAPI\n\n @observable private _cognitoUser?: CognitoUser\n get cognitoUser() {\n Logger.debug(`UserStore get cognitoUser = ${this._cognitoUser?.getUsername()}`)\n return this._cognitoUser\n }\n\n set cognitoUser(cognitoUser: CognitoUser | undefined) {\n Logger.debug(`UserStore set cognitoUser = ${cognitoUser?.getUsername()}`)\n this._cognitoUser = cognitoUser\n }\n\n get isAgent() {\n return this.user ? this.user.isAgent : false\n }\n\n get isAdminOrAgent() {\n return this.user !== undefined ? this.user.isAdminOrAgent : false\n }\n\n\n get isEmployer() {\n return this.user ? this.user.isEmployer : false\n }\n\n get isStudent() {\n return this.user ? this.user.isStudent : false\n }\n\n private _attributes: CognitoUserAttribute[] = []\n\n constructor(options: any) {\n this.learningAPI = (options && options.learningAPI) ? options.learningAPI : null\n this.billingAPI = (options && options.billingAPI) ? options.billingAPI : null\n }\n\n /**\n * When switching between *.govgig.us properties, \n * we need to sign out the user if they've logged in on another property,\n * otherwise too many cookies will build up and the site won't load,\n * resulting in a 431 error. \n */\n async signOutCurrentAuthenticatedUser() {\n try {\n const user: CognitoUser | undefined = await Auth.currentAuthenticatedUser()\n Logger.debug('Current authenticated user', user)\n await Auth.signOut()\n } catch (err) {\n // If we see err === \"No current user,\" then we are not logged in, which is fine. \n Logger.debug('UserStore.signIn: ', err)\n } finally {\n this.deleteAllCookies()\n }\n }\n\n signUp = async (username: string, password: string, email: string, phone?: string, accountId?: string, role?: UserRole) => {\n this.cognitoUser = undefined\n this.user = undefined\n this._attributes = []\n\n await this.signOutCurrentAuthenticatedUser()\n\n return new Promise((resolve, reject) => {\n const attributes = {}\n attributes[CognitoAttribute.EMAIL] = email.toLowerCase()\n if (phone) {\n attributes[CognitoAttribute.PHONE_NUMBER] = phoneToE164Format(phone)\n }\n if (accountId) {\n attributes[CognitoAttribute.ACCOUNT] = accountId\n }\n if (role) {\n attributes[CognitoAttribute.ROLE] = role\n }\n\n Auth.signUp({\n username,\n password,\n attributes,\n validationData: [] // optional\n })\n .then(data => {\n resolve(data)\n })\n .catch(err => {\n reject(err)\n })\n })\n }\n\n confirmSignUp = async (username: string, code: string, options?: any): Promise => {\n return await Auth.confirmSignUp(username, code, options)\n }\n\n resendSignUp = async (username: string): Promise => {\n return await Auth.resendSignUp(username)\n }\n\n signIn = async (username: string, password: string) => {\n this.cognitoUser = undefined\n this.user = undefined\n this._attributes = []\n \n await this.signOutCurrentAuthenticatedUser()\n\n return new Promise((resolve, reject) => {\n Auth.signIn(username.toLowerCase(), password)\n .then(async (cognitoUser: any) => {\n if (cognitoUser.challengeName === \"NEW_PASSWORD_REQUIRED\") {\n Logger.debug(`Auth.signIn(${username}) = ${cognitoUser.challengeName}`)\n resolve(cognitoUser)\n } else {\n Logger.debug(`Auth.signIn(${username}) success`)\n // Load and initialize User\n this.initSession(cognitoUser)\n .then(result => {\n this.createActivity(ActivityType.UserSignIn, result.id)\n resolve(result)\n })\n .catch(async (reason: any) => {\n // await this.signInAsGuest()\n reject(reason)\n })\n }\n }).catch(err => {\n if (err.code !== UserStoreConstants.USER_NOT_FOUND_EXCEPTION &&\n err.code !== UserStoreConstants.NOT_AUTHORIZED_EXCEPTION) {\n Logger.error(\"Auth.SignIn error.\", err)\n }\n reject(err)\n })\n })\n }\n\n signOut = async () => {\n return new Promise((resolve, reject) => {\n if (this.cognitoUser) {\n Auth.signOut()\n .then(() => {\n Logger.debug(\"Auth.signOut success\")\n this.cognitoUser = undefined\n this.user = undefined\n this._attributes = []\n if (this.checkInterval) {\n clearInterval(this.checkInterval)\n this.checkInterval = undefined\n }\n resolve(null)\n })\n .catch(err => {\n Logger.error(\"Auth.signOut error\", err)\n reject(err)\n })\n .finally(() => {\n this.deleteAllCookies()\n })\n }\n })\n }\n\n currentSession = async() => {\n Auth.currentSession()\n .then(data => {\n return data\n })\n .catch(err => {\n console.log(`Auth.currentSession err: ${JSON.stringify(err)}`)\n });\n }\n\n currentAuthenticatedUser = async () => {\n const cognitoUser = await Auth.currentAuthenticatedUser()\n .catch(err => {\n this.cognitoUser = undefined\n })\n if (cognitoUser) {\n this.cognitoUser = cognitoUser\n return cognitoUser\n } else {\n this.cognitoUser = undefined\n return null\n }\n }\n\n getUserAttribute = async (cognitoUser: any, name: string) => {\n const attributes = await Auth.userAttributes(cognitoUser ? cognitoUser : this.cognitoUser)\n const attribute = attributes.find(a => a.getName() === name)\n if (attribute) {\n return attribute.getValue()\n } else {\n return null\n }\n }\n\n getUserAttributes = async (cognitoUser?: any) => {\n return await Auth.userAttributes(cognitoUser ? cognitoUser : this.cognitoUser)\n }\n\n updateUserAttributes = async (cognitoUser: any, attributes: any) => {\n return await Auth.updateUserAttributes(cognitoUser ? cognitoUser : this.cognitoUser, attributes)\n }\n\n initSession = async (cognitoUser: CognitoUser) => {\n\n console.log(\"UserStore.initSession\")\n this.isLoading = true\n\n return new Promise( async (resolve, reject) => {\n this.cognitoUser = cognitoUser\n await this.getCurrentSessionPayload()\n const username = cognitoUser.getUsername()\n await this.checkAuthentication()\n\n this.loadUser(username)\n .then((user: any) => {\n Tracking.set({userId: user.email})\n this.isLoading = false\n resolve(user)\n })\n .catch((err: any) => {\n this.isLoading = false\n reject(err)\n })\n })\n }\n\n async getCurrentSessionPayload() {\n const session = await Auth.currentSession()\n const authTimeValue = session.getIdToken().payload['auth_time']\n const authTime = fromUnixTime(authTimeValue)\n console.log(`User authenticated at ${format(authTime!, \"M/d/yyyy h:mm:ss aa\")}`)\n const groups = session.getIdToken().payload['cognito:groups']\n this.isAdmin = (groups && groups.indexOf(\"Admin\") >= 0)\n }\n\n @computed get isAuthenticated() {\n const isAuthenticated = this.cognitoUser !== undefined && this.user !== undefined\n Logger.debug(`UserStore get isAuthenticated = ${isAuthenticated}`)\n return isAuthenticated\n }\n\n checkInterval: any\n\n async checkAuthentication() {\n Logger.debug(\"checkAuthentication\")\n try {\n const session = await Auth.currentSession()\n const authTimeValue = session.getIdToken().payload['auth_time']\n const authTime = fromUnixTime(authTimeValue)\n\n if (!isToday(authTime)) { // Sign-out at midnight the day authenticated\n Logger.debug(\"Authentication expired\")\n await this.signOut()\n ControlTower.route(Routes.home)\n window.location.reload() // necessary for reconfiguring app state after logout\n }\n } catch (err) {\n Logger.error('checkAuthentication error', err)\n }\n\n if (!this.checkInterval) {\n // Check authentication every hour\n this.checkInterval = setInterval(this.checkAuthentication, 60 * 60000)\n }\n }\n\n completeNewPassword = async (user: string, newPassword: string) => {\n return await new Promise((resolve, reject) => {\n Auth.completeNewPassword(user, newPassword, null)\n .then(data => {\n Logger.debug(\"Auth.completeNewPassword success\")\n resolve(data)\n })\n .catch(err => {\n Logger.debug(\"Auth.completeNewPassword error\", err)\n reject(err)\n });\n })\n }\n\n loadUser = async (username: string): Promise => {\n Logger.debug(`UserStore.loadUser(${username})`)\n const data = await this.learningAPI.getUser(username)\n console.log(\"Loaded user\")\n\n if (data) {\n let user = new User(data)\n if (user) {\n if (user.userStatus === UserStatus.Suspended) {\n throw new Error(\"User is suspended. Please contact account owner or admin.\")\n } else if (user.account?.accountStatus === AccountStatus.Suspended) {\n throw new Error(\"Account is suspended. Please contact account owner or admin.\")\n } else {\n this.user = user\n console.log(\"Initializing Logger\")\n Logger.configureUser(this.user.id)\n Logger.info(\"Signed in as \" + this.user.id)\n console.log(\"loadUser completed\")\n }\n }\n } else {\n throw new Error(\"User not found\")\n }\n\n return this.user\n }\n\n getUser = async (username: string): Promise => {\n const data = await this.learningAPI.getUser(username)\n if (data) {\n return new User(data)\n } else {\n return undefined\n }\n }\n\n async createUser(input: APITypes.CreateUserInput) {\n if (input.phone) {\n input.phone = phoneToE164Format(input.phone)\n }\n const user = await this.learningAPI!.createUser(input)\n if (user) {\n // // Tracking.event({action: \"Create Account\"})\n // const attributes: ICognitoAttributes = {}\n // let updateAttributes = false\n // if (user.accountId) {\n // attributes[CognitoAttribute.ACCOUNT] = user.accountId\n // updateAttributes = true\n // }\n // if (user.role) {\n // attributes[CognitoAttribute.ROLE] = user.role\n // updateAttributes = true\n // }\n // if (updateAttributes) {\n // await this.updateUserAttributes(null, attributes)\n // }\n\n this.user = new User(user)\n this.createActivity(ActivityType.UserCreate, this.user.id)\n return this.user\n } else {\n return null\n }\n }\n\n async updateUser(input: APITypes.UpdateUserInput) {\n\n if (input.phone) {\n input.phone = phoneToE164Format(input.phone)\n }\n const user = await this.learningAPI!.updateUser(input)\n if (user) {\n if (user.id === this.user!.id) {\n const updatedUser = new User(user)\n // Preserve related data\n updatedUser.account = this.user!.account\n updatedUser.registrations = this.user!.registrations\n this.user = updatedUser\n // Verify custom account user attribute\n const accountValue = await this.getUserAttribute(null, CognitoAttribute.ACCOUNT)\n if (accountValue !== user.accountId) {\n const attributes: ICognitoAttributes = {}\n attributes[CognitoAttribute.ACCOUNT] = user.accountId\n console.log(`Updated custom:Account Cognito attribute: ${user.accountId}`)\n await this.updateUserAttributes(null, attributes)\n }\n const roleValue = await this.getUserAttribute(null, CognitoAttribute.ROLE)\n if (roleValue !== user.role) {\n const attributes: ICognitoAttributes = {}\n attributes[CognitoAttribute.ROLE] = user.role\n console.log(`Updated custom:Role Cognito attribute: ${user.role}`)\n await this.updateUserAttributes(null, attributes)\n }\n return this.user\n } else {\n return new User(user)\n }\n } else {\n return null\n }\n }\n\n async forgotPassword(userId: string) {\n await Auth.forgotPassword(userId)\n return \"SUCCESS\"\n }\n\n async forgotPasswordSubmit(userId: string, code: string, password: string) {\n await Auth.forgotPasswordSubmit(userId, code, password)\n return \"SUCCESS\"\n }\n\n async createAgreement(input: APITypes.CreateAgreementInput) {\n const data = await this.learningAPI!.createAgreement(input)\n if (data) {\n return new Agreement(data)\n } else {\n return undefined\n }\n }\n\n async addClassRegistration(classObj: Class) {\n const input: CreateRegistrationInput = {\n accountId: this.user!.accountId,\n classId: classObj.id,\n userId: this.user!.id,\n classStatus: APITypes.ClassStatus.NotStarted,\n classProgress: 0,\n lessonNumber: 1,\n lessonStatus: LessonStatus.NotStarted,\n videoProgress: 0,\n score: 0,\n lessonsAssigned: classObj.getRegistrationLessonsAssigned()\n }\n\n const result = await this.learningAPI!.createRegistration(input)\n .catch(err => {\n Logger.error(\"Unable to create class registration\")\n })\n\n if (result) {\n const registration = new Registration(result)\n this.user?.registrations.push(registration)\n this.createActivity(ActivityType.ClassRegistration, registration.id)\n return registration\n } else {\n return null\n }\n }\n\n listRegistrations = (): Registration[] => {\n return (this.user && this.user.registrations) ? [...this.user.registrations] : []\n }\n\n getRegistration = (registrationId: string) => {\n const registration = this.user!.registrations.find((r: Registration) => { return r.id === registrationId})\n return registration\n }\n\n updateRegistration = async (input: APITypes.UpdateRegistrationInput) => {\n let registration = undefined\n const result = await this.learningAPI.updateRegistration(input)\n if (result) {\n registration = new Registration(result)\n // update cached registration\n const index = this.user!.registrations.findIndex((r: Registration) => { return r.id === input.id})\n if (index >= 0) {\n const existing = this.user!.registrations[index]\n // Preserve class\n if (existing.class) {\n // console.log(\"updateRegistration: preserving class\")\n registration.class = existing.class\n }\n this.user!.registrations[index] = registration\n }\n }\n return registration\n }\n\n resetRegistration = async (id: string) => {\n const input: APITypes.UpdateRegistrationInput = {\n id: id,\n classStatus: ClassStatus.NotStarted,\n classProgress: 0,\n lessonNumber: 1,\n lessonId: \"\",\n lessonStatus: LessonStatus.NotStarted,\n videoProgress: 0,\n answers: [],\n score: 0\n }\n\n return this.updateRegistration(input)\n }\n\n getClassRegistration = (classId: string) => {\n const registration = this.user!.registrations.find((r: Registration) => { return r.classId === classId})\n if (registration && !registration.user) {\n registration.user = this.user\n }\n return registration\n }\n\n // Individual Billing Related Methods\n\n createInvoice = async (course: Course, couponId: string | undefined, quantity: number, amount: number, tokenId: string | undefined) => {\n const user = this.user!\n\n const invoice = new Invoice({\n customer: user.customerId,\n collection_method: \"charge_automatically\",\n auto_advance: true,\n items: [\n {\n customer: user.customerId,\n unit_amount: Math.round(amount * 100),\n quantity: quantity,\n currency: \"usd\",\n description: course.title,\n }\n ]\n })\n\n if (couponId) {\n invoice.items[0].discounts = [\n {coupon: couponId}\n ]\n }\n\n // Mock account\n const account = new Account({\n id: user.id,\n name: user.fullName,\n address: \"\",\n city: \"\",\n state: \"\",\n postalCode: \"\"\n })\n\n const result = await this.billingAPI.createInvoice(user, account, invoice, tokenId)\n\n if (!user.customerId && result && result.customer) {\n const input: UpdateUserInput = {\n id: user.id,\n customerId: result.customer\n }\n const update = await this.updateUser(input)\n if (update) {\n this.user!.customerId = update.customerId\n }\n }\n\n return (result)\n }\n\n getCustomer = async (id: string) => {\n const result = await this.billingAPI.getCustomer(id)\n return result\n }\n\n deleteSource = async (sourceId: string) => {\n if (this.user!.customerId) {\n return await this.billingAPI.deleteSource(this.user!.customerId, sourceId)\n } else {\n return null\n }\n }\n\n // Charges methods\n\n listCharges = async () => {\n let charges: Charge[] = []\n\n if (this.user!.customerId) {\n const result = await this.billingAPI.getCharges(this.user!.customerId)\n if (result && result.data) {\n charges = result.data.map((item: any) => {\n return new Charge(item)\n })\n }\n }\n\n return charges\n }\n\n // Activity methods\n\n createActivity = async (activityType: ActivityType, objectId: string) => {\n const input : CreateActivityInput = {\n accountId: this.user!.accountId,\n userId: this.user!.id,\n activityDate: getISODateToday(),\n activityType: activityType,\n objectId: objectId\n }\n\n const activity = await this.learningAPI!.createActivity(input)\n if (activity) {\n return new Activity(activity)\n } else {\n return null\n }\n }\n\n // Misc methods\n\n deleteAllCookies = () => {\n const cookies = document.cookie.split(\"; \")\n for (let c = 0; c < cookies.length; c++) {\n let d = window.location.hostname.split(\".\")\n while (d.length > 0) {\n const cookieBase = encodeURIComponent(cookies[c].split(\";\")[0].split(\"=\")[0]) + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT; domain=' + d.join('.') + ' ;path='\n let p = window.location.pathname.split('/')\n document.cookie = cookieBase + '/'\n while (p.length > 0) {\n document.cookie = cookieBase + p.join('/')\n p.pop()\n }\n d.shift()\n }\n }\n }\n\n}\n\nexport default UserStore","import Class from \"./Class\";\nimport {ClassStatus, LessonStatus} from \"../API\";\nimport User from \"./User\";\nimport {getISODateFromDate, isoToLocalDate} from \"../stores/StoreUtilities\";\nimport {addYears, isBefore, startOfToday, subDays} from \"date-fns\";\n\nexport const PASSING_SCORE = 80.0\n\nexport class Registration {\n id: string\n createdAt: string\n updatedAt: string\n accountId: string\n classId: string\n class?: Class\n userId: string\n user?: User\n classStatus: ClassStatus\n classProgress: number\n lessonNumber: number\n lessonId: string\n lessonStatus: LessonStatus\n videoProgress: number\n answers: number[]\n score: number\n startedAt: string\n endsAt: string\n completedAt: string\n lessonsAssigned: number\n nextAssignmentAt: string\n\n constructor(data: any) {\n this.id = data.id\n this.createdAt = data.createdAt\n this.updatedAt = data.updatedAt\n this.accountId = data.accountId\n this.classId = data.classId\n this.class = data.class ? new Class(data.class) : undefined\n this.userId = data.userId\n this.user = data.user ? new User(data.user) : undefined\n this.classStatus = data.classStatus\n this.classProgress = data.classProgress ? data.classProgress : 0\n this.lessonNumber = data.lessonNumber ? data.lessonNumber : 1\n this.lessonId = data.lessonId\n this.lessonStatus = data.lessonStatus\n this.videoProgress = data.videoProgress\n this.answers = data.answers ? data.answers : []\n this.score = data.score\n this.startedAt = data.startedAt\n this.endsAt = data.endsAt\n if (!data.endsAt && data.startedAt) {\n const startedAt = isoToLocalDate(data.startedAt)\n const endsAt = subDays(addYears(startedAt, 1), 1)\n this.endsAt = getISODateFromDate(endsAt)\n }\n this.completedAt = data.completedAt ? data.completedAt : data.updatedAt\n this.lessonsAssigned = data.lessonsAssigned\n this.nextAssignmentAt = data.nextAssignmentAt\n }\n\n update(data: any) {\n if (data.createdAt) {\n this.createdAt = data.createdAt\n }\n if (data.updatedAt) {\n this.updatedAt = data.updatedAt\n }\n if (data.accountId) {\n this.accountId = data.accountId\n }\n if (data.classId) {\n this.classId = data.classId\n }\n if (data.class) {\n this.class = new Class(data.class)\n }\n if (data.userId) {\n this.userId = data.userId\n }\n if (data.user) {\n this.user = new User(data.user)\n }\n if (data.classStatus) {\n this.classStatus = data.classStatus\n }\n if (data.classProgress) {\n this.classProgress = data.classProgress\n }\n if (data.lessonNumber) {\n this.lessonNumber = data.lessonNumber\n }\n if (data.lessonId) {\n this.lessonId = data.lessonId\n }\n if (data.lessonStatus) {\n this.lessonStatus = data.lessonStatus\n }\n if (data.videoProgress) {\n this.videoProgress = data.videoProgress\n }\n if (data.answers) {\n this.answers = data.answers\n }\n if (data.score) {\n this.score = data.score\n }\n if (data.startedAt) {\n this.startedAt = data.startedAt\n }\n if (data.endsAt) {\n this.endsAt = data.endsAt\n }\n if (data.completedAt) {\n this.completedAt = data.completedAt\n }\n if (data.lessonsAssigned) {\n this.lessonsAssigned = data.lessonsAssigned\n }\n if (data.nextAssignmentAt) {\n this.nextAssignmentAt = data.nextAssignmentAt\n }\n }\n\n get classCompleted(): boolean {\n return (this.classStatus === ClassStatus.Passed || this.classStatus === ClassStatus.Failed)\n }\n\n get passing(): boolean {\n return (this.score === 0 || this.score >= PASSING_SCORE)\n }\n\n get failing(): boolean {\n return (this.score !== 0 && this.score < PASSING_SCORE)\n }\n\n get lessonCompleted(): boolean {\n return (this.lessonStatus === LessonStatus.Passed || this.lessonStatus === LessonStatus.Failed)\n }\n\n get title(): string {\n return (this.class && this.class.course) ? this.class.course.title : \"\"\n }\n\n getAnswer(question: number) {\n return (this.answers && this.answers.length >= question) ? this.answers[question-1] : -1\n }\n\n getStatus(lesson: number): LessonStatus {\n if (this.classCompleted) {\n return LessonStatus.Ended\n } else if (this.lessonNumber === lesson) {\n return this.lessonStatus\n } else if (lesson < this.lessonNumber) {\n return LessonStatus.Passed\n } else {\n return LessonStatus.NotStarted\n }\n }\n\n setAnswer(lesson: number, answer: number) {\n if (!this.answers) {\n this.answers = []\n }\n this.answers[lesson-1] = answer\n }\n \n get isExpired(): boolean {\n if (!this.classCompleted && this.endsAt) {\n const endsAt = isoToLocalDate(this.endsAt)\n return (isBefore(endsAt, startOfToday()))\n }\n\n return false\n }\n}\n\nexport default Registration","import Course from \"./Course\";\nimport Registration from \"./Registration\";\nimport {AssignmentSchedule} from \"../API\";\nimport {getISODateFromDate, isoToLocalDate} from \"../stores/StoreUtilities\";\nimport {addMonths, addYears, format, startOfToday, subDays} from \"date-fns\";\n\n\nexport class Class {\n id: string\n createdAt: string\n updatedAt: string\n courseId: string\n course?: Course\n accountId: string\n ownerId: string\n userId: string\n termBegin: string\n termEnd: string\n seatsPurchased: number\n seatsFilled: number\n couponCode: string\n assignmentSchedule: AssignmentSchedule\n registrations: Registration[]\n\n constructor(data: any) {\n this.id = data.id\n this.createdAt = data.createdAt\n this.updatedAt = data.updatedAt\n this.courseId = data.courseId\n this.course = data.course ? new Course(data.course) : undefined\n this.accountId = data.accountId\n this.ownerId = data.ownerId\n this.userId = data.userId\n this.termBegin = data.termBegin\n this.termEnd = data.termEnd\n this.seatsPurchased = data.seatsPurchased\n this.seatsFilled = data.seatsFilled\n this.couponCode = data.couponCode\n this.assignmentSchedule = data.assignmentSchedule ? data.assignmentSchedule : AssignmentSchedule.All\n this.registrations = []\n if (data.registrations && data.registrations.items) {\n this.loadRegistrations(data.registrations.items)\n }\n\n // Fix termEnd if same as termStart\n if (this.termBegin && this.termBegin === this.termEnd) {\n const begin = isoToLocalDate(this.termBegin)\n let end = addYears(begin, 1)\n end = subDays(end, 1)\n this.termBegin = getISODateFromDate(begin)\n this.termEnd = getISODateFromDate(end)\n }\n }\n\n loadRegistrations(items: any[]) {\n this.registrations = items.map((item: any) => new Registration(item))\n }\n\n update(data: any) {\n // this.id = data.id\n this.createdAt = data.createdAt\n this.updatedAt = data.updatedAt\n // this.courseId = data.courseId\n if (data.course) {\n this.course = data.course\n }\n // this.accountId = data.accountId\n this.termBegin = data.termBegin\n this.termEnd = data.termEnd\n this.seatsPurchased = data.seatsPurchased\n this.seatsFilled = data.seatsFilled\n this.couponCode = data.couponCode\n this.assignmentSchedule = data.assignmentSchedule\n // this.registrations = []\n if (data.registrations && data.registrations.items) {\n this.loadRegistrations(data.registrations.items)\n }\n }\n\n // Compute the default lessonsAssigned\n getRegistrationLessonsAssigned() {\n let lessonsAssigned = 0\n let schedule = this.assignmentSchedule\n\n if (schedule === AssignmentSchedule.All) {\n lessonsAssigned = this.course!.lessonCount\n } else {\n\n if (schedule === AssignmentSchedule.Monthly) {\n lessonsAssigned = Math.round(this.course!.lessonCount * (1 / 12))\n } else if (schedule === AssignmentSchedule.Quarterly) {\n lessonsAssigned = Math.round(this.course!.lessonCount * (1 / 4))\n }\n }\n\n return lessonsAssigned\n }\n\n // Compute the default nextAssignmentAt date\n getRegistrationNextAssignmentAt() {\n let nextAssignmentAt = \"\"\n let schedule = this.assignmentSchedule\n\n if (schedule === AssignmentSchedule.All) {\n nextAssignmentAt = \"\"\n } else {\n const startDate = startOfToday()\n if (schedule === AssignmentSchedule.Monthly) {\n nextAssignmentAt = format(addMonths(startDate, 1), \"yyyy-MM-dd\")\n } else if (schedule === AssignmentSchedule.Quarterly) {\n nextAssignmentAt = format(addMonths(startDate, 3), \"yyyy-MM-dd\")\n }\n }\n\n return nextAssignmentAt\n }\n\n}\n\nexport default Class","import Class from \"./Class\";\nimport User from \"./User\";\nimport {AccountType, AccountStatus, AccountSize} from \"../API\";\n\n\nexport class Account {\n id: string\n createdAt: string\n updatedAt: string\n ownerId: string\n name: string\n address: string\n city: string\n state: string\n postalCode: string\n accountType: AccountType\n accountStatus: AccountStatus\n customerId: string\n accountSize: AccountSize\n classes: Class[]\n users: User[]\n\n constructor(data: any) {\n this.id = data.id\n this.createdAt = data.createdAt\n this.updatedAt = data.updatedAt\n this.ownerId = data.ownerId\n this.name = data.name\n this.address = data.address\n this.city = data.city\n this.state = data.state\n this.postalCode = data.postalCode\n this.accountType = data.id === 'primary' ? AccountType.Individual : AccountType.Agency\n this.accountStatus = data.accountStatus ? (AccountStatus as any)[data.accountStatus] : AccountStatus.Active\n this.customerId = data.customerId\n this.accountSize = data.accountSize ? AccountSize[data.accountSize] : AccountSize.Small\n this.classes = []\n if (data.classes && data.classes.items) {\n this.loadClasses(data.classes.items)\n }\n this.users = []\n if (data.users && data.users.items) {\n this.loadUsers(data.users.items)\n }\n }\n\n loadClasses(items: any[]) {\n this.classes = items.map((item: any) => new Class(item))\n }\n\n loadUsers(items: any[]) {\n this.users = items.map((item: any) => new User(item))\n }\n}\n\nexport default Account","import {Account} from \"./Account\";\nimport Registration from \"./Registration\";\nimport {UserRole, UserStatus} from \"../API\";\n\n\nclass User {\n id: string\n createdAt: string\n updatedAt: string\n active: boolean\n invitedAt: string\n accountId: string\n account?: Account\n firstName: string\n lastName: string\n email: string\n phone: string\n jobTitle: string\n userStatus: UserStatus\n role: UserRole\n registrations: Registration[]\n customerId: string\n\n constructor (data: any) {\n this.id = data.id\n this.createdAt = data.createdAt\n this.updatedAt = data.updatedAt\n this.active = data.active\n this.invitedAt = data.invitedAt\n this.accountId = data.accountId\n this.account = data.account ? new Account(data.account) : undefined\n this.firstName = data.firstName\n this.lastName = data.lastName\n this.email = data.email\n this.phone = data.phone\n this.jobTitle = data.jobTitle\n if (data.userStatus) {\n this.userStatus = data.userStatus\n } else if (data.active) {\n this.userStatus = UserStatus.Registered\n } else {\n this.userStatus = UserStatus.Inactive\n }\n this.role = data.role\n this.registrations = []\n if (data.registrations && data.registrations.items) {\n this.loadRegistrations(data.registrations.items)\n }\n this.customerId = data.customerId\n }\n\n loadRegistrations(items: any[]) {\n this.registrations = items.map((item: any) => {\n const r = new Registration(item)\n r.user = this\n return r\n })\n }\n\n get fullName(): string {\n return `${this.lastName}, ${this.firstName}`\n }\n\n get isStudent(): boolean {\n return !this.role || this.role === UserRole.Student || this.role === UserRole.Candidate || this.role === UserRole.Applicant\n }\n\n get isActive(): boolean {\n return this.userStatus === UserStatus.Registered\n }\n\n get isAdmin(): boolean {\n return this.role === UserRole.Admin || this.role === UserRole.Agent\n }\n\n get isAgent(): boolean {\n return this.role === UserRole.Agent\n }\n\n get isAdminOrAgent(): boolean {\n return this.role === UserRole.Admin || this.role === UserRole.Agent\n }\n get isEmployer(): boolean {\n return this.role === UserRole.Employer\n }\n}\n\nexport default User","import {ActivityType} from \"../API\";\nimport Account from \"./Account\";\nimport User from \"./User\";\n\nexport class Activity {\n id: string\n createdAt: string\n updatedAt: string\n accountId: string\n account?: Account\n userId: string\n user?: User\n activityDate: string\n activityType: ActivityType\n objectId: string\n values: {}\n\n constructor(data: any) {\n this.id = data.id\n this.createdAt = data.createdAt\n this.updatedAt = data.updatedAt\n this.accountId = data.accountId\n this.account = data.account\n this.userId = data.userId\n this.user = data.user\n this.activityDate = data.activityDate\n this.activityType = data.activityType\n this.objectId = data.objectId\n this.values = data.values\n }\n}\n\nexport default Activity","\n\nclass InvoiceItem {\n customer: string\n unit_amount: number\n quantity: number\n currency: string\n description: string\n discounts: any[]\n\n constructor (data: any) {\n this.customer = data.customer\n this.unit_amount = data.unit_amount\n this.quantity = data.quantity\n this.currency = data.currency\n this.description = data.description\n this.discounts = data.discounts\n }\n}\n\nexport default InvoiceItem","import InvoiceItem from \"./InvoiceItem\";\n\nexport class CustomField {\n name: string\n value: string\n\n constructor(data: any) {\n this.name = data.name\n this.value = data.value\n }\n}\n\nclass Invoice {\n customer: string\n collection_method: string\n auto_advance: boolean\n custom_fields: CustomField[]\n items: InvoiceItem[]\n\n constructor (data: any) {\n this.customer = data.customer\n this.collection_method = data.collection_method\n this.auto_advance = data.auto_advance\n if (data.custom_field) {\n this.custom_fields = data.custom_fields.map((field: any) => {\n return new CustomField(field)\n })\n } else {\n this.custom_fields = []\n }\n if (data.items) {\n this.items = data.items.map((item: any) => {\n return new InvoiceItem(item)\n })\n } else {\n this.items = []\n }\n }\n}\n\nexport default Invoice","import {timestampToISOString} from \"../stores/StoreUtilities\";\n\nexport class Charge {\n id: string\n amount: number\n created: string\n receipt_number: string\n receipt_url: string\n\n constructor (data: any) {\n this.id = data.id\n this.amount = data.amount / 100.0\n this.created = timestampToISOString(data.created)\n this.receipt_number = data.receipt_number\n this.receipt_url = data.receipt_url\n }\n}\n\nexport default Charge","import {AgreementType} from \"../API\";\n\nexport class Agreement {\n id: string\n createdAt: string\n updatedAt: string\n userId: string\n accountId: string\n agreementTypes: [AgreementType]\n agreementKey?: string \n\n constructor (data: any) {\n this.id = data.id\n this.createdAt = data.createdAt\n this.updatedAt = data.updatedAt\n this.userId = data.userId\n this.accountId = data.accountId\n this.agreementTypes = data.agreementTypes\n this.agreementKey = data.agreementKey\n }\n\n hasAgreementType(agreementType: AgreementType): boolean {\n return this.agreementTypes && this.agreementTypes.length > 0 ? this.agreementTypes.includes(agreementType) : false\n }\n}\n\nexport default Agreement","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {\n createStyles,\n DialogActions,\n DialogContent,\n DialogContentText, FormControlLabel, FormGroup,\n Grid,\n Paper, Radio, RadioGroup,\n TextField,\n Theme, Typography,\n withStyles,\n WithStyles,\n withTheme,\n WithTheme\n} from \"@material-ui/core\";\nimport {Link, RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport TitleBar from \"../../components/TitleBar\";\nimport DialogButton from \"../../components/form/DialogButton\";\nimport {observable} from \"mobx\";\nimport {inject, observer} from \"mobx-react\";\nimport FormValidator from \"../../components/form/FormValidator\";\nimport TextFieldValidator from \"../../components/form/TextFieldValidator\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport Notify from \"../../components/notify/Notify\";\nimport UserStore, {UserStoreConstants} from \"../../stores/UserStore\";\nimport User from \"../../model/User\";\nimport {\n AccountSize,\n AccountStatus,\n ActivityType, AgreementType,\n CreateAccountInput, CreateAgreementInput,\n CreateUserInput,\n UserRole,\n UserStatus\n} from \"../../API\";\nimport Visible from \"../../components/Visible\";\nimport AccountStore, {AccountStoreConstants} from \"../../stores/AccountStore\";\nimport ProgressButton from \"../../components/form/ProgressButton\";\nimport Class from \"../../model/Class\";\nimport {createUUID} from \"../../stores/StoreUtilities\";\nimport PrivacyPolicy from \"../../components/page/PrivacyPolicy\";\nimport TermsOfUse from \"../../components/page/TermsOfUse\";\nimport CheckboxValidator from \"../../components/form/CheckboxValidator\";\nimport Tracking from \"../../components/Tracking\";\n\nconst styles = (theme: Theme) => createStyles({\n rootStyle: {\n flexGrow: 1,\n justifyContent: 'top',\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh'\n },\n root: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n justifyContent: 'top',\n alignItems: 'center',\n },\n titleBar: {\n flexGrow: 1,\n justifyContent: \"space-between\",\n width: \"100%\",\n maxWidth: 480,\n height: 40,\n padding: theme.spacing(1),\n },\n message: {\n color: theme.palette.error.main,\n fontSize: 18,\n marginTop: 10\n },\n instructions: {\n color: theme.palette.text.primary,\n fontSize: 18,\n marginTop: 10\n },\n dialogPaper: {\n maxWidth: 480,\n marginTop: theme.spacing(1),\n marginLeft: theme.spacing(1),\n marginBottom: theme.spacing(1),\n marginRight: theme.spacing(1),\n },\n dialogContent: {\n padding: theme.spacing(2)\n },\n dialogActions: {\n justifyContent: \"center\",\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n paddingBottom: theme.spacing(2),\n borderRadius: \"0px 0px 10px 10px\"\n },\n dialogTitle: {\n paddingLeft: 20,\n paddingRight: 20,\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n textAlign: 'center'\n },\n label: {\n color: theme.palette.text.secondary,\n marginLeft: 0,\n textAlign: \"left\"\n },\n formGroup: {\n marginBottom: 0,\n paddingBottom: 0\n },\n radioGroup: {\n marginBottom: 0,\n paddingBottom: 0\n },\n fieldLabel: {\n fontSize: 12,\n fontWeight: 400,\n color: theme.palette.text.secondary,\n paddingTop: theme.spacing(1),\n paddingBottom: 0\n },\n termsOfUseText: {\n // color: '#252525',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n [theme.breakpoints.up('md')]: {\n paddingLeft: 36,\n },\n [theme.breakpoints.down('md')]: {\n paddingLeft: 22,\n },\n [theme.breakpoints.down('sm')]: {\n paddingLeft: 36,\n },\n [theme.breakpoints.down('xs')]: {\n paddingLeft: 40,\n },\n },\n link: {\n textDecoration: 'none',\n color: theme.palette.action.active\n },\n\n})\n\nenum AccountType {\n Individual = \"Individual\",\n Company = \"Company\",\n}\n\ninterface ISignUpPageProps {\n userStore?: UserStore\n accountStore?: AccountStore\n notify?: Notify\n privacyPolicy?: PrivacyPolicy\n termsOfUse?: TermsOfUse\n location?: any\n // promo?: string\n}\n\n@inject(\"userStore\", \"accountStore\", \"notify\", \"privacyPolicy\", \"termsOfUse\")\n@observer\nclass SignUpPage extends React.Component & RouteComponentProps & ISignUpPageProps & WithTheme> {\n\n @observable values = {\n accountType: \"Individual\",\n accountSize: \"Small\",\n accountName: \"\",\n firstName: \"\",\n lastName: \"\",\n jobTitle: \"\",\n email: \"\",\n password: \"\",\n phone: \"\",\n userId: \"\",\n accountId: \"\",\n role: UserRole.Employer,\n confirmationCode: \"\",\n termsCheckbox: false,\n route: undefined\n }\n @observable user?: User\n @observable isConfirming: boolean = false\n @observable isProcessing: boolean = false\n @observable message = \"\"\n\n componentDidMount () {\n this.values.userId = createUUID()\n this.values.accountId = createUUID()\n if (this.props.location && this.props.location.state && this.props.location.state.route) {\n this.values.route = this.props.location.state.route\n console.log(`SignupPage route: ${this.values.route}`)\n }\n }\n\n render() {\n const { classes } = this.props\n\n const title = \"GovGig Academy Sign Up\"\n\n return (\n \n \n \n \n \n \n \n \n \n \n IMPORTANT: If you are part of a company with an account, you should request an invitation and not create a new account.\n \n \n \n \n }\n label=\"Individual\"\n labelPlacement=\"end\"\n />\n }\n label=\"Company\"\n labelPlacement=\"end\"\n />\n \n \n {this.values.accountType === AccountType.Company &&\n \n }\n \n \n \n \n \n \n \n }\n label={\n \n I agree with the Terms of Use and Privacy Policy.  \n I give permission to communicate with me via email, text or phone.  \n \n }\n />\n \n\n \n {this.message}\n \n\n \n \n \n Please check your email for a verification code.\n \n \n \n \n Resend verification code\n \n \n\n \n \n \n Cancel\n \n \n { this.isConfirming ? \"Verify\" : \"Next\" }\n \n \n \n \n \n \n \n )\n }\n\n onChange = (event: React.ChangeEvent) => {\n const name = event.target.name\n if (name === \"termsCheckbox\") {\n this.values![name] = event.target.checked\n } else {\n this.values[name] = event.target.value\n }\n }\n\n onCancel() {\n ControlTower.back()\n }\n\n onSubmit = async () => {\n const {userStore, accountStore, notify} = this.props\n const values = this.values\n\n if (!this.isConfirming) {\n // Sign-up user\n this.isProcessing = true\n\n if (!values.termsCheckbox) {\n notify!.show(\"error\", \"You must check the Terms box to indicate you agree with the Terms of Use and Privacy Policy.\")\n return\n }\n\n if (values.accountType === AccountType.Individual) {\n values.accountId = AccountStoreConstants.PRIMARY_ACCOUNT_ID\n } else {\n values.accountId = createUUID()\n }\n\n const signupResult = await userStore!.signUp(values.userId, values.password, values.email.toLowerCase(), undefined,\n values.accountId, values.role)\n .catch((err: Error) => {\n let message\n if (err.name === UserStoreConstants.USERNAME_EXISTS_EXCEPTION || err.message === UserStoreConstants.EMAIL_EXISTS_MESSAGE) {\n message = \"This email is already in use.\"\n Tracking.event({action: 'SignupError', label:\"Email in use\"})\n } else {\n message = `Unable to create user. ${err.message}`\n Tracking.event({action: 'SignupError', label: `Unable to create user: ${err.message}`})\n }\n notify!.show(\"error\", message)\n this.isProcessing = false\n })\n if (signupResult) {\n this.isConfirming = true\n }\n this.isProcessing = false\n } else if (this.isConfirming) {\n this.isProcessing = true\n\n const confirmation = await userStore!.confirmSignUp(values.userId, values.confirmationCode)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to verify account\")\n Tracking.event({action: 'SignupError', label: `Unable to verify account: ${err.message}`})\n this.isProcessing = false\n })\n\n if (confirmation === \"SUCCESS\") {\n // Sign in\n let user = await userStore!.signIn(values.userId, values.password)\n .catch((err: Error) => {\n if (err.message !== UserStoreConstants.USER_NOT_FOUND) {\n notify!.show(\"error\", \"Unable to log in to account\")\n Tracking.event({action: 'SignupError', label: `Unable to log into account: ${err.message}`})\n this.isProcessing = false\n }\n })\n\n if (!user) {\n // Create user\n const createUserInput: CreateUserInput = {\n id: values.userId,\n userStatus: UserStatus.Registered,\n accountId: values.accountId,\n firstName: values.firstName,\n lastName: values.lastName,\n jobTitle: values.jobTitle,\n email: values.email.toLowerCase(),\n phone: values.phone,\n role: values.accountType === AccountType.Company ? UserRole.Employer : UserRole.Student,\n }\n\n user = await userStore!.createUser(createUserInput)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to create user\")\n Tracking.event({action: 'SignupError', label: `Unable to create user: ${err.message}`})\n this.isProcessing = false\n })\n\n if (user && values.accountType !== AccountType.Individual) {\n // Create account\n const createAccountInput: CreateAccountInput = {\n id: values.accountId,\n ownerId: user.id,\n name: values.accountName,\n accountStatus: AccountStatus.Active,\n // TODO: Remove accountSize\n accountSize: values.accountType === AccountType.Individual ? AccountSize.Small : AccountSize[values.accountSize]\n }\n\n const account = await accountStore!.createAccount(createAccountInput)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to create account\")\n Tracking.event({action: 'SignupError', label: `Unable to create account: ${err.message}`})\n this.isProcessing = false\n })\n\n if (account) {\n if (user) {\n // Sign in again to get updated attributes and groups\n user = await userStore!.signIn(values.email.toLowerCase(), values.password)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to sign in new user\")\n Tracking.event({action: 'SignupError', label: `Unable to sign in new user: ${err.message}`})\n this.isProcessing = false\n })\n\n if (user) {\n this.user = user\n userStore!.createActivity(ActivityType.AccountCreate, account.id)\n const classObj = await accountStore?.addFreeClass()\n .catch(error => {\n notify!.show(\"error\", \"Unable to add a class\")\n Tracking.event({action: 'SignupError', label: `Unable to add a class: ${error.message}`})\n })\n if (classObj) {\n await this.addFreeRegistration()\n .catch(error => {\n notify!.show(\"error\", \"Unable to register for a class\")\n Tracking.event({\n action: 'SignupError',\n label: `Unable to register for a class: ${error.message}`\n })\n })\n }\n }\n }\n }\n } else {\n user = await userStore!.signIn(values.email.toLowerCase(), values.password)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to sign in new user\")\n Tracking.event({action: 'SignupError', label: `Unable to sign in new user: ${err.message}`})\n this.isProcessing = false\n })\n\n if (user && user.account) {\n await accountStore!.init(user.account)\n }\n }\n\n this.isProcessing = false\n if (user) {\n // Add agreement\n const agreementInput: CreateAgreementInput = {\n userId: user.id,\n accountId: user.accountId,\n agreementTypes: [\n AgreementType.PrivacyPolicy,\n AgreementType.TermsOfUse\n ]\n }\n\n const agreement = await userStore!.createAgreement(agreementInput)\n\n if (!agreement) {\n notify!.show(\"error\", \"Error saving agreement\")\n return\n }\n\n notify!.show(\"success\", \"Welcome to GovGig Academy!\")\n Tracking.event({action: 'SignupSuccess'})\n if (values.route) {\n ControlTower.route(values.route)\n } else if (user.role === UserRole.Employer) {\n ControlTower.route(`${Routes.account}/${user.accountId}/classes`)\n } else {\n ControlTower.route(Routes.myClasses)\n }\n }\n }\n }\n }\n }\n\n onResendCode = () => {\n const { userStore, notify} = this.props\n\n userStore!.resendSignUp(this.values.userId)\n .then((result: any) => {\n notify!.show(\"success\", \"Verification code resent\")\n Tracking.event({action: 'SignupResendCode'})\n })\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to resend verification code\")\n Tracking.event({action: 'SignupError', label: `Unable to resend verification code: ${err.message}`})\n })\n }\n\n addFreeRegistration = async () => {\n const { accountStore, userStore, notify } = this.props\n const classes = await accountStore!.listClasses()\n const freeClass = classes.find((classObj: Class) => {\n return classObj.course?.isFree\n })\n if (freeClass) {\n await userStore!.addClassRegistration(freeClass)\n .catch(error => {\n notify!.show(\"error\", \"Unable to register for a class\")\n Tracking.event({action: 'SignupError', label: `Unable to register for a class: ${error.message}`})\n })\n } else {\n\n }\n }\n\n onClickPrivacyPolicy = () => {\n const { privacyPolicy } = this.props\n if (privacyPolicy) {\n privacyPolicy.show()\n }\n }\n\n onClickTermsOfUse = () => {\n const { termsOfUse } = this.props\n if (termsOfUse) {\n termsOfUse.show()\n }\n }\n}\n\nexport default withTheme((withStyles(styles)(SignUpPage)))\n","import * as React from \"react\";\nimport { createStyles, Theme, WithStyles, withStyles } from '@material-ui/core/styles'\nimport TextField, {TextFieldProps} from '@material-ui/core/TextField';\nimport {FormControlProps} from \"@material-ui/core/FormControl\";\nimport {inject} from \"mobx-react\";\n// import {isEmail, isMobilePhone, isPostalCode, isURL} from \"validator\"\nimport {IFieldValidator} from \"./FormValidator\"\n// import {isEmail, isMobilePhone, isPostalCode, isURL, MobilePhoneLocale} from \"validator\";\nimport isPostalCode, {PostalCodeLocale} from \"validator/lib/isPostalCode\";\nimport isEmail from \"validator/lib/isEmail\";\nimport isMobilePhone, {MobilePhoneLocale} from \"validator/lib/isMobilePhone\";\nimport isURL from \"validator/lib/isURL\";\nimport isFloat from 'validator/lib/isFloat'\nimport {parse} from \"date-fns\";\nimport {Autocomplete} from \"@material-ui/lab\";\n\n\n// type MobilePhoneLocale = ValidatorJS.MobilePhoneLocale;\n// type PostalCodeLocale = ValidatorJS.PostalCodeLocale;\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n }\n})\n\ninterface ITextFieldValidations {\n required?: boolean\n minLength?: number\n maxLength?: number\n isEmail?: boolean | null\n isMobilePhone?: boolean | null\n isPostalCode?: string | null\n isStrongPassword?: number\n matches?: string\n isURL?: boolean\n isURLMatch?: string\n isUsername?: string\n minDate?: string\n maxDate?: string\n minValue?: number\n maxValue?: number\n isFloat?: number | null\n}\n\ninterface ITextFieldValdatorProps {\n error?: boolean\n helperText?: React.ReactNode\n label?: React.ReactNode\n inputRef?: any\n required?: boolean\n validators?: ITextFieldValidations\n errorMessages?: any\n onBlur?: any // React.EventHandler\n onChange?: any // React.EventHandler\n formvalidator?: any\n validate?: any\n className?: string\n autocompleteOptions?: any\n}\n\nexport type TextFieldValidatorProps = TextFieldProps & ITextFieldValdatorProps & IFieldValidator\n\n@inject(\"formvalidator\")\nclass TextFieldValidator extends React.Component & TextFieldValidatorProps > {\n\n state = {\n isValid: true,\n errorMessage: \"\",\n value: \"\",\n }\n\n componentDidMount() {\n const {formvalidator} = this.props as ITextFieldValdatorProps\n if (formvalidator) {\n formvalidator.attachToForm(this)\n }\n }\n\n /* eslint-disable no-template-curly-in-string */\n\n static errorMessages = {\n required: \"${label} is required\",\n minLength: \"${label} must be at least ${param} characters\",\n maxLength: \"${label} must be no more than ${param} characters\",\n isMobilePhone: \"Invalid phone number\",\n isEmail: \"Invalid email\",\n isPostalCode: \"Invalid postal code\",\n isStrongPassword: \"Password must be at least 8 characters with at least one upper-case, digit or symbol character.\",\n matches: \"Invalid ${label}\",\n isURL: \"Invalid URL\",\n isURLMatch: \"Invalid URL\",\n isUsername: \"Username must be at least 8 characters of (a-z, 0-9, -._)\",\n minDate: \"${label} must be >= ${param}\",\n maxDate: \"${label} must be <= ${param}\",\n minValue: \"${label} must be >= ${param}\",\n maxValue: \"${label} must be <= ${param}\",\n isFloat: \"Must be a number\"\n }\n\n static defaultLocale = \"en-US\"\n static defaultCountry = \"US\"\n static minPasswordLength = 8\n\n render() {\n const {\n inputRef,\n error,\n onBlur,\n onChange,\n autocompleteOptions,\n ...rest\n } = this.props as ITextFieldValdatorProps;\n\n if (autocompleteOptions) {\n return (\n \n
\n this.onBlur(event, params.inputProps)}\n className={this.props.className ?? this.props.classes.root}\n error={!this.state.isValid || this.props.error}\n helperText={((!this.state.isValid || this.props.error) && this.state.errorMessage) || this.props.helperText}\n />
}\n />\n )\n } else {\n return (\n \n )\n }\n }\n\n private onBlur = (event: React.FocusEvent, inputParams?: any): void => {\n const { value } = event.currentTarget;\n const { props } = this\n const { onBlur } = props as FormControlProps\n\n this.validate(value)\n\n if (onBlur) {\n onBlur(event);\n }\n\n if (inputParams && inputParams.onBlur) {\n inputParams.onBlur(event)\n }\n }\n\n private onChange = (event: React.FocusEvent): void => {\n const { value } = event.currentTarget;\n const { props } = this\n const { onChange } = props as FormControlProps\n\n // console.log(`onChange(value='${value}')`)\n\n if (!this.state.isValid) {\n this.validate(value)\n }\n\n if (onChange) {\n onChange(event);\n }\n }\n\n private onAutocompleteChange = (event: any, value: any, reason: string): void => {\n const { props } = this\n const { onChange, autocompleteOptions } = props // as FormControlProps\n\n // console.log(`onAutocompleteChange(value='${value}', reason='${reason}')`)\n\n if (!this.state.isValid) {\n this.validate(value)\n }\n\n if (autocompleteOptions.onChange) {\n autocompleteOptions.onChange(event, value, reason)\n } else if (onChange) {\n if (typeof value !== 'string' && autocompleteOptions.getOptionLabel) {\n onChange({target: {name: props.name, value: autocompleteOptions.getOptionLabel(value)}});\n } else {\n onChange({target: {name: props.name, value: value}});\n }\n }\n }\n\n validate = (value: any): boolean => {\n const { validators, errorMessages, autocompleteOptions } = this.props as ITextFieldValdatorProps\n let isValid = true\n\n if (autocompleteOptions && autocompleteOptions.getOptionLabel && typeof value !== 'string') {\n value = autocompleteOptions.getOptionLabel(value)\n }\n\n if (validators) {\n const errorName = Object.keys(validators).find((validatorName: string) => {\n if (TextFieldValidator.validators[validatorName]) {\n const validator = TextFieldValidator.validators[validatorName]\n return !validator(value, validators[validatorName])\n } else {\n return false\n }\n })\n\n if (errorName) {\n let errorMessage = \"Error\"\n if (errorMessages && errorMessages[errorName]) {\n // Use custom error message\n errorMessage = errorMessages[errorName]\n } else if (TextFieldValidator.errorMessages[errorName]) {\n errorMessage = TextFieldValidator.errorMessages[errorName]\n }\n if (errorMessage.indexOf(\"${label}\") >= 0) {\n // Replace ${label} with label property\n const label = this.props.label || \"This\"\n errorMessage = errorMessage.replace(\"${label}\", label.toString())\n }\n if (errorMessage.indexOf(\"${param}\") >= 0) {\n // Replace ${param} with validator param\n const param = validators[errorName]\n errorMessage = errorMessage.replace(\"${param}\", param)\n }\n\n isValid = false\n this.setState({isValid, errorMessage })\n } else {\n isValid = true\n this.setState({isValid, errorMessage: \"\"})\n }\n }\n\n return isValid\n }\n\n static validators = {\n required: (value: string, param: boolean) => {\n return (!param || (value && value.length > 0))\n },\n minLength: (value: string, param: number) => {\n return (value && value.length >= param )\n },\n maxLength: (value: string, param: number) => {\n return (!value || value.length <= param )\n },\n isEmail: (value: string) => {\n return (!value || isEmail(value))\n },\n isMobilePhone: (value:string, param: any) => {\n const locale = (param!==null && param!==true) ? param : TextFieldValidator.defaultLocale\n return (!value || isMobilePhone(value, locale as MobilePhoneLocale))\n },\n isPostalCode: (value: string, param: any) => {\n const locale = (param!==null && param!==true) ? param : TextFieldValidator.defaultCountry\n return (!value || isPostalCode(value, locale as PostalCodeLocale))\n },\n isStrongPassword: (value: string, param: number = 5) => {\n return (TextFieldValidator.passwordStrength(value) >= param)\n },\n matches: (value: string, param: string) => {\n return (TextFieldValidator.matches(value, param))\n },\n isURL: (value: string, param: any) => {\n return (!value || isURL(value, param ? param : {}))\n },\n isURLMatch: (value: string, param: string) => {\n return (TextFieldValidator.matches(value, param))\n },\n isUsername: (value: string, param: string) => {\n return (TextFieldValidator.matches(value, param))\n },\n minDate: (value: string, param: string) => {\n return (TextFieldValidator.minDate(value, param))\n },\n maxDate: (value: string, param: string) => {\n return (TextFieldValidator.maxDate(value, param))\n },\n minValue: (value: string, param: number) => {\n return (value !== \"\" && parseFloat(value) >= param)\n },\n maxValue: (value: string, param: number) => {\n return (value !== \"\" && parseFloat(value) <= param)\n },\n isFloat: (value: string) => {\n return (!value || isFloat(value))\n }\n }\n\n static passwordStrength = (password: string) => {\n\n let strength = 0\n\n if (password && password.length > 0) {\n ++strength\n\n if (TextFieldValidator.hasLength(password, TextFieldValidator.minPasswordLength)) {\n ++strength\n\n if (TextFieldValidator.hasNumber(password)) {\n ++strength\n }\n\n if (TextFieldValidator.hasMixed(password)) {\n ++strength\n }\n\n if (TextFieldValidator.hasSpecial(password)) {\n ++strength\n }\n }\n }\n\n return strength\n }\n\n static hasLength = (value: string, minLength: number) => {\n return (value && value.length >= minLength)\n }\n\n static hasNumber = (value: string) => {\n return new RegExp(/[0-9]/).test(value);\n }\n\n static hasMixed = (value: string) => {\n return new RegExp(/[a-z]/).test(value) &&\n new RegExp(/[A-Z]/).test(value);\n }\n\n static hasSpecial = (value: string) => {\n return new RegExp(/[!#@$%^&*:;,)(+=._-]/).test(value);\n }\n\n static matches = (value: string, param: string) => {\n return new RegExp(param).test(value);\n }\n\n static minDate = (value: string, param: string) => {\n const date = parse(value, \"M/d/yyyy\", new Date())\n const minDate = parse(param, \"M/d/yyyy\", new Date())\n return (!isNaN(date.getTime()) && !isNaN(minDate.getTime()) && date.getTime() >= minDate.getTime())\n }\n\n static maxDate = (value: string, param: string) => {\n const date = parse(value, \"M/d/yyyy\", new Date())\n const maxDate = parse(param, \"M/d/yyyy\", new Date())\n return (!isNaN(date.getTime()) && !isNaN(maxDate.getTime()) && date.getTime() <= maxDate.getTime())\n }\n}\n\nexport default withStyles(styles)(TextFieldValidator)","import * as React from \"react\";\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport {Button, createStyles, Theme, withStyles, WithStyles} from \"@material-ui/core\";\nimport {ButtonProps} from \"@material-ui/core/Button\";\n\nconst styles = (theme: Theme) => createStyles({\n progressButton: {\n color: theme.palette.secondary.main,\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12\n },\n button: {\n paddingTop: theme.spacing(0.6),\n paddingBottom: theme.spacing(0.6),\n }\n})\n\ninterface IProgressButtonProps {\n classes: any\n processing: boolean\n fullWidth?: boolean\n children?: any\n}\n\nexport type ProgressButtonProps = ButtonProps | IProgressButtonProps\n\nclass ProgressButton extends React.Component & ProgressButtonProps> {\n\n state = {\n processing: false\n }\n\n componentDidUpdate(prevProps: any) {\n const processing = (this.props as IProgressButtonProps).processing\n if (processing !== prevProps.processing) {\n this.setState({processing})\n }\n }\n\n render() {\n const {\n classes,\n processing,\n children,\n ...rest\n } = this.props as IProgressButtonProps\n\n return (\n )\n }\n}\n\nexport default withStyles(styles)(ProgressButton)\n","import * as React from 'react';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\nimport { RouteComponentProps } from '@reach/router'\nimport {inject, observer} from \"mobx-react\";\nimport {observable} from \"mobx\";\nimport {Grid, Paper, TextField} from \"@material-ui/core\";\nimport DialogButton from \"../form/DialogButton\";\nimport FormValidator from \"../form/FormValidator\";\nimport UserStore, {UserStoreConstants} from \"../../stores/UserStore\";\nimport ControlTower, {Routes} from \"../ControlTower\";\nimport TextFieldValidator from \"../form/TextFieldValidator\";\nimport ProgressButton from \"../form/ProgressButton\";\nimport Tracking from \"../Tracking\";\nimport logo from \"../../images/GovGig_Logo_Transparent_512.png\";\n\nconst styles = (theme: Theme) => createStyles({\n message: {\n color: theme.palette.error.main,\n marginTop: 10\n },\n dialogPaper: {\n maxWidth: 480,\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n paddingTop: theme.spacing(1), \n paddingBottom: theme.spacing(1)\n },\n dialogImage: {\n height: 'auto',\n width: '100%'\n },\n dialogHero: {\n },\n logo: {\n height: '150px',\n width: 'auto'\n },\n titleBackground: {\n width: \"100%\",\n },\n dialogContent: {\n padding: \"0 20px 10px 20px\",\n },\n dialogActions: {\n justifyContent: \"center\",\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n backgroundColor: theme.palette.common.white\n },\n dialogTitle: {\n color: theme.palette.text.secondary,\n backgroundColor: theme.palette.common.white,\n paddingLeft: 20,\n paddingRight: 20,\n textAlign: 'center'\n },\n appTitle: {\n color: theme.palette.primary.main,\n fontSize: 28,\n fontWeight: 800,\n textAlign: \"center\",\n fontFamily: [\n 'Montserrat',\n 'sans-serif'\n ].join(','),\n }\n})\n\ninterface ISignInDialogProps {\n onSignIn: any,\n onSignUp?: any,\n onClose: any,\n onShowPasswordAssist: any\n userStore?: UserStore\n // confirm?: Confirm\n}\n\n@inject(\"userStore\")\n@observer\nclass SignInDialog extends React.Component & RouteComponentProps & ISignInDialogProps> {\n\n @observable values = {\n username: \"\",\n password: \"\",\n newPassword: \"\",\n userId: \"\",\n }\n @observable message = \"\"\n @observable newPasswordRequired = false\n @observable isProcessing = false\n\n onClose = () => {\n if (this.props.onClose) {\n this.message = \"\"\n this.props.onClose()\n }\n };\n\n onSignIn = () => {\n this.props.onSignIn()\n }\n\n onSignUp = () => {\n if (this.props.onSignUp) {\n this.props.onSignUp()\n } else {\n ControlTower.route(Routes.signup)\n }\n }\n\n onSubmit = async () => {\n const { userStore } = this.props\n this.message = \"\"\n this.isProcessing = true\n\n const password = this.values.password\n userStore!.signIn(this.values.username, password)\n .then((account: any) => {\n if (account.challengeName === \"NEW_PASSWORD_REQUIRED\") {\n if (this.values.newPassword) {\n userStore!.completeNewPassword(account, this.values.newPassword)\n .then((data: any) => {\n // Login with the new password\n userStore!.signIn(this.values.username, this.values.newPassword)\n .then((account2: any) => {\n this.isProcessing = false\n if (this.props.onSignIn) {\n this.message = \"\";\n this.onSignIn()\n }\n })\n .catch((err: any) => {\n this.message = err.message\n this.isProcessing = false\n });\n })\n .catch((err: any) => {\n this.message = err.message\n this.isProcessing = false\n });\n } else {\n // Prompt for new password\n this.newPasswordRequired = true\n this.message = \"A new password is required\"\n this.isProcessing = false\n }\n }\n else {\n Tracking.event({action: \"SignIn\"})\n this.isProcessing = false\n if (this.props.onSignIn) {\n this.message = \"\";\n this.onSignIn()\n }\n }\n })\n .catch((err: any) => {\n this.isProcessing = false\n Tracking.event({action: \"SignInError\", label: err.message})\n if (err.code === UserStoreConstants.USER_NOT_FOUND_EXCEPTION) {\n // Don't show \"User not found\" message to prevent phishing for valid usernames\n this.message = \"Incorrect username or password.\"\n } else if (err.message === UserStoreConstants.USER_NOT_CONFIRMED ||\n err.message === UserStoreConstants.EMAIL_VERIFICATION_PENDING ||\n err.message === UserStoreConstants.PHONE_VERIFICATION_PENDING) {\n // Signup is incomplete\n this.message = \"Please complete your sign up.\"\n } else {\n this.message = err.message;\n }\n });\n\n }\n\n onForgotPassword = () => {\n if (this.props.onShowPasswordAssist) {\n Tracking.event({action: \"PasswordAssist\"})\n this.message = \"\";\n this.props.onShowPasswordAssist()\n }\n }\n\n onChange = (event: React.ChangeEvent) => {\n const name = event.target.name\n this.values[name] = event.target.value\n }\n\n render() {\n const {classes} = this.props\n\n return (\n \n \n \n \"logo\"\n \n \n
\n GovGig Academy\n
\n
\n
\n \n \n Welcome!\n \n \n \n Please sign-in to your existing account or create a new one.\n \n \n \n {this.newPasswordRequired &&\n \n }\n \n {this.message}\n \n \n \n {/**/}\n {/* Sign In*/}\n {/**/}\n Log In\n \n \n \n Password Assistance\n \n \n \n \n Create New Account\n \n \n \n
\n )\n }\n}\n\nexport default withStyles(styles)(SignInDialog)\n","import * as React from 'react'\n\ninterface IVisibleProps {\n if: boolean\n children?: any\n}\n\nclass Visible extends React.Component {\n\n render() {\n const condition = this.props.if // (this.props.if !== undefined) ? this.props.if : false\n\n if (condition) {\n return (this.props.children)\n } else {\n return null\n }\n }\n}\n\nexport default Visible","import * as React from 'react';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\nimport { RouteComponentProps } from '@reach/router'\nimport {inject, observer} from \"mobx-react\";\nimport {observable} from \"mobx\";\nimport FormValidator from \"../form/FormValidator\";\nimport {Paper} from \"@material-ui/core\";\nimport DialogButton from \"../form/DialogButton\";\nimport UserStore, {UserStoreConstants} from \"../../stores/UserStore\";\nimport TextFieldValidator from \"../form/TextFieldValidator\";\nimport Visible from \"../Visible\";\nimport ProgressButton from \"../form/ProgressButton\";\nimport Notify from \"../notify/Notify\";\n\nconst styles = (theme: Theme) => createStyles({\n message: {\n color: 'red',\n marginTop: 10\n },\n dialogPaper: {\n minWidth: 360,\n maxWidth: 480,\n [theme.breakpoints.down('sm')]: {\n marginTop: 10\n },\n [theme.breakpoints.up('sm')]: {\n marginTop: 'calc(50vh - 325px)',\n },\n marginLeft: 10,\n marginRight: 10,\n borderRadius: 10 \n },\n dialogContent: {\n padding: \"0 20px 10px 20px\",\n },\n dialogActions: {\n justifyContent: \"flex-start\",\n paddingBottom: 20,\n paddingLeft: 20,\n borderRadius: \"0px 0px 10px 10px\"\n },\n dialogTitle: {\n paddingLeft: 20,\n paddingRight: 20,\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n borderRadius: \"10px 10px 0px 0px\"\n },\n submitButton: {\n color: \"#fff\",\n },\n instructions: {\n marginBottom: 0\n }\n})\n\ninterface IPasswordAssistDialogProps {\n onSignIn: any,\n onClose: any,\n userStore?: UserStore\n notify?: Notify\n}\n\n@inject(\"userStore\", \"notify\")\n@observer\nclass PasswordAssistDialog extends React.Component & RouteComponentProps & IPasswordAssistDialogProps> {\n\n @observable values = {\n email: \"\",\n code: \"\",\n newPassword: \"\",\n }\n @observable message = \"\"\n @observable confirming: boolean = false\n @observable newPasswordRequired: boolean = false\n @observable isProcessing: boolean = false\n\n private cognitoUser: any\n\n onClose = () => {\n if (this.props.onClose) {\n this.message = \"\"\n this.props.onClose()\n }\n };\n\n onSignIn = () => {\n this.props.onSignIn()\n }\n\n onSubmit = async () => {\n const { userStore, notify } = this.props\n this.message = \"\"\n\n if (this.confirming && !this.newPasswordRequired) {\n // Get new password\n this.newPasswordRequired = true\n } else if (this.newPasswordRequired) {\n // Verify confirmation code and reset password\n this.isProcessing = true\n const result = await userStore!.forgotPasswordSubmit(this.values.email.toLowerCase(), this.values.code, this.values.newPassword)\n .catch((err: Error) => {\n this.isProcessing = false\n this.message = err.message\n })\n\n this.isProcessing = false\n if (result) {\n // Sign-in\n this.isProcessing = true\n const user = await userStore!.signIn(this.values.email.toLowerCase(), this.values.newPassword)\n .catch((err: Error) => {\n this.isProcessing = false\n this.message = err.message\n })\n\n this.isProcessing = false\n if (user && this.props.onSignIn) {\n notify!.show(\"success\", \"Your password has been reset.\")\n this.props.onSignIn()\n }\n }\n } else {\n // Send forgot password confirmation code to email\n this.isProcessing = true\n const result = await userStore!.forgotPassword(this.values.email.toLowerCase())\n .catch((err: Error) => {\n this.isProcessing = false\n if (err.name === UserStoreConstants.USER_NOT_FOUND_EXCEPTION) {\n this.message = \"User not found.\"\n } else {\n this.message = err.message\n }\n })\n\n this.isProcessing = false\n if (result) {\n this.confirming = true\n }\n }\n }\n\n onResendCode = () => {\n const { userStore } = this.props\n this.message = \"\"\n\n userStore!.forgotPassword(this.values.email.toLowerCase())\n .then(() => {\n this.message = \"Confirmation code email has been resent.\"\n })\n .catch((err: Error) => {\n this.message = err.message\n })\n }\n\n onChange = (event: React.ChangeEvent) => {\n const name = event.target.name\n this.values[name] = event.target.value\n }\n\n render() {\n const { classes } = this.props\n\n return (\n \n \n \n Password Assistance\n \n \n \n Please submit your sign-in email address to reset your password.\n \n \n \n \n Please check your email for a confirmation code.\n \n \n \n Resend confirmation code\n \n \n \n \n Please enter a new password.\n \n \n \n \n {this.message}\n \n \n \n \n Submit\n \n \n Cancel\n \n \n \n \n );\n }\n}\n\nexport default withStyles(styles)(PasswordAssistDialog)\n","import * as React from 'react'\nimport { RouteComponentProps } from '@reach/router'\nimport {createStyles, withStyles, Theme, WithStyles, withTheme, WithTheme} from '@material-ui/core/styles'\nimport {Grid} from \"@material-ui/core\";\nimport SignInDialog from \"../../components/auth/SignInDialog\";\nimport UserStore from \"../../stores/UserStore\";\nimport {inject, observer} from \"mobx-react\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport config from 'react-global-configuration';\nimport Progress from \"../../components/Progress\";\nimport Logger from \"../../components/Logger\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport {observable, when} from \"mobx\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport Page from \"../../components/page/Page\";\nimport PasswordAssistDialog from \"../../components/auth/PasswordAssistDialog\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n flexGrow: 1,\n justifyContent: 'top',\n alignItems: 'center',\n },\n content: {\n display: 'flex',\n flexGrow: 1,\n width: \"100%\",\n flex: \"auto\",\n overflowY: \"auto\",\n },\n item: {\n justifyContent: 'top',\n alignItems: 'center'\n },\n signInDialog: {\n },\n\n})\n\ninterface IHomePageProps {\n userStore?: UserStore\n accountStore?: AccountStore\n progress?: Progress\n route?: string\n}\n\n@inject(\"userStore\", \"accountStore\", \"progress\")\n@observer\nclass HomePage extends React.Component & RouteComponentProps & IHomePageProps & WithTheme> {\n\n @observable isLoading = true\n @observable showPasswordAssist: boolean = false\n\n async componentDidMount () {\n const { userStore, accountStore, progress } = this.props\n\n when(\n () => !userStore!.isLoading && !userStore!.isAuthenticated,\n async () => {\n console.log(\"HomePage looking for current authenticated user\")\n userStore!.isLoading = true\n this.isLoading = true\n const cognitoUser = await userStore!.currentAuthenticatedUser()\n if (cognitoUser) {\n progress!.show(\"HomePage\")\n console.log(\"initializing current user\")\n // Load and initialize User\n await userStore!.initSession(cognitoUser)\n .then(async (result: any) => {\n console.log(\"Reloaded user from cache\")\n const account = userStore!.user!.account\n if (account) {\n await accountStore!.init(account)\n }\n this.isLoading = false\n progress!.hide(\"HomePage\")\n // if (userStore!.isAdmin) {\n // ControlTower.route(Routes.accounts)\n // }\n })\n .catch(async (reason: any) => {\n this.isLoading = false\n console.log(\"Unable to load user from cache\")\n progress!.hide(\"HomePage\")\n })\n } else {\n console.log(\"No existing authenticated user found\")\n userStore!.isLoading = false\n this.isLoading = false\n }\n Logger.info(\"App started\")\n }\n )\n\n when(\n () => !userStore!.isLoading && !accountStore!.isLoading,\n async () => {\n console.log(\"HomePage completed loading user\")\n this.isLoading = false\n progress!.hide(\"HomePage\")\n if (this.props.route) {\n console.log(`HomePage routing to ${this.props.route}`)\n ControlTower.route(this.props.route)\n } else {\n console.log(`HomePage routing to ${Routes.myClasses}`)\n ControlTower.route(Routes.myClasses)\n }\n\n }\n )\n\n }\n\n render() {\n const { classes, userStore } = this.props\n\n const isAuthenticated = userStore!.isAuthenticated\n\n let title = \"Sign In\"\n if (isAuthenticated) {\n title = (this.showPasswordAssist) ? \"Password Assist\" : \"My Classes\"\n }\n\n return (\n \n \n \n {!this.isLoading && !isAuthenticated && !this.showPasswordAssist &&\n \n \n \n }\n {this.showPasswordAssist &&\n \n {this.showPasswordAssist = false}}\n />\n \n }\n \n \n \n )\n }\n\n onSignIn = async () => {\n const { userStore, accountStore, route } = this.props\n\n this.showPasswordAssist = false\n\n const account = userStore!.user!.account\n if (account) {\n await accountStore!.init(account)\n\n if (route) {\n ControlTower.route(route)\n } else {\n if (userStore!.isAdminOrAgent) {\n ControlTower.route(Routes.accounts)\n } else if (userStore!.isEmployer) {\n ControlTower.route(`${Routes.account}/${account!.id}`)\n } else {\n ControlTower.route(Routes.myClasses)\n }\n }\n }\n }\n\n onSignUp = async () => {\n const { route } = this.props\n\n if (route) {\n const state = {\n route: route\n }\n ControlTower.route(Routes.signup, { state, replace:false})\n } else {\n ControlTower.route(Routes.signup)\n }\n }\n\n onSignInClose = () => {\n window.location.href = config.get('homeUrl')\n }\n\n onShowPasswordAssist = () => {\n this.showPasswordAssist = true\n }\n\n}\n\nexport default withTheme((withStyles(styles)(HomePage)))","import * as React from 'react'\nimport Page from '../components/page/Page'\nimport { RouteComponentProps } from '@reach/router'\nimport {createStyles, Theme, withStyles, WithStyles} from '@material-ui/core';\nimport CircularProgress from \"@material-ui/core/CircularProgress/CircularProgress\";\nimport {when} from \"mobx\";\nimport ControlTower, {Routes} from \"../components/ControlTower\";\n\nconst styles = (theme: Theme) => createStyles({\n content: {\n display: \"flex\",\n flexGrow: 1,\n flexDirection: \"column\",\n alignItems: \"center\",\n },\n progress: {\n marginTop: \"calc((100vh - 140px)/2)\"\n }\n})\n\ninterface ILoadingPageProps {\n userStore?: any\n route?: string\n}\n\nclass LoadingPage extends React.Component & RouteComponentProps & ILoadingPageProps> {\n\n componentDidMount() {\n console.log(\"LoadingPage mounting\")\n when(\n // once...\n () => this.props.userStore !== undefined\n && !this.props.userStore!.isLoading\n && this.props.route !== undefined,\n // ... then\n () => {\n if (this.props.route) {\n console.log(`LoadingPage routing to ${this.props.route}`)\n ControlTower.route(this.props.route)\n } else {\n console.log(`LoadingPage routing to ${Routes.myClasses}`)\n ControlTower.route(Routes.myClasses)\n }\n }\n )\n }\n\n render() {\n const { classes } = this.props;\n\n return (\n \n
\n \n
\n
\n )\n }\n}\n\nexport default withStyles(styles)(LoadingPage)\n","import * as React from \"react\";\nimport {navigate, RouteComponentProps} from \"@reach/router\";\nimport UserStore from \"../stores/UserStore\";\nimport {inject} from \"mobx-react\";\nimport NotFoundPage from \"../pages/NotFoundPage\";\nimport SignInPage from \"../pages/signIn/SignInPage\";\nimport LoadingPage from \"../pages/LoadingPage\";\nimport Tracking from \"./Tracking\";\nimport config from \"react-global-configuration\";\n\nexport const Routes = {\n index: \"/index.html\",\n account: \"/account\",\n accountEdit: \"/accountEdit\",\n accounts: \"/accounts\",\n accountsEdit: \"/accountsEdit\",\n class: \"/class\",\n accountClassEdit: \"/accountClassEdit\",\n courseEdit: \"/courseEdit\",\n courses: \"/courses\",\n courseDetail: \"/courseDetail\",\n coursePurchase: \"/coursePurchase\",\n myClasses: \"/myclasses\",\n notFound: \"/404\",\n privacy: \"/privacy\",\n privacyCCPA: \"/privacy/ccpa\",\n register: \"/register\",\n reports: \"/reports\",\n signout: \"/signout\",\n signup: \"/signup\",\n terms: \"/terms\",\n signin: \"/\",\n home: \"/\", // Must be last\n}\n\n/**\n * undefined -> allows unauthenticated access\n * isAuthenticated -> requires authentication\n * isEmployer -> requires owner role\n * isAdmin -> requires admin role\n */\nconst RouteRequirements = {\n account: {isAuthenticated: true},\n accountEdit: {isAuthenticated: true, roles: [\"Admin\", \"Agent\", \"Employer\"]},\n accounts: {isAuthenticated: true, roles: [\"Admin\", \"Agent\"]},\n // TODO: See if accountsEdit is used\n accountsEdit: {isAuthenticated: true, roles: [\"Admin\", \"Agent\", \"Employer\"]},\n accountClassEdit: {isAuthenticated: true, roles: [\"Admin\", \"Agent\", \"Employer\"]},\n class: {isAuthenticated: true},\n courses: {isAuthenticated: true, roles: [\"Admin\", \"Agent\"]},\n courseEdit: {isAuthenticated: true, roles: [\"Admin\", \"Agent\"]},\n coursePurchase: {isAuthenticated: true},\n myClasses: {isAuthenticated: true},\n reports: {isAuthenticated: true, roles: [\"Admin\", \"Agent\"]}\n}\n\ninterface IControlTowerProps {\n userStore?: UserStore\n children?: any\n}\n\n@inject(\"userStore\")\nclass ControlTower extends React.Component {\n\n private lastNavigatedRoute = \"\";\n\n static route = (to: string, options?: any) => {\n if (to.startsWith(\"http\")) {\n window.location.href = to\n } else if (to === Routes.home) {\n let homeUrl = config.get('homeUrl')\n if (homeUrl) {\n window.location.href = homeUrl\n } else {\n navigate(Routes.signin, options)\n }\n } else {\n navigate(to, options)\n }\n }\n\n static back = () => {\n window.history.back()\n }\n\n static open = (to: string, target: string = \"_blank\") => {\n window.open(to, target)\n }\n\n static get currentRoute(): string {\n return window.location.pathname\n }\n\n render() {\n const route = \"/\" + this.props[\"*\"]\n\n const {userStore} = this.props\n\n if (userStore && userStore!.isLoading) {\n console.log(`Routing ${route} to LoadingPage`)\n return \n } else if (userStore && !userStore.isAuthenticated && this.routeRequiresLogin(route)) {\n console.log(`Routing ${route} to SignInPage for authentication`)\n return \n } else if (userStore && !this.hasRequiredRole(route)) {\n console.log(`Route ${route} requires role`)\n return \n } else if (this.routeExists(route)) {\n console.log(`Routing to ${route}`)\n this.lastNavigatedRoute = route;\n Tracking.pageView(route)\n return ({this.props.children})\n } else {\n console.log(`Route ${route} not found`)\n this.lastNavigatedRoute = Routes.notFound;\n return \n }\n }\n\n private routeExists= (route: string): boolean => {\n const routeKey = Object.keys(Routes).find(key => route.startsWith(Routes[key]))\n if (routeKey) {\n return true\n }\n\n return false\n }\n\n private routeRequiresLogin = (route: string): boolean => {\n // Check if the route has any requirements\n const routeKey = Object.keys(Routes).find(key => route.startsWith(Routes[key]))\n if (routeKey) {\n const routeRequirements = RouteRequirements[routeKey]\n if (routeRequirements) {\n // console.log(`${route} requires login`)\n return true\n }\n }\n\n return false\n }\n\n private hasRequiredRole = (route: string): boolean => {\n const { userStore } = this.props\n // Check if the route has any role requirements\n const routeMatch = Object.values(Routes).find(value => route.startsWith(value))\n if (routeMatch) {\n const routeRequirements = RouteRequirements[routeMatch]\n if (routeRequirements && routeRequirements.roles) {\n if (userStore!.user) {\n const role = userStore!.user.role\n if (!routeRequirements.roles.find((r: string) => r === role)) {\n return false\n }\n } else {\n // if no user loaded, then assume the requirement isn't met\n return false\n }\n }\n }\n return true\n }\n}\n\nexport default ControlTower","import * as React from \"react\";\nimport {createStyles, Grid, Theme, Typography, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\n\nconst styles = (theme: Theme) => createStyles({\n titleBar: {\n color: theme.palette.text.primary,\n flexGrow: 1,\n justifyContent: \"space-between\",\n width: \"100%\",\n paddingLeft: theme.spacing(1),\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n },\n title: {\n justifyContent: \"left\",\n fontFamily: [\n 'Montserrat',\n 'sans-serif'\n ].join(','),\n fontSize: 20,\n fontWeight: 600,\n alignItems: \"center\",\n paddingTop: 0,\n lineHeight: 1.2,\n },\n actions: {\n justifyContent: \"right\",\n textAlign: \"right\",\n paddingTop: 4\n },\n})\n\ninterface ITitleBarProps {\n title: string,\n className?: string\n children?: any\n}\n\nclass TitleBar extends React.Component & ITitleBarProps & WithTheme> {\n\n render() {\n const { classes, className, title, children } = this.props\n\n return (\n \n \n \n \n {title}\n \n \n \n {children}\n \n \n \n )\n }\n}\n\nexport default withTheme((withStyles(styles)(TitleBar)))\n","import {observable} from \"mobx\";\nimport LearningAPI from \"../apis/LearningAPI\";\nimport * as APITypes from \"../API\"\nimport {Account} from \"../model/Account\";\nimport Class from \"../model/Class\";\nimport CourseStore from \"./CourseStore\";\nimport Course from \"../model/Course\";\nimport {\n AccountType,\n CreateClassInput,\n CreateRegistrationInput,\n UpdateAccountInput,\n UpdateClassInput\n} from \"../API\";\nimport {addYears, format, subDays} from \"date-fns\";\nimport {createUUID, getISODateFromDate, isoToLocalDate, phoneToE164Format} from \"./StoreUtilities\";\nimport User from \"../model/User\";\nimport Logger from \"../components/Logger\";\nimport Registration from \"../model/Registration\";\nimport Tracking from \"../components/Tracking\";\nimport ControlTower, {Routes} from \"../components/ControlTower\";\nimport Invoice from \"../model/Invoice\";\nimport BillingAPI from \"../apis/BillingAPI\";\nimport {Activity} from \"../model/Activity\";\nimport Charge from \"../model/Charge\";\nimport CertificateAPI from \"../apis/CertificateAPI\";\n\nexport const AccountStoreConstants = {\n PRIMARY_ACCOUNT_ID: \"primary\"\n}\n\nclass AccountStore {\n learningAPI: LearningAPI\n billingAPI: BillingAPI\n certificateAPI: CertificateAPI\n courseStore: CourseStore\n\n @observable account?: Account\n @observable isLoading = true\n\n accounts: Account[] = []\n classes: Class[] = []\n users: User[] = []\n\n constructor(options: any) {\n this.learningAPI = (options && options.learningAPI) ? options.learningAPI : null\n this.billingAPI = (options && options.billingAPI) ? options.billingAPI : null\n this.certificateAPI = (options && options.certificateAPI) ? options.certificateAPI : null\n this.courseStore = (options && options.courseStore) ? options.courseStore : null\n }\n\n async init(account: Account) {\n this.account = account\n await this.joinCourses()\n this.isLoading = false\n }\n\n async loadAccount(accountId: string) {\n if (!this.account || this.account.id !== accountId) {\n console.log(`loadingAccount(${accountId})`)\n this.isLoading = true\n const accountData = await this.learningAPI.getAccount(accountId)\n .catch((err: Error) => {\n console.log(`getAccount error: ${err.message}`)\n ControlTower.route(Routes.notFound)\n })\n if (accountData) {\n const account = new Account(accountData)\n await this.init(account)\n return account\n }\n } else {\n return this.account\n }\n }\n\n get isAgency() {\n return this.account ? this.account.accountType === AccountType.Agency : false\n }\n\n get isIndividual() {\n return this.account ? this.account.id === \"Primary\" : false\n }\n\n listAccounts = async (): Promise => {\n if (this.accounts.length === 0) {\n const data = await this.learningAPI.listAccounts()\n if (data && data.items) {\n this.accounts = data.items.map((item: any) => {\n return new Account(item)\n })\n }\n }\n\n return [...this.accounts]\n }\n\n getAccount = async (accountId: string): Promise => {\n let account: Account | undefined\n\n if (accountId === this.account!.id) {\n account = this.account\n } else {\n account = this.accounts.find((a: Account) => a.id === accountId)\n }\n\n if (!account) {\n const data = await this.learningAPI.getAccount(accountId)\n if (data) {\n account = new Account(data)\n }\n }\n\n return account\n }\n\n async createAccount(input: APITypes.CreateAccountInput) {\n const account = await this.learningAPI!.createAccount(input)\n if (account) {\n Tracking.event({action: \"Create Account\"})\n this.account = new Account(account)\n this.isLoading = false\n this.accounts.push(this.account)\n return this.account\n } else {\n return null\n }\n }\n\n async updateAccount(input: APITypes.UpdateAccountInput) {\n const result = await this.learningAPI!.updateAccount(input)\n if (result) {\n // Tracking.event({action: \"Create Account\"})\n const account = new Account(result)\n if (!account.classes || account.classes.length === 0) {\n account.classes = this.account!.classes\n }\n if (!account.users || account.users.length === 0) {\n account.users = this.account!.users\n }\n this.account = account\n\n // Update cache\n const index = this.accounts.findIndex((a: Account) => a.id === account.id)\n if (index >= 0) {\n this.accounts[index] = account\n } else {\n this.accounts.push(account)\n }\n return this.account\n } else {\n return null\n }\n }\n\n listClasses = async (): Promise => {\n if (this.account && this.account.classes) {\n await this.joinCourses()\n return [...this.account.classes]\n } else {\n return []\n }\n }\n\n getClass = (classId: string): Class | undefined => {\n const classObj = this.account!.classes.find((c: Class) => { return c.id === classId})\n return classObj\n }\n\n getClassAndRegistrations = async (classId: string): Promise => {\n const data = await this.learningAPI.getClass(classId)\n if (data) {\n const registrationCount = data.registrations && data.registrations.items ? data.registrations.items.length : 0\n if (data.seatsFilled === null || data.seatsFilled !== registrationCount) {\n // Update seatsFilled\n const input: UpdateClassInput = {\n id: data.id,\n accountId: data.accountId,\n seatsFilled: registrationCount\n }\n const result = await this.updateClass(input)\n if (result) {\n data.seatsFilled = result.seatsFilled\n }\n }\n return new Class(data)\n } else {\n return undefined\n }\n }\n\n async addClass(course: Course) {\n const termBegin = new Date()\n let termEnd = addYears(termBegin, 1)\n termEnd = subDays(termEnd, 1)\n const classInput: CreateClassInput = {\n courseId: course.id,\n accountId: this.account!.id,\n termBegin: getISODateFromDate(termBegin),\n termEnd: getISODateFromDate(termEnd)\n }\n const classObj = await this.learningAPI.createClass(classInput)\n if (classObj) {\n const newClass = new Class(classObj)\n newClass.course = course\n this.account!.classes.push(newClass)\n return newClass\n } else {\n return null\n }\n }\n\n async addPaidClass(classInput: CreateClassInput, course: Course) {\n const classObj = await this.learningAPI.createClass(classInput)\n if (classObj) {\n const newClass = new Class(classObj)\n newClass.course = course\n this.account!.classes.push(newClass)\n return newClass\n } else {\n return null\n }\n }\n\n async addFreeClass() {\n const courses = await this.courseStore!.listCourses()\n if (courses && courses.length > 0) {\n const course = courses.find((c: Course) => {\n return c.isFree\n })\n if (course) {\n return await this.addClass(course)\n }\n }\n return null\n }\n\n async updateClass(input: APITypes.UpdateClassInput) {\n const result = await this.learningAPI!.updateClass(input)\n if (result) {\n // Tracking.event({action: \"Create Account\"})\n let found = this.account!.classes.find((c: Class) => c.id === result.id)\n if (found) {\n found.update(result)\n } else {\n found = new Class(result)\n }\n return found\n } else {\n return null\n }\n }\n\n async addClassRegistration(input: CreateRegistrationInput) {\n\n // Verify seat availability in class\n const classObj = this.getClass(input.classId)\n if (!classObj) {\n throw new Error(\"Unable to find class\")\n }\n\n if (!classObj.course!.isFree) {\n if (!classObj.seatsPurchased || (classObj.seatsFilled && classObj.seatsFilled >= classObj.seatsPurchased)) {\n throw new Error(`${classObj.course!.title} is full. Please add more seats.`)\n }\n }\n\n const result = await this.learningAPI!.createRegistration(input)\n .catch(err => {\n Logger.error(\"Unable to create class registration\")\n })\n\n if (result) {\n const registration = new Registration(result)\n this.joinClassToRegistration(registration)\n return registration\n } else {\n return null\n }\n }\n\n async deleteClassRegistration(id: string) {\n\n const result = await this.learningAPI!.deleteRegistration(id)\n .catch(err => {\n Logger.error(\"Unable to delete class registration\")\n })\n\n if (result) {\n const registration = new Registration(result)\n return registration\n } else {\n return null\n }\n }\n\n async createCertificate(registration: Registration): Promise {\n\n const completedDate = isoToLocalDate(registration.completedAt)\n const result = await this.certificateAPI.create(\"StandardCertificateForm.pdf\",\n {\n student: `${registration.user?.firstName} ${registration.user?.lastName}`,\n course: registration.class?.course?.title,\n day: format(completedDate, \"do\"),\n monthYear: format(completedDate, \"MMMM, yyyy\")\n })\n\n return result\n }\n\n async joinCourses() {\n if (this.account && this.account.classes) {\n const courses = await this.courseStore!.listCourses()\n\n this.account.classes.forEach((c: Class) => {\n const courseFound = courses.find((course: Course) => course.id === c.courseId)\n if (courseFound) {\n c.course = courseFound\n }\n })\n // Sort classes by course title\n this.account.classes.sort((a: Class, b: Class) => {\n if (a.course && b.course) {\n return a.course.title.localeCompare(b.course.title)\n } else {\n return a.id.localeCompare(b.id)\n }\n })\n\n }\n }\n\n listUsers = async (accountId: string): Promise => {\n let users: User[] = []\n\n if (accountId) {\n let account = await this.getAccount(accountId)\n\n if (account) {\n if (account.users.length === 0) {\n const data = await this.learningAPI.getAccountUsers(accountId)\n if (data) {\n await account.loadUsers(data.users!.items!)\n }\n }\n\n users = [...account.users]\n }\n }\n\n return users\n }\n\n getUser = async (userId: string, accountId?: string): Promise => {\n let user : User | undefined\n\n if (accountId) {\n let account = await this.getAccount(accountId)\n if (account) {\n user = account.users.find((u: User) => u.id === userId)\n }\n }\n\n if (!user) {\n const data = await this.learningAPI.getUser(userId)\n if (data) {\n user = new User(data)\n this.joinClassesToUser(user)\n }\n }\n\n return user\n }\n\n joinClassesToUser = (user: User) => {\n if (this.account && this.account.classes && user.registrations.length > 0) {\n user.registrations.forEach((r: Registration) => {\n r.class = this.findClass(r.classId)\n })\n }\n }\n\n joinClassToRegistration = (registration: Registration) => {\n if (!registration.class) {\n registration.class = this.findClass(registration.classId)\n }\n }\n\n findUser = async (email: string): Promise => {\n let user\n const users = await this.listUsers(this.account!.id)\n if (users && users.length > 0) {\n const search = email.toLowerCase()\n user = users.find((u: User) => {\n return u.email === search\n })\n }\n return user\n }\n\n findClass = (id: string) => {\n return this.account!.classes.find((c: Class) => c.id === id)\n }\n\n async updateUser(input: APITypes.UpdateUserInput) {\n if (input.phone) {\n input.phone = phoneToE164Format(input.phone)\n }\n const update = await this.learningAPI!.updateUser(input)\n if (update) {\n const user = new User(update)\n // Update list\n const index = this.account!.users.findIndex((u: User) => { return u.id === input.id})\n if (index >= 0) {\n this.account!.users[index] = user\n }\n return user\n } else {\n return null\n }\n }\n\n async createUser(input: APITypes.CreateUserInput) {\n // Verify email is not in use\n const existingUser = await this.findUser(input.email)\n if (existingUser) {\n throw Error(\"This email is already in use\")\n }\n\n input.id = createUUID()\n\n if (input.phone) {\n input.phone = phoneToE164Format(input.phone)\n }\n\n const data = await this.learningAPI!.createUser(input)\n if (data) {\n Tracking.event({action: \"Create User\"})\n const user = new User(data)\n this.account!.users.push(user)\n return user\n } else {\n return null\n }\n }\n\n async deleteUser(userId: string) {\n const result = await this.learningAPI!.deleteUser(userId)\n if (result) {\n const user = new User(result)\n // Remove from list\n const index = this.account!.users.findIndex((u: User) => u.id === userId)\n if (index >= 0) {\n this.account!.users.splice(index, 1)\n }\n return user\n } else {\n return null\n }\n }\n\n // Billing Related Methods\n\n createInvoice = async (user: User, course: Course, couponId: string | undefined, quantity: number, amount: number, tokenId: string | undefined) => {\n const invoice = new Invoice({\n customer: this.account!.customerId,\n collection_method: \"charge_automatically\",\n auto_advance: true,\n items: [\n {\n customer: this.account!.customerId,\n unit_amount: Math.round(amount * 100),\n quantity: quantity,\n currency: \"usd\",\n description: course.title,\n }\n ]\n })\n\n if (couponId) {\n invoice.items[0].discounts = [\n {coupon: couponId}\n ]\n }\n\n const result = await this.billingAPI.createInvoice(user, this.account!, invoice, tokenId)\n\n if (!this.account!.customerId && result && result.customer) {\n const input: UpdateAccountInput = {\n id: this.account!.id,\n customerId: result.customer\n }\n const account = await this.updateAccount(input)\n if (account) {\n this.account!.customerId = account.customerId\n }\n }\n // console.log(`createInvoice = ${JSON.stringify(result)}`)\n\n return (result)\n }\n\n getCustomer = async (id: string) => {\n const result = await this.billingAPI.getCustomer(id)\n return result\n }\n\n deleteSource = async (sourceId: string) => {\n if (this.account!.customerId) {\n return await this.billingAPI.deleteSource(this.account!.customerId, sourceId)\n } else {\n return null\n }\n }\n\n // Charges methods\n\n listCharges = async (accountId: string) => {\n let charges: Charge[] = []\n\n const account = await this.getAccount(accountId)\n if (account && account.customerId) {\n const result = await this.billingAPI.getCharges(account.customerId)\n if (result && result.data) {\n charges = result.data.map((item: any) => {\n return new Charge(item)\n })\n }\n }\n\n return charges\n }\n\n // Activity related methods\n\n listAccountActivity = async (accountId: string, filter: APITypes.ModelActivityFilterInput): Promise => {\n const data = await this.learningAPI.listAccountActivity(accountId, filter)\n if (data && data.items) {\n return data.items.map((item: any) => {\n return new Activity(item)\n })\n }\n\n return []\n }\n\n listActivityByDate = async (date: string, filter?: APITypes.ModelActivityFilterInput): Promise => {\n let activities: Activity[] = []\n\n const data = await this.learningAPI.listActivityByDate(date, filter)\n if (data && data.items) {\n activities = data.items.map((item: any) => {\n return new Activity(item)\n })\n await this.joinActivities(activities)\n }\n\n return activities\n }\n\n joinActivities = async (activities: Activity[]) => {\n if (this.accounts.length === 0) {\n await this.listAccounts()\n }\n\n for (const a of activities) {\n a.account = await this.getAccount(a.accountId)\n if (a.account && a.account.users.length === 0) {\n await this.listUsers(a.accountId)\n }\n a.user = await this.getUser(a.userId, a.accountId)\n }\n }\n\n}\n\nexport default AccountStore","import * as React from \"react\";\nimport {inject} from \"mobx-react\";\nimport Checkbox, {CheckboxProps} from \"@material-ui/core/Checkbox\";\nimport {createStyles, FormControl, FormHelperText, Theme, withStyles, WithStyles} from \"@material-ui/core\";\n\nconst styles = (theme: Theme) => createStyles({\n error: {\n color: theme.palette.error.main,\n width: 48,\n height: 30\n },\n noError: {\n width: 48\n }\n})\n\ninterface ICheckboxValidatorProps {\n onChange?: React.EventHandler\n formvalidator?: any\n}\n\ntype CheckboxValidatorProps = CheckboxProps | ICheckboxValidatorProps\n\n@inject(\"formvalidator\")\nclass CheckboxValidator extends React.Component & CheckboxValidatorProps> {\n\n state = {\n checked: false,\n isValid: true // Start valid until onChange() or validate() event\n }\n\n componentDidMount() {\n const {formvalidator} = this.props as ICheckboxValidatorProps\n if (formvalidator) {\n formvalidator.attachToForm(this)\n }\n }\n\n private onChange = (event: React.ChangeEvent): void => {\n const { checked } = event.currentTarget;\n const { props } = this\n const { onChange } = props as ICheckboxValidatorProps\n\n this.setState({checked, isValid:checked})\n\n if (onChange) {\n onChange(event);\n }\n }\n\n validate = (value: boolean): boolean => {\n // Ignore value because only checked matters\n this.setState({isValid:this.state.checked})\n return this.state.checked\n }\n\n render() {\n const {\n onChange,\n classes,\n ...rest\n } = this.props\n\n const className = (this.state.isValid) ? classes.noError : classes.error\n\n return (\n \n \n \n {this.state.isValid ? \"\" : \"Required\"}\n \n )\n }\n\n}\n\nexport default withStyles(styles)(CheckboxValidator)","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {Box, createStyles, Grid, Tab, Tabs, Theme, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport {inject, observer} from \"mobx-react\";\nimport UserStore from \"../../stores/UserStore\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport Account from \"../../model/Account\"\nimport {observable, when} from \"mobx\";\nimport User from \"../../model/User\";\nimport Progress from \"../../components/Progress\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport AccountInfo from \"./AccountInfo\";\nimport AccountClasses from \"./AccountClasses\";\nimport AccountUsers from \"./AccountUsers\";\nimport TitleBar from \"../../components/TitleBar\";\nimport NavigationBar from \"../../components/NavigationBar\";\nimport AccountBilling from \"./AccountBilling\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n flexGrow: 1,\n width: \"100%\",\n justifyContent: 'top',\n alignItems: 'center',\n },\n tabs: {\n\n },\n tab: {\n [theme.breakpoints.down('xs')]: {\n fontSize: 15,\n },\n [theme.breakpoints.up('sm')]: {\n fontSize: 15,\n },\n [theme.breakpoints.up('sm')]: {\n fontSize: 15,\n },\n fontWeight: 800\n },\n hiddenTab: {\n display: \"none\"\n }\n})\n\nexport enum AccountTabNames {\n info = \"info\",\n classes = \"classes\",\n students = \"students\",\n reports = \"reports\"\n}\n\ninterface IAccountPageProps {\n userStore?: UserStore\n accountStore?: AccountStore\n progress?: Progress\n accountId?: string\n tab?: string\n}\n\n@inject(\"userStore\", \"accountStore\", \"progress\")\n@observer\nclass AccountPage extends React.Component & RouteComponentProps & IAccountPageProps & WithTheme> {\n\n tabNames: string[] = [\"info\", \"classes\", \"billing\", \"people\"]\n\n @observable account?: Account\n @observable user?: User\n @observable isLoading = true\n\n componentDidMount () {\n const { progress, accountId } = this.props\n\n this.isLoading = true\n progress!.show(\"AccountPage\")\n const { userStore, accountStore} = this.props\n when(\n () => !userStore!.isLoading && accountId !== undefined,\n async () => {\n this.account = await accountStore!.loadAccount(accountId!)\n this.user = userStore!.user\n this.isLoading = false\n progress!.hide(\"AccountPage\")\n }\n )\n }\n\n handleChange = (event: any, value: any) => {\n // Navigate to tab to allow a direct url to each tab\n const tabName = this.tabNames[value]\n ControlTower.route(`${Routes.account}/${this.props.accountId}/${tabName}`)\n }\n\n render() {\n const { classes, userStore } = this.props\n\n if (!this.account) {\n return null\n }\n\n const title = this.isLoading ? \"Account\" : this.account!.name\n\n const tabName = (this.props.tab !== undefined) ? this.props.tab : this.tabNames[0]\n let tabValue = this.tabNames.findIndex(name => tabName === name)\n if (tabValue < 0) {\n tabValue = 0\n }\n\n const isAdminOrAgent = userStore!.isAdminOrAgent\n const isEmployer = userStore!.isEmployer\n\n return (\n \n \n
\n \n { isAdminOrAgent &&\n \n }\n \n \n \n \n \n \n \n {(isEmployer || isAdminOrAgent) &&\n \n }\n \n \n \n \n {tabValue === 0 && }\n {tabValue === 1 && }\n {tabValue === 2 && }\n {tabValue === 3 && (isEmployer || isAdminOrAgent) && }\n \n
\n
\n
\n )\n }\n\n onBack = () => {\n ControlTower.route(Routes.accounts)\n }\n\n onAddClass = () => {\n // TODO\n }\n\n}\n\nexport default withTheme((withStyles(styles)(AccountPage)))\n","import * as React from 'react'\nimport Page from '../components/page/Page'\nimport { RouteComponentProps } from '@reach/router'\nimport {createStyles, withStyles, Theme, WithStyles, withTheme, WithTheme} from '@material-ui/core/styles'\nimport {inject} from \"mobx-react\";\nimport UserStore from \"../stores/UserStore\";\nimport ControlTower, {Routes} from \"../components/ControlTower\";\nimport Notify from \"../components/notify/Notify\";\n\nconst styles = (theme: Theme) => createStyles({\n rootStyle: {\n flexGrow: 1,\n justifyContent: 'space-between',\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh'\n },\n\n})\n\ninterface ISignOutPageProps {\n userStore?: UserStore\n notify?: Notify\n}\n\n@inject(\"userStore\", \"notify\")\nclass SignOutPage extends React.Component & RouteComponentProps & ISignOutPageProps & WithTheme> {\n\n async componentDidMount() {\n const { userStore, notify } = this.props\n\n notify!.close()\n userStore!.signOut()\n ControlTower.route(Routes.home)\n }\n\n render() {\n const { classes } = this.props\n\n return (\n \n \n )\n }\n}\n\nexport default withTheme((withStyles(styles)(SignOutPage)))","import * as React from 'react'\nimport {\n createStyles,\n Icon,\n Theme,\n withStyles,\n WithStyles,\n withTheme,\n WithTheme,\n Typography,\n Button\n} from \"@material-ui/core\";\n\nconst styles = (theme: Theme) => createStyles({\n primaryButton: {\n minHeight: 24,\n marginLeft: 5,\n minWidth: 64,\n color: theme.palette.primary.contrastText,\n background: theme.palette.primary.main,\n \"&:hover\": {\n background: theme.palette.primary.dark,\n },\n \"&:active\": {\n background: theme.palette.primary.light,\n },\n },\n secondaryButton: {\n minHeight: 24,\n marginLeft: 5,\n minWidth: 64,\n color: theme.palette.secondary.contrastText,\n backgroundColor: theme.palette.secondary.light,\n borderColor: theme.palette.secondary.light,\n \"&:hover\": {\n background: theme.palette.secondary.light,\n },\n \"&:active\": {\n background: theme.palette.secondary.dark,\n },\n },\n tertieryButton: {\n minHeight: 24,\n marginLeft: 5,\n minWidth: 64,\n color: theme.palette.primary.contrastText,\n \"&:hover\": {\n background: theme.palette.primary.light,\n },\n \"&:active\": {\n background: theme.palette.primary.dark,\n },\n },\n icon: {\n color: theme.palette.secondary.contrastText\n },\n label: {\n marginTop: 2 // Text was not appearing vertically centered, this adjustment fixes the issue.\n }\n})\n\ninterface ITitleButtonProps {\n title?: string\n icon?: string\n onClick?: any\n variant?: 'primary' | 'secondary' | 'tertiary'\n className?: string\n}\n\nclass TitleButton extends React.Component & ITitleButtonProps & WithTheme> {\n\n onClick = (event: any) => {\n if (this.props.onClick) {\n this.props.onClick()\n }\n }\n\n render() {\n const { classes, icon, title, onClick, variant } = this.props\n\n let vari: \"contained\" | \"outlined\" | \"text\" = \"contained\"\n let className = classes.primaryButton\n if (variant === \"secondary\") {\n vari = \"contained\"\n className = classes.secondaryButton\n } else if (variant === \"tertiary\") {\n vari = \"text\"\n className = classes.tertieryButton\n }\n\n if (this.props.className) {\n className = this.props.className\n }\n\n return (\n \n )\n }\n}\n\nexport default withTheme((withStyles(styles)(TitleButton)))","import * as React from \"react\";\nimport {\n Card, CardActionArea,\n CardContent,\n createStyles,\n Grid,\n Theme,\n Typography,\n withStyles,\n WithStyles\n} from \"@material-ui/core\";\nimport {observer} from \"mobx-react\";\nimport Account from \"../../model/Account\"\nimport TitleButton from \"../../components/TitleButton\";\nimport {isoToLocalDate} from \"../../stores/StoreUtilities\";\nimport {format} from \"date-fns\";\n\nconst styles = (theme: Theme) => createStyles({\n card: {\n width: '100%',\n minHeight: 80,\n padding: theme.spacing(1)\n },\n content: {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.paper,\n padding: \"5px 10px\",\n display: \"flex\",\n flexGrow: 1\n },\n actionArea: {\n color: theme.palette.secondary.main\n },\n titleBar: {\n marginBottom: 4\n },\n title: {\n fontSize: 20,\n fontWeight: 600,\n },\n titleButtons: {\n textAlign: \"right\"\n },\n details: {\n maxHeight: 24,\n overflow: \"hidden\",\n },\n status: {\n textAlign: \"right\"\n },\n\n})\n\ninterface IAccountCardProps {\n account: Account\n onCardAction?: any\n onEdit?: any\n}\n\n@observer\nclass AccountCard extends React.Component & IAccountCardProps> {\n\n render() {\n const { classes, account, onCardAction } = this.props\n const status = account.accountStatus.toString()\n const createdAt = format(isoToLocalDate(account.createdAt), \"M/d/yyy\")\n\n return (\n \n \n \n \n \n {onCardAction &&\n \n \n {account.name}\n \n \n }\n {!onCardAction &&\n \n {account.name}\n \n }\n \n \n \n \n \n \n \n\n \n \n \n {account.address} \n \n \n \n \n {createdAt}\n \n \n \n\n \n \n \n {account.city && `${account.city},`} {account.state} {account.postalCode} \n \n \n \n \n {status}\n \n \n \n\n \n \n \n )\n }\n\n onEdit = () => {\n if (this.props.onEdit) {\n this.props.onEdit(this.props.account)\n }\n }\n\n onCardAction = () => {\n if (this.props.onCardAction) {\n this.props.onCardAction(this.props.account)\n }\n }\n}\n\nexport default withStyles(styles)(AccountCard)\n","import * as React from \"react\";\nimport {\n Box,\n Card, CardActionArea,\n CardContent,\n createStyles,\n Grid,\n Theme,\n Typography,\n withStyles,\n WithStyles\n} from \"@material-ui/core\";\nimport {inject, observer} from \"mobx-react\";\nimport User from \"../../model/User\";\nimport {phoneToNationalFormat} from \"../../stores/StoreUtilities\";\nimport TitleButton from \"../../components/TitleButton\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\n\n\nconst styles = (theme: Theme) => createStyles({\n card: {\n maxWidth: '100%',\n minHeight: 125,\n padding: theme.spacing(1),\n },\n content: {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.paper,\n padding: \"5px 10px\",\n },\n title: {\n fontSize: 20,\n fontWeight: 600,\n },\n titleButtons: {\n textAlign: \"right\",\n },\n owner: {\n fontSize: 14,\n fontWeight: 400,\n },\n details: {\n fontSize: 14,\n fontWeight: 400,\n maxHeight: 24,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\"\n },\n role: {\n color: theme.palette.text.primary,\n fontSize: 14,\n fontWeight: 400,\n textAlign: \"right\"\n },\n actionArea: {\n color: theme.palette.secondary.main\n },\n\n})\n\ninterface IUserCardProps {\n user: User\n onCardAction?: any\n}\n\n@inject('user')\n@observer\nclass UserCard extends React.Component & IUserCardProps> {\n\n render() {\n const { classes, user, onCardAction } = this.props\n const status = user.userStatus.toString()\n\n return (\n \n \n \n \n \n \n {onCardAction &&\n \n \n {user.lastName}, {user.firstName}\n \n \n }\n {!onCardAction &&\n \n {user.lastName}, {user.firstName}\n \n }\n \n \n \n {user.email}\n \n \n \n \n {phoneToNationalFormat(user.phone)}\n \n \n \n \n {user.jobTitle}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {status}\n \n \n \n \n {user.role}\n \n \n \n \n \n \n \n )\n }\n\n onEdit = () => {\n const { user } = this.props\n ControlTower.route(`${Routes.account}/${user.accountId}/userEdit/${user.id}`)\n }\n\n onCardAction = () => {\n if (this.props.onCardAction) {\n this.props.onCardAction(this.props.user)\n }\n }\n\n}\n\nexport default withStyles(styles)(UserCard)\n","import * as React from 'react'\nimport {createStyles, Grid, Theme, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\nimport {inject, observer} from \"mobx-react\";\nimport UserStore from \"../../stores/UserStore\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport AccountCard from \"./AccountCard\";\nimport Account from \"../../model/Account\"\nimport {observable, when} from \"mobx\";\nimport User from \"../../model/User\";\nimport Progress from \"../../components/Progress\";\nimport {AccountType, UserRole} from \"../../API\";\nimport UserCard from \"./UserCard\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n flexGrow: 1,\n justifyContent: 'top',\n alignItems: 'center',\n },\n content: {\n justifyContent: 'top',\n alignItems: 'center',\n width: \"100%\",\n maxWidth: 960,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(3)\n },\n card: {\n width: \"100%\",\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1)\n },\n})\n\ninterface IAccountInfoProps {\n userStore?: UserStore\n accountStore?: AccountStore\n progress?: Progress\n}\n\n@inject(\"userStore\", \"accountStore\", \"progress\")\n@observer\nclass AccountInfo extends React.Component & IAccountInfoProps & WithTheme> {\n\n @observable account?: Account\n @observable user?: User\n @observable isLoading = true\n\n componentDidMount () {\n const { progress } = this.props\n this.isLoading = true\n progress!.show(\"AccountInfo\")\n const { userStore, accountStore} = this.props\n when(\n () => !userStore!.isLoading && !accountStore!.isLoading,\n () => {\n this.account = accountStore!.account\n this.user = userStore!.user\n this.isLoading = false\n progress!.hide(\"AccountInfo\")\n }\n )\n }\n\n render() {\n const { classes } = this.props\n\n if (this.isLoading) {\n return null\n }\n\n return (\n
\n \n {((this.account!.accountType === AccountType.Agency && this.user!.role === UserRole.Employer) ||\n (this.user!.role === UserRole.Admin)) &&\n \n \n \n }\n {(this.account!.accountType === AccountType.Individual || this.user!.role === UserRole.Student) &&\n (this.user!.role !== UserRole.Admin) &&\n \n \n \n }\n \n
\n )\n }\n\n onEdit = async (account: Account) => {\n ControlTower.route(`${Routes.accountEdit}/${account.id}`)\n }\n\n}\n\nexport default withTheme((withStyles(styles)(AccountInfo)))","import * as React from \"react\";\nimport {\n Box,\n Card, CardActionArea,\n CardContent, CardMedia,\n createStyles,\n Grid,\n Theme,\n Typography,\n withStyles,\n WithStyles\n} from \"@material-ui/core\";\nimport {inject, observer} from \"mobx-react\";\nimport Class from \"../../model/Class\";\nimport S3UrlCacheStore from \"../../stores/S3UrlCacheStore\";\nimport {observable} from \"mobx\";\nimport TitleButton from \"../../components/TitleButton\";\nimport {format, isBefore, startOfToday} from \"date-fns\";\nimport {isoToLocalDate} from \"../../stores/StoreUtilities\";\nimport Visible from \"../../components/Visible\";\nimport UserStore from \"../../stores/UserStore\";\n\nconst styles = (theme: Theme) => createStyles({\n card: {\n minHeight: 90,\n },\n content: {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.paper,\n },\n actionArea: {\n color: theme.palette.secondary.main\n },\n title: {\n fontSize: 20,\n fontWeight: 600,\n lineHeight: 1.1,\n paddingTop: theme.spacing(0.5)\n },\n titleButtons: {\n textAlign: \"right\"\n },\n description: {\n color: theme.palette.text.secondary,\n fontSize: 14,\n fontWeight: 400,\n lineHeight: 1.1,\n paddingTop: 4,\n paddingBottom: 0\n },\n titleDescriptionMax: {\n overflow: \"hidden\",\n },\n titleDescription: {\n overflow: \"hidden\",\n },\n seats: {\n color: theme.palette.text.secondary,\n fontSize: 14,\n fontWeight: 400,\n lineHeight: 1.1,\n textAlign: \"center\",\n paddingTop: 4,\n paddingLeft: 5\n },\n details: {\n fontSize: 14,\n fontWeight: 400,\n maxHeight: 24,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\"\n },\n cover: {\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1)\n },\n mediaArea: {\n display: \"flex\",\n justifyContent: \"center\",\n },\n media: {\n width: 90,\n height: 90,\n margin: \"8px 0 4px 8px\",\n },\n image: {\n width: \"100%\",\n height: \"auto\"\n }\n})\n\ninterface IClassCardProps {\n classObj: Class\n s3UrlCacheStore?: S3UrlCacheStore\n userStore?: UserStore\n onCardAction?: any\n onAddClass?: any\n}\n\n@inject(\"s3UrlCacheStore\", \"userStore\")\n@observer\nclass ClassCard extends React.Component & IClassCardProps> {\n\n @observable coverImageUrl?: string\n\n componentDidMount() {\n const { s3UrlCacheStore, classObj } = this.props\n\n if (classObj.course && classObj.course.coverUrl) {\n const coverUrl = classObj.course.coverUrl\n s3UrlCacheStore!.get(coverUrl)\n .then((url: string | undefined) => {\n this.coverImageUrl = url\n })\n .catch((err: Error) => {\n console.log(\"Error loading cover image\")\n })\n }\n }\n\n render() {\n const { classes, classObj, onCardAction, onAddClass, userStore } = this.props\n\n let title = \"\"\n let description = \"\"\n let term = \"\"\n let seats = \"\"\n let isEnded = false\n let isStudent = userStore!.isStudent\n\n if (classObj.course) {\n const course = classObj.course\n title = course.title\n description = course.description\n if (course.creditHours) {\n description += ` (${course.creditHours} hours)`\n }\n if (classObj.termBegin && classObj.termEnd) {\n const termBegin = isoToLocalDate(classObj.termBegin)\n const termEnd = isoToLocalDate(classObj.termEnd)\n term = `${format(termBegin, 'M/d/yy')} - ${format(termEnd, 'M/d/yy')}`\n isEnded = (isBefore(termEnd, startOfToday()))\n }\n\n if (classObj.seatsFilled !== undefined && classObj.seatsFilled !== null) {\n seats = classObj.seatsFilled.toString()\n if (classObj.seatsPurchased && !course.isFree) {\n seats += `/${classObj.seatsPurchased}`\n }\n }\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n {title}\n \n \n \n {description}\n \n
\n \n \n {term}\n \n \n
\n
\n
\n \n \n {!classObj.id && onAddClass &&\n \n \n \n }\n {classObj.id && onCardAction && !isEnded && !isStudent &&\n \n \n \n }\n {classObj.id && !isStudent &&\n \n {seats.length > 0 && {seats}
seats
}\n
\n }\n {classObj.id &&\n \n {classObj.userId ? \"Self\" : \"Empl\"}\n \n }\n
\n
\n
\n
\n
\n )\n }\n\n onAddClass = () => {\n const { classObj, onAddClass } = this.props\n\n if (onAddClass) {\n onAddClass(classObj.courseId)\n }\n }\n\n onEditClass = () => {\n const { onCardAction, classObj } = this.props\n\n if (onCardAction) {\n onCardAction(\"edit\", classObj)\n }\n }\n\n onCardAction = () => {\n const { onCardAction, classObj } = this.props\n\n if (onCardAction) {\n onCardAction(\"open\", classObj)\n }\n }\n\n}\n\nexport default withStyles(styles)(ClassCard)\n","import * as React from 'react'\nimport {createStyles, Grid, Theme, Typography, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\nimport {inject, observer} from \"mobx-react\";\nimport UserStore from \"../../stores/UserStore\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport Account from \"../../model/Account\"\nimport {observable, when} from \"mobx\";\nimport Progress from \"../../components/Progress\";\nimport Class from \"../../model/Class\";\nimport ClassCard from \"../class/ClassCard\";\nimport CourseStore from \"../../stores/CourseStore\";\nimport Course from \"../../model/Course\";\nimport Notify from \"../../components/notify/Notify\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport Tracking from \"../../components/Tracking\";\nimport {getISODateToday} from \"../../stores/StoreUtilities\";\nimport Visible from \"../../components/Visible\";\nimport Registration from \"../../model/Registration\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n flexGrow: 1,\n justifyContent: 'top',\n alignItems: 'center',\n },\n content: {\n marginTop: theme.spacing(1),\n },\n card: {\n width: \"100%\",\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1)\n },\n subtitle: {\n paddingLeft: theme.spacing(0.5),\n color: theme.palette.text.secondary,\n fontWeight: 600\n },\n})\n\ninterface IAccountClassesProps {\n userStore?: UserStore\n accountStore?: AccountStore\n courseStore?: CourseStore\n progress?: Progress\n notify?: Notify\n}\n\n@inject(\"userStore\", \"accountStore\", \"courseStore\", \"progress\", \"notify\")\n@observer\nclass AccountClasses extends React.Component & IAccountClassesProps & WithTheme> {\n\n @observable account?: Account\n @observable isLoading = true\n @observable classes: Class[] = []\n @observable current: Class[] = []\n @observable available: Class[] = []\n @observable past: Class[] = []\n\n componentDidMount () {\n const { progress } = this.props\n this.isLoading = true\n progress!.show(\"AccountClasses\")\n const { userStore, accountStore} = this.props\n when(\n () => !userStore!.isLoading,\n () => {\n this.account = accountStore!.account\n this.loadClasses()\n this.isLoading = false\n progress!.hide(\"AccountClasses\")\n }\n )\n }\n\n render() {\n const { classes, userStore } = this.props\n\n if (this.isLoading) {\n return null\n }\n\n const isAdminOrAgent = userStore!.isAdminOrAgent\n const isEmployer = userStore!.isEmployer\n\n return (\n
\n \n \n Purchased\n \n {this.current.map((c: Class) => {\n return (\n \n \n \n )\n })}\n \n\n \n \n Available\n \n {this.available.map((c: Class) => {\n return (\n \n \n \n )\n })}\n \n\n 0}>\n \n \n Ended\n \n {this.past.map((c: Class) => {\n return (\n \n \n \n )\n })}\n \n \n
\n )\n }\n\n private async loadClasses() {\n const { accountStore, courseStore, userStore } = this.props\n\n const isStudent = userStore!.isStudent\n\n let classes = await accountStore?.listClasses()\n if (!classes) {\n classes = []\n }\n\n // Divide into current and past classes\n let current: Class[] = []\n let past: Class[] = []\n let today = getISODateToday()\n classes.forEach((c: Class) => {\n // Ignore classes belonging to other students\n if ((!isStudent && !c.userId) || (isStudent && (c.userId === userStore!.user!.id || userStore!.getClassRegistration(c.id)))) {\n if (c.termEnd >= today) {\n current.push(c)\n } else {\n past.push(c)\n }\n }\n })\n\n // Sort by title\n current.sort((a: Class, b: Class) => a.course!.title.localeCompare(b.course!.title))\n\n // Sort by term\n past.sort((a: Class, b: Class) => a.termBegin.localeCompare(b.termBegin))\n\n // Add available courses\n let available: Class[] = []\n const courses = await courseStore!.listCourses()\n if (courses) {\n courses.forEach((course: Course) => {\n // CHeck for current class\n if (course.publishDate <= today && course.sunsetDate >= today) {\n const found = current.find((c: Class) => c.courseId === course.id && c.termEnd > today)\n if (!found) {\n // Make a pseudo class for purchasing\n const classObj = new Class({\n id: null,\n courseId: course.id,\n course: course\n })\n available!.push(classObj)\n }\n }\n })\n }\n\n // Sort by title\n available.sort((a: Class, b: Class) => a.course!.title.localeCompare(b.course!.title))\n\n this.current = current\n this.past = past\n this.available = available\n }\n\n private onAddClass = async (courseId: string) => {\n const { accountStore, courseStore } = this.props\n Tracking.event({action: 'AddClass'})\n\n const course = await courseStore!.getCourse(courseId)\n if (course) {\n // if (course.isFree) {\n // const classObj = await accountStore!.addClass(course)\n // if (classObj) {\n // // Add registration\n // await userStore!.addClassRegistration(classObj)\n // // Reload classes\n // await this.loadClasses()\n // notify!.show(\"success\", `${course.title} class added!`)\n // ControlTower.route(`${Routes.account}/${classObj.accountId}/class/${classObj.id}`)\n // }\n // } else {\n ControlTower.route(`${Routes.account}/${accountStore!.account!.id}/classEdit?courseId=${course.id}`)\n // }\n }\n }\n\n private onCardAction = (action: string, classObj: Class) => {\n const { userStore } = this.props\n\n const isStudent = userStore!.isStudent\n\n if (action === \"open\") {\n if (classObj.id) {\n if (isStudent) {\n const registration = userStore!.user!.registrations.find((r: Registration) => { return r.classId === classObj.id})\n if (registration) {\n ControlTower.route(`${Routes.class}/${registration.classId}`)\n }\n } else {\n ControlTower.route(`${Routes.account}/${this.account!.id}/class/${classObj.id}`)\n }\n } else if (classObj.courseId) {\n ControlTower.route(`${Routes.courseDetail}/${classObj.courseId}`)\n }\n } else if (action === \"edit\") {\n ControlTower.route(`${Routes.account}/${this.account!.id}/classEdit/${classObj.id}`)\n }\n }\n}\n\nexport default withTheme((withStyles(styles)(AccountClasses)))","import * as React from 'react'\nimport {Box, createStyles, Grid, Theme, Typography, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\nimport {inject, observer} from \"mobx-react\";\nimport UserStore from \"../../stores/UserStore\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport Account from \"../../model/Account\"\nimport {observable, when} from \"mobx\";\nimport User from \"../../model/User\";\nimport Progress from \"../../components/Progress\";\nimport UserCard from \"./UserCard\";\nimport TitleButton from \"../../components/TitleButton\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport SearchBar from 'material-ui-search-bar'\nimport {UserStatus} from \"../../API\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n flexGrow: 1,\n justifyContent: 'top',\n alignItems: 'center'\n },\n card: {\n paddingTop: theme.spacing(1)\n },\n content: {\n marginTop: theme.spacing(0.5),\n marginBottom: theme.spacing(2)\n },\n searchBar: {\n height: 40,\n },\n subtitle: {\n margin: theme.spacing(0),\n paddingLeft: theme.spacing(1),\n color: theme.palette.text.secondary,\n fontWeight: 600\n },\n quantity: {\n margin: theme.spacing(0),\n color: theme.palette.text.secondary,\n fontWeight: 600,\n textAlign: \"right\",\n paddingRight: theme.spacing(1)\n },\n\n})\n\ninterface IAccountUsersProps {\n userStore?: UserStore\n accountStore?: AccountStore\n progress?: Progress\n}\n\n@inject(\"userStore\", \"accountStore\", \"progress\")\n@observer\nclass AccountUsers extends React.Component & IAccountUsersProps & WithTheme> {\n\n @observable account?: Account\n @observable allUsers: User[] = []\n @observable inactive: User[] = []\n @observable invited: User[] = []\n @observable registered: User[] = []\n @observable suspended: User[] = []\n @observable isLoading = true\n @observable search?: string\n\n componentDidMount () {\n const { progress } = this.props\n this.isLoading = true\n progress!.show(\"AccountUsers\")\n const { userStore, accountStore} = this.props\n when (\n () => !userStore!.isLoading,\n async () => {\n this.account = accountStore!.account\n let users = await accountStore!.listUsers(this.account!.id)\n this.allUsers = users.sort((a: User, b: User) => { return a.fullName.localeCompare(b.fullName)})\n this.filterUsers()\n this.isLoading = false\n progress!.hide(\"AccountUsers\")\n }\n )\n }\n\n render() {\n const { classes, userStore } = this.props\n\n if (this.isLoading) {\n return null\n }\n\n const isAgent = userStore!.isAdminOrAgent\n const isEmployer = userStore!.isEmployer\n\n return (\n
\n \n \n \n \n \n \n { (isAgent || isEmployer) &&\n \n }\n \n \n \n {this.allUsers &&\n \n \n \n Registered\n \n \n {this.registered.length}\n \n {this.registered.map((u: User) => {\n return (\n \n \n \n )\n })}\n \n\n \n \n Inactive\n \n \n {this.inactive.length}\n \n {this.inactive.map((u: User) => {\n return (\n \n \n \n )\n })}\n \n\n \n \n Invited\n \n \n {this.invited.length}\n \n {this.invited.map((u: User) => {\n return (\n \n \n \n )\n })}\n \n\n\n \n \n Suspended\n \n \n {this.suspended.length}\n \n {this.suspended.map((u: User) => {\n return (\n \n \n \n )\n })}\n \n \n }\n
\n )\n }\n\n onSearchChange = (value: string) => {\n this.search = value\n // localStorage.setItem(ClientsPageConstants.CLIENTS_SEARCH_NAME, this.search)\n this.filterUsers()\n }\n\n onCancelSearch = () => {\n this.search = undefined\n // localStorage.removeItem(ClientsPageConstants.CLIENTS_SEARCH_NAME)\n this.filterUsers()\n }\n\n onAddStudent = () => {\n const { accountStore } = this.props\n ControlTower.route(`${Routes.account}/${accountStore!.account!.id}/userEdit`)\n }\n\n onCardAction = (user: User) => {\n ControlTower.route(`${Routes.account}/${user.accountId}/person/${user.id}`)\n }\n\n filterUsers = () => {\n let users: User[] = []\n\n if (this.search) {\n const search = this.search.toLowerCase()\n this.allUsers.forEach((u: User) => {\n if (u.fullName.toLowerCase().indexOf(search!) >= 0 ||\n (u.jobTitle && u.jobTitle.toLowerCase().indexOf(search!) >= 0) ||\n u.email.toLowerCase().indexOf(search!) >= 0 ||\n u.role.toLowerCase().indexOf(search!) >= 0 ||\n u.userStatus.toLowerCase().indexOf(search) >= 0) {\n users.push(u)\n }\n })\n } else {\n users = this.allUsers\n }\n\n let inactive: User[] = []\n let invited: User[] = []\n let registered: User[] = []\n let suspended: User[] = []\n\n users.forEach((u: User) => {\n switch (u.userStatus) {\n case UserStatus.Inactive:\n inactive.push(u)\n break\n case UserStatus.Invited:\n invited.push(u)\n break\n case UserStatus.Registered:\n registered.push(u)\n break\n case UserStatus.Suspended:\n suspended.push(u)\n break\n }\n })\n\n this.inactive = inactive\n this.invited = invited\n this.registered = registered\n this.suspended = suspended\n }\n}\n\nexport default withTheme((withStyles(styles)(AccountUsers)))","import * as React from \"react\";\nimport {Button, createStyles, Grid, Theme, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\n\nconst styles = (theme: Theme) => createStyles({\n NavigationBar: {\n color: theme.palette.text.primary,\n flexGrow: 1,\n justifyContent: \"space-between\",\n width: \"100%\",\n padding: \"8px 4px 8px 0px\",\n },\n title: {\n color: theme.palette.action.active,\n justifyContent: \"left\",\n fontFamily: [\n 'Montserrat',\n 'sans-serif'\n ].join(','),\n fontSize: 14,\n fontWeight: 600,\n alignItems: \"center\",\n cursor: \"pointer\",\n textDecoration: \"none\"\n },\n actions: {\n justifyContent: \"right\",\n textAlign: \"right\",\n paddingTop: 2\n },\n chevron: {\n verticalAlign: \"middle\",\n paddingBottom: 2\n }\n})\n\ninterface INavigationBarProps {\n title: string,\n className?: string\n onBack?: any\n}\n\nclass NavigationBar extends React.Component & INavigationBarProps & WithTheme> {\n\n render() {\n const { classes, className, title } = this.props\n\n return (\n \n \n \n \n \n \n \n )\n }\n\n onBack = () => {\n if (this.props.onBack) {\n this.props.onBack()\n }\n }\n}\n\nexport default withTheme((withStyles(styles)(NavigationBar)))\n","import * as React from \"react\";\nimport {\n Card,\n CardContent,\n createStyles,\n Grid,\n Theme,\n Typography,\n withStyles,\n WithStyles\n} from \"@material-ui/core\";\nimport { observer} from \"mobx-react\";\nimport TitleButton from \"../../components/TitleButton\";\nimport Charge from \"../../model/Charge\";\nimport {isoToLocalDate, numberToMoneyFormat} from \"../../stores/StoreUtilities\";\nimport {format} from \"date-fns\";\nimport ControlTower from \"../../components/ControlTower\";\n\nconst styles = (theme: Theme) => createStyles({\n card: {\n width: '100%',\n height: 60,\n padding: 0\n },\n content: {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.paper,\n padding: \"0px 10px\",\n display: \"flex\",\n flexGrow: 1\n },\n label: {\n color: theme.palette.text.secondary,\n fontSize: 12,\n marginTop: theme.spacing(1),\n marginBottom: 0,\n marginLeft: 0,\n },\n value: {\n fontSize: 16,\n fontWeight: 800,\n maxHeight: 26,\n overflow: \"hidden\",\n },\n titleButtons: {\n marginTop: 18,\n textAlign: \"right\"\n },\n\n})\n\ninterface IAccountChargeCardProps {\n charge: Charge\n}\n\n@observer\nclass AccountChargeCard extends React.Component & IAccountChargeCardProps> {\n\n render() {\n const { classes, charge } = this.props\n\n const date = format(isoToLocalDate(charge.created), \"M/d/yyyy\")\n const amount = numberToMoneyFormat(charge.amount)\n\n return (\n \n \n \n \n \n Date\n \n \n {date}\n \n \n\n \n \n Amount\n \n \n {amount}\n \n \n\n \n \n \n \n \n\n \n \n \n )\n }\n\n onView = () => {\n const { charge } = this.props\n ControlTower.open(charge.receipt_url, \"_blank\")\n }\n\n}\n\nexport default withStyles(styles)(AccountChargeCard)\n","import * as React from 'react'\nimport {createStyles, Grid, Theme, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\nimport {inject, observer} from \"mobx-react\";\nimport UserStore from \"../../stores/UserStore\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport Account from \"../../model/Account\"\nimport {observable, when} from \"mobx\";\nimport Progress from \"../../components/Progress\";\nimport AccountChargeCard from \"./AccountChargeCard\";\nimport Charge from \"../../model/Charge\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n flexGrow: 1,\n justifyContent: 'top',\n alignItems: 'center',\n },\n content: {\n justifyContent: 'top',\n alignItems: 'center',\n width: \"100%\",\n maxWidth: 960,\n marginTop: theme.spacing(1),\n },\n card: {\n width: \"100%\",\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1)\n },\n})\n\ninterface IAccountBillingProps {\n userStore?: UserStore\n accountStore?: AccountStore\n progress?: Progress\n}\n\n@inject(\"userStore\", \"accountStore\", \"progress\")\n@observer\nclass AccountBilling extends React.Component & IAccountBillingProps & WithTheme> {\n\n @observable account?: Account\n @observable charges: Charge[] = []\n @observable isLoading = true\n\n componentDidMount () {\n const { progress } = this.props\n this.isLoading = true\n progress!.show(\"AccountBilling\")\n const { userStore, accountStore} = this.props\n when(\n () => !userStore!.isLoading && !accountStore!.isLoading,\n () => {\n this.account = accountStore!.account\n this.loadCharges()\n }\n )\n }\n\n render() {\n const { classes } = this.props\n\n if (this.isLoading) {\n return null\n }\n\n return (\n
\n \n {this.charges.map((charge: Charge) => {\n return \n \n \n })}\n \n
\n )\n }\n\n private async loadCharges() {\n const { accountStore, userStore, progress } = this.props\n\n if (userStore!.isStudent) {\n this.charges = await userStore!.listCharges()\n } else {\n this.charges = await accountStore!.listCharges(this.account!.id)\n }\n this.isLoading = false\n progress!.hide(\"AccountBilling\")\n }\n\n\n}\n\nexport default withTheme((withStyles(styles)(AccountBilling)))","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {Box, createStyles, Grid, Theme, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport {inject, observer} from \"mobx-react\";\nimport UserStore from \"../../stores/UserStore\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport Account from \"../../model/Account\"\nimport {observable, when} from \"mobx\";\nimport Progress from \"../../components/Progress\";\nimport TitleBar from \"../../components/TitleBar\";\nimport AccountCard from \"../account/AccountCard\";\nimport SearchBar from \"material-ui-search-bar\";\nimport TitleButton from \"../../components/TitleButton\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport TextFieldValidator from \"../../components/form/TextFieldValidator\";\nimport FormValidator from \"../../components/form/FormValidator\";\nimport {AccountType} from \"../../API\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n flexGrow: 1,\n width: \"100%\",\n justifyContent: 'top',\n alignItems: 'center',\n },\n content: {\n display: 'flex',\n flexGrow: 1,\n flex: \"auto\",\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(2)\n },\n card: {\n paddingTop: theme.spacing(1),\n },\n controlBar: {\n display: \"flex\",\n flexDirection: \"row\",\n marginTop: theme.spacing(1),\n width: \"100%\",\n maxWidth: 960,\n paddingRight: theme.spacing(1),\n flexWrap: \"wrap\"\n },\n search: {\n flexGrow: 1,\n },\n searchBar: {\n height: 40,\n },\n sortFilter: {\n backgroundColor: theme.palette.background.paper,\n borderRadius: 10,\n width: 150,\n },\n accountTypeFilter: {\n backgroundColor: theme.palette.background.paper,\n borderRadius: 10,\n width: 150,\n }\n})\n\nenum AccountTypeOptions {\n All = \"All\",\n Agency = \"Agency\",\n Individual = \"Individual\"\n}\n\nenum SortOptions {\n Name = \"Name\",\n Created = \"Created\"\n}\n\ninterface IAccountsPageProps {\n userStore?: UserStore\n accountStore?: AccountStore\n progress?: Progress\n}\n\n@inject(\"userStore\", \"accountStore\", \"progress\")\n@observer\nclass AccountsPage extends React.Component & RouteComponentProps & IAccountsPageProps & WithTheme> {\n\n @observable allAccounts: Account[] = []\n @observable accounts: Account[] = []\n @observable isLoading = true\n @observable search?: string\n @observable accountTypeFilter = AccountTypeOptions.All\n @observable sortFilter = SortOptions.Name\n\n componentDidMount () {\n const { progress } = this.props\n this.isLoading = true\n progress!.show(\"AccountsPage\")\n const { userStore, accountStore} = this.props\n when(\n () => !userStore!.isLoading,\n async () => {\n const accounts = await accountStore!.listAccounts()\n this.allAccounts = accounts.sort((a: Account, b: Account) => { return a.name.toLowerCase().localeCompare(b.name.toLowerCase())})\n this.filterAccounts()\n this.isLoading = false\n progress!.hide(\"AccountsPage\")\n }\n )\n }\n\n render() {\n const { classes } = this.props\n\n const title = \"Accounts\"\n\n return (\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n {this.accounts &&\n \n {this.accounts.map((a: Account) => {\n return (\n \n \n \n )\n })}\n \n }\n
\n
\n
\n )\n }\n\n onSearchChange = (value: string) => {\n this.search = value\n // localStorage.setItem(ClientsPageConstants.CLIENTS_SEARCH_NAME, this.search)\n this.filterAccounts()\n }\n\n onCancelSearch = () => {\n this.search = undefined\n // localStorage.removeItem(ClientsPageConstants.CLIENTS_SEARCH_NAME)\n this.filterAccounts()\n }\n\n onChangeAccountType = (event: any) => {\n this.accountTypeFilter = event.target.value\n this.filterAccounts()\n }\n\n onChangeSort = (event: any) => {\n this.sortFilter = event.target.value\n this.filterAccounts()\n }\n onAddAccount = () => {\n ControlTower.route(`${Routes.accountsEdit}`)\n }\n\n filterAccounts = () => {\n let accounts: Account[] = []\n\n if (this.search || this.accountTypeFilter !== AccountTypeOptions.All) {\n this.allAccounts.forEach((a: Account) => {\n if (this.search) {\n const search = this.search.toLowerCase()\n if (a.name.toLowerCase().indexOf(search!) >= 0) {\n if (this.accountTypeFilter === AccountTypeOptions.All ||\n (this.accountTypeFilter === AccountTypeOptions.Agency && a.accountType === AccountType.Agency) ||\n (this.accountTypeFilter === AccountTypeOptions.Individual && a.accountType === AccountType.Individual)) {\n accounts.push(a)\n }\n }\n } else if (this.accountTypeFilter === AccountTypeOptions.All ||\n (this.accountTypeFilter === AccountTypeOptions.Agency && a.accountType === AccountType.Agency) ||\n (this.accountTypeFilter === AccountTypeOptions.Individual && a.accountType === AccountType.Individual)) {\n accounts.push(a)\n }\n })\n } else {\n accounts = [...this.allAccounts]\n }\n\n if (this.sortFilter === SortOptions.Created) {\n accounts.sort((a: Account, b: Account) => b.createdAt.localeCompare(a.createdAt))\n } else {\n accounts.sort((a: Account, b: Account) => a.name.localeCompare(b.name))\n }\n\n this.accounts = accounts\n }\n\n onCardAction = async (account: Account) => {\n ControlTower.route(`${Routes.account}/${account.id}`)\n }\n\n onEdit = async (account: Account) => {\n ControlTower.route(`${Routes.accountsEdit}/${account.id}`)\n }\n}\n\nexport default withTheme((withStyles(styles)(AccountsPage)))","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {\n createStyles,\n DialogActions,\n DialogContent,\n DialogContentText,\n FormControlLabel, FormGroup,\n Grid,\n Paper,\n Radio,\n RadioGroup,\n Theme,\n withStyles,\n WithStyles,\n withTheme,\n WithTheme\n} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport TitleBar from \"../../components/TitleBar\";\nimport {inject, observer} from \"mobx-react\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport Account from \"../../model/Account\"\nimport {observable, when} from \"mobx\";\nimport Progress from \"../../components/Progress\";\nimport FormValidator from \"../../components/form/FormValidator\";\nimport TextFieldValidator from \"../../components/form/TextFieldValidator\";\nimport DialogButton from \"../../components/form/DialogButton\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport {AccountSize, AccountStatus, AccountType, ActivityType, CreateAccountInput, UpdateAccountInput} from \"../../API\";\nimport Notify from \"../../components/notify/Notify\";\nimport UserStore from \"../../stores/UserStore\";\nimport Tracking from \"../../components/Tracking\";\nimport Visible from \"../../components/Visible\";\nimport config from 'react-global-configuration';\nimport TitleButton from \"../../components/TitleButton\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n alignItems: 'flex-start',\n },\n titleBar: {\n flexGrow: 1,\n justifyContent: \"space-between\",\n width: \"100%\",\n height: 40,\n padding: theme.spacing(1),\n color: theme.palette.text.secondary,\n },\n message: {\n color: theme.palette.error.main,\n marginTop: 10\n },\n dialogPaper: {\n display: 'flex',\n flexGrow: 1,\n justifyContent: 'space-between',\n width: '100%',\n // maxWidth: 480,\n marginTop: theme.spacing(1),\n },\n form: {\n width: '100%'\n },\n dialogContent: {\n padding: theme.spacing(2)\n },\n dialogActions: {\n justifyContent: \"center\",\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n paddingBottom: theme.spacing(2),\n borderRadius: \"0px 0px 10px 10px\"\n },\n dialogTitle: {\n paddingLeft: 20,\n paddingRight: 20,\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n textAlign: 'center'\n },\n label: {\n color: theme.palette.text.secondary,\n fontSize: 12,\n marginTop: theme.spacing(1),\n marginBottom: 0,\n marginLeft: 0,\n },\n radioGroup: {\n marginTop: 0\n }\n})\n\ninterface IAccountEditPageProps {\n accountId?: string\n userStore?: UserStore\n accountStore?: AccountStore\n progress?: Progress\n notify?: Notify\n}\n\n@inject(\"accountStore\", \"userStore\", \"progress\", \"notify\")\n@observer\nclass AccountEditPage extends React.Component & RouteComponentProps & IAccountEditPageProps & WithTheme> {\n\n @observable isLoading = true\n @observable account?: Account\n @observable values = {\n accountType: \"Agency\",\n accountStatus: \"Active\",\n accountSize: \"Small\",\n accountName: \"\",\n address: \"\",\n city: \"\",\n state: \"\",\n postalCode: \"\",\n customerId: \"\"\n }\n @observable message = \"\"\n\n componentDidMount () {\n const { accountId, userStore, accountStore, progress} = this.props\n this.isLoading = true\n progress!.show(\"AccountEditPage\")\n when(\n () => !userStore!.isLoading,\n async () => {\n if (accountId) {\n this.account = await accountStore!.getAccount(this.props.accountId!)\n if (this.account) {\n this.values = {\n accountName: this.account.name,\n accountType: this.account.accountType,\n accountStatus: this.account.accountStatus.toString(),\n accountSize: this.account.accountSize.toString(),\n address: this.account.address,\n city: this.account.city,\n state: this.account.state,\n postalCode: this.account.postalCode,\n customerId: this.account.customerId\n }\n }\n }\n this.isLoading = false\n progress!.hide(\"AccountEditPage\")\n }\n )\n }\n\n\n render() {\n const { classes, userStore } = this.props\n\n const title = this.account ? \"Edit Account\" : \"Add Account\"\n const isAdminOrAgent = userStore!.isAdminOrAgent\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Type
\n \n }\n label=\"Agency\"\n labelPlacement=\"end\"\n disabled={this.account && this.account.accountType === AccountType.Agency}\n />\n }\n label=\"Individual\"\n labelPlacement=\"end\"\n disabled={this.account && this.account.accountType === AccountType.Agency}\n />\n \n
\n \n \n
Agency Size (number of responders)
\n \n }\n label=\"Small (1-49)\"\n labelPlacement=\"end\"\n />\n }\n label=\"Medium (50-199)\"\n labelPlacement=\"end\"\n />\n }\n label=\"Large (200+)\"\n labelPlacement=\"end\"\n />\n \n
\n
\n \n
Status
\n \n }\n label=\"Active\"\n labelPlacement=\"end\"\n />\n }\n label=\"Suspended\"\n labelPlacement=\"end\"\n />\n \n {this.values.customerId &&\n }}\n />\n }\n
\n \n {this.message}\n \n\n
\n \n \n Cancel\n \n \n Save\n \n \n
\n
\n
\n
\n
\n )\n }\n\n onChange = (event: React.ChangeEvent) => {\n const name = event.target.name\n this.values[name] = event.target.value\n }\n\n onCancel = () => {\n const { accountId } = this.props\n\n if (ControlTower.currentRoute.startsWith(Routes.accountsEdit)) {\n ControlTower.route(`${Routes.accounts}`)\n } else {\n ControlTower.route(`${Routes.account}/${accountId}/info`)\n }\n }\n\n onSubmit = async () => {\n const { accountId, accountStore, userStore, notify } = this.props\n\n const values = this.values\n\n if (accountId) {\n Tracking.event({action: 'UpdateAccount'})\n const input: UpdateAccountInput = {\n id: accountId!,\n accountType: values.accountType === \"Agency\" ? AccountType.Agency : AccountType.Individual,\n accountStatus: (AccountStatus as any)[values.accountStatus],\n accountSize: AccountSize[values.accountSize],\n name: values.accountName,\n address: values.address,\n city: values.city,\n state: values.state,\n postalCode: values.postalCode\n }\n const update = await accountStore!.updateAccount(input)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to update account\")\n })\n\n if (update) {\n notify!.show(\"success\", \"Account updated!\")\n this.onCancel()\n }\n } else {\n Tracking.event({action: 'CreateAccount'})\n const input: CreateAccountInput = {\n id: accountId!,\n accountType: values.accountType === \"Agency\" ? AccountType.Agency : AccountType.Individual,\n accountStatus: (AccountStatus as any)[values.accountStatus],\n name: values.accountName,\n address: values.address,\n city: values.city,\n state: values.state,\n postalCode: values.postalCode\n }\n const account = await accountStore!.createAccount(input)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to create account\")\n })\n\n if (account) {\n notify!.show(\"success\", \"Account created!\")\n if (userStore!.isAdminOrAgent) {\n await accountStore!.init(account)\n }\n userStore!.createActivity(ActivityType.AccountCreate, account.id)\n ControlTower.route(`${Routes.account}/${account.id}`)\n }\n }\n\n }\n\n onStripe = async() => {\n if (this.account!.customerId) {\n const env = config.get(\"branch\") === \"main\" ? \"live\" : \"test\"\n ControlTower.open(`https://dashboard.stripe.com/${env}/customers/${this.account!.customerId}`, '_blank')\n }\n }\n\n}\n\nexport default withTheme((withStyles(styles)(AccountEditPage)))","import * as React from \"react\";\nimport {\n Card,\n CardActionArea,\n CardContent,\n createStyles,\n Theme,\n Typography,\n withStyles,\n WithStyles\n} from \"@material-ui/core\";\nimport {observer} from \"mobx-react\";\nimport Lesson from \"../../model/Lesson\";\nimport PlayCircleFilledWhiteIcon from '@material-ui/icons/PlayCircleFilledWhite';\nimport PauseCircleFilledIcon from '@material-ui/icons/PauseCircleFilled';\nimport {secondsToDuration} from \"../../stores/StoreUtilities\";\nimport Registration from \"../../model/Registration\";\nimport {LessonStatus} from \"../../API\";\n\nconst styles = (theme: Theme) => createStyles({\n card: {\n width: '100%',\n padding: \"2px 4px 4px 4px\"\n },\n content: {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.paper,\n padding: \"5px 0px\",\n display: \"flex\"\n },\n left: {\n flexShrink: 0,\n paddingRight: 5,\n alignSelf: \"center\",\n },\n right: {\n flexGrow: 1\n },\n title: {\n fontSize: 20,\n fontWeight: 600,\n },\n duration: {\n color: theme.palette.text.secondary,\n fontSize: 14,\n fontWeight: 400,\n float: \"right\",\n paddingTop: 3,\n paddingRight: 4\n },\n description: {\n color: theme.palette.text.secondary,\n fontSize: 14,\n fontWeight: 400,\n lineHeight: 1.3\n },\n playIcon: {\n color: theme.palette.secondary.main,\n width: 40,\n height: 40,\n },\n playIconPassed: {\n color: theme.palette.success.main,\n width: 40,\n height: 40,\n },\n playIconFailed: {\n color: theme.palette.error.dark,\n width: 40,\n height: 40,\n },\n disabledIcon: {\n color: theme.palette.primary.light,\n width: 40,\n height: 40,\n },\n disabledIconPassed: {\n color: theme.palette.success.dark,\n width: 40,\n height: 40,\n },\n disabledIconFailed: {\n color: theme.palette.error.light,\n width: 40,\n height: 40,\n },\n})\n\ninterface ILessonCardProps {\n lesson: Lesson\n registration?: Registration\n disabled?: boolean\n playing?: boolean\n onPlay?: any\n onCardAction?: any\n}\n\n// @inject('lesson')\n@observer\nclass LessonCard extends React.Component & ILessonCardProps> {\n\n componentDidMount() {\n }\n\n render() {\n const { classes, lesson, disabled } = this.props\n\n let number = \"\"\n let title = \"\"\n let description = \"\"\n let duration = \"\"\n if (lesson) {\n number = lesson.number.toString()\n title = lesson.title\n description = lesson.description\n duration = secondsToDuration(lesson.videoDuration)\n }\n\n return (\n \n \n \n
\n { this.renderPlayIcon() }\n
\n
\n \n {duration}\n \n \n {number}.  {title}\n \n \n {description}\n \n
\n
\n
\n
\n )\n }\n\n renderPlayIcon = () => {\n const { classes, disabled, playing, registration, lesson } = this.props\n let className = classes.disabledIcon\n const status = (registration && lesson) ? registration!.getStatus(lesson.number) : LessonStatus.NotStarted\n\n if (status === LessonStatus.Passed) {\n className = (disabled) ? classes.disabledIconPassed : classes.playIconPassed\n } else if (status === LessonStatus.Failed) {\n className = (disabled) ? classes.disabledIconFailed : classes.playIconFailed\n } else {\n className = (disabled) ? classes.disabledIcon : classes.playIcon\n }\n\n if (disabled) {\n return \n } else {\n if (playing) {\n return \n } else {\n return \n }\n }\n }\n\n onCardAction = () => {\n const { onCardAction, lesson } = this.props\n\n if (onCardAction) {\n onCardAction(lesson)\n }\n }\n\n onPlay = (event: any) => {\n const { onPlay, lesson } = this.props\n // event.stopPropagation()\n\n if (onPlay) {\n onPlay(lesson)\n }\n }\n}\n\nexport default withStyles(styles)(LessonCard)\n","import * as React from \"react\";\nimport {\n Box,\n Card,\n CardActionArea,\n CardContent,\n CardMedia,\n createStyles,\n Grid, Link,\n Menu,\n MenuItem,\n Theme,\n Typography,\n withStyles,\n WithStyles\n} from \"@material-ui/core\";\nimport {inject, observer} from \"mobx-react\";\nimport Registration from \"../model/Registration\";\nimport S3UrlCacheStore from \"../stores/S3UrlCacheStore\";\nimport {observable} from \"mobx\";\nimport {ClassStatus} from \"../API\";\nimport LinearProgress from '@material-ui/core/LinearProgress'\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Confirm from \"./confirm/Confirm\";\nimport Notify from \"./notify/Notify\";\nimport UserStore from \"../stores/UserStore\";\nimport {getErrorMessage, isoToLocalDate} from \"../stores/StoreUtilities\";\nimport {format} from \"date-fns\";\nimport PlayArrowIcon from '@material-ui/icons/PlayArrow';\nimport config from 'react-global-configuration';\nimport AccountStore from \"../stores/AccountStore\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport Storage from \"@aws-amplify/storage\";\n\nconst styles = (theme: Theme) => createStyles({\n card: {\n height: 94,\n },\n content: {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.paper,\n },\n title: {\n fontSize: 20,\n fontWeight: 600,\n lineHeight: 1.1,\n paddingTop: theme.spacing(0.5)\n },\n titleButtons: {\n textAlign: \"right\"\n },\n actionArea: {\n color: theme.palette.secondary.main\n },\n description: {\n color: theme.palette.text.secondary,\n fontSize: 14,\n fontWeight: 400,\n maxHeight: 24,\n overflow: \"hidden\",\n },\n status: {\n color: theme.palette.text.primary,\n fontSize: 14,\n fontWeight: 400,\n },\n details: {\n fontSize: 14,\n fontWeight: 400,\n },\n cover: {\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1)\n },\n mediaArea: {\n display: \"flex\",\n justifyContent: \"center\",\n },\n media: {\n width: 78,\n height: 78\n },\n image: {\n width: \"100%\",\n height: \"auto\"\n },\n playIcon: {\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"center\",\n bottom: 55,\n left: 25,\n width: 28,\n height: 28,\n borderRadius: 14, \n zIndex: 11,\n color: theme.palette.common.white,\n backgroundColor: theme.palette.secondary.main\n },\n progressBar: {\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"center\",\n bottom: 15,\n padding: \"0 2px\",\n zIndex: 10\n },\n linearProgress: {\n color: theme.palette.primary.main,\n width: \"100%\",\n height: 4,\n },\n linearProgressDeterminateColor: {\n backgroundColor: theme.palette.primary.light\n },\n classProgressNotStarted: {\n backgroundColor: theme.palette.primary.light\n },\n classProgressPassing: {\n backgroundColor: theme.palette.success.main\n },\n classScorePassing: {\n color: theme.palette.success.main,\n fontWeight: 800\n },\n classProgressFailing: {\n backgroundColor: theme.palette.warning.dark,\n },\n classScoreFailing: {\n color: theme.palette.warning.light,\n fontWeight: 800\n },\n classProgressFailed: {\n backgroundColor: theme.palette.error.dark,\n },\n classScoreFailed: {\n color: theme.palette.error.light,\n fontWeight: 800\n },\n completedDate: {\n color: theme.palette.text.secondary,\n fountWeight: 600\n },\n iconButton: {\n padding: 4\n },\n menuIcon: {\n color: theme.palette.text.secondary,\n width: 20,\n height: 20,\n zOrder: 100\n },\n printingIndicator: {\n color: theme.palette.secondary.main,\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12,\n },\n link: {\n textDecoration: 'none',\n color: theme.palette.action.active,\n cursor: \"pointer\"\n },\n})\n\ninterface IRegistrationCardProps {\n registration: Registration\n onCardAction?: any\n s3UrlCacheStore?: S3UrlCacheStore\n confirm?: Confirm\n notify?: Notify\n userStore?: UserStore\n accountStore?: AccountStore\n}\n\n@inject(\"registration\", \"s3UrlCacheStore\", \"confirm\", \"notify\", \"userStore\", \"accountStore\")\n@observer\nclass RegistrationCard extends React.Component & IRegistrationCardProps> {\n\n @observable coverImageUrl?: string\n @observable menuAnchor = null\n @observable resetEnabled = false\n @observable isPrinting = false\n\n componentDidMount() {\n const { s3UrlCacheStore, registration } = this.props\n\n this.resetEnabled = config.get(\"branch\") !== \"main\" && registration.id !== undefined\n\n if (registration.class && registration.class.course && registration.class.course.coverUrl) {\n const coverUrl = registration.class.course.coverUrl\n s3UrlCacheStore!.get(coverUrl)\n .then((url: string | undefined) => {\n this.coverImageUrl = url\n })\n .catch((err: Error) => {\n console.log(\"Error loading cover image\")\n })\n }\n }\n\n render() {\n const { classes, registration } = this.props\n\n let title = \"None\"\n let description = \"None\"\n let scoreClassName = classes.classScorePassing\n if (registration.class && registration.class.course) {\n const course = registration.class.course\n title = course.title\n description = course.description\n if (registration.classStatus === ClassStatus.Failed) {\n scoreClassName = classes.classScoreFailed\n } else if (registration.failing) {\n scoreClassName = classes.classScoreFailing\n }\n }\n\n let handoutLink = null\n let status = \"\"\n if (registration.class && registration.class.course) {\n\n if (registration.classStatus === ClassStatus.NotStarted) {\n status = \"\"\n } else {\n if (registration.startedAt) {\n const startedAt = isoToLocalDate(registration.startedAt)\n status = `Started on ${format(startedAt, 'M/d/yyyy')}`\n } else {\n status = `Started`\n }\n }\n\n if (registration.classStatus === ClassStatus.InProgress) {\n status = `${Math.round(registration.classProgress)}% Completed`\n // if (registration.endsAt) {\n // const endsAt = isoToLocalDate(registration.endsAt)\n // const verb = registration.isExpired ? \"Ended\" : \"Ends\"\n // status = `${status} (${verb} ${format(endsAt, 'M/d/yy')})`\n // }\n } else if (registration.classCompleted) {\n if (registration.completedAt) {\n const completedAt = isoToLocalDate(registration.completedAt)\n status = `${registration.classStatus} on ${format(completedAt, 'M/d/yyyy')}`\n } else if (registration.id) {\n status = 'Completed'\n } else {\n status = 'Preview'\n }\n }\n\n if (registration.class.course.handoutUrl) {\n handoutLink = Download Handout\n }\n }\n\n return (\n \n \n \n \n \n \n \n \n { this.coverImageUrl && }\n { this.renderProgress() }\n \n \n \n \n \n \n \n {title}\n \n \n \n {description}\n \n \n {status}\n \n {handoutLink}\n \n \n \n \n { this.renderMenu() }\n
 
\n \n { this.renderScore(scoreClassName) }\n \n
\n
\n
\n
\n )\n }\n\n renderProgress = () => {\n const { classes, registration } = this.props\n\n let result = null\n\n if (registration.id) {\n\n let progressClassName = classes.classProgressNotStarted\n if (registration.classStatus === ClassStatus.InProgress) {\n progressClassName = registration.passing ? classes.classProgressPassing : classes.classProgressFailing\n } else if (registration.classStatus === ClassStatus.Failed) {\n progressClassName = classes.classProgressFailed\n } else if (registration.classStatus === ClassStatus.Passed) {\n progressClassName = classes.classProgressPassing\n }\n result =\n
\n \n
\n }\n\n return result\n }\n\n\n renderMenu = () => {\n const { classes, registration } = this.props\n\n if (!this.resetEnabled && !registration.classCompleted) {\n return null\n }\n\n const menuId = `class-menu`\n\n return (\n \n \n \n {this.isPrinting && }\n \n \n {registration.classCompleted && registration.classStatus === ClassStatus.Passed &&\n Print Certificate\n }\n {this.resetEnabled &&\n Reset Class\n }\n \n \n )\n }\n\n renderScore(className: string) {\n const { registration } = this.props\n if (!registration || registration.classStatus === ClassStatus.NotStarted) {\n return (
)\n } else {\n const score = Math.round(registration.score)\n return (\n
{score}%
\n )\n }\n }\n\n onOpenMenu = (event: any) => {\n console.log(\"onOpenMenu\")\n this.menuAnchor = event.currentTarget\n }\n \n onCloseMenu = () => {\n this.menuAnchor = null\n }\n\n onResetClass = () => {\n const { onCardAction, registration } = this.props\n if (onCardAction) {\n onCardAction(\"reset\", registration)\n }\n this.onCloseMenu()\n }\n\n onPrintCertificate = async () => {\n const { registration, accountStore } = this.props\n this.onCloseMenu()\n this.isPrinting = true\n console.log(`Creating Certificate`)\n const result = await accountStore!.createCertificate(registration)\n .catch((err: Error) => {\n console.log(`Error creating certificate: ${getErrorMessage(err)}`)\n })\n\n this.isPrinting = false\n\n if (result) {\n const blobURL = URL.createObjectURL(result)\n window.open(blobURL)\n }\n }\n\n onCardAction = () => {\n const { onCardAction, registration } = this.props\n\n if (onCardAction) {\n onCardAction(\"open\", registration)\n }\n this.onCloseMenu()\n }\n\n downloadHandout = async () => {\n const { registration, notify } = this.props\n\n if (registration.class!.course!.handoutUrl) {\n const result = await Storage.get(registration.class!.course!.handoutUrl, {download: true})\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to download handout\")\n })\n\n if (result && result.Body) {\n const filename = `${registration.class!.course!.title} Handout.pdf`\n this.downloadBlob(result.Body as Blob, filename);\n }\n }\n }\n\n downloadBlob = (blob: Blob, filename: string) => {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n a.addEventListener('click', clickHandler, false);\n a.click();\n return a;\n }\n}\n\nexport default withStyles(styles)(RegistrationCard)\n","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {createStyles, Grid, Theme, Typography, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport {inject, observer} from \"mobx-react\";\nimport Progress from \"../../components/Progress\";\nimport {observable, when} from \"mobx\";\nimport Class from \"../../model/Class\";\nimport UserStore from \"../../stores/UserStore\";\nimport LessonCard from \"./LessonCard\";\nimport Lesson from \"../../model/Lesson\";\nimport Course from \"../../model/Course\";\nimport CourseStore from \"../../stores/CourseStore\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport NavigationBar from \"../../components/NavigationBar\";\nimport Registration from \"../../model/Registration\";\nimport RegistrationCard from \"../../components/RegistrationCard\";\nimport Confirm from \"../../components/confirm/Confirm\";\nimport Tracking from \"../../components/Tracking\";\nimport TitleBar from \"../../components/TitleBar\";\nimport {isoToLocalDate} from \"../../stores/StoreUtilities\";\nimport {format} from \"date-fns\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n // flexGrow: 1,\n justifyContent: 'top',\n alignItems: 'center',\n },\n registrationCard: {\n flex: \"none\",\n width: \"100%\",\n maxWidth: 960,\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(0.5),\n paddingLeft: theme.spacing(0.5),\n paddingRight: theme.spacing(0.5),\n },\n content: {\n display: \"flex\",\n flex: \"auto\",\n flexGrow: 1,\n overflowY: \"scroll\",\n justifyContent: 'top',\n width: \"100%\",\n maxWidth: 960,\n maxHeight: \"100%\",\n marginTop: theme.spacing(0),\n },\n lessonCard: {\n width: \"100%\",\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n paddingLeft: theme.spacing(0.5),\n paddingRight: theme.spacing(0.5),\n },\n subtitle: {\n paddingLeft: theme.spacing(0.5),\n paddingBottom: theme.spacing(1),\n color: theme.palette.text.secondary,\n fontWeight: 600\n },\n})\n\ninterface IClassPageProps {\n classId?: string\n userStore?: UserStore\n accountStore?: AccountStore\n courseStore?: CourseStore\n progress?: Progress\n confirm?: Confirm\n}\n\n@inject(\"userStore\", \"accountStore\", \"courseStore\", \"progress\", \"confirm\")\n@observer\nclass ClassPage extends React.Component & RouteComponentProps & IClassPageProps & WithTheme> {\n\n @observable isLoading = true\n @observable classObj?: Class\n @observable course?: Course\n @observable lessons: Lesson[] = []\n @observable registration?: Registration\n\n async componentDidMount () {\n const { userStore, accountStore, courseStore, classId, progress } = this.props\n this.isLoading = true\n progress!.show(\"ClassPage\")\n\n when(\n () => !userStore!.isLoading && !accountStore!.isLoading,\n async () => {\n this.classObj = accountStore!.getClass(classId!)\n if (this.classObj) {\n console.log(\"getClass succeeded\")\n const course = await courseStore!.getCourse(this.classObj.courseId)\n if (course) {\n console.log(\"getCourse succeeded\")\n this.course = course\n const registration = userStore!.getClassRegistration(classId!)\n if (registration) {\n console.log(\"getClassRegistration completed\")\n accountStore!.joinClassToRegistration(registration)\n this.sortLessons(registration)\n this.registration = registration\n this.isLoading = false\n }\n progress!.hide(\"ClassPage\")\n }\n } else {\n // TODO: Handle class not found\n this.isLoading = false\n progress!.hide(\"ClassPage\")\n }\n }\n )\n }\n\n render() {\n const { classes } = this.props\n\n const title = (this.classObj) ? this.classObj.course!.title : \"\"\n\n if (!this.registration) {\n return null\n }\n\n return (\n \n {!this.isLoading && this.classObj && this.course && this.registration &&\n \n
\n \n \n
\n \n
\n\n \n {this.lessons.map((l: Lesson, index: number) => {\n return (\n \n {l.number === 1 && index > 0 &&\n Completed\n }\n this.registration!.lessonNumber}/>\n \n )\n })}\n \n
\n
\n }\n
\n )\n }\n\n onRegistrationCardAction = (action: string, registration: Registration) => {\n const { userStore, confirm } = this.props\n\n if (action === \"reset\") {\n Tracking.event({action: 'ResetClass'})\n confirm!.show(\"Confirm Reset Class\",\n `Please confirm you want to reset ${this.registration!.class!.course!.title}`,\n [\"Confirm\", \"Cancel\"],\n async () => {\n const updatedRegistration = await userStore!.resetRegistration(this.registration!.id)\n if (updatedRegistration) {\n this.registration = updatedRegistration\n }\n return true\n },\n () => {\n // Do nothing\n })\n } else if (action === \"open\") {\n if (this.lessons.length > 0) {\n this.onLessonCardAction(this.lessons[0])\n }\n }\n }\n\n onLessonCardAction = (lesson: Lesson) => {\n const { classId, confirm } = this.props\n\n if (this.registration!.isExpired) {\n const endsAt = isoToLocalDate(this.registration!.endsAt)\n confirm!.show(\"Class Ended\",\n `This class ended on ${format(endsAt, 'M/d/yyyy')}. Please contact your supervisor or admin.`,\n [\"OK\"],\n () => {\n return true\n },\n () => {\n // Do nothing\n })\n } else {\n ControlTower.route(`${Routes.class}/${classId}/lesson/${lesson.id}`)\n }\n }\n\n onBack = () => {\n ControlTower.route(Routes.myClasses)\n }\n\n sortLessons = (registration: Registration) => {\n // Sort by number with the next lesson at the beginning\n\n let assignedLessons = []\n if (registration.lessonsAssigned > 0) {\n // Restrict to only the assigned lessons\n assignedLessons = this.course!.lessons.slice(0, registration.lessonsAssigned)\n } else {\n assignedLessons = this.course!.lessons\n }\n\n if (registration && this.course) {\n if (registration!.lessonNumber <= 1) {\n this.lessons = assignedLessons\n } else {\n const lessonNumber = registration!.lessonNumber\n const index = assignedLessons.findIndex((l: Lesson) => { return l.number === lessonNumber})\n if (index >= 0) {\n const lessons = [...assignedLessons.slice(index), ...assignedLessons.slice(0, index)]\n this.lessons = lessons\n } else {\n this.lessons = assignedLessons\n }\n }\n } else {\n this.lessons = []\n }\n }\n}\n\nexport default withTheme((withStyles(styles)(ClassPage)))","import * as React from \"react\";\nimport {\n Card, CardActionArea,\n CardContent,\n createStyles,\n Theme,\n Typography,\n withStyles,\n WithStyles\n} from \"@material-ui/core\";\nimport {inject, observer} from \"mobx-react\";\nimport {observable} from \"mobx\";\nimport Lesson from \"../../model/Lesson\";\nimport Course from \"../../model/Course\";\nimport ReactPlayer from 'react-player'\nimport Registration from \"../../model/Registration\";\nimport {LessonStatus} from \"../../API\";\nimport UserStore from \"../../stores/UserStore\";\nimport config from \"react-global-configuration\";\n\nconst styles = (theme: Theme) => createStyles({\n card: {\n width: '100%',\n maxHeight: 'calc(100vw * (9/16) + 50px)',\n padding: 0\n },\n content: {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.paper,\n padding: \"5px 5px 5px 10px\",\n display: \"flex\"\n },\n left: {\n flexShrink: 0,\n paddingRight: 5,\n alignSelf: \"center\",\n },\n right: {\n flexGrow: 1\n },\n title: {\n fontSize: 16,\n fontWeight: 800,\n paddingBottom: 4\n },\n titleButtons: {\n textAlign: \"right\"\n },\n description: {\n color: theme.palette.text.secondary,\n fontSize: 14,\n fontWeight: 400,\n lineHeight: 1.3\n },\n media: {\n width: \"100%\",\n height: 'calc(100vw * (9/16))',\n maxHeight: 540,\n padding: 0\n }\n\n})\n\ninterface ILessonPlayerProps {\n course: Course\n lesson: Lesson\n registration: Registration\n disabled?: boolean\n hideContent?: boolean\n playing?: boolean\n onPlay?: any\n onPause?: any\n onProgress?: any\n onEnded?: any\n userStore?: UserStore\n}\n\n@observer\n@inject(\"userStore\")\nclass LessonPlayer extends React.Component & ILessonPlayerProps> {\n\n @observable coverImageUrl?: string\n @observable player?: ReactPlayer\n @observable ready = false\n\n private firstPlay = true\n private duration = 0\n private playedSeconds = 0\n\n render() {\n const { classes, course, lesson, disabled, hideContent } = this.props\n let title = \"\"\n let description = \"\"\n if (course) {\n title = course.title\n description = course.description\n }\n\n console.log(`LessonPlayer.disabled = ${disabled}`)\n\n return (\n \n \n \n
\n \n {title}\n \n \n {description}\n \n
\n
\n {!hideContent &&\n \n {!disabled &&\n \n }\n {disabled &&\n \n }\n \n }\n
\n
\n )\n }\n\n ref = (player: ReactPlayer) => {\n this.player = player\n }\n\n onReady = () => {\n const { registration, lesson } = this.props\n this.ready = true\n // Seek to last watched position for current lesson\n if (this.player && registration && registration.videoProgress > 0 &&\n lesson && lesson.number === registration.lessonNumber &&\n registration.lessonStatus === LessonStatus.InProgress)\n {\n const seconds = registration.videoProgress\n console.log(`Seeking to: ${seconds}`)\n this.player.seekTo(seconds, \"seconds\")\n }\n }\n\n onPlay = () => {\n const { registration, disabled } = this.props\n if (this.player && this.ready) {\n if (this.firstPlay && registration) {\n this.firstPlay = false\n this.duration = this.player!.getDuration()\n }\n if (disabled) {\n if (this.props.onPause) {\n console.log(\"onPlay disabled onPause\")\n this.props.onPause()\n }\n } else {\n if (this.props.onPlay) {\n this.props.onPlay()\n }\n }\n }\n }\n\n onPause = () => {\n console.log(\"LessonPlayer onPause\")\n if (this.props.onPause && this.ready) {\n // Ignore pause within the last 3 seconds to avoid a race condition\n if ((this.duration - this.playedSeconds) < 3) {\n console.log(\"Not calling onPause within 3 seconds of end\")\n } else {\n this.props.onPause()\n }\n }\n }\n\n onSeek = (seconds: number) => {\n const { registration } = this.props\n const seekDisabled = config.get(\"branch\") === \"main\"\n if (seekDisabled && seconds > registration.videoProgress) {\n // Prevent seeking ahead\n this.player?.seekTo(registration.videoProgress, \"seconds\")\n }\n }\n\n onProgress = (progress: any) => {\n this.playedSeconds = Math.floor(progress.playedSeconds)\n if (this.props.onProgress) {\n this.props.onProgress(this.playedSeconds)\n }\n }\n\n onEnded = () => {\n if (this.props.onEnded) {\n const seconds = this.player!.getDuration()\n this.props.onEnded(Math.floor(seconds))\n }\n }\n}\n\nexport default withStyles(styles)(LessonPlayer)\n","import * as React from \"react\";\nimport {\n Button,\n Card, CardContent,\n createStyles, Grid,\n Theme,\n Typography,\n withStyles,\n WithStyles\n} from \"@material-ui/core\";\nimport { observer} from \"mobx-react\";\nimport Lesson from \"../../model/Lesson\";\nimport Registration from \"../../model/Registration\";\nimport {observable} from \"mobx\";\n\nconst styles = (theme: Theme) => createStyles({\n card: {\n width: '100%',\n padding: \"2px 4px 4px 4px\",\n borderColor: theme.palette.secondary.main,\n borderStyle: \"solid\",\n borderWidth: 1,\n },\n content: {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.paper,\n padding: \"0px 8px\",\n },\n left: {\n flexShrink: 0,\n paddingRight: theme.spacing(1)\n },\n right: {\n flexGrow: 1\n },\n label: {\n color: theme.palette.secondary.main,\n fontWeight: 800,\n },\n question: {\n fontSize: 16,\n fontWeight: 800,\n paddingBottom: 4\n },\n answers: {\n paddingBottom: 0,\n marginBottom: 0\n },\n answerItem: {\n width: '100%',\n padding: \"4px 0px\"\n },\n answer: {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.grey[100],\n justifyContent: \"left\",\n textAlign: \"left\",\n lineHeight: 1.3,\n padding: \"10px 10px\",\n \"&:focus\": {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n },\n \"&:hover\": {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.light,\n }\n },\n correctAnswer: {\n color: theme.palette.success.contrastText,\n backgroundColor: theme.palette.success.main,\n justifyContent: \"left\",\n textAlign: \"left\",\n lineHeight: 1.3,\n \"&:focus\": {\n color: theme.palette.success.contrastText,\n backgroundColor: theme.palette.success.main,\n }\n },\n wrongAnswer: {\n color: theme.palette.error.contrastText,\n backgroundColor: theme.palette.error.main,\n justifyContent: \"left\",\n textAlign: \"left\",\n lineHeight: 1.3,\n \"&:focus\": {\n color: theme.palette.error.contrastText,\n backgroundColor: theme.palette.error.main,\n }\n },\n cancelButton: {\n color: theme.palette.primary.main ,\n backgroundColor: theme.palette.background.paper\n }\n})\n\ninterface IQuizCardProps {\n lesson: Lesson\n questionIndex: number\n registration: Registration\n showAnswer?: boolean\n onAnswer?: any\n}\n\n@observer\nclass QuizCard extends React.Component & IQuizCardProps> {\n\n @observable registration?: Registration\n\n componentDidMount() {\n this.registration = this.props.registration\n }\n\n componentDidUpdate(prevProps: any) {\n console.log(\"QuizCard componentDidUpdate\")\n this.registration = this.props.registration\n }\n\n render() {\n const { classes, lesson, questionIndex } = this.props\n\n const registration = this.registration!\n\n if (!lesson || !lesson.questions || !registration) {\n return null\n }\n\n const question = lesson.questions[questionIndex]\n\n return (\n \n \n \n
\n \n Question {question.number}:\n \n
\n
\n \n {question.question}\n \n
\n \n {question.answers.map((answer: string, index) => {\n return (\n \n this.onAnswer(event, index)}\n >\n {answer}\n \n \n )\n })}\n {registration.lessonStatus === \"Quiz\" &&\n \n this.onAnswer(event,-1)}\n >\n Cancel\n \n \n }\n \n
\n
\n
\n )\n }\n\n getAnswerClassName = (registration: Registration, index: number) => {\n const { lesson, questionIndex, classes, showAnswer } = this.props\n let className = classes.answer\n\n if (showAnswer) {\n return index + 1 === lesson.questions[questionIndex].correctAnswer ? classes.correctAnswer : classes.answer\n } else {\n // Only show answer after question has been answered\n const questionNumber = lesson.questions[questionIndex].number\n if (lesson && registration && (registration.lessonCompleted || questionNumber === registration.answers.length)) {\n if (registration.answers.length >= questionNumber) {\n // Negative values indicate a wrong answer\n const answer = registration.getAnswer(questionNumber)\n // Only show the result of the answer they gave\n if (Math.abs(answer) === index+1) {\n className = (answer >= 0) ? classes.correctAnswer : classes.wrongAnswer\n }\n }\n }\n }\n\n return className\n }\n\n onAnswer = (event: any, index: number) => {\n if (this.props.onAnswer) {\n this.props.onAnswer(index + 1)\n }\n }\n\n}\n\nexport default withStyles(styles)(QuizCard)\n","import * as React from 'react';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\nimport { RouteComponentProps } from '@reach/router'\nimport {inject, observer} from \"mobx-react\";\nimport {Grid, Paper, Typography} from \"@material-ui/core\";\nimport DialogButton from \"../../components/form/DialogButton\";\nimport FormValidator from \"../../components/form/FormValidator\";\nimport SignInHero from \"../../images/GovGig_Logo_Transparent_512.png\";\nimport Registration from \"../../model/Registration\";\nimport {ClassStatus} from \"../../API\";\nimport {getErrorMessage} from \"../../stores/StoreUtilities\";\nimport {observable} from \"mobx\";\nimport UserStore from \"../../stores/UserStore\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport ProgressButton from \"../../components/form/ProgressButton\";\n\nconst styles = (theme: Theme) => createStyles({\n dialogPaper: {\n maxWidth: 640,\n [theme.breakpoints.down('sm')]: {\n marginTop: 'calc(50vh - 350px)',\n },\n [theme.breakpoints.up('sm')]: {\n marginTop: 'calc(50vh - 325px)',\n },\n marginLeft: \"auto\",\n marginRight: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\"\n },\n dialogImage: {\n height: 'auto',\n width: '100%'\n },\n dialogHero: {\n width: \"256px\",\n height: \"256px\",\n paddingTop: 190,\n backgroundImage: `url(${SignInHero})`,\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"center\"\n },\n titleBackground: {\n width: \"100%\",\n },\n dialogContent: {\n padding: \"0 20px 10px 20px\",\n },\n dialogActions: {\n justifyContent: \"center\",\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n dialogTitle: {\n color: theme.palette.text.secondary,\n paddingLeft: 20,\n paddingRight: 20,\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n textAlign: 'center'\n },\n heroIcon: {\n color: theme.palette.secondary.main\n },\n appTitle: {\n paddingTop: 7,\n color: theme.palette.primary.main,\n fontSize: 24,\n fontWeight: 800,\n textAlign: \"center\",\n fontFamily: [\n 'Montserrat',\n 'sans-serif'\n ].join(','),\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: 18,\n fontWeight: 800,\n textAlign: \"center\",\n fontFamily: [\n 'Montserrat',\n 'sans-serif'\n ].join(','),\n },\n message: {\n color: theme.palette.text.primary,\n textAlign: \"center\"\n },\n})\n\ninterface IClassCompletionDialogProps {\n onClose: any\n registration: Registration\n userStore?: UserStore\n accountStore?: AccountStore\n}\n\n@inject(\"userStore\", \"accountStore\")\n@observer\nclass ClassCompletionDialog extends React.Component & RouteComponentProps & IClassCompletionDialogProps> {\n @observable isPrinting = false\n\n onSubmit = () => {\n this.onClose()\n }\n\n onClose = () => {\n if (this.props.onClose) {\n this.props.onClose()\n }\n };\n\n render() {\n const { classes, registration } = this.props\n\n let title = \"\"\n let message = null\n\n if (registration.classStatus === ClassStatus.Passed) {\n title = \"Congratulations!\"\n message =
\n \n You have successfully completed\n \n \n {registration.class!.course!.title}\n \n \n with a score of {`${Math.round(registration.score)}%`}\n \n
\n } else {\n title = \"Good Effort!\"\n message =
\n \n You have completed\n \n \n {registration.class!.course!.title}\n \n \n with a score of {`${Math.round(registration.score)}% which is below the 80% required to pass.`}\n \n \n We encourage you to try again!\n \n
\n }\n\n\n return (\n \n \n \n \n \n \n \n
\n {title}\n
\n {message}\n
\n \n {registration.classStatus === ClassStatus.Passed &&\n \n Print Certificate\n \n }\n {/**/}\n {/* PRINT CERTIFICATE*/}\n {/**/}\n \n Done\n \n \n
\n
\n )\n }\n\n onPrintCertificate = async () => {\n const { registration, accountStore } = this.props\n\n this.isPrinting = true\n if (!registration.user) {\n console.log(\"Loading registration user\")\n registration.user = await accountStore!.getUser(registration.userId)\n }\n console.log(`Creating Certificate`)\n const result = await accountStore!.createCertificate(registration)\n .catch((err: Error) => {\n console.log(`Error creating certificate: ${getErrorMessage(err)}`)\n })\n\n this.isPrinting = false\n\n if (result) {\n const blobURL = URL.createObjectURL(result)\n window.open(blobURL)\n this.onClose()\n }\n\n }\n}\n\nexport default withStyles(styles)(ClassCompletionDialog)\n","import React from \"react\";\nimport { Avatar, Box, createStyles, Grid, Theme, Typography, withStyles, WithStyles, WithTheme, withTheme, withWidth, WithWidth } from \"@material-ui/core\";\nimport { blueGrey } from \"@material-ui/core/colors\";\nimport classnames from 'classnames'\n\nconst styles = (theme: Theme) => createStyles({\n avatar: {\n width: theme.spacing(5),\n height: theme.spacing(5),\n boxShadow: '0px 1px 12px rgba(0, 0, 0, 0.25)'\n },\n darkBlue: {\n backgroundColor: blueGrey[700]\n },\n heading: {\n fontWeight: 'bold'\n }\n})\n\ninterface IValuePropositionProps {\n avatarIcon: any\n customColorClass?: any\n heading?: string \n text: string\n}\n\nclass ValueProposition extends React.Component & IValuePropositionProps & WithTheme & WithWidth> {\n \n render() {\n const { avatarIcon, classes, heading, text } = this.props \n\n return (\n \n \n \n \n \n {avatarIcon}\n \n \n \n { heading && \n \n {heading}\n \n }\n \n \n {text}\n \n \n \n \n \n \n ) \n }\n\n colorClass(): any {\n const { classes, customColorClass } = this.props \n if (customColorClass) {\n return customColorClass\n }\n return classes.darkBlue\n }\n}\n\nexport default withTheme(withStyles(styles)(withWidth()(ValueProposition)))\n","import * as React from 'react';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\nimport { RouteComponentProps } from '@reach/router'\nimport {inject, observer} from \"mobx-react\";\nimport {Grid, Paper, Typography} from \"@material-ui/core\";\nimport DialogButton from \"../../components/form/DialogButton\";\nimport FormValidator from \"../../components/form/FormValidator\";\nimport SignInHero from \"../../images/GovGig_Logo_Transparent_512.png\";\nimport Registration from \"../../model/Registration\";\nimport {observable} from \"mobx\";\nimport UserStore from \"../../stores/UserStore\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport ProgressButton from \"../../components/form/ProgressButton\";\nimport ValueProposition from \"../../components/page/ValueProposition\";\nimport PersonIcon from '@material-ui/icons/Person';\nimport AttachMoneyIcon from '@material-ui/icons/AttachMoney';\nimport FlightIcon from '@material-ui/icons/Flight';\nimport RoomIcon from '@material-ui/icons/Room';\nimport {UpdateUserInput, UserRole} from \"../../API\";\nimport Notify from \"../../components/notify/Notify\";\nimport config from \"react-global-configuration\";\nimport ControlTower from \"../../components/ControlTower\";\n\nconst styles = (theme: Theme) => createStyles({\n dialogPaper: {\n maxWidth: 640,\n [theme.breakpoints.down('sm')]: {\n marginTop: 'calc(50vh - 350px)',\n },\n [theme.breakpoints.up('sm')]: {\n marginTop: 'calc(50vh - 410px)',\n },\n marginLeft: \"auto\",\n marginRight: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\"\n },\n dialogImage: {\n height: 'auto',\n width: '100%'\n },\n dialogHero: {\n width: \"256px\",\n height: \"256px\",\n paddingTop: 190,\n backgroundImage: `url(${SignInHero})`,\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"center\"\n },\n titleBackground: {\n width: \"100%\",\n },\n dialogContent: {\n padding: \"0 20px 10px 20px\",\n },\n dialogActions: {\n justifyContent: \"center\",\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n dialogTitle: {\n color: theme.palette.text.secondary,\n paddingLeft: 20,\n paddingRight: 20,\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n textAlign: 'center'\n },\n heroIcon: {\n color: theme.palette.secondary.main\n },\n appTitle: {\n paddingTop: 7,\n color: theme.palette.primary.main,\n fontSize: 24,\n fontWeight: 800,\n textAlign: \"center\",\n fontFamily: [\n 'Montserrat',\n 'sans-serif'\n ].join(','),\n },\n title: {\n color: theme.palette.text.primary,\n fontSize: 18,\n fontWeight: 800,\n textAlign: \"center\",\n fontFamily: [\n 'Montserrat',\n 'sans-serif'\n ].join(','),\n },\n message: {\n color: theme.palette.text.primary,\n textAlign: \"center\",\n fontWeight: 600,\n marginTop: 8\n },\n})\n\ninterface IProfileActionDialogProps {\n onClose: any\n registration: Registration\n userStore?: UserStore\n accountStore?: AccountStore\n notify?: Notify\n}\n\n@inject(\"userStore\", \"accountStore\", \"notify\")\n@observer\nclass ProfileActionDialog extends React.Component & RouteComponentProps & IProfileActionDialogProps> {\n @observable isProcessing = false\n\n onSubmit = () => {\n this.onClose()\n }\n\n onClose = () => {\n if (this.props.onClose) {\n this.props.onClose()\n }\n };\n\n render() {\n const { classes, registration, userStore } = this.props\n\n let title = \"\"\n let message\n let proposition\n let actionButton\n\n if (userStore?.isStudent) {\n title = \"Do you have the GovGig Advantage?\"\n message =
\n \n As a Federal contracting professional, GovGig helps you display your skills, credentials, and relevant experience to be be seen by Contractors who need talent. The GovGig advantages make you stand out!\n \n
\n proposition = \n }\n text=\"Showcase your experience and credentials in a professional profile.\"\n />\n }\n text=\"Get contacted about well-paid positions, where you want to work.\"\n />\n }\n text=\"Learn about new positions to increase your income or work in a new region.\"\n />\n }\n text=\"You are more than a resume; GovGig helps you stand out from the crowd.\"\n />\n \n actionButton = Join GovGig\n } else if (userStore!.user!.role === UserRole.Applicant || userStore!.user!.role === UserRole.Candidate) {\n title = \"Add Certificate to Profile?\"\n message =
\n \n Would you like to add this certificate to your GovGig Profile?\n \n \n {registration.class!.course!.title}\n \n
\n actionButton = Add to Profile\n } else {\n // TODO: Handle doing nothing\n }\n\n return (\n \n \n \n \n \n \n \n
\n {title}\n
\n {message}\n {proposition}\n
\n \n {actionButton}\n \n Done\n \n \n
\n
\n )\n }\n\n onJoinGovGig = async () => {\n const { registration, accountStore, userStore, notify } = this.props\n\n this.isProcessing = true\n if (!registration.user) {\n registration.user = await accountStore!.getUser(registration.userId)\n }\n\n // Convert to Applicant and take to Profile page\n if (userStore!.isStudent) {\n const updateUserInput: UpdateUserInput = {\n id: userStore!.user!.id,\n role: UserRole.Applicant\n }\n const user = await userStore!.updateUser(updateUserInput)\n .catch((err) => {\n notify!.show(\"error\", \"Unable to convert user to Applicant\")\n })\n\n if (user) {\n // Send to GovGig Profile page\n const jobsUrl = config.get(\"jobsUrl\")\n if (jobsUrl) {\n ControlTower.open(`${jobsUrl}/profile`, \"_self\")\n }\n\n }\n }\n \n this.isProcessing = false\n }\n\n onAddCertificate = async () => {\n const { registration, accountStore } = this.props\n\n this.isProcessing = true\n if (!registration.user) {\n registration.user = await accountStore!.getUser(registration.userId)\n }\n\n // TODO: Add certificate to profile\n\n this.isProcessing = false\n }\n}\n\nexport default withStyles(styles)(ProfileActionDialog)\n","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {createStyles, Grid, Theme, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport {inject, observer} from \"mobx-react\";\nimport Progress from \"../../components/Progress\";\nimport {observable, when} from \"mobx\";\nimport Class from \"../../model/Class\";\nimport UserStore from \"../../stores/UserStore\";\nimport Lesson from \"../../model/Lesson\";\nimport Course from \"../../model/Course\";\nimport CourseStore from \"../../stores/CourseStore\";\nimport LessonPlayer from \"./LessonPlayer\";\nimport LessonCard from \"../class/LessonCard\";\nimport NavigationBar from \"../../components/NavigationBar\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport Registration, {PASSING_SCORE} from \"../../model/Registration\";\nimport {ActivityType, ClassStatus, LessonStatus, UpdateRegistrationInput} from \"../../API\";\nimport DialogButton from \"../../components/form/DialogButton\";\nimport QuizCard from \"../class/QuizCard\";\nimport Notify from \"../../components/notify/Notify\";\nimport Tracking from \"../../components/Tracking\";\nimport {getISODateFromDate, getISODateToday, isoToLocalDate} from \"../../stores/StoreUtilities\";\nimport ClassCompletionDialog from \"./ClassCompletionDialog\";\nimport {addYears, subDays} from \"date-fns\";\nimport {Question} from \"../../model/Question\";\nimport ProfileActionDialog from \"./ProfileActionDialog\";\n\nconst styles = (theme: Theme) => createStyles({\n rootStyle: {\n flexGrow: 1,\n justifyContent: 'top',\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh'\n },\n root: {\n display: \"flex\",\n flexGrow: 1,\n justifyContent: 'top',\n alignItems: 'center',\n },\n card: {\n width: \"100%\",\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n paddingLeft: theme.spacing(0.5),\n paddingRight: theme.spacing(0.5),\n },\n content: {\n marginTop: theme.spacing(2),\n justifyContent: 'flex-start',\n },\n quizContainer: {\n marginTop: theme.spacing(1),\n width: \"100%\",\n },\n quizButton: {\n }\n})\n\n// const PASSING_SCORE = 80.0\n\ninterface ILessonPageProps {\n classId?: string\n lessonId?: string\n userStore?: UserStore\n accountStore?: AccountStore\n courseStore?: CourseStore\n progress?: Progress\n notify?: Notify\n}\n\n@inject(\"userStore\", \"accountStore\", \"courseStore\", \"progress\", \"notify\")\n@observer\nclass LessonPage extends React.Component & RouteComponentProps & ILessonPageProps & WithTheme> {\n\n @observable classObj?: Class\n @observable course?: Course\n @observable lesson?: Lesson\n @observable questionIndex: number = 0\n @observable registration?: Registration\n @observable isLoading = true\n @observable playing = true\n @observable disabled = false\n @observable showCompletionDialog = false\n @observable showProfileActionDialog = false\n private lastProgressSaved: number = 0.0\n private saveInterval = 30 // seconds\n update: UpdateRegistrationInput = {\n id: \"\"\n }\n\n async componentDidMount () {\n const { userStore, accountStore, courseStore, classId, lessonId, progress } = this.props\n this.isLoading = true\n progress!.show(\"LessonPage\")\n\n when(\n () => !userStore!.isLoading && !accountStore!.isLoading,\n async () => {\n console.log(\"async componentDidMount\")\n console.log(\"getClass\")\n this.classObj = accountStore!.getClass(classId!)\n if (this.classObj) {\n console.log(\"getClass succeeded\")\n const course = await courseStore!.getCourse(this.classObj.courseId)\n if (course)\n console.log(\"getCourse succeeded\")\n this.course = course\n this.lesson = course?.getLesson(lessonId!)\n const registration = userStore!.getClassRegistration(classId!)\n if (registration) {\n console.log(\"getClassRegistration succeeded\")\n accountStore!.joinClassToRegistration(registration)\n this.disabled = registration!.lessonStatus === LessonStatus.Quiz\n this.lastProgressSaved = registration!.videoProgress\n this.registration = registration\n }\n this.isLoading = false\n this.questionIndex = 0\n this.lastProgressSaved = 0\n console.log(\"LessonPage loading completed\")\n progress!.hide(\"LessonPage\")\n }\n })\n }\n\n componentDidUpdate(prevProps: any) {\n if (prevProps.lessonId !== this.props.lessonId) {\n this.componentDidMount()\n }\n }\n\n render() {\n const { classes } = this.props\n\n if (!this.registration) {\n return null\n }\n\n const title = (this.classObj) ? this.classObj.course!.title : \"\"\n\n let showTakeQuiz = false\n let showQuiz = false\n let showNext = false\n let hideContent = false\n if (this.registration && this.lesson &&\n !this.registration.classCompleted &&\n this.registration.lessonNumber === this.lesson.number)\n {\n const lessonStatus = this.registration!.lessonStatus\n if (lessonStatus === LessonStatus.Ended) {\n if (this.lesson.questions && this.lesson.questions && this.lesson.questions.length > 0) {\n showTakeQuiz = true\n } else {\n showNext = true\n }\n } else if (lessonStatus === LessonStatus.Quiz) {\n showQuiz = true\n hideContent = this.lesson.videoDuration > 10 // Don't hide for short videos\n if (this.lesson.questions.length > this.questionIndex) {\n const questionNumber = this.lesson.questions[this.questionIndex].number\n if (questionNumber === this.registration.answers.length) {\n // Pause to show the answer\n showNext = true\n }\n }\n } else if (this.registration!.lessonCompleted) {\n showQuiz = true\n hideContent = true\n showNext = true\n }\n }\n\n return (\n \n \n {!this.isLoading && this.course && this.registration && !this.showCompletionDialog && !this.showProfileActionDialog &&\n \n \n \n {!this.isLoading &&\n \n }\n \n \n {!this.isLoading &&\n \n }\n \n {showTakeQuiz &&\n \n \n Take Quiz\n \n \n }\n {showQuiz &&\n \n \n \n }\n {showNext &&\n \n \n NEXT\n \n \n }\n \n }\n { this.showCompletionDialog &&\n
\n \n
\n }\n { this.showProfileActionDialog &&\n
\n \n
\n }\n
\n
\n )\n }\n\n onBack = () => {\n ControlTower.route(`${Routes.class}/${this.props.classId}`)\n }\n\n onTogglePlay = () => {\n console.log(\"onPlay\")\n this.playing = !this.playing\n }\n\n onPlay = () => {\n Tracking.event({action: 'PlayLesson'})\n this.playing = true\n\n if (!this.registration) {\n return\n }\n const registration = this.registration\n\n // Only track progress of the current class && uncompleted lesson\n if (!registration.classCompleted &&\n registration.lessonNumber === this.lesson!.number &&\n (registration.lessonStatus === null ||\n registration.lessonStatus === LessonStatus.NotStarted))\n {\n this.update.classStatus = ClassStatus.InProgress\n this.update.lessonStatus = LessonStatus.InProgress\n this.updateRegistration(\"onPlay\")\n }\n }\n\n onPause = () => {\n this.playing = false\n\n if (!this.registration) {\n return\n }\n\n const registration = this.registration\n\n // Only track progress of the current class && uncompleted lesson\n if (registration.classCompleted ||\n registration.lessonNumber !== this.lesson!.number ||\n (registration.lessonStatus !== null &&\n registration.lessonStatus !== LessonStatus.NotStarted &&\n registration.lessonStatus !== LessonStatus.InProgress)) {\n return\n }\n this.updateRegistration(\"onPause\")\n }\n\n onEnded = (seconds: number) => {\n Tracking.event({action: 'EndLesson'})\n this.playing = false\n\n if (!this.registration) {\n return\n }\n\n const registration = this.registration\n\n // Only track progress of the current class && uncompleted lesson\n if (registration.classCompleted ||\n registration.lessonNumber !== this.lesson!.number ||\n (registration.lessonStatus !== LessonStatus.NotStarted &&\n registration.lessonStatus !== LessonStatus.InProgress)) {\n return\n }\n\n this.update.lessonStatus = LessonStatus.Ended\n this.update.videoProgress = seconds\n this.updateRegistration(\"onEnded\")\n }\n\n onProgress = (seconds: number) => {\n if (!this.registration) {\n return\n }\n const registration = this.registration\n\n // Only track progress of the current class && uncompleted lesson\n if (registration.classCompleted ||\n registration.lessonNumber !== this.lesson!.number ||\n (registration.lessonStatus !== null &&\n registration.lessonStatus !== LessonStatus.NotStarted &&\n registration.lessonStatus !== LessonStatus.InProgress)) {\n return\n }\n\n // console.log(`onProgress: ${seconds}`)\n if (seconds > registration.videoProgress) {\n this.update.videoProgress = seconds\n if (!registration.lessonStatus || registration.lessonStatus === LessonStatus.NotStarted) {\n this.update.lessonStatus = LessonStatus.InProgress\n this.update.classStatus = ClassStatus.InProgress\n }\n\n // Periodically save progress\n if (seconds >= this.lastProgressSaved + this.saveInterval) {\n this.updateRegistration(\"onProgress\")\n }\n }\n }\n\n onQuiz = () => {\n if (this.registration!.lessonStatus !== LessonStatus.Ended) {\n return\n }\n Tracking.event({action: 'LessonQuiz'})\n this.disabled = true\n this.update.lessonStatus = LessonStatus.Quiz\n this.updateRegistration(\"onQuiz\")\n }\n\n onAnswer = (answer: number) => {\n const { userStore } = this.props\n if (!this.registration || this.registration.lessonStatus !== LessonStatus.Quiz) {\n // Don't allow changing answer\n return\n }\n\n if (answer <= 0) {\n // Cancelled\n Tracking.event({action: 'LessonQuizCancel'})\n this.disabled = false\n this.update.lessonStatus = LessonStatus.Ended\n } else {\n const correctAnswer = this.lesson!.questions[this.questionIndex].correctAnswer\n if (answer !== correctAnswer) {\n // Indicate wrong answer with negative number\n answer = -answer\n Tracking.event({action: 'LessonFailed'})\n } else {\n Tracking.event({action: 'LessonPassed'})\n }\n this.update.answers = this.registration.answers ? this.registration.answers : []\n this.update.answers[this.lesson!.questions[this.questionIndex].number-1] = answer\n if (this.isQuizCompleted()) {\n // Lessons are considered passed when the final question has been answered\n this.update!.lessonStatus = LessonStatus.Passed\n }\n\n userStore!.createActivity(ActivityType.LessonComplete, this.lesson!.id)\n }\n\n this.updateRegistration(\"onAnswer\")\n }\n\n onNext = async () => {\n const { userStore } = this.props\n if (!this.registration!.lessonCompleted) {\n if (this.registration!.lessonStatus === LessonStatus.Quiz && this.lesson!.questions.length-1 > this.questionIndex) {\n // Advance to the next question\n this.questionIndex += 1\n return\n }\n }\n\n\n const nextLesson = this.course?.getNextLesson(this.registration!.lessonNumber)\n\n if (nextLesson) {\n this.update.lessonNumber = nextLesson.number\n this.update.lessonId = nextLesson.id\n this.update.lessonStatus = LessonStatus.NotStarted\n this.update.videoProgress = 0\n this.update.score = this.computeScore()\n this.update.classProgress = this.computeClassProgress()\n const registration = await this.updateRegistration(\"onNext\")\n if (registration) {\n // ControlTower.route(`${Routes.class}/${this.classObj!.id}`)\n // Route to next lesson\n ControlTower.route(`${Routes.class}/${this.classObj!.id}/lesson/${nextLesson.id}`)\n }\n } else {\n this.update.lessonNumber = 1\n this.update.videoProgress = 0.0\n this.update.score = this.computeScore()\n this.update.classProgress = 100.0\n if (this.update.score >= PASSING_SCORE) {\n this.update.classStatus = ClassStatus.Passed\n Tracking.event({action: 'ClassPassed'})\n } else {\n this.update.classStatus = ClassStatus.Failed\n Tracking.event({action: 'ClassFailed'})\n }\n const registration = await this.updateRegistration(\"onNext\")\n if (registration) {\n userStore!.createActivity(ActivityType.ClassComplete, registration.classId)\n this.showCompletionDialog = true\n }\n }\n }\n\n onCloseCompletion = () => {\n const { userStore } = this.props\n this.showCompletionDialog = false\n\n if (userStore!.isStudent && this.registration!.classStatus === ClassStatus.Passed) {\n this.showProfileActionDialog = true\n } else {\n ControlTower.route(Routes.myClasses)\n }\n }\n\n onCloseProfileAction = () => {\n this.showProfileActionDialog = false\n ControlTower.route(Routes.myClasses)\n }\n\n isQuizCompleted = () => {\n return this.lesson!.questions.length-1 === this.questionIndex\n }\n\n getLessonResultStatus = () => {\n // This is not used presently\n if (this.lesson!.questions.length === 0) {\n return LessonStatus.Passed\n }\n\n let lessonStatus = LessonStatus.Passed\n this.lesson!.questions.forEach((q: Question) => {\n const answer = this.registration?.getAnswer(q.number)\n if (answer && answer < 0) {\n lessonStatus = LessonStatus.Failed\n }\n })\n\n return lessonStatus\n }\n\n\n updateRegistration = async (source: string): Promise => {\n const { userStore, notify } = this.props\n console.log(`updateRegistration: ${source}`)\n this.update.id = this.registration!.id\n // console.log(`updateRegistration: ${JSON.stringify(this.update)}`)\n\n // Update started and competed dates\n if (this.registration!.classStatus === ClassStatus.NotStarted && this.update.classStatus === ClassStatus.InProgress) {\n this.update.startedAt = getISODateToday()\n const nextAssignmentAt = this.classObj!.getRegistrationNextAssignmentAt()\n if (nextAssignmentAt) {\n this.update.nextAssignmentAt = nextAssignmentAt\n }\n const startedAt = isoToLocalDate(this.update.startedAt)\n const endsAt = subDays(addYears(startedAt, 1), 1)\n this.update.endsAt = getISODateFromDate(endsAt)\n } else if (this.registration!.classStatus === ClassStatus.InProgress &&\n (this.update.classStatus === ClassStatus.Passed || this.update.classStatus === ClassStatus.Failed)) {\n this.update.completedAt = getISODateToday()\n }\n\n return userStore!.updateRegistration(this.update)\n .then( (registration: Registration | undefined) => {\n console.log(`saved progress: ${source}`)\n if (registration) {\n // console.log(`Updated Registration: ${JSON.stringify(registration)}`)\n this.registration = registration\n this.lastProgressSaved = registration.videoProgress\n this.update = {\n id: registration.id\n }\n return this.registration\n } else {\n return null\n }\n })\n .catch((error) => {\n notify!.show(\"error\", \"Error saving status\")\n console.log(`saveProgress error: ${error}`)\n return null\n })\n }\n\n computeScore() {\n let answers = this.update.answers ? this.update.answers : this.registration!.answers\n let score = 0\n\n if (answers && answers.length > 0) {\n let passed = 0\n let count = 0\n for (let answer of answers) {\n if (answer && answer > 0) {\n ++passed\n }\n if (answer) {\n ++count\n }\n }\n score = passed / count * 100.0\n }\n return score\n }\n\n computeClassProgress() {\n let progress = 0\n if (this.course && this.registration) {\n const index = this.course.lessons.findIndex((l: Lesson) => { return l.number === this.registration!.lessonNumber })\n if (index >= 0) {\n progress = (index+1) / this.course.lessons.length * 100.0\n }\n }\n return progress\n }\n\n}\n\nexport default withTheme((withStyles(styles)(LessonPage)))","import * as React from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\nimport { RouteComponentProps } from '@reach/router'\nimport { Auth } from 'aws-amplify';\nimport DialogButton from '../form/DialogButton'\nimport {inject, observer} from \"mobx-react\";\nimport {observable} from \"mobx\";\nimport FormValidator from \"../../components/form/FormValidator\";\nimport TextFieldValidator from \"../../components/form/TextFieldValidator\";\nimport Notify from \"../notify/Notify\";\n\nconst styles = (theme: Theme) => createStyles({\n dialogActions: {\n justifyContent: \"center\",\n paddingBottom: \"16px\",\n paddingLeft: 20\n }\n})\n\ninterface IPasswordChangeDialogProps {\n onClose: any\n notify?: Notify\n}\n\n@inject(\"notify\")\n@observer\nclass PasswordChangeDialog extends React.Component & RouteComponentProps & IPasswordChangeDialogProps> {\n\n @observable values = {\n oldPassword: \"\",\n newPassword: \"\"\n }\n\n @observable message = \"\"\n\n onClose = () => {\n if (this.props.onClose) {\n this.message = \"\"\n this.props.onClose();\n }\n };\n\n onSubmit = () => {\n const { notify } = this.props\n\n this.message = \"\"\n\n Auth.currentAuthenticatedUser()\n .then(user => {\n Auth.changePassword(user, this.values.oldPassword, this.values.newPassword)\n .then(data => {\n notify!.show(\"success\", \"Password changed!\")\n if (this.props.onClose) {\n this.message = \"\"\n this.props.onClose();\n }\n })\n .catch(err => {\n this.message = err.message\n });\n })\n .catch(err => {\n this.message = err.message\n });\n }\n\n onChange = (event: React.ChangeEvent) => {\n const name = event.target.name\n this.values[name] = event.target.value\n }\n\n render() {\n const { classes } = this.props\n\n return (\n \n \n Change Password\n \n \n {this.message}\n \n \n \n \n \n \n Cancel\n \n \n Save\n \n \n \n \n );\n }\n}\n\nexport default withStyles(styles)(PasswordChangeDialog)\n","import * as React from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\nimport { RouteComponentProps } from '@reach/router'\nimport { Auth } from 'aws-amplify';\nimport DialogButton from '../form/DialogButton'\nimport {inject, observer} from \"mobx-react\";\nimport {observable} from \"mobx\";\nimport FormValidator from \"../../components/form/FormValidator\";\nimport TextFieldValidator from \"../../components/form/TextFieldValidator\";\nimport Notify from \"../notify/Notify\";\nimport Visible from \"../Visible\";\nimport ProgressButton from \"../form/ProgressButton\";\n\nconst styles = (theme: Theme) => createStyles({\n dialogActions: {\n justifyContent: \"center\",\n paddingBottom: \"16px\",\n paddingLeft: 20\n },\n submitButton: {\n color: \"#fff\",\n },\n instructions: {\n marginBottom: 0\n }\n\n})\n\ninterface IEmailChangeDialogProps {\n onClose: any\n onChange: any\n oldEmail: string\n notify?: Notify\n}\n\n@inject(\"notify\")\n@observer\nclass EmailChangeDialog extends React.Component & RouteComponentProps & IEmailChangeDialogProps> {\n\n @observable values = {\n oldEmail: \"\",\n newEmail: \"\",\n code: \"\"\n }\n\n componentDidMount() {\n this.values.oldEmail = this.props.oldEmail\n }\n\n @observable message = \"\"\n @observable confirming: boolean = false\n @observable isProcessing: boolean = false\n\n onClose = () => {\n if (this.props.onClose) {\n this.message = \"\"\n this.props.onClose();\n }\n };\n\n onSubmit = () => {\n const { notify, onChange } = this.props\n\n this.message = \"\"\n\n if (!this.confirming) {\n this.isProcessing = true\n Auth.currentAuthenticatedUser()\n .then(user => {\n Auth.updateUserAttributes(user, {email: this.values.newEmail.toLowerCase()})\n .then(data => {\n this.confirming = true\n this.isProcessing = false\n })\n .catch(err => {\n this.message = err.message\n this.isProcessing = false\n });\n })\n .catch(err => {\n this.message = err.message\n });\n } else {\n this.isProcessing = true\n Auth.verifyCurrentUserAttributeSubmit('email', this.values.code)\n .then(result => {\n this.isProcessing = false\n notify!.show(\"success\", \"Email address updated!\")\n if (onChange) {\n onChange(this.values.newEmail.toLowerCase())\n }\n })\n .catch(err => {\n this.isProcessing = false\n this.message = err.message\n });\n }\n }\n\n onChange = (event: React.ChangeEvent) => {\n const name = event.target.name\n this.values[name] = event.target.value\n }\n\n onResendCode = () => {\n const { notify } = this.props\n this.message = \"\"\n\n Auth.currentAuthenticatedUser()\n .then(user => {\n Auth.verifyCurrentUserAttribute(\"email\")\n .then(data => {\n this.confirming = true\n this.isProcessing = false\n notify!.show(\"success\", \"Confirmation email resent!\")\n })\n .catch(err => {\n this.message = err.message\n this.isProcessing = false\n });\n })\n .catch(err => {\n this.message = err.message\n });\n }\n\n render() {\n const { classes } = this.props\n\n return (\n \n \n Change Email\n \n \n {this.message}\n \n \n \n \n \n Please check your new email for a confirmation code.\n \n \n \n Resend confirmation code\n \n \n \n \n \n Cancel\n \n \n {this.confirming ? \"CONFIRM\" : \"NEXT\"}\n \n \n \n \n );\n }\n}\n\nexport default withStyles(styles)(EmailChangeDialog)\n","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {\n Checkbox,\n createStyles,\n DialogActions,\n DialogContent,\n DialogContentText,\n FormControlLabel,\n FormGroup,\n Grid,\n Paper,\n Radio,\n RadioGroup,\n Theme,\n withStyles,\n WithStyles,\n withTheme,\n WithTheme\n} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport TitleBar from \"../../components/TitleBar\";\nimport {inject, observer} from \"mobx-react\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport {observable, when} from \"mobx\";\nimport Progress from \"../../components/Progress\";\nimport FormValidator from \"../../components/form/FormValidator\";\nimport TextFieldValidator from \"../../components/form/TextFieldValidator\";\nimport DialogButton from \"../../components/form/DialogButton\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport {\n ActivityType,\n ClassStatus,\n CreateRegistrationInput,\n CreateUserInput,\n LessonStatus,\n UpdateUserInput,\n UserRole,\n UserStatus\n} from \"../../API\";\nimport Notify from \"../../components/notify/Notify\";\nimport User from \"../../model/User\";\nimport Registration from \"../../model/Registration\";\nimport Class from \"../../model/Class\";\nimport UserStore from \"../../stores/UserStore\";\nimport Tracking from \"../../components/Tracking\";\nimport {getISODateTime} from \"../../stores/StoreUtilities\";\nimport Visible from \"../../components/Visible\";\nimport PasswordChangeDialog from \"../../components/auth/PasswordChangeDialog\";\nimport EmailChangeDialog from \"../../components/auth/EmailChangeDialog\";\nimport Confirm from \"../../components/confirm/Confirm\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n alignItems: 'flex-start',\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n\n },\n titleBar: {\n flexGrow: 1,\n justifyContent: \"space-between\",\n width: \"100%\",\n paddingTop: theme.spacing(1),\n color: theme.palette.text.secondary,\n },\n message: {\n color: theme.palette.error.main,\n marginTop: 10\n },\n dialogPaper: {\n display: 'flex',\n flexGrow: 1,\n justifyContent: 'space-between',\n width: '100%',\n marginTop: theme.spacing(1)\n },\n form: {\n width: '100%'\n },\n dialogContent: {\n padding: theme.spacing(2)\n },\n dialogActions: {\n justifyContent: \"center\",\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n paddingBottom: theme.spacing(2),\n borderRadius: \"0px 0px 10px 10px\"\n },\n dialogTitle: {\n paddingLeft: 20,\n paddingRight: 20,\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n textAlign: 'center'\n },\n label: {\n color: theme.palette.text.secondary,\n marginTop: theme.spacing(2),\n },\n checkboxLabel: {\n color: theme.palette.text.secondary,\n marginLeft: 0,\n },\n resendButton: {\n color: theme.palette.secondary.main,\n paddingLeft: 0,\n },\n radioGroup: {\n margin: 0,\n padding: 0\n }\n})\n\ninterface IUserEditPageProps {\n accountId?: string\n userId?: string\n accountStore?: AccountStore\n userStore?: UserStore\n progress?: Progress\n notify?: Notify\n confirm?: Confirm\n location?: any\n}\n\n@inject(\"accountStore\", \"userStore\", \"progress\", \"notify\", \"confirm\")\n@observer\nclass UserEditPage extends React.Component & RouteComponentProps & IUserEditPageProps & WithTheme> {\n\n @observable isLoading = true\n @observable user?: User\n @observable values = {\n firstName: \"\",\n lastName: \"\",\n jobTitle: \"\",\n email: \"\",\n phone: \"\",\n userRole: \"Student\",\n sendInvite: false,\n userStatus: \"Inactive\"\n }\n @observable registrations: Registration[] = []\n @observable message = \"\"\n @observable showPasswordChange = false\n @observable showEmailChange = false\n private classId?: any\n\n componentDidMount () {\n const { accountId, userId, userStore, accountStore, progress} = this.props\n this.isLoading = true\n when(\n () => !userStore!.isLoading && accountId !== undefined,\n async () => {\n // Get classId query param\n this.classId = new URLSearchParams(this.props.location.search).get(\"classId\")\n console.log(`classId = ${this.classId}`)\n await accountStore!.loadAccount(accountId!)\n\n if (userId) {\n progress!.show(\"UserEditPage\")\n this.user = await accountStore!.getUser(userId!)\n if (this.user) {\n this.values = {\n firstName: this.user.firstName,\n lastName: this.user.lastName,\n jobTitle: this.user.jobTitle,\n email: this.user.email,\n phone: this.user.phone,\n userRole: UserRole[this.user.role] ?? UserRole.Student,\n userStatus: this.user.userStatus.toString(),\n sendInvite: false,\n }\n this.loadRegistrations()\n }\n this.isLoading = false\n progress!.hide(\"UserEditPage\")\n } else {\n this.loadRegistrations()\n this.isLoading = false\n progress!.hide(\"UserEditPage\")\n }\n }\n )\n\n }\n\n\n render() {\n const { classes, userStore, userId } = this.props\n\n const title = this.user ? \"Edit Person\" : \"Add Person\"\n const isAdmin = userStore!.isAdmin\n const isAdminOrAgent = userStore!.isAdminOrAgent\n const isEmployer = isAdminOrAgent || userStore!.isEmployer\n const roleDisabled = (userId !== undefined)\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n { this.user && this.user.userStatus !== UserStatus.Registered && this.user.userStatus !== UserStatus.Suspended &&\n \n SEND INVITATION\n \n }\n { this.user && this.user.id === userStore!.user!.id &&\n \n CHANGE EMAIL     \n \n }\n { this.user && this.user.id === userStore!.user!.id &&\n \n CHANGE PASSWORD\n \n }\n \n {/*
*/}\n {/* */}\n {/* }*/}\n {/* />*/}\n {/*
*/}\n \n
Role
\n \n \n }\n label=\"Admin\"\n labelPlacement=\"end\"\n />\n \n \n }\n label=\"Agent\"\n labelPlacement=\"end\"\n />\n \n \n }\n label=\"Applicant\"\n labelPlacement=\"end\"\n />\n \n \n }\n label=\"Candidate\"\n labelPlacement=\"end\"\n />\n \n }\n label=\"Employer\"\n labelPlacement=\"end\"\n />\n }\n label=\"Student\"\n labelPlacement=\"end\"\n />\n \n \n
Status
\n \n }\n label=\"Inactive\"\n labelPlacement=\"end\"\n disabled={userId !== undefined}\n />\n }\n label=\"Invited\"\n labelPlacement=\"end\"\n disabled={userId !== undefined}\n />\n }\n label=\"Registered\"\n labelPlacement=\"end\"\n disabled={this.values.userStatus === \"Inactive\" || this.values.userStatus === \"Invited\"}\n />\n }\n label=\"Suspended\"\n labelPlacement=\"end\"\n disabled={this.values.userStatus === \"Inactive\" || this.values.userStatus === \"Invited\"}\n />\n \n { this.user && this.user.userStatus !== UserStatus.Registered && this.user.userStatus !== UserStatus.Suspended &&\n \n DELETE PERSON\n \n }\n
\n \n
Classes
\n \n {this.registrations.map((r: Registration) => {\n return }\n label={r.class!.course!.title}\n labelPlacement=\"end\"\n key={r.classId}\n />\n })\n }\n \n
\n
\n\n \n {this.message}\n \n
\n \n \n Cancel\n \n \n Save\n \n \n
\n
\n
\n\n {this.showEmailChange &&\n \n }\n {this.showPasswordChange &&\n \n }\n
\n
\n )\n }\n\n loadRegistrations = async () => {\n const { accountStore } = this.props\n\n const classes = await accountStore!.listClasses()\n\n let registrations: Registration[] = []\n\n if (this.user) {\n registrations = [...this.user!.registrations]\n\n registrations.forEach((r: Registration) => {\n const classFound = classes.find((c: Class) => c.id === r.classId)\n if (classFound) {\n r.class = classFound\n }\n })\n }\n\n // Add pseudo-registrations for unregistered classes\n classes.forEach((c: Class) => {\n // Check for existing registration\n if (!registrations.find((r: Registration) => { return r.class!.courseId === c.courseId})) {\n\n const reg = new Registration({\n id: (this.classId && this.classId === c.id) ? \"checked\" : \"\",\n accountId: c.accountId,\n classId: c.id,\n class: c,\n userId: null,\n user: undefined,\n classStatus: ClassStatus.NotStarted,\n classProgress: 0,\n lessonNumber: 1,\n lessonStatus: LessonStatus.NotStarted,\n videoProgress: 0,\n score: 0\n })\n registrations.push(reg)\n }\n })\n\n // Sort by course title\n registrations.sort((a: Registration, b: Registration) => {\n return a.title.localeCompare(b.title)\n })\n\n this.registrations = registrations\n }\n\n onChange = (event: React.ChangeEvent) => {\n const name = event.target.name\n if (name === \"sendInvite\") {\n this.values![name] = event.target.checked\n } else if (name === \"registration\") {\n this.toggleRegistration(event.target.id)\n } else {\n this.values[name] = event.target.value\n }\n }\n\n toggleRegistration = (id: string) => {\n const found = this.registrations.find((r: Registration) => { return r.classId === id})\n if (found) {\n if (found.id === \"checked\") {\n found.id = \"\"\n } else if (found.id === \"\") {\n found.id = \"checked\"\n }\n this.registrations = [...this.registrations]\n }\n }\n\n onResendInvite = async () => {\n const { accountStore, notify } = this.props\n if (!this.user || this.user.userStatus === UserStatus.Registered) {\n return\n }\n\n // Set to Inactive, then Invited to cause resend\n const update: UpdateUserInput = {\n id: this.user!.id,\n userStatus: UserStatus.Inactive,\n }\n\n let user = await accountStore!.updateUser(update)\n .catch((err: Error) => {\n notify!.show(\"error\", err.message)\n })\n\n if (user) {\n update.userStatus = UserStatus.Invited\n update.invitedAt = getISODateTime()\n user = await accountStore!.updateUser(update)\n .catch((err: Error) => {\n notify!.show(\"error\", err.message)\n })\n\n if (user) {\n this.user = user\n this.values.userStatus = UserStatus.Invited.toString()\n notify!.show(\"success\", \"Email invitation sent!\")\n }\n }\n }\n\n onChangeEmailOpen = () => {\n this.showEmailChange = true\n }\n\n onEmailChange = (newEmail: string) => {\n this.values.email = newEmail\n this.showEmailChange = false\n this.updateEmail()\n }\n\n onEmailChangeClose = () => {\n this.showEmailChange = false\n }\n\n onChangePasswordOpen = () => {\n this.showPasswordChange = true\n }\n\n onPasswordChangeClose = () => {\n this.showPasswordChange = false\n }\n\n onDelete = async () => {\n const { accountStore, confirm, notify } = this.props\n\n if (this.user) {\n confirm!.show(\"Confirm Delete\",\n `Please confirm you want to delete ${this.user!.fullName}`,\n [\"Confirm\", \"Cancel\"],\n async () => {\n const user = await accountStore!.deleteUser(this.user!.id)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Error deleting person\")\n })\n if (user) {\n this.onCancel()\n return true\n } else {\n return false\n }\n },\n () => {\n // Do nothing\n })\n }\n }\n\n onCancel = () => {\n const { userStore, accountStore } = this.props\n const accountId = accountStore!.account!.id\n\n if (this.classId) {\n ControlTower.route(`${Routes.account}/${accountId}/class/${this.classId}`)\n } else if (userStore!.isEmployer || userStore!.isAdminOrAgent) {\n ControlTower.route(`${Routes.account}/${accountId}/people`)\n } else {\n ControlTower.route(`${Routes.account}/${accountId}/info`)\n }\n }\n\n onSubmit = async () => {\n const { userId, accountStore, userStore, notify } = this.props\n\n const values = this.values\n\n if (userId) {\n Tracking.event({action: 'UpdateUser'})\n const input: UpdateUserInput = {\n id: userId!,\n firstName: values.firstName,\n lastName: values.lastName,\n jobTitle: values.jobTitle,\n email: values.email.toLowerCase(),\n phone: values.phone,\n role: UserRole[values.userRole],\n userStatus: UserStatus[values.userStatus]\n }\n\n let user = undefined\n if (userId === userStore!.user!.id) {\n user = await userStore!.updateUser(input)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to update user\")\n })\n } else {\n user = await accountStore!.updateUser(input)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to update user\")\n })\n }\n\n if (user) {\n // Add registrations\n await this.registerUserForClasses(user)\n\n notify!.show(\"success\", \"User updated!\")\n\n this.onCancel()\n }\n } else {\n // New user\n Tracking.event({action: 'CreateUser'})\n const input: CreateUserInput = {\n accountId: accountStore!.account!.id,\n firstName: values.firstName,\n lastName: values.lastName,\n jobTitle: values.jobTitle,\n email: values.email.toLowerCase(),\n phone: values.phone,\n userStatus: UserStatus[values.userStatus],\n role: UserRole[values.userRole]\n }\n\n const user = await accountStore!.createUser(input)\n .catch((err: Error) => {\n notify!.show(\"error\", err.message)\n })\n\n if (user) {\n notify!.show(\"success\", \"User added!\")\n userStore!.createActivity(ActivityType.UserCreate, user.id)\n // Add registrations\n await this.registerUserForClasses(user)\n\n this.onCancel()\n }\n }\n\n }\n\n registerUserForClasses = async (user: User) => {\n this.registrations.forEach(async (r: Registration) => {\n if (r.id === \"checked\") {\n await this.registerUserForClass(user, r.classId)\n }\n })\n }\n\n registerUserForClass = async (user: User, classId: string) => {\n const { accountStore, userStore, notify} = this.props\n\n const classObj = await accountStore!.getClass(classId)\n if (!classObj) {\n console.log(`Class not found: ${classId}`)\n return\n }\n\n // Register for class\n const input: CreateRegistrationInput = {\n accountId: user.accountId,\n classId: classId,\n userId: user.id,\n classStatus: ClassStatus.NotStarted,\n classProgress: 0,\n lessonNumber: 1,\n lessonStatus: LessonStatus.NotStarted,\n videoProgress: 0,\n score: 0,\n lessonsAssigned: classObj.getRegistrationLessonsAssigned()\n }\n\n const registration = await accountStore!.addClassRegistration(input)\n .catch(err => {\n notify!.show(\"warning\", err.message)\n })\n\n if (registration) {\n userStore!.createActivity(ActivityType.ClassRegistration, registration.classId)\n }\n return registration\n }\n\n private updateEmail = async () => {\n const { userId, userStore, notify } = this.props\n\n const input: UpdateUserInput = {\n id: userId!,\n email: this.values.email.toLowerCase(),\n }\n\n await userStore!.updateUser(input)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to update user email\")\n })\n }\n}\n\nexport default withTheme((withStyles(styles)(UserEditPage)))","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {\n Box,\n createStyles,\n DialogActions,\n DialogContent,\n DialogContentText,\n Grid,\n Paper,\n TextField,\n Theme,\n Typography,\n withStyles,\n WithStyles,\n withTheme,\n WithTheme\n} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport DialogButton from \"../../components/form/DialogButton\";\nimport {computed, observable} from \"mobx\";\nimport {inject, observer} from \"mobx-react\";\nimport FormValidator from \"../../components/form/FormValidator\";\nimport TextFieldValidator from \"../../components/form/TextFieldValidator\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport Notify from \"../../components/notify/Notify\";\nimport UserStore, {UserStoreConstants} from \"../../stores/UserStore\";\nimport User from \"../../model/User\";\nimport {ActivityType, UpdateUserInput, UserRole, UserStatus} from \"../../API\";\nimport Visible from \"../../components/Visible\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport ProgressButton from \"../../components/form/ProgressButton\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport Tracking from \"../../components/Tracking\";\n\nconst styles = (theme: Theme) => createStyles({\n logo: {\n height: '150px',\n width: 'auto'\n },\n message: {\n color: theme.palette.error.main,\n fontSize: 18,\n marginTop: 10\n },\n instructions: {\n color: theme.palette.text.primary,\n fontSize: 18,\n marginTop: 10\n },\n dialogContent: {\n padding: theme.spacing(3)\n },\n dialogActions: {\n justifyContent: \"center\",\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n paddingBottom: theme.spacing(2),\n borderRadius: \"0px 0px 10px 10px\"\n },\n dialogTitle: {\n padding: theme.spacing(2), \n borderRadius: \"10px 10px 0px 0px\"\n },\n label: {\n color: theme.palette.text.secondary,\n marginLeft: 0,\n },\n msgLink: {\n color: theme.palette.secondary.main\n },\n errorLink: {\n color: \"white\"\n }\n})\n\ninterface IRegisterPageProps {\n userStore?: UserStore\n accountStore?: AccountStore\n notify?: Notify\n accountId?: string\n userId?: string\n role?: UserRole \n email?: string\n}\n\n@inject(\"userStore\", \"accountStore\", \"notify\" /*, \"privacyPolicy\", \"termsOfService\" */)\n@observer\nclass RegisterPage extends React.Component & RouteComponentProps & IRegisterPageProps & WithTheme> {\n\n @observable values = {\n password: \"\",\n phone: \"\",\n userId: \"\",\n accountId: \"\",\n verificationCode: \"\",\n }\n @observable role?: UserRole \n @observable email?: string \n @observable user?: User\n @observable isVerifying: boolean = false\n @observable autoVerify: boolean = false\n @observable isProcessing: boolean = false\n @observable message = \"\"\n\n @computed \n get validInfo(): boolean {\n return this.values.accountId !== \"\"\n && this.values.userId !== \"\"\n && this.email !== undefined\n && this.role !== undefined\n }\n\n componentDidMount () {\n const { accountId, userId, role, email } = this.props\n\n if (accountId) {\n this.values.accountId = accountId\n }\n\n if (userId) {\n this.values.userId = userId\n }\n\n this.email = email \n this.role = role \n }\n\n render() {\n const title = \"Register\"\n\n return (\n \n \n \n \n \n { this.validInfo ?\n this.renderForm() : \n this.renderWarning()\n }\n \n \n \n \n \n )\n }\n\n renderForm() {\n const { classes } = this.props\n\n return (\n \n \n \n Complete GovGig Registration\n \n \n \n \n Please create a password to complete your registration.\n \n \n If you have already registered, click to Sign In.\n \n \n \n \n\n \n {this.message}\n \n\n \n \n \n Please check your email for a verification code.\n \n \n \n \n Resend verification code\n \n \n\n \n \n \n Cancel\n \n \n { this.isVerifying ? \"Verify\" : \"Register\" }\n \n \n \n \n )\n }\n\n renderWarning() {\n const { classes } = this.props\n\n return (\n \n \n Complete GovGig Registration\n \n \n \n \n {\"Invalid registration link\"}\n \n \n If you were invited to join GovGig, please click on the invitation link you should have received via email.\n \n \n If you did not receive an invite, or have another issue, please contact GovGig.\n \n \n \n \n )\n }\n\n onChange = (event: React.ChangeEvent) => {\n const name = event.target.name\n this.values[name] = event.target.value\n }\n\n onCancel = () => {\n ControlTower.route(Routes.home)\n }\n\n onSubmit = async () => {\n const {accountId, userStore, accountStore, notify, classes} = this.props\n const values = this.values\n let verification = \"\"\n\n if (!this.isVerifying) {\n this.isProcessing = true\n\n // Sign-up user\n const signupResult = await userStore!.signUp(values.userId, values.password, this.email!, values.phone,\n values.accountId, this.role!)\n .catch(async (err: Error) => {\n let message\n if (err.name === UserStoreConstants.USERNAME_EXISTS_EXCEPTION) {\n // Try resending confirmation code\n await userStore!.resendSignUp(this.values.userId)\n .then((result: any) => {\n this.isVerifying = true\n })\n .catch((err: Error) => {\n if (err.message === UserStoreConstants.USER_ALREADY_CONFIRMED_MESSAGE) {\n message = {err.message} Click here to Sign In.\n } else {\n message = err.message\n }\n })\n } else {\n message = `Unable to create user. ${err.message}`\n }\n if (message) {\n notify!.show(\"error\", message)\n Tracking.event({action: 'RegisterError', label: message})\n }\n this.isProcessing = false\n })\n if (signupResult) {\n this.isVerifying = true\n }\n this.isProcessing = false\n } else if (this.isVerifying) {\n this.isProcessing = true\n\n verification = await userStore!.confirmSignUp(values.userId, values.verificationCode)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to verify account\")\n Tracking.event({action: 'RegisterVerifyError', label: err.message})\n this.isProcessing = false\n })\n\n if (verification === \"SUCCESS\") {\n // Sign in\n let user = await userStore!.signIn(values.userId, values.password)\n .catch((err: Error) => {\n if (err.message !== UserStoreConstants.USER_NOT_FOUND) {\n notify!.show(\"error\", \"Unable to signin\")\n this.isProcessing = false\n }\n })\n\n if (!user && accountId) {\n notify!.show(\"error\", \"A user with this email was not found for this account. Please contact the account user or administrator.\")\n Tracking.event({action: 'RegisterError', label: 'User not found'})\n this.isProcessing = false\n return\n }\n\n if (user && accountId && user.accountId !== accountId) {\n notify!.show(\"error\", \"A user with this email is already registered for another account. Please contact the account user or administrator.\")\n Tracking.event({action: 'RegisterError', label: 'Email already registered'})\n this.isProcessing = false\n return\n }\n\n if (user && user.email !== this.email!.toLowerCase()) {\n notify!.show(\"error\", \"The email address does not match the invitation. Please contact the account user or administrator.\")\n Tracking.event({action: 'RegisterError', label: \"Email doesn't match invitation\"})\n this.isProcessing = false\n return\n }\n\n if (user) {\n // Update User to registered\n const updateUserInput: UpdateUserInput = {\n id: user.id,\n userStatus: UserStatus.Registered\n }\n\n user = await userStore!.updateUser(updateUserInput)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to update user\")\n Tracking.event({action: 'RegisterError', label: `Unable to update user: ${err.message}`})\n this.isProcessing = false\n })\n\n if (user.isAdminOrAgent) {\n // Sign-in again to authenticate with new role\n user = await userStore!.signIn(values.userId, values.password)\n }\n\n // Initialize accountStore for new user\n if (user.account) {\n await accountStore!.init(user.account)\n } else {\n console.log(\"user.account is undefined!\")\n }\n\n this.isProcessing = false\n notify!.show(\"success\", \"Welcome to GovGig Academy!\")\n Tracking.event({action: 'RegisterSuccess'})\n userStore!.createActivity(ActivityType.UserRegister, user.id)\n if (user.role === UserRole.Employer) {\n ControlTower.route(`${Routes.account}/${user.accountId}/classes`)\n } else if (user.role === UserRole.Admin) {\n ControlTower.route(Routes.accounts)\n } else {\n ControlTower.route(Routes.myClasses)\n }\n }\n }\n }\n }\n\n onResendCode = () => {\n const { userStore, notify} = this.props\n Tracking.event({action: 'RegisterResendCode'})\n userStore!.resendSignUp(this.values.userId)\n .then((result: any) => {\n notify!.show(\"success\", \"Verification code resent\")\n })\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to resend verification code\")\n })\n }\n\n}\n\nexport default withTheme((withStyles(styles)(RegisterPage)))","import * as React from \"react\";\nimport {\n Avatar,\n Card,\n CardContent,\n createStyles, IconButton,\n Theme,\n Typography,\n withStyles,\n WithStyles\n} from \"@material-ui/core\";\nimport {observer} from \"mobx-react\";\nimport Registration from \"../../model/Registration\";\nimport AssignmentTurnedInIcon from '@material-ui/icons/AssignmentTurnedIn';\nimport AssignmentIndIcon from '@material-ui/icons/AssignmentInd';\nimport AssignmentIcon from '@material-ui/icons/Assignment';\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport RemoveCircleIcon from '@material-ui/icons/RemoveCircle';\n\nimport {ClassStatus} from \"../../API\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\n\nconst styles = (theme: Theme) => createStyles({\n card: {\n width: '100%',\n minHeight: 80,\n padding: 0\n },\n content: {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.paper,\n padding: \"5px 10px\",\n display: \"flex\"\n },\n left: {\n flexShrink: 0,\n paddingRight: 10,\n alignSelf: \"center\",\n },\n middle: {\n flexGrow: 1\n },\n right: {\n flexShrink: 0,\n paddingLeft: 10,\n alignSelf: \"right\",\n },\n title: {\n fontSize: 20,\n fontWeight: 600,\n lineHeight: 1.2\n },\n details: {\n fontSize: 14,\n fontWeight: 400,\n maxHeight: 24,\n overflow: \"hidden\",\n },\n // Avatar Styles\n unRegisteredAvatar: {\n backgroundColor: theme.palette.primary.main,\n width: 35,\n height: 35,\n },\n unregisteredIcon: {\n color: theme.palette.text.secondary,\n width: 25,\n height: 25,\n },\n notStartedAvatar: {\n backgroundColor: theme.palette.primary.main,\n width: 35,\n height: 35,\n },\n notStartedIcon: {\n color: theme.palette.text.secondary,\n width: 25,\n height: 25,\n },\n inProgressAvatar: {\n width: 35,\n height: 35,\n },\n inProgressIcon: {\n color: theme.palette.text.primary,\n width: 25,\n height: 25,\n },\n failedAvatar: {\n backgroundColor: theme.palette.error.dark,\n width: 35,\n height: 35,\n },\n failedIcon: {\n color: theme.palette.error.contrastText,\n width: 25,\n height: 25,\n },\n passedAvatar: {\n backgroundColor: theme.palette.success.main,\n width: 35,\n height: 35,\n },\n passedIcon: {\n color: theme.palette.success.contrastText,\n width: 25,\n height: 25,\n },\n // Progress styles\n progressBar: {\n marginTop: 5\n },\n linearProgress: {\n color: theme.palette.primary.main,\n width: \"100%\",\n height: 3,\n },\n linearProgressDeterminateColor: {\n backgroundColor: theme.palette.primary.light\n },\n classProgressNotStarted: {\n backgroundColor: theme.palette.primary.light\n },\n classProgressPassing: {\n backgroundColor: theme.palette.success.main\n },\n classProgressFailing: {\n backgroundColor: theme.palette.warning.dark,\n },\n classProgressFailed: {\n backgroundColor: theme.palette.error.dark,\n },\n addButton: {\n backgroundColor: theme.palette.background.paper,\n width: 20,\n height: 20,\n },\n addIcon: {\n color: theme.palette.secondary.main,\n // color: theme.palette.success.main,\n width: 20,\n height: 20,\n },\n removeButton: {\n backgroundColor: theme.palette.background.paper,\n width: 20,\n height: 20,\n },\n removeIcon: {\n color: theme.palette.secondary.main,\n // color: theme.palette.error.main,\n width: 20,\n height: 20,\n },\n\n})\n\ninterface IRosterCardProps {\n registration: Registration\n onRegister?: any\n onUnregister?: any\n}\n\n// @inject()\n@observer\nclass RosterCard extends React.Component & IRosterCardProps> {\n\n render() {\n const { classes, registration } = this.props\n\n const user = registration.user\n if (!user) {\n return null\n }\n\n return (\n \n \n
\n { this.renderAvatar() }\n { this.renderProgress() }\n
\n
\n \n {user.lastName}, {user.firstName}\n \n \n {user.role}\n \n
\n
\n { this.renderButton() }\n
\n
\n
\n )\n }\n\n renderAvatar = () => {\n const { classes, registration } = this.props\n\n let avatar = null\n\n if (!registration.id) {\n avatar = \n \n \n } else {\n if (registration.classStatus === ClassStatus.NotStarted) {\n avatar = \n \n \n } else if (registration.classStatus === ClassStatus.InProgress) {\n avatar = \n \n \n } else if (registration.classStatus === ClassStatus.Failed) {\n avatar = \n \n \n } else if (registration.classStatus === ClassStatus.Passed) {\n avatar = \n \n \n }\n }\n\n return avatar\n }\n\n renderProgress = () => {\n const { classes, registration } = this.props\n\n let result = null\n\n if (registration.id) {\n\n let progressClassName = classes.classProgressNotStarted\n if (registration.classStatus === ClassStatus.InProgress) {\n progressClassName = registration.passing ? classes.classProgressPassing : classes.classProgressFailing\n } else if (registration.classStatus === ClassStatus.Failed) {\n progressClassName = classes.classProgressFailed\n } else if (registration.classStatus === ClassStatus.Passed) {\n progressClassName = classes.classProgressPassing\n }\n result =\n
\n \n
\n }\n\n return result\n }\n\n private renderButton() {\n const { classes, registration, onUnregister } = this.props\n\n let button = null\n\n if (!registration.id) {\n button =\n \n \n \n } else if (onUnregister) {\n button =\n \n \n \n }\n\n return button\n }\n\n\n onRegister = () => {\n const { registration, onRegister} = this.props\n\n if (onRegister) {\n onRegister(registration)\n }\n }\n\n onUnregister = () => {\n const { registration, onUnregister} = this.props\n\n if (onUnregister) {\n onUnregister(registration)\n }\n }\n\n}\n\nexport default withStyles(styles)(RosterCard)\n","import * as React from \"react\";\nimport {createStyles, Theme, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\n\nconst styles = (theme: Theme) => createStyles({\n})\n\ninterface ILinearGaugeSegmentProps {\n title: string\n percent: number\n className: string\n}\n\nclass LinearGaugeSegment extends React.Component & ILinearGaugeSegmentProps & WithTheme> {\n\n render() {\n const { title, percent } = this.props\n\n return (\n
\n {title}\n
\n )\n }\n}\n\nexport default withTheme((withStyles(styles)(LinearGaugeSegment)))\n","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {\n createStyles,\n Grid,\n Theme,\n Tooltip,\n Typography,\n withStyles,\n WithStyles,\n withTheme,\n WithTheme\n} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport {inject, observer} from \"mobx-react\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport {observable, when} from \"mobx\";\nimport Progress from \"../../components/Progress\";\nimport Notify from \"../../components/notify/Notify\";\nimport UserStore from \"../../stores/UserStore\";\nimport Class from \"../../model/Class\";\nimport User from \"../../model/User\";\nimport Registration from \"../../model/Registration\";\nimport RosterCard from \"./RosterCard\";\nimport SearchBar from \"material-ui-search-bar\";\nimport TitleButton from \"../../components/TitleButton\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport {ActivityType, ClassStatus, CreateRegistrationInput, LessonStatus, UpdateClassInput} from \"../../API\";\nimport NavigationBar from \"../../components/NavigationBar\";\nimport Tracking from \"../../components/Tracking\";\nimport LinearGaugeSegment from \"../../components/widgets/LinearGaugeSegment\";\nimport ClassCard from \"../class/ClassCard\";\nimport Confirm from \"../../components/confirm/Confirm\";\nimport {isoToLocalDate} from \"../../stores/StoreUtilities\";\nimport {isBefore, startOfToday} from \"date-fns\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n alignItems: 'flex-start'\n },\n classCardContainer : {\n width: \"100%\",\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1.5),\n paddingRight: theme.spacing(1),\n },\n titleBar: {\n display: \"flex\",\n flex: \"none\",\n justifyContent: \"space-between\",\n width: \"100%\",\n // maxWidth: 480,\n height: 40,\n padding: theme.spacing(1),\n paddingTop: 0,\n color: theme.palette.text.secondary,\n },\n message: {\n color: theme.palette.error.main,\n marginTop: 10\n },\n dialogPaper: {\n display: 'flex',\n flexGrow: 1,\n justifyContent: 'space-between',\n width: '100%',\n marginTop: theme.spacing(1)\n },\n form: {\n width: '100%'\n },\n content: {\n display: \"flex\",\n flexGrow: 1,\n justifyContent: 'top',\n width: \"100%\",\n maxWidth: 960,\n marginTop: theme.spacing(0),\n marginBottom: theme.spacing(2)\n },\n card: {\n width: \"100%\",\n paddingTop: theme.spacing(1),\n },\n controlBar: {\n display: \"flex\",\n flex: \"none\",\n flexDirection: \"row\",\n marginTop: theme.spacing(0.5),\n marginBottom: theme.spacing(0.5),\n height: 30,\n width: \"100%\",\n maxWidth: 960,\n paddingRight: theme.spacing(1)\n },\n search: {\n flexGrow: 1,\n },\n searchBar: {\n height: 30,\n },\n actions: {\n flexGrow: 0,\n alignItems: \"center\",\n alignContent: \"center\",\n },\n subtitle: {\n margin: theme.spacing(1),\n color: theme.palette.text.secondary,\n fontWeight: 600\n },\n quantity: {\n margin: theme.spacing(1),\n color: theme.palette.text.secondary,\n fontWeight: 600,\n textAlign: \"right\",\n paddingRight: theme.spacing(1)\n },\n gaugeBar: {\n width: \"100%\",\n marginBottom: theme.spacing(1)\n },\n linearGauge: {\n backgroundColor: theme.palette.background.default,\n width: \"calc(100% - 8px)\",\n height: 20,\n padding: 0,\n marginBottom: theme.spacing(1),\n whiteSpace: \"nowrap\",\n overflow: \"hidden\"\n },\n notStartedSegment: {\n display: \"inline-block\",\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.secondary,\n fontSize: 12,\n fontWeight: 600,\n margin: 0,\n padding: \"2px 4px\",\n borderWidth: 0,\n overflow: \"hidden\"\n },\n inProgressSegment: {\n display: \"inline-block\",\n backgroundColor: theme.palette.primary.light,\n color: theme.palette.text.primary,\n fontSize: 12,\n fontWeight: 600,\n margin: 0,\n padding: \"2px 4px\",\n borderWidth: 0,\n whiteSpace: \"nowrap\",\n textOverflow: \"\",\n overflow: \"hidden\"\n },\n passedSegment: {\n display: \"inline-block\",\n backgroundColor: theme.palette.success.main,\n color: theme.palette.success.contrastText,\n fontSize: 12,\n fontWeight: 600,\n margin: 0,\n padding: \"2px 4px\",\n borderWidth: 0,\n overflow: \"hidden\"\n },\n failedSegment: {\n display: \"inline-block\",\n backgroundColor: theme.palette.error.dark,\n color: theme.palette.error.contrastText,\n fontSize: 12,\n fontWeight: 600,\n margin: 0,\n padding: \"2px 4px\",\n borderWidth: 0,\n whiteSpace: \"nowrap\",\n textOverflow: \"\",\n overflow: \"hidden\"\n }\n})\n\ninterface IAccountClassPageProps {\n accountId?: string\n classId?: string\n userStore?: UserStore\n accountStore?: AccountStore\n progress?: Progress\n notify?: Notify\n confirm?: Confirm\n}\n\n@inject(\"accountStore\", \"userStore\", \"progress\", \"notify\", \"confirm\")\n@observer\nclass AccountClassPage extends React.Component & RouteComponentProps & IAccountClassPageProps & WithTheme> {\n\n @observable isLoading = true\n @observable classObj?: Class\n @observable users: User[] = []\n @observable registered: Registration[] = []\n @observable registeredFilter: Registration[] = []\n @observable unregistered: Registration[] = []\n @observable unregisteredFilter: Registration[] = []\n @observable notStarted: Registration[] = []\n @observable inProgress: Registration[] = []\n @observable passed: Registration[] = []\n @observable failed: Registration[] = []\n @observable search?: string\n @observable isEnded: boolean = false\n\n\n componentDidMount () {\n const { accountId, classId, accountStore, progress} = this.props\n this.isLoading = true\n progress!.show(\"AccountClassPage\")\n when(\n () => !accountStore!.isLoading && accountId !== undefined && classId !== undefined,\n async () => {\n await accountStore!.loadAccount(accountId!)\n this.classObj = await accountStore!.getClassAndRegistrations(classId!)\n this.registered = this.classObj!.registrations\n if (this.classObj) {\n if (this.classObj.termEnd) {\n const termEnd = isoToLocalDate(this.classObj.termEnd)\n this.isEnded = isBefore(termEnd, startOfToday())\n }\n this.users = await accountStore!.listUsers(this.classObj.accountId)\n this.joinUsers()\n this.filterUsers()\n }\n this.isLoading = false\n progress!.hide(\"AccountClassPage\")\n }\n )\n }\n\n\n render() {\n const { classes } = this.props\n\n if (!this.classObj || !this.classObj.course) {\n return null\n }\n\n const title = this.classObj.course.title\n const notStartedPercent = (this.registered.length > 0) ? Math.round(this.notStarted.length / this.registered.length * 100.0) : 0\n const inProgressPercent = (this.registered.length > 0) ? Math.round(this.inProgress.length / this.registered.length * 100.0) : 0\n const passedPercent = (this.registered.length > 0) ? Math.round(this.passed.length / this.registered.length * 100.0) : 0\n const failedPercent = (this.registered.length > 0) ? Math.round(this.failed.length / this.registered.length * 100.0) : 0\n\n return (\n \n \n
\n \n
\n \n
\n\n {/*
*/}\n {/* */}\n {/* {this.renderGaugeSegments()}*/}\n {/* */}\n {/*
*/}\n\n
\n
\n \n
\n
\n \n
\n
\n\n \n \n Not Started ({notStartedPercent}%)\n \n \n {this.notStarted.length}\n \n \n\n \n {this.notStarted.map((r: Registration) => {\n return (\n \n \n \n )\n })}\n \n\n \n \n In Progress ({inProgressPercent}%)\n \n \n {this.inProgress.length}\n \n \n\n \n {this.inProgress.map((r: Registration) => {\n return (\n \n \n \n )\n })}\n \n\n \n \n Passed ({passedPercent}%)\n \n \n {this.passed.length}\n \n \n\n \n {this.passed.map((r: Registration) => {\n return (\n \n \n \n )\n })}\n \n\n \n \n Failed ({failedPercent}%)\n \n \n {this.failed.length}\n \n \n\n \n {this.failed.map((r: Registration) => {\n return (\n \n \n \n )\n })}\n \n\n \n \n Unassigned\n \n \n {this.unregisteredFilter.length}\n \n \n\n \n {this.unregisteredFilter.map((r: Registration) => {\n return (\n \n \n \n )\n })}\n \n
\n
\n
\n )\n }\n\n private onCardAction = (action: string, classObj: Class) => {\n if (action === \"edit\") {\n ControlTower.route(`${Routes.account}/${this.props.accountId}/classEdit/${classObj.id}`)\n }\n }\n\n onSearchChange = (value: string) => {\n this.search = value\n // localStorage.setItem(ClientsPageConstants.CLIENTS_SEARCH_NAME, this.search)\n this.filterUsers()\n }\n\n onCancelSearch = () => {\n this.search = undefined\n // localStorage.removeItem(ClientsPageConstants.CLIENTS_SEARCH_NAME)\n this.filterUsers()\n }\n\n onBack = () => {\n const { accountId } = this.props\n ControlTower.route(`${Routes.account}/${accountId}/classes`)\n }\n\n onAddStudent = () => {\n const { accountId, classId, confirm, notify } = this.props\n\n if (this.isEnded) {\n notify!.show(\"warning\", \"The term for this class has ended and no students may be added. Please add a new class.\")\n return\n }\n\n if (!this.classObj!.course!.isFree) {\n // Check if there are seats available\n if (this.classObj!.seatsPurchased && this.classObj!.seatsFilled >= this.classObj!.seatsPurchased) {\n confirm!.show(\"More Seats Needed\",\n `There are no more seats available in this class. Press EDIT to add more seats.`,\n [\"Edit\", \"Cancel\"],\n () => {\n this.onCardAction(\"edit\", this.classObj!)\n return true\n },\n () => {\n // Do nothing\n })\n } else {\n ControlTower.route(`${Routes.account}/${accountId}/userEdit?classId=${classId}`)\n }\n } else {\n ControlTower.route(`${Routes.account}/${accountId}/userEdit?classId=${classId}`)\n }\n\n }\n\n onRegister = async (reg: Registration) => {\n const { confirm, notify } = this.props\n Tracking.event({action: 'Register'})\n\n if (this.isEnded) {\n notify!.show(\"warning\", \"The term for this class has ended and no students may be registered. Please add a new class.\")\n return\n }\n\n if (!this.classObj!.course!.isFree) {\n // Check if there are seats available\n if (this.classObj!.seatsPurchased && this.classObj!.seatsFilled >= this.classObj!.seatsPurchased) {\n confirm!.show(\"More Seats Needed\",\n `There are no more seats available in this class. Press EDIT to add more seats.`,\n [\"Edit\", \"Cancel\"],\n () => {\n this.onCardAction(\"edit\", reg.class!)\n return true\n },\n () => {\n // Do nothing\n })\n } else {\n this.registerUser(reg)\n }\n } else {\n this.registerUser(reg)\n }\n }\n\n registerUser = async (reg: Registration) => {\n const { accountStore, userStore, notify } = this.props\n Tracking.event({action: 'Register'})\n\n const input: CreateRegistrationInput = {\n accountId: reg.accountId,\n classId: reg.classId,\n userId: reg.userId,\n classStatus: ClassStatus.NotStarted,\n classProgress: 0,\n lessonNumber: 1,\n lessonStatus: LessonStatus.NotStarted,\n videoProgress: 0,\n score: 0,\n lessonsAssigned: this.classObj!.getRegistrationLessonsAssigned()\n }\n\n const registration = await accountStore!.addClassRegistration(input)\n .catch(err => {\n notify!.show(\"error\", err.message)\n })\n\n if (registration) {\n registration.user = reg.user\n userStore!.createActivity(ActivityType.ClassRegistration, registration.classId)\n // Remove from unregistered list\n const unregisteredIndex = this.unregistered.findIndex((r: Registration) => {return r.userId === registration.userId})\n if (unregisteredIndex >= 0) {\n this.unregistered.splice(unregisteredIndex, 1)\n }\n\n // Add to registered list\n this.registered.push(registration)\n\n // Update seatsFilled\n const update: UpdateClassInput = {\n id: this.classObj!.id,\n accountId: this.classObj!.accountId,\n seatsFilled: this.classObj!.seatsFilled ? this.classObj!.seatsFilled + 1 : 1\n }\n const result = await accountStore?.updateClass(update)\n if (result) {\n result.registrations = this.classObj!.registrations\n result.course = this.classObj!.course\n this.classObj = undefined\n this.classObj = result\n console.log(`Updated classObj: seatsFilled = ${result.seatsFilled}`)\n }\n\n // Update view\n this.filterUsers()\n }\n }\n\n onUnregister = async (reg: Registration) => {\n const { confirm } = this.props\n\n confirm!.show(\"Confirm Unregister\",\n `Please confirm you want unregister ${reg.user!.fullName}? Any progress will be lost.`,\n [\"Confirm\", \"Cancel\"],\n () => {\n this.unRegisterUser(reg)\n return true\n },\n () => {\n // Do nothing\n })\n }\n\n unRegisterUser = async (reg: Registration) => {\n const { accountStore, notify } = this.props\n Tracking.event({action: 'Unregister'})\n\n const registration = await accountStore!.deleteClassRegistration(reg.id)\n .catch(err => {\n notify!.show(\"error\", \"Unable to unregister user\")\n })\n\n if (registration) {\n registration.user = reg.user\n\n // Remove from registered list\n const registeredIndex = this.registered.findIndex((r: Registration) => {return r.userId === registration.userId})\n if (registeredIndex >= 0) {\n this.registered.splice(registeredIndex, 1)\n }\n\n // Add to unregistered list\n registration.id = \"\"\n this.unregistered.push(registration)\n\n // Update seatsFilled\n const update: UpdateClassInput = {\n id: this.classObj!.id,\n accountId: this.classObj!.accountId,\n seatsFilled: this.classObj!.seatsFilled ? this.classObj!.seatsFilled - 1 : 0\n }\n const result = await accountStore?.updateClass(update)\n if (result) {\n result.registrations = this.classObj!.registrations\n result.course = this.classObj!.course\n this.classObj = undefined\n this.classObj = result\n console.log(`Updated classObj: seatsFilled = ${result.seatsFilled}`)\n }\n\n // Update view\n this.filterUsers()\n }\n }\n\n filterUsers = () => {\n if (this.search) {\n let registered: Registration[] = []\n let unregistered: Registration[] = []\n\n const search = this.search.toLowerCase()\n this.registered.forEach((r: Registration) => {\n const u = r.user!\n if (u.fullName.toLowerCase().indexOf(search!) >= 0 ||\n (u.jobTitle && u.jobTitle.toLowerCase().indexOf(search!) >= 0)) {\n registered.push(r)\n }\n })\n this.registeredFilter = registered\n\n this.unregistered.forEach((r: Registration) => {\n const u = r.user!\n if (u.fullName.toLowerCase().indexOf(search!) >= 0 ||\n (u.jobTitle && u.jobTitle.toLowerCase().indexOf(search!) >= 0)) {\n unregistered.push(r)\n }\n this.unregisteredFilter = unregistered\n })\n } else {\n this.registeredFilter = this.sortRegistrations([...this.registered])\n this.unregisteredFilter = this.sortRegistrations([...this.unregistered])\n }\n\n // Sort registered into groups\n const notStarted: Registration[] = []\n const inProgress: Registration[] = []\n const passed: Registration[] = []\n const failed: Registration[] = []\n\n this.registeredFilter.forEach((r: Registration) => {\n switch (r.classStatus) {\n case ClassStatus.NotStarted:\n notStarted.push(r)\n break\n case ClassStatus.InProgress:\n inProgress.push(r)\n break\n case ClassStatus.Passed:\n passed.push(r)\n break\n case ClassStatus.Failed:\n failed.push(r)\n break\n }\n })\n\n this.notStarted = notStarted\n this.inProgress = inProgress\n this.passed = passed\n this.failed = failed\n }\n\n private joinUsers = () => {\n // Add User and filter out registrations if not found\n this.registered = this.registered.filter((reg: Registration) => {\n const user = this.users.find((u: User) => { return u.id === reg.userId})\n if (user) {\n reg.user = user\n return true\n } else {\n return false\n }\n })\n\n // this.registered.forEach((reg: Registration) => {\n // const user = this.users.find((u: User) => { return u.id === reg.userId})\n // if (user) {\n // reg.user = user\n // }\n // })\n\n const unregistered: Registration[] = []\n // Now add mock Registrations for the non-registered users\n this.users.forEach((u: User) => {\n let registration = this.registered.find((r: Registration) => {return r.userId === u.id})\n if (!registration) {\n registration = new Registration({\n id: null,\n accountId: u.accountId,\n classId: this.classObj!.id,\n class: this.classObj,\n userId: u.id,\n user: u,\n classStatus: ClassStatus.NotStarted,\n classProgress: 0,\n lessonNumber: 1,\n lessonStatus: LessonStatus.NotStarted,\n videoProgress: 0,\n score: 0\n })\n unregistered.push(registration)\n }\n })\n\n this.unregistered = unregistered\n }\n\n sortRegistrations = (registrations: Registration[]) => {\n // Sort by lastName, firstNname\n registrations.sort((a: Registration, b: Registration) => {\n if (a.user && b.user) {\n return a.user.lastName.localeCompare(b.user.lastName)\n } else {\n return a.id.localeCompare(b.id)\n }\n })\n return registrations\n }\n\n private renderGaugeSegments() {\n const { classes } = this.props\n const segments = []\n const total = this.registered.length\n\n if (total > 0) {\n let notStarted = 0\n let inProgress = 0\n let passed = 0\n let failed = 0\n\n this.registered.forEach((r: Registration) => {\n if (!r.classStatus || r.classStatus === ClassStatus.NotStarted) {\n ++notStarted\n } else if (r.classStatus === ClassStatus.InProgress) {\n ++inProgress\n } else if (r.classStatus === ClassStatus.Passed) {\n ++passed\n } else if (r.classStatus === ClassStatus.Failed) {\n ++failed\n }\n })\n\n let percent = Math.round(notStarted/total*100.0)\n segments.push(\n \n \n \n )\n percent = Math.round(inProgress/total*100.0)\n segments.push(\n \n \n \n )\n percent = Math.round(passed/total*100.0)\n segments.push(\n \n \n \n )\n percent = Math.round(failed/total*100.0)\n segments.push(\n \n \n \n )\n }\n\n\n return segments\n }\n}\n\nexport default withTheme((withStyles(styles)(AccountClassPage)))","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {\n Checkbox,\n createStyles, DialogActions,\n DialogContent, FormControlLabel, FormGroup,\n Grid,\n Paper,\n Theme,\n withStyles,\n WithStyles,\n withTheme,\n WithTheme\n} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport TitleBar from \"../../components/TitleBar\";\nimport CourseStore from \"../../stores/CourseStore\";\nimport {inject, observer} from \"mobx-react\";\nimport {observable, when} from \"mobx\";\nimport Course from \"../../model/Course\";\nimport Lesson from \"../../model/Lesson\";\nimport Progress from \"../../components/Progress\";\nimport UserStore from \"../../stores/UserStore\";\nimport FormValidator from \"../../components/form/FormValidator\";\nimport TextFieldValidator from \"../../components/form/TextFieldValidator\";\nimport Tracking from \"../../components/Tracking\";\nimport {\n ActivityType,\n CreateCourseInput,\n Lesson as APILesson,\n UpdateCourseInput\n} from \"../../API\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport Notify from \"../../components/notify/Notify\";\nimport DialogButton from \"../../components/form/DialogButton\";\nimport Storage from '@aws-amplify/storage'\nimport S3UrlCacheStore from \"../../stores/S3UrlCacheStore\";\nimport ProgressButton from \"../../components/form/ProgressButton\";\nimport {createUUID, getISODateFromDate, getISODateToday, isoToLocalDate} from \"../../stores/StoreUtilities\";\nimport CSVReader from \"react-csv-reader\";\nimport { saveAs } from 'file-saver'\nimport {format, parse} from \"date-fns\";\nimport FormGroupSpacer from \"../../components/form/FormGroupSpacer\";\nimport { Editor } from \"@tinymce/tinymce-react\";\nimport config from 'react-global-configuration';\n\nconst styles = (theme: Theme) => createStyles({\n rootStyle: {\n flexGrow: 1,\n justifyContent: 'top',\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh'\n },\n root: {\n flexGrow: 1,\n justifyContent: 'top',\n alignItems: 'center',\n },\n titleBar: {\n flexGrow: 1,\n justifyContent: \"space-between\",\n width: \"100%\",\n height: 40,\n padding: theme.spacing(1),\n color: theme.palette.text.secondary,\n },\n item: {\n justifyContent: 'top',\n alignItems: 'center'\n },\n content: {\n marginTop: theme.spacing(2),\n justifyContent: 'flex-start',\n },\n dialogPaper: {\n display: 'flex',\n flexGrow: 1,\n justifyContent: 'space-between',\n width: '100%',\n marginTop: theme.spacing(1)\n },\n form: {\n width: '100%'\n },\n dialogContent: {\n padding: theme.spacing(2)\n },\n dialogActions: {\n justifyContent: \"center\",\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n paddingBottom: theme.spacing(2),\n borderRadius: \"0px 0px 10px 10px\"\n },\n label: {\n color: theme.palette.text.secondary,\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(0.5)\n },\n formGroup: {\n marginBottom: 0,\n paddingBottom: 0\n },\n fieldLabel: {\n fontSize: 12,\n fontWeight: 400,\n color: theme.palette.text.primary,\n paddingTop: theme.spacing(1),\n paddingBottom: 0\n },\n textarea: {\n fontFamily: [\n 'Roboto',\n 'sans-serif'\n ].join(','),\n minWidth: \"100%\",\n maxWidth: \"100%\",\n padding: 8,\n fontSize: 16\n },\n progress: {\n width: \"100%\",\n },\n progressText: {\n fontSize: 14,\n fontWeight: 800,\n padding: \"0px 2px\",\n },\n progressError: {\n fontSize: 14,\n fontWeight: 800,\n padding: \"0px 2px\",\n color: \"red\"\n },\n downloadLink: {\n textDecoration: 'none',\n color: theme.palette.secondary.main,\n marginTop: 4,\n },\n downloadButton: {\n textDecoration: 'none',\n color: theme.palette.secondary.main,\n paddingLeft: 2,\n },\n fileInput: {\n width: 340\n },\n})\n\ninterface ICourseEditPageProps {\n courseId?: string\n userStore?: UserStore\n courseStore?: CourseStore\n s3UrlCacheStore?: S3UrlCacheStore\n progress?: Progress\n notify?: Notify\n}\n\nconst correctAnswers = [\"\", \"A\", \"B\", \"C\", \"D\"]\n\nenum CSV {\n Lesson,\n Title,\n VideoURL,\n VideoDuration,\n Description,\n Number,\n Question,\n AnswerA,\n AnswerB,\n AnswerC,\n AnswerD,\n CorrectAnswer,\n _Length\n}\n\n@inject(\"userStore\", \"courseStore\", \"progress\", \"notify\", \"s3UrlCacheStore\")\n@observer\nclass CourseEditPage extends React.Component & RouteComponentProps & ICourseEditPageProps & WithTheme> {\n\n @observable isLoading = true\n @observable course?: Course\n @observable values = {\n courseId: \"\",\n title: \"\",\n description: \"\",\n initialDetails: \"\",\n details: \"\",\n isFree: false,\n coverFile: undefined,\n coverUrl: \"\",\n creditHours: 0,\n publishDate: format(isoToLocalDate(getISODateToday()), \"M/d/yyyy\"),\n sunsetDate: format(isoToLocalDate(\"2099-12-31\"), \"M/d/yyyy\"),\n handoutFile: undefined,\n handoutUrl: \"\"\n }\n @observable lessons: any = undefined\n @observable isValid: boolean = true\n @observable isProcessing = false\n @observable progressValue: number = 0\n @observable progressText: string = \"\"\n\n componentDidMount () {\n const { courseId, userStore, courseStore, progress} = this.props\n this.isLoading = true\n progress!.show(\"CourseEditPage\")\n when(\n () => !userStore!.isLoading,\n async () => {\n if (courseId) {\n const course = await courseStore!.getCourse(courseId!)\n if (course) {\n this.values = {\n courseId: course.id,\n title: course.title,\n description: course.description,\n initialDetails: course.details,\n details: course.details,\n coverUrl: course.coverUrl,\n coverFile: undefined,\n isFree: course.isFree,\n creditHours: course.creditHours,\n publishDate: course.publishDate ? format(isoToLocalDate(course.publishDate), \"M/d/yyyy\") : \"\",\n sunsetDate: course.publishDate ? format(isoToLocalDate(course.sunsetDate), \"M/d/yyyy\") : \"\",\n handoutUrl: course.handoutUrl,\n handoutFile: undefined\n }\n this.course = course\n }\n } else {\n this.values.courseId = createUUID()\n }\n this.isLoading = false\n progress!.hide(\"CourseEditPage\")\n }\n )\n }\n\n render() {\n const { classes, courseId } = this.props\n\n const title = courseId ? \"Edit Course\" : \"Add Course\"\n const minDate = \"1/1/2000\"\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {/**/}\n {this.renderEditor()}\n \n \n \n \n \n \n \n \n \n
Cover Image (JPEG)
\n \n this.onCoverChange(e.target!.files![0])}\n />\n \n
Lessons (CSV)
\n
\n \n {!courseId &&\n \n }\n {courseId &&\n \n Download\n \n }\n
\n
\n {this.progressText}\n
\n
\n
\n }\n label=\"Free class\"\n labelPlacement=\"end\"\n className={classes.label}\n />
\n \n
Handout (PDF)
\n \n this.onHandoutChange(e.target!.files![0])}\n />\n
\n {this.values.handoutUrl &&\n \n Download\n \n }\n {(this.values.handoutUrl || this.values.handoutFile) &&\n \n Delete\n \n }\n
\n
\n
\n
\n
\n \n \n Cancel\n \n \n Save\n \n \n
\n
\n
\n
\n
\n )\n }\n\n renderEditor = () => {\n const editorKey = config.get(\"tinymce.apiKey\")\n\n return (\n \n )\n }\n\n onChange = (event: any) => {\n const name = event.target.name\n if (name === \"isFree\") {\n this.values![name] = event.target.checked\n } else {\n this.values[name] = event.target.value\n }\n }\n\n onEditorChange = (content: any, editor: any) => {\n // Logger.info(content, editor)\n this.values.details = content\n }\n\n onCoverChange = (file: any) => {\n console.log(\"onCoverChange\")\n this.values.coverFile = file\n }\n\n onHandoutChange = (file: any) => {\n this.values.handoutFile = file\n }\n\n onSubmit = async () => {\n const { courseId, courseStore, userStore, notify } = this.props\n\n if (!this.isValid) {\n return\n }\n\n const values = this.values\n\n if (courseId) {\n Tracking.event({action: 'UpdateCourse'})\n this.isProcessing = true\n\n if (values.coverFile) {\n const result = await this.uploadCover()\n if (!result) {\n this.isProcessing = false\n return\n }\n }\n\n if (values.handoutFile) {\n const result = await this.uploadHandout()\n if (!result) {\n this.isProcessing = false\n return\n }\n } else {\n if (this.course!.handoutUrl && !values.handoutUrl) {\n // Delete handout\n await Storage.remove(this.course!.handoutUrl)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to delete handout\")\n })\n }\n }\n\n const input: UpdateCourseInput = {\n id: courseId,\n title: values.title,\n description: values.description,\n details: values.details,\n coverUrl: values.coverUrl,\n isFree: values.isFree,\n creditHours: values.creditHours,\n handoutUrl: values.handoutUrl\n }\n if (values.publishDate !== \"\") {\n input.publishDate = getISODateFromDate(parse(values.publishDate, 'M/d/yyyy', new Date()))\n }\n if (values.sunsetDate !== \"\") {\n input.sunsetDate = getISODateFromDate(parse(values.sunsetDate, 'M/d/yyyy', new Date()))\n }\n if (this.lessons) {\n input.lessonCount = this.lessons.items.length\n input.lessons = JSON.stringify(this.lessons)\n }\n\n const update = await courseStore!.updateCourse(input)\n .catch((err: Error) => {\n this.isProcessing = false\n notify!.show(\"error\", \"Unable to update course\")\n })\n\n if (update) {\n this.isProcessing = false\n userStore!.createActivity(ActivityType.CourseEdit, courseId)\n notify!.show(\"success\", \"Course updated!\")\n this.onCancel()\n }\n } else {\n Tracking.event({action: 'CreateCourse'})\n this.isProcessing = true\n\n if (values.courseId === \"\") {\n values.courseId = createUUID()\n }\n\n if (values.coverFile) {\n const result = await this.uploadCover()\n if (!result) {\n this.isProcessing = false\n return\n }\n }\n\n if (values.handoutFile) {\n const result = await this.uploadHandout()\n if (!result) {\n this.isProcessing = false\n return\n }\n }\n\n const input: CreateCourseInput = {\n id: values.courseId,\n title: values.title,\n description: values.description,\n details: values.details,\n coverUrl: values.coverUrl,\n isFree: values.isFree,\n lessonCount: 0,\n creditHours: values.creditHours,\n handoutUrl: values.handoutUrl\n }\n if (values.publishDate !== \"\") {\n input.publishDate = getISODateFromDate(parse(values.publishDate, 'M/d/yyyy', new Date()))\n }\n if (values.sunsetDate !== \"\") {\n input.sunsetDate = getISODateFromDate(parse(values.sunsetDate, 'M/d/yyyy', new Date()))\n }\n if (this.lessons) {\n input.lessonCount = this.lessons.items.length\n input.lessons = JSON.stringify(this.lessons)\n }\n\n const course = await courseStore!.createCourse(input)\n .catch((err: Error) => {\n this.isProcessing = false\n notify!.show(\"error\", \"Unable to create course\")\n })\n\n if (course) {\n this.isProcessing = false\n userStore!.createActivity(ActivityType.CourseCreate, course.id)\n notify!.show(\"success\", \"Course created!\")\n this.onCancel()\n }\n }\n\n }\n\n onCancel = () => {\n ControlTower.route(`${Routes.courses}`)\n }\n\n onCSVLoaded = async (data: any) => {\n this.isValid = true\n this.progressValue = 0\n this.progressText = \"\"\n\n const courseId = this.values.courseId\n const lessons = []\n\n // Verify data\n if (!data || data.length <= 1 || data[0].length < 11 || data[1].length < 11) {\n this.progressText = \"Invalid or empty CSV file\"\n this.isValid = false\n return\n }\n\n const header = data[0]\n if (header[0] !== \"Lesson\" || header[1] !== \"Title\" || header[2] !== \"Video URL\" || header[3] !== \"Video Duration\" ||\n header[4] !== \"Description\" || header[5] !== \"Number\"|| header[6] !== \"Question\" || header[7] !== \"Answer A\" || header[8] !== \"Answer B\" ||\n header[9] !== \"Answer C\" || header[10] !== \"Answer D\" || header[11] !== \"Correct Answer\") {\n this.progressText = \"Invalid CSV file header\"\n this.isValid = false\n return\n }\n\n // Validate rows\n const lastRow: [] = data[data.length-1]\n const length = lastRow && lastRow.length > 1 ? data.length : data.length - 1\n let isValid = true\n let nextQuestionNumber = 1\n\n for (let n = 1; n < length && isValid; n++) {\n const row = data[n]\n\n if (row.length < 11) {\n this.progressText = `Missing columns on row ${n}`\n isValid = false\n continue\n }\n\n let lessonNumber = 0\n let title\n let videoUrl\n let videoDuration = 0\n let description\n let number = 0\n let question\n let answers\n let correctAnswer\n let lesson: APILesson\n\n if (row[CSV.Lesson] !== \"\") {\n // New lesson start\n\n lessonNumber = parseInt(row[CSV.Lesson])\n if (isNaN(lessonNumber)) {\n this.progressText = `Invalid Lesson number on row ${n}`\n isValid = false\n continue\n }\n\n title = row[CSV.Title]\n if (title.length === 0) {\n this.progressText = `Title is missing on row ${n}`\n isValid = false\n continue\n }\n\n videoUrl = row[CSV.VideoURL]\n if (videoUrl.length === 0) {\n this.progressText = `Video URL is missing on row ${n}`\n isValid = false\n continue\n }\n\n // Try parsing it as time (m:s)\n const time = parse(row[CSV.VideoDuration], \"m:s\", new Date())\n if (!isNaN(time.getTime())) {\n videoDuration = time.getMinutes() * 60 + time.getSeconds()\n } else {\n // Try parsing it as integer seconds\n videoDuration = parseInt(row[CSV.VideoDuration])\n if (isNaN(videoDuration)) {\n this.progressText = `Invalid Video Duration on row ${n}`\n isValid = false\n continue\n }\n }\n\n description = row[CSV.Description]\n if (description.length === 0) {\n this.progressText = `Description is missing on row ${n}`\n isValid = false\n continue\n }\n }\n\n if (row[CSV.Number] !== \"\") {\n number = parseInt(row[CSV.Number])\n if (isNaN(number) || number !== nextQuestionNumber) {\n this.progressText = `Number is invalid on row ${n}`\n isValid = false\n continue\n }\n nextQuestionNumber++\n\n question = row[CSV.Question]\n if (question.length === 0) {\n this.progressText = `Question is missing on row ${n}`\n isValid = false\n continue\n }\n\n answers = new Array(2)\n\n answers[0] = row[CSV.AnswerA]\n if (answers[0].length === 0) {\n this.progressText = `Answer A is missing on row ${n}`\n isValid = false\n continue\n }\n\n answers[1] = row[CSV.AnswerB]\n if (answers[1].length === 0) {\n this.progressText = `Answer B is missing on row ${n}`\n isValid = false\n continue\n }\n\n // Answers C & D are optional\n if (row[CSV.AnswerC] !== \"\") {\n answers[2] = row[CSV.AnswerC]\n }\n if (row[CSV.AnswerD] !== \"\") {\n answers[3] = row[CSV.AnswerD]\n }\n\n // Answers are 1-based\n correctAnswer = correctAnswers.findIndex((answer: string) => row[CSV.CorrectAnswer] === answer )\n if (correctAnswer < 1 ) {\n this.progressText = `Correct Answer is invalid on row ${n}`\n isValid = false\n continue\n }\n }\n\n if (row[CSV.Lesson] !== \"\") {\n const lessonId = `${courseId}-${lessonNumber}`\n lesson = {\n __typename: \"Lesson\",\n id: lessonId,\n courseId: courseId,\n number: lessonNumber,\n title: title,\n videoUrl: videoUrl,\n videoDuration: videoDuration,\n description: description,\n questions: {\n __typename: \"ModelQuestionConnection\",\n items: []\n }\n }\n\n if (row[CSV.Number] !== \"\") {\n lesson.questions!.items!.push({\n __typename: \"Question\",\n id: `${courseId}-${lessonNumber}-${number}`,\n lessonId,\n number: number,\n question: question,\n answers: answers,\n correctAnswer: correctAnswer\n })\n }\n\n lessons.push(lesson)\n } else {\n // Add an additional question to the prior lesson\n if (lessons.length === 0) {\n this.progressText = `Missing lesson on row ${n}`\n isValid = false\n continue\n }\n\n lesson = lessons[lessons.length - 1]\n lesson.questions!.items!.push({\n __typename: \"Question\",\n id: `${courseId}-${lesson.number}-${number}`,\n lessonId: lesson.id,\n number: number,\n question: question,\n answers: answers,\n correctAnswer: correctAnswer\n })\n }\n }\n\n if (isValid) {\n // this.data = data\n this.progressText = `${lessons.length} lessons ready to import`\n this.lessons = {\n items: lessons\n }\n console.log(\"Lessons = \" + JSON.stringify(lessons))\n } else {\n this.isValid = false\n this.lessons = undefined\n }\n\n }\n\n uploadCover = async () => {\n const { notify, s3UrlCacheStore } = this.props\n\n const key = `content/${this.values.courseId}/cover.jpg`\n\n const result = await Storage.put(key, this.values.coverFile, {\n contentType: 'image/jpeg'\n })\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to upload cover image\")\n })\n\n if (result) {\n this.values.coverUrl = result[\"key\"]\n s3UrlCacheStore!.remove(this.values.coverUrl)\n }\n return result\n }\n\n downloadCSV = () => {\n if (!this.course) {\n return\n }\n\n let text = \"Lesson,Title,Video URL,Video Duration,Description,Number,Question,Answer A,Answer B,Answer C,Answer D,Correct Answer\\n\"\n\n this.course.lessons.forEach((value: Lesson) => {\n console.log('Do nothing')\n })\n\n // for (let l: Lesson in this.course.lessons) {\n this.course.lessons.forEach((value: Lesson) => {\n let row = Array(CSV._Length).fill(\"\")\n row[CSV.Lesson] = value.number\n row[CSV.Title] = value.title\n row[CSV.VideoURL] = value.videoUrl\n const videoDuration = value.videoDuration ?? 0\n row[CSV.VideoDuration] = `${Math.floor(videoDuration / 60)}:${Math.round(videoDuration % 60)}`\n row[CSV.Description] = value.description\n if (value.questions && value.questions.length > 0) {\n const q = value.questions[0]\n row[CSV.Number] = q.number\n row[CSV.Question] = q.question\n row[CSV.AnswerA] = q.answers && q.answers.length >= 0 ? q.answers[0] : \"\"\n row[CSV.AnswerB] = q.answers && q.answers.length >= 1 ? q.answers[1] : \"\"\n row[CSV.AnswerC] = q.answers && q.answers.length >= 2 ? q.answers[2] : \"\"\n row[CSV.AnswerD] = q.answers && q.answers.length >= 3 ? q.answers[3] : \"\"\n row[CSV.CorrectAnswer] = (q.correctAnswer >= 1 && q.correctAnswer <= 4) ? correctAnswers[q.correctAnswer] : \"\"\n }\n text += `${row[CSV.Lesson]},\"${row[CSV.Title]}\",\"${row[CSV.VideoURL]}\",\"${row[CSV.VideoDuration]}\",\"${this.quote(row[CSV.Description])}\",${row[CSV.Number]},\"${this.quote(row[CSV.Question])}\",${this.quote(row[CSV.AnswerA])},${this.quote(row[CSV.AnswerB])},${this.quote(row[CSV.AnswerC])},${this.quote(row[CSV.AnswerD])},${row[CSV.CorrectAnswer]}\\n`\n\n // Output additional questions\n if (value.questions && value.questions.length > 1) {\n for (let i = 1; i < value.questions.length; i++) {\n row = Array(CSV._Length).fill(\"\")\n const q = value.questions[i]\n row[CSV.Number] = q.number\n row[CSV.Question] = q.question\n row[CSV.AnswerA] = q.answers && q.answers.length >= 0 ? q.answers[0] : \"\"\n row[CSV.AnswerB] = q.answers && q.answers.length >= 1 ? q.answers[1] : \"\"\n row[CSV.AnswerC] = q.answers && q.answers.length >= 2 ? q.answers[2] : \"\"\n row[CSV.AnswerD] = q.answers && q.answers.length >= 3 ? q.answers[3] : \"\"\n row[CSV.CorrectAnswer] = q.correctAnswer\n row[CSV.CorrectAnswer] = (q.correctAnswer >= 1 && q.correctAnswer <= 4) ? correctAnswers[q.correctAnswer] : \"\"\n text += `${row[CSV.Lesson]},\"${row[CSV.Title]}\",\"${row[CSV.VideoURL]}\",\"${row[CSV.VideoDuration]}\",\"${this.quote(row[CSV.Description])}\",${row[CSV.Number]},\"${this.quote(row[CSV.Question])}\",${this.quote(row[CSV.AnswerA])},${this.quote(row[CSV.AnswerB])},${this.quote(row[CSV.AnswerC])},${this.quote(row[CSV.AnswerD])},${row[CSV.CorrectAnswer]}\\n`\n }\n }\n })\n\n const blob = new Blob([text], {type: \"text/csv;charset=utf-8\"});\n saveAs(blob, `${this.values.title}.csv`);\n }\n\n uploadHandout = async () => {\n const { notify, s3UrlCacheStore } = this.props\n\n const key = `content/${this.values.courseId}/handout.pdf`\n\n const result = await Storage.put(key, this.values.handoutFile, {\n contentType: 'application/pdf'\n })\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to upload handout\")\n })\n\n if (result) {\n this.values.handoutUrl = result[\"key\"]\n s3UrlCacheStore!.remove(this.values.handoutUrl)\n }\n return result\n }\n\n downloadHandout = async () => {\n const { notify } = this.props\n\n if (this.values.handoutUrl) {\n const result = await Storage.get(this.values.handoutUrl, {download: true})\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to download handout\")\n })\n\n if (result && result.Body) {\n const filename = `${this.course!.title} Handout.pdf`\n this.downloadBlob(result.Body as Blob, filename);\n }\n }\n }\n\n downloadBlob = (blob: Blob, filename: string) => {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename || 'download';\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n a.addEventListener('click', clickHandler, false);\n a.click();\n return a;\n }\n\n deleteHandout = async () => {\n if (this.values.handoutUrl) {\n this.values.handoutUrl = \"\"\n this.values.handoutFile = undefined\n } else if (this.values.handoutFile) {\n this.values.handoutFile = undefined\n }\n }\n\n quote = (text: string): string => {\n if (!text || typeof text !== \"string\") {\n return text\n } else {\n return text.replace(/\"/g, '\"\"')\n }\n }\n}\n\nexport default withTheme((withStyles(styles)(CourseEditPage)))","import * as React from \"react\";\nimport {\n Avatar,\n Card,\n CardContent,\n CardMedia,\n createStyles,\n IconButton, Menu, MenuItem,\n Theme,\n Typography,\n withStyles,\n WithStyles\n} from \"@material-ui/core\";\nimport {inject, observer} from \"mobx-react\";\nimport Registration from \"../../model/Registration\";\nimport AssignmentTurnedInIcon from '@material-ui/icons/AssignmentTurnedIn';\nimport AssignmentIndIcon from '@material-ui/icons/AssignmentInd';\nimport AssignmentIcon from '@material-ui/icons/Assignment';\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport RemoveCircleIcon from '@material-ui/icons/RemoveCircle';\nimport {ClassStatus} from \"../../API\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport {isoToLocalDateTime} from \"../../stores/StoreUtilities\";\nimport {format} from 'date-fns';\nimport {observable} from \"mobx\";\nimport S3UrlCacheStore from \"../../stores/S3UrlCacheStore\";\nimport UserStore from \"../../stores/UserStore\";\nimport MoreVertIcon from \"@material-ui/icons/MoreVert\";\n\nconst styles = (theme: Theme) => createStyles({\n card: {\n width: '100%',\n height: 78,\n padding: 0\n },\n content: {\n display: \"flex\",\n padding: 0,\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.paper,\n },\n left: {\n flexShrink: 0,\n padding: 0,\n alignSelf: \"center\",\n },\n middle: {\n flexGrow: 1,\n padding: \"5px 10px\",\n },\n right: {\n flexShrink: 0,\n paddingLeft: 10,\n alignSelf: \"right\",\n },\n media: {\n width: 78,\n height: 78\n },\n title: {\n fontSize: 20,\n fontWeight: 600,\n },\n details: {\n fontSize: 14,\n fontWeight: 400,\n },\n // Avatar Styles\n unRegisteredAvatar: {\n backgroundColor: theme.palette.primary.main,\n width: 35,\n height: 35,\n },\n unregisteredIcon: {\n color: theme.palette.text.secondary,\n width: 25,\n height: 25,\n },\n notStartedAvatar: {\n backgroundColor: theme.palette.primary.main,\n width: 35,\n height: 35,\n },\n notStartedIcon: {\n color: theme.palette.text.secondary,\n width: 25,\n height: 25,\n },\n inProgressAvatar: {\n width: 35,\n height: 35,\n },\n inProgressIcon: {\n color: theme.palette.text.primary,\n width: 25,\n height: 25,\n },\n failedAvatar: {\n backgroundColor: theme.palette.error.dark,\n width: 35,\n height: 35,\n },\n failedIcon: {\n color: theme.palette.error.contrastText,\n width: 25,\n height: 25,\n },\n passedAvatar: {\n backgroundColor: theme.palette.success.main,\n width: 35,\n height: 35,\n },\n passedIcon: {\n color: theme.palette.success.contrastText,\n width: 25,\n height: 25,\n },\n // Progress styles\n progressBar: {\n marginTop: 5\n },\n linearProgress: {\n position: \"relative\",\n bottom: 16,\n left: 2,\n width: \"calc(100% - 4px)\",\n height: 3,\n color: theme.palette.primary.main,\n display: \"flex\",\n justifyContent: \"center\",\n zIndex: 10\n },\n linearProgressDeterminateColor: {\n backgroundColor: theme.palette.primary.light\n },\n classProgressNotStarted: {\n backgroundColor: theme.palette.primary.light\n },\n classProgressPassing: {\n backgroundColor: theme.palette.success.main\n },\n classProgressFailing: {\n backgroundColor: theme.palette.warning.dark,\n },\n classProgressFailed: {\n backgroundColor: theme.palette.error.dark,\n },\n addButton: {\n backgroundColor: theme.palette.background.paper,\n width: 20,\n height: 20,\n },\n addIcon: {\n color: theme.palette.secondary.main,\n // color: theme.palette.success.main,\n width: 20,\n height: 20,\n },\n removeButton: {\n backgroundColor: theme.palette.background.paper,\n width: 20,\n height: 20,\n },\n removeIcon: {\n color: theme.palette.secondary.main,\n // color: theme.palette.error.main,\n width: 20,\n height: 20,\n },\n iconButton: {\n padding: 4\n },\n menuIcon: {\n color: theme.palette.text.secondary,\n width: 20,\n height: 20,\n zOrder: 100\n },\n\n})\n\ninterface IClassHistoryCardProps {\n s3UrlCacheStore?: S3UrlCacheStore\n registration: Registration\n onRegister?: any\n onUnregister?: any\n onReset?: any\n userStore?: UserStore\n}\n\n@inject(\"s3UrlCacheStore\", \"userStore\")\n@observer\nclass ClassHistoryCard extends React.Component & IClassHistoryCardProps> {\n\n @observable coverImageUrl?: string\n @observable resetEnabled = false\n @observable menuAnchor = null\n\n componentDidMount() {\n const { s3UrlCacheStore, registration, userStore } = this.props\n\n this.resetEnabled = userStore!.isAdminOrAgent ||\n (userStore!.isEmployer && registration.class !== undefined && registration.class.course !== undefined && registration.class.course.isFree)\n\n if (registration.class && registration.class.course && registration.class.course.coverUrl) {\n const coverUrl = registration.class.course.coverUrl\n s3UrlCacheStore!.get(coverUrl)\n .then((url: string | undefined) => {\n this.coverImageUrl = url\n })\n .catch((err: Error) => {\n console.log(\"Error loading cover image\")\n })\n }\n }\n\n render() {\n const { classes, registration } = this.props\n\n const user = registration.user\n if (!user) {\n return null\n }\n\n let course = null\n let title = \"\"\n let started = \"\"\n let status = \"\"\n if (registration.class && registration.class.course) {\n course = registration.class.course\n title = course.title\n\n if (registration.classStatus === ClassStatus.NotStarted) {\n started = \"Not Started\"\n } else {\n if (registration.startedAt) {\n const startedAt = isoToLocalDateTime(registration.startedAt)\n started = `Started on ${format(startedAt, 'M/d/yyyy')}`\n } else {\n started = `Started`\n }\n }\n\n if (registration.classStatus === ClassStatus.InProgress) {\n status = `${Math.round(registration.classProgress)}% Completed`\n } else if (registration.classCompleted) {\n if (registration.completedAt) {\n const completedAt = isoToLocalDateTime(registration.completedAt)\n status = `${registration.classStatus} on ${format(completedAt, 'M/d/yyyy')}`\n } else {\n status = 'Completed'\n }\n } else if (registration.classStatus === ClassStatus.NotStarted && registration.createdAt) {\n const createdAt = isoToLocalDateTime(registration.createdAt)\n status = `Added on ${format(createdAt, 'M/d/yyyy')}`\n }\n\n }\n\n return (\n \n \n
\n \n { this.renderProgress() }\n
\n
\n \n {title}\n \n \n {started}\n \n \n {status} \n \n
\n
\n { this.renderButton() }\n
\n
\n
\n )\n }\n\n renderAvatar = () => {\n const { classes, registration } = this.props\n\n let avatar = null\n\n if (!registration.id) {\n avatar = \n \n \n } else {\n if (registration.classStatus === ClassStatus.NotStarted) {\n avatar = \n \n \n } else if (registration.classStatus === ClassStatus.InProgress) {\n avatar = \n \n \n } else if (registration.classStatus === ClassStatus.Failed) {\n avatar = \n \n \n } else if (registration.classStatus === ClassStatus.Passed) {\n avatar = \n \n \n }\n }\n\n return avatar\n }\n\n renderProgress = () => {\n const { classes, registration } = this.props\n\n let result = null\n\n if (registration.id) {\n\n let progressClassName = classes.classProgressNotStarted\n if (registration.classStatus === ClassStatus.InProgress) {\n progressClassName = registration.passing ? classes.classProgressPassing : classes.classProgressFailing\n } else if (registration.classStatus === ClassStatus.Failed) {\n progressClassName = classes.classProgressFailed\n } else if (registration.classStatus === ClassStatus.Passed) {\n progressClassName = classes.classProgressPassing\n }\n result =\n
\n \n
\n }\n\n return result\n }\n\n private renderButton() {\n const { classes, registration } = this.props\n\n let button = null\n\n if (!registration.id) {\n button =\n \n \n \n } else if (registration.classStatus === ClassStatus.NotStarted) {\n button =\n \n \n \n } else if (registration.classCompleted) {\n button = this.renderMenu()\n }\n\n return button\n }\n\n renderMenu = () => {\n const { classes, registration } = this.props\n\n if (!this.resetEnabled && !registration.classCompleted) {\n return null\n }\n\n const menuId = `class-menu`\n\n return (\n
\n \n \n \n \n {this.resetEnabled &&\n Reset Class\n }\n \n
\n )\n }\n\n onRegister = () => {\n const { registration, onRegister} = this.props\n\n if (onRegister) {\n onRegister(registration)\n }\n }\n\n onUnregister = () => {\n const { registration, onUnregister} = this.props\n\n if (onUnregister) {\n onUnregister(registration)\n }\n }\n\n onOpenMenu = (event: any) => {\n console.log(\"onOpenMenu\")\n this.menuAnchor = event.currentTarget\n }\n\n onCloseMenu = () => {\n this.menuAnchor = null\n }\n\n onResetClass = () => {\n const { onReset, registration } = this.props\n if (onReset) {\n onReset(registration)\n }\n this.onCloseMenu()\n }\n\n\n\n}\n\nexport default withStyles(styles)(ClassHistoryCard)\n","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {\n createStyles, Grid,\n Theme, Typography,\n withStyles,\n WithStyles,\n withTheme,\n WithTheme\n} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport TitleBar from \"../../components/TitleBar\";\nimport {inject, observer} from \"mobx-react\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport {observable, when} from \"mobx\";\nimport Progress from \"../../components/Progress\";\nimport Notify from \"../../components/notify/Notify\";\nimport UserStore from \"../../stores/UserStore\";\nimport User from \"../../model/User\";\nimport Registration from \"../../model/Registration\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport {ActivityType, ClassStatus, CreateRegistrationInput, LessonStatus} from \"../../API\";\nimport NavigationBar from \"../../components/NavigationBar\";\nimport Tracking from \"../../components/Tracking\";\nimport ClassHistoryCard from \"./ClassHistoryCard\";\nimport Class from \"../../model/Class\";\nimport Confirm from \"../../components/confirm/Confirm\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n alignItems: 'flex-start',\n },\n titleBar: {\n display: \"flex\",\n flex: \"none\",\n justifyContent: \"space-between\",\n width: \"100%\",\n height: 40,\n padding: theme.spacing(1),\n paddingTop: 0,\n paddingBottom: 0,\n color: theme.palette.text.secondary,\n },\n container: {\n marginTop: theme.spacing(1)\n },\n card: {\n width: \"100%\",\n paddingTop: theme.spacing(1),\n },\n subtitle: {\n paddingLeft: theme.spacing(1),\n color: theme.palette.text.secondary,\n fontWeight: 600\n },\n quantity: {\n margin: theme.spacing(1),\n color: theme.palette.text.secondary,\n fontWeight: 600,\n textAlign: \"right\",\n paddingRight: theme.spacing(1)\n },\n\n})\n\ninterface IAccountUserPageProps {\n accountId?: string\n userId?: string\n userStore?: UserStore\n accountStore?: AccountStore\n progress?: Progress\n notify?: Notify\n confirm?: Confirm\n}\n\n@inject(\"accountStore\", \"userStore\", \"progress\", \"notify\", \"confirm\")\n@observer\nclass AccountUserPage extends React.Component & RouteComponentProps & IAccountUserPageProps & WithTheme> {\n\n @observable isLoading = true\n @observable user?: User\n @observable registrations: Registration[] = []\n @observable inProgress: Registration[] = []\n @observable notStarted: Registration[] = []\n @observable available: Registration[] = []\n @observable completed: Registration[] = []\n\n\n componentDidMount () {\n const { accountId, userId, accountStore, progress} = this.props\n this.isLoading = true\n progress!.show(\"AccountUserPage\")\n when(\n () => !accountStore!.isLoading && accountId !== undefined && userId !== undefined,\n async () => {\n await accountStore!.loadAccount(accountId!)\n this.user = await accountStore!.getUser(userId!)\n if (this.user) {\n this.loadRegistrations()\n }\n this.isLoading = false\n progress!.hide(\"AccountUserPage\")\n }\n )\n }\n\n\n render() {\n const { classes } = this.props\n\n if (!this.user) {\n return null\n }\n\n const title = this.user.fullName\n\n return (\n \n \n
\n \n \n \n\n \n \n In Progress\n \n { this.inProgress.map((r: Registration) =>\n \n \n \n )}\n \n\n \n \n Not Started\n \n { this.notStarted.map((r: Registration) =>\n \n \n \n )}\n \n\n \n \n Available\n \n { this.available.map((r: Registration) =>\n \n \n \n )}\n \n\n \n \n Completed\n \n { this.completed.map((r: Registration) =>\n \n \n \n )}\n \n\n
\n
\n
\n )\n }\n\n onBack = () => {\n const { accountId } = this.props\n ControlTower.route(`${Routes.account}/${accountId}/people`)\n }\n\n onRegister = async (reg: Registration) => {\n const { accountStore, userStore, notify } = this.props\n Tracking.event({action: 'Register'})\n\n const classObj = await accountStore!.getClass(reg.classId)\n if (!classObj) {\n console.log(`Class not found: ${reg.classId}`)\n return\n }\n const input: CreateRegistrationInput = {\n accountId: reg.accountId,\n classId: reg.classId,\n userId: reg.userId,\n classStatus: ClassStatus.NotStarted,\n classProgress: 0,\n lessonNumber: 1,\n lessonStatus: LessonStatus.NotStarted,\n videoProgress: 0,\n score: 0,\n lessonsAssigned: classObj.getRegistrationLessonsAssigned()\n }\n\n const registration = await accountStore!.addClassRegistration(input)\n .catch(err => {\n notify!.show(\"error\", \"Unable to register user\")\n })\n\n if (registration) {\n registration.user = reg.user\n userStore!.createActivity(ActivityType.ClassRegistration, registration.classId)\n // Add to registrations\n this.user!.registrations.push(registration)\n this.loadRegistrations()\n }\n }\n\n onUnregister = async (reg: Registration) => {\n const { accountStore, notify } = this.props\n Tracking.event({action: 'Unregister'})\n\n const registration = await accountStore!.deleteClassRegistration(reg.id)\n .catch(err => {\n notify!.show(\"error\", \"Unable to unregister user\")\n })\n\n if (registration) {\n // Remove from list\n const registeredIndex = this.user!.registrations.findIndex((r: Registration) => { return r.id === registration.id })\n if (registeredIndex >= 0) {\n this.user!.registrations.splice(registeredIndex, 1)\n this.loadRegistrations()\n }\n }\n }\n\n onReset = (registration: Registration) => {\n const { userStore, confirm, accountStore } = this.props\n\n Tracking.event({action: 'ResetClass'})\n confirm!.show(\"Confirm Reset Class\",\n `Please confirm you want to reset ${registration.class!.course!.title}`,\n [\"Confirm\", \"Cancel\"],\n async () => {\n const updatedRegistration = await userStore!.resetRegistration(registration.id)\n if (updatedRegistration) {\n // Update list\n this.user = await accountStore!.getUser(this.user!.id)\n if (this.user) {\n this.loadRegistrations()\n }\n }\n return true\n },\n () => {\n // Do nothing\n })\n }\n\n private loadRegistrations = () => {\n const { accountStore } = this.props\n\n if (this.user && this.user.registrations) {\n const inProgress: Registration[] = []\n const notStarted: Registration[] = []\n const completed: Registration[] = []\n const available: Registration[] = []\n\n this.user.registrations.forEach((r: Registration) => {\n if (r.classStatus === ClassStatus.NotStarted) {\n notStarted.push(r)\n } else if (r.classStatus === ClassStatus.InProgress) {\n inProgress.push(r)\n } else if (r.classCompleted) {\n completed.push(r)\n }\n })\n\n // Sort most completed first\n inProgress.sort((a: Registration, b: Registration) => b.classProgress - a.classProgress )\n this.inProgress = inProgress\n // Sort by createdAt ascending\n notStarted.sort((a: Registration, b: Registration) => a.createdAt.localeCompare(b.createdAt))\n this.notStarted = notStarted\n // Sort by updatedAt ascending\n completed.sort((a: Registration, b: Registration) => a.updatedAt.localeCompare(b.updatedAt))\n this.completed = completed\n\n // Add pseudo registrations for new classes\n const classes = accountStore!.account!.classes\n classes.forEach((c: Class) => {\n if (!c.userId) { // Ignore individually owned classes\n // let registration = this.user!.registrations.find((r: Registration) => r.classId === c.id)\n let registration = this.user!.registrations.find((r: Registration) => r.class!.courseId === c.courseId)\n if (!registration) {\n registration = new Registration({\n id: null,\n accountId: this.user!.accountId,\n classId: c.id,\n class: c,\n userId: this.user!.id,\n user: this.user,\n classStatus: ClassStatus.NotStarted,\n classProgress: 0,\n lessonNumber: 1,\n lessonStatus: LessonStatus.NotStarted,\n videoProgress: 0,\n score: 0\n })\n available.push(registration)\n }\n }\n })\n available.sort((a: Registration, b: Registration) => a.title.localeCompare(b.title))\n this.available = available\n }\n\n }\n\n}\n\nexport default withTheme((withStyles(styles)(AccountUserPage)))","import * as React from 'react'\nimport { RouteComponentProps } from '@reach/router'\nimport {createStyles, withStyles, Theme, WithStyles, withTheme, WithTheme} from '@material-ui/core/styles'\nimport {Grid, Typography} from \"@material-ui/core\";\nimport UserStore from \"../../stores/UserStore\";\nimport {inject, observer} from \"mobx-react\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport Progress from \"../../components/Progress\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport {observable, when} from \"mobx\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport Page from \"../../components/page/Page\";\nimport CourseStore from \"../../stores/CourseStore\";\nimport Confirm from \"../../components/confirm/Confirm\";\nimport Notify from \"../../components/notify/Notify\";\nimport Registration from \"../../model/Registration\";\nimport TitleBar from \"../../components/TitleBar\";\nimport TitleButton from \"../../components/TitleButton\";\nimport RegistrationCard from \"../../components/RegistrationCard\";\nimport Class from \"../../model/Class\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n flexGrow: 1,\n justifyContent: 'top',\n alignItems: 'center',\n },\n content: {\n flexGrow: 1,\n justifyContent: 'flex-start',\n width: \"100%\",\n margin: 0\n },\n titleBar: {\n marginBottom: theme.spacing(1)\n },\n group: {\n // marginTop: theme.spacing(0.5)\n margin: 0\n },\n card: {\n width: \"100%\",\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n paddingLeft: theme.spacing(0.5),\n paddingRight: theme.spacing(0.5),\n },\n subtitle: {\n margin: theme.spacing(1),\n color: theme.palette.text.secondary,\n fontWeight: 600\n },\n})\n\ninterface IHomePageProps {\n userStore?: UserStore\n accountStore?: AccountStore\n courseStore?: CourseStore\n progress?: Progress\n confirm?: Confirm\n notify?: Notify\n}\n\n@inject(\"userStore\", \"accountStore\", \"courseStore\", \"progress\", \"confirm\", \"notify\")\n@observer\nclass MyClassesPage extends React.Component & RouteComponentProps & IHomePageProps & WithTheme> {\n\n @observable isLoading = true\n @observable classes: Class[] = []\n @observable registrations: Registration[] = []\n @observable incomplete: Registration[] = []\n @observable completed: Registration[] = []\n\n componentDidMount() {\n const {userStore, accountStore, progress} = this.props\n this.isLoading = true\n progress!.show(\"MyClasses\")\n when(\n () => !userStore!.isLoading && !accountStore?.isLoading,\n async () => {\n if (userStore!.isAdminOrAgent) {\n ControlTower.route(Routes.accounts)\n return\n }\n await this.loadRegistrations()\n this.isLoading = false\n progress!.hide(\"MyClasses\")\n }\n )\n }\n\n render() {\n const { classes, userStore } = this.props\n\n const isAuthenticated = userStore!.isAuthenticated\n const title = \"My Classes\"\n\n return (\n \n \n {!this.isLoading && isAuthenticated &&\n \n \n \n \n \n \n\n \n {this.incomplete.map((r: Registration) => {\n return (\n \n \n \n )\n })\n }\n \n\n \n \n Completed\n \n {this.completed.map((r: Registration) => {\n return (\n \n \n \n )\n })\n }\n \n \n }\n \n \n )\n }\n\n onAddClass = async () => {\n const { userStore } = this.props\n ControlTower.route(`${Routes.account}/${userStore!.user!.accountId}/classes`)\n }\n\n onCardAction = (action: string, registration: Registration) => {\n if (action === \"open\") {\n ControlTower.route(`${Routes.class}/${registration.classId}`)\n } else if (action === \"reset\") {\n const { userStore, confirm } = this.props\n\n confirm!.show(\"Confirm Reset Class\",\n `Please confirm you want to reset ${registration!.class!.course!.title}`,\n [\"Confirm\", \"Cancel\"],\n async () => {\n const updatedRegistration = await userStore!.resetRegistration(registration!.id)\n if (updatedRegistration) {\n await this.loadRegistrations()\n }\n return true\n },\n () => {\n // Do nothing\n })\n }\n }\n\n loadRegistrations = async () => {\n const {userStore, accountStore} = this.props\n\n let registrations = [...userStore!.user!.registrations]\n\n // Associate Registrations with Classes\n this.classes = await accountStore!.listClasses()\n\n registrations.forEach((r: Registration) => {\n const classFound = this.classes.find((c: Class) => c.id === r.classId)\n if (classFound) {\n r.class = classFound\n }\n })\n\n const incomplete: Registration[] = []\n const completed: Registration[] = []\n\n registrations.forEach((r: Registration) => {\n if (r.classCompleted) {\n completed.push(r)\n } else {\n incomplete.push(r)\n }\n })\n\n // Sort incomplete by most recently updated\n incomplete.sort((a: Registration, b: Registration) => {\n return b.updatedAt.localeCompare(a.updatedAt)\n })\n this.incomplete = incomplete\n\n // Sort completed by completedAt ascending\n completed.sort((a: Registration, b: Registration) => {\n return a.completedAt.localeCompare(b.completedAt)\n })\n this.completed = completed\n }\n\n\n}\n\nexport default withTheme((withStyles(styles)(MyClassesPage)))","import * as React from \"react\";\nimport {\n Card, \n CardActionArea,\n CardContent, \n CardMedia,\n createStyles,\n Grid,\n Theme,\n Typography,\n withStyles,\n WithStyles\n} from \"@material-ui/core\";\nimport {inject, observer} from \"mobx-react\";\nimport S3UrlCacheStore from \"../../stores/S3UrlCacheStore\";\nimport {observable} from \"mobx\";\nimport TitleButton from \"../../components/TitleButton\";\nimport {format} from \"date-fns\";\nimport {isoToLocalDateTime} from \"../../stores/StoreUtilities\";\nimport Course from \"../../model/Course\";\n\nconst styles = (theme: Theme) => createStyles({\n card: {\n minHeight: 125,\n },\n content: {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.paper,\n padding: theme.spacing(1)\n },\n title: {\n fontSize: 20,\n fontWeight: 600,\n lineHeight: 1.2,\n paddingTop: theme.spacing(0)\n },\n titleButtons: {\n textAlign: \"right\"\n },\n actionArea: {\n color: theme.palette.secondary.main\n },\n description: {\n color: theme.palette.text.secondary,\n fontSize: 14,\n fontWeight: 400,\n overflow: \"hidden\",\n },\n details: {\n fontSize: 14,\n fontWeight: 400,\n overflow: \"hidden\",\n },\n cover: {\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1)\n },\n media: {\n width: 78,\n height: 78\n },\n image: {\n width: \"100%\",\n height: \"auto\"\n }\n})\n\ninterface ICourseCardProps {\n course: Course\n s3UrlCacheStore?: S3UrlCacheStore\n onCardAction?: any\n onEdit?: any\n}\n\n@inject(\"s3UrlCacheStore\")\n@observer\nclass CourseCard extends React.Component & ICourseCardProps> {\n\n @observable coverImageUrl?: string\n\n componentDidMount() {\n const { s3UrlCacheStore, course } = this.props\n\n if (course && course.coverUrl) {\n const coverUrl = course.coverUrl\n s3UrlCacheStore!.get(coverUrl)\n .then((url: string | undefined) => {\n this.coverImageUrl = url\n })\n .catch((err: Error) => {\n console.log(\"Error loading cover image\")\n })\n }\n }\n\n render() {\n const { classes, course, onEdit } = this.props\n\n let title = \"\"\n let description = \"\"\n let status = \"\"\n\n if (course) {\n title = course.title\n description = course.description\n if (course.updatedAt) {\n const updatedAt = isoToLocalDateTime(course.updatedAt)\n status = `Updated at ${format(updatedAt, 'M/d/yyyy h:mm aa')}`\n }\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {title}\n \n \n \n {description}\n \n \n {status}\n \n \n \n \n \n {onEdit &&\n \n \n \n }\n \n \n \n \n )\n }\n\n onCardAction = () => {\n const { onCardAction, course } = this.props\n\n if (onCardAction) {\n onCardAction(course)\n }\n }\n\n onEdit = () => {\n const { onEdit, course } = this.props\n\n if (onEdit) {\n onEdit(course)\n }\n }\n\n}\n\nexport default withStyles(styles)(CourseCard)\n","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {createStyles, Grid, Theme, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport TitleBar from \"../../components/TitleBar\";\nimport TitleButton from \"../../components/TitleButton\";\nimport Course from \"../../model/Course\";\nimport {observable, when} from \"mobx\";\nimport CourseStore from \"../../stores/CourseStore\";\nimport Progress from \"../../components/Progress\";\nimport Notify from \"../../components/notify/Notify\";\nimport UserStore from \"../../stores/UserStore\";\nimport {inject, observer} from \"mobx-react\";\nimport CourseCard from \"./CourseCard\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n display: 'flex',\n // flexDirection: 'column',\n flexGrow: 1,\n alignItems: 'flex-start',\n width: \"100%\",\n margin: 0\n },\n titleBar: {\n marginBottom: theme.spacing(1),\n width: \"100%\"\n },\n content: {\n marginTop: theme.spacing(1),\n justifyContent: 'flex-start',\n },\n item: {\n justifyContent: 'top',\n alignItems: 'center'\n },\n card: {\n width: \"100%\",\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1)\n },\n\n})\n\ninterface ICoursesPageProps {\n userStore?: UserStore\n courseStore?: CourseStore\n progress?: Progress\n notify?: Notify\n}\n\n@inject(\"userStore\", \"courseStore\", \"progress\", \"notify\")\n@observer\nclass CoursesPage extends React.Component & RouteComponentProps & ICoursesPageProps & WithTheme> {\n\n @observable isLoading = true\n @observable courses: Course[] = []\n\n async componentDidMount () {\n const { userStore, progress } = this.props\n this.isLoading = true\n progress!.show(\"CoursesPage\")\n when (\n () => !userStore!.isLoading,\n async () => {\n await this.loadCourses()\n this.isLoading = false\n progress!.hide(\"CoursesPage\")\n }\n )\n }\n\n render() {\n const { classes } = this.props\n\n const title = \"Courses\"\n\n return (\n \n \n \n \n \n \n \n \n\n {this.courses &&\n \n {this.courses.map((c: Course) => {\n return (\n \n \n \n )\n })}\n \n }\n\n \n \n \n )\n }\n\n onAddCourse = () => {\n ControlTower.route(`${Routes.courseEdit}`)\n }\n\n onCardAction = (course: Course) => {\n ControlTower.route(`${Routes.courses}/${course.id}`)\n }\n\n onEdit = (course: Course) => {\n ControlTower.route(`${Routes.courseEdit}/${course.id}`)\n }\n\n loadCourses = async () => {\n const { courseStore } = this.props\n const courses = await courseStore!.listCourses()\n if (courses) {\n courses.sort((a: Course, b: Course) => a.title.localeCompare(b.title))\n this.courses = courses\n }\n }\n}\n\nexport default withTheme((withStyles(styles)(CoursesPage)))","import React from \"react\";\nimport {createStyles, Theme, WithStyles, WithTheme} from \"@material-ui/core\";\nimport {withStyles, withTheme} from \"@material-ui/core/styles\";\n\nconst styles = (theme: Theme) => createStyles({\n formGroupSpacing: {\n flexGrow: 0,\n width: 10,\n }\n})\n\nexport class FormGroupSpacer extends React.Component & WithTheme> {\n\n render() {\n const { classes } = this.props\n return (\n
\n )\n }\n}\n\nexport default withTheme((withStyles(styles)(FormGroupSpacer)))","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {createStyles, Grid, Tab, Tabs, Theme, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport {inject, observer} from \"mobx-react\";\nimport UserStore from \"../../stores/UserStore\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport Account from \"../../model/Account\"\nimport {observable, when} from \"mobx\";\nimport User from \"../../model/User\";\nimport Progress from \"../../components/Progress\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport TitleBar from \"../../components/TitleBar\";\nimport ActivityReport from \"./ActivityReport\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n flexGrow: 1,\n width: \"100%\",\n height: \"100%\",\n justifyContent: 'top',\n alignItems: 'center',\n overflow: \"hidden\",\n },\n navigation: {\n },\n content: {\n },\n navigationBar: {\n display: \"flex\",\n flex: \"none\",\n flexDirection: \"row\",\n height: 30,\n width: \"100%\",\n maxWidth: 960,\n paddingRight: theme.spacing(1)\n },\n tabs: {\n\n },\n tab: {\n [theme.breakpoints.down('xs')]: {\n fontSize: 15,\n },\n [theme.breakpoints.up('sm')]: {\n fontSize: 15,\n },\n [theme.breakpoints.up('sm')]: {\n fontSize: 15,\n },\n fontWeight: 800\n },\n hiddenTab: {\n display: \"none\"\n }\n})\n\nexport enum ReportsTabNames {\n info = \"activity\",\n}\n\ninterface IReportsPageProps {\n userStore?: UserStore\n accountStore?: AccountStore\n progress?: Progress\n accountId?: string\n tab?: string\n}\n\n@inject(\"userStore\", \"accountStore\", \"progress\")\n@observer\nclass ReportsPage extends React.Component & RouteComponentProps & IReportsPageProps & WithTheme> {\n\n tabNames: string[] = [\"activity\"]\n\n @observable account?: Account\n @observable user?: User\n @observable isLoading = true\n\n componentDidMount () {\n const { progress, accountId } = this.props\n\n this.isLoading = true\n progress!.show(\"ReportsPage\")\n const { userStore, accountStore} = this.props\n when(\n () => !userStore!.isLoading,\n async () => {\n this.user = userStore!.user\n if (accountId) {\n this.account = await accountStore!.loadAccount(accountId!)\n }\n this.isLoading = false\n progress!.hide(\"ReportsPage\")\n }\n )\n }\n\n handleChange = (event: any, value: any) => {\n // Navigate to tab to allow a direct url to each tab\n const tabName = this.tabNames[value]\n ControlTower.route(`${Routes.account}/${this.props.accountId}/${tabName}`)\n }\n\n render() {\n const { classes } = this.props\n\n // if (!this.account) {\n // return null\n // }\n\n const title = \"Reports\"\n\n const tabName = (this.props.tab !== undefined) ? this.props.tab : this.tabNames[0]\n let tabValue = this.tabNames.findIndex(name => tabName === name)\n if (tabValue < 0) {\n tabValue = 0\n }\n\n // const isAdmin = userStore!.isAdmin\n // const isEmployer = isAdmin || userStore!.isEmployer\n\n return (\n \n \n
\n \n \n \n \n \n \n \n \n {tabValue === 0 && }\n \n
\n
\n
\n )\n }\n\n onBack = () => {\n ControlTower.route(Routes.accounts)\n }\n\n}\n\nexport default withTheme((withStyles(styles)(ReportsPage)))","import * as React from \"react\";\nimport {\n createStyles,\n DialogActions, FormControlLabel,\n Grid, Radio, RadioGroup,\n Theme, Typography,\n withStyles,\n WithStyles\n} from \"@material-ui/core\";\nimport {\n CardCVCElement,\n CardExpiryElement,\n CardNumberElement,\n injectStripe, ReactStripeElements\n} from 'react-stripe-elements';\nimport AccountStore from \"../../stores/AccountStore\";\nimport Alert from \"../../components/alert/Alert\";\nimport {inject} from \"mobx-react\";\nimport DialogButton from \"../../components/form/DialogButton\";\nimport ProgressButton from \"../../components/form/ProgressButton\";\nimport Visible from \"../../components/Visible\";\n\nconst styles = (theme: Theme) => createStyles({\n content: {\n width: '100%'\n },\n subtitle: {\n paddingBottom: 10,\n },\n textField: {\n color: theme.palette.text.primary,\n width: '100%',\n border: 'none',\n borderBottomWidth: 1,\n borderBottomStyle: \"solid\",\n borderBottomColor: theme.palette.text.secondary,\n backgroundColor: \"transparent\"\n },\n paymentField: {\n color: theme.palette.text.primary,\n fontSize: 14,\n fontWeight: 400,\n // borderBottom: '1px solid rgba(0,0,0,0.54)',\n borderBottomWidth: 1,\n borderBottomStyle: \"solid\",\n borderBottomColor: theme.palette.text.secondary,\n },\n fieldLabel: {\n fontSize: 12,\n fontWeight: 400,\n // fontFamily: theme.typography.fontFamily,\n color: theme.palette.text.secondary\n },\n label: {\n color: theme.palette.text.secondary,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n },\n fieldSet: {\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1)\n },\n fieldCheckbox: {\n // paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(2)\n },\n buttonSet: {\n justifyContent: \"center\",\n width: \"100%\",\n padding: \"20px 0 0 0\",\n marginTop: 5,\n height: 49,\n textAlign: \"center\"\n },\n progressButton: {\n color: theme.palette.primary.main,\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12,\n },\n dialogActions: {\n justifyContent: \"center\",\n },\n\n})\n\nconst elementStyle = {\n base: {\n color: '#333'\n }\n}\n\ninterface IPaymentForm {\n accountStore?: AccountStore\n amountDue?: number\n source?: any\n alert?: Alert\n stripe?: any\n confirmSubmit?: any\n onPayment?: any\n onCancel?: any\n}\n\n@inject(\"alert\", \"accountStore\")\nclass PaymentForm extends React.Component & IPaymentForm & ReactStripeElements.InjectedStripeProps> {\n\n state = {\n name: undefined,\n source: undefined,\n useSource: \"new\",\n isPaying: false\n }\n\n componentDidMount() {\n const { source, amountDue } = this.props\n if (!amountDue) {\n this.setState({useSource: \"none\"})\n } else if (source) {\n this.setState({source: source, useSource: \"existing\"})\n }\n }\n\n componentDidUpdate(prevProps: any) {\n const { source, amountDue } = this.props\n\n if (amountDue !== prevProps.amountDue) {\n if (!amountDue) {\n this.setState({useSource: \"none\"})\n } else if (source) {\n this.setState({source: source, useSource: \"existing\"})\n } else {\n this.setState({useSource: \"new\"})\n }\n }\n }\n handleSubmit = async (ev: any) => {\n ev.preventDefault();\n \n if (this.props.confirmSubmit) {\n if (!this.props.confirmSubmit()) {\n return\n }\n }\n\n if (this.state.useSource === \"new\") {\n this.setState({isPaying: true})\n // Within the context of `Elements`, this call to createToken knows which Element to\n // tokenize, since there's only one in this group.\n try {\n this.props.stripe.createToken({name: this.state.name}).then(async (response: any) => {\n // console.log('stripe.createToken response:', response);\n if (response.token) {\n if (this.props.onPayment) {\n await this.props.onPayment(response.token)\n this.setState({isPaying: false})\n }\n } else if (response.error) {\n this.setState({isPaying: false})\n this.props.alert!.show(\"Error\", response.error.message)\n }\n });\n } catch (err) {\n this.setState({isPaying: false})\n }\n } else {\n // Pay with card on file or none due\n if (this.props.onPayment) {\n await this.props.onPayment(null)\n this.setState({isPaying: false})\n }\n }\n\n };\n\n handleChange = (event: React.ChangeEvent) => {\n const name = event.target.name\n this.setState({\n [name]: event.target.value\n })\n };\n\n onCancel = (event: any) => {\n if (this.props.onCancel) {\n this.props.onCancel()\n }\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n \n {this.state.source && this.state.useSource !== \"none\" &&\n \n \n }\n label={`${this.state.source ? this.state.source!['brand'] : \"\"} card on file ending in ${this.state.source ? this.state.source!['last4'] : \"\"}`}\n labelPlacement=\"end\"\n />\n }\n label=\"New Card\"\n labelPlacement=\"end\"\n />\n \n \n }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n No payment is due.\n \n \n \n \n \n \n Cancel\n \n \n { this.state.useSource === \"none\" ? \"Save\" : \"Submit\" }\n \n \n \n\n \n
\n );\n }\n\n\n}\n\nexport default withStyles(styles)(injectStripe(PaymentForm));\n// export default withStyles(styles)(PaymentForm);","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {\n createStyles,\n DialogContent,\n Grid,\n Paper,\n Select,\n Theme,\n withStyles,\n WithStyles,\n withTheme,\n WithTheme\n} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport TitleBar from \"../../components/TitleBar\";\nimport {inject, observer} from \"mobx-react\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport {observable, when} from \"mobx\";\nimport Progress from \"../../components/Progress\";\nimport Notify from \"../../components/notify/Notify\";\nimport UserStore from \"../../stores/UserStore\";\nimport Class from \"../../model/Class\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport FormValidator from \"../../components/form/FormValidator\";\nimport TextFieldValidator from \"../../components/form/TextFieldValidator\";\nimport CourseStore from \"../../stores/CourseStore\";\nimport Account from \"../../model/Account\";\nimport Course from \"../../model/Course\";\nimport {format, isBefore, parse, startOfToday} from \"date-fns\";\nimport PaymentForm from \"./PaymentForm\";\nimport {Elements, StripeProvider} from \"react-stripe-elements\";\nimport config from 'react-global-configuration';\nimport {\n ActivityType,\n AssignmentSchedule, ClassStatus,\n CreateClassInput,\n CreateRegistrationInput, LessonStatus,\n UpdateClassInput,\n} from \"../../API\";\nimport {getErrorMessage, getISODateFromDate, isoToLocalDate} from \"../../stores/StoreUtilities\";\nimport TitleButton from \"../../components/TitleButton\";\nimport User from \"../../model/User\";\nimport Visible from \"../../components/Visible\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport DialogButton from \"../../components/form/DialogButton\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n alignItems: 'flex-start',\n },\n navigationBar: {\n display: \"flex\",\n flex: \"none\",\n flexDirection: \"row\",\n width: \"100%\",\n maxWidth: 960,\n paddingRight: theme.spacing(1)\n },\n classCardContainer : {\n width: \"100%\",\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1.5),\n paddingRight: theme.spacing(1),\n },\n titleBar: {\n flexGrow: 1,\n justifyContent: \"space-between\",\n width: \"100%\",\n height: 40,\n padding: theme.spacing(1),\n color: theme.palette.text.secondary,\n },\n message: {\n color: theme.palette.error.main,\n marginTop: 10\n },\n dialogPaper: {\n display: 'flex',\n flexGrow: 1,\n justifyContent: 'space-between',\n width: '100%',\n // maxWidth: 480,\n marginTop: theme.spacing(1)\n },\n form: {\n width: '100%'\n },\n dialogContent: {\n padding: theme.spacing(2)\n },\n dialogActions: {\n justifyContent: \"center\",\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n paddingBottom: theme.spacing(2),\n borderRadius: \"0px 0px 10px 10px\"\n },\n dialogTitle: {\n paddingLeft: 20,\n paddingRight: 20,\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n textAlign: 'center'\n },\n content: {\n display: \"flex\",\n flexGrow: 1,\n justifyContent: 'top',\n width: \"100%\",\n maxWidth: 960,\n marginTop: theme.spacing(0),\n // maxHeight: 'calc(100vh - 236px)',\n // overflowY: \"scroll\"\n },\n description: {\n color: theme.palette.text.secondary,\n fontSize: 14,\n fontWeight: 400,\n lineHeight: 1.3,\n paddingBottom: 4\n },\n paymentForm: {\n // paddingTop: theme.spacing(1)\n },\n currencyField: {\n color: theme.palette.secondary.main\n },\n fieldGroup: {\n marginTop: theme.spacing(1)\n },\n fieldSet: {\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1)\n },\n fieldLabel: {\n fontSize: 12,\n fontWeight: 400,\n color: theme.palette.text.secondary\n },\n selectContainer: {\n\n },\n selectField: {\n width: \"100%\",\n },\n applyButtonContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-end\",\n paddingBottom: \"10px !important\"\n }\n})\n\ninterface IAccountClassEditPageProps {\n accountId?: string\n classId?: string\n courseId?: string\n userStore?: UserStore\n accountStore?: AccountStore\n courseStore?: CourseStore\n progress?: Progress\n notify?: Notify\n location?: any\n stripe?: any\n}\n\n// const AssignmentScheduleHelperText = {\n// \"All\": \"All lessons will be assigned at the beginning of class\",\n// \"Quarterly\": \"Lessons will be delivered in 4 quarterly installments\",\n// \"Monthly\": \"Lessons will be delivered in 12 monthly installments\"\n// }\n\n@inject(\"accountStore\", \"userStore\", \"courseStore\", \"progress\", \"notify\")\n@observer\nclass AccountClassEditPage extends React.Component & RouteComponentProps & IAccountClassEditPageProps & WithTheme> {\n\n @observable isLoading = true\n @observable account?: Account\n @observable classObj?: Class\n @observable customer: any\n @observable source: any\n @observable coupon: any\n @observable course?: Course\n @observable owners: User[] = []\n @observable isEnded: boolean = false\n @observable values = {\n title: \"\",\n description: \"\",\n seatsPurchased: 0,\n quantity: 1,\n termBegin: \"\",\n termEnd: \"\",\n couponCode: \"\",\n seatPrice: \"$0.00\",\n amountDue: \"$0.00\",\n ownerId: \"\",\n scheduleId: \"All\"\n }\n\n componentDidMount () {\n const { accountId, classId, accountStore, userStore, courseStore, progress} = this.props\n this.isLoading = true\n progress!.show(\"AccountClassEditPage\")\n when(\n () => !accountStore!.isLoading,\n async () => {\n if (accountId) {\n this.account = await accountStore!.loadAccount(accountId!)\n } else {\n this.account = accountStore!.account\n }\n if (classId) {\n this.classObj = await accountStore!.getClass(classId!)\n if (this.classObj) {\n this.values.termBegin = format(isoToLocalDate(this.classObj.termBegin), 'M/d/yyyy')\n const termEnd = isoToLocalDate(this.classObj.termEnd)\n this.values.termEnd = format(termEnd, 'M/d/yyyy')\n this.isEnded = isBefore(termEnd, startOfToday())\n this.values.seatsPurchased = this.classObj.seatsPurchased ? this.classObj.seatsPurchased : 0\n this.values.couponCode = this.classObj.couponCode\n this.values.scheduleId = this.classObj.assignmentSchedule ? this.classObj.assignmentSchedule.toString() : \"All\"\n this.course = await courseStore!.getCourse(this.classObj.courseId)\n\n if (this.course) {\n this.values.title = this.course.title\n this.values.description = this.course.description\n }\n }\n } else {\n // Get courseId query param\n const courseId = this.props.courseId ?? new URLSearchParams(this.props.location.search).get(\"courseId\")\n\n if (courseId) {\n this.course = await courseStore!.getCourse(courseId)\n if (this.course) {\n this.values.title = this.course.title\n this.values.description = this.course.description\n }\n const termBegin = new Date()\n this.values.termBegin = format(termBegin, 'M/d/yyyy')\n let termEnd = new Date(2099, 11, 31) // addYears(termBegin, 1)\n // termEnd = subDays(termEnd, 1)\n this.values.termEnd = format(termEnd, 'M/d/yyyy')\n }\n }\n if (this.course) {\n const price = await courseStore!.getCoursePrice(this.course, this.account)\n if (price) {\n this.values.seatPrice = this.formatCurrency(price.unit_amount / 100.0, true)\n }\n }\n if (this.values.couponCode) {\n await this.applyCoupon(true)\n }\n this.updateAmountDue()\n\n if (userStore!.isAdminOrAgent) {\n await this.getOwners()\n }\n\n // Get Stripe Customer record and source\n if (userStore!.isStudent) {\n const user = userStore!.user\n if (user && user.customerId) {\n this.customer = await userStore!.getCustomer(user.customerId)\n if (this.customer) {\n // console.log(`customer = ${JSON.stringify(this.customer)}`)\n if (this.customer.default_source && this.customer.sources && this.customer.sources.data && this.customer.sources.data.length > 0) {\n if (this.customer.sources.data[0].id === this.customer.default_source) {\n this.source = this.customer.sources.data[0]\n // console.log(`User source = ${JSON.stringify(this.source)}`)\n }\n }\n }\n }\n } else {\n if (this.account && this.account!.customerId) {\n this.customer = await accountStore!.getCustomer(this.account!.customerId)\n if (this.customer) {\n // console.log(`customer = ${JSON.stringify(this.customer)}`)\n if (this.customer.default_source && this.customer.sources && this.customer.sources.data && this.customer.sources.data.length > 0) {\n if (this.customer.sources.data[0].id === this.customer.default_source) {\n this.source = this.customer.sources.data[0]\n // console.log(`source = ${JSON.stringify(this.source)}`)\n }\n }\n }\n }\n }\n progress!.hide(\"AccountClassEditPage\")\n this.isLoading = false\n }\n )\n }\n\n render() {\n const { classes, classId, userStore } = this.props\n\n if (!this.course) {\n return null\n }\n\n const title = classId ? \"Edit Class\" : \"Purchase Class\"\n const minDate = format(new Date(), 'M/d/yyyy')\n const isAdminOrAgent = userStore!.isAdminOrAgent\n const isFree = this.course.isFree\n const isStudent = userStore!.isStudent\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n this.applyCoupon(false)}/>}}\n />\n \n {/**/}\n {/**/}\n {isAdminOrAgent &&\n \n \n \n }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Cancel\n \n \n Submit\n \n \n \n \n \n \n \n {!this.isLoading && !isFree &&\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n \n \n \n \n )\n }\n\n onChange = (event: any) => {\n const name = event.target.name\n if (name === \"quantity\") {\n const value = parseInt(event.target.value)\n this.values[name] = isNaN(value) ? 0 : value\n this.updateAmountDue()\n } else if (name === \"couponCode\") {\n this.values[name] = event.target.value.toUpperCase()\n } else {\n this.values[name] = event.target.value\n }\n }\n\n applyCoupon = async (silent: boolean = false) => {\n const { courseStore, notify } = this.props\n const code = this.values.couponCode\n let coupon\n if (code) {\n coupon = await courseStore!.getCoupon(code)\n .catch((err: any) => {\n notify!.show(\"error\", \"Error getting coupon\")\n })\n\n if (coupon) {\n if (coupon.max_redemptions && coupon.times_redeemed >= coupon.max_redemptions) {\n if (!silent) {\n notify!.show(\"error\", \"This coupon is used up and cannot be applied\")\n }\n coupon = undefined\n } else if (coupon.redeem_by) {\n const now = new Date()\n if (now.getTime() / 1000 > coupon.redeem_by) {\n if (!silent) {\n notify!.show(\"error\", \"This coupon has expired and cannot be applied\")\n }\n coupon = undefined\n }\n }\n if (coupon) {\n if (!silent) {\n notify!.show(\"success\", `${coupon.name} coupon applied!`)\n }\n }\n } else {\n if (!silent) {\n notify!.show(\"warning\", \"This coupon code is not available\")\n }\n }\n\n }\n\n this.coupon = coupon\n\n this.updateAmountDue()\n }\n\n updateAmountDue = () => {\n const seatPrice = this.getCurrency(this.values.seatPrice)\n let amountDue = this.values.quantity * seatPrice\n // Apply coupon\n if (this.coupon) {\n if (this.coupon.amount_off) {\n const amountOff = this.coupon.amount_off / 100.0\n if (amountOff >= amountDue) {\n amountDue = 0\n } else {\n amountDue -= amountOff\n }\n } else if (this.coupon.percent_off) {\n amountDue -= amountDue * (this.coupon.percent_off / 100.0)\n }\n }\n this.values.amountDue = this.formatCurrency(amountDue, true)\n }\n\n getCurrency = (value: string) => {\n if (value) {\n const amount = value.replace(/[$,]/g, '');\n return parseFloat(amount)\n } else {\n return 0.00;\n }\n }\n\n formatCurrency = (num: number, addDollarSign: boolean = true) => {\n let s = num.toFixed(2).replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, \"$1,\");\n if (addDollarSign) {\n s = '$ ' + s;\n }\n return s;\n }\n\n confirmSubmit = () => {\n const { notify } = this.props\n\n if (!this.values.quantity && !this.classObj && !this.course!.isFree) {\n notify!.show(\"error\", \"Quantity must be > 0\")\n return false\n } else if (this.values.quantity && this.values.seatPrice === \"$0.00\") {\n notify!.show(\"error\", \"Course price not found\")\n return false\n }\n return true\n }\n\n onPayment = async (token: any, state: any): Promise => {\n const { userStore, accountStore, notify } = this.props\n\n const quantity = this.values.quantity\n const seatPrice = this.getCurrency(this.values.seatPrice)\n const amountDue = this.getCurrency(this.values.amountDue)\n const couponId = this.values.couponCode\n const tokenId = token ? token.id : null\n let owner: User | undefined\n const isStudent = userStore!.isStudent\n const isEmployer = userStore!.isEmployer\n\n if (userStore!.isAdminOrAgent) {\n // Must specify a user\n if (!this.values.ownerId && amountDue > 0) {\n if (this.owners.length > 0) {\n notify!.show(\"error\", \"Please select an owner\")\n } else {\n notify!.show(\"error\", \"You must first add an owner\")\n }\n return false\n }\n owner = this.owners.find((u: User) => u.id === this.values.ownerId)\n } else {\n owner = userStore!.user\n }\n\n if (amountDue > 0) {\n let invoiceResult\n if (isStudent) {\n invoiceResult = await userStore!.createInvoice(this.course!, couponId, quantity, seatPrice, tokenId)\n .catch((err: Error) => {\n notify!.show(\"error\", err.message)\n })\n } else {\n invoiceResult = await accountStore!.createInvoice(owner!, this.course!, couponId, quantity, seatPrice, tokenId)\n .catch((err: Error) => {\n notify!.show(\"error\", err.message)\n })\n }\n\n if (invoiceResult) {\n if (!this.classObj) {\n // Add new class\n const termBegin = parse(this.values.termBegin, 'M/d/yyyy', new Date())\n const termEnd = parse(this.values.termEnd, 'M/d/yyyy', new Date())\n const classInput: CreateClassInput = {\n courseId: this.course!.id,\n accountId: accountStore!.account!.id,\n ownerId: userStore!.user!.id,\n userId: isStudent ? userStore!.user!.id : undefined,\n termBegin: getISODateFromDate(termBegin),\n termEnd: getISODateFromDate(termEnd),\n seatsPurchased: this.values.quantity,\n seatsFilled: 0,\n assignmentSchedule: AssignmentSchedule[this.values.scheduleId]\n }\n // Don't store ADMIN coupons\n if (this.values.couponCode.indexOf(\"ADMIN\") < 0) {\n classInput.couponCode = this.values.couponCode ? this.values.couponCode : null\n }\n\n const classObj = await accountStore!.addPaidClass(classInput, this.course!)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to add class.\")\n })\n\n if (classObj) {\n if (isStudent || isEmployer) {\n // Add the individual to the class\n const input: CreateRegistrationInput = {\n accountId: classObj.accountId,\n classId: classObj.id,\n userId: userStore!.user!.id,\n classStatus: ClassStatus.NotStarted,\n classProgress: 0,\n lessonNumber: 1,\n lessonStatus: LessonStatus.NotStarted,\n videoProgress: 0,\n score: 0,\n lessonsAssigned: classObj.getRegistrationLessonsAssigned()\n }\n\n const registration = await accountStore!.addClassRegistration(input)\n .catch(err => {\n notify!.show(\"error\", getErrorMessage(err))\n })\n\n if (!registration) {\n return false\n }\n\n // Reload registrations\n await userStore!.loadUser(userStore!.user!.id)\n }\n\n notify!.show(\"success\", `${this.course!.title} class added!`)\n this.classObj = classObj\n userStore!.createActivity(ActivityType.ClassCreate, classObj.id)\n this.onCancel()\n }\n } else {\n // Update existing class\n const termBegin = parse(this.values.termBegin, 'M/d/yyyy', new Date())\n const termEnd = parse(this.values.termEnd, 'M/d/yyyy', new Date())\n const update: UpdateClassInput = {\n id: this.classObj.id,\n seatsPurchased: this.classObj.seatsPurchased + quantity,\n termBegin: getISODateFromDate(termBegin),\n termEnd: getISODateFromDate(termEnd),\n assignmentSchedule: AssignmentSchedule[this.values.scheduleId]\n }\n // Don't store ADMIN coupons\n if (this.values.couponCode && this.values.couponCode.indexOf(\"ADMIN\") < 0) {\n update.couponCode = this.values.couponCode ? this.values.couponCode : null\n }\n\n const classObj = await accountStore!.updateClass(update)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to update class.\")\n })\n\n if (classObj) {\n userStore!.createActivity(ActivityType.ClassEdit, classObj.id)\n notify!.show(\"success\", `${this.course!.title} updated!`)\n this.onCancel()\n }\n }\n }\n } else {\n // No payment due\n\n if (!this.classObj) {\n // Add new class\n const termBegin = parse(this.values.termBegin, 'M/d/yyyy', new Date())\n const termEnd = parse(this.values.termEnd, 'M/d/yyyy', new Date()) // TODO: Increase this\n const classInput: CreateClassInput = {\n courseId: this.course!.id,\n accountId: accountStore!.account!.id,\n ownerId: userStore!.user!.id,\n userId: isStudent ? userStore!.user!.id : undefined,\n termBegin: getISODateFromDate(termBegin),\n termEnd: getISODateFromDate(termEnd),\n seatsPurchased: quantity,\n seatsFilled: 0,\n assignmentSchedule: AssignmentSchedule[this.values.scheduleId]\n }\n\n const classObj = await accountStore!.addPaidClass(classInput, this.course!)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to add class.\")\n })\n\n if (classObj && isStudent) {\n // Add the individual to the class\n const input: CreateRegistrationInput = {\n accountId: classObj.accountId,\n classId: classObj.id,\n userId: userStore!.user!.id,\n classStatus: ClassStatus.NotStarted,\n classProgress: 0,\n lessonNumber: 1,\n lessonStatus: LessonStatus.NotStarted,\n videoProgress: 0,\n score: 0,\n lessonsAssigned: classObj.getRegistrationLessonsAssigned()\n }\n\n await accountStore!.addClassRegistration(input)\n .catch(err => {\n notify!.show(\"error\", \"Unable to register user\")\n })\n\n // Reload registrations\n await userStore!.loadUser(userStore!.user!.id)\n }\n\n if (classObj) {\n notify!.show(\"success\", `${this.course!.title} added!`)\n this.classObj = classObj\n this.onCancel()\n }\n } else {\n // Update existing class\n const termBegin = parse(this.values.termBegin, 'M/d/yyyy', new Date())\n const termEnd = parse(this.values.termEnd, 'M/d/yyyy', new Date())\n const update: UpdateClassInput = {\n id: this.classObj.id,\n termBegin: getISODateFromDate(termBegin),\n termEnd: getISODateFromDate(termEnd),\n seatsPurchased: this.classObj.seatsPurchased + quantity,\n assignmentSchedule: AssignmentSchedule[this.values.scheduleId]\n }\n\n const classObj = await accountStore!.updateClass(update)\n .catch((err: Error) => {\n notify!.show(\"error\", \"Unable to update class.\")\n })\n\n if (classObj && isStudent) {\n // Add the individual to the class\n const input: CreateRegistrationInput = {\n accountId: classObj.accountId,\n classId: classObj.id,\n userId: userStore!.user!.id,\n classStatus: ClassStatus.NotStarted,\n classProgress: 0,\n lessonNumber: 1,\n lessonStatus: LessonStatus.NotStarted,\n videoProgress: 0,\n score: 0,\n lessonsAssigned: classObj.getRegistrationLessonsAssigned()\n }\n\n await accountStore!.addClassRegistration(input)\n .catch(err => {\n notify!.show(\"error\", \"Unable to register user\")\n })\n\n // Reload registrations\n await userStore!.loadUser(userStore!.user!.id)\n }\n\n if (classObj) {\n notify!.show(\"success\", `${this.course!.title} updated`)\n this.onCancel()\n }\n }\n }\n\n return true\n }\n\n onCancel = () => {\n const { accountId, userStore } = this.props\n if (this.classObj && !userStore!.isStudent) {\n ControlTower.route(`${Routes.account}/${accountId}/class/${this.classObj.id}`)\n } else {\n ControlTower.route(`${Routes.myClasses}`)\n }\n }\n\n getOwners = async () => {\n const { accountStore } = this.props\n if (!this.owners || this.owners.length === 0) {\n const users = await accountStore!.listUsers(accountStore!.account!.id)\n if (users) {\n const owners = users.filter((u: User) => u.isEmployer || u.isAdminOrAgent )\n // Sort by createdAt so defaults to first owner\n owners.sort((a: User, b: User) => a.createdAt.localeCompare(b.createdAt))\n this.owners = owners\n if (owners.length > 0) {\n this.values.ownerId = this.owners[0].id\n }\n } else {\n this.owners = []\n }\n }\n\n return this.owners\n }\n\n renderScheduleSelect() {\n const { classes } = this.props\n\n return (\n
\n \n \n \n \n \n {/*{AssignmentScheduleHelperText[this.values.scheduleId]}*/}\n
\n )\n }\n\n renderOwnerSelect() {\n const { classes } = this.props\n\n return (\n
\n \n { this.owners.map((u: User) => {\n return \n })\n }\n \n
\n )\n }\n\n}\n\nexport default withTheme((withStyles(styles)(AccountClassEditPage)))","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {createStyles, Grid, Theme, Typography, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport {inject, observer} from \"mobx-react\";\nimport Progress from \"../../components/Progress\";\nimport {observable, when} from \"mobx\";\nimport Class from \"../../model/Class\";\nimport UserStore from \"../../stores/UserStore\";\nimport LessonCard from \"../class/LessonCard\";\nimport Lesson from \"../../model/Lesson\";\nimport Course from \"../../model/Course\";\nimport CourseStore from \"../../stores/CourseStore\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport NavigationBar from \"../../components/NavigationBar\";\nimport Registration from \"../../model/Registration\";\nimport RegistrationCard from \"../../components/RegistrationCard\";\nimport Confirm from \"../../components/confirm/Confirm\";\nimport TitleBar from \"../../components/TitleBar\";\nimport {ClassStatus, LessonStatus} from \"../../API\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n flexGrow: 1,\n justifyContent: 'top',\n alignItems: 'center',\n },\n registrationCard: {\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n paddingLeft: theme.spacing(0.5),\n paddingRight: theme.spacing(0.5),\n },\n content: {\n display: \"flex\",\n flexGrow: 1,\n marginTop: theme.spacing(0),\n marginBottom: theme.spacing(2)\n },\n lessonCard: {\n width: \"100%\",\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n paddingLeft: theme.spacing(0.5),\n paddingRight: theme.spacing(0.5),\n },\n subtitle: {\n paddingLeft: theme.spacing(0.5),\n paddingBottom: theme.spacing(1),\n color: theme.palette.text.secondary,\n fontWeight: 600\n },\n})\n\ninterface ICoursePageProps {\n courseId?: string\n userStore?: UserStore\n accountStore?: AccountStore\n courseStore?: CourseStore\n progress?: Progress\n confirm?: Confirm\n}\n\n@inject(\"userStore\", \"accountStore\", \"courseStore\", \"progress\", \"confirm\")\n@observer\nclass CoursePage extends React.Component & RouteComponentProps & ICoursePageProps & WithTheme> {\n\n @observable isLoading = true\n @observable classObj?: Class\n @observable course?: Course\n @observable lessons: Lesson[] = []\n @observable registration?: Registration\n\n async componentDidMount () {\n const { userStore, accountStore, courseStore, courseId, progress } = this.props\n this.isLoading = true\n progress!.show(\"CoursePage\")\n\n when(\n () => !userStore!.isLoading && !accountStore!.isLoading,\n async () => {\n const course = await courseStore!.getCourse(courseId!)\n if (course) {\n this.course = course\n this.classObj = this.mockClass(course)\n const registration = this.mockRegistration(this.classObj)\n if (registration) {\n this.sortLessons(registration)\n this.registration = registration\n this.isLoading = false\n }\n progress!.hide(\"CoursePage\")\n } else {\n // TODO: Handle class not found\n this.isLoading = false\n progress!.hide(\"CoursePage\")\n }\n }\n )\n }\n\n render() {\n const { classes } = this.props\n\n const title = (this.classObj) ? `${this.classObj.course!.title} (Preview)` : \"\"\n const backTitle = ControlTower.currentRoute.startsWith(Routes.account) ? \"Account Classes\" : \"Courses\"\n\n if (!this.registration) {\n return null\n }\n\n return (\n \n {!this.isLoading && this.classObj && this.course && this.registration &&\n \n
\n \n \n
\n \n
\n\n \n {this.lessons.map((l: Lesson, index: number) => {\n return (\n \n {l.number === 1 && index > 0 &&\n Completed\n }\n this.registration!.lessonNumber}/>\n \n )\n })}\n \n
\n
\n }\n
\n )\n }\n\n mockClass = (course: Course) => {\n return new Class({\n courseId: course.id,\n course: course,\n })\n }\n\n mockRegistration = (classObj: Class) => {\n const { userStore } = this.props\n\n return new Registration({\n classId: classObj.id,\n class: classObj,\n classStatus: (userStore!.isAdminOrAgent) ? ClassStatus.Passed : ClassStatus.NotStarted,\n classProgress: 0,\n lessonNumber: 1,\n lessonStatus: LessonStatus.NotStarted,\n videoProgress: 0,\n score: 0\n })\n }\n\n onRegistrationCardAction = (action: string, registration: Registration) => {\n if (action === \"open\") {\n if (this.lessons.length > 0) {\n this.onLessonCardAction(this.lessons[0])\n }\n }\n }\n\n onLessonCardAction = (lesson: Lesson) => {\n const { courseId, accountStore } = this.props\n\n const currentRoute = ControlTower.currentRoute\n if (currentRoute.startsWith(Routes.account)) {\n ControlTower.route(`${Routes.account}/${accountStore!.account!.id}/courses/${courseId}/lesson/${lesson.id}`)\n } else {\n ControlTower.route(`${Routes.courses}/${courseId}/lesson/${lesson.id}`)\n }\n\n }\n\n onBack = () => {\n const { accountStore } = this.props\n\n const currentRoute = ControlTower.currentRoute\n if (currentRoute.startsWith(Routes.account)) {\n ControlTower.route(`${Routes.account}/${accountStore!.account!.id}/classes`)\n } else {\n ControlTower.route(Routes.courses)\n }\n }\n\n sortLessons = (registration: Registration) => {\n // Sort by number with the next lesson at the beginning\n if (registration && this.course) {\n if (registration!.lessonNumber <= 1) {\n this.lessons = this.course!.lessons\n } else {\n const lessonNumber = registration!.lessonNumber\n const index = this.course!.lessons.findIndex((l: Lesson) => { return l.number === lessonNumber})\n if (index >= 0) {\n const lessons = [...this.course!.lessons.slice(index), ...this.course!.lessons.slice(0, index)]\n this.lessons = lessons\n } else {\n this.lessons = this.course!.lessons\n }\n }\n } else {\n this.lessons = []\n }\n }\n}\n\nexport default withTheme((withStyles(styles)(CoursePage)))","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {createStyles, Grid, Theme, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport {inject, observer} from \"mobx-react\";\nimport Progress from \"../../components/Progress\";\nimport {observable, when} from \"mobx\";\nimport Class from \"../../model/Class\";\nimport UserStore from \"../../stores/UserStore\";\nimport Lesson from \"../../model/Lesson\";\nimport Course from \"../../model/Course\";\nimport CourseStore from \"../../stores/CourseStore\";\nimport LessonPlayer from \"../lesson/LessonPlayer\";\nimport LessonCard from \"../class/LessonCard\";\nimport NavigationBar from \"../../components/NavigationBar\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport Registration from \"../../model/Registration\";\nimport {ClassStatus, LessonStatus} from \"../../API\";\nimport DialogButton from \"../../components/form/DialogButton\";\nimport QuizCard from \"../class/QuizCard\";\nimport Notify from \"../../components/notify/Notify\";\nimport {Question} from \"../../model/Question\";\n\nconst styles = (theme: Theme) => createStyles({\n rootStyle: {\n flexGrow: 1,\n justifyContent: 'top',\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh'\n },\n root: {\n display: \"flex\",\n flexGrow: 1,\n justifyContent: 'top',\n alignItems: 'center',\n },\n card: {\n width: \"100%\",\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n paddingLeft: theme.spacing(0.5),\n paddingRight: theme.spacing(0.5),\n },\n content: {\n marginTop: theme.spacing(2),\n justifyContent: 'flex-start',\n },\n quizContainer: {\n marginTop: theme.spacing(1),\n width: \"100%\",\n },\n quizButton: {\n }\n})\n\n// const PASSING_SCORE = 80.0\n\ninterface ICoursePreviewPageProps {\n courseId?: string\n lessonId?: string\n userStore?: UserStore\n accountStore?: AccountStore\n courseStore?: CourseStore\n progress?: Progress\n notify?: Notify\n}\n\n@inject(\"userStore\", \"accountStore\", \"courseStore\", \"progress\", \"notify\")\n@observer\nclass CoursePreviewPage extends React.Component & RouteComponentProps & ICoursePreviewPageProps & WithTheme> {\n\n @observable classObj?: Class\n @observable course?: Course\n @observable lesson?: Lesson\n @observable registration?: Registration\n @observable isLoading = true\n @observable playing = true\n @observable disabled = false\n\n async componentDidMount () {\n const { userStore, accountStore, courseStore, courseId, lessonId, progress } = this.props\n console.log(`CoursePreviewPage componentDidMount`)\n this.isLoading = true\n progress!.show(\"CoursePreviewPage\")\n\n when(\n () => !userStore!.isLoading && !accountStore!.isLoading,\n async () => {\n const course = await courseStore!.getCourse(courseId!)\n if (course) {\n this.course = course\n this.classObj = this.mockClass(this.course)\n this.lesson = course?.getLesson(lessonId!)\n this.registration = this.mockRegistration(this.classObj, this.lesson)\n this.isLoading = false\n progress!.hide(\"CoursePreviewPage\")\n }\n })\n }\n\n render() {\n const { classes, userStore } = this.props\n\n if (!this.registration) {\n return null\n }\n\n const isAdminOrAgent = userStore!.isAdminOrAgent\n\n const title = (this.classObj) ? this.classObj.course!.title : \"\"\n\n let showTakeQuiz = false\n let showQuiz = isAdminOrAgent\n let showNext = false\n\n return (\n \n \n {!this.isLoading && this.course && this.registration &&\n \n \n \n {!this.isLoading &&\n \n }\n \n \n {!this.isLoading &&\n \n }\n \n {showTakeQuiz &&\n \n \n Take Quiz\n \n \n }\n {showQuiz && this.lesson!.questions.map((q: Question, index: number) =>\n \n \n \n )}\n {showNext &&\n \n \n NEXT\n \n \n }\n \n }\n \n \n )\n }\n\n mockClass = (course: Course) => {\n return new Class({\n courseId: course.id,\n course: course,\n })\n }\n\n mockRegistration = (classObj: Class, lesson?: Lesson) => {\n return new Registration({\n classId: classObj.id,\n class: classObj,\n classStatus: ClassStatus.NotStarted,\n classProgress: 0,\n lessonNumber: lesson ? lesson.number : 1,\n lessonId: lesson ? lesson.id : undefined,\n lessonStatus: LessonStatus.NotStarted,\n videoProgress: 0,\n score: 0\n })\n }\n\n onBack = () => {\n const { courseId, accountStore } = this.props\n\n const currentRoute = ControlTower.currentRoute\n if (currentRoute.startsWith(Routes.account)) {\n ControlTower.route(`${Routes.account}/${accountStore!.account!.id}/courses/${courseId}`)\n } else {\n ControlTower.route(`${Routes.courses}/${this.props.courseId}`)\n }\n }\n\n onTogglePlay = () => {\n this.playing = !this.playing\n }\n\n onPlay = () => {\n this.playing = true\n }\n\n onPause = () => {\n this.playing = false\n }\n\n onEnded = (seconds: number) => {\n this.playing = false\n }\n\n onProgress = (seconds: number) => {\n }\n\n onQuiz = () => {\n }\n\n onAnswer = (answer: number) => {\n }\n\n onNext = async () => {\n // const { userStore } = this.props\n // Go to next lesson if admin\n // if (userStore!.isAdminOrAgent) {\n // const nextLesson = this.course?.getNextLesson(this.registration!.lessonNumber)\n //\n // if (nextLesson) {\n // if (this.props.navigate) {\n // this.props.navigate(`${Routes.course}/${this.course!.id}/lesson/${nextLesson.id}`)\n // } else {\n // ControlTower.route(`${Routes.course}/${this.course!.id}/lesson/${nextLesson.id}`)\n // }\n // }\n // } else {\n ControlTower.route(`${Routes.courses}/${this.course!.id}`)\n // }\n }\n}\n\nexport default withTheme((withStyles(styles)(CoursePreviewPage)))","import * as React from 'react'\nimport {\n Box,\n createStyles,\n Grid, \n MenuItem,\n Select,\n Theme,\n Typography,\n withStyles,\n WithStyles,\n withTheme,\n WithTheme\n} from \"@material-ui/core\";\nimport {inject, observer} from \"mobx-react\";\nimport UserStore from \"../../stores/UserStore\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport Account from \"../../model/Account\"\nimport {observable, when} from \"mobx\";\nimport Progress from \"../../components/Progress\";\nimport CourseStore from \"../../stores/CourseStore\";\nimport Notify from \"../../components/notify/Notify\";\nimport Activity from \"../../model/Activity\";\nimport {getISODateFromDate, humanizeString, isoToLocalDateTime} from \"../../stores/StoreUtilities\";\nimport {addDays, format} from \"date-fns\";\nimport MaterialTable from \"material-table\";\nimport {useState} from \"react\";\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n display: \"flex\",\n flexGrow: 1,\n justifyContent: 'top',\n alignItems: 'center',\n },\n paper: {\n width: \"100%\",\n height: \"100%\"\n },\n toolBar: {\n padding: theme.spacing(2),\n paddingRight: theme.spacing(4),\n width: \"100%\"\n },\n title: {\n },\n range: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignContent: \"center\"\n },\n selectField: {\n },\n\n})\n\ninterface IActivityReportProps {\n userStore?: UserStore\n accountStore?: AccountStore\n courseStore?: CourseStore\n progress?: Progress\n notify?: Notify\n}\n\nconst ActivityTypeFilter = (props: any) => {\n const [selectedVal, setSelectedVal] = useState(0);\n\n let handleChange = (e: any) => {\n const val = e.target.value;\n console.log(`handleChange(${val})`)\n setSelectedVal(val);\n props.onFilterChanged(props.columnDef.tableData.id, val);\n }\n\n return (\n \n \n \n );\n};\n\n\n@inject(\"userStore\", \"accountStore\", \"courseStore\", \"progress\", \"notify\")\n@observer\nclass ActivityReport extends React.Component & IActivityReportProps & WithTheme> {\n\n @observable account?: Account\n @observable activity: Activity[] = []\n @observable data: any[] = []\n @observable isLoading = true\n @observable values = {\n numDays: \"-1\"\n }\n\n componentDidMount () {\n const { progress } = this.props\n this.isLoading = true\n progress!.show(\"ActivityReport\")\n const { userStore, accountStore} = this.props\n when(\n () => !userStore!.isLoading,\n async () => {\n this.account = accountStore!.account\n await this.loadActivity()\n }\n )\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n \n },\n { title: 'Account', field: 'accountName'},\n { title: 'User', field: 'userName'},\n ]}\n data={this.data}\n options={{\n showTitle: true,\n search: false,\n sorting: true,\n filtering: true,\n padding: \"dense\",\n pageSize: 100,\n pageSizeOptions: [10,25,50,100,250,500,1000],\n maxBodyHeight: \"calc(100vh - 325px)\"\n }}\n components={{\n Toolbar: props => (\n \n \n \n Activity Report\n \n \n \n {/**/}\n \n \n \n \n \n\n \n \n ),\n }}\n />\n \n
\n )\n }\n\n onChange = (event: any) => {\n const name = event.target.name\n this.values[name] = event.target.value\n if (name === \"numDays\") {\n this.loadActivity()\n }\n }\n\n loadActivity = async () => {\n const { accountStore, progress } = this.props\n this.isLoading = true\n progress!.show(\"ActivityReport\")\n this.activity = []\n const data: any[] = []\n const today = new Date()\n const numDays = parseInt(this.values.numDays)\n for (let day = 0; day > numDays; day--) {\n const date = addDays(today, day)\n const isoDate = getISODateFromDate(date)\n const activity = (await accountStore!.listActivityByDate(isoDate)).reverse()\n this.activity.push(...activity)\n activity.forEach((a: Activity) => {\n data.push({\n id: a.id,\n createdAt: format(isoToLocalDateTime(a.createdAt), 'MM/dd/yyyy HH:mm:ss'),\n activityType: humanizeString(a.activityType),\n accountName: a.account ? a.account.name : a.accountId,\n userName: a.user ? a.user.fullName : a.userId\n })\n })\n }\n progress!.hide(\"ActivityReport\")\n this.isLoading = false\n this.data = data\n }\n\n}\n\nexport default withTheme((withStyles(styles)(ActivityReport)))","import * as React from 'react'\nimport {createStyles, Theme, withStyles, WithStyles} from \"@material-ui/core/styles\";\nimport {Routes} from \"../../components/ControlTower\";\n\nconst styles = (theme: Theme) => createStyles({\n link: {\n textDecoration: 'none',\n color: theme.palette.action.active\n },\n})\n\nclass TermsOfUseUS extends React.Component> {\n\n render() {\n\n return (\n
\n

GovGig.us Terms of Use

\n\n

Last Updated: March 18, 2022

\n\n

These Terms of Use for the GovGig.us site (hereafter “Site”) establish a binding agreement between you and Watermark Solutions LLC, DBA GovGig, a Washington limited liability company (hereafter “Company”). Your use of the GovGig.us site manifests your acceptance of these Terms of Use and Privacy Policy.

\n

The following terminology applies to these Terms of Use (the “Agreement”), Privacy Policy and where applicable Privacy Notice: \"Client\", \"You\" and \"Your\" refers to you, the person accessing this website and accepting the Company's terms and conditions. \"The Company\", \"Ourselves\", \"We\", \"Our\" and \"Us\", refers to Company. \"Party\", \"Parties\", or \"Us\", refers to both the Client and Company, or either the Client or Company. Any use of the above terminology or other words in the singular, plural, capitalization and/or he/she or they, are taken as interchangeable and therefore as referring to same.

\n\n

Consent to receive electronic communications

\n

By providing your email to Company, you consent to receiving communications by email. By providing your telephone number to Company, you consent to receiving messages via SMS. You may revoke your consent to electronic communications at any time from your Site settings.

\n\n

Eligibility

\n

You must be at least eighteen (18) years of age or the age of majority in the jurisdiction where you reside to use the Site. You may not use the Site if your use of the Site has been previously terminated or suspended by Company.

\n\n

Privacy Notice

\n

Please refer to the GovGig.us privacy policy which also governs your use of the Site.

\n\n

Cookies

\n

We employ the use of cookies. By using the Site you consent to the use of cookies in accordance with GovGig.us's privacy policy. Most of the modern-day interactive web sites use cookies to enable us to retrieve user details for each visit. Cookies are used in some areas of our site to enable the functionality of this area and ease of use for those people visiting. Some of our affiliate / advertising partners may also use cookies.

\n\n

License

\n

Subject to your compliance with these Terms of Use, applicable Terms of Service and your payment of any fees, Company grants you a limited, non-exclusive, non-transferrable, non-sublicenseable license to access and make personal and non-commercial use of the Site. This license transfers no ownership or intellectual property interest or title in the services or materials used in connection with the Site.

\n

All content available through the Site such as text, graphics, logos, button icons, images, digital downloads and software is property of Company or licensed to Company and is protected by US and international copyright law. The compilation of all content included in or made available through the service is the exclusive property of Company and protected by US and international copyright law.

\n

Graphics, logos, scripts, icons and service names on the Site are trademarks or trade dress of Company in the US. Company trademarks and trade dress may not be used in connection with any product or service that is not Company’s in any manner that is likely to cause confusion among customers or in any manner that disparages or discredits Company or GovGig.us. All other trademarks not owned by Company that appear on the Site are the property of their respective owners, who may or may not be affiliated with, connected to or sponsored by Company.

\n

Your license does not grant any license for resale or commercial use of the GovGig.us service, any use of bots, scraping, data mining or similar data gathering tools.

\n

All rights not explicitly granted to you are reserved to Company.

\n\n

You may view and/or print pages from the Site for your own personal use subject to restrictions set in these terms and conditions. You agree that you will not:

\n
    \n
  1. Republish material from the Site
  2. \n
  3. Sell, rent or sub-license material from the Site
  4. \n
  5. Reproduce, duplicate or copy material from the Site
  6. \n
  7. Redistribute content from the Site (unless content is specifically made for redistribution).
  8. \n
\n\n

Hyperlinking to our Content

\n
    \n
  1. The following organizations may link to our Web site without prior written approval:
  2. \n
      \n
    1. Government agencies;
    2. \n
    3. Search engines;
    4. \n
    5. News organizations;
    6. \n
    7. Online directory distributors when they list us in the directory may link to our Web site in the same manner as they hyperlink to the Web sites of other listed businesses; and
    8. \n
    9. Systemwide Accredited Businesses except soliciting non-profit organizations, charity shopping malls, and charity fundraising groups which may not hyperlink to our Web site.
    10. \n
    \n
  3. These organizations may link to our home page, to publications or to other Web site information so long as the link: (a) is not in any way misleading; (b) does not falsely imply sponsorship, endorsement or approval of the linking party and its products or services; and (c) fits within the context of the linking party's site.
  4. \n
  5. We may consider and approve in our sole discretion other link requests from the following types of organizations:
  6. \n
      \n
    1. commonly known consumer and/or business information sources such as Chambers of Commerce, American Automobile Association, AARP and Consumers Union;
    2. \n
    3. dot.com community sites;
    4. \n
    5. associations or other groups representing charities, including charity giving sites,
    6. \n
    7. online directory distributors;
    8. \n
    9. internet portals;
    10. \n
    11. accounting, law and consulting firms whose primary clients are businesses; and
    12. \n
    13. educational institutions and trade associations.
    14. \n
    \n
\n\n

We will approve link requests from these organizations if we determine that: (a) the link would not reflect unfavorably on us or our accredited businesses (for example, trade associations or other organizations representing inherently suspect types of business, such as work-at-home opportunities, shall not be allowed to link); (b)the organization does not have an unsatisfactory record with us; (c) the benefit to us from the visibility associated with the hyperlink outweighs the absence of GovGig.us; and (d) where the link is in the context of general resource information or is otherwise consistent with editorial content in a newsletter or similar product furthering the mission of the organization.

\n

These organizations may link to our home page, to publications or to other Web site information so long as the link: (a) is not in any way misleading; (b) does not falsely imply sponsorship, endorsement or approval of the linking party and its products or services; and (c) fits within the context of the linking party's site.

\n

If you are among the organizations listed in paragraph 2 above and are interested in linking to our website, you must notify us by sending an e-mail to info@GovGig.us. Please include your name, your organization name, contact information (such as a phone number and/or e-mail address) as well as the URL of your site, a list of any URLs from which you intend to link to our Web site, and a list of the URL(s) on our site to which you would like to link. Allow 2-3 weeks for a response.

\n\n

Approved organizations may hyperlink to our Web site as follows:

\n
    \n
  1. By use of our corporate name; or
  2. \n
  3. By use of the uniform resource locator (Web address) being linked to; or
  4. \n
  5. By use of any other description of our Web site or material being linked to that makes sense within the context and format of content on the linking party's site.
  6. \n
\n\n

No use of GovGig.us's logo or other artwork will be allowed for linking absent a trademark license agreement.

\n

Company reserves the right at any time and in its sole discretion to request that you remove all links or any particular link to the Site. You agree to immediately remove all links to the Site upon such request.

\n\n

Iframes

\n

Without prior approval and express written permission from the Company, you may not create frames around our Web pages or use other techniques that alter in any way the visual presentation or appearance of our Web site.

\n\n

Removal of links from our website

\n

If you find any link on our Web site or any linked web site objectionable for any reason, you may contact us about this. We will consider requests to remove links but will have no obligation to do so or to respond directly to you.\n Whilst we endeavor to ensure that the information on this website is correct, we do not warrant its completeness or accuracy; nor do we commit to ensuring that the website remains available or that the material on the website is kept up to date.\n

\n

Company has no responsibility or liability for any content you post on the Site. You agree to indemnify and defend us against all claims arising out of or based upon content you post on the Site. No link(s) may appear on any content you post or within any context containing content or materials that may be interpreted as libelous, obscene or criminal, or which infringes, otherwise violates, or advocates the infringement or other violation of, any third party rights.

\n\n

No Refunds for Paid Services

\n

You may cancel your subscription to paid services at any time. You accept that you will not receive a refund of prepaid fees upon such cancellation. In the event that Company suspends, terminates or limits your access to the Site, you agree that you will receive no refund of prepaid subscription fees.

\n\n

Claims of Copyright Infringement and Related Issues

\n

We respect the intellectual property rights of others. Anyone who believes their work has been reproduced in a way that constitutes copyright infringement may notify our agent by providing the following information:

\n
    \n
  1. Identification of the copyrighted work that you claim has been infringed, or, if multiple copyrighted works at a single online site are covered by a single notification, a representative list of such works at the site;
  2. \n
  3. Identification of the material that you claim is infringing and needs to be removed, including a description of where it is located so that the copyright agent can locate it;
  4. \n
  5. Your address, telephone number, and, if available, e-mail address, so that the copyright agent may contact you about your complaint;
  6. \n
  7. A signed statement that the above information is accurate; that you have a good faith belief that the identified use of the material is not authorized by the copyright owner, its agents, or the law; and, under penalty of perjury, that you are the copyright owner or are authorized to act on the copyright owner’s behalf in this situation.
  8. \n
\n\n

Upon obtaining such knowledge we will act expeditiously to remove, or disable access to, the material. Please be aware that there are substantial penalties for false claims. If a notice of copyright infringement has been wrongly filed against you, you may submit a counter notification to our agent. A valid counter notification is written communication that incorporates the following elements:

\n
    \n
  1. A physical or electronic signature of the poster;
  2. \n
  3. Identification of the material that has been removed or to which access has been disabled and the location at which the material appeared before it was removed or access to it was disabled;
  4. \n
  5. A statement under penalty of perjury that you have a good faith belief that the material was removed or disabled as a result of mistake or misidentification;
  6. \n
  7. Your name, address, and telephone number; a statement that you consent to the jurisdiction of federal district court for the judicial district in which your address is located, or if your address is located outside of the U.S., for any judicial district in which the service provider (Company) may be found; and that you will accept service of process from the complainant.
  8. \n
\n\n

Notices of the foregoing copyright issues should be sent as follows:

\n

By mail:

\n

\n Watermark Solutions LLC, DBA GovGig
\n 19255 Powder Hill Pl NE, Suite 102
\n Poulsbo, WA 98370
\n USA\n

\n

Attn: DMCA Agent

\n

By email:

\n

dmca@govgig.us

\n\n

If you give notice of copyright infringement by e-mail, an agent may begin investigating the alleged copyright infringement; however, we must receive your signed statement by mail or as an attachment to your e-mail before we are required to take any action.

\n

This information should not be construed as legal advice. We recommend you seek independent legal counsel before filing a notification or counter-notification. For further information about the DMCA, please visit the website of the United States Copyright Office at: http://www.copyright.gov.

\n\n

Third Party Links and Services

\n

The Site may contain links to third-party websites, advertisers, products, or services that are not owned nor controlled by Company. Company does not endorse or assume any responsibility for such third-party sites, information, materials, products or services. If you access a third-party website from the Site or use a third-party service, you do so at your own risk and you agree that that this Agreement and Privacy Policy do not apply to your use of such third-party websites. You relieve Company from any and all liability from your use of third-party websites, services or content, and agree that Company shall not be responsible for any loss or data relating to your use of such third-party websites, services or content.

\n\n

Site Policies, Modification, Severability

\n

We reserve the right to make changes to the GovGig.us site, Privacy Policies and these Terms of Use at any time. If any of these terms or conditions is deemed invalid, void or otherwise unenforceable, that condition shall be severable and shall not affect the validity and enforceability of any other terms or conditions.

\n\n

Indemnity

\n

To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Company and its subsidiaries and their respective directors, officers, board members, employees, agents, successors and assigns, from and against any and all claims, damages, obligations, losses, liabilities, costs and expenses (including but not limited to all legal fees and expenses) arising from your use of the Site and GovGig.us services, your violation of any term of this Agreement or any other agreement you have with Company, your violation of any third-party rights, including without limitation any right of privacy or intellectual property rights, your violation of any applicable law, rule or regulation, any other party’s access and use of the Site using your account or log-in information, or your intentional or willful misconduct, or negligence.

\n\n

Disclaimer of Warranty

\n

YOU EXPRESSLY ACKNOWLEDGE AND AGREE THAT USE OF THE GOVGIG.US SITE IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE GOVGIG.US SITE IS PROVIDED “AS IS,” WITH ALL FAULTS AND WITHOUT WARRANTY OF ANY KIND, AND COMPANY AND COMPANY'S SUBSIDIARIES AND AFFILIATES (COLLECTIVELY REFERRED TO AS “COMPANY” FOR THE PURPOSES OF THIS AGREEMENT) HEREBY DISCLAIM ALL WARRANTIES AND CONDITIONS WITH RESPECT TO THE GOVGIG.US SITE, EITHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND NON-INFRINGEMENT OF THIRD PARTY RIGHTS. COMPANY DOES NOT GUARANTEE ANY RESULTS FROM USING THE SITE OR ITS SERVICES. COMPANY DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE GOVGIG.US SITE, THAT THE FUNCTIONS CONTAINED IN THE GOVGIG.US SITE WILL MEET YOUR REQUIREMENTS, THAT THE OPERATION OF THE GOVGIG.US SITE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT DEFECTS IN THE GOVGIG.US SITE WILL BE CORRECTED. NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY COMPANY OR A COMPANY AUTHORIZED REPRESENTATIVE SHALL CREATE A WARRANTY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES OR LIMITATION ON APPLICABLE STATUTORY RIGHTS OF A CONSUMER, SO THE ABOVE EXCLUSION AND LIMITATIONS MAY NOT APPLY TO YOU.

\n\n

Limitation of Liability

\n

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL COMPANY, ITS AFFILIATES OR LICENSEES, BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE GOVGIG.US SITE OR THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT SERVICES, EVEN IF COMPANY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IF ANY SUCH WARRANTY OR GUARANTEE CANNOT BE EXCLUDED BY LAW, THEN TO THE EXTENT PERMITTED BY LAW, COMPANY’S LIABILITY FOR BREACH OF ANY SUCH WARRANTY OR GUARANTEE IS LIMITED, AT COMPANY’S OPTION, TO THE RESUPPLY OF SERVICES OR PAYMENT OF THE COST OF RESUPPLY OF THE SERVICES. BECAUSE SOME STATES AND JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY, THE ABOVE LIMITATION MAY NOT APPLY TO YOU.

\n\n

Governing Law and Forum

\n

These Terms of Use and Privacy Policy shall be governed by and construed in accordance with the laws of the State of Washington, without respect to its conflict-of-law principles, as applied to such agreements between Washington residents made and to be performed entirely within the State of Washington. Each of the parties hereto (i) irrevocably consents to the exclusive jurisdiction and venue of any court within King County, State of Washington, in connection with any matter based upon or arising out of this Agreement, and (ii) agrees that process may be served upon them in any manner authorized by the laws of the State of Washington for such persons, and (iii) waives any right to, and covenants not to assert or plead, any objection which they might otherwise have to such jurisdiction, venue or process.

\n\n

Assignment

\n

This Agreement is personal to you and you may not transfer, assign, lease, sublet or delegate your rights and obligations without the written consent of Company. Company may assign this Agreement or delegate its obligations without restrictions provided that any such successor shall be bound by the terms of this Agreement.

\n\n

Relationship of the Parties

\n

Nothing in this agreement shall be construed as making either party the partner, joint venturer, employer, contractor or employee of the other. Neither party shall hold itself out to any third party as having any authority to make statements, representations or commitments of any kind, or take any action, that shall be binding on the other, except as provided in this Agreement or authorized in writing by the partner to be so bound.

\n\n

Entire Agreement

\n

This agreement, together with the Privacy Policy, and any amendments shall constitute the entire agreement between you and Company. You acknowledge that you have not relied on any statement, promise or representation made or given by or on behalf of Company that is not set out in this Agreement or document expressly referred to in this Agreement.

\n\n

No Waiver

\n

No failure by Company to exercise or delay exercise any rights herein shall operate as a waiver of such rights, nor shall any partial exercise of any right by Company preclude any future exercise of that right or any other right.

\n\n

Severability

\n

If you have any queries regarding any of our terms, please contact us at info@govgig.us or via post at:\n

\n

\n Watermark Solutions LLC, DBA GovGig
\n 19255 Powder Hill Pl NE, Suite 102
\n Poulsbo, WA 98370
\n USA\n

\n
\n )\n }\n}\n\nexport default withStyles(styles)(TermsOfUseUS)\n","import * as React from 'react'\nimport {createStyles, Theme, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core/styles\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport Page from \"../../components/page/Page\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport TermsOfUseUS from \"./TermsOfUseUS\";\n\nconst styles = (theme: Theme) => createStyles({\n\n})\n\nclass TermsOfUsePage extends React.Component & RouteComponentProps & WithTheme> {\n\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport default withTheme((withStyles(styles)(TermsOfUsePage)))\n\n","import * as React from 'react'\nimport {createStyles, Theme, withStyles, WithStyles} from \"@material-ui/core/styles\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport {Link} from \"@material-ui/core\";\n\nconst styles = (theme: Theme) => createStyles({\n link: {\n textDecoration: 'none',\n color: theme.palette.action.active,\n cursor: \"pointer\"\n },\n table: {\n borderSpacing: 0,\n borderCollapse: \"collapse\"\n },\n td: {\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: theme.palette.text.secondary,\n padding: 4,\n \"&:first-child\": {\n fontWeight: 600,\n whiteSpace: \"nowrap\"\n }\n }\n})\n\nclass PrivacyPolicyUS extends React.Component> {\n\n render() {\n const {classes} = this.props\n\n const backLink = (document.referrer.endsWith(Routes.terms)) ?\n

Back

: null\n\n return (\n
\n {backLink}\n

GovGig.us Privacy Policy

\n

Last Updated: March 18, 2022

\n\n

This privacy policy is part of the Terms of Use agreement between you and Watermark Solutions LLC, DBA GovGig (“Company”). It is Company's policy to respect your privacy regarding any information we may collect while operating our website. This Privacy Policy applies to https://www.GovGig.us (hereinafter, \"us\", \"we\", or \"Https://www.GovGig.us\"). We respect your privacy and are committed to protecting personally identifiable information you may provide us through the Website. We have adopted this privacy policy (\"Privacy Policy\") to explain what information may be collected on our Website, how we use this information, and under what circumstances we may disclose the information to third parties. This Privacy Policy applies only to information we collect through the Website and does not apply to our collection of information from other sources.

\n

This Privacy Policy, together with the Terms and conditions posted on our Website, set forth the terms, conditions and policies governing your use of our Website. Depending on your activities when visiting our Website, you may be required to agree to additional terms and conditions.

\n\n

Definitions

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
CompanyWatermark Solutions LLC, DBA GovGig and its wholly owned subsidiaries
Non-Personal DataData that is not considered personal data under applicable law. Company reserves the right to treat data as Personal Data or Non-Personal Data based on applicable law, the data and the data subject.
Personal DataAny information or data that identifies you or could reasonably be used to identify you or your computing device(s) either directly or indirectly.
Sensitive Personal DataData about you that discloses race or ethnic origin, religion, beliefs, genetic or biometric data, union membership, health data, sexual identity, sexual orientation
SiteThe GovGig.us website
\n\n

Data We Collect

\n

As permitted by law, Company may collect, use, store and transfer personal data about you:

\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Identifying Dataname, resume, user name or other identifier
Contact Dataaddress, email address, phone number or other contact information
Financial Datacredit, debit or payment service data, which is collected by Company’s payment service providers. Company does not directly collect Financial Data
Transaction Datainformation about payments made, goods and services subscriptions.
Access Datadevice identifiers, login data, dates and times of Site access, browser type and version, operating system type and version, cookie data, time zone and location, other technology on the device(s) you use to access the Site, and how you use the Site.
Account Datayour username and password, orders placed, preferences, searches, feedback, survey responses, job applications.
\n\n

Non-Personal Data

\n

Company collects, stores and uses aggregated data that may be derived from your Personal Data but is not considered Personal Data because it does not directly or indirectly disclose your identity.

\n\n

Required Personal Data

\n

Where required by law or under the terms of an agreement between you and Company, you may be asked to provide Personal Data. You agree that where such Personal Data is reasonably required by your agreement with Company for the fulfilment of the services provided by Company, or required by law, Company may limit or terminate services on Site if you do not provide such required Personal Data.

\n\n

Sensitive Personal Data

\n

Company does not require or ask you to provide Sensitive Personal Data. You are responsible for any Sensitive Personal Data you include in resumes or other information you post on the Site, and you agree that Company shall have no liability for any Sensitive Personal Data you provide.

\n\n

Sources of Personal Data

\n

Personal Data includes data that you provide directly to Company when you create or update an account or use the services of the Site. It also includes data that you provide indirectly, such as your activity on the Site. We also receive data from third parties such as analytics or advertising providers that can be Personal Data.

\n\n

How Your Data is Used

\n

Non-Personal Data

\n

We may use your non-Personal data for any purpose not prohibited by law or where inconsistent with the Terms of Use, Privacy Policy, and any jurisdictionally specific privacy policies of Company.

\n\n

Personal Data

\n

We will only use your Personal Data to provide services to you by Company or its affiliates, except as otherwise described herein, or as permitted by your consent.

\n\n

Who We Share Your Data With

\n

Company shares Personal Data only to those that need to know that information in order to process it on Company’s behalf or to provide services available from the Site. Third parties receiving your Personal Data are authorized to only use such data for the designated purpose and are not authorized to share your data with other third parties. Company may share Personal Data with third parties including:

\n
    \n
  • External third parties in order to provide services to you, such as identify verification, IT services, payment platforms, communication services, and security.
  • \n
  • Professional advisors such as lawyers, bankers, insurers and financial services in the operation of its business.
  • \n
  • Taxing authorities, where reporting of processing activities is required.
  • \n
  • Fraud protection services where disclosure is reasonably necessary to protect the interests or safety of Company, its customers or others.
  • \n
  • In connection with proposed or actual financing, merger, sale, purchase or transfer of the Company. In the event of a merger, sale or reorganization, the users of the Site will be one of the assets transferred. The terms of this Privacy Policy shall be binding on successors to Company.
  • \n
  • Third parties, where you have consented to disclosure of your Personal Data, including when you post your resume or apply for a posted job.
  • \n
  • Law enforcement agencies, courts, and other third parties to the extent required by law or required to comply with the legal obligations of Company.
  • \n
  • Where required to enforce the Terms of Use and other agreements, to protect the rights of Company, customers and other third parties, or where required to investigate or act on suspected or actual unlawful acts.
  • \n
  • When you apply for a job, Company will share your Personal Data with the prospective employer or its agent.
  • \n
  • When you post your resume, Company will share your Personal Data with prospective employers and/or their agents. When you remove your resume, Company will stop sharing your resume, however employers or their agents who were provided access to your Personal Data prior to you removing your resume will continue to have your Personal Data.
  • \n
\n\n

Company does not sell your information to third parties.

\n\n

Where your Data is Stored

\n

Retention of your Personal Data depends on the purpose of the data, legal or accounting requirements associated with the data, and any regulatory requirements such as financial or tax reporting, any requests made by you concerning the retention of your Personal Data, and where retaining the data is necessary to the rights of Company (such as defense of claims). Company may anonymize your Personal Data so it can no longer be associated to you and may use that anonymized data without further notice.

\n\n

Data Subject Rights

\n

Depending on applicable law, you may have rights concerning your Personal Data

\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Informationthe right to know what personal data Company has about you and how it is used
Accessthe right to a copy of your Personal Data, subject to restrictions
Rectificationthe right to require Company to correct incomplete or inaccurate Personal Data
Withdrawalthe right to withdraw your consent for Company to process to your Personal Data. Withdrawal of consent will not affect the lawfulness of any processing performed prior to your withdrawal of consent. Withdrawal of your consent may result in termination of services on the Site.
\n\n

Exercising Data Subject Rights

\n

Requests to exercise your data subject rights can be made by email to dsar@govgig.us. You must provide your account identifier. You will be asked to provide additional information from which Company can verify your request. No fees for exercising data subject rights are ordinarily required, however Company may charge a reasonable fee if your request is excessive, repetitive or unfounded.

\n\n

Time to Respond to Data Subject Requests

\n

Company will endeavor to respond to all legitimate requests within the time limits required by applicable law. In the event of a delay, you will be notified with the reason of such delay.

\n\n

Marketing

\n

Company may use your Personal Data to send you marketing emails with information about the services provided by Company and will obtain consent to do so where required by law. You may unsubscribe to such marketing by choosing the option to unsubscribe included in such marketing emails.

\n\n

Cookies

\n

Company and third parties may use cookies or similar tracking technologies to analyze trends, operate the Site, track user activities on the Site and to gather demographic data. You may elect to disable cookies using your browser settings; however, some features of the Site may not be available when cookies are disabled. Your use of the Site without changing your browser settings indicates your acceptance of Company’s use of cookies and similar tracking technologies.

\n\n

Data Security

\n

Company uses appropriate organizational and technical measures to protect Personal Data. No transmission or storage of data can be guaranteed to be 100% secure. You acknowledge that there are security and privacy limitations of the Internet that are beyond Company’s control. The security, integrity and privacy of data exchanged between you and Company cannot be guaranteed.

\n\n

Links to Third Party Sites

\n

The Site may contain links to external sites that are not operated by us. If you click on a third-party link, you will be directed to that third party's site. Company strongly advises you to review the Privacy Policy and terms and conditions of every site you visit.

\n

Company has no control over, and assume no responsibility for, the content, privacy policies or practices of any third-party sites, products or services.

\n\n

Minors and Children

\n

The services of Company and the Site are not intended for use by persons under the age of eighteen years. Company does not knowingly collect or solicit for Personal Data from anyone under the age of 13 or knowingly allow such persons to register to use the Site. In the event that you believe Company might have Personal Data from or about a child under 13, contact dsar@govgig.us. We will delete that data to the extent required by law as quickly as possible

\n\n

Changes to Privacy Policy

\n

Company reserves the right to change this Privacy Policy at any time. You will be notified of material changes by Company posting notice on the Site or issuing email to registered users of the Site prior to such changes. Company will update the effective date of such changes on the Site. You acknowledge that you are responsible for maintaining a current email with your account on Site and to review this Privacy Policy on the site periodically. If you object to any changes to the Privacy Policy or any terms of service, you can stop using the Site and delete your account. Your continued use of the site indicates your acceptance of any changes to this Privacy Policy.

\n\n

Residents of California

\n

Residents of California have specific rights under the California Consumer Privacy Act. Company’s Privacy Notice for residents of California is at {Routes.privacyCCPA} and is hereby incorporated into this Privacy Policy.

\n\n
\n )\n }\n}\n\nexport default withStyles(styles)(PrivacyPolicyUS)","import * as React from 'react'\nimport {createStyles, Theme, withStyles, WithStyles} from \"@material-ui/core/styles\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport {Link} from \"@material-ui/core\";\n\nconst styles = (theme: Theme) => createStyles({\n link: {\n textDecoration: 'none',\n color: theme.palette.action.active,\n cursor: \"pointer\"\n },\n})\n\nclass PrivacyPolicyCCPA extends React.Component> {\n\n render() {\n const {classes} = this.props\n\n const backLink = (document.referrer.endsWith(Routes.privacy)) ?\n

Back

: null\n\n return (\n
\n {backLink}\n

GovGig.us California Privacy Notice

\n

Last Updated: March 18, 2022

\n\n

This California Privacy Notice is part of the Terms of Use agreement between you and Watermark Solutions LLC, DBA GovGig (“Company”). This privacy notice supplements the information contained in Company’s Privacy Policy and applies solely to residents of the State of California using the Site. Company adopts this policy to comply with the California Consumer Privacy Act.

\n\n

Information we collect

\n

Personal information

\n

Company may collect:

\n
    \n
  • Identifiers such as name, alias, email address, phone number, username, unique personal identifier, IP address, device id, account name and similar identifiers.
  • \n
  • Personal information categories such as name, address, phone number, education, employment, employment history, financial information (credit card, debit card, bank account information).
  • \n
  • Commercial information, including services on the Site you view or purchase, and details of services to which you subscribe.
  • \n
  • Internet data including login history, search history, browsing activity, browser type and version, device information, cookie data, browser plugin types and version, and operating system of your device.
  • \n
  • Geolocation data including time zone, and location (latitude/longitude).
  • \n
  • Employment information including job searches, job applications, information provided in your resume or job seeker profile including work history and education.
  • \n
  • Inferences drawn from your personal information and activity on the Site that reflect your preferences.
  • \n
\n\n

Non-personal information

\n

Company may collect, use and share data or aggregated data that has all personally identifying information removed. Such de-identified or aggregated data may be derived from your personal data but is not considered personal information under CCPA because it does not directly or indirectly disclose your identity.

\n\n

Information we do not collect

\n

Company does not ask you for protected classifications under California or federal law. Protected classifications of data include age (40+ years), race, color, ancestry, national origin, citizenship, religion, creed, marital status, disability (physical or mental), gender identity, gender expression, pregnancy or childbirth, sexual orientation, genetic information, and veteran or military status. You are responsible for assessing information you provide in your profile or resume that are protected and are not necessary for your application or search.

\n

Company does not collect biometric information, sensory information or non-public education information.

\n\n

Sources of Personal Data

\n

Personal Data includes data that you provide directly to Company when you create or update an account or use the services of the Site. It also includes data that you provide indirectly, such as your activity on the Site. We also receive data from third parties such as analytics or advertising providers that can be Personal Data.

\n\n

Sale of Personal Data

\n

Company does not sell your information to third parties. Company provides your information to its affiliates on your behalf when you apply for a job or post your information on the Site. Company does not receive payment for providing your information to affiliates. Company receives payment when a job seeker is placed with an affiliate as an employee or contractor. This may constitute a “sale” of personal information under the CCPA.

\n\n

Your rights under the CCPA

\n

The CCPA provides California residents with specific rights concerning personal information.

\n\n

Access to information about you and its use by Compan

\n

If you are a California resident and the CCPA does not recognize an exception to you or your personal information, you may request that Company provide to you information about Personal Data that Company has and how it is used. Company will provide to you, after it has received and verified your request, (a) the categories of information Company collects about you (b) the categories of sources of that information (c) the purpose for collecting the data (d) the categories of third parties the data has been shared with, (e) the specific data collected (f) the personal information categories for which your information was sold or disclosed to third parties.

\n\n

Deleting your personal information

\n

If you are a California resident and the CCPA does not recognize an exception to you or your personal information, you may request that Company delete your personal information. When Company receives and validates your request, your account on the Site will be deleted and your data deleted unless an exception applies.\n Your request may be denied under certain circumstances, including but not limited to when it is necessary to Company or a Company affiliate to complete the transaction for which your information was collected, or is necessary to Company to comply with law or court order.\n Anonymized and aggregated data are not considered personal information under CCPA.\n

\n\n

Exercising your rights

\n

Company will acknowledge your request within 10 business days and will provide information about how your request will be processed. Requests will ordinarily be fulfilled within forty-five (45) days. If more time is required, you will be notified in writing. Any disclosure requests will only cover the 12-month period preceding the date of your request. Company will provide notice of reasons it cannot comply with your request, if applicable.

\n\n

Opting out from the sale of Personal Information

\n

Requests to opt out of the sale of personal information can be made by email to ccpa@govgig.us. You are not required to create an account to exercise your right to opt out. We will only use personal information you provide with such requests to review and respond to such requests. The services of the Site cannot be performed without providing your Personal Data to affiliates of Company; therefore, when you request to opt out, your account and all personal data will be deleted.

\n\n

Non-Discrimination

\n

Company will not discriminate against you for exercising any of your CCPA rights, including denial of service, different pricing or discounts, or quality of goods or services.

\n\n

Affiliates

\n

Where Company has provided your personal information on your behalf to an affiliate, and you seek to access or delete your personal information, Company will provide affiliate contact information so that you may directly contact them.

\n\n

Changes to Privacy Notice

\n

Company reserves the right to change this Privacy Notice at any time. You will be notified of material changes by Company posting notice on the Site or issuing email to registered users of the Site prior to such changes. Company will update the effective date of such changes on the Site. You acknowledge that you are responsible for maintaining a current email with your account on Site and to review this Privacy Notice on the Site periodically. If you object to any changes to the Privacy Notice or any terms of service, you can stop using the Site and delete your account. Your continued use of the site indicates your acceptance of any changes to this Privacy Notice.

\n\n

Contact Information

\n

ccpa@govgig.us

\n\n

Mailing address:

\n

\n Watermark Solutions LLC, DBA GovGig
\n 19255 Powder Hill Pl NE, Suite 102
\n Poulsbo, WA 98370
\n USA\n

\n

Attn: CCPA

\n
\n )\n }\n}\n\nexport default withStyles(styles)(PrivacyPolicyCCPA)","import * as React from 'react'\nimport {createStyles, Theme, withStyles, WithStyles, withTheme, WithTheme} from \"@material-ui/core/styles\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport Page from \"../../components/page/Page\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport PrivacyPolicyUS from \"./PrivacyPolicyUS\";\nimport PrivacyPolicyCCPA from \"./PrivacyPolicyCCPA\";\n\nconst styles = (theme: Theme) => createStyles({\n\n})\n\ninterface IPrivacyPolicyPageProps {\n option?: string\n}\n\nclass PrivacyPolicyPage extends React.Component & RouteComponentProps & WithTheme & IPrivacyPolicyPageProps> {\n\n render() {\n const { option } = this.props\n\n return (\n \n \n {option === undefined &&\n \n }\n {option === \"ccpa\" &&\n \n }\n \n \n )\n }\n}\n\nexport default withTheme((withStyles(styles)(PrivacyPolicyPage)))\n\n","import * as React from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { createStyles, withStyles, Theme, WithStyles } from '@material-ui/core/styles'\nimport { RouteComponentProps } from '@reach/router'\nimport DialogButton from './form/DialogButton'\n\n\nconst styles = (theme: Theme) => createStyles({\n dialog: {\n margin: 0\n },\n dialogContent: {\n padding: \"10px 10px\"\n },\n paper: {\n margin: 10\n },\n dialogActions: {\n justifyContent: \"center\",\n paddingTop: 10,\n paddingBottom: 10\n }\n})\n\ninterface IModalDialog {\n open?: boolean\n title?: string\n onClose?: any\n children?: any\n maxWidth?: any\n}\n\nclass ModalDialog extends React.Component & RouteComponentProps & IModalDialog> {\n\n onClose = () => {\n if (this.props.onClose) {\n this.props.onClose()\n }\n };\n\n render() {\n const {classes, title, children} = this.props\n const maxWidth = (this.props.maxWidth !== undefined) ? this.props.maxWidth : \"md\"\n\n return (\n \n {title &&\n {title}\n }\n \n {children}\n \n \n \n Close\n \n \n \n )\n }\n}\n\nexport default withStyles(styles)(ModalDialog)\n","import * as React from 'react'\nimport { Grid } from '@material-ui/core';\nimport PrivacyPolicy from \"./PrivacyPolicy\";\nimport {inject, observer} from \"mobx-react\";\nimport MarginRow from \"./MarginRow\";\nimport ModalDialog from \"../ModalDialog\";\nimport {createStyles, Theme, withStyles, WithStyles} from \"@material-ui/core/styles\";\nimport {Routes} from \"../ControlTower\";\n\nconst styles = (theme: Theme) => createStyles({\n link: {\n textDecoration: 'none',\n color: theme.palette.action.active\n },\n content: {\n height: \"calc(75vh)\",\n width: \"100%\",\n },\n iframe: {\n width: \"100%\",\n height: \"100%\",\n border: \"none\",\n overflowY: \"scroll\"\n }\n})\n\ninterface IPrivacyPolicyDialogProps {\n privacyPolicy?: PrivacyPolicy\n}\n\n@inject(\"privacyPolicy\")\n@observer\nclass PrivacyPolicyDialog extends React.Component & IPrivacyPolicyDialogProps> {\n\n render() {\n const { classes, privacyPolicy } = this.props\n\n return (\n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport default withStyles(styles)(PrivacyPolicyDialog)\n","import * as React from 'react'\nimport { Grid } from '@material-ui/core';\nimport TermsOfUse from \"./TermsOfUse\"\nimport {inject, observer} from \"mobx-react\";\nimport PrivacyPolicy from \"./PrivacyPolicy\";\nimport MarginRow from \"./MarginRow\";\nimport ModalDialog from \"../ModalDialog\";\nimport {createStyles, Theme, withStyles, WithStyles} from \"@material-ui/core/styles\";\nimport {Routes} from \"../ControlTower\";\n\nconst styles = (theme: Theme) => createStyles({\n link: {\n textDecoration: 'none',\n color: theme.palette.action.active\n },\n content: {\n height: \"calc(75vh)\",\n width: \"100%\",\n },\n iframe: {\n width: \"100%\",\n height: \"100%\",\n border: \"none\",\n overflowY: \"scroll\"\n }\n})\n\ninterface ITermsOfUseDialogProps {\n termsOfUse?: TermsOfUse\n privacyPolicy?: PrivacyPolicy\n}\n\n@inject(\"termsOfUse\", \"privacyPolicy\")\n@observer\nclass TermsOfUseDialog extends React.Component & ITermsOfUseDialogProps> {\n\n privacyPolicy = (ev: any) => {\n ev.preventDefault()\n this.props.privacyPolicy!.show()\n }\n\n render() {\n const { classes, termsOfUse } = this.props\n\n return (\n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport default withStyles(styles)(TermsOfUseDialog)","import * as React from 'react'\nimport Page from '../../components/page/Page'\nimport {\n Button,\n Card, CardActions, CardContent, CardMedia,\n createStyles, Grid,\n Theme, Typography,\n withStyles,\n WithStyles,\n withTheme,\n WithTheme\n} from \"@material-ui/core\";\nimport {RouteComponentProps} from \"@reach/router\";\nimport MarginRow from \"../../components/page/MarginRow\";\nimport CourseStore from \"../../stores/CourseStore\";\nimport {inject, observer} from \"mobx-react\";\nimport {observable, when} from \"mobx\";\nimport Course from \"../../model/Course\";\nimport Progress from \"../../components/Progress\";\nimport UserStore from \"../../stores/UserStore\";\nimport S3UrlCacheStore from \"../../stores/S3UrlCacheStore\";\nimport Notify from \"../../components/notify/Notify\";\nimport parseHTML from \"html-react-parser\";\nimport ControlTower, {Routes} from \"../../components/ControlTower\";\nimport AccountStore from \"../../stores/AccountStore\";\nimport {numberToMoneyFormat} from \"../../stores/StoreUtilities\";\n\nconst styles = (theme: Theme) => createStyles({\n rootStyle: {\n flexGrow: 1,\n justifyContent: 'top',\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh'\n },\n card: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2)\n },\n cardContent: {\n padding: theme.spacing(2)\n },\n cardActions: {\n padding: theme.spacing(2)\n }\n})\n\ninterface ICourseDetailPageProps {\n courseId?: string\n userStore?: UserStore\n accountStore?: AccountStore\n courseStore?: CourseStore\n s3UrlCacheStore?: S3UrlCacheStore\n progress?: Progress\n notify?: Notify\n}\n\n@inject(\"userStore\", \"accountStore\", \"courseStore\", \"progress\", \"notify\", \"s3UrlCacheStore\")\n@observer\nclass CourseDetailPage extends React.Component & RouteComponentProps & ICourseDetailPageProps & WithTheme> {\n\n @observable isLoading = true\n @observable course?: Course\n @observable imageUrl?: string\n @observable price: number = 0\n\n componentDidMount() {\n const {courseId, userStore, courseStore, s3UrlCacheStore, progress} = this.props\n this.isLoading = true\n progress!.show(\"CourseDetailPage\")\n when(\n () => !userStore!.isLoading,\n async () => {\n if (courseId) {\n this.course = await courseStore!.getCourse(courseId!)\n if (this.course) {\n if (this.course.coverUrl) {\n s3UrlCacheStore!.get(this.course.coverUrl)\n .then((url: string | undefined) => {\n this.imageUrl = url\n })\n .catch((err: Error) => {\n console.log(\"Error loading cover image\")\n })\n }\n this.price = await this.getCoursePrice(this.course)\n }\n }\n this.isLoading = false\n progress!.hide(\"CourseDetailPage\")\n }\n )\n }\n\n render() {\n const {classes, accountStore} = this.props\n\n if (!this.course) {\n return (null)\n }\n\n const formattedPrice = numberToMoneyFormat(this.price)\n\n const title = this.course.title\n const course = this.course\n\n return (\n \n \n \n \n \n \n \n \n \n \n {course.title}\n \n \n {formattedPrice}\n \n \n {course.description}\n \n \n \n {\n ControlTower.route(`${Routes.account}/${accountStore!.account!.id}/classEdit?courseId=${course.id}`)\n }}\n >\n Purchase\n \n \n \n \n {course.details &&\n \n \n Details\n \n \n { parseHTML(course.details) }\n \n \n }\n \n \n \n \n \n )\n }\n\n getCoursePrice = async (course: Course) => {\n const { accountStore, courseStore } = this.props\n\n let price = 0\n\n if (!course.isFree) {\n const priceData = await courseStore!.getCoursePrice(course, accountStore!.account)\n .catch((err: any) => {\n console.log(`Error getting course price: ${err.message}`)\n })\n\n if (priceData) {\n price = priceData.unit_amount / 100.0\n }\n }\n console.log(`Course price: ${price}`)\n return price\n }\n}\n\n\nexport default withTheme((withStyles(styles)(CourseDetailPage)))","import React from 'react';\nimport './App.css';\n\n// AWS\nimport {Amplify, API, Storage} from 'aws-amplify'\nimport aws_exports from './aws-exports'\n\n// Config\nimport config from 'react-global-configuration';\nimport AppConfig from './AppConfig';\n\n// Styles\nimport { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles'\nimport CssBaseline from '@material-ui/core/CssBaseline'\n\n// Routing\nimport { Router } from '@reach/router'\nimport ControlTower, {Routes} from \"./components/ControlTower\";\nimport NotFoundPage from \"./pages/NotFoundPage\";\nimport SignUpPage from \"./pages/signup/SignUpPage\";\nimport SignOutPage from \"./pages/SignOutPage\";\nimport AccountPage from \"./pages/account/AccountPage\";\nimport AccountEditPage from \"./pages/account/AccountEditPage\";\nimport ClassPage from \"./pages/class/ClassPage\";\nimport LessonPage from \"./pages/lesson/LessonPage\";\nimport UserEditPage from \"./pages/account/UserEditPage\";\nimport RegisterPage from \"./pages/register/RegisterPage\";\nimport AccountClassPage from \"./pages/account/AccountClassPage\";\nimport AccountsPage from \"./pages/admin/AccountsPage\";\nimport AccountUserPage from \"./pages/account/AccountUserPage\";\nimport MyClassesPage from \"./pages/myClasses/MyClassesPage\";\nimport SignInPage from \"./pages/signIn/SignInPage\";\nimport CoursesPage from \"./pages/content/CoursesPage\";\nimport CourseEditPage from \"./pages/content/CourseEditPage\";\nimport AccountClassEditPage from \"./pages/account/AccountClassEditPage\";\nimport CoursePage from \"./pages/course/CoursePage\";\nimport CoursePreviewPage from \"./pages/course/CoursePreviewPage\";\nimport ReportsPage from \"./pages/reports/ReportsPage\";\nimport grey from '@material-ui/core/colors/grey';\nimport { blueGrey } from '@material-ui/core/colors';\nimport TermsOfUsePage from \"./pages/legal/TermsOfUsePage\";\nimport PrivacyPolicyPage from \"./pages/legal/PrivacyPolicyPage\";\nimport PrivacyPolicyDialog from \"./components/page/PrivacyPolicyDialog\";\nimport TermsOfUseDialog from \"./components/page/TermsOfUseDialog\";\nimport CourseDetailPage from \"./pages/content/CourseDetailPage\";\n\nconfig.set(AppConfig);\n\nAmplify.configure(aws_exports);\n\n// TODO: Remove cookieStorage for now, as it appears to accumulate a large size of cookie headers which cause site loading issues, see notes: https://trello.com/c/sjKuKIQi\n// Enable cookie storage for cross-domain auth\n// const authConfig = {\n// identityPoolId: aws_exports.aws_cognito_identity_pool_id,\n// region: aws_exports.aws_project_region,\n// userPoolId: aws_exports.aws_user_pools_id,\n// userPoolWebClientId: aws_exports.aws_user_pools_web_client_id,\n// cookieStorage: {\n// domain: AppConfig.domain,\n// path: \"/\",\n// expires: 1,\n// secure: AppConfig.domain !== \"localhost\"\n// }\n// }\n// Auth.configure(authConfig)\n\nAPI.configure(aws_exports)\nStorage.configure(aws_exports)\n\nconst rawTheme = createMuiTheme({\n palette: {\n type: \"light\",\n background: {\n default: '#E7E9EB', // '#fff', // '#EDEEF2', // '#dedada', // '#fff', // '#E1E3E5', // '#E7E1E1', // '#dedada', // blueGrey[50], // off white\n paper: '#fff' // pure white\n },\n primary: {\n main: '#0d346a', // darkish blue\n 100: '#d4e3f9',\n 200: '#90b8f1',\n 500: '#2e507e',\n 600: '#203857',\n 700: '#152438'\n },\n secondary: {\n main: '#0393ee', // brightish blue\n light: '#29a8fc' //'#5dbdfc' // \n },\n action: {\n active: '#0393ee',\n selected: '#0393ee',\n hover: '#0393ee'\n },\n divider: grey[200], // '#D72322' // red\n text: {\n primary: '#333',\n secondary: '#777'\n },\n grey: {\n 50: '#f5f7f8',\n 100: '#F3F5F7',\n 200: '#f5f7f9',\n 300: '#e7e9eb',\n 400: '#dbdee1',\n 500: '#c0c5ca'\n },\n error: {\n main: 'hsl(359, 93%, 55%)'\n }\n },\n typography: {\n fontFamily: [\n 'Open Sans',\n 'Roboto',\n 'sans-serif'\n ].join(','),\n button: {\n textTransform: 'initial',\n fontFamily: [\n 'Open Sans',\n 'Roboto',\n 'sans-serif'\n ].join(','),\n fontSize: \"16px !important\",\n fontWeight: 400,\n lineHeight: 1.5,\n letterSpacing: \"0.00938em\"\n },\n h1: {\n fontFamily: [\n 'Montserrat',\n 'sans-serif'\n ].join(',')\n },\n h2: {\n fontFamily: [\n 'Montserrat',\n 'sans-serif'\n ].join(',')\n },\n h3: {\n fontFamily: [\n 'Montserrat',\n 'sans-serif'\n ].join(',')\n },\n h4: {\n fontFamily: [\n 'Montserrat',\n 'sans-serif'\n ].join(',')\n },\n h5: {\n fontFamily: [\n 'Montserrat',\n 'sans-serif'\n ].join(',')\n },\n h6: {\n fontFamily: [\n 'Montserrat',\n 'sans-serif'\n ].join(','),\n fontSize: 16\n },\n body1: {\n fontFamily: [\n 'Open Sans',\n 'Roboto',\n 'sans-serif'\n ].join(','),\n fontSize: 16\n },\n body2: {\n fontFamily: [\n 'Open Sans',\n 'Roboto',\n 'sans-serif'\n ].join(','),\n fontSize: 14\n }\n },\n shape: {\n borderRadius: 10\n }\n})\n\nconst theme = {\n ...rawTheme, \n typography: {\n ...rawTheme.typography,\n h1: {\n ...rawTheme.typography.h1,\n fontWeight: 800,\n fontSize: 44,\n [rawTheme.breakpoints.down('sm')]: {\n fontSize: 32\n },\n },\n h2: {\n ...rawTheme.typography.h2,\n fontWeight: 700,\n fontSize: 32,\n [rawTheme.breakpoints.down('sm')]: {\n fontSize: 24\n },\n },\n h3: {\n ...rawTheme.typography.h3,\n fontWeight: 600,\n fontSize: 22,\n [rawTheme.breakpoints.down('sm')]: {\n fontSize: 18\n },\n },\n h4: {\n ...rawTheme.typography.h4,\n fontWeight: 300,\n fontSize: 20,\n [rawTheme.breakpoints.down('sm')]: {\n fontSize: 18\n }\n },\n h5: {\n ...rawTheme.typography.h5,\n fontWeight: 800,\n fontSize: 16,\n [rawTheme.breakpoints.down('sm')]: {\n fontSize: 14\n },\n textTransform: 'uppercase'\n }\n },\n overrides: {\n MuiInputLabel: {\n root: {\n color: 'rgba(25, 25, 25, 1.0)',\n \"&$focused\": { // Make less opaque than default of 0.7\n color: 'rgba(45, 45, 45, 1.0)',\n },\n }\n },\n MuiCardContent: {\n root: {\n padding: 0,\n \"&:last-child\": {\n paddingBottom: 4,\n },\n },\n },\n MuiMenuItem: {\n root: {\n \"&:hover\": {\n backgroundColor: rawTheme.palette.secondary.main\n }\n }\n },\n MuiDialog: {\n paperFullWidth: {\n [rawTheme.breakpoints.down('xs')]: {\n margin: 0,\n width: 'calc(100% - 32px) !important',\n }\n }\n },\n MuiDialogTitle: {\n root: {\n [rawTheme.breakpoints.down('xs')]: {\n paddingLeft: rawTheme.spacing(2),\n },\n [rawTheme.breakpoints.up('sm')]: {\n paddingLeft: rawTheme.spacing(3),\n },\n backgroundColor: rawTheme.palette.primary.main,\n color: rawTheme.palette.common.white\n }\n },\n MuiDialogContent: {\n root: {\n [rawTheme.breakpoints.down('xs')]: {\n paddingLeft: rawTheme.spacing(2),\n paddingRight: rawTheme.spacing(2),\n },\n [rawTheme.breakpoints.up('sm')]: {\n paddingLeft: rawTheme.spacing(3),\n paddingRight: rawTheme.spacing(3),\n },\n }\n },\n MuiDialogActions: {\n root: {\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n [rawTheme.breakpoints.down('xs')]: {\n paddingLeft: rawTheme.spacing(2),\n paddingRight: rawTheme.spacing(2),\n paddingTop: rawTheme.spacing(1),\n paddingBottom: rawTheme.spacing(1),\n },\n [rawTheme.breakpoints.up('sm')]: {\n paddingLeft: rawTheme.spacing(3),\n paddingRight: rawTheme.spacing(3),\n paddingTop: rawTheme.spacing(2),\n paddingBottom: rawTheme.spacing(2),\n },\n backgroundColor: blueGrey[50]\n }\n },\n MuiPaper: {\n elevation1: {\n boxShadow: 'rgba(0, 0, 0, 0.15) 0px 5px 15px 0px'\n }, \n elevation2: {\n boxShadow: 'rgba(149, 157, 165, 0.5) 0px 0px 27px'\n }\n }\n }\n}\n\ninterface IApp {\n}\n\nclass App extends React.Component {\n render() {\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n\n }\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and allUsers)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","/* tslint:disable */\nimport gql from \"graphql-tag\";\n\nexport const getAccount = /* GraphQL */ gql`\n query GetAccount($id: ID!) {\n getAccount(id: $id) {\n id\n createdAt\n updatedAt\n ownerId \n name\n address\n city\n state\n postalCode\n accountType\n accountStatus\n accountSize \n customerId \n classes(limit: 1000) {\n items {\n id\n createdAt\n updatedAt\n courseId\n accountId\n ownerId\n userId\n termBegin\n termEnd\n seatsPurchased\n seatsFilled\n couponCode\n assignmentSchedule\n }\n nextToken\n }\n }\n }\n`;\nexport const listAccounts = /* GraphQL */ gql`\n query ListAccounts(\n $filter: ModelAccountFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listAccounts(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n createdAt\n updatedAt\n ownerId \n name\n address\n city\n state\n postalCode\n accountType\n accountStatus\n accountSize \n customerId\n }\n nextToken\n }\n }\n`;\n\nexport const getAccountUsers = /* GraphQL */ gql`\n query GetAccount($id: ID!) {\n getAccount(id: $id) {\n id\n users(limit: 1000) {\n items {\n id\n createdAt\n updatedAt\n invitedAt\n accountId\n firstName\n lastName\n email\n phone\n jobTitle\n userStatus\n active\n role\n customerId\n }\n nextToken\n }\n }\n }\n`;\n\nexport const getClass = /* GraphQL */ gql`\n query GetClass($id: ID!) {\n getClass(id: $id) {\n id\n createdAt\n updatedAt\n courseId\n course {\n id\n createdAt\n updatedAt\n title\n description\n coverUrl\n details\n publishDate\n sunsetDate\n lessonCount\n creditHours\n isFree\n lessons\n handoutUrl\n classes {\n nextToken\n }\n }\n accountId\n ownerId\n userId \n termBegin\n termEnd\n seatsPurchased\n seatsFilled\n couponCode\n assignmentSchedule \n registrations(limit: 1000) {\n items {\n id\n createdAt\n updatedAt\n accountId\n classId\n userId\n classStatus\n classProgress\n lessonNumber\n lessonId\n lessonStatus\n videoProgress\n answers\n score\n startedAt\n endsAt \n completedAt\n lessonsAssigned\n nextAssignmentAt\n }\n nextToken\n }\n }\n }\n`;\n\nexport const getUser = /* GraphQL */ gql`\n query GetUser($id: ID!) {\n getUser(id: $id) {\n id\n createdAt\n updatedAt\n invitedAt \n accountId\n firstName\n lastName\n email\n phone\n jobTitle\n userStatus\n active \n role\n customerId\n accountId\n account {\n id\n createdAt\n updatedAt\n ownerId\n name\n address\n city\n state\n postalCode\n accountType\n accountStatus\n accountSize\n customerId\n classes {\n items {\n id\n createdAt\n updatedAt\n courseId\n accountId\n ownerId\n userId\n termBegin\n termEnd\n seatsPurchased\n seatsFilled\n couponCode\n assignmentSchedule\n }\n nextToken\n }\n }\n registrations(limit: 1000) {\n items {\n id\n createdAt\n updatedAt\n accountId\n classId\n userId\n classStatus\n classProgress\n lessonNumber\n lessonId \n lessonStatus \n videoProgress\n answers\n score\n startedAt\n endsAt\n completedAt\n lessonsAssigned\n nextAssignmentAt\n }\n nextToken\n }\n }\n }\n`;\n\n// Course\n\nexport const getCourse = /* GraphQL */ gql`\n query GetCourse($id: ID!) {\n getCourse(id: $id) {\n id\n createdAt\n updatedAt\n title\n description\n coverUrl\n details\n publishDate\n sunsetDate\n lessonCount\n creditHours\n isFree\n lessons\n handoutUrl\n }\n }\n`;\nexport const listCourses = /* GraphQL */ gql`\n query ListCourses(\n $filter: ModelCourseFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCourses(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n createdAt\n updatedAt\n title\n description\n coverUrl\n details\n publishDate\n sunsetDate\n lessonCount\n creditHours\n isFree\n handoutUrl\n }\n nextToken\n }\n }\n`;\n\n// Registration\n\nexport const getRegistration = /* GraphQL */ gql`\n query GetRegistration($id: ID!) {\n getRegistration(id: $id) {\n id\n createdAt\n updatedAt\n accountId\n classId\n class {\n id\n createdAt\n updatedAt\n courseId\n accountId\n ownerId\n userId \n termBegin\n termEnd\n seatsPurchased\n seatsFilled\n couponCode\n assignmentSchedule \n }\n userId\n classStatus\n classProgress\n lessonNumber\n lessonId\n lessonStatus \n videoProgress\n answers\n score\n startedAt\n endsAt\n completedAt\n lessonsAssigned\n nextAssignmentAt\n \n }\n }\n`;\n\n// Activity\nexport const listAccountActivity = /* GraphQL */ gql`\n query GetAccount(\n $id: ID!\n $filter: ModelActivityFilterInput\n $limit: Int\n $sortDirection: ModelSortDirection\n $nextToken: String\n ) {\n getAccount(id: $id) {\n id\n activity(filter: $filter, limit: $limit, nextToken: $nextToken, sortDirection: $sortDirection) {\n items {\n id\n createdAt\n updatedAt\n accountId\n userId\n activityDate\n activityType\n objectId\n values\n }\n nextToken\n }\n }\n }\n`;\n\nexport const listActivitys = /* GraphQL */ gql`\n query ListActivitys(\n $filter: ModelActivityFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listActivitys(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n createdAt\n updatedAt\n accountId\n userId\n activityDate\n activityType\n objectId\n values\n }\n nextToken\n }\n }\n`;\nexport const listActivityByDate = /* GraphQL */ gql`\n query ListActivityByDate(\n $activityDate: AWSDate\n $sortDirection: ModelSortDirection\n $filter: ModelActivityFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listActivityByDate(\n activityDate: $activityDate\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n createdAt\n updatedAt\n accountId\n userId\n activityDate\n activityType\n objectId\n values\n }\n nextToken\n }\n }\n`;","// These are customized versions of the auto-generated mutations.ts\n\nimport gql from \"graphql-tag\";\n\n// Account mutations\n\nexport const createAccount = /* GraphQL */ gql`\n mutation CreateAccount(\n $input: CreateAccountInput!\n $condition: ModelAccountConditionInput\n ) {\n createAccount(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n ownerId \n name\n address\n city\n state\n postalCode\n accountType\n accountStatus\n accountSize \n customerId\n }\n }\n`;\n\nexport const updateAccount = /* GraphQL */ gql`\n mutation UpdateAccount(\n $input: UpdateAccountInput!\n $condition: ModelAccountConditionInput\n ) {\n updateAccount(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n ownerId\n name\n address\n city\n state\n postalCode\n accountType\n accountStatus\n accountSize \n customerId \n }\n }\n`;\nexport const deleteAccount = /* GraphQL */ gql`\n mutation DeleteAccount(\n $input: DeleteAccountInput!\n $condition: ModelAccountConditionInput\n ) {\n deleteAccount(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n name\n address\n city\n state\n postalCode\n accountType\n accountStatus\n accountSize \n customerId \n }\n }\n`;\n\n// Agreement\n\nexport const createAgreement = /* GraphQL */ gql`\n mutation CreateAgreement(\n $input: CreateAgreementInput!\n $condition: ModelAgreementConditionInput\n ) {\n createAgreement(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n userId\n accountId\n agreementTypes\n agreementKey\n }\n }\n`;\n\n// Class mutations\n\nexport const createClass = /* GraphQL */ gql`\n mutation CreateClass(\n $input: CreateClassInput!\n $condition: ModelClassConditionInput\n ) {\n createClass(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n courseId\n accountId\n ownerId\n userId \n termBegin\n termEnd\n seatsPurchased\n seatsFilled\n couponCode\n assignmentSchedule\n }\n }\n`;\nexport const updateClass = /* GraphQL */ gql`\n mutation UpdateClass(\n $input: UpdateClassInput!\n $condition: ModelClassConditionInput\n ) {\n updateClass(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n courseId\n accountId\n ownerId\n userId\n termBegin\n termEnd\n seatsPurchased\n seatsFilled\n couponCode\n assignmentSchedule\n }\n }\n`;\nexport const deleteClass = /* GraphQL */ gql`\n mutation DeleteClass(\n $input: DeleteClassInput!\n $condition: ModelClassConditionInput\n ) {\n deleteClass(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n courseId\n accountId\n ownerId\n userId\n termBegin\n termEnd\n seatsPurchased\n seatsFilled\n couponCode\n assignmentSchedule\n }\n }\n`;\n\n// Course mutations\n\nexport const createCourse = /* GraphQL */ gql`\n mutation CreateCourse(\n $input: CreateCourseInput!\n $condition: ModelCourseConditionInput\n ) {\n createCourse(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n title\n description\n coverUrl\n details\n publishDate\n sunsetDate\n lessonCount\n creditHours\n isFree\n lessons\n handoutUrl\n }\n }\n`;\nexport const updateCourse = /* GraphQL */ gql`\n mutation UpdateCourse(\n $input: UpdateCourseInput!\n $condition: ModelCourseConditionInput\n ) {\n updateCourse(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n title\n description\n coverUrl\n details\n publishDate\n sunsetDate\n lessonCount\n creditHours\n isFree\n lessons\n handoutUrl\n }\n }\n`;\nexport const deleteCourse = /* GraphQL */ gql`\n mutation DeleteCourse(\n $input: DeleteCourseInput!\n $condition: ModelCourseConditionInput\n ) {\n deleteCourse(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n title\n description\n coverUrl\n details\n publishDate\n sunsetDate\n lessonCount\n creditHours\n isFree\n lessons\n handoutUrl\n }\n }\n`;\n\n// Registration mutations\n\nexport const createRegistration = /* GraphQL */ gql`\n mutation CreateRegistration(\n $input: CreateRegistrationInput!\n $condition: ModelRegistrationConditionInput\n ) {\n createRegistration(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n accountId\n classId\n userId\n classStatus\n classProgress\n lessonNumber\n lessonId \n lessonStatus \n videoProgress\n answers\n score\n startedAt\n endsAt\n completedAt\n lessonsAssigned\n nextAssignmentAt\n }\n }\n`;\nexport const updateRegistration = /* GraphQL */ gql`\n mutation UpdateRegistration(\n $input: UpdateRegistrationInput!\n $condition: ModelRegistrationConditionInput\n ) {\n updateRegistration(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n accountId\n classId\n userId\n classStatus\n classProgress\n lessonNumber\n lessonId\n lessonStatus\n videoProgress\n answers\n score\n startedAt\n endsAt\n completedAt\n lessonsAssigned\n nextAssignmentAt\n }\n }\n`;\nexport const deleteRegistration = /* GraphQL */ gql`\n mutation DeleteRegistration(\n $input: DeleteRegistrationInput!\n $condition: ModelRegistrationConditionInput\n ) {\n deleteRegistration(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n accountId\n classId\n userId\n classStatus\n classProgress\n lessonNumber\n lessonId\n lessonStatus\n videoProgress\n answers\n score\n startedAt\n endsAt\n completedAt\n lessonsAssigned\n nextAssignmentAt\n }\n }\n`;\n\n// User mutations\n\nexport const createUser = /* GraphQL */ gql`\n mutation CreateUser(\n $input: CreateUserInput!\n $condition: ModelUserConditionInput\n ) {\n createUser(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n invitedAt\n accountId\n firstName\n lastName\n email\n phone\n jobTitle\n userStatus\n active \n role\n customerId\n }\n }\n`;\nexport const updateUser = /* GraphQL */ gql`\n mutation UpdateUser(\n $input: UpdateUserInput!\n $condition: ModelUserConditionInput\n ) {\n updateUser(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n invitedAt \n accountId\n firstName\n lastName\n email\n phone\n jobTitle\n userStatus\n active\n role\n customerId \n }\n }\n`;\nexport const deleteUser = /* GraphQL */ gql`\n mutation DeleteUser(\n $input: DeleteUserInput!\n $condition: ModelUserConditionInput\n ) {\n deleteUser(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n invitedAt \n accountId\n firstName\n lastName\n email\n phone\n jobTitle\n userStatus\n active \n role\n customerId \n }\n }\n`;\n\n// ActivityLog\n\nexport const createActivity = /* GraphQL */ gql`\n mutation CreateActivity(\n $input: CreateActivityInput!\n $condition: ModelActivityConditionInput\n ) {\n createActivity(input: $input, condition: $condition) {\n id\n createdAt\n updatedAt\n accountId\n userId\n activityDate\n activityType\n objectId\n values\n }\n }\n`;\n","import * as APITypes from \"../API\"\nimport { GraphQLResult } from '@aws-amplify/api/lib/types/index'\nimport {API, Auth, graphqlOperation} from \"aws-amplify\"\nimport { print as gqlToString } from \"graphql\"\nimport ControlTower, {Routes} from \"../components/ControlTower\";\nimport Logger from \"../components/Logger\";\nimport * as CustomQueries from './CustomQueries'\nimport * as CustomMutations from './CustomMutations'\nimport {getErrorMessage} from \"../stores/StoreUtilities\";\n\nclass LearningAPI {\n\n // Account methods\n\n async getAccount(id: string) {\n const query = gqlToString(CustomQueries.getAccount)\n const variables = {\"id\": id}\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.getAccount error\", err.message, variables)\n throw err\n })\n if (data as APITypes.GetAccountQuery && (data as APITypes.GetAccountQuery).getAccount) {\n return (data as APITypes.GetAccountQuery).getAccount\n } else {\n return null\n }\n }\n\n async getAccountUsers(id: string) {\n const query = gqlToString(CustomQueries.getAccountUsers)\n const variables = {\"id\": id}\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.getAccountUsers error\", err.message, variables)\n throw err\n })\n if (data as APITypes.GetAccountQuery && (data as APITypes.GetAccountQuery).getAccount) {\n return (data as APITypes.GetAccountQuery).getAccount\n } else {\n return null\n }\n }\n\n async listAccounts(filter?: APITypes.ModelAccountFilterInput) {\n const query = gqlToString(CustomQueries.listAccounts)\n const variables = {\"filter\": filter, \"limit\": 10000}\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.listAccounts error\", err.message, variables)\n throw err\n })\n if (data as APITypes.ListAccountsQuery && (data as APITypes.ListAccountsQuery).listAccounts) {\n return (data as APITypes.ListAccountsQuery).listAccounts\n } else {\n return null\n }\n }\n\n async createAccount(input: APITypes.CreateAccountInput) {\n const query = gqlToString(CustomMutations.createAccount)\n const variables = {input}\n try {\n const data = await this.makeQuery(query, variables)\n if (data as APITypes.CreateAccountMutation && (data as APITypes.CreateAccountMutation).createAccount) {\n const accountData = (data as APITypes.CreateAccountMutation).createAccount\n return accountData\n } else {\n throw new Error(`Call to create account does not contain data: ${data}`)\n }\n } catch (e) {\n Logger.error(\"LearningAPI.createAccount error\", getErrorMessage(e), input)\n return null\n }\n }\n\n async updateAccount(input: APITypes.UpdateAccountInput) {\n const query = gqlToString(CustomMutations.updateAccount)\n const variables = {\"input\": input}\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.updateAccount error\", err.message, input)\n throw err\n })\n if (data as APITypes.UpdateAccountMutation) {\n return (data as APITypes.UpdateAccountMutation).updateAccount\n } else {\n return null\n }\n }\n\n async deleteAccount(id: string) {\n const query = gqlToString(CustomMutations.deleteAccount)\n const input: APITypes.DeleteAccountInput = {\n id\n }\n const data = await this.makeQuery(query, {input})\n .catch(err => {\n Logger.error(\"LearningAPI.deleteAccount error\", err.message, input)\n throw err\n })\n if (data) {\n return (data as APITypes.DeleteAccountMutation).deleteAccount\n }\n return null\n }\n\n // Agreement methods\n\n async createAgreement(input: APITypes.CreateAgreementInput) {\n const query = gqlToString(CustomMutations.createAgreement)\n const variables = { input }\n try {\n const data = await this.makeQuery(query, variables)\n if (data as APITypes.CreateAgreementMutation && (data as APITypes.CreateAgreementMutation).createAgreement) {\n const AgreementData = (data as APITypes.CreateAgreementMutation).createAgreement\n return AgreementData\n } else {\n throw new Error(`Call to create Agreement does not contain data: ${data}`)\n }\n } catch (e) {\n Logger.error(\"GovGigAPI.createAgreement error\", getErrorMessage(e), input)\n return null\n }\n }\n\n // Class methods\n\n async createClass(input: APITypes.CreateClassInput) {\n const query = gqlToString(CustomMutations.createClass)\n const variables = {input}\n try {\n const data = await this.makeQuery(query, variables)\n if (data as APITypes.CreateClassMutation && (data as APITypes.CreateClassMutation).createClass) {\n const result = (data as APITypes.CreateClassMutation).createClass\n return result\n } else {\n throw new Error(`Call to create class does not contain data: ${data}`)\n }\n } catch (e) {\n Logger.error(\"LearningAPI.createClass error\", getErrorMessage(e), input)\n return null\n }\n }\n\n async getClass(id: string) {\n const query = gqlToString(CustomQueries.getClass)\n const variables = {\"id\": id}\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.getClass error\", err.message, variables)\n throw err\n })\n if (data as APITypes.GetClassQuery && (data as APITypes.GetClassQuery).getClass) {\n return (data as APITypes.GetClassQuery).getClass\n } else {\n return null\n }\n }\n\n async updateClass(input: APITypes.UpdateClassInput) {\n const query = gqlToString(CustomMutations.updateClass)\n const variables = {\"input\": input}\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.updateClass error\", err.message, input)\n throw err\n })\n if (data as APITypes.UpdateClassMutation) {\n return (data as APITypes.UpdateClassMutation).updateClass\n } else {\n return null\n }\n }\n\n // User methods\n\n async getUser (userId: string) {\n const query = gqlToString(CustomQueries.getUser)\n const variables = { \"id\": userId }\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.getUser error\", err.message, variables)\n throw err\n })\n if (data as APITypes.GetUserQuery && (data as APITypes.GetUserQuery).getUser) {\n return (data as APITypes.GetUserQuery).getUser\n } else {\n return null\n }\n }\n\n async createUser (input: APITypes.CreateUserInput) {\n const query = gqlToString(CustomMutations.createUser)\n const variables = {input}\n try {\n const data = await this.makeQuery(query, variables)\n if (data as APITypes.CreateAccountMutation && (data as APITypes.CreateUserMutation).createUser) {\n const userData = (data as APITypes.CreateUserMutation).createUser\n return userData\n } else {\n throw new Error(`Call to create user does not contain data: ${data}`)\n }\n } catch (e) {\n Logger.error(\"LearningAPI.createUser error\", getErrorMessage(e), input)\n return null\n }\n }\n\n async updateUser(input: APITypes.UpdateUserInput) {\n if (input.email) {\n input.email = input.email.toLowerCase()\n }\n const query = gqlToString(CustomMutations.updateUser)\n const variables = {\"input\": input}\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.updateUser error\", err.message, input)\n throw err\n })\n if (data as APITypes.UpdateUserMutation) {\n return (data as APITypes.UpdateUserMutation).updateUser\n } else {\n return null\n }\n }\n\n async deleteUser(id: string) {\n const query = gqlToString(CustomMutations.deleteUser)\n const input: APITypes.DeleteUserInput = {\n id\n }\n const data = await this.makeQuery(query, {input})\n .catch(err => {\n Logger.error(\"LearningAPI.deleteUser error\", err.message, input)\n throw err\n })\n if (data) {\n return (data as APITypes.DeleteUserMutation).deleteUser\n }\n return null\n }\n\n // Course methods\n\n async listCourses(filter?: APITypes.ModelCourseFilterInput) {\n const query = gqlToString(CustomQueries.listCourses)\n const variables = {\"filter\": filter, \"limit\": 1000}\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.listCourses error\", err.message, variables)\n throw err\n })\n if (data as APITypes.ListCoursesQuery && (data as APITypes.ListCoursesQuery).listCourses) {\n return (data as APITypes.ListCoursesQuery).listCourses\n } else {\n return null\n }\n }\n\n async getCourse(id: string) {\n const query = gqlToString(CustomQueries.getCourse)\n const variables = {\"id\": id}\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.getCourse error\", err.message, variables)\n throw err\n })\n if (data as APITypes.GetCourseQuery && (data as APITypes.GetCourseQuery).getCourse) {\n return (data as APITypes.GetCourseQuery).getCourse\n } else {\n return null\n }\n }\n\n async createCourse(input: APITypes.CreateCourseInput) {\n const query = gqlToString(CustomMutations.createCourse)\n const variables = {input}\n try {\n const data = await this.makeQuery(query, variables)\n if (data as APITypes.CreateCourseMutation && (data as APITypes.CreateCourseMutation).createCourse) {\n const result = (data as APITypes.CreateCourseMutation).createCourse\n return result\n } else {\n throw new Error(`Call to create course does not contain data: ${data}`)\n }\n } catch (e) {\n Logger.error(\"LearningAPI.createCourse error\", getErrorMessage(e), input)\n return null\n }\n }\n\n async updateCourse(input: APITypes.UpdateCourseInput) {\n const query = gqlToString(CustomMutations.updateCourse)\n const variables = {\"input\": input}\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.updateCourse error\", err.message, input)\n throw err\n })\n if (data as APITypes.UpdateCourseMutation) {\n return (data as APITypes.UpdateCourseMutation).updateCourse\n } else {\n return null\n }\n }\n\n // Registration methods\n\n async createRegistration(input: APITypes.CreateRegistrationInput) {\n const query = gqlToString(CustomMutations.createRegistration)\n const variables = {input}\n try {\n const data = await this.makeQuery(query, variables)\n if (data as APITypes.CreateRegistrationMutation && (data as APITypes.CreateRegistrationMutation).createRegistration) {\n const result = (data as APITypes.CreateRegistrationMutation).createRegistration\n return result\n } else {\n throw new Error(`Call to create account does not contain data: ${data}`)\n }\n } catch (e) {\n Logger.error(\"LearningAPI.createRegistration error\", getErrorMessage(e), input)\n return null\n }\n }\n\n async updateRegistration(input: APITypes.UpdateRegistrationInput) {\n const query = gqlToString(CustomMutations.updateRegistration)\n const variables = {\"input\": input}\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.updateRegistration error\", err.message, input)\n throw err\n })\n if (data as APITypes.UpdateRegistrationMutation) {\n return (data as APITypes.UpdateRegistrationMutation).updateRegistration\n } else {\n return null\n }\n }\n\n async deleteRegistration(id: string) {\n const input: APITypes.DeleteRegistrationInput = {\n id: id\n }\n const query = gqlToString(CustomMutations.deleteRegistration)\n const variables = {\"input\": input}\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.deleteRegistration error\", err.message, input)\n throw err\n })\n if (data as APITypes.DeleteRegistrationMutation) {\n return (data as APITypes.DeleteRegistrationMutation).deleteRegistration\n } else {\n return null\n }\n }\n\n // Activity methods\n\n async listAccountActivity(accountId: string, filter?: APITypes.ModelActivityFilterInput) {\n const query = gqlToString(CustomQueries.listAccountActivity)\n const variables = {\"id\": accountId, \"filter\": filter, \"limit\": 10000}\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.listAccountActivity error\", err.message, variables)\n throw err\n })\n if (data as APITypes.GetAccountQuery && (data as APITypes.GetAccountQuery).getAccount &&\n (data as APITypes.GetAccountQuery).getAccount!.activity) {\n return (data as APITypes.GetAccountQuery).getAccount!.activity\n } else {\n return null\n }\n }\n\n async listActivityByDate(date: string, filter?: APITypes.ModelActivityFilterInput) {\n const query = gqlToString(CustomQueries.listActivityByDate)\n const variables = {\"activityDate\": date, \"filter\": filter, \"limit\": 1000}\n const data = await this.makeQuery(query, variables)\n .catch(err => {\n Logger.error(\"LearningAPI.listActivityByDate error\", err.message, variables)\n throw err\n })\n if (data as APITypes.ListActivityByDateQuery && (data as APITypes.ListActivityByDateQuery).listActivityByDate) {\n return (data as APITypes.ListActivityByDateQuery).listActivityByDate!\n } else {\n return null\n }\n }\n\n async createActivity(input: APITypes.CreateActivityInput) {\n const query = gqlToString(CustomMutations.createActivity)\n const variables = {input}\n try {\n const data = await this.makeQuery(query, variables)\n if (data as APITypes.CreateActivityMutation && (data as APITypes.CreateActivityMutation).createActivity) {\n const result = (data as APITypes.CreateActivityMutation).createActivity\n return result\n } else {\n throw new Error(`Call to create activity does not contain data: ${data}`)\n }\n } catch (e) {\n Logger.error(\"LearningAPI.createActivity error\", getErrorMessage(e), input)\n return null\n }\n }\n\n // Helper methods\n\n async makeQuery(query: string, variables?: {}) {\n try {\n await this.checkAuthentication()\n const operation = graphqlOperation(query, variables)\n // console.log(JSON.stringify(operation))\n const result = await API.graphql(operation)\n if (result as GraphQLResult) {\n const data = (result as GraphQLResult).data\n return data\n } else {\n return null\n }\n } catch (err: any) {\n // console.log(\"makeQuery error\", err)\n if (err.message) {\n throw err\n } else if (err.errors && err.errors.length > 0) {\n throw new Error(err.errors[0].message)\n } else {\n throw new Error(`Unknown error: ${err}`)\n }\n }\n }\n\n async checkAuthentication() {\n try{\n const cognitoUser = await Auth.currentAuthenticatedUser()\n if (cognitoUser) {\n return\n }\n } catch (err) {\n // Logger.debug(\"checkAuthentication err: \" + err.message)\n }\n\n ControlTower.route(Routes.signout)\n }\n\n}\n\nexport default LearningAPI","import {observable} from \"mobx\";\n\nclass Progress {\n\n @observable isVisible: boolean = false\n name: string = ''\n\n show = (name: string) => {\n this.isVisible = true\n this.name = name\n }\n\n hide = (name: string) => {\n this.isVisible = false\n }\n}\n\nexport default Progress","import {observable} from \"mobx\";\n\nclass Alert {\n\n @observable open: boolean = false\n @observable title: string = ''\n @observable message: string = ''\n\n onClose: any\n\n show = (title: string, message: string, onClose?: any) => {\n this.open = true\n this.title = title\n this.message = message\n this.onClose = onClose\n }\n\n close = () => {\n this.open = false\n if (this.onClose) {\n this.onClose()\n }\n }\n}\n\nexport default Alert","import {observable} from \"mobx\";\nimport axios from \"axios\"\nimport {Logger} from \"../Logger\";\nimport * as config from 'react-global-configuration';\nimport * as React from \"react\";\nimport {Link} from \"@reach/router\";\n\nexport type NotifyVariant =\n | \"success\"\n | \"info\"\n | \"warning\"\n | \"error\";\n\nclass Notify {\n\n @observable open: boolean = false\n @observable variant: NotifyVariant = \"success\"\n @observable message: string = ''\n\n onClose: any\n interval: any\n\n show = (variant: NotifyVariant, message: any, onClose?: any) => {\n this.open = true\n this.variant = variant\n this.message = message\n this.onClose = onClose\n }\n\n close = () => {\n this.open = false\n if (this.onClose) {\n this.onClose()\n }\n }\n\n onClickReload = () => {\n this.close()\n window.location.reload()\n }\n\n\n checkForNewBuild = () => {\n console.log(\"checkForNewBuild\")\n if (this.open) {\n // Don't load on top of another notification\n return\n }\n const notify = this\n const url = `/build.txt`\n axios.get(url)\n .then(function (response) {\n if (response && response.data && response.data.length > 0)\n {\n const currentBuild = config.get(\"build\")\n const newBuild = response.data.replace(\"\\n\", \"\").trim()\n if (newBuild && newBuild.length > 0 && currentBuild && currentBuild.length > 0 &&\n newBuild > currentBuild) {\n const message = \n An updated version is available.  \n Click to reload.\n ;\n notify.show(\"warning\", message)\n }\n }\n })\n .catch(function (error) {\n Logger.debug(\"Error getting build\", error);\n if (error.response && error.response.status === 404) {\n // Stop waiting if no build file is found\n clearInterval(notify.interval)\n }\n })\n\n if (!this.interval) {\n // Set a recurring interval\n const checkBuildInterval = config.get(\"checkBuildInterval\")\n if (checkBuildInterval) {\n this.interval = setInterval(this.checkForNewBuild, checkBuildInterval)\n }\n }\n }\n}\n\nexport default Notify","import {observable} from \"mobx\";\n\ntype ConfirmCallback = () => boolean | Promise\ntype CancelCallback = () => void\n\nclass Confirm {\n\n @observable open: boolean = false\n @observable title: string = ''\n @observable content: any\n @observable buttons?: string[]\n\n onConfirm?: ConfirmCallback\n onCancel?: CancelCallback\n\n show = (title: string, content: any, buttons?: string[], onConfirm?: ConfirmCallback, onCancel?: CancelCallback) => {\n this.open = true\n this.title = title\n this.content = content\n this.onCancel = onCancel\n this.onConfirm = onConfirm\n this.buttons = buttons\n }\n\n confirm = () => {\n if (this.onConfirm) {\n const result = this.onConfirm()\n if (result instanceof Promise && result as Promise) {\n (result as Promise).then((confirmed:boolean) => {\n this.open = !confirmed\n })\n } else {\n this.open = !result\n }\n }\n }\n\n cancel = () => {\n this.open = false\n if (this.onCancel) {\n this.onCancel()\n }\n }\n}\n\nexport default Confirm","import LearningAPI from \"../apis/LearningAPI\";\nimport Account from \"../model/Account\";\nimport Course from \"../model/Course\";\nimport * as APITypes from \"../API\";\nimport BillingAPI from \"../apis/BillingAPI\";\n\nclass CourseStore {\n learningAPI: LearningAPI\n billingAPI: BillingAPI\n courseCache: Course[]\n\n constructor(options: any) {\n this.learningAPI = (options && options.learningAPI) ? options.learningAPI : null\n this.billingAPI = (options && options.billingAPI) ? options.billingAPI : null\n this.courseCache = []\n }\n\n async listCourses(filter?: APITypes.ModelCourseFilterInput) {\n try {\n if (this.courseCache.length > 0) {\n return this.courseCache\n }\n\n const result = await this.learningAPI.listCourses(filter)\n\n if (result && result.items) {\n this.courseCache = result.items.map((item: any) => new Course(item))\n }\n\n return [...this.courseCache]\n } catch (e) {\n throw new Error('listCourses failed')\n }\n }\n\n async getCourse(courseId: string) {\n const course = this.courseCache.find((c: Course) => {\n return c.id === courseId\n })\n\n if (course) {\n if (course.lessons.length === 0) {\n console.log(`Loading ${course.title} lessons`)\n const courseData = await this.learningAPI.getCourse(course.id)\n if (courseData && courseData.lessons && courseData.lessons) {\n course.loadLessons(courseData.lessons)\n }\n }\n }\n\n return course\n }\n\n async getCoursePrice(course: Course, account?: Account) {\n const products = await this.billingAPI.getProducts()\n .catch((err: any) => {\n console.log(\"Error getting stripe products\")\n })\n const prices = await this.billingAPI.getPrices()\n .catch((err: any) => {\n console.log(\"Error getting stripe prices\")\n })\n\n if (products && prices) {\n // console.log(JSON.stringify(products))\n // console.log(JSON.stringify(prices))\n\n const title = course.title.toLowerCase()\n const product = products.data.find((p: any) => p.name.toLowerCase() === title)\n if (product) {\n let price\n if (account) {\n const size = account.accountSize.toString()\n price = prices.data.find((p: any) => p.product === product.id && p.nickname === size)\n }\n\n if (!price) {\n price = prices.data.find((p: any) => p.product === product.id)\n }\n return price\n }\n }\n\n return null\n }\n\n async getCoupon(id: string) {\n const result = await this.billingAPI.getCoupon(id)\n return result\n }\n\n async createCourse(input: APITypes.CreateCourseInput) {\n const result = await this.learningAPI!.createCourse(input)\n if (result) {\n const course = new Course(result)\n this.updateCache(course)\n return course\n } else {\n return null\n }\n }\n\n async updateCourse(input: APITypes.UpdateCourseInput) {\n const result = await this.learningAPI!.updateCourse(input)\n if (result) {\n const course = new Course(result)\n this.updateCache(course)\n return course\n } else {\n return null\n }\n }\n\n updateCache = (course: Course) => {\n const index = this.courseCache.findIndex((c: Course) => c.id === course.id)\n if (index >= 0) {\n this.courseCache[index] = course\n } else {\n this.courseCache.push(course)\n }\n }\n}\n\nexport default CourseStore","import { Storage } from 'aws-amplify';\nimport CacheStore from \"./CacheStore\";\n\nconst S3CACHE_EXPIRE_SECS = 3600\n\nclass S3UrlCacheStore extends CacheStore {\n\n constructor () {\n super(S3CACHE_EXPIRE_SECS, S3UrlCacheStore.s3Resolver)\n }\n\n static s3Resolver = async (key: string): Promise => {\n const url = await Storage.get(key, {expires: S3CACHE_EXPIRE_SECS})\n if (url as string) {\n return (url as string)\n } else {\n return undefined\n }\n }\n\n removeKey = (key: string) => {\n this.remove(key)\n }\n}\n\nexport default S3UrlCacheStore","interface ICacheItem {\n item: any\n expires: number\n}\n\ntype CacheResolver = (key: string) => Promise\n\nclass CacheStore {\n\n private _expireSecs: number = 60\n private _resolver?: CacheResolver\n private _cache = {}\n \n constructor (expireSecs: number, resolver?: CacheResolver) {\n this._expireSecs = expireSecs\n this._resolver = resolver\n }\n \n put = (key: string, item: CacheType) => {\n this._cache[key] = { item, expires: this.getExpires()}\n }\n \n get = async (key: string): Promise => {\n const cacheItem = this._cache[key]\n if (cacheItem && !this.isExpired(cacheItem)) {\n return cacheItem.item\n } else {\n return await this.resolve(key)\n }\n }\n \n resolve = async (key: string): Promise => {\n if (this._resolver) {\n const item = await this._resolver(key)\n if (item) {\n this._cache[key] = {item, expires: this.getExpires()}\n }\n return item\n } else {\n return undefined\n }\n }\n\n remove = (key: string) => {\n if (this._cache[key]) {\n this._cache[key] = undefined\n }\n }\n\n removeAll = () => {\n this._cache = {}\n }\n\n removeExpired = () => {\n // TODO\n }\n\n private getExpires(): number {\n const now = new Date().getTime()\n return now + this._expireSecs * 1000\n }\n\n private isExpired = (cacheItem: ICacheItem) => {\n const now = new Date().getTime()\n return (cacheItem.expires <= now)\n }\n\n}\n\nexport default CacheStore","import {observable} from \"mobx\";\nimport Tracking from \"../Tracking\";\n\nclass PrivacyPolicy {\n\n @observable open: boolean = false\n\n onClose: any\n\n show = (onClose?: any) => {\n this.open = true\n this.onClose = onClose\n Tracking.modalView(\"PrivacyPolicyDialog\")\n }\n\n close = () => {\n this.open = false\n if (this.onClose) {\n this.onClose()\n }\n }\n}\n\nexport default PrivacyPolicy","import { observable } from \"mobx\";\nimport Tracking from \"../Tracking\";\n\nclass TermsOfUse {\n @observable open: boolean = false\n\n onClose: any\n\n show = (onClose?: any) => {\n this.open = true\n this.onClose = onClose\n Tracking.modalView(\"TermsOfUseDialog\")\n }\n\n close = () => {\n this.open = false\n if (this.onClose) {\n this.onClose()\n }\n }\n\n}\n\nexport default TermsOfUse","import { API } from \"aws-amplify\"\nimport {getErrorMessage} from \"../stores/StoreUtilities\";\nimport Account from \"../model/Account\";\nimport {Logger} from \"../components/Logger\";\nimport Invoice from \"../model/Invoice\";\nimport User from \"../model/User\";\n\nclass BillingAPI {\n\n getProducts = async () => {\n try {\n const response = await API.get(\"BillingAPI\", \"/products\", {})\n return response\n } catch (err) {\n const message = getErrorMessage(err)\n Logger.error(\"BillingAPI.getProducts error\", message)\n throw new Error(message)\n }\n }\n\n getPrices = async () => {\n try {\n const response = await API.get(\"BillingAPI\", \"/prices\", {})\n return response\n } catch (err) {\n const message = getErrorMessage(err)\n Logger.error(\"BillingAPI.getPrices error\", message)\n throw new Error(message)\n }\n }\n\n getPlans = async () => {\n try {\n const response = await API.get(\"BillingAPI\", \"/plans\", {})\n return response\n } catch (err) {\n const message = getErrorMessage(err)\n Logger.error(\"BillingAPI.getPlans error\", message)\n throw new Error(message)\n }\n }\n\n getCoupons = async () => {\n try {\n const response = await API.get(\"BillingAPI\", \"/coupons\", {})\n return response\n } catch (err) {\n const message = getErrorMessage(err)\n Logger.error(\"BillingAPI.getCoupons error\", message)\n throw new Error(message)\n }\n }\n\n getCoupon = async (id: string) => {\n try {\n const response = await API.get(\"BillingAPI\", `/coupons/${id}`, {})\n return response\n } catch (err) {\n const message = getErrorMessage(err)\n Logger.error(\"BillingAPI.getCoupon error\", message)\n throw new Error(message)\n }\n }\n\n getCustomer = async (id: string) => {\n try {\n const response = await API.get(\"BillingAPI\", `/customers/${id}`, {})\n return response\n } catch (err) {\n const message = getErrorMessage(err)\n Logger.error(\"BillingAPI.getCustomer error\", message)\n throw new Error(message)\n }\n }\n\n createInvoice = async (user: User, account: Account, invoice: Invoice, source?: string) => {\n const init = {\n body: {\n user: {\n id: user.id,\n firstName: user.firstName,\n lastName: user.lastName,\n email: user.email,\n phone: user.phone\n },\n account: {\n id: account.id,\n name: account.name,\n address: account.address,\n city: account.city,\n state: account.state,\n postalCode: account.postalCode\n },\n invoice,\n source\n }\n }\n try {\n const response = await API.post(\"BillingAPI\", \"/invoices\", init)\n return response\n } catch (err) {\n const message = getErrorMessage(err)\n Logger.debug(\"BillingAPI.createInvoice error\", message, init.body)\n throw new Error(message)\n }\n }\n\n deleteSource = async (customerId: string, sourceId: string) => {\n try {\n const response = await API.del(\"BillingAPI\", `/sources/${customerId}/${sourceId}`, {})\n return response\n } catch (err) {\n const message = getErrorMessage(err)\n Logger.error(\"BillingAPI.deleteSource error\", message)\n throw new Error(message)\n }\n\n }\n\n getCharges = async (customerId: string) => {\n try {\n const response = await API.get(\"BillingAPI\", `/charges/${customerId}`, {})\n return response\n } catch (err) {\n const message = getErrorMessage(err)\n Logger.error(\"BillingAPI.getCharges error\", message)\n throw new Error(message)\n }\n }\n\n\n\n}\n\nexport default BillingAPI","import { API } from \"aws-amplify\"\nimport {getErrorMessage} from \"../stores/StoreUtilities\";\nimport {Logger} from \"../components/Logger\";\n\nclass CertificateAPI {\n\n create = async (certificateName: string, formData: any) => {\n\n const init = {\n responseType: 'application/json',\n body: {\n certificateName: certificateName,\n formData: formData\n },\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n }\n }\n\n try {\n const response = await API.post(\"CertificateAPI\", \"/certificate\", init)\n Logger.debug(`CertificateAPI.create reply result = ${response.result}`)\n const arrayBuffer = this.base64ToArrayBuffer(response.body)\n const blob = new Blob([arrayBuffer], {type: 'application/pdf'})\n return blob\n } catch (err) {\n const message = getErrorMessage(err)\n Logger.debug(\"CertificateAPI.create error\", message, init.body)\n throw new Error(message)\n }\n }\n\n base64ToArrayBuffer(data: any) {\n const binaryString = window.atob(data);\n const binaryLen = binaryString.length;\n const bytes = new Uint8Array(binaryLen);\n for (let i = 0; i < binaryLen; i++) {\n const ascii = binaryString.charCodeAt(i);\n bytes[i] = ascii;\n }\n return bytes;\n };\n\n\n}\n\nexport default CertificateAPI","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport Logger from \"./components/Logger\";\nimport LearningAPI from \"./apis/LearningAPI\";\nimport UserStore from \"./stores/UserStore\";\nimport {Provider} from \"mobx-react\";\nimport Progress from \"./components/Progress\";\nimport Alert from \"./components/alert/Alert\";\nimport Notify from \"./components/notify/Notify\";\nimport Confirm from \"./components/confirm/Confirm\";\nimport AccountStore from \"./stores/AccountStore\";\nimport CourseStore from \"./stores/CourseStore\";\nimport S3UrlCacheStore from \"./stores/S3UrlCacheStore\";\nimport Tracking from \"./components/Tracking\";\nimport config from \"react-global-configuration\";\nimport PrivacyPolicy from \"./components/page/PrivacyPolicy\";\nimport TermsOfUse from \"./components/page/TermsOfUse\";\nimport BillingAPI from \"./apis/BillingAPI\";\nimport CertificateAPI from \"./apis/CertificateAPI\";\n\nLogger.init()\n\nconst learningAPI = new LearningAPI()\nconst billingAPI = new BillingAPI()\nconst certificateAPI = new CertificateAPI()\n\nconst s3UrlCacheStore = new S3UrlCacheStore()\n\nconst courseStore = new CourseStore({\n learningAPI,\n billingAPI,\n})\n\nconst userStore = new UserStore({\n learningAPI,\n billingAPI,\n})\n\nconst accountStore = new AccountStore({\n learningAPI,\n courseStore,\n billingAPI,\n certificateAPI\n})\n\nconst resources = {\n confirm: new Confirm(),\n notify: new Notify(),\n alert: new Alert(),\n progress: new Progress(),\n privacyPolicy: new PrivacyPolicy(),\n termsOfUse: new TermsOfUse(),\n userStore,\n accountStore,\n courseStore,\n s3UrlCacheStore\n}\n\nconst trackingId = config.get(\"google.trackingId\")\nif (trackingId && trackingId !== \"\" && trackingId !== \"NONE\") {\n Tracking.initialize(trackingId, config.get(\"google.options\"))\n}\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}