{"version":3,"file":"ApplicationForm.js","mappings":"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","sources":["webpack://@hedtech/powercampus-self-service/webpack/runtime/chunk loaded","webpack://@hedtech/powercampus-self-service/./ClientApp/Components/Generic/Print.tsx","webpack://@hedtech/powercampus-self-service/./ClientApp/Types/Enum/PaymentOrigin.ts","webpack://@hedtech/powercampus-self-service/./ClientApp/Components/Generic/PaymentDetailModal.tsx","webpack://@hedtech/powercampus-self-service/./ClientApp/Requests/Generic/ProcessPaymentModal.ts","webpack://@hedtech/powercampus-self-service/./ClientApp/Components/Generic/ProcessPaymentModal.tsx","webpack://@hedtech/powercampus-self-service/./ClientApp/Types/Enum/AuthStatus.ts","webpack://@hedtech/powercampus-self-service/./ClientApp/Requests/Generic/SignIn.ts","webpack://@hedtech/powercampus-self-service/./ClientApp/Components/Generic/SignIn.tsx","webpack://@hedtech/powercampus-self-service/./ClientApp/Types/Generic/IPasswordPolicy.ts","webpack://@hedtech/powercampus-self-service/./ClientApp/Requests/Generic/SignUp.ts","webpack://@hedtech/powercampus-self-service/./ClientApp/Components/Generic/SignUp.tsx","webpack://@hedtech/powercampus-self-service/./ClientApp/Components/Admissions/ApplicationForm/AddressSearchModal.tsx","webpack://@hedtech/powercampus-self-service/./ClientApp/Components/Admissions/ApplicationForm/FieldsHandler.tsx","webpack://@hedtech/powercampus-self-service/./ClientApp/Components/Admissions/ApplicationForm/FieldsGroupHandler.tsx","webpack://@hedtech/powercampus-self-service/./ClientApp/Components/Admissions/ApplicationForm/ApplicationCompletedModal.tsx","webpack://@hedtech/powercampus-self-service/./ClientApp/Components/Admissions/ApplicationForm/ApplicationHandler.tsx","webpack://@hedtech/powercampus-self-service/./ClientApp/Components/Admissions/ApplicationForm/Attachments.tsx","webpack://@hedtech/powercampus-self-service/./ClientApp/Components/Admissions/ApplicationForm/ConfirmationSavedModal.tsx","webpack://@hedtech/powercampus-self-service/./ClientApp/Components/Admissions/ApplicationForm/ETSSearchModal.tsx","webpack://@hedtech/powercampus-self-service/./ClientApp/Requests/Admissions/ApplicationForm.ts","webpack://@hedtech/powercampus-self-service/./ClientApp/Requests/Admissions/Applications.ts","webpack://@hedtech/powercampus-self-service/./ClientApp/Components/Admissions/ApplicationForm/ApplicationFormView.tsx","webpack://@hedtech/powercampus-self-service/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://@hedtech/powercampus-self-service/webpack/bootstrap","webpack://@hedtech/powercampus-self-service/webpack/runtime/compat get default export","webpack://@hedtech/powercampus-self-service/webpack/runtime/define property getters","webpack://@hedtech/powercampus-self-service/webpack/runtime/global","webpack://@hedtech/powercampus-self-service/webpack/runtime/hasOwnProperty shorthand","webpack://@hedtech/powercampus-self-service/webpack/runtime/make namespace object","webpack://@hedtech/powercampus-self-service/webpack/runtime/node module decorator","webpack://@hedtech/powercampus-self-service/webpack/runtime/runtimeId","webpack://@hedtech/powercampus-self-service/webpack/runtime/jsonp chunk loading","webpack://@hedtech/powercampus-self-service/webpack/runtime/nonce","webpack://@hedtech/powercampus-self-service/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/* Copyright 2019 Ellucian Company L.P. and its affiliates.\r\n * File: Print.tsx\r\n * Type: Presentation component */\r\n\r\n// #region Imports\r\nimport React, { useState } from 'react';\r\n\r\n// Core components\r\nimport Button from '@hedtech/powercampus-design-system/react/core/Button';\r\nimport Hidden from '@hedtech/powercampus-design-system/react/core/Hidden';\r\nimport Icon from '@hedtech/powercampus-design-system/react/core/Icon';\r\nimport IconButton from '@hedtech/powercampus-design-system/react/core/IconButton';\r\nimport Snackbar from '@hedtech/powercampus-design-system/react/core/Snackbar';\r\n\r\n// Types\r\nimport { ResultType } from '@hedtech/powercampus-design-system/types/ResultType';\r\nimport { IPrintResources } from '../../Types/Resources/Generic/IPrintResources';\r\n\r\n// #endregion Imports\r\n\r\n// #region Types\r\nexport interface IPrintProps {\r\n classNameButtonText?: string;\r\n classNameIconButton?: string;\r\n disabled?: boolean;\r\n lblPrint?: string;\r\n link: string;\r\n resources: IPrintResources;\r\n}\r\n// #endregion Types\r\n\r\n// #region Component\r\nconst Print: React.FC = (props: IPrintProps): JSX.Element => {\r\n const {\r\n classNameButtonText,\r\n classNameIconButton,\r\n disabled,\r\n lblPrint,\r\n link,\r\n resources\r\n } = props;\r\n\r\n const [open, setOpen] = useState(false);\r\n\r\n const onClickPrint = () => {\r\n setOpen(!open);\r\n window.location.assign(link);\r\n };\r\n\r\n const onClose = () => {\r\n setOpen(!open);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {lblPrint ? lblPrint : resources.lblPrint}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {resources.lblPrintProcess}\r\n \r\n )}\r\n open={open}\r\n type={ResultType.success}\r\n onClose={onClose}\r\n />\r\n \r\n );\r\n};\r\n// #endregion Component\r\n\r\n// Export: Component\r\nexport default Print;","/* Copyright 2019 Ellucian Company L.P. and its affiliates.\r\n * File: PaymentOrigin.ts */\r\n\r\nexport enum PaymentOrigin {\r\n Registration = 0,\r\n ConEdRegistration = 1,\r\n MakePayment = 2,\r\n TranscriptRequest = 3,\r\n OnlineDonation = 4,\r\n Application = 5,\r\n PowerCampusReceipt = 6,\r\n PowerCampusGift = 7,\r\n SharedAccessMakePayment = 8\r\n}","/* Copyright 2019 - 2021 Ellucian Company L.P. and its affiliates.\r\n * File: PaymentDetailModal.tsx\r\n * Type: Container component */\r\n\r\n// #region Imports\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\n// Core components\r\nimport Button, { ButtonGroup } from '@hedtech/powercampus-design-system/react/core/Button';\r\nimport Grid from '@hedtech/powercampus-design-system/react/core/Grid';\r\nimport Icon from '@hedtech/powercampus-design-system/react/core/Icon';\r\nimport IconButton from '@hedtech/powercampus-design-system/react/core/IconButton';\r\nimport Modal from '@hedtech/powercampus-design-system/react/core/Modal';\r\nimport RadioGroup from '@hedtech/powercampus-design-system/react/core/RadioGroup';\r\nimport Table, { TableBody, TableCell, TableFooter, TableHead, TableRow } from '@hedtech/powercampus-design-system/react/core/Table';\r\nimport Text from '@hedtech/powercampus-design-system/react/core/Text';\r\nimport TextField from '@hedtech/powercampus-design-system/react/core/TextField';\r\n\r\n// Internal components\r\nimport Print from './Print';\r\n\r\n// Helpers\r\nimport Constants from '@hedtech/powercampus-design-system/helpers/Constants';\r\nimport Format from '@hedtech/powercampus-design-system/helpers/Format';\r\nimport Tokens from '@hedtech/powercampus-design-system/react/core/styles/Tokens';\r\nimport { createStyles, Theme, withStyles, WithStyles } from '@hedtech/powercampus-design-system/react/core/styles/withStyles';\r\n\r\n// Types\r\nimport { IJsonResult } from '@hedtech/powercampus-design-system/types/IJsonResult';\r\nimport { ILogData } from '@hedtech/powercampus-design-system/types/ILogData';\r\nimport { IRadioOption } from '@hedtech/powercampus-design-system/types/IRadioOption';\r\nimport { PaymentOrigin } from '../../Types/Enum/PaymentOrigin';\r\nimport { IPaymentDiscountCoupon } from '../../Types/Payment/IPaymentDiscountCoupon';\r\nimport { IPaymentInfo } from '../../Types/Payment/IPaymentInfo';\r\nimport { IPaymentDetailModalResources } from '../../Types/Resources/Generic/IPaymentDetailModalResources';\r\nimport { IPrintResources } from '../../Types/Resources/Generic/IPrintResources';\r\n\r\n// Helpers\r\nimport LogData from '@hedtech/powercampus-design-system/helpers/LogData';\r\n\r\n// Requests\r\nimport RequestsLayout from '@hedtech/powercampus-design-system/requests/LayoutRequests';\r\nimport Resolver from '@hedtech/powercampus-design-system/helpers/Resolver';\r\n\r\n// State Management\r\nimport LayoutActions from '@hedtech/powercampus-design-system/flux/actions/LayoutActions';\r\n// #endregion Imports\r\n\r\n// #region Types\r\nexport interface IPaymentDetailModalProps {\r\n coupons: IPaymentDiscountCoupon[];\r\n enableOnlinePayment: boolean;\r\n open: boolean;\r\n paymentInfo: IPaymentInfo;\r\n paymentInfoNoChanges: IPaymentInfo;\r\n paymentMethod?: string;\r\n paymentOrigin: PaymentOrigin;\r\n titleName?: string;\r\n yearTerm?: string;\r\n onApplyCoupon?: () => void;\r\n onChangeCouponCode?: (event: any) => void;\r\n onChangePaymentAnotherAmount?: (event: any) => void;\r\n onChangePaymentMethod?: (event: any) => void;\r\n onClose: () => void;\r\n onPay: () => void;\r\n onRemoveCoupon?: (event: any) => void;\r\n}\r\n\r\ninterface IPaymentDetailModalRes extends IPaymentDetailModalResources {\r\n printing: IPrintResources;\r\n}\r\n\r\ninterface IPaymentDetailModalState {\r\n componentError: boolean;\r\n resources?: IPaymentDetailModalRes;\r\n}\r\n\r\nconst styles = (theme: Theme) => createStyles({\r\n amountContainer: {\r\n backgroundColor: Tokens.colorBrandNeutral200,\r\n height: '100px',\r\n marginBottom: Tokens.spacing50,\r\n paddingBottom: Tokens.spacing50,\r\n paddingLeft: Tokens.spacing40,\r\n paddingRight: Tokens.spacing40,\r\n paddingTop: Tokens.spacing50,\r\n width: 'auto'\r\n },\r\n discountApplied: {\r\n color: Tokens.colorTextAlertNeutral\r\n },\r\n footerPayment: {\r\n backgroundColor: Tokens.colorBrandNeutral200,\r\n paddingBottom: Tokens.spacing40,\r\n paddingTop: Tokens.spacing30\r\n },\r\n footerTextSpacing: {\r\n marginTop: Tokens.spacing30\r\n },\r\n instructionsContainer: {\r\n marginBottom: Tokens.sizingSmall,\r\n marginTop: Tokens.sizingSmall\r\n },\r\n noBottomBorder: {\r\n borderBottomColor: `${Tokens.colorBrandNeutral100}!important`\r\n },\r\n noDeleteButton: {\r\n width: Tokens.spacing70\r\n },\r\n table: {\r\n [theme.breakpoints.up('md')]: {\r\n // Width\r\n '& > thead > tr > th:nth-child(1)': {\r\n width: '50%'\r\n }\r\n }\r\n }\r\n});\r\n\r\ntype PropsWithStyles = IPaymentDetailModalProps & WithStyles;\r\n// #endregion Types\r\n\r\n// #region Component\r\nclass PaymentDetailModal extends React.Component {\r\n private idModule: string;\r\n private idPage: string;\r\n\r\n public readonly state: Readonly;\r\n\r\n public constructor(props) {\r\n super(props);\r\n\r\n // #region Initialize Variables and State\r\n this.idModule = 'Generic';\r\n this.idPage = 'PaymentDetailModal';\r\n this.state = this.getInitialState();\r\n // #endregion Initialize Variables and State\r\n }\r\n\r\n private getInitialState(): IPaymentDetailModalState {\r\n let resources: IPaymentDetailModalRes | undefined;\r\n if (this.state) {\r\n resources = this.state.resources;\r\n }\r\n return {\r\n componentError: false,\r\n resources: resources\r\n };\r\n }\r\n\r\n // #region Error Functions\r\n private logError(logData: ILogData): void {\r\n LayoutActions.setLogData(logData);\r\n }\r\n\r\n private redirectError(code: number): void {\r\n LayoutActions.setRedirectCode(code);\r\n }\r\n\r\n // #endregion Error Functions\r\n\r\n // #region Resolvers\r\n private resolveGetResources = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveGetResources.name);\r\n if (result?.status) {\r\n this.setState({\r\n resources: result.data\r\n });\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveGetResources.name, e));\r\n }\r\n };\r\n // #endregion Resolvers\r\n\r\n // #region Lifecycle\r\n public componentDidMount(): void {\r\n try {\r\n RequestsLayout.getResources(this.idModule, this.idPage,\r\n this.resolveGetResources,\r\n this.logError);\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.componentDidMount.name, e));\r\n }\r\n }\r\n\r\n public componentDidCatch(error, info): void {\r\n this.setState({\r\n componentError: true\r\n }, () => {\r\n this.logError(LogData.fromComponentException(this.componentDidCatch.name, error, info));\r\n this.redirectError(500);\r\n });\r\n }\r\n // #endregion Lifecycle\r\n\r\n public render(): JSX.Element {\r\n const {\r\n classes,\r\n coupons,\r\n enableOnlinePayment,\r\n open,\r\n paymentInfo,\r\n paymentInfoNoChanges,\r\n paymentMethod,\r\n paymentOrigin,\r\n titleName,\r\n yearTerm,\r\n onApplyCoupon,\r\n onChangeCouponCode,\r\n onChangePaymentAnotherAmount,\r\n onChangePaymentMethod,\r\n onClose,\r\n onPay,\r\n onRemoveCoupon\r\n } = this.props;\r\n\r\n const {\r\n componentError,\r\n resources\r\n } = this.state;\r\n\r\n let contentPage: JSX.Element | undefined;\r\n if (!componentError && resources) {\r\n let paymentMethods: IRadioOption[] | undefined;\r\n let hasCharges: boolean = false;\r\n\r\n if (paymentOrigin === PaymentOrigin.Registration) {\r\n paymentMethods = [];\r\n hasCharges = paymentInfo.currentBalanceValue > 0 || paymentInfo.totalAmountValue > 0;\r\n\r\n if (hasCharges) {\r\n paymentMethods.push({\r\n description: Format.toString(resources.formatBalance, [paymentInfo.currentBalance]),\r\n disabled: paymentInfo.currentBalanceValue < 0,\r\n value: '1'\r\n } as IRadioOption);\r\n // TODO: Review if this code is useful for the next story about the total charges and taxes\r\n // paymentMethods.push({\r\n // description: Format.toString(resources.formatTotal, [paymentInfo.totalAmount]),\r\n // disabled: paymentInfo.totalAmountValue < 0,\r\n // value: '2'\r\n // } as IRadioOption);\r\n\r\n let errorAnotherAmount: boolean = false;\r\n let errorTextAnotherAmount: string | undefined;\r\n if (paymentMethod === '0' && paymentInfo.modified) {\r\n errorAnotherAmount = !Boolean(paymentInfo.anotherAmount)\r\n || paymentInfo.invalidAnotherAmount;\r\n errorTextAnotherAmount = !Boolean(paymentInfo.anotherAmount) ?\r\n resources.lblAnotherAmountRequired\r\n : (paymentInfo.invalidAnotherAmount ?\r\n resources.lblAnotherAmountInvalid\r\n : undefined);\r\n }\r\n\r\n paymentMethods.push({\r\n description: resources.lblAnotherAmount,\r\n nodeComplement: (\r\n \r\n ),\r\n value: '0'\r\n } as IRadioOption);\r\n }\r\n }\r\n else if (paymentOrigin === PaymentOrigin.ConEdRegistration && !paymentInfo.useTransactionChargesOnly) {\r\n hasCharges = paymentInfo.paymentDueValue > 0;\r\n }\r\n else {\r\n hasCharges = paymentInfo.totalAmountValue > 0;\r\n }\r\n\r\n let headerModal: JSX.Element;\r\n headerModal = (\r\n <>\r\n \r\n {Format.toString(resources.formatTitle, [yearTerm || titleName || ''])}\r\n \r\n \r\n \r\n \r\n {resources.lblInstructions}\r\n \r\n \r\n {((paymentOrigin === PaymentOrigin.Registration\r\n || paymentOrigin === PaymentOrigin.ConEdRegistration)\r\n && paymentInfo.statementNumber) && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {paymentOrigin === PaymentOrigin.Registration\r\n && paymentMethods && hasCharges && (\r\n \r\n )}\r\n {paymentOrigin !== PaymentOrigin.Registration && (\r\n
\r\n \r\n {paymentOrigin === PaymentOrigin.ConEdRegistration\r\n && !paymentInfo.useTransactionChargesOnly ? (\r\n <>\r\n \r\n \r\n {paymentInfo.paymentDue}\r\n \r\n \r\n \r\n \r\n {resources.lblPaymentDue}\r\n \r\n \r\n \r\n ) : (\r\n <>\r\n \r\n {paymentInfoNoChanges.totalAmountValue !== paymentInfo.totalAmountValue ? (\r\n \r\n {paymentInfo.totalAmount}\r\n \r\n ) : (\r\n \r\n {paymentInfo.totalAmount}\r\n \r\n )}\r\n \r\n \r\n {paymentInfoNoChanges.totalAmountValue !== paymentInfo.totalAmountValue ? (\r\n \r\n {resources.lblDiscountedTotal}\r\n \r\n ) : (\r\n \r\n {resources.lblTotal}\r\n \r\n )}\r\n \r\n \r\n )}\r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n );\r\n\r\n let footerModal: JSX.Element;\r\n footerModal = enableOnlinePayment && hasCharges ? (\r\n \r\n {!paymentInfo.requireOnlinePayment &&\r\n (paymentOrigin === PaymentOrigin.Registration\r\n || paymentOrigin === PaymentOrigin.ConEdRegistration) && (\r\n \r\n {resources.btnBillMeLater}\r\n \r\n )}\r\n \r\n {resources.btnPay}\r\n \r\n \r\n ) : (\r\n \r\n {resources.btnOk}\r\n \r\n );\r\n\r\n let rowClassName: string | undefined;\r\n let isFirstRow: boolean;\r\n contentPage = (\r\n \r\n {paymentOrigin === PaymentOrigin.ConEdRegistration && (\r\n \r\n \r\n \r\n {resources.lblDiscountTitle}\r\n \r\n \r\n {resources.lblDiscountInstructions}\r\n \r\n \r\n \r\n {coupons.map((coupon, ci) => (\r\n \r\n \r\n \r\n \r\n {!coupon.isNew ? (\r\n \r\n \r\n \r\n ) : (
)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!coupon.isApplied && (\r\n \r\n {resources.btnApplyCoupon}\r\n \r\n )}\r\n \r\n \r\n \r\n\r\n \r\n ))}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {resources.lblDetail}\r\n \r\n \r\n \r\n {paymentInfo.chargeCredits && (\r\n \r\n \r\n \r\n \r\n \r\n {paymentOrigin === PaymentOrigin.ConEdRegistration && (\r\n \r\n {resources.lblCourse}\r\n \r\n )}\r\n \r\n {resources.lblCharge}\r\n \r\n \r\n {resources.lblAmount}\r\n \r\n {paymentOrigin === PaymentOrigin.ConEdRegistration\r\n && paymentInfo.chargeCredits.find(c => c.isCredit)\r\n && (\r\n \r\n {resources.lblDiscount}\r\n \r\n )}\r\n \r\n \r\n \r\n {paymentInfo.chargeCredits.map((row, cci) => {\r\n if (paymentOrigin === PaymentOrigin.ConEdRegistration) {\r\n rowClassName = undefined;\r\n isFirstRow = true;\r\n if (cci < paymentInfo.chargeCredits.length - 1\r\n && row.sectionId === paymentInfo.chargeCredits[cci + 1].sectionId) {\r\n rowClassName = classes.noBottomBorder;\r\n }\r\n if (cci > 0\r\n && row.sectionId === paymentInfo.chargeCredits[cci - 1].sectionId) {\r\n isFirstRow = false;\r\n }\r\n }\r\n return (\r\n \r\n {paymentOrigin === PaymentOrigin.ConEdRegistration && (\r\n \r\n {isFirstRow && !row.isCredit && !row.isOther && (\r\n \r\n {(row.eventId && row.eventName) ? Format.toString(resources.formatTitleSection, [row.eventId, row.eventName]) : '' }\r\n \r\n )}\r\n {isFirstRow && row.isOther && (\r\n \r\n {resources.lblOthers}\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n {row.description}\r\n \r\n {paymentOrigin === PaymentOrigin.Application\r\n && paymentInfo.chargeCredits\r\n && paymentInfo.chargeCredits.length > 0\r\n && paymentInfo.totalAmount !== paymentInfo.chargeCredits[0].amount && (\r\n <>\r\n
\r\n \r\n {resources.lblProgramFees}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {row.amount}\r\n \r\n \r\n {paymentOrigin === PaymentOrigin.ConEdRegistration\r\n && paymentInfo.chargeCredits.find(c => c.isCredit)\r\n && (\r\n \r\n \r\n {row.discountAmount || '-'}\r\n \r\n \r\n )}\r\n \r\n );\r\n })}\r\n
\r\n \r\n \r\n \r\n {paymentInfoNoChanges.totalAmountValue !== paymentInfo.totalAmountValue ? (\r\n \r\n {Format.toString(resources.formatDiscountedTotal, [paymentInfo.totalAmount])}\r\n \r\n ) : (\r\n \r\n {Format.toString(resources.formatTotal, [paymentInfo.totalAmount])}\r\n \r\n )}\r\n {paymentOrigin === PaymentOrigin.Registration && (\r\n \r\n {Format.toString(resources.formatPaymentDue, [paymentInfo.paymentDue])}\r\n \r\n )}\r\n {paymentOrigin === PaymentOrigin.ConEdRegistration\r\n && !paymentInfo.useTransactionChargesOnly && (\r\n \r\n {Format.toString(resources.formatPaymentDue, [paymentInfo.paymentDue])}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )}\r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n {contentPage}\r\n \r\n );\r\n }\r\n}\r\n// #endregion Component\r\n\r\n// Export: Component\r\nexport default withStyles(styles)(PaymentDetailModal);","/* Copyright 2019 Ellucian Company L.P. and its affiliates.\r\n * File: ProcessPaymentModal.ts */\r\n\r\n// Types\r\nimport { ILogData } from '@hedtech/powercampus-design-system/types/ILogData';\r\nimport { IGiftCampaign } from '../../Types/MakeGift/IGiftCampaign';\r\nimport { IRequestTranscript } from '../../Types/Grades/IRequestTranscript';\r\nimport { IPaymentRequest } from '../../Types/Payment/IPaymentRequest';\r\n\r\n// Helpers\r\nimport Request from '@hedtech/powercampus-design-system/helpers/Request';\r\n\r\n// Functions for requests\r\nconst ProcessPaymentModalRequests = {\r\n postProcessPayment(paymentRequest: IPaymentRequest,\r\n resolver: (json: string) => void,\r\n resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.postProcessPayment.name, '/Payment/Process', { paymentRequest }, resolver, resolveError);\r\n },\r\n postProcessTranscriptPayment(paymentRequest: IPaymentRequest,\r\n resolver: (json: string) => void,\r\n resolveError: (logData: ILogData) => void,\r\n requestTranscripts?: IRequestTranscript[]): void {\r\n Request.post(this.postProcessTranscriptPayment.name, '/Payment/Process', { paymentRequest, requestTranscripts }, resolver, resolveError);\r\n },\r\n postProcessDonationPayment(paymentRequest: IPaymentRequest,\r\n resolver: (json: string) => void,\r\n resolveError: (logData: ILogData) => void,\r\n giftCampaigns?: IGiftCampaign[]): void {\r\n Request.post(this.postProcessTranscriptPayment.name, '/Payment/Process', { paymentRequest, giftCampaigns }, resolver, resolveError);\r\n }\r\n};\r\n\r\n// Export object with the requests\r\nexport default ProcessPaymentModalRequests;","/* Copyright 2019 - 2021 Ellucian Company L.P. and its affiliates.\r\n * File: ProcessPaymentModal.tsx\r\n * Type: Container component */\r\n\r\n// #region Imports\r\nimport React from 'react';\r\n\r\n// Core components\r\nimport Alert from '@hedtech/powercampus-design-system/react/core/Alert';\r\nimport Button, { ButtonGroup } from '@hedtech/powercampus-design-system/react/core/Button';\r\nimport Grid from '@hedtech/powercampus-design-system/react/core/Grid';\r\nimport Modal from '@hedtech/powercampus-design-system/react/core/Modal';\r\n\r\n// Types\r\nimport { IAlert } from '@hedtech/powercampus-design-system/types/IAlert';\r\nimport { IJsonResult } from '@hedtech/powercampus-design-system/types/IJsonResult';\r\nimport { ILogData } from '@hedtech/powercampus-design-system/types/ILogData';\r\nimport { ResultType } from '@hedtech/powercampus-design-system/types/ResultType';\r\nimport { PaymentOrigin } from '../../Types/Enum/PaymentOrigin';\r\nimport { IYearTerm } from '../../Types/Generic/IYearTerm';\r\nimport { IRequestTranscript } from '../../Types/Grades/IRequestTranscript';\r\nimport { IPaymentPeriod } from '../../Types/Payment/IPaymentPeriod';\r\nimport { IPaymentRequest } from '../../Types/Payment/IPaymentRequest';\r\nimport { IGiftCampaign } from '../../Types/MakeGift/IGiftCampaign';\r\nimport { IProcessPaymentModalResources } from '../../Types/Resources/Generic/IProcessPaymentModalResources';\r\n\r\n// Helpers\r\nimport LogData from '@hedtech/powercampus-design-system/helpers/LogData';\r\nimport Resolver from '@hedtech/powercampus-design-system/helpers/Resolver';\r\n\r\n// Requests\r\nimport RequestsLayout from '@hedtech/powercampus-design-system/requests/LayoutRequests';\r\nimport Requests from '../../Requests/Generic/ProcessPaymentModal';\r\n\r\n// State Management\r\nimport LayoutActions from '@hedtech/powercampus-design-system/flux/actions/LayoutActions';\r\n// #endregion Imports\r\n\r\n// #region Types\r\nexport interface IProcessPaymentModalProps {\r\n amount: number;\r\n applicationId?: number;\r\n conEdTransactionId?: number;\r\n giftCampaigns?: IGiftCampaign[];\r\n open: boolean;\r\n paymentOrigin: PaymentOrigin;\r\n personId?: number;\r\n requestTranscripts?: IRequestTranscript[];\r\n returnUrl?: string;\r\n termSessionId?: string;\r\n yearTerm?: string;\r\n onClose: () => void;\r\n}\r\n\r\ninterface IProcessPaymentModalState {\r\n componentError: boolean;\r\n resources?: IProcessPaymentModalResources;\r\n}\r\n// #endregion Types\r\n\r\n// #region Component\r\nclass ProcessPaymentModal extends React.Component {\r\n private idModule: string;\r\n private idPage: string;\r\n\r\n public readonly state: Readonly;\r\n\r\n public constructor(props) {\r\n super(props);\r\n\r\n // #region Initialize Variables and State\r\n this.idModule = 'Generic';\r\n this.idPage = 'ProcessPaymentModal';\r\n this.state = this.getInitialState();\r\n // #endregion Initialize Variables and State\r\n }\r\n\r\n private getInitialState(): IProcessPaymentModalState {\r\n let resources: IProcessPaymentModalResources | undefined;\r\n if (this.state) {\r\n resources = this.state.resources;\r\n }\r\n return {\r\n componentError: false,\r\n resources: resources\r\n };\r\n }\r\n\r\n // #region Events\r\n private onOk = (): void => {\r\n try {\r\n const {\r\n amount,\r\n applicationId,\r\n conEdTransactionId,\r\n giftCampaigns,\r\n paymentOrigin,\r\n personId,\r\n requestTranscripts,\r\n returnUrl,\r\n termSessionId,\r\n yearTerm\r\n } = this.props;\r\n\r\n const paymentRequest: IPaymentRequest = {\r\n amount: amount,\r\n applicationId: applicationId,\r\n conEdTransactionId: conEdTransactionId,\r\n paymentOrigin: paymentOrigin,\r\n personId: personId,\r\n returnUrl: returnUrl\r\n } as IPaymentRequest;\r\n if (termSessionId) {\r\n const periodId = termSessionId.split('/');\r\n paymentRequest.paymentPeriod = {\r\n sessionPeriodId: periodId[1] ? Number(periodId[1]) : null,\r\n termPeriodId: periodId[0] ? Number(periodId[0]) : null\r\n } as IPaymentPeriod;\r\n }\r\n else if (yearTerm) {\r\n const split = yearTerm.split('/');\r\n paymentRequest.yearTerm = {\r\n term: split[1],\r\n year: Number(split[0])\r\n } as IYearTerm;\r\n }\r\n if (requestTranscripts) {\r\n Requests.postProcessTranscriptPayment(paymentRequest, this.resolvePostProcessPayment, this.logError, requestTranscripts);\r\n }\r\n else if (giftCampaigns) {\r\n Requests.postProcessDonationPayment(paymentRequest, this.resolvePostProcessPayment, this.logError, giftCampaigns);\r\n }\r\n else {\r\n Requests.postProcessPayment(paymentRequest, this.resolvePostProcessPayment, this.logError);\r\n }\r\n LayoutActions.setLoading(true);\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onOk.name, e));\r\n }\r\n };\r\n // #endregion Events\r\n\r\n // #region Error Functions\r\n private logError(logData: ILogData): void {\r\n LayoutActions.setLogData(logData);\r\n }\r\n\r\n private redirectError(code: number): void {\r\n LayoutActions.setRedirectCode(code);\r\n }\r\n\r\n private showError(message?: string): void {\r\n LayoutActions.setAlert({ message: message, messageType: ResultType.error } as IAlert);\r\n }\r\n // #endregion Error Functions\r\n\r\n // #region Resolvers\r\n private resolveGetResources = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveGetResources.name);\r\n if (result?.status) {\r\n this.setState({\r\n resources: result.data\r\n });\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveGetResources.name, e));\r\n }\r\n };\r\n\r\n private resolvePostProcessPayment = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolvePostProcessPayment.name);\r\n if (result?.status) {\r\n if (result.data) {\r\n window.location.replace(encodeURI(result.data));\r\n LayoutActions.setLoading(false);\r\n }\r\n else {\r\n this.showError();\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolvePostProcessPayment.name, e));\r\n }\r\n };\r\n // #endregion Resolvers\r\n\r\n // #region Lifecycle\r\n public componentDidMount(): void {\r\n try {\r\n RequestsLayout.getResources(this.idModule, this.idPage,\r\n this.resolveGetResources,\r\n this.logError);\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.componentDidMount.name, e));\r\n }\r\n }\r\n\r\n public componentDidCatch(error, info): void {\r\n this.setState({\r\n componentError: true\r\n }, () => {\r\n this.logError(LogData.fromComponentException(this.componentDidCatch.name, error, info));\r\n this.redirectError(500);\r\n });\r\n }\r\n // #endregion Lifecycle\r\n\r\n public render(): JSX.Element {\r\n const {\r\n open,\r\n onClose\r\n } = this.props;\r\n\r\n const {\r\n componentError,\r\n resources\r\n } = this.state;\r\n\r\n let contentPage: JSX.Element | undefined;\r\n if (!componentError && resources) {\r\n contentPage = (\r\n \r\n \r\n {resources.btnCancel}\r\n \r\n \r\n {resources.btnOk}\r\n \r\n \r\n )}\r\n maxWidth=\"sm\"\r\n open={open}\r\n showTitleBarClose={false}\r\n onClose={onClose}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n {contentPage}\r\n \r\n );\r\n }\r\n}\r\n// #endregion Component\r\n\r\n// Export: Component\r\nexport default ProcessPaymentModal;","/* Copyright 2021 Ellucian Company L.P. and its affiliates.\r\n * File: AuthStatus.ts */\r\n\r\nexport enum AuthStatus {\r\n None = 0,\r\n Success = 1,\r\n InvalidCredentials = 2,\r\n InvalidPassword = 3,\r\n NoIdentity = 4,\r\n InvalidConfiguration = 5,\r\n NoStoreAssigned = 6,\r\n Unknown = 7,\r\n IsLocked = 8\r\n}","/* Copyright 2019 - 2021 Ellucian Company L.P. and its affiliates.\r\n * File: SignIn.ts */\r\n\r\n// Types\r\nimport { IPasswordChange } from '../../Types/Account/IPasswordChange';\r\n\r\n// Helpers\r\nimport Request from '@hedtech/powercampus-design-system/helpers/Request';\r\n\r\n// Functions for requests\r\nconst SignInRequests = {\r\n authenticateUser(userName: string, password: string, resolver: (json: string) => void): void {\r\n Request.post(this.authenticateUser.name, '/SignIn/Authenticate', { userName, password }, resolver);\r\n },\r\n changePassword(passwordChange: IPasswordChange, resolver: (json: string) => void): void {\r\n Request.post(this.changePassword.name, '/Password/ChangePassword', passwordChange, resolver);\r\n },\r\n getAuthenticationMode(userName: string, resolver: (json: string) => void): void {\r\n Request.post(this.getAuthenticationMode.name, '/SignIn/GetAuthenticationMode', userName, resolver);\r\n },\r\n isForgotPasswordEnabled(resolver: (json: string) => void): void {\r\n Request.post(this.isForgotPasswordEnabled.name, '/SignIn/IsForgotPasswordEnabled', null, resolver);\r\n },\r\n sendForgotPasswordEmail(userName: string, reCaptchaResponse: string, resolver: (json: string) => void): void {\r\n Request.post(this.sendForgotPasswordEmail.name, '/SignIn/SendForgotPasswordEmail', { userName, reCaptchaResponse }, resolver);\r\n },\r\n};\r\n\r\n// Export object with the requests\r\nexport default SignInRequests;","/* Copyright 2019 - 2021 Ellucian Company L.P. and its affiliates.\r\n * File: SignIn.tsx\r\n * Type: Container component */\r\n\r\n// #region Imports\r\nimport URLSearchParams from '@ungap/url-search-params';\r\nimport React, { RefObject } from 'react';\r\nimport { setTimeout } from 'timers';\r\n\r\n// Core components\r\nimport Alert from '@hedtech/powercampus-design-system/react/core/Alert';\r\nimport Button, { ButtonGroup } from '@hedtech/powercampus-design-system/react/core/Button';\r\nimport Card, { CardContent } from '@hedtech/powercampus-design-system/react/core/Card';\r\nimport Grid from '@hedtech/powercampus-design-system/react/core/Grid';\r\nimport Modal from '@hedtech/powercampus-design-system/react/core/Modal';\r\nimport Paragraph from '@hedtech/powercampus-design-system/react/core/Paragraph';\r\nimport PasswordConfirmation from '@hedtech/powercampus-design-system/react/components/PasswordConfirmation';\r\nimport ReCAPTCHA from '@hedtech/powercampus-design-system/react/core/ReCaptcha';\r\nimport Text from '@hedtech/powercampus-design-system/react/core/Text';\r\nimport TextField from '@hedtech/powercampus-design-system/react/core/TextField';\r\n\r\n// Types\r\nimport { StoreMode } from '@hedtech/powercampus-design-system/types/Account/StoreMode';\r\nimport { IAlert } from '@hedtech/powercampus-design-system/types/IAlert';\r\nimport { IJsonResult } from '@hedtech/powercampus-design-system/types/IJsonResult';\r\nimport { ILogData } from '@hedtech/powercampus-design-system/types/ILogData';\r\nimport { ResultType } from '@hedtech/powercampus-design-system/types/ResultType';\r\nimport { ChangePasswordError } from '@hedtech/powercampus-design-system/types/PasswordConfirmation/ChangePasswordError';\r\nimport { IAccountValidations } from '@hedtech/powercampus-design-system/types/PasswordConfirmation/IAccountValidations';\r\nimport { IChangePasswordResponse } from '@hedtech/powercampus-design-system/types/PasswordConfirmation/IChangePasswordResponse';\r\nimport { IPasswordChange } from '../../Types/Account/IPasswordChange';\r\nimport { AuthStatus } from '../../Types/Enum/AuthStatus';\r\nimport { IAuthResponse } from '../../Types/Generic/IAuthResponse';\r\nimport { ISignInResources } from '../../Types/Resources/Generic/ISignInResources';\r\n\r\n// Helpers\r\nimport Format from '@hedtech/powercampus-design-system/helpers/Format';\r\nimport LogData from '@hedtech/powercampus-design-system/helpers/LogData';\r\nimport PasswordValidation from '@hedtech/powercampus-design-system/helpers/PasswordValidation';\r\nimport Redirect from '@hedtech/powercampus-design-system/helpers/Redirect';\r\nimport Resolver from '@hedtech/powercampus-design-system/helpers/Resolver';\r\nimport Tokens from '@hedtech/powercampus-design-system/react/core/styles/Tokens';\r\nimport { createStyles, withStyles, WithStyles } from '@hedtech/powercampus-design-system/react/core/styles/withStyles';\r\nimport { withWidth, WithWidth } from '@hedtech/powercampus-design-system/react/core/withWidth';\r\n\r\n// Requests\r\nimport RequestsLayout from '@hedtech/powercampus-design-system/requests/LayoutRequests';\r\nimport Requests from '../../Requests/Generic/SignIn';\r\n\r\n// State Management\r\nimport LayoutActions from '@hedtech/powercampus-design-system/flux/actions/LayoutActions';\r\nimport LayoutStore from '@hedtech/powercampus-design-system/flux/stores/LayoutStore';\r\nimport PasswordConfirmationActions from '@hedtech/powercampus-design-system/flux/actions/PasswordConfirmationActions';\r\nimport PasswordConfirmationStore from '@hedtech/powercampus-design-system/flux/stores/PasswordConfirmationStore';\r\n// #endregion Imports\r\n\r\n// #region Types\r\nexport interface ISignInProps {\r\n open?: boolean;\r\n userName?: string;\r\n onAfterSignIn?: () => void;\r\n onClose?: () => void;\r\n onGoSignUp?: () => void;\r\n}\r\n\r\ninterface ISignInState {\r\n accountValidations?: IAccountValidations;\r\n alert?: IAlert;\r\n authMode?: number;\r\n isLoading: boolean;\r\n isLoadingNext: boolean;\r\n isLoadingSignIn: boolean;\r\n password: string;\r\n passwordModified: boolean;\r\n resources?: ISignInResources;\r\n stepNumber: number;\r\n uiCulture: string;\r\n userName: string;\r\n userNameModified: boolean;\r\n variation: number;\r\n\r\n // #region Change Password\r\n errorCurrentPassword: boolean;\r\n isLoadingChangePassword: boolean;\r\n newPassword?: string;\r\n openChangePassword: boolean;\r\n // #endregion Change Password\r\n\r\n // #region Forgot Password\r\n emailSent: boolean;\r\n isForgotPasswordEnabled: boolean;\r\n isLoadingSendEmail: boolean;\r\n isReCaptchaEnabled: boolean;\r\n openForgotPassword: boolean;\r\n reCaptchaError: boolean;\r\n reCaptchaSiteKey: string;\r\n userNameRecovery: string;\r\n userNameRecoveryModified: boolean;\r\n // #endregion Forgot Password\r\n}\r\n\r\nconst styles = createStyles({\r\n forgotPasswordLink: {\r\n paddingTop: Tokens.spacing30\r\n },\r\n forgotText: {\r\n marginBottom: `${Tokens.spacing40}!important`\r\n },\r\n loginCard: {\r\n animation: 'slidein 1s',\r\n marginTop: Tokens.spacing80,\r\n maxWidth: '800px'\r\n },\r\n loginText: {\r\n marginTop: `${Tokens.spacing40}!important`\r\n },\r\n reCaptchaContent: {\r\n paddingBottom: Tokens.spacing30\r\n },\r\n reCaptchaErrorText: {\r\n paddingBottom: Tokens.spacing30\r\n },\r\n signInButton: {\r\n paddingTop: Tokens.spacing20\r\n },\r\n spacingAlert: {\r\n paddingBottom: Tokens.spacing20\r\n },\r\n spacingTitle: {\r\n paddingBottom: Tokens.spacing30\r\n }\r\n});\r\n\r\ntype PropsWithStyles = ISignInProps & WithStyles & WithWidth;\r\n// #endregion Types\r\n\r\n// #region Component\r\nclass SignIn extends React.Component {\r\n private idModule: string;\r\n private idPage: string;\r\n private passwordRef: RefObject;\r\n private reCaptchaRef: RefObject;\r\n private userNameRecoveryRef: RefObject;\r\n private userNameRef: RefObject;\r\n\r\n public readonly state: Readonly;\r\n\r\n public constructor(props) {\r\n super(props);\r\n\r\n // #region Initialize Variables and State\r\n this.idModule = 'Generic';\r\n this.idPage = 'SignIn';\r\n this.passwordRef = React.createRef();\r\n this.reCaptchaRef = React.createRef();\r\n this.userNameRecoveryRef = React.createRef();\r\n this.userNameRef = React.createRef();\r\n this.state = this.getInitialState(this.props.userName);\r\n // #endregion Initialize Variables and State\r\n\r\n // #region Bind State Management Listeners\r\n PasswordConfirmationStore.addPasswordValidationListener(this.onChangePasswordValidation);\r\n // #endregion State Management Listeners\r\n }\r\n\r\n private getInitialState(userName?: string): ISignInState {\r\n let isLoading: boolean = true;\r\n let resources: ISignInResources | undefined;\r\n let isForgotPasswordEnabled: boolean = false;\r\n let isReCaptchaEnabled: boolean = false;\r\n let reCaptchaSiteKey: string;\r\n if (this.state) {\r\n isForgotPasswordEnabled = this.state.isForgotPasswordEnabled;\r\n isLoading = this.state.isLoading;\r\n isReCaptchaEnabled = this.state.isReCaptchaEnabled;\r\n reCaptchaSiteKey = this.state.reCaptchaSiteKey;\r\n resources = this.state.resources;\r\n }\r\n else {\r\n reCaptchaSiteKey = '';\r\n resources = LayoutStore.getResourcesByKey(`${this.idModule}.${this.idPage}`);\r\n }\r\n return {\r\n accountValidations: undefined,\r\n alert: undefined,\r\n authMode: undefined,\r\n isLoading: isLoading,\r\n isLoadingNext: false,\r\n isLoadingSignIn: false,\r\n password: '',\r\n passwordModified: false,\r\n resources: resources,\r\n stepNumber: 1,\r\n uiCulture: LayoutStore.getCultures().uiCulture,\r\n userName: userName || '',\r\n userNameModified: false,\r\n variation: 0,\r\n\r\n // #region Change Password\r\n errorCurrentPassword: false,\r\n isLoadingChangePassword: false,\r\n openChangePassword: false,\r\n // #endregion Change Password\r\n\r\n // #region Forgot Password\r\n emailSent: false,\r\n isForgotPasswordEnabled: isForgotPasswordEnabled,\r\n isLoadingSendEmail: false,\r\n isReCaptchaEnabled: isReCaptchaEnabled,\r\n openForgotPassword: false,\r\n reCaptchaError: false,\r\n reCaptchaSiteKey: reCaptchaSiteKey,\r\n userNameRecovery: '',\r\n userNameRecoveryModified: false\r\n // #endregion Forgot Password\r\n };\r\n }\r\n\r\n // #region Events\r\n\r\n private OnFinishSignIn = (): void => {\r\n try {\r\n LayoutStore.setIsAuthenticated(true);\r\n LayoutStore.setMenuOptions(undefined);\r\n LayoutActions.showPageLoader();\r\n const {\r\n onAfterSignIn\r\n } = this.props;\r\n if (onAfterSignIn) {\r\n onAfterSignIn();\r\n }\r\n else {\r\n const urlParams: URLSearchParams = new URLSearchParams(window.location.search);\r\n const returnUrl: string | null = urlParams.get('ReturnUrl');\r\n const newState: ISignInState = this.getInitialState();\r\n newState.isLoading = true;\r\n this.setState(newState);\r\n if (returnUrl && !returnUrl.includes('LogOut')) {\r\n window.location.assign(returnUrl);\r\n }\r\n else {\r\n Redirect.toHome();\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.OnFinishSignIn.name, e));\r\n }\r\n };\r\n\r\n private onChangePassword = (event: React.ChangeEvent): void => {\r\n try {\r\n this.setState({\r\n alert: undefined,\r\n password: event.target.value,\r\n passwordModified: true\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangePassword.name, e));\r\n }\r\n };\r\n\r\n private onChangeUserName = (event: React.ChangeEvent): void => {\r\n try {\r\n this.setState({\r\n alert: undefined,\r\n userName: event.target.value,\r\n userNameModified: true\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeUserName.name, e));\r\n }\r\n };\r\n\r\n private onCloseModal = (): void => {\r\n try {\r\n const {\r\n onClose\r\n } = this.props;\r\n const {\r\n isLoadingNext,\r\n isLoadingSignIn\r\n } = this.state;\r\n\r\n if (onClose && !isLoadingNext && !isLoadingSignIn) {\r\n this.setState(this.getInitialState());\r\n onClose();\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCloseModal.name, e));\r\n }\r\n };\r\n\r\n private onGoSignUpModal = (): void => {\r\n try {\r\n const {\r\n onGoSignUp\r\n } = this.props;\r\n\r\n const {\r\n isLoadingNext\r\n } = this.state;\r\n\r\n if (onGoSignUp && !isLoadingNext) {\r\n this.setState(this.getInitialState());\r\n onGoSignUp();\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onGoSignUpModal.name, e));\r\n }\r\n };\r\n\r\n private onNext = (): void => {\r\n try {\r\n const {\r\n userName\r\n } = this.state;\r\n\r\n this.setState({\r\n userNameModified: true\r\n });\r\n if (userName) {\r\n this.showLoaderNext();\r\n Requests.getAuthenticationMode(userName, this.resolveGetAuthenticationMode);\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onNext.name, e));\r\n }\r\n };\r\n\r\n private onSignIn = (): void => {\r\n try {\r\n const {\r\n authMode,\r\n password,\r\n userName,\r\n variation\r\n } = this.state;\r\n\r\n this.setState({\r\n passwordModified: true\r\n });\r\n\r\n if (userName && password) {\r\n this.showLoaderSignIn();\r\n if (variation === 2 && authMode) {\r\n Requests.authenticateUser(userName, password, this.resolveAuthenticateUser);\r\n }\r\n else {\r\n const timeout: number = Math.floor(Math.random() * 5 + 1) * 1000;\r\n setTimeout(() => {\r\n const {\r\n resources\r\n } = this.state;\r\n\r\n if (resources) {\r\n const alert: IAlert = {\r\n message: resources.lblInvalidCredentials,\r\n messageType: ResultType.error\r\n };\r\n this.setState({\r\n alert: alert\r\n });\r\n }\r\n else {\r\n this.showError();\r\n }\r\n this.hideLoaderSignIn();\r\n }, timeout);\r\n }\r\n }\r\n\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onSignIn.name, e));\r\n }\r\n };\r\n\r\n private onUseAnotherAccount = (): void => {\r\n try {\r\n this.setState(this.getInitialState(), () => {\r\n if (this.userNameRef?.current) {\r\n this.userNameRef.current.focus();\r\n }\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onUseAnotherAccount.name, e));\r\n }\r\n };\r\n\r\n // #region Change Password\r\n private onChangePasswordButton = (): void => {\r\n try {\r\n const {\r\n accountValidations,\r\n errorCurrentPassword,\r\n newPassword,\r\n password,\r\n userName\r\n } = this.state;\r\n\r\n let isValid: boolean = true;\r\n if (accountValidations) {\r\n let validations: IAccountValidations = PasswordValidation.validatePassword(accountValidations, newPassword,\r\n PasswordConfirmationStore.getPasswordPolicy());\r\n validations = PasswordValidation.validateConfirmPassword(accountValidations, accountValidations.confirmPassword, newPassword);\r\n PasswordConfirmationActions.setPasswordValidation(newPassword, validations);\r\n\r\n if (validations.hasErrors || errorCurrentPassword) {\r\n validations.isCurrentPwdNewPwd = errorCurrentPassword;\r\n PasswordConfirmationActions.setPasswordValidation(newPassword, validations);\r\n isValid = false;\r\n }\r\n }\r\n\r\n if (isValid && newPassword) {\r\n this.showLoaderChangePassword();\r\n const passwordChange: IPasswordChange = {\r\n userName: userName,\r\n currentPassword: password,\r\n newPassword: newPassword\r\n };\r\n Requests.changePassword(passwordChange, this.resolveChangePassword);\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangePasswordButton.name, e));\r\n }\r\n };\r\n\r\n private onCloseChangePassword = (): void => {\r\n try {\r\n this.setState(this.getInitialState(), () => {\r\n if (this.userNameRef?.current) {\r\n this.userNameRef.current.focus();\r\n }\r\n });\r\n PasswordConfirmationActions.setPasswordValidation();\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCloseChangePassword.name, e));\r\n }\r\n };\r\n\r\n private onChangePasswordValidation = (): void => {\r\n try {\r\n const {\r\n password\r\n } = this.state;\r\n\r\n this.setState({\r\n accountValidations: PasswordConfirmationStore.getPasswordValidation(),\r\n errorCurrentPassword: PasswordConfirmationStore.getPassword() === password,\r\n newPassword: PasswordConfirmationStore.getPassword()\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangePasswordValidation.name, e));\r\n }\r\n };\r\n // #endregion Change Password\r\n\r\n // #region Forgot Password\r\n private onChangeUserNameRecovery = (event: React.ChangeEvent): void => {\r\n try {\r\n this.setState({\r\n userNameRecovery: event.target.value,\r\n userNameRecoveryModified: true\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeUserNameRecovery.name, e));\r\n }\r\n };\r\n\r\n private onClickForgotPassword = (): void => {\r\n try {\r\n this.setState({\r\n emailSent: false,\r\n openForgotPassword: true,\r\n userNameRecovery: '',\r\n userNameRecoveryModified: false\r\n }, () => {\r\n if (this.userNameRecoveryRef?.current) {\r\n this.userNameRecoveryRef.current.focus();\r\n }\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onClickForgotPassword.name, e));\r\n }\r\n };\r\n\r\n private onCloseForgotPassword = (): void => {\r\n try {\r\n const {\r\n authMode,\r\n stepNumber\r\n } = this.state;\r\n\r\n this.setState({\r\n openForgotPassword: false,\r\n reCaptchaError: false\r\n }, () => {\r\n if (stepNumber === 2 && (authMode === StoreMode.Identity || authMode === StoreMode.ActiveDirectory)) {\r\n if (this.passwordRef?.current) {\r\n this.passwordRef.current.focus();\r\n }\r\n }\r\n else {\r\n if (this.userNameRef?.current) {\r\n this.userNameRef.current.focus();\r\n }\r\n }\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCloseForgotPassword.name, e));\r\n }\r\n };\r\n\r\n private onRecaptchaChange = (token: any): void => {\r\n try {\r\n this.setState({\r\n reCaptchaError: !Boolean(token)\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onRecaptchaChange.name, e));\r\n }\r\n };\r\n\r\n private onReCaptchaError = (): void => {\r\n try {\r\n this.setState({\r\n reCaptchaError: true\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onReCaptchaError.name, e));\r\n }\r\n };\r\n\r\n private onSendEmail = (): void => {\r\n try {\r\n const {\r\n isReCaptchaEnabled,\r\n userNameRecovery\r\n } = this.state;\r\n\r\n let reCaptchaResponse: string = '';\r\n if (isReCaptchaEnabled && this.reCaptchaRef?.current) {\r\n reCaptchaResponse = this.reCaptchaRef.current.getValue();\r\n this.setState({\r\n reCaptchaError: !Boolean(reCaptchaResponse),\r\n userNameRecoveryModified: true\r\n });\r\n }\r\n\r\n if (!isReCaptchaEnabled || reCaptchaResponse) {\r\n this.setState({\r\n reCaptchaError: false,\r\n userNameRecoveryModified: true\r\n });\r\n\r\n if (userNameRecovery) {\r\n this.showLoaderSendEmail();\r\n Requests.sendForgotPasswordEmail(userNameRecovery, reCaptchaResponse, this.resolveSendForgotPasswordEmail);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onSendEmail.name, e));\r\n }\r\n };\r\n // #endregion Forgot Password\r\n\r\n // #endregion Events\r\n\r\n // #region Loader Functions\r\n private hideAllLoaders = (): void => {\r\n this.setState({\r\n isLoading: false,\r\n isLoadingChangePassword: false,\r\n isLoadingNext: false,\r\n isLoadingSendEmail: false,\r\n isLoadingSignIn: false\r\n });\r\n };\r\n\r\n private hideLoader = (): void => {\r\n this.setState({\r\n isLoading: false\r\n });\r\n };\r\n\r\n private hideLoaderChangePassword = (): void => {\r\n this.setState({\r\n isLoadingChangePassword: false\r\n });\r\n };\r\n\r\n private hideLoaderNext = (): void => {\r\n this.setState({\r\n isLoadingNext: false\r\n });\r\n };\r\n\r\n private hideLoaderSendEmail = (): void => {\r\n this.setState({\r\n isLoadingSendEmail: false\r\n });\r\n };\r\n\r\n private hideLoaderSignIn = (): void => {\r\n this.setState({\r\n isLoadingSignIn: false\r\n });\r\n };\r\n\r\n private showLoaderChangePassword = (): void => {\r\n this.setState({\r\n isLoadingChangePassword: true\r\n });\r\n };\r\n\r\n private showLoaderNext = (): void => {\r\n this.setState({\r\n isLoadingNext: true\r\n });\r\n };\r\n\r\n private showLoaderSendEmail = (): void => {\r\n this.setState({\r\n isLoadingSendEmail: true\r\n });\r\n };\r\n\r\n private showLoaderSignIn = (): void => {\r\n this.setState({\r\n isLoadingSignIn: true\r\n });\r\n };\r\n // #endregion Loader Functions\r\n\r\n // #region Error Functions\r\n private logError(logData: ILogData): void {\r\n this.hideAllLoaders();\r\n LayoutActions.setLogData(logData);\r\n }\r\n\r\n private showError(message?: string): void {\r\n this.hideAllLoaders();\r\n LayoutActions.setAlert({ message: message, messageType: ResultType.error } as IAlert);\r\n }\r\n\r\n private showSignInError = (): void => {\r\n const {\r\n resources\r\n } = this.state;\r\n\r\n if (resources) {\r\n const alert: IAlert = {\r\n message: resources.lblGenericError,\r\n messageType: ResultType.error\r\n };\r\n this.setState({\r\n alert: alert\r\n });\r\n }\r\n else {\r\n this.showError();\r\n }\r\n }\r\n // #endregion Error Functions\r\n\r\n // #region Resolvers\r\n private resolveGetResources = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveGetResources.name, this.hideAllLoaders);\r\n if (result?.status) {\r\n this.setState({\r\n isLoading: false,\r\n resources: result.data\r\n });\r\n LayoutStore.setResourcesByKey(`${this.idModule}.${this.idPage}`, result.data);\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveGetResources.name, e));\r\n }\r\n };\r\n\r\n private resolveGetAuthenticationMode = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveGetAuthenticationMode.name, this.hideAllLoaders);\r\n if (result?.status) {\r\n const mode: StoreMode = result.data.mode;\r\n const userName: string = result.data.userName;\r\n const variation: number = result.data.variation;\r\n\r\n this.setState({\r\n authMode: mode,\r\n variation: variation\r\n });\r\n\r\n if (variation === 2) {\r\n this.setState({\r\n stepNumber: 2\r\n }, () => {\r\n if (this.passwordRef?.current) {\r\n this.passwordRef.current.focus();\r\n }\r\n this.hideLoaderNext();\r\n });\r\n if (mode === StoreMode.ADFS) {\r\n Redirect.toADFSLogin(userName);\r\n }\r\n else if (mode === StoreMode.SAML) {\r\n Redirect.toSAMLLogin(userName);\r\n }\r\n }\r\n else if (variation === 1) {\r\n this.showSignInError();\r\n this.hideLoaderNext();\r\n }\r\n else {\r\n this.setState({\r\n stepNumber: 2\r\n }, () => {\r\n if (this.passwordRef?.current) {\r\n this.passwordRef.current.focus();\r\n }\r\n this.hideLoaderNext();\r\n });\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveGetAuthenticationMode.name, e));\r\n }\r\n };\r\n\r\n private resolveAuthenticateUser = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveAuthenticateUser.name, this.hideAllLoaders);\r\n if (result?.status) {\r\n const authResponse: IAuthResponse = result.data;\r\n\r\n if (authResponse && authResponse.success) {\r\n if (authResponse.status === AuthStatus.Success && authResponse.changePasswordAtNextLogon) {\r\n this.setState({\r\n openChangePassword: true\r\n });\r\n }\r\n else {\r\n this.OnFinishSignIn();\r\n }\r\n }\r\n else {\r\n const {\r\n resources\r\n } = this.state;\r\n\r\n if (resources) {\r\n let message: string = '';\r\n if (authResponse) {\r\n if (authResponse.status === AuthStatus.InvalidCredentials) {\r\n message = resources.lblInvalidCredentials;\r\n }\r\n else if (authResponse.status === AuthStatus.IsLocked) {\r\n if (authResponse.authResponseDetail?.attempt) {\r\n if (authResponse.authResponseDetail.attempt.remainingLockedOutTime) {\r\n message = Format.toString(resources.formatLockedAccount, [authResponse.authResponseDetail.attempt.remainingLockedOutTime]);\r\n }\r\n }\r\n if (!message) {\r\n message = resources.lblLocked;\r\n }\r\n }\r\n else if (authResponse.status === AuthStatus.InvalidPassword) {\r\n if (authResponse.authResponseDetail?.attempt) {\r\n if (authResponse.authResponseDetail.attempt.remainingAttempts) {\r\n message = Format.toString(resources.formatInvalidAttempts, [authResponse.authResponseDetail.attempt.remainingAttempts]);\r\n }\r\n }\r\n if (!message) {\r\n message = resources.lblInvalidCredentials;\r\n }\r\n }\r\n }\r\n\r\n if (!message) {\r\n message = resources.lblGenericError;\r\n }\r\n\r\n const alert: IAlert = {\r\n message: message,\r\n messageType: ResultType.error\r\n };\r\n this.setState({\r\n alert: alert\r\n });\r\n }\r\n else {\r\n this.showError();\r\n }\r\n this.hideLoaderSignIn();\r\n }\r\n\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveAuthenticateUser.name, e));\r\n }\r\n };\r\n\r\n // #region Change Password\r\n private resolveChangePassword = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveChangePassword.name, this.hideAllLoaders);\r\n if (result?.status) {\r\n const {\r\n accountValidations,\r\n newPassword\r\n } = this.state;\r\n\r\n const response: IChangePasswordResponse = result.data;\r\n if (response.updatedSuccessfully) {\r\n PasswordConfirmationActions.setPasswordValidation();\r\n this.OnFinishSignIn();\r\n }\r\n else if (response.errors.length > 0) {\r\n switch (response.errors[0]) {\r\n case ChangePasswordError.AlreadyUsed:\r\n if (accountValidations) {\r\n accountValidations.isNotPreviousPassword = true;\r\n PasswordConfirmationActions.setPasswordValidation(newPassword, accountValidations);\r\n }\r\n break;\r\n default:\r\n this.showSignInError();\r\n break;\r\n }\r\n this.hideLoaderChangePassword();\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveChangePassword.name, e));\r\n }\r\n };\r\n // #endregion Change Password\r\n\r\n // #region Forgot Password\r\n private resolveIsForgotPasswordEnabled = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveIsForgotPasswordEnabled.name, this.hideAllLoaders);\r\n if (result?.status) {\r\n if (result.data) {\r\n this.setState({\r\n isForgotPasswordEnabled: result.data.isForgotPasswordEnabled,\r\n isReCaptchaEnabled: result.data.isReCaptchaEnabled,\r\n reCaptchaSiteKey: result.data.reCaptchaSiteKey || ''\r\n });\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveIsForgotPasswordEnabled.name, e));\r\n }\r\n };\r\n\r\n private resolveSendForgotPasswordEmail = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveSendForgotPasswordEmail.name, this.hideAllLoaders);\r\n if (result?.status) {\r\n if (!result.data) {\r\n const timeout: number = Math.floor(Math.random() * 15 + 1) * 1000;\r\n setTimeout(() => {\r\n this.setState({\r\n emailSent: true\r\n }, this.hideLoaderSendEmail);\r\n }, timeout);\r\n }\r\n else {\r\n this.setState({\r\n emailSent: true\r\n }, this.hideLoaderSendEmail);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveSendForgotPasswordEmail.name, e));\r\n }\r\n };\r\n // #endregion Forgot Password\r\n\r\n // #endregion Resolvers\r\n\r\n // #region Lifecycle\r\n public componentDidMount(): void {\r\n try {\r\n const {\r\n resources,\r\n userName\r\n } = this.state;\r\n\r\n if (!resources) {\r\n RequestsLayout.getResources(this.idModule, this.idPage, this.resolveGetResources);\r\n }\r\n else {\r\n this.hideLoader();\r\n }\r\n Requests.isForgotPasswordEnabled(this.resolveIsForgotPasswordEnabled);\r\n\r\n if (userName) {\r\n this.onNext();\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.componentDidMount.name, e));\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n PasswordConfirmationStore.removePasswordValidationListener(this.onChangePasswordValidation);\r\n }\r\n // #endregion Lifecycle\r\n\r\n public render(): JSX.Element {\r\n const {\r\n classes,\r\n open,\r\n width,\r\n onClose,\r\n onGoSignUp\r\n } = this.props;\r\n\r\n const {\r\n alert,\r\n authMode,\r\n isLoading,\r\n isLoadingChangePassword,\r\n isLoadingNext,\r\n isLoadingSignIn,\r\n password,\r\n passwordModified,\r\n resources,\r\n stepNumber,\r\n uiCulture,\r\n userName,\r\n userNameModified,\r\n\r\n // #region Change Password\r\n openChangePassword,\r\n // #endregion Change Password\r\n\r\n // #region Forgot Password\r\n emailSent,\r\n isForgotPasswordEnabled,\r\n isLoadingSendEmail,\r\n isReCaptchaEnabled,\r\n openForgotPassword,\r\n reCaptchaSiteKey,\r\n reCaptchaError,\r\n userNameRecovery,\r\n userNameRecoveryModified\r\n // #endregion Forgot Password\r\n } = this.state;\r\n\r\n let contentPage: JSX.Element | undefined;\r\n if (resources && !isLoading) {\r\n\r\n if (openChangePassword) {\r\n contentPage = (\r\n \r\n \r\n {resources.btnCancel}\r\n \r\n \r\n {resources.btnChangePassword}\r\n \r\n \r\n )}\r\n id=\"changePasswordModal\"\r\n header={resources.lblChangePassword}\r\n maxWidth=\"md\"\r\n open={openChangePassword}\r\n onClose={this.onCloseChangePassword}\r\n >\r\n \r\n \r\n \r\n {resources.lblChangePasswordInstructions}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n else {\r\n let title: JSX.Element | undefined;\r\n let content: JSX.Element | JSX.Element[] | undefined;\r\n let button: JSX.Element | undefined;\r\n\r\n if (openForgotPassword) {\r\n title = (\r\n \r\n \r\n \r\n {resources.lblForgotPasswordTitle}\r\n \r\n \r\n \r\n );\r\n\r\n button = emailSent ? (\r\n \r\n {resources.btnClose}\r\n \r\n )\r\n : (\r\n \r\n \r\n {resources.btnCancel}\r\n \r\n \r\n {resources.btnSendEmail}\r\n \r\n \r\n );\r\n\r\n content = (\r\n
\r\n \r\n \r\n {!onClose && (\r\n <>\r\n {title}\r\n \r\n )}\r\n \r\n {emailSent ?\r\n Format.toString(resources.formatEmailSent, [userNameRecovery])\r\n : resources.lblForgotPasswordInstructions}\r\n \r\n \r\n \r\n {!emailSent && (\r\n \r\n )}\r\n \r\n \r\n {isReCaptchaEnabled && Boolean(reCaptchaSiteKey) && !emailSent && !isLoadingSendEmail && (\r\n \r\n \r\n \r\n \r\n {reCaptchaError && (\r\n \r\n \r\n {resources.lblReCaptchaRequired}\r\n \r\n \r\n )}\r\n \r\n )}\r\n {!onClose && (\r\n \r\n \r\n {button}\r\n \r\n \r\n )}\r\n
\r\n );\r\n }\r\n else {\r\n title = (\r\n <>\r\n \r\n \r\n \r\n {resources.lblLogInTitle}\r\n \r\n \r\n \r\n {alert && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {Boolean(onGoSignUp && stepNumber === 1) && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {stepNumber === 2 && (\r\n \r\n \r\n \r\n {resources.lblUseAnotherAccount}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n\r\n button = stepNumber === 1 ? (\r\n \r\n {resources.btnNext}\r\n \r\n ) : (stepNumber === 2\r\n && (!authMode || authMode === StoreMode.Identity || authMode === StoreMode.ActiveDirectory) ? (\r\n \r\n {resources.btnSingIn}\r\n \r\n ) : undefined);\r\n\r\n content = (\r\n
\r\n \r\n \r\n {!onClose && (\r\n <>\r\n {title}\r\n \r\n )}\r\n \r\n {stepNumber === 2\r\n && (!authMode || authMode === StoreMode.Identity || authMode === StoreMode.ActiveDirectory) && (\r\n \r\n )}\r\n \r\n \r\n {isForgotPasswordEnabled && (\r\n \r\n \r\n \r\n {resources.btnForgot}\r\n \r\n \r\n \r\n )}\r\n {!onClose && (\r\n \r\n \r\n {button}\r\n \r\n \r\n )}\r\n
\r\n );\r\n }\r\n\r\n if (onClose) {\r\n contentPage = (\r\n \r\n {content}\r\n \r\n );\r\n }\r\n else {\r\n contentPage = (\r\n \r\n \r\n {content}\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {contentPage}\r\n \r\n );\r\n }\r\n}\r\n// #endregion Component\r\n\r\n// Export: Component\r\nexport default withStyles(styles)(withWidth()(SignIn));","/* Copyright 2021 Ellucian Company L.P. and its affiliates.\r\n * File: IPasswordPolicy.ts */\r\n\r\nexport interface IPasswordPolicy {\r\n changePasswordUrl: string\r\n isLowerCaseRequired: boolean;\r\n isNumbersRequired: boolean;\r\n isSpecialCharacterRequired: boolean;\r\n isUpperCaseRequired: boolean;\r\n minimumLength: number;\r\n}\r\n\r\nexport interface IValidatePassword {\r\n areaName: string;\r\n password: string;\r\n}\r\n\r\nexport interface IPasswordPolicyResult {\r\n passwordValidation: IPasswordPolicyErrors;\r\n passwordMinLength: number;\r\n userAccountStatus: IPasswordPolicyErrors;\r\n status: number;\r\n userName: string;\r\n}\r\n\r\nexport enum IPasswordPolicyErrors {\r\n digits = 0,\r\n isEmpty = 1,\r\n lowerCase = 2,\r\n minLength = 3,\r\n specialCharacters = 4,\r\n upperCase = 5,\r\n newPasswordValid = 6,\r\n currentPasswordInvalid = 7,\r\n success = 8,\r\n unableToDefineUserName = 15,\r\n userAlreadyExists = 17,\r\n}","/* Copyright 2019 - 2021 Ellucian Company L.P. and its affiliates.\r\n * File: SignUp.ts */\r\n\r\n// Types\r\nimport { ILogData } from '@hedtech/powercampus-design-system/types/ILogData';\r\nimport { IIdentityAccount } from '../../Types/Account/IIdentityAccount';\r\nimport { IValidatePassword } from '../../Types/Generic/IPasswordPolicy';\r\n\r\n// Helpers\r\nimport Request from '@hedtech/powercampus-design-system/helpers/Request';\r\n\r\n// Functions for requests\r\nconst SignUpRequests = {\r\n getEmailRegExp(resolver: (json: string) => void, resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.getEmailRegExp.name, '/Settings/EmailRegExp', null, resolver, resolveError);\r\n },\r\n getPasswordPolicy(appArea: string,\r\n resolver: (json: string) => void,\r\n resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.getPasswordPolicy.name, '/Password/Policy', appArea, resolver, resolveError);\r\n },\r\n postSignUpApplication(account: IIdentityAccount,\r\n resolver: (json: string) => void,\r\n resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.postSignUpApplication.name, '/SignUp/Application', account, resolver, resolveError);\r\n },\r\n postSignUpConed(account: IIdentityAccount,\r\n resolver: (json: string) => void,\r\n resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.postSignUpConed.name, '/SignUp/ConEd', account, resolver, resolveError);\r\n },\r\n postValidatePassword(passwordModel: IValidatePassword,\r\n resolver: (json: string) => void,\r\n resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.postValidatePassword.name, '/Password/Validate', passwordModel, resolver, resolveError);\r\n },\r\n};\r\n\r\n// Export object with the requests\r\nexport default SignUpRequests;","/* Copyright 2019 - 2022 Ellucian Company L.P. and its affiliates.\r\n * File: SignUp.tsx\r\n * Type: Container component */\r\n\r\n// #region Imports\r\nimport React from 'react';\r\n\r\n// Core components\r\nimport Button from '@hedtech/powercampus-design-system/react/core/Button';\r\nimport Grid from '@hedtech/powercampus-design-system/react/core/Grid';\r\nimport Modal from '@hedtech/powercampus-design-system/react/core/Modal';\r\nimport Paragraph from '@hedtech/powercampus-design-system/react/core/Paragraph';\r\nimport PasswordConfirmation from '@hedtech/powercampus-design-system/react/components/PasswordConfirmation';\r\nimport Text from '@hedtech/powercampus-design-system/react/core/Text';\r\nimport TextField from '@hedtech/powercampus-design-system/react/core/TextField';\r\n\r\n// Types\r\nimport { IAccountValidations } from '@hedtech/powercampus-design-system/types/PasswordConfirmation/IAccountValidations';\r\nimport { IAlert } from '@hedtech/powercampus-design-system/types/IAlert';\r\nimport { IJsonResult } from '@hedtech/powercampus-design-system/types/IJsonResult';\r\nimport { ILogData } from '@hedtech/powercampus-design-system/types/ILogData';\r\nimport { ResultType } from '@hedtech/powercampus-design-system/types/ResultType';\r\nimport { IIdentityAccount, IIdentityAccountValidations } from '../../Types/Account/IIdentityAccount';\r\nimport { IPasswordPolicy, IPasswordPolicyResult, IPasswordPolicyErrors } from '../../Types/Generic/IPasswordPolicy';\r\nimport { ISignUpResources } from '../../Types/Resources/Generic/ISignUpResources';\r\n\r\n// Helpers\r\nimport Constants from '@hedtech/powercampus-design-system/helpers/Constants';\r\nimport { emailIsValid } from '@hedtech/powercampus-design-system/helpers/CharRegExp';\r\nimport LogData from '@hedtech/powercampus-design-system/helpers/LogData';\r\nimport PasswordValidation from '@hedtech/powercampus-design-system/helpers/PasswordValidation';\r\nimport Resolver from '@hedtech/powercampus-design-system/helpers/Resolver';\r\nimport Tokens from '@hedtech/powercampus-design-system/react/core/styles/Tokens';\r\nimport { createStyles, withStyles, WithStyles } from '@hedtech/powercampus-design-system/react/core/styles/withStyles';\r\n\r\n// Requests\r\nimport RequestsLayout from '@hedtech/powercampus-design-system/requests/LayoutRequests';\r\nimport Requests from '../../Requests/Generic/SignUp';\r\n\r\n// State Management\r\nimport LayoutActions from '@hedtech/powercampus-design-system/flux/actions/LayoutActions';\r\nimport PasswordConfirmationActions from '@hedtech/powercampus-design-system/flux/actions/PasswordConfirmationActions';\r\nimport PasswordConfirmationStore from '@hedtech/powercampus-design-system/flux/stores/PasswordConfirmationStore';\r\n// #endregion Imports\r\n\r\n// #region Types\r\nexport interface ISignUpProps {\r\n open?: boolean;\r\n type: 'ConEd' | 'Application' | 'SharedAccess';\r\n onAfterSignUp?: (userName?: string) => void;\r\n onClose?: () => void;\r\n onGoSignIn?: () => void;\r\n}\r\n\r\ninterface ISignUpState {\r\n anchorEl: any;\r\n account: IIdentityAccount;\r\n cannotCreateAccount: boolean;\r\n emailRegExp?: string;\r\n isLoading: boolean;\r\n isLoadingSave: boolean;\r\n password?: string;\r\n passwordPolicy?: IPasswordPolicy;\r\n resources?: ISignUpResources;\r\n accountValidations?: IAccountValidations;\r\n validations: IIdentityAccountValidations;\r\n}\r\n\r\nconst styles = createStyles({\r\n margin: {\r\n marginLeft: `-${Tokens.spacing40}`,\r\n marginTop: Tokens.spacing30,\r\n },\r\n popperText: {\r\n maxWidth: '15rem'\r\n },\r\n spacingButtons: {\r\n paddingTop: Tokens.spacing40\r\n },\r\n spacingInstructions: {\r\n paddingTop: Tokens.spacing40\r\n },\r\n textAlign: {\r\n textAlign: 'center'\r\n }\r\n});\r\n\r\ntype PropsWithStyles = ISignUpProps & WithStyles;\r\n// #endregion Types\r\n\r\n// #region Component\r\nclass SignUp extends React.Component {\r\n private idModule: string;\r\n private idPage: string;\r\n\r\n public readonly state: Readonly;\r\n\r\n public constructor(props) {\r\n super(props);\r\n\r\n // #region Initialize Variables and State\r\n this.idModule = 'Generic';\r\n this.idPage = 'SignUp';\r\n this.state = this.getInitialState();\r\n // #endregion Initialize Variables and State\r\n // #region Bind State Management Listeners\r\n PasswordConfirmationStore.addPasswordValidationListener(this.onChangePassword);\r\n // #endregion State Management Listeners\r\n }\r\n\r\n private getInitialState(): ISignUpState {\r\n let isLoading: boolean = true;\r\n let resources: ISignUpResources | undefined;\r\n if (this.state) {\r\n isLoading = this.state.isLoading;\r\n resources = this.state.resources;\r\n }\r\n return {\r\n account: {\r\n email: '',\r\n firstName: '',\r\n lastName: '',\r\n password: '',\r\n peopleId: ''\r\n },\r\n accountValidations: undefined,\r\n validations: {\r\n emailInvalid: false,\r\n emailModified: false,\r\n existingUser: false,\r\n firstNameModified: false,\r\n lastNameModified: false,\r\n },\r\n anchorEl: null,\r\n cannotCreateAccount: false,\r\n isLoading: isLoading,\r\n isLoadingSave: false,\r\n resources: resources\r\n };\r\n }\r\n\r\n // #region Events\r\n\r\n private onChangePassword = (): void => {\r\n try {\r\n const {\r\n account\r\n } = this.state;\r\n const password = PasswordConfirmationStore.getPassword();\r\n account.password = password;\r\n this.setState({\r\n password: password,\r\n account: account,\r\n accountValidations: PasswordConfirmationStore.getPasswordValidation()\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangePassword.name, e));\r\n }\r\n };\r\n\r\n private onChangeTextField = (event: React.ChangeEvent): void => {\r\n try {\r\n const {\r\n account,\r\n validations,\r\n emailRegExp,\r\n } = this.state;\r\n\r\n const id: string = event.target.id;\r\n const value: string = event.target.value;\r\n switch (id) {\r\n case 'txtFirstName':\r\n account.firstName = value;\r\n validations.firstNameModified = true;\r\n break;\r\n case 'txtLastName':\r\n account.lastName = value;\r\n validations.lastNameModified = true;\r\n break;\r\n case 'txtEmail':\r\n account.email = value;\r\n if (emailRegExp && account.email) {\r\n validations.emailInvalid = !emailIsValid(account.email, emailRegExp);\r\n }\r\n else {\r\n validations.emailInvalid = false;\r\n }\r\n validations.emailModified = true;\r\n break;\r\n }\r\n this.setState({\r\n account: account,\r\n validations: validations\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeTextField.name, e));\r\n }\r\n };\r\n\r\n private onCloseModal = (): void => {\r\n try {\r\n const {\r\n onClose\r\n } = this.props;\r\n\r\n const {\r\n isLoadingSave\r\n } = this.state;\r\n\r\n if (onClose && !isLoadingSave) {\r\n this.setState(this.getInitialState());\r\n onClose();\r\n PasswordConfirmationActions.setPasswordValidation();\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCloseModal.name, e));\r\n }\r\n };\r\n\r\n private onCreateAccount = (): void => {\r\n try {\r\n const {\r\n type\r\n } = this.props;\r\n const {\r\n account,\r\n accountValidations,\r\n isLoadingSave,\r\n password,\r\n validations\r\n } = this.state;\r\n let isValid: boolean = true;\r\n if (!isLoadingSave) {\r\n validations.emailModified = true;\r\n validations.firstNameModified = true;\r\n validations.lastNameModified = true;\r\n if (accountValidations) {\r\n let componentValidations: IAccountValidations = PasswordValidation.validatePassword(accountValidations, password,\r\n PasswordConfirmationStore.getPasswordPolicy());\r\n componentValidations = PasswordValidation.validateConfirmPassword(accountValidations, accountValidations.confirmPassword, password);\r\n PasswordConfirmationActions.setPasswordValidation(password, componentValidations);\r\n if (componentValidations.hasErrors) {\r\n isValid = false;\r\n }\r\n }\r\n if (isValid && Boolean(account.email)\r\n && !validations.emailInvalid\r\n && Boolean(account.firstName)\r\n && Boolean(account.lastName)\r\n && Boolean(account.password)) {\r\n this.showLoaderSave();\r\n switch (type) {\r\n case 'Application':\r\n Requests.postSignUpApplication(account, this.resolvePostSignUp, this.logError);\r\n break;\r\n case 'ConEd':\r\n Requests.postSignUpConed(account, this.resolvePostSignUp, this.logError);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCreateAccount.name, e));\r\n }\r\n };\r\n\r\n private onGoSignInModal = (): void => {\r\n try {\r\n const {\r\n onGoSignIn\r\n } = this.props;\r\n\r\n const {\r\n isLoadingSave\r\n } = this.state;\r\n\r\n if (onGoSignIn && !isLoadingSave) {\r\n this.setState(this.getInitialState());\r\n onGoSignIn();\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onGoSignInModal.name, e));\r\n }\r\n };\r\n\r\n // #endregion Events\r\n\r\n // #region Loader Functions\r\n private hideAllLoaders = (): void => {\r\n this.setState({\r\n isLoading: false,\r\n isLoadingSave: false\r\n });\r\n };\r\n\r\n private hideLoaderSave = (): void => {\r\n this.setState({\r\n isLoadingSave: false\r\n });\r\n };\r\n\r\n private showLoaderSave = (): void => {\r\n this.setState({\r\n isLoadingSave: true\r\n });\r\n };\r\n // #endregion Loader Functions\r\n\r\n // #region Error Functions\r\n private logError(logData: ILogData): void {\r\n this.hideAllLoaders();\r\n LayoutActions.setLogData(logData);\r\n }\r\n\r\n private showError(message?: string): void {\r\n this.hideAllLoaders();\r\n LayoutActions.setAlert({ message: message, messageType: ResultType.error } as IAlert);\r\n }\r\n // #endregion Error Functions\r\n\r\n // #region Resolvers\r\n private resolveGetEmailRegExp = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveGetEmailRegExp.name, this.hideAllLoaders);\r\n if (result?.status) {\r\n this.setState({\r\n emailRegExp: result.data\r\n });\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveGetEmailRegExp.name, e));\r\n }\r\n };\r\n\r\n private resolveGetResources = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveGetResources.name, this.hideAllLoaders);\r\n if (result?.status) {\r\n this.setState({\r\n resources: result.data,\r\n isLoading: false,\r\n });\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveGetResources.name, e));\r\n }\r\n };\r\n\r\n private resolvePostSignUp = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolvePostSignUp.name, this.hideAllLoaders);\r\n if (result?.status) {\r\n const resultSignUp: IPasswordPolicyResult = result.data;\r\n if (resultSignUp.status === 0) {\r\n const {\r\n onAfterSignUp\r\n } = this.props;\r\n\r\n const {\r\n resources\r\n } = this.state;\r\n\r\n if (resources) {\r\n LayoutActions.setAlert({\r\n message: resources.lblCreatedSuccessfully,\r\n messageType: ResultType.success\r\n } as IAlert);\r\n if (onAfterSignUp) {\r\n onAfterSignUp(result.data.userName);\r\n }\r\n PasswordConfirmationActions.setPasswordValidation();\r\n this.setState(this.getInitialState());\r\n }\r\n }\r\n else if (resultSignUp.status === -1) {\r\n if (resultSignUp.userAccountStatus == IPasswordPolicyErrors.unableToDefineUserName) {\r\n this.setState({\r\n cannotCreateAccount: true\r\n });\r\n PasswordConfirmationActions.setPasswordValidation();\r\n }\r\n else if (resultSignUp.userAccountStatus == IPasswordPolicyErrors.userAlreadyExists) {\r\n const {\r\n validations\r\n } = this.state;\r\n\r\n if (validations) {\r\n validations.existingUser = true;\r\n this.setState({\r\n validations: validations,\r\n password: '',\r\n cannotCreateAccount: true\r\n });\r\n PasswordConfirmationActions.setPasswordValidation();\r\n }\r\n }\r\n }\r\n else {\r\n this.showError();\r\n }\r\n this.hideLoaderSave();\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolvePostSignUp.name, e));\r\n }\r\n };\r\n // #endregion Resolvers\r\n\r\n // #region Lifecycle\r\n public componentDidMount(): void {\r\n try {\r\n RequestsLayout.getResources(this.idModule, this.idPage,\r\n this.resolveGetResources,\r\n this.logError);\r\n Requests.getEmailRegExp(this.resolveGetEmailRegExp, this.logError);\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.componentDidMount.name, e));\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n PasswordConfirmationStore.removePasswordValidationListener(this.onChangePassword);\r\n }\r\n\r\n // #endregion Lifecycle\r\n\r\n public render(): JSX.Element {\r\n const {\r\n classes,\r\n open,\r\n onClose,\r\n onGoSignIn,\r\n type,\r\n } = this.props;\r\n\r\n const {\r\n account,\r\n cannotCreateAccount,\r\n isLoading,\r\n isLoadingSave,\r\n resources,\r\n validations\r\n } = this.state;\r\n\r\n let contentPage: JSX.Element | undefined;\r\n if (resources && !isLoading) {\r\n let title: JSX.Element | undefined;\r\n let newAccountContent: JSX.Element | JSX.Element[] | undefined;\r\n let button: JSX.Element | undefined;\r\n\r\n // #region First Name\r\n let errorFirstName: boolean = false;\r\n let errorTextFirstName: string | undefined;\r\n if (validations.firstNameModified) {\r\n errorFirstName = !Boolean(account.firstName);\r\n errorTextFirstName = errorFirstName ?\r\n resources.lblFirstNameRequired\r\n : undefined;\r\n }\r\n // #endregion First Name\r\n\r\n // #region Last Name\r\n let errorLastName: boolean = false;\r\n let errorTextLastName: string | undefined;\r\n if (validations.lastNameModified) {\r\n errorLastName = !Boolean(account.lastName);\r\n errorTextLastName = errorLastName ?\r\n resources.lblLastNameRequired\r\n : undefined;\r\n }\r\n // #endregion Last Name\r\n\r\n // #region Email\r\n let errorEmail: boolean = false;\r\n let errorTextEmail: string | undefined;\r\n if (validations.emailModified) {\r\n errorEmail = !Boolean(account.email)\r\n || validations.emailInvalid\r\n || validations.existingUser;\r\n errorTextEmail = !Boolean(account.email) ?\r\n resources.lblEmailRequired\r\n : (validations.emailInvalid ?\r\n resources.lblEmailInvalid\r\n : validations.existingUser ?\r\n resources.lblExistingUser\r\n : undefined);\r\n }\r\n // #endregion Email\r\n\r\n if (!cannotCreateAccount) {\r\n title = (\r\n <>\r\n \r\n {resources.lblCreateAccount}\r\n \r\n {onGoSignIn && (\r\n \r\n )}\r\n \r\n );\r\n button = (\r\n \r\n {resources.btnCreateAccount}\r\n \r\n );\r\n }\r\n\r\n if (cannotCreateAccount) {\r\n title = (\r\n <>\r\n \r\n {resources.lblCreateAccount}\r\n \r\n \r\n );\r\n newAccountContent = (\r\n \r\n \r\n \r\n \r\n {resources.lblCannotCreateAccount}\r\n \r\n \r\n \r\n );\r\n }\r\n else {\r\n newAccountContent = (\r\n <>\r\n {!onClose && (\r\n \r\n \r\n {title}\r\n \r\n \r\n )}\r\n\r\n \r\n \r\n \r\n \r\n \r\n {resources.lblContactInformation}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )]}\r\n />\r\n \r\n \r\n\r\n {!onClose && (\r\n \r\n \r\n {button}\r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n\r\n if (onClose) {\r\n contentPage = (\r\n \r\n {newAccountContent}\r\n \r\n );\r\n }\r\n else {\r\n contentPage = (\r\n <>\r\n {newAccountContent}\r\n \r\n );\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {contentPage}\r\n \r\n );\r\n }\r\n}\r\n// #endregion Component\r\n\r\n// Export: Component\r\nexport default withStyles(styles)(SignUp);","/* Copyright 2019 Ellucian Company L.P. and its affiliates.\r\n * File: AddressSearchModal.tsx\r\n * Type: Presentation component */\r\n\r\n// #region Imports\r\nimport React from 'react';\r\n\r\n// Core components\r\nimport Button, { ButtonGroup } from '@hedtech/powercampus-design-system/react/core/Button';\r\nimport Grid from '@hedtech/powercampus-design-system/react/core/Grid';\r\nimport Link from '@hedtech/powercampus-design-system/react/core/Link';\r\nimport Modal from '@hedtech/powercampus-design-system/react/core/Modal';\r\nimport Pagination from '@hedtech/powercampus-design-system/react/core/Pagination';\r\nimport Table, { TableBody, TableCell, TableHead, TableRow } from '@hedtech/powercampus-design-system/react/core/Table';\r\nimport Text from '@hedtech/powercampus-design-system/react/core/Text';\r\nimport TextField from '@hedtech/powercampus-design-system/react/core/TextField';\r\n\r\n// Types\r\nimport { IAddress } from '../../../Types/Account/IAddress';\r\nimport { IAddressSearchModal } from '../../../Types/Resources/Admissions/IApplicationFormResources';\r\n\r\n// #endregion Types\r\n\r\n// #region Internal types\r\nexport interface IAddressSearchModalProps {\r\n addresses?: IAddress[];\r\n open: boolean;\r\n pageNumber: number;\r\n pageSize: number;\r\n rowsPerPageOptions: number[];\r\n totalAddress: number;\r\n zipCode?: string;\r\n\r\n // events\r\n onChangePage: (event: any, page: number) => void;\r\n onChangeRowsPerPage: (event: any) => void;\r\n onChangeTextField?: (event: any) => void;\r\n onClear: () => void;\r\n onClickLink: (zipCode?: string, city?: string, stateProvinceId?: number, countryId?: number,\r\n countyId?: number) => void;\r\n onClose: () => void;\r\n onSearch: () => void;\r\n\r\n // resources\r\n resources: IAddressSearchModal;\r\n}\r\n// #endregion Internal types\r\n\r\n// #region Component\r\nconst AddressSearchModal: React.FC = (props: IAddressSearchModalProps): JSX.Element => {\r\n const {\r\n addresses,\r\n open,\r\n pageNumber,\r\n pageSize,\r\n rowsPerPageOptions,\r\n totalAddress,\r\n zipCode,\r\n\r\n // events\r\n onChangePage,\r\n onChangeRowsPerPage,\r\n onChangeTextField,\r\n onClear,\r\n onClickLink,\r\n onClose,\r\n onSearch,\r\n\r\n // resources\r\n resources\r\n } = props;\r\n\r\n const footerModal: JSX.Element = (\r\n \r\n \r\n {resources.btnSearch}\r\n \r\n \r\n {resources.btnClear}\r\n \r\n \r\n );\r\n\r\n let table: JSX.Element | undefined;\r\n\r\n if (addresses && addresses.length > 0) {\r\n const tableBody: JSX.Element[] = [];\r\n addresses.forEach((address, j) => {\r\n tableBody.push(\r\n \r\n \r\n \r\n \r\n {address.zipCode}\r\n \r\n \r\n \r\n \r\n \r\n {address.city}\r\n \r\n \r\n \r\n \r\n {address.state}\r\n \r\n \r\n \r\n \r\n {address.county}\r\n \r\n \r\n \r\n \r\n {address.country}\r\n \r\n \r\n \r\n );\r\n });\r\n\r\n table = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {resources.lblZipCode}\r\n \r\n \r\n {resources.lblCity}\r\n \r\n \r\n {resources.lblState}\r\n \r\n \r\n {resources.lblCounty}\r\n \r\n \r\n {resources.lblCountry}\r\n \r\n \r\n \r\n \r\n {tableBody}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n else {\r\n table = (\r\n \r\n {resources.lblNoResults}\r\n \r\n );\r\n }\r\n\r\n let paginationComponent: JSX.Element | undefined;\r\n if (addresses && addresses.length > 0) {\r\n paginationComponent = (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n let bodyModal: JSX.Element;\r\n bodyModal = (\r\n <>\r\n \r\n \r\n \r\n \r\n
\r\n \r\n {footerModal}\r\n \r\n
\r\n
\r\n {table}\r\n {paginationComponent}\r\n \r\n );\r\n\r\n return (\r\n \r\n {bodyModal}\r\n \r\n );\r\n};\r\n// #endregion Component\r\n\r\n// Export: Component\r\nexport default AddressSearchModal;","/* Copyright 2018 - 2022 Ellucian Company L.P. and its affiliates.\r\n * File: FieldsHandle.tsx\r\n * Type: Presentation component */\r\n\r\n// #region Imports\r\nimport React from 'react';\r\n\r\n// Core components\r\nimport Button from '@hedtech/powercampus-design-system/react/core/Button';\r\nimport Checkbox from '@hedtech/powercampus-design-system/react/core/Checkbox';\r\nimport DatePicker from '@hedtech/powercampus-design-system/react/core/DatePicker';\r\nimport Dropdown from '@hedtech/powercampus-design-system/react/core/Dropdown';\r\nimport ExpansionPanel from '@hedtech/powercampus-design-system/react/core/ExpansionPanel';\r\nimport FormControl, { FormControlLabel, FormGroup } from '@hedtech/powercampus-design-system/react/core/FormControl';\r\nimport Grid from '@hedtech/powercampus-design-system/react/core/Grid';\r\nimport Icon from '@hedtech/powercampus-design-system/react/core/Icon';\r\nimport IconButton from '@hedtech/powercampus-design-system/react/core/IconButton';\r\nimport List from '@hedtech/powercampus-design-system/react/core/List';\r\nimport Paragraph, { TextColor, TextSize } from '@hedtech/powercampus-design-system/react/core/Paragraph';\r\nimport RadioGroup from '@hedtech/powercampus-design-system/react/core/RadioGroup';\r\nimport Text from '@hedtech/powercampus-design-system/react/core/Text';\r\nimport TextField from '@hedtech/powercampus-design-system/react/core/TextField';\r\nimport TextLink from '@hedtech/powercampus-design-system/react/core/TextLink';\r\n\r\n// Internal components\r\nimport { IApplicationHandler } from '../../../Types/Resources/Admissions/IApplicationFormResources';\r\n\r\n// Helpers\r\nimport Tokens from '@hedtech/powercampus-design-system/react/core/styles/Tokens';\r\nimport { createStyles, withStyles, WithStyles } from '@hedtech/powercampus-design-system/react/core/styles/withStyles';\r\nimport { isWidthUp, withWidth, WithWidth } from '@hedtech/powercampus-design-system/react/core/withWidth';\r\n\r\n// Types\r\nimport { IDropDownOption } from '@hedtech/powercampus-design-system/types/IDropDownOption';\r\nimport { IApplicationErrors } from '../../../Types/Applications/IApplicationErrors';\r\nimport { IApplicationIpeds } from '../../../Types/Applications/IApplicationIpeds';\r\nimport { IFieldForm } from '../../../Types/Form/IFieldForm';\r\n// #endregion\r\n\r\n// #region Internal types\r\nexport interface IFieldsHandlerProps {\r\n dateTimeCulture: string;\r\n errors: IApplicationErrors[];\r\n expandedPanelId: boolean | string;\r\n fields: IFieldForm[];\r\n governmentIdFormat: string;\r\n groupIndex: number;\r\n isExpansionPanel: boolean;\r\n isHorizontalAligned: boolean;\r\n shortDatePattern: string;\r\n stepIndex: number;\r\n\r\n resources: IApplicationHandler;\r\n\r\n onClickButton: (event: React.MouseEvent) => void;\r\n onChangeCheckBox: (event: React.ChangeEvent) => void;\r\n onChangeDateTimeField: (date: string, id: string, isValid: boolean) => void;\r\n onDeleteItem: (event: any) => void;\r\n onChangeDropDown: (optionSelected: IDropDownOption, id: string) => void;\r\n onChangeExpansionPanel: (label: string) => void;\r\n onChangeListCheckbox: (event: any) => void;\r\n onChangeRadioGroup: (event: React.ChangeEvent, value: string) => void;\r\n onChangeTextField: (event: React.ChangeEvent) => void;\r\n}\r\n\r\nconst styles = createStyles({\r\n category: {\r\n marginBottom: Tokens.spacing30,\r\n marginLeft: Tokens.spacing50\r\n },\r\n federalCategory: {\r\n '& > span:nth-child(2)': {\r\n fontWeight: Tokens.fontWeightBold\r\n },\r\n marginBottom: Tokens.spacing30\r\n }\r\n});\r\n\r\ntype PropsWithStyles = IFieldsHandlerProps & WithStyles & WithWidth;\r\n// #endregion\r\n\r\n// #region Component\r\nconst FieldsHandler: React.FC = (props: PropsWithStyles): JSX.Element => {\r\n const {\r\n classes,\r\n dateTimeCulture,\r\n errors,\r\n expandedPanelId,\r\n fields,\r\n governmentIdFormat,\r\n groupIndex,\r\n isExpansionPanel,\r\n isHorizontalAligned,\r\n resources,\r\n shortDatePattern,\r\n stepIndex,\r\n width,\r\n\r\n onChangeCheckBox,\r\n onChangeDropDown,\r\n onChangeDateTimeField,\r\n onChangeExpansionPanel,\r\n onChangeListCheckbox,\r\n onChangeRadioGroup,\r\n onChangeTextField,\r\n onClickButton,\r\n onDeleteItem\r\n } = props;\r\n\r\n const elements: JSX.Element[] = [];\r\n\r\n // General Sections Arrays\r\n let ids: string[] = [];\r\n const sectionIndexes: number[] = [];\r\n let sectionElements: JSX.Element[] = [];\r\n const sectionContainers: JSX.Element[] = [];\r\n let sectionIndex: number;\r\n\r\n // Header Arrays\r\n let headerDeleteElement: JSX.Element[] = [];\r\n let headerTitleElements: string[] = [];\r\n const firstHeaderTitleElement: string[] = [];\r\n\r\n const getId = (idStringArray: string[], index: number): number => Number(idStringArray[index]);\r\n\r\n const setHeaderTitleElements = (field: IFieldForm): void => {\r\n if (field.isExpansionPanelHeader) {\r\n if (field.value) {\r\n if (headerTitleElements[0] === resources.lblNew) {\r\n headerTitleElements.splice(0, 1);\r\n }\r\n if (field.componentType && field.componentType === 'Dropdown') {\r\n let selectedOption: number = 0;\r\n if (field.data && field.data.options && field.data.options.length > 0) {\r\n selectedOption =\r\n field.data.options.findIndex(x => x.value === field.value);\r\n if (selectedOption > -1) {\r\n headerTitleElements.push(`${field.data.options[selectedOption].description} `);\r\n }\r\n }\r\n }\r\n else {\r\n headerTitleElements.push(`${field.value} `);\r\n }\r\n }\r\n if (headerTitleElements.length === 0) {\r\n headerTitleElements.push(resources.lblNew);\r\n }\r\n }\r\n };\r\n\r\n const fillElements = (fieldElement: JSX.Element, field: IFieldForm): void => {\r\n if (isExpansionPanel && field.componentType === 'DeleteIconButton') {\r\n headerDeleteElement.push(fieldElement);\r\n }\r\n else {\r\n sectionElements.push(fieldElement);\r\n }\r\n };\r\n\r\n const setMultipleFields = (field: IFieldForm, fieldElement: JSX.Element, id: string) => {\r\n ids = field.data.id.split('|');\r\n sectionIndex = errors[getId(ids, 1)].groupErrors[getId(ids, 2)].sectionErrors.findIndex(\r\n section => section.sectionIndex === Number(getId(ids, 4))\r\n );\r\n // Verify if section exists\r\n if (sectionIndexes.includes(getId(ids, 4))) {\r\n setHeaderTitleElements(field);\r\n fillElements(fieldElement, field);\r\n }\r\n // Create a new section\r\n else {\r\n sectionElements = [];\r\n headerDeleteElement = [];\r\n headerTitleElements = [];\r\n\r\n setHeaderTitleElements(field);\r\n fillElements(fieldElement, field);\r\n sectionIndexes.push(getId(ids, 4));\r\n\r\n sectionContainers.push(\r\n isExpansionPanel ? (\r\n -1 ?\r\n errors[getId(ids, 1)].groupErrors[getId(ids, 2)].sectionErrors.length > 0 ?\r\n errors[getId(ids, 1)].groupErrors[getId(ids, 2)].sectionErrors[sectionIndex].isSectionError\r\n : false\r\n : false}\r\n background=\"gray\"\r\n expandIcon={}\r\n expanded={expandedPanelId === `panel|${stepIndex}|${groupIndex}|${getId(ids, 4)}`}\r\n header={(\r\n \r\n \r\n 0 && sectionIndex > -1 ?\r\n errors[getId(ids, 1)].groupErrors[getId(ids, 2)].sectionErrors[sectionIndex].isSectionError ?\r\n 'error' : undefined\r\n : undefined}\r\n >\r\n {headerTitleElements}\r\n \r\n \r\n \r\n {headerDeleteElement}\r\n \r\n \r\n )}\r\n key={`expansionPanel|${field.data.id}|${id}`}\r\n onChange={onChangeExpansionPanel(`panel|${stepIndex}|${groupIndex}|${getId(ids, 4)}`)}\r\n >\r\n \r\n {sectionElements}\r\n \r\n \r\n ) : (\r\n \r\n \r\n {sectionElements}\r\n \r\n \r\n )\r\n );\r\n }\r\n };\r\n if (errors) {\r\n if (errors[stepIndex].groupErrors[groupIndex].groupId === 'addressInformationGroup') {\r\n firstHeaderTitleElement.push(`${resources.lblPrimary} `);\r\n }\r\n }\r\n\r\n fields.forEach((field, j) => {\r\n let fieldElement: JSX.Element | undefined;\r\n\r\n let id: string;\r\n if (field.data.modified) {\r\n id = `${field.data.id}`;\r\n }\r\n else {\r\n id = `${field.data.id}|${stepIndex}|${groupIndex}|${j}`;\r\n }\r\n\r\n let fieldSize: false | 'auto' | true | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\r\n switch (field.gridSize) {\r\n case 'XS':\r\n fieldSize = 2;\r\n break;\r\n case 'S':\r\n fieldSize = 3;\r\n break;\r\n case 'M':\r\n fieldSize = 4;\r\n break;\r\n case 'L':\r\n fieldSize = 6;\r\n break;\r\n case 'XL':\r\n fieldSize = 12;\r\n break;\r\n default:\r\n fieldSize = 12;\r\n }\r\n\r\n switch (field.componentType) {\r\n case 'Button':\r\n fieldSize = isHorizontalAligned ? 3 : fieldSize;\r\n fieldElement = (\r\n \r\n \r\n {field.data.label}\r\n \r\n \r\n );\r\n break;\r\n case 'TextField':\r\n if (id.substr(0, 'postalCodeId'.length) === 'postalCodeId' ||\r\n id.substr(0, 'educationEtsCodeId'.length) === 'educationEtsCodeId') {\r\n let buttonId: string = '';\r\n let isPostalCode: boolean = false;\r\n if (field.data.modified) {\r\n if (id.substr(0, 'postalCodeId'.length) === 'postalCodeId') {\r\n buttonId = id.replace('postalCodeId', 'postalCodeButtonId');\r\n }\r\n if (id.substr(0, 'educationEtsCodeId'.length) === 'educationEtsCodeId') {\r\n buttonId = id.replace('educationEtsCodeId', 'educationEtsCodeButtonId');\r\n }\r\n }\r\n else {\r\n if (id.substr(0, 'postalCodeId'.length) === 'postalCodeId') {\r\n buttonId = `postalCodeButtonId|${stepIndex}|${groupIndex}|${j + 1}`;\r\n isPostalCode = true;\r\n }\r\n if (id.substr(0, 'educationEtsCodeId'.length) === 'educationEtsCodeId') {\r\n buttonId = `educationEtsCodeButtonId|${stepIndex}|${groupIndex}|${j + 1}`;\r\n }\r\n }\r\n\r\n fieldElement = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {resources.lblSearch}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n else {\r\n let format: string | undefined;\r\n if (id.substr(0, 'governmentId'.length) === 'governmentId' && governmentIdFormat) {\r\n format = governmentIdFormat;\r\n }\r\n\r\n fieldElement = (\r\n \r\n \r\n \r\n );\r\n }\r\n break;\r\n\r\n case 'Dropdown':\r\n const emptyOption: IDropDownOption = {\r\n description: String(resources.lblSelect),\r\n value: ''\r\n };\r\n let exist: boolean = false;\r\n if (field.default && field.data.options) {\r\n field.data.options.forEach(option => {\r\n if (option.value.toString() === field.default.toString()) {\r\n exist = true;\r\n }\r\n });\r\n }\r\n fieldElement = (\r\n \r\n \r\n \r\n );\r\n break;\r\n\r\n case 'Checkbox':\r\n let checked: boolean = false;\r\n if (field.value !== undefined) {\r\n checked = field.value;\r\n }\r\n fieldElement = (\r\n \r\n \r\n \r\n );\r\n break;\r\n\r\n case 'DatePicker':\r\n fieldElement = (\r\n \r\n \r\n \r\n );\r\n break;\r\n\r\n case 'DeleteIconButton':\r\n fieldSize = isHorizontalAligned ? 1 : fieldSize;\r\n const idDelete: string = field.data.id;\r\n fieldElement = (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n break;\r\n\r\n case 'CheckboxList':\r\n let messageRequired: JSX.Element | undefined;\r\n if (field.data.error && field.isRequired) {\r\n messageRequired = (\r\n \r\n {field.data.helperText}\r\n \r\n );\r\n }\r\n else {\r\n messageRequired = undefined;\r\n }\r\n const chkElements: JSX.Element[] = [];\r\n let isCheck: boolean;\r\n if (field.data.options) {\r\n field.data.options.forEach((option, i) => {\r\n isCheck = false;\r\n if (field.value) {\r\n const array: string[] = Object.values(field.value.split(','));\r\n if (field.value && array.length > 0) {\r\n const index: number = array.findIndex(x => x === option.value.toString());\r\n if (index > -1) {\r\n isCheck = true;\r\n }\r\n }\r\n }\r\n chkElements.push(\r\n \r\n )\r\n }\r\n label={option.description}\r\n key={`${field.data.id}|list|${i}`}\r\n />\r\n );\r\n });\r\n }\r\n fieldElement = (\r\n \r\n {messageRequired}\r\n {field.data.label ? (\r\n \r\n {field.isRequired ? `${field.data.label} *` : `${field.data.label}`}\r\n \r\n ) : undefined}\r\n \r\n \r\n {chkElements}\r\n \r\n \r\n \r\n );\r\n break;\r\n\r\n case 'Text':\r\n const errorColor: TextColor | undefined = field.data.error ? 'error' : undefined;\r\n let colorText: TextColor | undefined;\r\n if (!errorColor) {\r\n colorText = field.color ? field.color : undefined;\r\n }\r\n else {\r\n colorText = errorColor;\r\n }\r\n const size: TextSize | undefined = field.size;\r\n\r\n if (!field.isWithLink) {\r\n fieldElement = (\r\n \r\n \r\n {field.data.label}\r\n \r\n \r\n );\r\n }\r\n else {\r\n if (field.actionUrl && field.data.label) {\r\n const actions: string[] = field.actionUrl.split('|');\r\n fieldElement = (\r\n \r\n {\r\n if (action.substr(0, 'mailto:'.length) === 'mailto:' ||\r\n action.substr(0, 'tel:'.length) === 'tel:') {\r\n return ((_event: React.MouseEvent) => {\r\n window.location.href = `${action}`;\r\n });\r\n }\r\n else {\r\n return ((_event: React.MouseEvent) => {\r\n window.open(`${action}`, '_blank');\r\n });\r\n }\r\n })\r\n }\r\n />\r\n \r\n );\r\n }\r\n }\r\n break;\r\n\r\n case 'RadioGroup':\r\n const options: IDropDownOption[] = [];\r\n fieldElement = (\r\n \r\n \r\n {field.data.label}\r\n \r\n \r\n \r\n );\r\n break;\r\n\r\n case 'NestedCheckboxList':\r\n const array: IApplicationIpeds[] = [];\r\n if (field.value) {\r\n const ipedsArray = field.value.split(',');\r\n ipedsArray.forEach(iped => {\r\n const ipedItem = iped.split('$');\r\n if (ipedItem[0] !== '') {\r\n if (ipedItem.length > 1) {\r\n array.push({\r\n ipedsEthnicityId: ipedItem[1],\r\n ipedsFederalCategoryId: ipedItem[0]\r\n });\r\n }\r\n else {\r\n array.push({\r\n ipedsFederalCategoryId: ipedItem[0]\r\n });\r\n }\r\n }\r\n });\r\n }\r\n let errorMessage: JSX.Element | undefined;\r\n if (field.data.error) {\r\n errorMessage = (\r\n \r\n {field.data.helperText}\r\n \r\n );\r\n }\r\n else {\r\n errorMessage = undefined;\r\n }\r\n const elementsList: JSX.Element[] = [];\r\n if (field.data.complexOptions && field.data.complexOptions.length > 0) {\r\n field.data.complexOptions.forEach(complexItem => {\r\n const elements: JSX.Element[] = [];\r\n if (complexItem.options && complexItem.options.length > 0) {\r\n complexItem.options.forEach(item => {\r\n let childIsChecked: boolean = false;\r\n if (array.length > 0) {\r\n let index: number = -1;\r\n index =\r\n array.findIndex(x =>\r\n (x.ipedsEthnicityId ?\r\n x.ipedsEthnicityId.toString() : '') === item.value.toString() &&\r\n x.ipedsFederalCategoryId.toString() === complexItem.value.toString());\r\n if (index > -1) {\r\n childIsChecked = true;\r\n }\r\n }\r\n elements.push(\r\n \r\n )\r\n }\r\n label={item.description}\r\n />\r\n );\r\n });\r\n }\r\n let parentIsChecked: boolean = false;\r\n if (array.length > 0) {\r\n let index: number = -1;\r\n index =\r\n array.findIndex(x =>\r\n (x.ipedsFederalCategoryId ?\r\n x.ipedsFederalCategoryId.toString() : '') === complexItem.value.toString());\r\n if (index > -1) {\r\n parentIsChecked = true;\r\n }\r\n }\r\n elementsList.push(\r\n <>\r\n \r\n )\r\n }\r\n label={complexItem.description}\r\n />\r\n {elements}\r\n \r\n );\r\n });\r\n }\r\n fieldElement = (\r\n \r\n {field.data.label ? (\r\n \r\n {field.isRequired ? `${field.data.label} *` : `${field.data.label}`}\r\n \r\n ) : undefined}\r\n \r\n {errorMessage}\r\n \r\n \r\n {elementsList}\r\n \r\n \r\n \r\n \r\n );\r\n break;\r\n case 'Link':\r\n if (field.data.label) {\r\n fieldElement = (\r\n \r\n \r\n {field.data.label}\r\n \r\n \r\n );\r\n }\r\n break;\r\n case 'IconLinkEmail':\r\n if (field.data.label) {\r\n fieldElement = (\r\n \r\n { if (field.actionUrl) { window.location.href = field.actionUrl } }}\r\n >\r\n {field.data.label}\r\n \r\n \r\n );\r\n }\r\n break;\r\n case 'IconLinkPhone':\r\n if (field.data.label) {\r\n fieldElement = (\r\n \r\n { if (field.actionUrl) { window.location.href = field.actionUrl } }}\r\n >\r\n {field.data.label}\r\n \r\n \r\n );\r\n }\r\n break;\r\n case 'Divider':\r\n fieldElement = (\r\n \r\n
\r\n
\r\n );\r\n break;\r\n case 'Image':\r\n fieldElement = (\r\n \r\n \r\n \r\n );\r\n break;\r\n case 'HtmlElement':\r\n fieldElement = (\r\n \r\n \r\n
\r\n \r\n \r\n );\r\n break;\r\n }\r\n\r\n /* Determines the expansion panel header\r\n * for the first element of a group */\r\n if (field.isExpansionPanelHeader && field.value) {\r\n if (!field.data.modified) {\r\n if (field.componentType && field.componentType === 'Dropdown') {\r\n let selectedOption: number = 0;\r\n if (field.data && field.data.options && field.data.options.length > 0) {\r\n selectedOption =\r\n field.data.options.findIndex(x => x.value === field.value);\r\n if (selectedOption > -1) {\r\n firstHeaderTitleElement.push(`${field.data.options[selectedOption].description} `);\r\n }\r\n }\r\n }\r\n else {\r\n firstHeaderTitleElement.push(`${field.value} `);\r\n }\r\n }\r\n }\r\n\r\n /* Determines if the element is copied */\r\n if (fieldElement) {\r\n if (field.data.modified) {\r\n setMultipleFields(field, fieldElement, id);\r\n }\r\n else {\r\n elements.push(fieldElement);\r\n }\r\n }\r\n });\r\n\r\n return (\r\n isExpansionPanel && sectionContainers.length > 0 ? (\r\n <>\r\n }\r\n header={(\r\n \r\n {firstHeaderTitleElement.length > 0 ? firstHeaderTitleElement : resources.lblNew}\r\n \r\n )}\r\n onChange={onChangeExpansionPanel(`panel|${stepIndex}|${groupIndex}`)}\r\n >\r\n \r\n {elements}\r\n \r\n \r\n {sectionContainers}\r\n \r\n ) : (\r\n <>\r\n \r\n {elements}\r\n \r\n {sectionContainers}\r\n \r\n\r\n ));\r\n};\r\n// #endregion\r\n\r\n// Export: Component\r\nexport default withStyles(styles)(withWidth()(FieldsHandler));","/* Copyright 2019 Ellucian Company L.P. and its affiliates.\r\n* File: FieldsGroupHandler.tsx\r\n* Type: Presentation component */\r\n\r\n// #region Imports\r\nimport React from 'react';\r\n\r\n// Internal components\r\nimport { IApplicationHandler } from '../../../Types/Resources/Admissions/IApplicationFormResources';\r\nimport FieldsHandler from './FieldsHandler';\r\n\r\n// Core components\r\nimport Button from '@hedtech/powercampus-design-system/react/core/Button';\r\nimport Grid from '@hedtech/powercampus-design-system/react/core/Grid';\r\nimport Text from '@hedtech/powercampus-design-system/react/core/Text';\r\n\r\n// Helpers\r\nimport Tokens from '@hedtech/powercampus-design-system/react/core/styles/Tokens';\r\nimport { createStyles, withStyles, WithStyles } from '@hedtech/powercampus-design-system/react/core/styles/withStyles';\r\n\r\n// Types\r\nimport { IDropDownOption } from '@hedtech/powercampus-design-system/types/IDropDownOption';\r\nimport { IApplicationErrors } from '../../../Types/Applications/IApplicationErrors';\r\nimport { IFieldsGroup } from '../../../Types/Form/IFieldsGroup';\r\n// #endregion\r\n\r\n// #region Internal types\r\nexport interface IFieldsGroupHandlerProps {\r\n dateTimeCulture: string;\r\n errors: IApplicationErrors[];\r\n expanded: boolean | string;\r\n fieldGroup: IFieldsGroup;\r\n fieldGroupIndex: number;\r\n firstDayOfWeek: number;\r\n governmentIdFormat: string;\r\n isExpansionPanel: boolean;\r\n isHorizontalAligned: boolean;\r\n shortDatePattern: string;\r\n stepIndex: number;\r\n\r\n resources: IApplicationHandler;\r\n\r\n onAddMore: (fieldGroup: IFieldsGroup, stepIndex: number, fieldGroupIndex: number) => void;\r\n onChangeCheckBox: (event: React.ChangeEvent) => void;\r\n onChangeDateTimeField: (date: string, id: string, isValid: boolean) => void;\r\n onChangeDropDown: (optionSelected: IDropDownOption, id: string) => void;\r\n onChangeExpansionPanel: (label: string) => void;\r\n onChangeListCheckbox: (event: any) => void;\r\n onChangeRadioGroup: (event: React.ChangeEvent, value: string) => void;\r\n onChangeTextField: (event: React.ChangeEvent) => void;\r\n onClickButton: (event: React.MouseEvent) => void;\r\n onDeleteItem: (event: any) => void;\r\n}\r\n\r\nconst styles = (() => createStyles({\r\n buttonTop: {\r\n marginTop: Tokens.spacing30\r\n },\r\n groupTitleBottom: {\r\n marginBottom: 0\r\n }\r\n}));\r\n\r\ntype PropsWithStyles = IFieldsGroupHandlerProps & WithStyles;\r\n\r\n// #endregion\r\n\r\n// #region Component\r\nconst FieldsGroupHandler: React.FC = (props: PropsWithStyles): JSX.Element => {\r\n const {\r\n classes,\r\n dateTimeCulture,\r\n errors,\r\n expanded,\r\n fieldGroup,\r\n fieldGroupIndex,\r\n firstDayOfWeek,\r\n governmentIdFormat,\r\n isExpansionPanel,\r\n isHorizontalAligned,\r\n shortDatePattern,\r\n stepIndex,\r\n resources,\r\n\r\n onAddMore,\r\n onChangeCheckBox,\r\n onChangeDropDown,\r\n onChangeDateTimeField,\r\n onChangeExpansionPanel,\r\n onChangeListCheckbox,\r\n onChangeRadioGroup,\r\n onChangeTextField,\r\n onClickButton,\r\n onDeleteItem\r\n } = props;\r\n\r\n const isDisabled: boolean = fieldGroup.isDisableButton ? fieldGroup.isDisableButton : false;\r\n\r\n const content: JSX.Element[] = [];\r\n /* Field Id will be created in this way:\r\n * fieldId_sectionIndex_fieldIndex_positionInCollection\r\n * */\r\n const addMore = () => onAddMore(fieldGroup, stepIndex, fieldGroupIndex);\r\n if (fieldGroup.isMultiple) {\r\n content.push(\r\n \r\n \r\n \r\n );\r\n }\r\n let labelElement: JSX.Element | undefined;\r\n if (fieldGroup.label) {\r\n labelElement = (\r\n \r\n {fieldGroup.label}\r\n \r\n );\r\n }\r\n let instructionsElement: JSX.Element | undefined;\r\n if (fieldGroup.instructions) {\r\n instructionsElement = (\r\n \r\n {fieldGroup.instructions}\r\n \r\n );\r\n }\r\n\r\n content.push(\r\n \r\n {(fieldGroup.label !== '' || fieldGroup.instructions) &&\r\n fieldGroup.id !== 'confirmationGroup' ?\r\n (\r\n \r\n \r\n {labelElement}\r\n {instructionsElement}\r\n \r\n \r\n ) : undefined}\r\n \r\n \r\n );\r\n\r\n if (fieldGroup.isMultiple && Number(fieldGroup.maximumAllowed) !== 1) {\r\n content.push(\r\n \r\n \r\n \r\n {resources.lblAddNew}\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n {content}\r\n \r\n );\r\n};\r\n// #endregion\r\n\r\n// Export: Component\r\nexport default withStyles(styles)(FieldsGroupHandler);","/* Copyright 2019 Ellucian Company L.P. and its affiliates.\r\n * File: ApplicationCompletedModal.tsx\r\n * Type: Presentation component */\r\n\r\n// #region Imports\r\nimport React from 'react';\r\n\r\n// Core components\r\nimport Button, { ButtonGroup } from '@hedtech/powercampus-design-system/react/core/Button';\r\nimport Divider from '@hedtech/powercampus-design-system/react/core/Divider';\r\nimport Grid from '@hedtech/powercampus-design-system/react/core/Grid';\r\nimport Modal from '@hedtech/powercampus-design-system/react/core/Modal';\r\nimport Text from '@hedtech/powercampus-design-system/react/core/Text';\r\n\r\n// Internal components\r\nimport { IApplicationHandler } from '../../../Types/Resources/Admissions/IApplicationFormResources';\r\nimport FieldsGroupHandler from './FieldsGroupHandler';\r\n\r\n// Helpers\r\nimport Tokens from '@hedtech/powercampus-design-system/react/core/styles/Tokens';\r\nimport { createStyles, withStyles, WithStyles } from '@hedtech/powercampus-design-system/react/core/styles/withStyles';\r\n\r\n// Types\r\nimport { IDropDownOption } from '@hedtech/powercampus-design-system/types/IDropDownOption';\r\nimport { IFieldsGroup } from '../../../Types/Form/IFieldsGroup';\r\nimport { IPaymentTransaction } from '../../../Types/Payment/IPaymentTransaction';\r\n// #endregion\r\n\r\n// #region Internal types\r\nexport interface IApplicationCompletedModalProps {\r\n dateTimeCulture: string;\r\n failedPayment: boolean;\r\n fieldGroup?: IFieldsGroup;\r\n paymentTransaction?: IPaymentTransaction;\r\n shortDatePattern: string;\r\n successPayment: boolean;\r\n\r\n onAddMore: (fieldGroup: IFieldsGroup, stepIndex: number, fieldGroupIndex: number) => void;\r\n onChangeCheckBox: (event: React.ChangeEvent) => void;\r\n onChangeDateTimeField: (date: string, id: string, isValid: boolean) => void;\r\n onChangeDropDown: (optionSelected: IDropDownOption, id: string) => void;\r\n onChangeListCheckbox: (event: any) => void;\r\n onChangeRadioGroup: (event: React.ChangeEvent, value: string) => void;\r\n onChangeTextField: (event: React.ChangeEvent) => void;\r\n onClickButton: (event: React.MouseEvent) => void;\r\n onCloseFailedPayment: (event: React.MouseEvent) => void;\r\n\r\n resourcesApplicationHandler: IApplicationHandler;\r\n}\r\n\r\nconst styles = createStyles({\r\n containerDetails: {\r\n backgroundColor: Tokens.colorBrandNeutral200,\r\n padding: Tokens.spacing50\r\n }\r\n});\r\n\r\ntype PropsWithStyles = IApplicationCompletedModalProps & WithStyles;\r\n// #endregion\r\n\r\n// #region Component\r\nconst ApplicationCompletedModal: React.FC = (props: PropsWithStyles): JSX.Element => {\r\n const {\r\n classes,\r\n dateTimeCulture,\r\n failedPayment,\r\n fieldGroup,\r\n paymentTransaction,\r\n shortDatePattern,\r\n successPayment,\r\n\r\n onAddMore,\r\n onChangeCheckBox,\r\n onChangeDateTimeField,\r\n onChangeDropDown,\r\n onChangeListCheckbox,\r\n onChangeRadioGroup,\r\n onChangeTextField,\r\n onClickButton,\r\n onCloseFailedPayment,\r\n\r\n resourcesApplicationHandler\r\n } = props;\r\n\r\n let footerModal: JSX.Element;\r\n footerModal = (\r\n \r\n \r\n {resourcesApplicationHandler.btnOk}\r\n \r\n \r\n );\r\n\r\n const bodyModal: JSX.Element[] = [];\r\n if (fieldGroup) {\r\n bodyModal.push(\r\n \r\n {failedPayment ?\r\n (\r\n \r\n \r\n {resourcesApplicationHandler.lblContentTextApplication}\r\n \r\n \r\n ) :\r\n successPayment && paymentTransaction ?\r\n (\r\n \r\n \r\n
\r\n \r\n {resourcesApplicationHandler.lblTitleDetails}\r\n \r\n \r\n \r\n \r\n \r\n {resourcesApplicationHandler.lblAmount}\r\n \r\n \r\n \r\n \r\n {paymentTransaction.amount}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {resourcesApplicationHandler.lblDescription}\r\n \r\n \r\n \r\n \r\n {paymentTransaction.description}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {resourcesApplicationHandler.lblAuthorizationCode}\r\n \r\n \r\n \r\n \r\n {paymentTransaction.authorizationNumber}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n ) :\r\n undefined\r\n }\r\n {!failedPayment ?\r\n (\r\n \r\n \r\n \r\n ) : undefined}\r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n {bodyModal}\r\n \r\n );\r\n};\r\n// #endregion\r\n\r\n// Export: Component\r\nexport default withStyles(styles)(ApplicationCompletedModal);","/* Copyright 2019 Ellucian Company L.P. and its affiliates.\r\n* File: ApplicationHandler.tsx\r\n* Type: Presentation component */\r\n\r\n// #region Imports\r\nimport React from 'react';\r\nimport Media from 'react-media';\r\n\r\n// Core components\r\nimport Button, { ButtonGroup } from '@hedtech/powercampus-design-system/react/core/Button';\r\nimport Card from '@hedtech/powercampus-design-system/react/core/Card';\r\nimport Divider from '@hedtech/powercampus-design-system/react/core/Divider';\r\nimport Grid from '@hedtech/powercampus-design-system/react/core/Grid';\r\nimport Icon from '@hedtech/powercampus-design-system/react/core/Icon';\r\nimport MessageStyled from '@hedtech/powercampus-design-system/react/core/MessageStyled';\r\nimport StepProgress, {\r\n MobileStepper,\r\n MobileStepperLabel,\r\n MobileStepperStep,\r\n MobileStepperTitle,\r\n Step,\r\n StepButton,\r\n StepContent,\r\n StepLabel\r\n} from '@hedtech/powercampus-design-system/react/core/StepProgress';\r\nimport Text from '@hedtech/powercampus-design-system/react/core/Text';\r\n\r\n// Internal components\r\nimport ApplicationCompletedModal from './ApplicationCompletedModal';\r\nimport FieldsGroupHandler from './FieldsGroupHandler';\r\n\r\n// Helpers\r\nimport Format from '@hedtech/powercampus-design-system/helpers/Format';\r\nimport Tokens from '@hedtech/powercampus-design-system/react/core/styles/Tokens';\r\nimport { createStyles, Theme, withStyles, WithStyles } from '@hedtech/powercampus-design-system/react/core/styles/withStyles';\r\n\r\n// Types\r\nimport { IDropDownOption } from '@hedtech/powercampus-design-system/types/IDropDownOption';\r\nimport { IApplicationContent } from '../../../Types/Applications/IApplicationContent';\r\nimport { IApplicationErrors } from '../../../Types/Applications/IApplicationErrors';\r\nimport { IApplicationForm } from '../../../Types/Form/IApplicationForm';\r\nimport { IFieldsGroup } from '../../../Types/Form/IFieldsGroup';\r\nimport { IPaymentTransaction } from '../../../Types/Payment/IPaymentTransaction';\r\nimport { IApplicationHandler } from '../../../Types/Resources/Admissions/IApplicationFormResources';\r\n// #endregion\r\n\r\n// #region Internal types\r\nexport interface IApplicationHandlerProps {\r\n activeStep: number;\r\n components?: IApplicationForm;\r\n dateTimeCulture: string;\r\n errors: IApplicationErrors[];\r\n expanded: boolean | string;\r\n failedPayment: boolean;\r\n firstDayOfWeek: number;\r\n governmentIdFormat: string;\r\n paymentTransaction: IPaymentTransaction;\r\n saveMessage?: string;\r\n section?: JSON;\r\n shortDatePattern: string;\r\n showSaveButton: boolean;\r\n successPayment: boolean;\r\n\r\n resources: IApplicationHandler;\r\n onAddMore: (fieldGroup: IFieldsGroup) => void;\r\n onBackStep: () => void;\r\n onClickSave?: () => void;\r\n onClickStep: (event: React.MouseEvent) => void;\r\n onChangeCheckBox: (event: React.ChangeEvent) => void;\r\n onChangeDateTimeField: (date: string, id: string, isValid: boolean) => void;\r\n onChangeDropDown: (optionSelected: IDropDownOption, id: string) => void;\r\n onChangeExpansionPanel: (label: string) => void;\r\n onChangeListCheckbox: (event: any) => void;\r\n onChangeRadioGroup: (event: React.ChangeEvent, value: string) => void;\r\n onChangeTextField: (event: React.ChangeEvent) => void;\r\n onClickButton: (event: React.MouseEvent) => void;\r\n onCloseFailedPayment: (event: React.MouseEvent) => void;\r\n onDeleteItem: (event: any) => void;\r\n\r\n onNextStep: () => void;\r\n onSubmit: () => void;\r\n}\r\n\r\nconst styles = (theme: Theme) => createStyles({\r\n backButtonMovil: {\r\n marginLeft: Tokens.spacing30\r\n },\r\n boxStep: {\r\n '& > span > span > span': {\r\n textAlign: 'left'\r\n },\r\n '&:focus': {\r\n boxShadow: 'none'\r\n }\r\n },\r\n buttonContainer: {\r\n marginTop: Tokens.spacing50\r\n },\r\n buttonsContainerMovil: {\r\n marginRight: Tokens.spacing50\r\n },\r\n buttonStep: {\r\n marginRight: Tokens.spacing40\r\n },\r\n cardRoot: {\r\n [theme.breakpoints.up('sm')]: {\r\n marginTop: Tokens.spacing80\r\n }\r\n },\r\n fieldContainer: {\r\n marginTop: Tokens.spacing30\r\n },\r\n footerPadding: {\r\n padding: `${Tokens.spacing50} ${Tokens.spacing50} 0 ${Tokens.spacing50}`,\r\n textAlign: 'center'\r\n },\r\n inline: {\r\n display: 'inline'\r\n },\r\n marginLeft: {\r\n display: 'inline',\r\n marginLeft: Tokens.sizingSmall\r\n },\r\n mobileStepperContent: {\r\n minHeight: '65vh',\r\n padding: `${Tokens.spacing40} ${Tokens.spacing40} 0 ${Tokens.spacing40}`\r\n },\r\n saveButtonMargin: {\r\n marginLeft: Tokens.sizingSmall,\r\n marginRight: Tokens.sizingSmall\r\n },\r\n saveFooter: {\r\n textAlign: 'center'\r\n },\r\n stepperDesktop: {\r\n padding: `${Tokens.spacing50} ${Tokens.spacing50} 0 ${Tokens.spacing50}`\r\n }\r\n});\r\n\r\ntype PropsWithStyles = IApplicationHandlerProps & WithStyles;\r\n// #endregion\r\n\r\n// #region Component\r\n\r\nconst ApplicationHandler: React.FC = (props: PropsWithStyles): JSX.Element => {\r\n const {\r\n activeStep,\r\n classes,\r\n components,\r\n dateTimeCulture,\r\n errors,\r\n expanded,\r\n failedPayment,\r\n firstDayOfWeek,\r\n governmentIdFormat,\r\n paymentTransaction,\r\n saveMessage,\r\n shortDatePattern,\r\n showSaveButton,\r\n successPayment,\r\n\r\n onAddMore,\r\n onBackStep,\r\n onClickSave,\r\n onClickStep,\r\n onChangeCheckBox,\r\n onChangeDateTimeField,\r\n onChangeDropDown,\r\n onChangeExpansionPanel,\r\n onChangeListCheckbox,\r\n onChangeRadioGroup,\r\n onChangeTextField,\r\n onClickButton,\r\n onCloseFailedPayment,\r\n onDeleteItem,\r\n onNextStep,\r\n onSubmit,\r\n\r\n resources\r\n } = props;\r\n\r\n const noContent: JSX.Element = (\r\n \r\n );\r\n\r\n let content: IApplicationContent[] = [];\r\n if (components && components.steps && components.steps.length > 0) {\r\n content = Array(components.steps.length);\r\n components.steps.forEach((step, i) => {\r\n const fieldsGroupsElements: JSX.Element[] = [];\r\n if (step.fieldsGroups && step.fieldsGroups.length > 0) {\r\n step.fieldsGroups.forEach((fieldGroup, j) => {\r\n fieldsGroupsElements.push(\r\n \r\n );\r\n });\r\n }\r\n\r\n content[i] = {\r\n content: (\r\n \r\n \r\n {fieldsGroupsElements}\r\n \r\n ),\r\n instructions: step.instructions,\r\n title: step.title\r\n };\r\n });\r\n }\r\n\r\n const fieldsGroupsModal: JSX.Element[] = [];\r\n const footer: JSX.Element[] = [];\r\n if (components && components.fieldsGroups) {\r\n if (components.fieldsGroups.length > 0) {\r\n // Confirmation Dialog\r\n if (components.isCompletedApplication) {\r\n let confirmationGroup: IFieldsGroup | undefined;\r\n const confirmationIndex: number =\r\n components.fieldsGroups.findIndex(x => x.id === 'confirmationGroup');\r\n if (confirmationIndex > -1) {\r\n confirmationGroup = components.fieldsGroups[confirmationIndex];\r\n }\r\n\r\n fieldsGroupsModal.push(\r\n \r\n );\r\n }\r\n // Footer\r\n let footerGroup: IFieldsGroup | undefined;\r\n const footerGroupIndex: number =\r\n components.fieldsGroups.findIndex(x => x.id === 'footerGroup');\r\n if (footerGroupIndex > -1) {\r\n footerGroup = components.fieldsGroups[footerGroupIndex];\r\n }\r\n if (footerGroup) {\r\n footer.push(\r\n \r\n );\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {content.length > 0 ? (\r\n \r\n {(matches: boolean): JSX.Element => matches ? (\r\n \r\n {resources.lblNext}\r\n \r\n )\r\n }\r\n backButton={\r\n (\r\n \r\n {resources.lblBack}\r\n \r\n )\r\n }\r\n >\r\n
\r\n \r\n <>\r\n {components ? (\r\n <>\r\n {components.name || ''}\r\n {components.enableOnlinePayment\r\n && components.feeAmount ?\r\n (\r\n \r\n {Format.toString(components.isFlatFee\r\n ? resources.formatHasFee\r\n : resources.formatHasFees,\r\n [components.feeAmount])}\r\n \r\n )\r\n : undefined}\r\n \r\n ) : undefined}\r\n \r\n \r\n\r\n {activeStep !== content.length ? (\r\n <>\r\n \r\n \r\n {content[activeStep].title}\r\n \r\n \r\n {content[activeStep].content}\r\n \r\n ) : (\r\n <>\r\n \r\n {content.map((step, i) => (\r\n \r\n \r\n \r\n {step.title}\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n {resources.lblSubmit}\r\n \r\n \r\n )\r\n }\r\n
\r\n \r\n ) : (\r\n <>\r\n {components ? (\r\n \r\n \r\n \r\n {components.name || ''}\r\n \r\n {components.enableOnlinePayment\r\n && components.feeAmount ?\r\n (\r\n \r\n {Format.toString(components.isFlatFee\r\n ? resources.formatHasFee\r\n : resources.formatHasFees, [components.feeAmount])}\r\n \r\n )\r\n : undefined}\r\n \r\n \r\n \r\n ) : undefined}\r\n \r\n {content.map((step, i) => (\r\n \r\n \r\n \r\n {step.title}\r\n \r\n \r\n \r\n {step.content}\r\n \r\n \r\n \r\n \r\n {resources.lblBack}\r\n \r\n \r\n {activeStep === content.length - 1\r\n ? resources.lblSubmit\r\n : resources.lblNext}\r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n )\r\n }\r\n
\r\n ) : noContent}\r\n {showSaveButton && onClickSave ?\r\n (\r\n
\r\n
\r\n \r\n \r\n {saveMessage}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n {resources.lblSave}\r\n
\r\n \r\n
\r\n
\r\n )\r\n : undefined\r\n }\r\n
\r\n {footer}\r\n
\r\n {fieldsGroupsModal}\r\n
\r\n \r\n \r\n );\r\n};\r\n// #endregion\r\n\r\n// Export: Component\r\nexport default withStyles(styles)(ApplicationHandler);","/* Copyright 2019 Ellucian Company L.P. and its affiliates.\r\n * File: Attachments.tsx\r\n * Type: Presentation component */\r\n\r\n// #region Imports\r\nimport React from 'react';\r\n\r\n// Core components\r\nimport Button from '@hedtech/powercampus-design-system/react/core/Button';\r\nimport Card, { CardContent } from '@hedtech/powercampus-design-system/react/core/Card';\r\nimport Divider from '@hedtech/powercampus-design-system/react/core/Divider';\r\nimport Grid from '@hedtech/powercampus-design-system/react/core/Grid';\r\nimport Hidden from '@hedtech/powercampus-design-system/react/core/Hidden';\r\nimport Icon from '@hedtech/powercampus-design-system/react/core/Icon';\r\nimport IconButton from '@hedtech/powercampus-design-system/react/core/IconButton';\r\nimport MessageStyled from '@hedtech/powercampus-design-system/react/core/MessageStyled';\r\nimport Table, { TableBody, TableCell, TableHead, TableRow } from '@hedtech/powercampus-design-system/react/core/Table';\r\nimport Text from '@hedtech/powercampus-design-system/react/core/Text';\r\nimport Tooltip from '@hedtech/powercampus-design-system/react/core/Tooltip';\r\n\r\n// Helpers\r\nimport Format from '@hedtech/powercampus-design-system/helpers/Format';\r\nimport Tokens from '@hedtech/powercampus-design-system/react/core/styles/Tokens';\r\nimport { createStyles, Theme, withStyles, WithStyles } from '@hedtech/powercampus-design-system/react/core/styles/withStyles';\r\n\r\n// Types\r\nimport { IApplicationAttachment } from '../../../Types/Applications/IApplicationAttachment';\r\nimport { IAttachments } from '../../../Types/Resources/Admissions/IApplicationFormResources';\r\n// #endregion Imports\r\n// #region Types\r\n\r\nexport interface IAttachmentProps {\r\n attachments?: IApplicationAttachment[];\r\n numberOfAttachments: number;\r\n totalSize?: string;\r\n onClickContinue: (event: React.MouseEvent) => void;\r\n onClickInfo: (event: React.MouseEvent) => void;\r\n onClickOpenFolder: (event: React.MouseEvent) => void;\r\n onClickRemoveAttachment: (event: React.MouseEvent) => void;\r\n resources: IAttachments;\r\n}\r\n\r\nconst styles = (theme: Theme) => createStyles({\r\n buttonContainer: {\r\n marginTop: Tokens.spacing50\r\n },\r\n buttonStep: {\r\n marginRight: Tokens.spacing40\r\n },\r\n icon: {\r\n color: theme.palette.action.active,\r\n cursor: 'pointer'\r\n },\r\n inline: {\r\n display: 'inline'\r\n },\r\n marginLeft: {\r\n display: 'inline',\r\n marginLeft: Tokens.sizingSmall\r\n },\r\n marginRigth: {\r\n display: 'inline',\r\n marginRigth: Tokens.sizingSmall\r\n },\r\n table: {\r\n '& > tbody > tr > th:nth-child(1)': {\r\n width: '70%'\r\n },\r\n '& > tbody > tr > th:nth-child(2)': {\r\n width: '10%'\r\n },\r\n '& > tbody > tr > th:nth-child(3)': {\r\n width: '10%'\r\n },\r\n '& > tbody > tr > th:nth-child(4)': {\r\n width: '10%'\r\n }\r\n }\r\n});\r\n\r\ntype PropsWithStyles = IAttachmentProps & WithStyles;\r\n// #endregion Types\r\n\r\n// #region Component\r\nconst Attachment: React.FC = (props: PropsWithStyles): JSX.Element => {\r\n const {\r\n attachments,\r\n numberOfAttachments,\r\n classes,\r\n totalSize,\r\n onClickContinue,\r\n onClickInfo,\r\n onClickOpenFolder,\r\n onClickRemoveAttachment,\r\n resources\r\n } = props;\r\n\r\n let table: JSX.Element | undefined;\r\n if (attachments && attachments.length > 0) {\r\n table = (\r\n \r\n \r\n \r\n \r\n {resources.lblName}\r\n \r\n \r\n {resources.lblType}\r\n \r\n \r\n {resources.lblSize}\r\n \r\n \r\n {resources.lblDelete}\r\n \r\n \r\n \r\n \r\n {attachments.map((attachment, i) => (\r\n \r\n \r\n \r\n {attachment.attachmentTitle}\r\n \r\n \r\n \r\n \r\n {attachment.extension}\r\n \r\n \r\n \r\n \r\n {attachment.fileSize}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n }\r\n\r\n let content: JSX.Element | undefined;\r\n if (resources) {\r\n content = (\r\n \r\n \r\n \r\n \r\n \r\n {resources.lblTitle}\r\n \r\n \r\n \r\n \r\n \r\n {Format.toString(resources.lblInstructions, [numberOfAttachments])}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {resources.lblChooseFile}\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {resources.lblSupportedFiles}\r\n \r\n \r\n \r\n \r\n {\r\n attachments && attachments.length > 0 ?\r\n (\r\n <>\r\n \r\n {resources.lblAttachments}\r\n \r\n {table}\r\n \r\n \r\n ) :\r\n (\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n {resources.lblContinue}\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n {content}\r\n \r\n );\r\n};\r\n// #endregion Component\r\n\r\n// Export: Component\r\nexport default withStyles(styles)(Attachment);","/* Copyright 2019 Ellucian Company L.P. and its affiliates.\r\n * File: ConfirmationSavedModal.tsx\r\n * Type: Presentation component */\r\n\r\n// #region Imports\r\nimport React from 'react';\r\n\r\n// Generic components\r\nimport Button from '@hedtech/powercampus-design-system/react/core/Button';\r\nimport Grid from '@hedtech/powercampus-design-system/react/core/Grid';\r\nimport Modal from '@hedtech/powercampus-design-system/react/core/Modal';\r\nimport Text from '@hedtech/powercampus-design-system/react/core/Text';\r\n\r\n// Types\r\nimport { IConfirmationSavedModal } from '../../../Types/Resources/Admissions/IApplicationFormResources';\r\n// #endregion Imports\r\n\r\n// #region Types\r\nexport interface IConfirmationSavedModalProps {\r\n confirmationMessage: string;\r\n open: boolean;\r\n resources: IConfirmationSavedModal;\r\n onCloseModal: () => void;\r\n}\r\n// #endregion Types\r\n\r\n// #region Component\r\nconst ConfirmationSavedModal: React.FC = (props: IConfirmationSavedModalProps): JSX.Element => {\r\n const {\r\n confirmationMessage,\r\n open,\r\n resources,\r\n onCloseModal\r\n } = props;\r\n\r\n return (\r\n \r\n {resources.btnOk}\r\n \r\n )}\r\n id=\"confirmationSaveModal\"\r\n header={resources.lblTitle}\r\n maxWidth=\"md\"\r\n open={open}\r\n onClose={onCloseModal}\r\n >\r\n \r\n \r\n \r\n {confirmationMessage}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n// #endregion Component\r\n\r\n// Export: Component\r\nexport default ConfirmationSavedModal;","/* Copyright 2019 Ellucian Company L.P. and its affiliates.\r\n * File: ETSSearchModal.tsx\r\n * Type: Presentation component */\r\n\r\n// #region Imports\r\nimport React from 'react';\r\n\r\n// Core components\r\nimport Button, { ButtonGroup } from '@hedtech/powercampus-design-system/react/core/Button';\r\nimport Dropdown from '@hedtech/powercampus-design-system/react/core/Dropdown';\r\nimport Grid from '@hedtech/powercampus-design-system/react/core/Grid';\r\nimport Link from '@hedtech/powercampus-design-system/react/core/Link';\r\nimport Modal from '@hedtech/powercampus-design-system/react/core/Modal';\r\nimport Pagination from '@hedtech/powercampus-design-system/react/core/Pagination';\r\nimport Table, { TableBody, TableCell, TableHead, TableRow } from '@hedtech/powercampus-design-system/react/core/Table';\r\nimport TextField from '@hedtech/powercampus-design-system/react/core/TextField';\r\n\r\n// Types\r\nimport { IDropDownOption } from '@hedtech/powercampus-design-system/types/IDropDownOption';\r\nimport { IInstitution } from '../../../Types/Applications/IInstitution';\r\nimport { IETSSearchModal } from '../../../Types/Resources/Admissions/IApplicationFormResources';\r\n\r\n// #endregion\r\n\r\n// #region Internal types\r\nexport interface IETSSearchModalProps {\r\n city?: string;\r\n countries: IDropDownOption[];\r\n country?: number;\r\n etsCode?: string;\r\n institutionName?: string;\r\n institutions?: IInstitution[];\r\n open: boolean;\r\n pageNumber: number;\r\n pageSize: number;\r\n rowsPerPageOptions: number[];\r\n state?: number;\r\n states: IDropDownOption[];\r\n totalInstitutions: number;\r\n\r\n // events\r\n onChangeDropDownETSSearch?: (optionSelected: IDropDownOption, id: string) => void;\r\n onChangePage: (event: any, page: number) => void;\r\n onChangeRowsPerPage: (event: any) => void;\r\n onChangeTextFieldETSSearch?: (event: any) => void;\r\n onClear: () => void;\r\n onClickLink: (institutionName?: string, etsCode?: string, ficeCode?: string,\r\n city?: string, stateProvinceId?: number, countryId?: number) => void;\r\n onClose: () => void;\r\n onSearch: () => void;\r\n\r\n // resources\r\n resources: IETSSearchModal;\r\n}\r\n// #endregion\r\n\r\n// #region Component\r\nconst ETSSearchModal: React.FC = (props: IETSSearchModalProps): JSX.Element => {\r\n const {\r\n city,\r\n countries,\r\n country,\r\n etsCode,\r\n institutionName,\r\n institutions,\r\n open,\r\n pageNumber,\r\n pageSize,\r\n rowsPerPageOptions,\r\n state,\r\n states,\r\n totalInstitutions,\r\n\r\n // events\r\n onChangeDropDownETSSearch,\r\n onChangePage,\r\n onChangeRowsPerPage,\r\n onChangeTextFieldETSSearch,\r\n onClear,\r\n onClickLink,\r\n onClose,\r\n onSearch,\r\n\r\n // resources\r\n resources\r\n } = props;\r\n\r\n const emptyOptionState: IDropDownOption = {\r\n description: resources.lblEmptyOptionState,\r\n value: ''\r\n };\r\n\r\n const emptyOptionCountry: IDropDownOption = {\r\n description: resources.lblEmptyOptionCountry,\r\n value: ''\r\n };\r\n\r\n const footerModal: JSX.Element = (\r\n \r\n \r\n {resources.btnSearch}\r\n \r\n \r\n {resources.btnClear}\r\n \r\n \r\n );\r\n\r\n let tableInstitutions: JSX.Element | undefined;\r\n if (institutions && institutions.length > 0) {\r\n tableInstitutions = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {resources.lblInstitutionName}\r\n \r\n \r\n {resources.lblETSCode}\r\n \r\n \r\n {resources.lblFICECode}\r\n \r\n \r\n {resources.lblCity}\r\n \r\n \r\n {resources.lblState}\r\n \r\n \r\n {resources.lblCountry}\r\n \r\n \r\n \r\n \r\n {\r\n institutions.map(\r\n (row, i) => (\r\n \r\n \r\n \r\n \r\n {row.name}\r\n \r\n \r\n \r\n \r\n \r\n {row.etsCode}\r\n \r\n \r\n \r\n \r\n {row.ficeCode}\r\n \r\n \r\n \r\n \r\n {row.city}\r\n \r\n \r\n \r\n \r\n {row.stateDesc}\r\n \r\n \r\n \r\n \r\n {row.countryDesc}\r\n \r\n \r\n \r\n )\r\n )\r\n }\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n let paginationComponent: JSX.Element | undefined;\r\n if (institutions && institutions.length > 0) {\r\n paginationComponent = (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n let bodyModal: JSX.Element;\r\n bodyModal = (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {footerModal}\r\n \r\n
\r\n
\r\n {tableInstitutions}\r\n {paginationComponent}\r\n \r\n );\r\n\r\n return (\r\n \r\n {bodyModal}\r\n \r\n );\r\n};\r\n// #endregion\r\n\r\n// Export: Component\r\nexport default ETSSearchModal;","/* Copyright 2019 - 2021 Ellucian Company L.P. and its affiliates.\r\n* File: ApplicationForm.ts */\r\n\r\n// Types\r\nimport { ILogData } from '@hedtech/powercampus-design-system/types/ILogData';\r\nimport { IApplication } from '../../Types/Applications/IApplication';\r\nimport { IApplicationAttachment } from '../../Types/Applications/IApplicationAttachment';\r\nimport { ISavedApplication } from '../../Types/Applications/ISavedApplication';\r\nimport { IApplicationForm } from '../../Types/Form/IApplicationForm';\r\n\r\n// Helpers\r\nimport Request from '@hedtech/powercampus-design-system/helpers/Request';\r\n\r\n// Functions for requests\r\nconst ApplicationFormRequests = {\r\n // #region Addresses\r\n getAddresses(startIndex: number, length: number, zipCode?: string, resolver?: (json: string) => void,\r\n resolveError?: (logData: ILogData) => void): void {\r\n Request.post(this.getAddresses.name, '/Address',\r\n {\r\n length,\r\n startIndex,\r\n zipCode\r\n },\r\n resolver, resolveError);\r\n },\r\n // #endregion Addresses\r\n\r\n // #region ApplicationHandler\r\n getComponents(id: number, resolver: (json: string) => void, resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.getComponents.name, '/Forms/Details',\r\n {\r\n id: id,\r\n type: 0\r\n },\r\n resolver, resolveError);\r\n },\r\n\r\n getSavedApplicationComponents(savedApplicationToken: string,\r\n resolver: (json: string) => void, resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.getComponents.name, '/Forms/Saved',\r\n savedApplicationToken,\r\n resolver, resolveError);\r\n },\r\n\r\n postSubmit(application: IApplication,\r\n resolver: (json: string) => void, resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.postSubmit.name, '/Applications/Create', application, resolver, resolveError);\r\n },\r\n\r\n postCreateSavedApplication(savedApplication: ISavedApplication,\r\n components: IApplicationForm, resolver: (json: string) => void, resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.postCreateSavedApplication.name,\r\n '/Applications/CreateSavedApplication',\r\n {\r\n components,\r\n savedApplication\r\n },\r\n resolver,\r\n resolveError);\r\n },\r\n\r\n postCreateSaveApplicationNotification(urlToSend: string, email: string,\r\n formApplicationName: string, resolver: (json: string) => void, resolveError: (ILogData: ILogData) => void): void {\r\n Request.post(this.postCreateSaveApplicationNotification.name,\r\n '/Applications/CreateSaveApplicationNotification',\r\n {\r\n email: email,\r\n formApplicationName: formApplicationName,\r\n urlToSend: urlToSend\r\n },\r\n resolver,\r\n resolveError);\r\n },\r\n\r\n postCreateApplicationAttachment(applicationAttachment: IApplicationAttachment,\r\n resolver: (json: string) => void, resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.postCreateApplicationAttachment.name,\r\n '/Applications/CreateApplicationAttachment',\r\n applicationAttachment,\r\n resolver,\r\n resolveError);\r\n },\r\n\r\n postListApplicationAttachments(applicationId: number,\r\n resolver: (json: string) => void, resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.postListApplicationAttachments.name,\r\n '/Applications/ListApplicationAttachments',\r\n applicationId,\r\n resolver,\r\n resolveError);\r\n },\r\n\r\n postDeleteApplicationAttachment(attachmentId: number,\r\n resolver: (json: string) => void, resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.postListApplicationAttachments.name,\r\n '/Applications/DeleteApplicationAttachment',\r\n attachmentId,\r\n resolver,\r\n resolveError);\r\n },\r\n\r\n getApplicationAttachments(applicationId: number,\r\n resolver: (json: string) => void, resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.getApplicationAttachments.name,\r\n '/Applications/DeleteApplicationAttachment',\r\n applicationId,\r\n resolver,\r\n resolveError);\r\n },\r\n\r\n GetApplicationAttachmentTotals(applicationId: number,\r\n resolver: (json: string) => void, resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.getApplicationAttachments.name,\r\n '/Applications/GetApplicationAttachmentTotals',\r\n applicationId,\r\n resolver,\r\n resolveError);\r\n },\r\n // #endregion\r\n\r\n // #region TestScores\r\n getChildOptions(url: string, id: number, step: string, group: string, targetId: string, isApplicationForm: boolean,\r\n resolver: (json: string) => void, resolveError: (logData: ILogData) => void,\r\n formId?: number): void {\r\n if (!formId) {\r\n Request.post(this.getChildOptions.name, `/${url}`, {\r\n group,\r\n id,\r\n step,\r\n targetId\r\n }, resolver, resolveError);\r\n }\r\n else {\r\n Request.post(this.getChildOptions.name, `/${url}`, {\r\n formId,\r\n group,\r\n id,\r\n step,\r\n targetId,\r\n isApplicationForm\r\n }, resolver, resolveError);\r\n }\r\n },\r\n getValidateScoreType(\r\n applicationId: number,\r\n test: any,\r\n group: string,\r\n componentId: string,\r\n resolver: (json: string) => void,\r\n resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.getValidateScoreType.name,\r\n '/TestScores/ScoreType',\r\n { formId: applicationId, testId: test, group, componentId },\r\n resolver,\r\n resolveError);\r\n },\r\n // #endregion\r\n\r\n // #region Institutions\r\n getCountries(resolver: (json: string) => void, resolveError: (logData: ILogData) => void): void {\r\n Request.get(this.getCountries.name, '/Institutions/Countries', resolver, resolveError);\r\n },\r\n getStates(resolver: (json: string) => void, resolveError: (logData: ILogData) => void): void {\r\n Request.get(this.getCountries.name, '/Institutions/States', resolver, resolveError);\r\n },\r\n getInstitutions(startIndex: number, length: number, institutionName?: string, etsCode?: string,\r\n city?: string, stateId?: number, countryId?: number, resolver?: (json: string) => void,\r\n resolveError?: (logData: ILogData) => void): void {\r\n Request.post(this.getInstitutions.name, '/Institutions',\r\n {\r\n length,\r\n startIndex,\r\n institution: {\r\n city,\r\n countryId,\r\n etsCode,\r\n name: institutionName,\r\n stateProvinceId: stateId\r\n }\r\n },\r\n resolver, resolveError);\r\n },\r\n // #endregion\r\n\r\n // #region Settings\r\n getGeneralSettings(resolver: (json: string) => void): void {\r\n Request.get(this.getGeneralSettings.name, '/Settings/General', resolver);\r\n },\r\n // #endregion Settings\r\n\r\n};\r\n\r\n// Export object with the requests\r\nexport default ApplicationFormRequests;","/* Copyright 2019 - 2021 Ellucian Company L.P. and its affiliates.\r\n * File: Applications.ts */\r\n\r\n// Types\r\nimport { ILogData } from '@hedtech/powercampus-design-system/types/ILogData';\r\n\r\n// Helpers\r\nimport Request from '@hedtech/powercampus-design-system/helpers/Request';\r\nimport { ISavedApplication } from '../../Types/Applications/ISavedApplication';\r\nimport { IApplicationForm } from '../../Types/Form/IApplicationForm';\r\n\r\n// Functions for requests\r\nconst ApplicationsRequests = {\r\n\r\n // #region ApplicationHandler\r\n getApplications(resolver: (json: string) => void, resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.getApplications.name, '/Forms/List', 0 , resolver, resolveError);\r\n },\r\n // #endregion\r\n\r\n postDeleteSavedApplication(savedApplicationId: number,\r\n resolver: (json: string) => void, resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.postDeleteSavedApplication.name, '/Forms/DeleteSavedApplication',\r\n savedApplicationId, resolver, resolveError);\r\n },\r\n\r\n postUpdateSavedApplication(savedApplication: ISavedApplication,\r\n components: IApplicationForm, resolver: (json: string) => void,\r\n resolveError: (logData: ILogData) => void): void {\r\n Request.post(this.postUpdateSavedApplication.name, '/Forms/UpdateSavedApplication',\r\n {\r\n components: components,\r\n savedApplication: savedApplication\r\n },\r\n resolver, resolveError);\r\n },\r\n getStatusSettings(resolver: (json: string) => void): void {\r\n Request.post(this.getStatusSettings.name, '/Settings/ApplicationStatus', null, resolver);\r\n },\r\n getSubmittedApplications(resolver: (json: string) => void): void {\r\n Request.post(this.getSubmittedApplications.name, '/Applications/GetSubmittedApplications', null, resolver);\r\n },\r\n};\r\n\r\n// Export object with the requests\r\nexport default ApplicationsRequests;","/* Copyright 2019 - 2021 Ellucian Company L.P. and its affiliates.\r\n * File: ApplicationFormView.tsx\r\n * Type: Container component */\r\n\r\n// #region Imports\r\nimport moment from 'moment';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\n// Core components\r\nimport Layout, { withLayout } from '@hedtech/powercampus-design-system/react/components/Layout';\r\nimport ConfirmationDialog from '@hedtech/powercampus-design-system/react/core/ConfirmationDialog';\r\n\r\n// Internal Components\r\nimport PaymentDetailModal from '../../Generic/PaymentDetailModal';\r\nimport ProcessPaymentModal from '../../Generic/ProcessPaymentModal';\r\nimport SignIn from '../../Generic/SignIn';\r\nimport SignUp from '../../Generic/SignUp';\r\nimport AddressSearchModal from './AddressSearchModal';\r\nimport ApplicationHandler from './ApplicationHandler';\r\nimport Attachments from './Attachments';\r\nimport ConfirmationSavedModal from './ConfirmationSavedModal';\r\nimport ETSSearchModal from './ETSSearchModal';\r\n\r\n// Generic components\r\nimport Button from '@hedtech/powercampus-design-system/react/core/Button';\r\nimport Grid from '@hedtech/powercampus-design-system/react/core/Grid';\r\nimport Modal from '@hedtech/powercampus-design-system/react/core/Modal';\r\nimport Table, { TableBody, TableCell, TableRow } from '@hedtech/powercampus-design-system/react/core/Table';\r\nimport Text from '@hedtech/powercampus-design-system/react/core/Text';\r\nimport TextField from '@hedtech/powercampus-design-system/react/core/TextField';\r\n\r\n// #region Types\r\nimport { IAddress } from '../../../Types/Account/IAddress';\r\nimport { IAlert } from '@hedtech/powercampus-design-system/types/IAlert';\r\nimport { IApplication } from '../../../Types/Applications/IApplication';\r\nimport { IApplicationActivity } from '../../../Types/Applications/IApplicationActivity';\r\nimport { IApplicationAddress } from '../../../Types/Applications/IApplicationAddress';\r\nimport { IApplicationAttachment } from '../../../Types/Applications/IApplicationAttachment';\r\nimport { IApplicationEducation } from '../../../Types/Applications/IApplicationEducation';\r\nimport { IApplicationEmergencyContact } from '../../../Types/Applications/IApplicationEmergencyContact';\r\nimport { IApplicationEmployment } from '../../../Types/Applications/IApplicationEmployment';\r\nimport { IApplicationErrors } from '../../../Types/Applications/IApplicationErrors';\r\nimport { IApplicationForm } from '../../../Types/Form/IApplicationForm';\r\nimport { IApplicationFormResources } from '../../../Types/Resources/Admissions/IApplicationFormResources';\r\nimport { IApplicationIpeds } from '../../../Types/Applications/IApplicationIpeds';\r\nimport { IApplicationPhoneList } from '../../../Types/Applications/IApplicationPhoneList';\r\nimport { IApplicationProgram } from '../../../Types/Applications/IApplicationProgram';\r\nimport { IApplicationRelative } from '../../../Types/Applications/IApplicationRelative';\r\nimport { IApplicationResidency } from '../../../Types/Applications/IApplicationResidency';\r\nimport { IApplicationUserDefined } from '../../../Types/Applications/IApplicationUserDefined';\r\nimport { ICultures } from '@hedtech/powercampus-design-system/types/ICultures';\r\nimport { IDataForm } from '../../../Types/Form/IDataForm';\r\nimport { IDropDownOption } from '@hedtech/powercampus-design-system/types/IDropDownOption';\r\nimport { IFieldForm } from '../../../Types/Form/IFieldForm';\r\nimport { IFieldsGroup } from '../../../Types/Form/IFieldsGroup';\r\nimport { IGroupErrors } from '../../../Types/Applications/IApplicationErrors';\r\nimport { IInstitution } from '../../../Types/Applications/IInstitution';\r\nimport { IJsonResult } from '@hedtech/powercampus-design-system/types/IJsonResult';\r\nimport { ILogData } from '@hedtech/powercampus-design-system/types/ILogData';\r\nimport { IPaymentInfo } from '../../../Types/Payment/IPaymentInfo';\r\nimport { IPaymentTransaction } from '../../../Types/Payment/IPaymentTransaction';\r\nimport { ISavedApplication } from '../../../Types/Applications/ISavedApplication';\r\nimport { ITestScore } from '../../../Types/Applications/ITestScore';\r\nimport { PaymentOrigin } from '../../../Types/Enum/PaymentOrigin';\r\nimport { ResultType } from '@hedtech/powercampus-design-system/types/ResultType';\r\n// #endregion Types\r\n\r\n// Helpers\r\nimport Format from '@hedtech/powercampus-design-system/helpers/Format';\r\nimport LogData from '@hedtech/powercampus-design-system/helpers/LogData';\r\nimport Resolver from '@hedtech/powercampus-design-system/helpers/Resolver';\r\n\r\n// Constants\r\nimport Constants from '@hedtech/powercampus-design-system/helpers/Constants';\r\n\r\n// Requests\r\nimport Requests from '../../../Requests/Admissions/ApplicationForm';\r\nimport RequestsApplication from '../../../Requests/Admissions/Applications';\r\n\r\n// State Management\r\nimport LayoutActions from '@hedtech/powercampus-design-system/flux/actions/LayoutActions';\r\nimport LayoutStore from '@hedtech/powercampus-design-system/flux/stores/LayoutStore';\r\n// #endregion Imports\r\n\r\ninterface IApplicationFormState {\r\n // Address Search Modal\r\n addresses?: IAddress[];\r\n openAddressSearchModal: boolean;\r\n selectedZipCode?: string;\r\n\r\n // Account\r\n hasPersonId: boolean;\r\n showSignIn: boolean;\r\n showSignUp: boolean;\r\n\r\n // Application\r\n activeStep: number;\r\n application: IApplication;\r\n applicationId?: number;\r\n componentError: boolean;\r\n components?: IApplicationForm;\r\n cultures: ICultures;\r\n dateTimeCulture: string;\r\n errors: IApplicationErrors[];\r\n expanded: boolean | string;\r\n expansionPanelHeaders: string[];\r\n firstDayOfWeek: number;\r\n openNotAvailableModal: boolean;\r\n resources?: IApplicationFormResources;\r\n rowsPerPageOptions: number[];\r\n shortDatePattern: string;\r\n\r\n // Attachments\r\n attachments: IApplicationAttachment[];\r\n attachmentsTotalSize?: string;\r\n attachmentsTotalSizeNumber: number;\r\n fileId?: number;\r\n fileName?: string;\r\n fileSelector?: any;\r\n openRemoveAttachmentDialog: boolean;\r\n openSupportedFilesModal: boolean;\r\n showAttachments: boolean;\r\n totalNumberOfAttachments: number;\r\n\r\n // ETS Search Modal\r\n countries?: IDropDownOption[];\r\n institutions?: IInstitution[];\r\n openETSSearchModal: boolean;\r\n pageNumber: number;\r\n pageSize: number;\r\n selectedCity?: string;\r\n selectedCountry?: number;\r\n selectedEtsCode?: string;\r\n selectedFieldId?: string;\r\n selectedInstitutionName?: string;\r\n selectedState?: number;\r\n states?: IDropDownOption[];\r\n total: number;\r\n\r\n // Payment\r\n paymentDetailModalOpen: boolean;\r\n paymentInfo?: IPaymentInfo;\r\n paymentModalOpenFail: boolean;\r\n paymentModalOpenProcess: boolean;\r\n paymentModalOpenSuccess: boolean;\r\n paymentTransaction?: IPaymentTransaction;\r\n returnUrl?: string;\r\n\r\n // Save\r\n changeEmailText: boolean;\r\n confirmationMessage?: string;\r\n emailField?: string;\r\n emptyEmailField: boolean;\r\n invalidEmail: boolean;\r\n openConfirmationSavedModal: boolean;\r\n openEmailModal: boolean;\r\n saveMessage?: string;\r\n showSaveButton: boolean;\r\n token?: string;\r\n\r\n // Settings\r\n governmentIdFormat: string;\r\n}\r\n// #endregion Types\r\n\r\n// #region Component\r\nclass ApplicationFormView extends React.Component {\r\n private idMainPage: string;\r\n private idModule: string;\r\n private idPage: string;\r\n private rowsPerPageOptions: number[];\r\n\r\n public readonly state: Readonly;\r\n\r\n public constructor(props) {\r\n super(props);\r\n\r\n // #region Initialize Variables and State\r\n this.idMainPage = 'Applications';\r\n this.idModule = 'Admissions';\r\n this.idPage = 'ApplicationForm';\r\n this.rowsPerPageOptions = [5, 10, 15, 20, 25, 50];\r\n this.state = this.getInitialState();\r\n // #endregion Initialize Variables and State\r\n\r\n // #region Bind State Management Listeners\r\n LayoutStore.addLayoutReadyListener(this.onLayoutReady);\r\n // #endregion State Management Listeners\r\n }\r\n\r\n private getInitialState(): IApplicationFormState {\r\n let resources: IApplicationFormResources | undefined;\r\n if (this.state) {\r\n resources = this.state.resources;\r\n }\r\n\r\n const cultures: ICultures = LayoutStore.getCultures();\r\n\r\n return {\r\n activeStep: 0,\r\n addresses: [],\r\n application: {\r\n addresses: [],\r\n education: [],\r\n employments: [],\r\n phones: [{ isPrimary: true }],\r\n testScores: [],\r\n userDefined: []\r\n },\r\n attachments: [],\r\n attachmentsTotalSizeNumber: 0,\r\n changeEmailText: true,\r\n componentError: false,\r\n components: undefined,\r\n cultures: LayoutStore.getCultures(),\r\n dateTimeCulture: cultures.dateTimeCulture,\r\n emptyEmailField: false,\r\n errors: [],\r\n expanded: false,\r\n expansionPanelHeaders: [],\r\n firstDayOfWeek: cultures.firstDayOfWeek,\r\n hasPersonId: false,\r\n institutions: [],\r\n invalidEmail: false,\r\n openAddressSearchModal: false,\r\n openConfirmationSavedModal: false,\r\n openEmailModal: false,\r\n openETSSearchModal: false,\r\n openNotAvailableModal: false,\r\n openRemoveAttachmentDialog: false,\r\n openSupportedFilesModal: false,\r\n pageNumber: 0,\r\n pageSize: 5,\r\n resources: resources,\r\n rowsPerPageOptions: [],\r\n shortDatePattern: cultures.shortDatePattern,\r\n showAttachments: false,\r\n showSaveButton: false,\r\n showSignIn: false,\r\n showSignUp: false,\r\n total: 0,\r\n totalNumberOfAttachments: 0,\r\n\r\n // Payment\r\n paymentDetailModalOpen: false,\r\n paymentModalOpenFail: false,\r\n paymentModalOpenProcess: false,\r\n paymentModalOpenSuccess: false,\r\n\r\n // Settings\r\n governmentIdFormat: ''\r\n };\r\n }\r\n\r\n // #region Events\r\n // #region Payment\r\n private onClosePaymentDetailModal = (): void => {\r\n try {\r\n this.setState({\r\n paymentDetailModalOpen: false,\r\n paymentInfo: undefined\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onClosePaymentDetailModal.name, e));\r\n }\r\n };\r\n\r\n private onClosePaymentModalProcess = (): void => {\r\n try {\r\n this.setState({\r\n paymentModalOpenProcess: false\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onClosePaymentModalProcess.name, e));\r\n }\r\n };\r\n\r\n private onPay = (): void => {\r\n try {\r\n const {\r\n paymentInfo\r\n } = this.state;\r\n\r\n if (paymentInfo) {\r\n this.setState({\r\n paymentModalOpenProcess: true\r\n });\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onPay.name, e));\r\n }\r\n };\r\n\r\n private onCloseFailedPayment = (): void => {\r\n try {\r\n window.location.href = `${Constants.webUrl}/Admissions/Applications`;\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCloseFailedPayment.name, e));\r\n }\r\n };\r\n // #endregion Payment\r\n\r\n // #region Attachment\r\n private buildFileSelector = () => {\r\n try {\r\n const fileSelector = document.createElement('input');\r\n const {\r\n components\r\n } = this.state;\r\n if (components) {\r\n let supportedTypes: string = '';\r\n if (components.fileTypes) {\r\n components.fileTypes.forEach(fileType => {\r\n const newFileExt = fileType.fileExtension.replace(' ', '');\r\n const fileExtensions = newFileExt.split(';');\r\n fileExtensions.forEach(fileExt => {\r\n supportedTypes = supportedTypes + fileExt.replace('*.', '') + ',';\r\n });\r\n });\r\n fileSelector.setAttribute('type', 'file');\r\n fileSelector.setAttribute('files', supportedTypes);\r\n fileSelector.onchange = this.onChangeFile.bind(this);\r\n }\r\n }\r\n return fileSelector;\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.buildFileSelector.name, e));\r\n return null;\r\n }\r\n };\r\n\r\n private getMediaTypeId = (fileExtension: string): number => {\r\n let mediaId: number = 0;\r\n try {\r\n const {\r\n components\r\n } = this.state;\r\n\r\n if (components && components.fileTypes) {\r\n components.fileTypes.forEach(fileType => {\r\n const newFileExt = fileType.fileExtension.replace(' ', '');\r\n const fileExtensions = newFileExt.split(';');\r\n fileExtensions.forEach(fileExt => {\r\n if (fileExt.replace('*.', '') === fileExtension) {\r\n mediaId = fileType.mediaTypeId;\r\n }\r\n });\r\n });\r\n }\r\n return mediaId;\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.getMediaTypeId.name, e));\r\n return mediaId;\r\n }\r\n };\r\n\r\n private readUploadedFile = inputFile => {\r\n try {\r\n const temporaryFileReader = new FileReader();\r\n\r\n return new Promise(resolve => {\r\n temporaryFileReader.onload = () => {\r\n if (temporaryFileReader.result) {\r\n let encoded = temporaryFileReader.result.toString().replace(/^data:(.*,)?/, '');\r\n if ((encoded.length % 4) > 0) {\r\n encoded += '='.repeat(4 - (encoded.length % 4));\r\n }\r\n resolve(encoded);\r\n }\r\n };\r\n temporaryFileReader.readAsDataURL(inputFile);\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.readUploadedFile.name, e));\r\n return null;\r\n }\r\n };\r\n\r\n private onChangeFile = async event => {\r\n try {\r\n const {\r\n applicationId\r\n } = this.state;\r\n\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n const file = event.target.files[0];\r\n const fileName = file.name.split('.');\r\n const mediaId = this.getMediaTypeId(fileName[1]);\r\n if (mediaId !== 0 && applicationId) {\r\n const {\r\n attachmentsTotalSizeNumber,\r\n components,\r\n resources,\r\n totalNumberOfAttachments\r\n } = this.state;\r\n\r\n if (components && resources) {\r\n if (components.numberOfAttachments <= totalNumberOfAttachments) {\r\n LayoutActions.setAlert({\r\n message: Format.toString(resources.attachments.lblTotalAttachmentsError, [components.numberOfAttachments]),\r\n messageType: ResultType.warning\r\n } as IAlert);\r\n }\r\n else {\r\n const bytes = (file.size / 1048576).toFixed(5);\r\n if (Number(bytes) > Number(components.maxAttachmentSize)) {\r\n LayoutActions.setAlert({\r\n message: Format.toString(resources.attachments.lblAttachmentsSizeError, [components.maxAttachmentSize]),\r\n messageType: ResultType.warning\r\n } as IAlert);\r\n }\r\n else {\r\n if (Number(bytes) + Number(attachmentsTotalSizeNumber) > Number(components.maxAttachmentSize)) {\r\n LayoutActions.setAlert({\r\n message: Format.toString(resources.attachments.lblAllAttachmentsSizeError,\r\n [components.maxApplicationAttachmentSize]),\r\n messageType: ResultType.warning\r\n } as IAlert);\r\n }\r\n else {\r\n const fileContents = await this.readUploadedFile(file);\r\n const newFile: IApplicationAttachment = {\r\n applicationId: applicationId,\r\n attachmentTitle: fileName[0],\r\n extension: `.${fileName[1]}`,\r\n fileContent: fileContents,\r\n fileSize: file.size,\r\n mediaTypeId: mediaId\r\n };\r\n LayoutActions.setLoading(true);\r\n Requests.postCreateApplicationAttachment(newFile, this.resolveCreateAttachment, this.logError);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeFile.name, e));\r\n }\r\n };\r\n\r\n private onClickOpenFolder = (event: React.MouseEvent) => {\r\n try {\r\n event.preventDefault();\r\n const {\r\n fileSelector\r\n } = this.state;\r\n fileSelector.click();\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onClickOpenFolder.name, e));\r\n }\r\n };\r\n\r\n private onClickContinue = () => {\r\n try {\r\n const {\r\n components,\r\n paymentInfo\r\n } = this.state;\r\n\r\n if (components) {\r\n if (paymentInfo) {\r\n const returnUrl =\r\n `${Constants.webUrl}/Admissions/ApplicationForm/${components.applicationFormId}`;\r\n this.setState({\r\n paymentDetailModalOpen: true,\r\n returnUrl: returnUrl,\r\n showAttachments: false\r\n });\r\n }\r\n else {\r\n components.isCompletedApplication = true;\r\n this.setState({\r\n components: components,\r\n showAttachments: false\r\n });\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onClickContinue.name, e));\r\n }\r\n };\r\n\r\n private onClickInfo = () => {\r\n try {\r\n this.setState({\r\n openSupportedFilesModal: true\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onClickInfo.name, e));\r\n }\r\n };\r\n\r\n private onCloseSupportedFilesModal = () => {\r\n try {\r\n this.setState({\r\n openSupportedFilesModal: false\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCloseSupportedFilesModal.name, e));\r\n }\r\n };\r\n\r\n private onClickRemoveAttachmentButton = (event: any) => {\r\n try {\r\n const fieldButtonId: string[] = event.target.id.split('|');\r\n this.setState({\r\n fileId: Number(fieldButtonId[1]),\r\n fileName: fieldButtonId[2],\r\n openRemoveAttachmentDialog: true\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onClickRemoveAttachmentButton.name, e));\r\n }\r\n };\r\n\r\n private onClickRemoveAttachment = () => {\r\n try {\r\n const {\r\n fileId\r\n } = this.state;\r\n LayoutActions.setLoading(true);\r\n Requests.postDeleteApplicationAttachment(Number(fileId), this.resolveRemoveAttachment, this.logError);\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onClickRemoveAttachment.name, e));\r\n }\r\n };\r\n\r\n private onCloseRemoveAttachmentModal = (): void => {\r\n try {\r\n this.setState({\r\n openRemoveAttachmentDialog: false\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCloseRemoveAttachmentModal.name, e));\r\n }\r\n };\r\n\r\n // #endregion Attachment\r\n\r\n // #region Account\r\n private onCloseSignIn = (): void => {\r\n try {\r\n this.setState({\r\n showSignIn: false\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCloseSignIn.name, e));\r\n }\r\n };\r\n\r\n private onCloseSignUp = (): void => {\r\n try {\r\n this.setState({\r\n showSignUp: false\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCloseSignUp.name, e));\r\n }\r\n };\r\n\r\n private onOpenSignIn = (): void => {\r\n try {\r\n this.setState({\r\n showSignIn: true,\r\n showSignUp: false\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onOpenSignIn.name, e));\r\n }\r\n };\r\n\r\n private onOpenSignUp = (): void => {\r\n try {\r\n this.setState({\r\n showSignIn: false,\r\n showSignUp: true\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onOpenSignUp.name, e));\r\n }\r\n };\r\n\r\n private onAfterSignUp = (userName?: string): void => {\r\n try {\r\n // After creation of new account user must be logged in\r\n LayoutStore.setIsAuthenticated(true);\r\n LayoutStore.setMenuOptions(undefined);\r\n if (userName) {\r\n this.setState({\r\n emailField: userName,\r\n showSignUp: false\r\n });\r\n this.onSaveEmailField();\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onAfterSignUp.name, e));\r\n }\r\n };\r\n\r\n private onAfterSignIn = (): void => {\r\n try {\r\n this.setState({\r\n showSignIn: false\r\n });\r\n this.onSaveApplication();\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onAfterSignIn.name, e));\r\n }\r\n };\r\n // #endregion Account\r\n\r\n // #region Stepper\r\n private onBackStep = (): void => {\r\n try {\r\n const {\r\n activeStep\r\n } = this.state;\r\n\r\n this.setState({\r\n activeStep: activeStep - 1\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onBackStep.name, e));\r\n }\r\n };\r\n\r\n private onClickStep = (event: React.MouseEvent) => {\r\n try {\r\n const steps: string[] = event.currentTarget.id.split('|');\r\n this.setState({\r\n activeStep: Number(steps[1])\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onClickStep.name, e));\r\n }\r\n };\r\n\r\n private onNextStep = (): void => {\r\n try {\r\n const {\r\n activeStep\r\n } = this.state;\r\n\r\n this.setState({\r\n activeStep: activeStep + 1\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onNextStep.name, e));\r\n }\r\n };\r\n // #endregion Stepper\r\n\r\n // #region Address\r\n private onCloseAddressSearchModal = (): void => {\r\n try {\r\n this.setState({\r\n addresses: [],\r\n openAddressSearchModal: false,\r\n selectedZipCode: undefined\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCloseAddressSearchModal.name, e));\r\n }\r\n };\r\n\r\n private onClickZipCodeLink =\r\n (zipCode?: string, city?: string, stateProvinceId?: number, countryId?: number, countyId?: number) => (): void => {\r\n try {\r\n const {\r\n components,\r\n selectedFieldId\r\n } = this.state;\r\n\r\n if (selectedFieldId && components) {\r\n const fieldId: string[] = selectedFieldId.split('|');\r\n\r\n const fieldGroup: IFieldForm[] =\r\n components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields;\r\n\r\n if (fieldId.length > 4) {\r\n this.assignFieldValue(fieldGroup, fieldId, 'addressCityId', true, city);\r\n this.assignFieldValue(fieldGroup, fieldId, 'stateProvinceId', true, stateProvinceId);\r\n this.assignFieldValue(fieldGroup, fieldId, 'postalCodeId', true, zipCode);\r\n this.assignFieldValue(fieldGroup, fieldId, 'addressCountyId', true, countyId);\r\n this.assignFieldValue(fieldGroup, fieldId, 'addressCountryId', true, countryId);\r\n }\r\n else {\r\n this.assignFieldValue(fieldGroup, fieldId, 'addressCityId', false, city);\r\n this.assignFieldValue(fieldGroup, fieldId, 'stateProvinceId', false, stateProvinceId);\r\n this.assignFieldValue(fieldGroup, fieldId, 'postalCodeId', false, zipCode);\r\n this.assignFieldValue(fieldGroup, fieldId, 'addressCountyId', false, countyId);\r\n this.assignFieldValue(fieldGroup, fieldId, 'addressCountryId', false, countryId);\r\n }\r\n }\r\n\r\n this.setState({\r\n openAddressSearchModal: false\r\n });\r\n } catch (e) {\r\n this.logError(LogData.fromException(this.onClickZipCodeLink.name, e));\r\n }\r\n };\r\n\r\n private onChangeTextFieldAddressSearch = (event: any): void => {\r\n try {\r\n if (event.target.id && event.target.id !== '') {\r\n switch (event.target.id) {\r\n case 'txtZipCode':\r\n this.setState({\r\n selectedZipCode: event.target.value\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeTextFieldAddressSearch.name, e));\r\n }\r\n };\r\n\r\n private onClearAddress = (): void => {\r\n try {\r\n this.setState({\r\n addresses: [],\r\n selectedZipCode: undefined\r\n });\r\n }\r\n catch (e) {\r\n throw e;\r\n }\r\n };\r\n\r\n private onSearchAddress = (): void => {\r\n try {\r\n LayoutActions.setLoading(true);\r\n\r\n const {\r\n pageSize,\r\n selectedZipCode\r\n } = this.state;\r\n\r\n Requests.getAddresses(\r\n 0,\r\n pageSize,\r\n selectedZipCode,\r\n this.resolveGetAddress, this.logError);\r\n\r\n const {\r\n total\r\n } = this.state;\r\n\r\n if (total) {\r\n const previousSize = pageSize;\r\n // Fix 60\r\n this.setState({\r\n pageSize: 0\r\n }, () => {\r\n this.setState({\r\n pageNumber: 0,\r\n pageSize: previousSize\r\n });\r\n });\r\n }\r\n }\r\n catch (e) {\r\n LayoutActions.setLoading(false);\r\n throw e;\r\n }\r\n };\r\n // #endregion Address\r\n\r\n // #region Education\r\n private onChangeTextFieldETSSearch = (event: any): void => {\r\n try {\r\n if (event.target.id && event.target.id !== '') {\r\n switch (event.target.id) {\r\n case 'txtEtsCode':\r\n this.setState({\r\n selectedEtsCode: event.target.value\r\n });\r\n break;\r\n case 'txtCity':\r\n this.setState({\r\n selectedCity: event.target.value\r\n });\r\n break;\r\n case 'txtInstitutionName':\r\n this.setState({\r\n selectedInstitutionName: event.target.value\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeTextFieldETSSearch.name, e));\r\n }\r\n };\r\n\r\n private onCloseETSSearchModal = (): void => {\r\n try {\r\n this.setState({\r\n institutions: [],\r\n openETSSearchModal: false,\r\n selectedCity: undefined,\r\n selectedCountry: undefined,\r\n selectedEtsCode: undefined,\r\n selectedInstitutionName: undefined,\r\n selectedState: undefined\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCloseETSSearchModal.name, e));\r\n }\r\n };\r\n\r\n private onChangeDropDownETSSearch = (optionSelected: IDropDownOption, id: string): void => {\r\n try {\r\n if (id && id !== '') {\r\n switch (id) {\r\n case 'ddlCountry':\r\n this.setState({\r\n selectedCountry: optionSelected.value === '' ? undefined :\r\n Number(optionSelected.value)\r\n });\r\n break;\r\n case 'ddlState':\r\n this.setState({\r\n selectedState: optionSelected.value === '' ? undefined :\r\n Number(optionSelected.value)\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeDropDownETSSearch.name, e));\r\n }\r\n };\r\n\r\n private onClearInstitution = (): void => {\r\n try {\r\n this.setState({\r\n institutions: [],\r\n selectedCity: undefined,\r\n selectedCountry: undefined,\r\n selectedEtsCode: undefined,\r\n selectedInstitutionName: undefined,\r\n selectedState: undefined\r\n });\r\n }\r\n catch (e) {\r\n throw e;\r\n }\r\n };\r\n\r\n private onSearchInstitution = (): void => {\r\n try {\r\n LayoutActions.setLoading(true);\r\n\r\n const {\r\n selectedCity,\r\n selectedEtsCode,\r\n selectedInstitutionName,\r\n selectedState,\r\n selectedCountry,\r\n pageSize\r\n } = this.state;\r\n\r\n Requests.getInstitutions(\r\n 0,\r\n pageSize,\r\n selectedInstitutionName,\r\n selectedEtsCode,\r\n selectedCity,\r\n selectedState,\r\n selectedCountry,\r\n this.resolveGetInstitutions, this.logError);\r\n\r\n const {\r\n total\r\n } = this.state;\r\n\r\n if (total) {\r\n const previousSize = pageSize;\r\n // Fix 60\r\n this.setState({\r\n pageSize: 0\r\n }, () => {\r\n this.setState({\r\n pageNumber: 0,\r\n pageSize: previousSize\r\n });\r\n });\r\n }\r\n }\r\n catch (e) {\r\n LayoutActions.setLoading(false);\r\n throw e;\r\n }\r\n };\r\n\r\n private onClickLink =\r\n (institutionName?: string, etsCode?: string, ficeCode?: string, city?: string, stateProvinceId?: number, countryId?: number) => (): void => {\r\n try {\r\n const {\r\n components,\r\n selectedFieldId\r\n } = this.state;\r\n\r\n if (selectedFieldId && components) {\r\n const fieldId: string[] = selectedFieldId.split('|');\r\n\r\n const fieldGroup: IFieldForm[] =\r\n components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields;\r\n\r\n if (fieldId.length > 4) {\r\n this.assignFieldValue(fieldGroup, fieldId, 'educationInstitutionName', true, institutionName);\r\n this.assignFieldValue(fieldGroup, fieldId, 'educationEtsCodeId', true, etsCode);\r\n this.assignFieldValue(fieldGroup, fieldId, 'educationFiceCode', true, ficeCode);\r\n this.assignFieldValue(fieldGroup, fieldId, 'educationCityId', true, city);\r\n this.assignFieldValue(fieldGroup, fieldId, 'educationStateId', true, stateProvinceId);\r\n this.assignFieldValue(fieldGroup, fieldId, 'educationCountryId', true, countryId);\r\n }\r\n else {\r\n this.assignFieldValue(fieldGroup, fieldId, 'educationInstitutionName', false, institutionName);\r\n this.assignFieldValue(fieldGroup, fieldId, 'educationEtsCodeId', false, etsCode);\r\n this.assignFieldValue(fieldGroup, fieldId, 'educationFiceCode', false, ficeCode);\r\n this.assignFieldValue(fieldGroup, fieldId, 'educationCityId', false, city);\r\n this.assignFieldValue(fieldGroup, fieldId, 'educationStateId', false, stateProvinceId);\r\n this.assignFieldValue(fieldGroup, fieldId, 'educationCountryId', false, countryId);\r\n }\r\n }\r\n\r\n this.setState({\r\n openETSSearchModal: false\r\n });\r\n } catch (e) {\r\n this.logError(LogData.fromException(this.onClickLink.name, e));\r\n }\r\n };\r\n // #endregion Education\r\n\r\n // #region Phone\r\n private onPrimaryButtonClick = (fieldId: string[], newComponents: IApplicationForm, value: any): IApplicationForm => {\r\n try {\r\n const phoneFields: any = newComponents.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])];\r\n let field: any = [];\r\n let numRow: number = 4;\r\n\r\n field = newComponents;\r\n phoneFields.fields.forEach(function (item, row) {\r\n const idFields: string[] = item.data.id.split('|');\r\n if (fieldId[0] === idFields[0]) {\r\n if (fieldId[3] !== idFields[3] || fieldId[4] !== idFields[4]) {\r\n item.value = '';\r\n }\r\n else {\r\n numRow = row;\r\n }\r\n }\r\n });\r\n\r\n field.steps[Number(fieldId[1])].fieldsGroups[fieldId[2]].fields[Number(numRow)].value = value;\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveLayoutReady.name, e));\r\n }\r\n return newComponents;\r\n };\r\n // #endregion Phone\r\n\r\n // #region Submit and Save\r\n private onSaveApplication = (): void => {\r\n try {\r\n const {\r\n components,\r\n resources,\r\n token\r\n } = this.state;\r\n\r\n if (resources) {\r\n const applicationTop: HTMLElement | null = document.getElementById('applicationTop');\r\n if (applicationTop) {\r\n applicationTop.scrollIntoView();\r\n }\r\n LayoutActions.setLoading(true);\r\n if (components) {\r\n if (components && components.layoutId) {\r\n // Update saved application\r\n if (token) {\r\n if (components.person &&\r\n (components.person.email || components.person.temporaryEmail)) {\r\n const savedApplication: ISavedApplication = {\r\n applicationFormSettingId: components.applicationFormId,\r\n email: components.person.email ? components.person.email :\r\n components.person.temporaryEmail ? components.person.temporaryEmail : '',\r\n formLayoutId: components.layoutId,\r\n token: token\r\n };\r\n RequestsApplication.postUpdateSavedApplication(savedApplication,\r\n components, this.resolveSaveIncompleteApplication, this.logError);\r\n }\r\n }\r\n else {\r\n if (LayoutStore && !LayoutStore.getIsAuthenticated()) {\r\n // If person doesn't have a person id\r\n if (!components.person || !components.person.personId) {\r\n this.onOpenSignIn();\r\n LayoutActions.setLoading(false);\r\n }\r\n }\r\n else {\r\n // If user has primary email use this to populate email confirmation modal.\r\n if (components.person && components.person.email) {\r\n this.setState({\r\n emailField: components.person.email,\r\n openEmailModal: true\r\n });\r\n LayoutActions.setLoading(false);\r\n }\r\n else if (components.person && components.person.temporaryEmail) {\r\n this.onSaveEmailField();\r\n }\r\n // If user has not primary email and email exist in the form with some value use it.\r\n else {\r\n if (components) {\r\n let hasValueEmailField: boolean = false;\r\n components.steps.forEach(step => {\r\n step.fieldsGroups.forEach(fieldsGroup => {\r\n fieldsGroup.fields.forEach(field => {\r\n if (field.data.id === 'emailId') {\r\n if (field.value && !field.data.error) {\r\n this.setState({\r\n emailField: field.value,\r\n openEmailModal: true\r\n });\r\n hasValueEmailField = true;\r\n LayoutActions.setLoading(false);\r\n }\r\n }\r\n });\r\n });\r\n });\r\n // If user has not primary email and email not exist in the form or is empty don't populate it.\r\n if (!hasValueEmailField) {\r\n this.setState({\r\n openEmailModal: true\r\n });\r\n LayoutActions.setLoading(false);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onSaveApplication.name, e));\r\n }\r\n };\r\n\r\n private onSaveEmailField = (): void => {\r\n try {\r\n LayoutActions.setLoading(true);\r\n\r\n const {\r\n components,\r\n emailField,\r\n invalidEmail\r\n } = this.state;\r\n\r\n if (!emailField &&\r\n components && components.person && !components.person.temporaryEmail) {\r\n this.setState({\r\n emptyEmailField: true\r\n });\r\n }\r\n else {\r\n if (!invalidEmail && components && components.person) {\r\n const savedApplication: ISavedApplication = {\r\n applicationFormSettingId: components.applicationFormId,\r\n email: emailField ? emailField :\r\n components.person.temporaryEmail ? components.person.temporaryEmail : '',\r\n formLayoutId: components.layoutId\r\n };\r\n Requests.postCreateSavedApplication(savedApplication, components, this.resolveSaveIncompleteApplication, this.logError);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeTextFieldModal.name, e));\r\n }\r\n };\r\n\r\n private onSubmit = (): void => {\r\n try {\r\n const {\r\n application,\r\n components,\r\n governmentIdFormat\r\n } = this.state;\r\n\r\n const applicationTop: HTMLElement | null = document.getElementById('applicationTop');\r\n if (applicationTop) {\r\n applicationTop.scrollIntoView();\r\n }\r\n\r\n if (components) {\r\n components.steps.forEach(step => {\r\n step.fieldsGroups.forEach(fieldsGroup => {\r\n fieldsGroup.fields.forEach(field => {\r\n let exist: boolean = false;\r\n if (field.componentType === 'Dropdown') {\r\n if (field.default && field.data.options) {\r\n field.data.options.forEach(option => {\r\n if (option.value.toString() === field.default.toString()) {\r\n exist = true;\r\n }\r\n });\r\n }\r\n if (exist) {\r\n field.value = field.value ? field.value : field.default;\r\n this.setApplicationValues(field.data.id, field.value);\r\n }\r\n else if (!field.default && field.value !== '') {\r\n this.setApplicationValues(field.data.id, field.value);\r\n }\r\n }\r\n else {\r\n field.value = field.value ? field.value : field.default;\r\n this.setApplicationValues(field.data.id, field.value);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n this.setState({\r\n components\r\n });\r\n\r\n if (this.reviewRequiredFields()) {\r\n\r\n // Remove non-alphanumeric characters from governmentId\r\n if (application.governmentId && governmentIdFormat) {\r\n let cleanGovernmentId: string = '';\r\n for (let i = 0; i < governmentIdFormat.length; i++) {\r\n if (governmentIdFormat[i] === 'X' || governmentIdFormat[i] === '#') {\r\n cleanGovernmentId += application.governmentId[i];\r\n }\r\n }\r\n application.governmentId = cleanGovernmentId;\r\n }\r\n\r\n if (application) {\r\n LayoutActions.showPageLoader();\r\n Requests.postSubmit(application, this.resolveSubmitApplication, this.logError);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onSubmit.name, e));\r\n }\r\n };\r\n\r\n private onCloseEmailModal = (): void => {\r\n try {\r\n this.setState({\r\n openEmailModal: false\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCloseEmailModal.name, e));\r\n }\r\n };\r\n\r\n private onCloseNotAvailableModal = (): void => {\r\n try {\r\n window.location.assign(`${Constants.webUrl}/Admissions/Applications`);\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCloseNotAvailableModal.name, e));\r\n }\r\n };\r\n\r\n private onCloseConfirmationSavedModal = (): void => {\r\n try {\r\n const {\r\n components\r\n } = this.state;\r\n\r\n if (components) {\r\n const confirmationIndex: number =\r\n components.fieldsGroups.findIndex(x => x.id === 'confirmationGroup');\r\n const finishButtonId: number =\r\n components.fieldsGroups[confirmationIndex].fields.findIndex(x => x.data.id === 'finishId');\r\n if (confirmationIndex > -1 && finishButtonId > -1) {\r\n const actionUrl: string | undefined = components.fieldsGroups[confirmationIndex].fields[finishButtonId].actionUrl;\r\n if (actionUrl) {\r\n window.location.assign(actionUrl);\r\n }\r\n else {\r\n window.location.assign(`${Constants.webUrl}/Admissions/Applications`);\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onCloseConfirmationSavedModal.name, e));\r\n }\r\n };\r\n // #endregion Submit and Save\r\n\r\n // #region Change Fields Events\r\n private onChangeCheckBox = (event: any): void => {\r\n try {\r\n const {\r\n application,\r\n components\r\n } = this.state;\r\n\r\n if (application && components) {\r\n const app: IApplication = application;\r\n const fieldId: string[] = event.target.id.split('|');\r\n const newComponents: IApplicationForm = components;\r\n const value: boolean = Boolean(event.target.checked);\r\n const evaluateAppJs = eval;\r\n\r\n if (fieldId.length < 5) {\r\n if (fieldId && fieldId[1] && fieldId[2] && fieldId[3]) {\r\n const field: IFieldForm = newComponents.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields[Number(fieldId[3])];\r\n\r\n if (field.isUserDefined && field.customScript) {\r\n if (value) {\r\n field.value = evaluateAppJs(field.customScript);\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n }\r\n else {\r\n field.value = NaN;\r\n }\r\n }\r\n else {\r\n field.value = value ? value : undefined;\r\n }\r\n }\r\n }\r\n else {\r\n const field: IFieldForm | undefined =\r\n components.steps[Number(fieldId[1])].\r\n fieldsGroups[Number(fieldId[2])].\r\n fields.find(x =>\r\n x.data.section === Number(fieldId[4]) &&\r\n x.data.id.substr(0, fieldId[0].length) === fieldId[0]);\r\n if (field) {\r\n field.value = value;\r\n }\r\n }\r\n\r\n this.setState({\r\n application: app,\r\n components: newComponents\r\n });\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeCheckBox.name, e));\r\n }\r\n };\r\n\r\n private onChangeDateTimeField = (date: string, id: string, isValid: boolean): void => {\r\n try {\r\n const {\r\n application,\r\n components,\r\n cultures,\r\n resources,\r\n shortDatePattern\r\n } = this.state;\r\n\r\n if (id && id !== '' && application && components) {\r\n const app: IApplication = application;\r\n const fieldId: string[] = id.split('|');\r\n let fieldIndex: number = 0;\r\n if (fieldId[4]) {\r\n fieldIndex = Number(fieldId[4]) + 1;\r\n }\r\n let newComponents: IApplicationForm = components;\r\n const field = newComponents.steps[Number(fieldId[1])].\r\n fieldsGroups[Number(fieldId[2])].\r\n fields[Number(fieldId[3])];\r\n\r\n const dateMinFormat: string =\r\n moment().add(-100, 'years').format(cultures.shortDatePattern.toUpperCase());\r\n const dateMaxFormat: string =\r\n moment().add(100, 'years').format(cultures.shortDatePattern.toUpperCase());\r\n\r\n switch (fieldId[0]) {\r\n case 'dateOfBirthId':\r\n app.dateOfBirth = date;\r\n newComponents = this.setValues(fieldId, newComponents, date);\r\n if (isValid) {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n newComponents = this.cleanErrorMessages(fieldId, newComponents);\r\n }\r\n else {\r\n if (date) {\r\n field.data.error = true;\r\n if (resources) {\r\n field.data.helperText =\r\n Format.toString(resources.formatDateOutOfRange, [dateMinFormat, dateMaxFormat]);\r\n }\r\n }\r\n else {\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageRequired;\r\n }\r\n }\r\n break;\r\n case 'visaExpirationDateId':\r\n app.visaExpiration = date;\r\n newComponents = this.setValues(fieldId, newComponents, date);\r\n if (isValid) {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n newComponents = this.cleanErrorMessages(fieldId, newComponents);\r\n }\r\n else {\r\n if (date) {\r\n field.data.error = true;\r\n if (resources) {\r\n field.data.helperText =\r\n Format.toString(resources.formatDateOutOfRange, [dateMinFormat, dateMaxFormat]);\r\n }\r\n }\r\n else {\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageRequired;\r\n }\r\n }\r\n break;\r\n case 'passportExpirationDateId':\r\n app.passportExpiration = date;\r\n newComponents = this.setValues(fieldId, newComponents, date);\r\n if (isValid) {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n newComponents = this.cleanErrorMessages(fieldId, newComponents);\r\n }\r\n else {\r\n if (date) {\r\n field.data.error = true;\r\n if (resources) {\r\n field.data.helperText =\r\n Format.toString(resources.formatDateOutOfRange, [dateMinFormat, dateMaxFormat]);\r\n }\r\n }\r\n else {\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageRequired;\r\n }\r\n }\r\n break;\r\n case 'testDateTakenId':\r\n const fieldTestTaken: any = newComponents.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])];\r\n if (!app.testScores[fieldIndex]) {\r\n app.testScores[fieldIndex] = {} as ITestScore;\r\n }\r\n app.testScores[fieldIndex].dateTaken = date;\r\n if (!isValid) {\r\n field.data.error = true;\r\n if (resources) {\r\n field.data.helperText =\r\n Format.toString(resources.formatDateOutOfRange, [dateMinFormat, dateMaxFormat]);\r\n }\r\n }\r\n if (fieldId.length > 4) {\r\n fieldTestTaken.fields.forEach(function (field) {\r\n const itemArrId: string[] = field.data.id.split('|');\r\n if (fieldId[3] === itemArrId[3] && fieldId[4] === itemArrId[4]) {\r\n if (!isValid) {\r\n field.data.error = true;\r\n if (resources) {\r\n field.data.helperText =\r\n Format.toString(resources.formatDateOutOfRange, [dateMinFormat, dateMaxFormat]);\r\n }\r\n } else if (moment(date, shortDatePattern).toDate() > new Date()) {\r\n field.data.error = true;\r\n field.data.helperText =\r\n Format.toString(\r\n field.data.errorMessageRange, [\r\n newComponents.dateTimeMin,\r\n moment(new Date()).format(shortDatePattern.toUpperCase())]);\r\n } else {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n field.value = date;\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n fieldTestTaken.fields.forEach(function (field) {\r\n const itemArrId: string[] = field.data.id.split('|');\r\n if (fieldId[0] === itemArrId[0] && itemArrId.length === 1) {\r\n if (!isValid) {\r\n field.data.error = true;\r\n if (resources) {\r\n field.data.helperText =\r\n Format.toString(resources.formatDateOutOfRange, [dateMinFormat, dateMaxFormat]);\r\n }\r\n } else if (moment(date).toDate() > new Date()) {\r\n field.data.error = true;\r\n field.data.helperText =\r\n Format.toString(\r\n field.data.errorMessageRange, [\r\n newComponents.dateTimeMin,\r\n moment(new Date()).format(shortDatePattern.toUpperCase())]);\r\n } else {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n field.value = date;\r\n }\r\n }\r\n });\r\n }\r\n break;\r\n default:\r\n newComponents = this.setValues(fieldId, newComponents, date);\r\n if (isValid) {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n newComponents = this.cleanErrorMessages(fieldId, newComponents);\r\n }\r\n else {\r\n if (date) {\r\n field.data.error = true;\r\n if (resources) {\r\n field.data.helperText =\r\n Format.toString(resources.formatDateOutOfRange, [dateMinFormat, dateMaxFormat]);\r\n }\r\n }\r\n else {\r\n if (field.isRequired) {\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageRequired;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n this.setState({\r\n application: app,\r\n components: newComponents\r\n });\r\n }\r\n } catch (e) {\r\n this.logError(LogData.fromException(this.onChangeDateTimeField.name, e));\r\n }\r\n };\r\n\r\n private onChangeDropDown = (optionSelected: IDropDownOption, id: string): void => {\r\n try {\r\n const {\r\n application,\r\n components\r\n } = this.state;\r\n\r\n if (id && id !== '' && application && components) {\r\n const app: IApplication = application;\r\n const fieldId: string[] = id.split('|');\r\n let fieldIndex: number = 0;\r\n if (fieldId[4]) {\r\n fieldIndex = Number(fieldId[4]) + 1;\r\n }\r\n\r\n let valueSelected: any | undefined;\r\n if (optionSelected.value) {\r\n switch (typeof optionSelected.value) {\r\n case 'string':\r\n valueSelected = String(optionSelected.value);\r\n break;\r\n case 'number':\r\n valueSelected = Number(optionSelected.value);\r\n break;\r\n default:\r\n valueSelected = optionSelected.value;\r\n break;\r\n }\r\n }\r\n\r\n switch (fieldId[0]) {\r\n case 'testId':\r\n if (!app.testScores[fieldIndex]) {\r\n app.testScores[fieldIndex] = {} as ITestScore;\r\n }\r\n app.testScores[fieldIndex].id = valueSelected;\r\n app.testScores[fieldIndex].typeId = 0;\r\n\r\n const testScoreComponents: IFieldForm[] =\r\n components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields;\r\n const score: IFieldForm | undefined =\r\n testScoreComponents.find(f =>\r\n f.data.id.split('|')[0] === 'testScoreId' &&\r\n (f.data.id.split('|')[4] || '') === (fieldId[4] || ''));\r\n\r\n if (score && valueSelected && valueSelected !== '') {\r\n Requests.getValidateScoreType(\r\n application.applicationId || 0,\r\n app.testScores[fieldIndex].id,\r\n 'testScoreGroup',\r\n score.data.id,\r\n this.resolveValidateScore, this.logError);\r\n }\r\n break;\r\n case 'testTypeId':\r\n if (!app.testScores[fieldIndex]) {\r\n app.testScores[fieldIndex] = {} as ITestScore;\r\n }\r\n app.testScores[fieldIndex].typeId = valueSelected;\r\n break;\r\n case 'hispanicGroupId':\r\n if (components) {\r\n // Get fieldsGroup\r\n const fieldsGroup: IFieldForm[] =\r\n components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields;\r\n // Get checkBoxList hispanicCheckboxListId index\r\n let checkBoxListIndex: number = -1;\r\n fieldsGroup.forEach((field, i) => {\r\n if (field.data.id.substr(0, 'hispanicCheckboxListId'.length) === 'hispanicCheckboxListId') {\r\n checkBoxListIndex = i;\r\n }\r\n });\r\n // Get checkBoxList hispanicCheckboxListId\r\n const checkBoxListField: IFieldForm =\r\n components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields[checkBoxListIndex];\r\n let ipedsList: IApplicationIpeds[] | undefined = application.ipeds;\r\n if (valueSelected === '1') {\r\n if (checkBoxListField) {\r\n // Add category in list\r\n const ipeds: IApplicationIpeds = { ipedsEthnicityId: undefined, ipedsFederalCategoryId: 1 };\r\n if (ipedsList) {\r\n const ipedIndex: number =\r\n ipedsList.findIndex(x => x.ipedsFederalCategoryId === 1);\r\n // Category was not found, add category\r\n if (ipedIndex === -1) {\r\n ipedsList.push(ipeds);\r\n }\r\n }\r\n // ipedsList was undefined so add a new item with category\r\n else {\r\n ipedsList = [ipeds];\r\n }\r\n checkBoxListField.value = undefined;\r\n }\r\n }\r\n if (valueSelected === '0') {\r\n if (checkBoxListField) {\r\n if (ipedsList && ipedsList.length > 0) {\r\n let index: number = -1;\r\n do {\r\n index = ipedsList.findIndex(x => x.ipedsFederalCategoryId === 1);\r\n if (index > -1) {\r\n ipedsList.splice(index, 1);\r\n }\r\n } while (index > -1);\r\n }\r\n checkBoxListField.value = undefined;\r\n }\r\n }\r\n if (valueSelected === undefined) {\r\n if (checkBoxListField) {\r\n if (ipedsList && ipedsList.length > 0) {\r\n let index: number = ipedsList.length;\r\n do {\r\n ipedsList.splice(index, 1);\r\n index--;\r\n } while (ipedsList.length > 0);\r\n }\r\n checkBoxListField.value = undefined;\r\n }\r\n }\r\n application.ipeds = ipedsList;\r\n this.setState({\r\n application: application,\r\n components: components\r\n });\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n let newComponents: IApplicationForm = components;\r\n if (fieldId && fieldId[1] && fieldId[2] && fieldId[3]) {\r\n newComponents = this.cleanErrorMessages(fieldId, newComponents);\r\n newComponents = this.setValues(fieldId, newComponents, valueSelected);\r\n\r\n const fieldGroup: any = newComponents.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])];\r\n const sectionFields: any = fieldGroup.fields.filter(x => (x.data.id.split('|')[4] || '') === (fieldId[4] || ''));\r\n\r\n sectionFields.forEach(field => {\r\n if (fieldId[0] === 'testId' && field.childField && valueSelected && valueSelected !== '' &&\r\n Number(valueSelected) > 0) {\r\n Requests.getChildOptions(\r\n field.childEndPoint,\r\n valueSelected || 0,\r\n fieldId[1],\r\n fieldId[2],\r\n field.childField,\r\n true,\r\n this.resolveGetChildOptions,\r\n this.logError,\r\n undefined);\r\n }\r\n if (fieldId[0] === 'activityTypeId' && field.childField && valueSelected && valueSelected !== '' &&\r\n Number(valueSelected) > 0) {\r\n Requests.getChildOptions(\r\n field.childEndPoint,\r\n valueSelected || 0,\r\n fieldId[1],\r\n fieldId[2],\r\n field.childField,\r\n true,\r\n this.resolveGetChildOptions,\r\n this.logError,\r\n Number(newComponents.applicationFormId));\r\n }\r\n if (fieldId[0] === 'campusOptionsId' && field.childField && valueSelected && valueSelected !== '' &&\r\n Number(valueSelected) > 0) {\r\n Requests.getChildOptions(\r\n field.childEndPoint,\r\n valueSelected || 0,\r\n fieldId[1],\r\n fieldId[2],\r\n field.childField,\r\n true,\r\n this.resolveGetChildOptions,\r\n this.logError,\r\n undefined);\r\n }\r\n });\r\n }\r\n this.setState({\r\n application: app,\r\n components: newComponents\r\n });\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeDropDown.name, e));\r\n }\r\n };\r\n\r\n private onChangeListCheckbox = (event: any): void => {\r\n try {\r\n const {\r\n application,\r\n components\r\n } = this.state;\r\n\r\n const fieldId: string[] = event.currentTarget.id.split('|');\r\n const app: IApplication = application;\r\n\r\n if (application && components) {\r\n const childField: string[] = event.target.id.split('|');\r\n if (childField[1] === 'noHispanicNestedCheckboxListId') {\r\n const field: IFieldForm =\r\n components.steps[Number(childField[2])].\r\n fieldsGroups[Number(childField[3])].\r\n fields[Number(childField[4])];\r\n if (!app.ipeds && field.value) {\r\n const fieldGroup: IFieldsGroup =\r\n components.steps[Number(childField[2])].\r\n fieldsGroups[Number(childField[3])];\r\n this.setIpedsValuesNestedCheckList(fieldGroup);\r\n }\r\n if (event.target.checked === true) {\r\n let ipedNew: IApplicationIpeds = { ipedsFederalCategoryId: 0 };\r\n let ipedIndex: number = -1;\r\n if (childField[0] === 'child') {\r\n ipedNew = {\r\n ipedsEthnicityId: Number(childField[7]),\r\n ipedsFederalCategoryId: Number(childField[6])\r\n };\r\n if (app.ipeds) {\r\n ipedIndex = app.ipeds.findIndex(x => x.ipedsEthnicityId === undefined &&\r\n x.ipedsFederalCategoryId === Number(childField[6]));\r\n }\r\n }\r\n else if (childField[0] === 'parent') {\r\n ipedNew = {\r\n ipedsEthnicityId: undefined,\r\n ipedsFederalCategoryId: Number(childField[6])\r\n };\r\n if (app.ipeds) {\r\n ipedIndex =\r\n app.ipeds.findIndex(x => x.ipedsFederalCategoryId ===\r\n Number(childField[6]));\r\n }\r\n }\r\n if (app.ipeds) {\r\n if (ipedIndex > -1) {\r\n app.ipeds[ipedIndex] = ipedNew;\r\n }\r\n else {\r\n app.ipeds.push(ipedNew);\r\n }\r\n }\r\n else {\r\n app.ipeds = [ipedNew];\r\n }\r\n }\r\n else {\r\n if (app.ipeds) {\r\n if (childField[0] === 'child') {\r\n const itemToRemove: number =\r\n app.ipeds.findIndex(x => x.ipedsEthnicityId === Number(childField[7]) &&\r\n x.ipedsFederalCategoryId === Number(childField[6]));\r\n app.ipeds.splice(itemToRemove, 1);\r\n }\r\n else if (childField[0] === 'parent') {\r\n let index: number = -1;\r\n do {\r\n index = app.ipeds.findIndex(x =>\r\n x.ipedsFederalCategoryId === Number(childField[6]));\r\n if (index > -1) {\r\n app.ipeds.splice(index, 1);\r\n }\r\n } while (index > -1);\r\n }\r\n }\r\n }\r\n if (childField && childField[2] && childField[3] && childField[4]) {\r\n const field: IFieldForm =\r\n components.steps[Number(childField[2])].\r\n fieldsGroups[Number(childField[3])].\r\n fields[Number(childField[4])];\r\n if (app.ipeds && app.ipeds.length === 0 && field.isRequired) {\r\n field.value = undefined;\r\n }\r\n else {\r\n // change value of field\r\n if (app.ipeds) {\r\n field.value = undefined;\r\n app.ipeds.forEach(iped => {\r\n if (iped.ipedsFederalCategoryId !== 1) {\r\n if (field.value) {\r\n field.value = field.value +\r\n `${iped.ipedsFederalCategoryId.toString()}$${iped.ipedsEthnicityId ?\r\n iped.ipedsEthnicityId.toString() : ''},`;\r\n }\r\n else {\r\n field.value =\r\n `${iped.ipedsFederalCategoryId.toString()}$${iped.ipedsEthnicityId ?\r\n iped.ipedsEthnicityId.toString() : ''},`;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n switch (fieldId[0]) {\r\n case 'campusId':\r\n if (fieldId && fieldId[1] && fieldId[2] && fieldId[3] && fieldId[4]) {\r\n const field: any =\r\n components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields[Number(fieldId[3])];\r\n if (!app.campuses && field.value) {\r\n const fieldGroup =\r\n components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])];\r\n this.reviewCampus(fieldGroup);\r\n }\r\n }\r\n if (app.campuses) {\r\n const campusIndex: number = app.campuses.findIndex(x => x === Number(fieldId[4]));\r\n if (event.target.checked === true) {\r\n app.campuses.push(Number(fieldId[4]));\r\n }\r\n else {\r\n app.campuses.splice(campusIndex, 1);\r\n }\r\n }\r\n else {\r\n if (event.target.checked === true) {\r\n const campus: number = Number(fieldId[4]);\r\n app.campuses = [campus];\r\n }\r\n }\r\n if (fieldId && fieldId[1] && fieldId[2] && fieldId[3] && fieldId[4]) {\r\n const field: any =\r\n components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields[Number(fieldId[3])];\r\n if (app.campuses && app.campuses.length === 0 && field.isRequired) {\r\n field.value = undefined;\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageRequired;\r\n }\r\n else {\r\n if (app.campuses) {\r\n field.value = app.campuses.toString();\r\n }\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n }\r\n }\r\n break;\r\n case 'interestId':\r\n if (fieldId && fieldId[1] && fieldId[2] && fieldId[3] && fieldId[4]) {\r\n const field: any =\r\n components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields[Number(fieldId[3])];\r\n if (!app.academicInterests && field.value) {\r\n const fieldGroup =\r\n components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])];\r\n this.reviewAcademicInterest(fieldGroup);\r\n }\r\n }\r\n if (app.academicInterests) {\r\n const index: number = app.academicInterests.findIndex(x => x === Number(fieldId[4]));\r\n if (event.target.checked === true) {\r\n app.academicInterests.push(Number(fieldId[4]));\r\n }\r\n else {\r\n app.academicInterests.splice(index, 1);\r\n }\r\n }\r\n else {\r\n if (event.target.checked === true) {\r\n app.academicInterests = [Number(fieldId[4])];\r\n }\r\n }\r\n if (fieldId && fieldId[1] && fieldId[2] && fieldId[3] && fieldId[4]) {\r\n const field: any = components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields[Number(fieldId[3])];\r\n if (app.academicInterests && app.academicInterests.length === 0 && field.isRequired) {\r\n field.value = undefined;\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageRequired;\r\n }\r\n else {\r\n if (app.academicInterests) {\r\n field.value = app.academicInterests.toString();\r\n }\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n }\r\n }\r\n break;\r\n case 'hispanicCheckboxListId':\r\n const field: IFieldForm =\r\n components.steps[Number(childField[1])].\r\n fieldsGroups[Number(childField[2])].\r\n fields[Number(childField[3])];\r\n if (!app.ipeds && field.value) {\r\n const fieldGroup: IFieldsGroup =\r\n components.steps[Number(childField[1])].\r\n fieldsGroups[Number(childField[2])];\r\n this.setIpedsValuesCheckList(fieldGroup);\r\n }\r\n const ipedNew: IApplicationIpeds = {\r\n ipedsEthnicityId: Number(fieldId[4]),\r\n ipedsFederalCategoryId: 1\r\n };\r\n if (app.ipeds) {\r\n const ipedIndex: number = app.ipeds.findIndex(x => x.ipedsEthnicityId === undefined &&\r\n x.ipedsFederalCategoryId === 1);\r\n if (event.target.checked === true) {\r\n // when exists category 1 and null, record should be updated\r\n if (ipedIndex > -1) {\r\n app.ipeds[ipedIndex] = ipedNew;\r\n }\r\n else {\r\n app.ipeds.push(ipedNew);\r\n }\r\n }\r\n else {\r\n // remove item from list\r\n const itemToRemove: number =\r\n app.ipeds.findIndex(x => x.ipedsEthnicityId === Number(fieldId[4]) &&\r\n x.ipedsFederalCategoryId === 1);\r\n app.ipeds.splice(itemToRemove, 1);\r\n }\r\n }\r\n else {\r\n app.ipeds = [ipedNew];\r\n }\r\n // Select yes in radio buttons\r\n components.steps[Number(fieldId[1])].\r\n fieldsGroups[Number(fieldId[2])].fields.forEach(field => {\r\n if (field.data.id === 'hispanicGroupId') {\r\n field.value = '1';\r\n }\r\n });\r\n // Add in the list of value id's selected\r\n if (fieldId && fieldId[1] && fieldId[2] && fieldId[3] && fieldId[4]) {\r\n const field: IFieldForm =\r\n components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields[Number(fieldId[3])];\r\n if (app.ipeds && app.ipeds.length === 0 && field.isRequired) {\r\n field.value = undefined;\r\n }\r\n else {\r\n // change value of field\r\n if (app.ipeds) {\r\n const ipedsArray: string[] = [];\r\n app.ipeds.forEach(ethnicity => {\r\n if (ethnicity.ipedsFederalCategoryId === 1) {\r\n if (ethnicity.ipedsEthnicityId) {\r\n ipedsArray.push(ethnicity.ipedsEthnicityId.toString());\r\n }\r\n }\r\n });\r\n field.value = ipedsArray.toString();\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n this.setState({\r\n application: app,\r\n components: components\r\n });\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeListCheckbox.name, e));\r\n }\r\n };\r\n\r\n private onChangeRadioGroup = (event: any, value: string): void => {\r\n try {\r\n const {\r\n application,\r\n components\r\n } = this.state;\r\n\r\n if (event.target.name && event.target.name !== '' && application && components) {\r\n const app: IApplication = application;\r\n const fieldId: string[] = event.target.name.split('|');\r\n let newComponents: IApplicationForm = components;\r\n\r\n switch (fieldId[0]) {\r\n case 'primaryPhoneId':\r\n newComponents = this.onPrimaryButtonClick(fieldId, newComponents, value);\r\n break;\r\n }\r\n\r\n newComponents = this.cleanErrorMessages(fieldId, newComponents);\r\n newComponents = this.setValues(fieldId, newComponents, value);\r\n\r\n this.setState({\r\n application: app,\r\n components: newComponents\r\n });\r\n }\r\n } catch (e) {\r\n this.logError(LogData.fromException(this.onChangeRadioGroup.name, e));\r\n }\r\n };\r\n\r\n private onChangeTextField = (event: any): void => {\r\n try {\r\n const {\r\n application,\r\n components\r\n } = this.state;\r\n\r\n if (event.target.id && event.target.id !== '' && application && components) {\r\n const app: IApplication = application;\r\n const fieldId: string[] = event.target.id.split('|');\r\n let fieldIndex: number = 0;\r\n if (fieldId[4]) {\r\n fieldIndex = Number(fieldId[4]) + 1;\r\n }\r\n let newComponents: IApplicationForm = components;\r\n switch (fieldId[0]) {\r\n case 'emailId':\r\n if (fieldId && fieldId[1] && fieldId[2]) {\r\n const field: any = newComponents.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields[Number(fieldId[3])];\r\n if (!components.emailRegExpression || event.target.value.match(components.emailRegExpression)) {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n field.value = event.target.value;\r\n app.email = event.target.value;\r\n }\r\n else {\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageNotValid;\r\n }\r\n }\r\n break;\r\n case 'emergencyPhoneId':\r\n if (!event.target.value.match(/^[0-9]*$/g)) {\r\n const onlyNum = new RegExp(/([A-Za-zñ<> äÄëËïÏöÖüÜáÁéÉíÍóÓúÚýÝ'¿\"#_-Ä-´°%;&¨Ñ,¡.*+?^=!:$(){}|[\\]\\/\\\\])/g);\r\n event.target.value = event.target.value.replace(onlyNum, '');\r\n }\r\n break;\r\n case 'firstNameId':\r\n app.firstName = event.target.value;\r\n break;\r\n case 'formerLastNameId':\r\n app.formerLastName = event.target.value;\r\n break;\r\n case 'governmentId':\r\n if (fieldId && fieldId[1] && fieldId[2] && fieldId[3]) {\r\n const field: any = newComponents.steps[Number(fieldId[1])]\r\n .fieldsGroups[Number(fieldId[2])].fields[Number(fieldId[3])];\r\n const governmentId: string = event.target.value;\r\n if (governmentId.includes('_')) {\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageFormat;\r\n }\r\n else {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n }\r\n app.governmentId = governmentId;\r\n }\r\n break;\r\n case 'lastNameId':\r\n app.lastName = event.target.value;\r\n break;\r\n case 'lastNamePrefixId':\r\n app.lastNamePrefix = event.target.value;\r\n break;\r\n case 'legalNameId':\r\n app.legalName = event.target.value;\r\n break;\r\n case 'middleNameId':\r\n app.middleName = event.target.value;\r\n break;\r\n case 'monthsInCountryId':\r\n if (fieldId && fieldId[1] && fieldId[2] && fieldId[3]) {\r\n if (!event.target.value.match(/^[0-9]*$/g)) {\r\n const onlyNum = new RegExp(/([A-Za-zñ<> äÄëËïÏöÖüÜáÁéÉíÍóÓúÚýÝ'¿\"#_-Ä-´°%;&¨Ñ,¡.*+?^=!:$(){}|[\\]\\/\\\\])/g);\r\n event.target.value = event.target.value.replace(onlyNum, '');\r\n }\r\n const field: any = newComponents.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields[Number(fieldId[3])];\r\n if (Number(event.target.value) >= 0 && Number(event.target.value) <= 9999) {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n app.monthsInCountry = Number(event.target.value);\r\n }\r\n else {\r\n if (Number(event.target.value) > 9999) {\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageRange;\r\n }\r\n else {\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageNumeric;\r\n }\r\n }\r\n }\r\n break;\r\n case 'nickNameId':\r\n app.nickname = event.target.value;\r\n break;\r\n case 'otherSourceId':\r\n app.otherSource = event.target.value;\r\n break;\r\n case 'testScoreId':\r\n const fieldGroupTestScore: any = newComponents.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])];\r\n\r\n if (!app.testScores[fieldIndex]) {\r\n app.testScores[fieldIndex] = {} as ITestScore;\r\n }\r\n app.testScores[fieldIndex].score = event.target.value;\r\n\r\n if (fieldId.length > 4) {\r\n fieldGroupTestScore.fields.forEach(function (field) {\r\n const itemArrId: string[] = field.data.id.split('|');\r\n if (fieldId[3] === itemArrId[3] && fieldId[4] === itemArrId[4]) {\r\n if (Number(event.target.value) > 9999) {\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageRange;\r\n field.value = event.target.value;\r\n } else {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n field.value = event.target.value;\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n fieldGroupTestScore.fields.forEach(function (field) {\r\n const itemArrId: string[] = field.data.id.split('|');\r\n if (fieldId[0] === itemArrId[0] && itemArrId.length === 1) {\r\n if (Number(event.target.value) > 9999) {\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageRange;\r\n field.value = event.target.value;\r\n } else {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n field.value = event.target.value;\r\n }\r\n }\r\n });\r\n }\r\n break;\r\n case 'passportNumberId':\r\n app.passportNumber = event.target.value;\r\n break;\r\n case 'phoneNumberId':\r\n if (!event.target.value.match(/^[0-9]*$/g)) {\r\n const onlyNum = new RegExp(/([A-Za-zñ<> äÄëËïÏöÖüÜáÁéÉíÍóÓúÚýÝ'¿\"#_-Ä-´°%;&¨Ñ,¡.*+?^=!:$(){}|[\\]\\/\\\\])/g);\r\n event.target.value = event.target.value.replace(onlyNum, '');\r\n }\r\n break;\r\n case 'visaNumberId':\r\n app.visaNumber = event.target.value;\r\n break;\r\n case 'numberOfHoursPerWeekId':\r\n if (!event.target.value.match(/^[0-9]*$/g)) {\r\n const onlyNum = new RegExp(/([A-Za-zñ<> äÄëËïÏöÖüÜáÁéÉíÍóÓúÚýÝ'¿\"#_-Ä-´°%;&¨Ñ,¡.*+?^=!:$(){}|[\\]\\/\\\\])/g);\r\n event.target.value = event.target.value.replace(onlyNum, '');\r\n }\r\n let fieldHoursPerWeek: any;\r\n if (fieldId.length < 5) {\r\n fieldHoursPerWeek = newComponents.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields[Number(fieldId[3])];\r\n }\r\n else {\r\n fieldHoursPerWeek = newComponents.steps[Number(fieldId[1])].\r\n fieldsGroups[Number(fieldId[2])].fields.find(x =>\r\n x.data.section === Number(fieldId[4]) &&\r\n x.data.id.substr(0, 'numberOfHoursPerWeekId'.length) ===\r\n 'numberOfHoursPerWeekId');\r\n }\r\n if (Number(event.target.value) > 168) {\r\n fieldHoursPerWeek.data.error = true;\r\n fieldHoursPerWeek.data.helperText = fieldHoursPerWeek.data.errorMessageRange;\r\n }\r\n else {\r\n fieldHoursPerWeek.data.error = false;\r\n fieldHoursPerWeek.data.helperText = '';\r\n }\r\n break;\r\n case 'numberOfWeeksPerYearId':\r\n if (!event.target.value.match(/^[0-9]*$/g)) {\r\n const onlyNum = new RegExp(/([A-Za-zñ<> äÄëËïÏöÖüÜáÁéÉíÍóÓúÚýÝ'¿\"#_-Ä-´°%;&¨Ñ,¡.*+?^=!:$(){}|[\\]\\/\\\\])/g);\r\n event.target.value = event.target.value.replace(onlyNum, '');\r\n }\r\n let fieldWeeksPerYear: any;\r\n if (fieldId.length < 5) {\r\n fieldWeeksPerYear = newComponents.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields[Number(fieldId[3])];\r\n }\r\n else {\r\n fieldWeeksPerYear = newComponents.steps[Number(fieldId[1])].\r\n fieldsGroups[Number(fieldId[2])].fields.find(x =>\r\n x.data.section === Number(fieldId[4]) &&\r\n x.data.id.substr(0, 'numberOfWeeksPerYearId'.length) ===\r\n 'numberOfWeeksPerYearId');\r\n }\r\n if (Number(event.target.value) > 52) {\r\n fieldWeeksPerYear.data.error = true;\r\n fieldWeeksPerYear.data.helperText = fieldWeeksPerYear.data.errorMessageRange;\r\n }\r\n else {\r\n fieldWeeksPerYear.data.error = false;\r\n fieldWeeksPerYear.data.helperText = '';\r\n }\r\n break;\r\n case 'numberOfYearsId':\r\n if (!event.target.value.match(/^[0-9]*$/g)) {\r\n const onlyNum = new RegExp(/([A-Za-zñ<> äÄëËïÏöÖüÜáÁéÉíÍóÓúÚýÝ'¿\"#_-Ä-´°%;&¨Ñ,¡.*+?^=!:$(){}|[\\]\\/\\\\])/g);\r\n event.target.value = event.target.value.replace(onlyNum, '');\r\n }\r\n let fieldYears: any;\r\n if (fieldId.length < 5) {\r\n fieldYears = newComponents.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields[Number(fieldId[3])];\r\n }\r\n else {\r\n fieldYears = newComponents.steps[Number(fieldId[1])].\r\n fieldsGroups[Number(fieldId[2])].fields.find(x =>\r\n x.data.section === Number(fieldId[4]) &&\r\n x.data.id.substr(0, 'numberOfYearsId'.length) ===\r\n 'numberOfYearsId');\r\n }\r\n if (Number(event.target.value) > 99) {\r\n fieldYears.data.error = true;\r\n fieldYears.data.helperText = fieldYears.data.errorMessageRange;\r\n }\r\n else {\r\n fieldYears.data.error = false;\r\n fieldYears.data.helperText = '';\r\n }\r\n break;\r\n }\r\n\r\n newComponents = this.cleanErrorMessages(fieldId, newComponents);\r\n newComponents = this.setValues(fieldId, newComponents, event.target.value);\r\n\r\n this.setState({\r\n application: app,\r\n components: newComponents\r\n });\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeTextField.name, e));\r\n }\r\n };\r\n\r\n private onChangeTextFieldModal = (event: any): void => {\r\n try {\r\n\r\n if (event.target.id && event.target.id !== '') {\r\n switch (event.target.id) {\r\n case 'txtEmailField':\r\n const {\r\n components\r\n } = this.state;\r\n if (components) {\r\n if (!components.emailRegExpression || event.target.value.match(components.emailRegExpression)) {\r\n this.setState({\r\n changeEmailText: false,\r\n emailField: event.target.value,\r\n invalidEmail: false\r\n });\r\n }\r\n else {\r\n this.setState({\r\n changeEmailText: false,\r\n emailField: event.target.value,\r\n invalidEmail: true\r\n });\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeTextFieldModal.name, e));\r\n }\r\n };\r\n\r\n private onClickButton = (event: React.MouseEvent): void => {\r\n try {\r\n const {\r\n application,\r\n components\r\n } = this.state;\r\n\r\n if (event.currentTarget.id && event.currentTarget.id !== '' && application && components) {\r\n const fieldId: string[] = event.currentTarget.id.split('|');\r\n\r\n switch (fieldId[0]) {\r\n case 'educationEtsCodeButtonId':\r\n this.setState({\r\n institutions: undefined,\r\n openETSSearchModal: true,\r\n selectedCity: undefined,\r\n selectedCountry: undefined,\r\n selectedEtsCode: undefined,\r\n selectedFieldId: event.currentTarget.id,\r\n selectedInstitutionName: undefined,\r\n selectedState: undefined\r\n });\r\n break;\r\n case 'postalCodeButtonId':\r\n // Get zip code\r\n let zipCode: string = '';\r\n const fieldGroup: IFieldForm[] =\r\n components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields;\r\n let fieldIndex: number = -1;\r\n if (fieldId.length > 4) {\r\n fieldIndex = fieldGroup.findIndex(x => x.data.section === Number(fieldId[4]) &&\r\n x.data.id.substr(0, 'postalCodeId'.length) === 'postalCodeId');\r\n }\r\n else {\r\n fieldIndex = fieldGroup.findIndex(x => x.data.id === 'postalCodeId');\r\n }\r\n if (fieldIndex > -1) {\r\n zipCode = components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].\r\n fields[fieldIndex].value;\r\n }\r\n\r\n this.setState({\r\n openAddressSearchModal: true,\r\n selectedFieldId: event.currentTarget.id,\r\n selectedZipCode: zipCode\r\n });\r\n\r\n LayoutActions.setLoading(true);\r\n\r\n const {\r\n pageSize\r\n } = this.state;\r\n\r\n Requests.getAddresses(\r\n 0,\r\n pageSize,\r\n zipCode,\r\n this.resolveGetAddress, this.logError);\r\n\r\n const {\r\n total\r\n } = this.state;\r\n\r\n if (total) {\r\n const previousSize = pageSize;\r\n // Fix 60\r\n this.setState({\r\n pageSize: 0\r\n }, () => {\r\n this.setState({\r\n pageNumber: 0,\r\n pageSize: previousSize\r\n });\r\n });\r\n }\r\n break;\r\n case 'finishId':\r\n // Get action of button\r\n const confirmationIndex: number =\r\n components.fieldsGroups.findIndex(x => x.id === 'confirmationGroup');\r\n const finishButtonId: number =\r\n components.fieldsGroups[confirmationIndex].fields.findIndex(x => x.data.id === 'finishId');\r\n if (confirmationIndex > -1 && finishButtonId > -1) {\r\n const actionUrl: string | undefined = components.fieldsGroups[confirmationIndex].fields[finishButtonId].actionUrl;\r\n if (actionUrl) {\r\n window.location.assign(actionUrl);\r\n }\r\n else {\r\n window.location.assign(`${Constants.webUrl}/Admissions/Applications`);\r\n }\r\n }\r\n break;\r\n default:\r\n const actionUrl: string | undefined =\r\n components.steps[Number(fieldId[1])].\r\n fieldsGroups[Number(fieldId[2])].\r\n fields[Number(fieldId[3])].actionUrl;\r\n if (actionUrl) {\r\n window.location.assign(actionUrl);\r\n }\r\n else {\r\n window.location.assign(`${Constants.webUrl}/Admissions/Applications`);\r\n }\r\n break;\r\n }\r\n }\r\n } catch (e) {\r\n LayoutActions.setLoading(false);\r\n this.logError(LogData.fromException(this.onClickButton.name, e));\r\n }\r\n };\r\n // #endregion Change Fields Events\r\n\r\n // #region Pagination\r\n private getRowsPerPageOptions(maxValue: number): number[] {\r\n const rowsPerPageOptions: number[] = [];\r\n try {\r\n this.rowsPerPageOptions.forEach(option => {\r\n if (option < maxValue) {\r\n rowsPerPageOptions.push(option);\r\n }\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.getRowsPerPageOptions.name, e));\r\n }\r\n return rowsPerPageOptions;\r\n }\r\n\r\n private onChangePage = (_event: any, page: number): void => {\r\n try {\r\n const {\r\n selectedInstitutionName,\r\n selectedEtsCode,\r\n selectedCity,\r\n selectedState,\r\n selectedCountry,\r\n pageSize\r\n } = this.state;\r\n\r\n this.setState({\r\n pageNumber: page\r\n });\r\n\r\n LayoutActions.setLoading(true);\r\n Requests.getInstitutions(\r\n page,\r\n pageSize,\r\n selectedInstitutionName,\r\n selectedEtsCode,\r\n selectedCity,\r\n selectedState,\r\n selectedCountry,\r\n this.resolveGetInstitutions, this.logError);\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangePage.name, e));\r\n }\r\n };\r\n\r\n private onChangePageAddress = (_event: any, page: number): void => {\r\n try {\r\n const {\r\n selectedZipCode,\r\n pageSize\r\n } = this.state;\r\n\r\n this.setState({\r\n pageNumber: page\r\n });\r\n\r\n LayoutActions.setLoading(true);\r\n Requests.getAddresses(\r\n page,\r\n pageSize,\r\n selectedZipCode,\r\n this.resolveGetAddress, this.logError);\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangePage.name, e));\r\n }\r\n };\r\n\r\n private onChangeRowsPerPage = (event: any): void => {\r\n try {\r\n this.setState({\r\n pageNumber: 0,\r\n pageSize: Number(event.target.value)\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeRowsPerPage.name, e));\r\n }\r\n };\r\n // #endregion Pagination\r\n\r\n // #region Expansion\r\n private onAddMore = (fieldGroup: IFieldsGroup, stepIndex: number, fieldGroupIndex: number): void => {\r\n try {\r\n if (fieldGroup.id && fieldGroup.id !== '') {\r\n const {\r\n components,\r\n errors,\r\n expanded\r\n } = this.state;\r\n\r\n if (components) {\r\n if (components.expansionPanel === null) {\r\n components.expansionPanel = {};\r\n }\r\n switch (fieldGroup.id) {\r\n case 'employmentGroup':\r\n if (components.expansionPanel.employeeCount !== undefined) {\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, components.expansionPanel.employeeCount, 'employmentErrosId', expanded);\r\n\r\n components.expansionPanel.employeeCount++;\r\n }\r\n else {\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, 0, 'employmentErrosId', expanded);\r\n\r\n components.expansionPanel.employeeCount = 1;\r\n }\r\n break;\r\n case 'programOfStudyGroup':\r\n if (components.expansionPanel.programsCount !== undefined) {\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, components.expansionPanel.programsCount, 'programOfStudydErrorsId', expanded);\r\n\r\n components.expansionPanel.programsCount++;\r\n }\r\n else {\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, 0, 'programOfStudydErrorsId', expanded);\r\n\r\n components.expansionPanel.programsCount = 1;\r\n }\r\n break;\r\n case 'phoneGroup':\r\n if (components.expansionPanel.phoneCount !== undefined) {\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, components.expansionPanel.phoneCount, 'phoneErrorsId', expanded);\r\n\r\n components.expansionPanel.phoneCount++;\r\n }\r\n else {\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, 0, 'phoneErrorsId', expanded);\r\n\r\n components.expansionPanel.phoneCount = 1;\r\n }\r\n break;\r\n case 'testScoreGroup':\r\n const initialGroupLengthTS: number = fieldGroup.fields.length;\r\n\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, initialGroupLengthTS, 'testScoreErrorsId', expanded);\r\n\r\n const finalGroupLengthTS: number = fieldGroup.fields.length;\r\n const newSetTS: IFieldForm[] = fieldGroup.fields.slice(initialGroupLengthTS, finalGroupLengthTS);\r\n const parentDropDownTS: IFieldForm = newSetTS[newSetTS.findIndex(e => e.childField !== null)];\r\n const childDropDownTS:\r\n IFieldForm =\r\n newSetTS[newSetTS.findIndex(e => e.data.id.split('|')[0] === parentDropDownTS.childField)];\r\n childDropDownTS.data.options = [];\r\n parentDropDownTS.childField = childDropDownTS.data.id;\r\n\r\n if (components.expansionPanel.testScoresCount !== undefined) {\r\n components.expansionPanel.testScoresCount++;\r\n }\r\n else {\r\n components.expansionPanel.testScoresCount = 1;\r\n }\r\n break;\r\n case 'emergencyContactGroup':\r\n if (errors[stepIndex].groupErrors[fieldGroupIndex].sectionErrors.length < 1) {\r\n if (components.expansionPanel.emergencyContactsCount !== undefined) {\r\n // Error id is not sent because errorId for this group will be excluded\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, components.expansionPanel.emergencyContactsCount, '', expanded);\r\n\r\n components.expansionPanel.emergencyContactsCount++;\r\n }\r\n else {\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, 0, '', expanded);\r\n\r\n components.expansionPanel.emergencyContactsCount = 1;\r\n }\r\n }\r\n break;\r\n case 'addressInformationGroup':\r\n if (components.expansionPanel.addressessCount !== undefined) {\r\n // Error id is not sent because errorId for this group will be excluded\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, components.expansionPanel.addressessCount, '', expanded);\r\n\r\n components.expansionPanel.addressessCount++;\r\n }\r\n else {\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, 0, '', expanded);\r\n\r\n components.expansionPanel.addressessCount = 1;\r\n }\r\n break;\r\n case 'educationGroup':\r\n if (components.expansionPanel.educationCount !== undefined) {\r\n // Error id is not sent because errorId for this group will be excluded\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, components.expansionPanel.educationCount, '', expanded);\r\n\r\n components.expansionPanel.educationCount++;\r\n }\r\n else {\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, 0, '', expanded);\r\n\r\n components.expansionPanel.educationCount = 1;\r\n }\r\n break;\r\n case 'activityGroup':\r\n const initialGroupLength: number = fieldGroup.fields.length;\r\n\r\n if (components.expansionPanel.activityCount !== undefined) {\r\n // Error id is not sent because errorId for this group will be excluded\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, components.expansionPanel.activityCount, '', expanded);\r\n }\r\n else {\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, 0, '', expanded);\r\n }\r\n\r\n const finalGroupLength: number = fieldGroup.fields.length;\r\n const newSet: IFieldForm[] = fieldGroup.fields.slice(initialGroupLength, finalGroupLength);\r\n const parentDropDown: IFieldForm = newSet[newSet.findIndex(e => e.childField !== null)];\r\n const childDropDown: IFieldForm = newSet[newSet.findIndex(e => e.data.id.split('|')[0] === parentDropDown.childField)];\r\n childDropDown.data.options = [];\r\n parentDropDown.childField = childDropDown.data.id;\r\n\r\n if (components.expansionPanel.activityCount !== undefined) {\r\n components.expansionPanel.activityCount++;\r\n }\r\n else {\r\n components.expansionPanel.activityCount = 1;\r\n }\r\n break;\r\n case 'relativesGroup':\r\n if (components.expansionPanel.relativesCount !== undefined) {\r\n // Error id is not sent because errorId for this group will be excluded\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, components.expansionPanel.relativesCount, '', expanded);\r\n\r\n components.expansionPanel.relativesCount++;\r\n }\r\n else {\r\n this.createNewSection(components, fieldGroup, errors, stepIndex,\r\n fieldGroupIndex, 0, '', expanded);\r\n\r\n components.expansionPanel.relativesCount = 1;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onAddMore.name, e));\r\n }\r\n };\r\n\r\n private onAddDeleteButton =\r\n (fieldGroup: IFieldsGroup, stepIndex: number, fieldGroupIndex: number, groupLength: number, sectionNumber: number): void => {\r\n try {\r\n const data: IDataForm = {\r\n id: `deleteIcon|${stepIndex}|${fieldGroupIndex}|${groupLength}|${sectionNumber}`,\r\n modified: true,\r\n section: sectionNumber\r\n };\r\n\r\n const deleteButton: IFieldForm = {\r\n componentType: 'DeleteIconButton',\r\n data: data,\r\n isNumeric: false,\r\n isRequired: false,\r\n onClick: this.onDeleteItem,\r\n value: ''\r\n };\r\n\r\n fieldGroup.fields.push(deleteButton);\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onAddDeleteButton.name, e));\r\n }\r\n };\r\n\r\n private onChangeExpansionPanel = (panelId: string) => (): void => {\r\n try {\r\n this.setState({\r\n expanded: panelId\r\n });\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onChangeExpansionPanel.name, e));\r\n }\r\n };\r\n\r\n private onDeleteItem = (event: any): void => {\r\n try {\r\n const {\r\n errors,\r\n components\r\n } = this.state;\r\n\r\n if (components) {\r\n if (event.currentTarget.id) {\r\n const buttonId: string[] = event.currentTarget.id.split('|');\r\n const componentName: string = components.steps[buttonId[1]].fieldsGroups[buttonId[2]].id;\r\n const fields: IFieldForm[] = components.steps[buttonId[1]].fieldsGroups[buttonId[2]].fields;\r\n if (fields) {\r\n let fieldIndex: number;\r\n do {\r\n fieldIndex = fields.findIndex(x => x.data.section === Number(buttonId[4]));\r\n if (fieldIndex > -1) {\r\n fields.splice(fieldIndex, 1);\r\n }\r\n } while (fieldIndex > -1);\r\n }\r\n components.steps[Number(buttonId[1])].fieldsGroups[Number(buttonId[2])].fields = fields;\r\n\r\n // Delete section from sectionErrors\r\n const sectionIndex = errors[Number(buttonId[1])].groupErrors[Number(buttonId[2])].sectionErrors.findIndex(\r\n section => section.sectionIndex === Number(buttonId[4]));\r\n if (sectionIndex > -1) {\r\n errors[Number(buttonId[1])].groupErrors[Number(buttonId[2])].sectionErrors.splice(sectionIndex, 1);\r\n }\r\n\r\n switch (componentName) {\r\n case 'phoneGroup':\r\n // Search for primary selected in phone group\r\n const primaryPhoneField: IFieldForm[] = components.steps[buttonId[1]].fieldsGroups[buttonId[2]]\r\n .fields.filter(x => x.data.id.substr(0, 'primaryPhoneId'.length) === 'primaryPhoneId' && x.value === '1');\r\n // If doesn't exist, select first item as primary\r\n if (primaryPhoneField.length === 0) {\r\n const firstPrimaryPhoneField: number = components.steps[buttonId[1]].fieldsGroups[buttonId[2]]\r\n .fields.findIndex(x => x.data.id === 'primaryPhoneId');\r\n if (firstPrimaryPhoneField > -1) {\r\n components.steps[buttonId[1]].fieldsGroups[buttonId[2]]\r\n .fields[firstPrimaryPhoneField].value = '1';\r\n }\r\n }\r\n break;\r\n case 'testScoreGroup':\r\n const {\r\n application\r\n } = this.state;\r\n application.testScores[Number(buttonId[3]) + 1] = {};\r\n this.setState({\r\n application: application\r\n });\r\n break;\r\n }\r\n const fieldGroup: IFieldsGroup =\r\n components.steps[buttonId[1]].fieldsGroups[buttonId[2]];\r\n let maxAdd: number;\r\n if (fieldGroup.maximumAllowed) {\r\n maxAdd = Number(fieldGroup.maximumAllowed) - 1;\r\n }\r\n else {\r\n maxAdd = 99;\r\n }\r\n if (errors[buttonId[1]].groupErrors[buttonId[2]].sectionErrors.length < maxAdd) {\r\n // Add more button if it was remove\r\n components.steps[buttonId[1]].fieldsGroups[buttonId[2]].isMultiple = true;\r\n }\r\n }\r\n\r\n this.setState({\r\n components: components,\r\n errors: errors\r\n });\r\n\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.onDeleteItem.name, e));\r\n }\r\n };\r\n // #endregion Expansion\r\n // #endregion Events\r\n\r\n // #region Functions\r\n private assignFieldValue =\r\n (fieldGroup: IFieldForm[], fieldId: string[], fieldIdName: string, isSectionField: boolean, value?: any): void => {\r\n const {\r\n components\r\n } = this.state;\r\n\r\n if (components) {\r\n let fieldIndex: number = 1;\r\n if (isSectionField) {\r\n fieldIndex = fieldGroup.findIndex(x => x.data.section === Number(fieldId[4]) &&\r\n x.data.id.substr(0, fieldIdName.length) === fieldIdName);\r\n }\r\n else {\r\n fieldIndex = fieldGroup.findIndex(x => x.data.id === fieldIdName);\r\n }\r\n if (fieldIndex > -1) {\r\n components.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].\r\n fields[fieldIndex].value = value;\r\n }\r\n }\r\n };\r\n\r\n private cleanErrorMessages = (fieldId: string[], newComponents: IApplicationForm): IApplicationForm => {\r\n if (fieldId && fieldId[1] && fieldId[2] && fieldId[3]) {\r\n let field: IFieldForm | undefined;\r\n\r\n if (fieldId.length > 4) {\r\n const fieldGroup: IFieldForm[] =\r\n newComponents.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields;\r\n field =\r\n fieldGroup.find(x => x.data.id.split('|')[3] === fieldId[3] && x.data.id.split('|')[4] === fieldId[4]);\r\n }\r\n else {\r\n field =\r\n newComponents.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields[Number(fieldId[3])];\r\n }\r\n\r\n if (field !== undefined) {\r\n if ((field.data.errorMessageDuplicate === undefined ||\r\n field.data.errorMessageDuplicate === null) &&\r\n (field.data.errorMessageFormat === undefined ||\r\n field.data.errorMessageFormat === null) &&\r\n (field.data.errorMessageNotValid === undefined ||\r\n field.data.errorMessageNotValid === null) &&\r\n (field.data.errorMessageNumeric === undefined ||\r\n field.data.errorMessageNumeric === null) &&\r\n (field.data.errorMessagePrimary === undefined ||\r\n field.data.errorMessagePrimary === null) &&\r\n (field.data.errorMessageRange === undefined ||\r\n field.data.errorMessageRange === null)) {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n }\r\n }\r\n }\r\n return newComponents;\r\n };\r\n\r\n private copyField =\r\n (id: string, stepIndex: number, fieldGroupIndex: number, groupLength: number, sectionNumber: number, components: IApplicationForm): IApplicationForm => {\r\n try {\r\n const fields: any =\r\n components.steps[stepIndex].fieldsGroups[fieldGroupIndex].fields;\r\n const fieldIndex: number =\r\n fields.findIndex(x => x.data.id === id);\r\n\r\n const copiedField: IFieldForm = fields[fieldIndex];\r\n const newField: IFieldForm = JSON.parse(JSON.stringify(copiedField));\r\n\r\n newField.data.id =\r\n `${id}|${stepIndex}|${fieldGroupIndex}|${groupLength}|${sectionNumber}`;\r\n let exist: boolean = false;\r\n if (copiedField.componentType === 'Dropdown') {\r\n if (copiedField.default && copiedField.data.options) {\r\n copiedField.data.options.forEach(option => {\r\n if (option.value.toString() === copiedField.default.toString()) {\r\n exist = true;\r\n }\r\n });\r\n }\r\n if (exist) {\r\n newField.value = copiedField.default;\r\n }\r\n else {\r\n newField.value = '';\r\n }\r\n }\r\n else {\r\n newField.value = copiedField.default ? copiedField.default : '';\r\n }\r\n newField.data.error = false;\r\n newField.data.helperText = '';\r\n newField.data.modified = true;\r\n newField.data.section = sectionNumber;\r\n fields.push(newField);\r\n components.steps[stepIndex].fieldsGroups[fieldGroupIndex].fields = fields;\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.copyField.name, e));\r\n }\r\n return components;\r\n };\r\n\r\n private createNewSection =\r\n (components: IApplicationForm, fieldGroup: IFieldsGroup, errors: IApplicationErrors[], stepIndex: number, fieldGroupIndex: number, count: number, errorTexId: string, expanded):\r\n void => {\r\n const groupLength: number = fieldGroup.fields.length;\r\n /* Initialization of SectionErrors in errors state variable and set of\r\n * SectionIndex = sectionErrors.length -1; \r\n */\r\n const sectionIndex = errors[stepIndex].groupErrors[fieldGroupIndex].sectionErrors.push(\r\n { sectionIndex: count, isSectionError: false, fieldsErrors: [] }) - 1;\r\n\r\n fieldGroup.fields.forEach((field, i) => {\r\n if (!field.data.modified) {\r\n if (field.data.id !== errorTexId) {\r\n components = this.copyField(field.data.id, stepIndex,\r\n fieldGroupIndex, (groupLength - 1) + i, count, components);\r\n }\r\n // Initialization of FieldErrors in errors state variable\r\n errors[stepIndex].groupErrors[fieldGroupIndex].sectionErrors[sectionIndex].fieldsErrors.push(\r\n { fieldId: field.data.id, isFieldError: false }\r\n );\r\n }\r\n });\r\n\r\n this.onAddDeleteButton(fieldGroup, stepIndex, fieldGroupIndex, (groupLength - 1), count);\r\n\r\n let maxAdd: number;\r\n if (fieldGroup.maximumAllowed) {\r\n maxAdd = Number(fieldGroup.maximumAllowed) - 1;\r\n }\r\n else {\r\n maxAdd = 99;\r\n }\r\n if (errors && errors[stepIndex].groupErrors[fieldGroupIndex].sectionErrors.length < maxAdd) {\r\n fieldGroup.isMultiple = true;\r\n }\r\n else {\r\n fieldGroup.isMultiple = false;\r\n }\r\n\r\n this.setState({\r\n components: components,\r\n errors: errors,\r\n expanded: fieldGroup.isExpansionPanel ?\r\n `panel|${stepIndex}|${fieldGroupIndex}|${count}` : expanded\r\n });\r\n };\r\n\r\n private reviewRequiredFields = (): boolean => {\r\n const {\r\n application,\r\n components,\r\n errors\r\n } = this.state;\r\n\r\n let isValid: boolean = true;\r\n if (components) {\r\n let programsValid: boolean = true;\r\n let testScoresValid: boolean = true;\r\n let validPhones: boolean = true;\r\n let isValidEmploymentSection: boolean = true;\r\n let emergencyContactsValid: boolean = true;\r\n let ipedsValid: boolean = true;\r\n let addressValid: boolean = true;\r\n let userDefinedValid: boolean = true;\r\n let educationValid: boolean = true;\r\n let activityValid: boolean = true;\r\n let relativeValid: boolean = true;\r\n let residencyValid: boolean = true;\r\n\r\n let ids: string[] = [];\r\n let fieldSectionIndex: number;\r\n let fieldId: string;\r\n let sectionErrorIndex: number;\r\n let fieldErrorIndex: number;\r\n\r\n components.steps.forEach((step, stepIndex) => {\r\n fieldErrorIndex = -1;\r\n step.fieldsGroups.forEach((fieldsGroup, groupIndex) => {\r\n fieldsGroup.fields.forEach(field => {\r\n if (field.isRequired && !field.value) {\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageRequired;\r\n isValid = false;\r\n } else if (field.isNumeric && String(field.value).length > 0 && isNaN(Number(field.value))) {\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageNumeric;\r\n isValid = false;\r\n } else if (field.isRequired && field.value && field.componentType === 'DatePicker') {\r\n const date = moment(field.value, 'YYYY-MM-DD');\r\n const isDateValid: boolean = date.isValid();\r\n const minDate = new Date(moment().add(-100, 'years').toDate());\r\n const maxDate = new Date(moment().add(+100, 'years').toDate());\r\n\r\n const isDateInRange: boolean =\r\n new Date(moment(field.value).toDate()) >= minDate &&\r\n new Date(moment(field.value).toDate()) <= maxDate;\r\n if (!isDateValid || !isDateInRange) {\r\n field.value = undefined;\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageRequired;\r\n isValid = false;\r\n }\r\n if (isDateValid && isDateInRange) {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n }\r\n } else if (field.value && field.componentType === 'DatePicker') {\r\n const date = moment(field.value, 'YYYY-MM-DD');\r\n const isDateValid: boolean = date.isValid();\r\n const minDate = new Date(moment().add(-100, 'years').toDate());\r\n const maxDate = new Date(moment().add(+100, 'years').toDate());\r\n\r\n const isDateInRange: boolean =\r\n new Date(moment(field.value).toDate()) >= minDate &&\r\n new Date(moment(field.value).toDate()) <= maxDate;\r\n if (isDateValid && !isDateInRange) {\r\n field.value = undefined;\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageRequired;\r\n isValid = false;\r\n }\r\n }\r\n else if (field.parentId == 'governmentIdGroup' && field.data.error) {\r\n isValid = false;\r\n }\r\n else {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n }\r\n });\r\n\r\n // init counts\r\n if (!components.expansionPanel) {\r\n components.expansionPanel = {};\r\n components.expansionPanel.activityCount = components.expansionPanel.activityCount ?\r\n components.expansionPanel.activityCount : 0;\r\n\r\n components.expansionPanel.addressessCount = components.expansionPanel.addressessCount ?\r\n components.expansionPanel.addressessCount : 0;\r\n\r\n components.expansionPanel.educationCount = components.expansionPanel.educationCount ?\r\n components.expansionPanel.educationCount : 0;\r\n\r\n components.expansionPanel.emergencyContactsCount = components.expansionPanel.emergencyContactsCount ?\r\n components.expansionPanel.emergencyContactsCount : 0;\r\n\r\n components.expansionPanel.employeeCount = components.expansionPanel.employeeCount ?\r\n components.expansionPanel.employeeCount : 0;\r\n\r\n components.expansionPanel.phoneCount = components.expansionPanel.phoneCount ?\r\n components.expansionPanel.phoneCount : 0;\r\n\r\n components.expansionPanel.programsCount = components.expansionPanel.programsCount ?\r\n components.expansionPanel.programsCount : 0;\r\n\r\n components.expansionPanel.relativesCount = components.expansionPanel.relativesCount ?\r\n components.expansionPanel.relativesCount : 0;\r\n\r\n components.expansionPanel.testScoresCount = components.expansionPanel.testScoresCount ?\r\n components.expansionPanel.testScoresCount : 0;\r\n }\r\n\r\n // #region Components Validations\r\n\r\n // #region Programs\r\n if (fieldsGroup.id === 'programOfStudyGroup') {\r\n programsValid = this.reviewPrograms(fieldsGroup);\r\n const textErrorIndex: number = fieldsGroup.fields.findIndex(x => x.data.id === 'programOfStudydErrorsId');\r\n if (!programsValid) {\r\n if (textErrorIndex > -1) {\r\n fieldsGroup.fields[textErrorIndex].data.error = true;\r\n }\r\n }\r\n else {\r\n if (textErrorIndex > -1) {\r\n fieldsGroup.fields[textErrorIndex].data.error = false;\r\n fieldsGroup.fields[textErrorIndex].data.label = '';\r\n }\r\n }\r\n }\r\n // #endregion Programs\r\n\r\n // #region TestScores\r\n if (fieldsGroup.id === 'testScoreGroup') {\r\n const filteredControls: IFieldForm[] =\r\n fieldsGroup.fields.filter(f => !(f.data.id.includes('deleteIcon') || f.data.id.includes('testScoreErrorsId')));\r\n const groupedControls: any = filteredControls.reduce(function (r, a) {\r\n const key: string | undefined = a.data.id.split('|')[4];\r\n let index: number = 0;\r\n if (!key) {\r\n index = 0;\r\n } else {\r\n index = Number(key) + 1;\r\n }\r\n r[index] = r[index] || [];\r\n r[index].push(a);\r\n return r;\r\n }, Object.create(null));\r\n\r\n const messageErrorIndex: number = fieldsGroup.fields.findIndex(x => x.data.id === 'testScoreErrorsId');\r\n testScoresValid = this.reviewTestScores(groupedControls);\r\n if (!testScoresValid) {\r\n if (messageErrorIndex > -1) {\r\n fieldsGroup.fields[messageErrorIndex].data.error = true;\r\n fieldsGroup.fields[messageErrorIndex].data.label = fieldsGroup.errorMessageDuplicate;\r\n }\r\n }\r\n else {\r\n if (messageErrorIndex > -1) {\r\n fieldsGroup.fields[messageErrorIndex].data.error = false;\r\n fieldsGroup.fields[messageErrorIndex].data.label = '';\r\n }\r\n }\r\n\r\n // Validate testscore completeness\r\n if (testScoresValid && !filteredControls.some(f => f.data.error === true)) {\r\n testScoresValid = this.reviewTestScoreCompleteness(groupedControls);\r\n\r\n if (!testScoresValid) {\r\n if (messageErrorIndex > -1) {\r\n fieldsGroup.fields[messageErrorIndex].data.error = true;\r\n fieldsGroup.fields[messageErrorIndex].data.label = fieldsGroup.errorMessageRequired;\r\n }\r\n }\r\n else {\r\n if (messageErrorIndex > -1) {\r\n fieldsGroup.fields[messageErrorIndex].data.error = false;\r\n fieldsGroup.fields[messageErrorIndex].data.label = '';\r\n }\r\n }\r\n }\r\n\r\n // removes empty test scores\r\n for (let i: number = application.testScores.length; i >= 0; i--) {\r\n if (application.testScores[i]) {\r\n if (!application.testScores[i].id) {\r\n application.testScores.splice(i, 1);\r\n }\r\n } else {\r\n application.testScores.splice(i, 1);\r\n }\r\n }\r\n }\r\n // #endregion TestScores\r\n\r\n // #region Phones\r\n if (fieldsGroup.id === 'phoneGroup') {\r\n validPhones = this.reviewPhoneGroup(fieldsGroup);\r\n const textErrorIndex: number = fieldsGroup.fields.findIndex(x => x.data.id === 'phoneErrorsId');\r\n if (!validPhones) {\r\n if (textErrorIndex > -1) {\r\n fieldsGroup.fields[textErrorIndex].data.error = true;\r\n }\r\n }\r\n else {\r\n if (textErrorIndex > -1) {\r\n fieldsGroup.fields[textErrorIndex].data.error = false;\r\n fieldsGroup.fields[textErrorIndex].data.label = '';\r\n }\r\n }\r\n }\r\n // #endregion Phones\r\n\r\n // #region Ipeds\r\n if (fieldsGroup.id === 'ipedsGroup') {\r\n ipedsValid = this.reviewIpeds(fieldsGroup);\r\n const textErrorIndex: number = fieldsGroup.fields.findIndex(x => x.data.id === 'ipedsErrorsId');\r\n if (!ipedsValid) {\r\n if (textErrorIndex > -1) {\r\n fieldsGroup.fields[textErrorIndex].data.error = true;\r\n }\r\n }\r\n else {\r\n if (textErrorIndex > -1) {\r\n fieldsGroup.fields[textErrorIndex].data.error = false;\r\n fieldsGroup.fields[textErrorIndex].data.label = '';\r\n }\r\n }\r\n }\r\n // #endregion Ipeds\r\n\r\n // #region Employment\r\n if (fieldsGroup.id === 'employmentGroup') {\r\n isValidEmploymentSection = this.reviewEmployment(fieldsGroup);\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'employmentErrosId'.length) === 'employmentErrosId');\r\n fieldsById.forEach(field => {\r\n if (!isValidEmploymentSection) {\r\n field.data.error = true;\r\n }\r\n else {\r\n field.data.error = false;\r\n field.data.label = '';\r\n }\r\n });\r\n isValid = !isValidEmploymentSection ? false : isValid;\r\n }\r\n // #endregion Employment\r\n\r\n // #region EmergencyContacts\r\n if (fieldsGroup.id === 'emergencyContactGroup') {\r\n emergencyContactsValid = this.reviewEmergencyContacts(fieldsGroup);\r\n isValid = !emergencyContactsValid ? false : isValid;\r\n }\r\n // #endregion EmergencyContacts\r\n\r\n // #region Address\r\n if (fieldsGroup.id === 'addressInformationGroup') {\r\n addressValid = this.reviewAddress(fieldsGroup);\r\n isValid = !addressValid ? false : isValid;\r\n }\r\n // #endregion Address\r\n\r\n // #region UserDefinedFields\r\n if (fieldsGroup.isCustom) {\r\n userDefinedValid = this.reviewUserDefined(fieldsGroup);\r\n isValid = !userDefinedValid ? false : isValid;\r\n }\r\n // #endregion UserDefinedFields\r\n\r\n // #region Education\r\n if (fieldsGroup.id === 'educationGroup') {\r\n educationValid = this.reviewEducation(fieldsGroup);\r\n isValid = !educationValid ? false : isValid;\r\n }\r\n // #endregion Education\r\n\r\n // #region Activities\r\n if (fieldsGroup.id === 'activityGroup') {\r\n activityValid = this.reviewActivities(fieldsGroup);\r\n }\r\n // #endregion Activities\r\n\r\n // #region Relatives\r\n if (fieldsGroup.id === 'relativesGroup') {\r\n relativeValid = this.reviewRelatives(fieldsGroup);\r\n isValid = !relativeValid ? false : isValid;\r\n }\r\n // #endregion Relatives\r\n\r\n // #region Residency\r\n if (fieldsGroup.id === 'residencyGroup') {\r\n residencyValid = this.reviewResidency(fieldsGroup);\r\n isValid = !residencyValid ? false : isValid;\r\n }\r\n // #endregion Residency\r\n\r\n // #region Campuses\r\n if (fieldsGroup.id === 'campusGroup') {\r\n this.reviewCampus(fieldsGroup);\r\n }\r\n // #endregion Campuses\r\n\r\n // #region Academic Interest\r\n if (fieldsGroup.id === 'interestGroup') {\r\n this.reviewAcademicInterest(fieldsGroup);\r\n }\r\n // #endregion Academic Interest\r\n // #endregion Components Validations\r\n // Group errors\r\n fieldsGroup.fields.forEach(field => {\r\n // Set errors in copied fields inside the SectionErrors array of errors state variable\r\n if (field.data.modified) {\r\n ids = field.data.id.split('|');\r\n if (ids[0] !== 'deleteIcon') {\r\n // Gets the actual Section index from the field id\r\n fieldSectionIndex = Number(ids[4]);\r\n // Gets the actual Field id\r\n fieldId = ids[0];\r\n // Gets the index of the sectionErrors array\r\n sectionErrorIndex = errors[stepIndex].groupErrors[groupIndex].sectionErrors.findIndex(section =>\r\n section.sectionIndex === fieldSectionIndex);\r\n if (sectionErrorIndex > -1) {\r\n // Gets the index of the fieldErrors array\r\n fieldErrorIndex = errors[stepIndex].groupErrors[groupIndex].sectionErrors[sectionErrorIndex].fieldsErrors\r\n .findIndex(field => field.fieldId === fieldId);\r\n if (fieldErrorIndex > -1) {\r\n // Sets the value of the error\r\n errors[stepIndex].groupErrors[groupIndex].sectionErrors[sectionErrorIndex].fieldsErrors[fieldErrorIndex]\r\n .isFieldError = field.data.error ? field.data.error : false;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // Set errors in first fields inside the firstSectionErrors array state variable\r\n fieldErrorIndex = errors[stepIndex].groupErrors[groupIndex].firstSectionErrors.firstFieldsErrors.findIndex(fieldError =>\r\n fieldError.fieldId === field.data.id);\r\n // Checks if the field is already in firstFieldsErrors\r\n if (fieldErrorIndex > -1) {\r\n errors[stepIndex].groupErrors[groupIndex].firstSectionErrors.firstFieldsErrors[fieldErrorIndex].isFieldError =\r\n field.data.error ? field.data.error : false;\r\n } else {\r\n errors[stepIndex].groupErrors[groupIndex].firstSectionErrors.firstFieldsErrors.push(\r\n { fieldId: field.data.id, isFieldError: field.data.error ? field.data.error : false }\r\n );\r\n }\r\n }\r\n });\r\n\r\n errors[stepIndex].groupErrors[groupIndex].firstSectionErrors.isFirstSectionErrors =\r\n errors[stepIndex].groupErrors[groupIndex].firstSectionErrors.firstFieldsErrors.some(fieldError => fieldError.isFieldError);\r\n\r\n errors[stepIndex].groupErrors[groupIndex].sectionErrors.forEach(sectionError => {\r\n sectionError.isSectionError = sectionError.fieldsErrors.some(fieldError => fieldError.isFieldError);\r\n });\r\n\r\n errors[stepIndex].groupErrors[groupIndex].isGroupError =\r\n fieldsGroup.fields.some(field => field.data.error ? field.data.error : false);\r\n });\r\n errors[stepIndex].isStepError = errors[stepIndex].groupErrors.some(groupError => groupError.isGroupError);\r\n });\r\n\r\n // Multiple components validations\r\n isValid = programsValid && testScoresValid &&\r\n validPhones && ipedsValid && addressValid &&\r\n activityValid && relativeValid &&\r\n isValid;\r\n\r\n const allErrors: IGroupErrors[] = [];\r\n const especificErrors: IGroupErrors[] = [];\r\n if (!isValid) {\r\n errors.forEach(step => {\r\n step.groupErrors.forEach(groupError => {\r\n if (groupError.isGroupError) {\r\n if (\r\n // groupError.groupId === 'emergencyContactGroup' ||\r\n (groupError.groupId === 'educationGroup' && application.education.length === 0) ||\r\n groupError.groupId === 'activityGroup' ||\r\n groupError.groupId === 'residencyGroup') {\r\n especificErrors.push(groupError);\r\n }\r\n else {\r\n allErrors.push(groupError);\r\n }\r\n }\r\n });\r\n });\r\n if (allErrors.length === 0) {\r\n isValid = programsValid && testScoresValid && validPhones &&\r\n ipedsValid && addressValid &&\r\n isValidEmploymentSection && emergencyContactsValid &&\r\n educationValid && activityValid && relativeValid && residencyValid;\r\n }\r\n }\r\n\r\n this.setState({\r\n components: components,\r\n errors: errors\r\n });\r\n }\r\n return isValid;\r\n };\r\n\r\n private setApplicationValues = (fieldId: string, fieldDefault: any): void => {\r\n const {\r\n application\r\n } = this.state;\r\n\r\n switch (fieldId) {\r\n case 'attendStatusId':\r\n application.collegeAttendStatus = fieldDefault;\r\n break;\r\n case 'campusId':\r\n application.campuses = fieldDefault;\r\n break;\r\n case 'counselorId':\r\n application.counselorId = fieldDefault;\r\n break;\r\n case 'countryOfBirthId':\r\n application.countryOfBirth = fieldDefault;\r\n break;\r\n case 'ethnicityId':\r\n application.ethnicity = fieldDefault;\r\n break;\r\n case 'genderId':\r\n application.gender = fieldDefault;\r\n break;\r\n case 'maritalyId':\r\n application.maritalStatus = fieldDefault;\r\n break;\r\n case 'passportCountryId':\r\n application.passportCountryId = fieldDefault;\r\n break;\r\n case 'primaryCitizenshipId':\r\n application.primaryCitizenship = fieldDefault;\r\n break;\r\n case 'primaryLanguageId':\r\n application.primaryLanguage = fieldDefault;\r\n break;\r\n case 'prefixId':\r\n application.prefix = fieldDefault;\r\n break;\r\n case 'religionId':\r\n application.religion = fieldDefault;\r\n break;\r\n case 'secondayCitizenshipId':\r\n application.secondaryCitizenship = fieldDefault;\r\n break;\r\n case 'secondaryLanguageId':\r\n application.secondaryLanguage = fieldDefault;\r\n break;\r\n case 'sessionPeriodId':\r\n application.period = fieldDefault;\r\n break;\r\n case 'sourceId':\r\n application.sourceId = fieldDefault;\r\n break;\r\n case 'suffixId':\r\n application.suffix = fieldDefault;\r\n break;\r\n case 'veteranId':\r\n application.veteranStatus = fieldDefault;\r\n break;\r\n case 'visaId':\r\n application.visa = fieldDefault;\r\n break;\r\n case 'visaCountryId':\r\n application.visaCountryId = fieldDefault;\r\n break;\r\n case 'extraCurricularActivityId':\r\n application.isInterestedInExtracurricular = fieldDefault;\r\n break;\r\n case 'financialAidId':\r\n application.isInterestedInFinancialAid = fieldDefault;\r\n break;\r\n case 'retiredId':\r\n application.isRetired = fieldDefault;\r\n break;\r\n case 'seekingDegreeId':\r\n application.isSeekingDegree = fieldDefault;\r\n break;\r\n case 'policyCheckboxId':\r\n application.policy = fieldDefault;\r\n break;\r\n case 'dateOfBirthId':\r\n application.dateOfBirth = fieldDefault;\r\n break;\r\n case 'visaExpirationDateId':\r\n application.visaExpiration = fieldDefault;\r\n break;\r\n case 'passportExpirationDateId':\r\n application.passportExpiration = fieldDefault;\r\n break;\r\n case 'emailId':\r\n application.email = fieldDefault;\r\n break;\r\n case 'firstNameId':\r\n application.firstName = fieldDefault;\r\n break;\r\n case 'formerLastNameId':\r\n application.formerLastName = fieldDefault;\r\n break;\r\n case 'governmentId':\r\n application.governmentId = fieldDefault;\r\n break;\r\n case 'lastNameId':\r\n application.lastName = fieldDefault;\r\n break;\r\n case 'lastNamePrefixId':\r\n application.lastNamePrefix = fieldDefault;\r\n break;\r\n case 'legalNameId':\r\n application.legalName = fieldDefault;\r\n break;\r\n case 'middleNameId':\r\n application.middleName = fieldDefault;\r\n break;\r\n case 'monthsInCountryId':\r\n application.monthsInCountry = fieldDefault;\r\n break;\r\n case 'nickNameId':\r\n application.nickname = fieldDefault;\r\n break;\r\n case 'otherSourceId':\r\n application.otherSource = fieldDefault;\r\n break;\r\n case 'passportNumberId':\r\n application.passportNumber = fieldDefault;\r\n break;\r\n case 'visaNumberId':\r\n application.visaNumber = fieldDefault;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.setState({\r\n application: fieldDefault\r\n });\r\n };\r\n\r\n private setValues = (fieldId: string[], newComponents: IApplicationForm, value: any): IApplicationForm => {\r\n if (fieldId.length > 4) {\r\n const fieldGroup: IFieldForm[] =\r\n newComponents.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields;\r\n const field: IFieldForm | undefined =\r\n fieldGroup.find(x => x.data.id.split('|')[3] === fieldId[3] && x.data.id.split('|')[4] === fieldId[4]);\r\n if (field) {\r\n field.value = value;\r\n }\r\n }\r\n else {\r\n const field: IFieldForm =\r\n newComponents.steps[Number(fieldId[1])].fieldsGroups[Number(fieldId[2])].fields[Number(fieldId[3])];\r\n if (fieldId) {\r\n field.value = value;\r\n }\r\n }\r\n return newComponents;\r\n };\r\n\r\n // #region Review Information\r\n private reviewActivities = (fieldsGroup: IFieldsGroup): boolean => {\r\n const {\r\n application,\r\n components\r\n } = this.state;\r\n\r\n let isValid = true;\r\n\r\n if (components && components.expansionPanel.activityCount === undefined) {\r\n components.expansionPanel.activityCount = 0;\r\n }\r\n\r\n if (components && components.expansionPanel.activityCount !== undefined && components.expansionPanel.activityCount > -1) {\r\n let activityList: IApplicationActivity[] = [];\r\n const activity: IApplicationActivity = {};\r\n\r\n let activityTypefield: IFieldForm | undefined;\r\n if (activityTypefield = fieldsGroup.fields.find(x => x.data.id === 'activityTypeId')) {\r\n activity.activityType = activityTypefield.value;\r\n }\r\n let activityField: IFieldForm | undefined;\r\n if (activityField = fieldsGroup.fields.find(x => x.data.id === 'activityId')) {\r\n activity.activity = activityField.value;\r\n }\r\n let positionHeldField: IFieldForm | undefined;\r\n if (positionHeldField = fieldsGroup.fields.find(x => x.data.id === 'positionHeldId')) {\r\n activity.position = positionHeldField.value;\r\n }\r\n let numberOfHoursPerWeekField: IFieldForm | undefined;\r\n if (numberOfHoursPerWeekField = fieldsGroup.fields.find(x => x.data.id === 'numberOfHoursPerWeekId')) {\r\n activity.hoursPerWeek = numberOfHoursPerWeekField.value;\r\n }\r\n let numberOfWeeksPerYearField: IFieldForm | undefined;\r\n if (numberOfWeeksPerYearField = fieldsGroup.fields.find(x => x.data.id === 'numberOfWeeksPerYearId')) {\r\n activity.weeksPerYear = numberOfWeeksPerYearField.value;\r\n }\r\n let numberOfYearsField: IFieldForm | undefined;\r\n if (numberOfYearsField = fieldsGroup.fields.find(x => x.data.id === 'numberOfYearsId')) {\r\n activity.numberOfYears = numberOfYearsField.value;\r\n }\r\n let participated9Field: IFieldForm | undefined;\r\n if (participated9Field = fieldsGroup.fields.find(x => x.data.id === 'participated9Id')) {\r\n activity.participatedGrade09 = Boolean(participated9Field.value);\r\n }\r\n let participated10Field: IFieldForm | undefined;\r\n if (participated10Field = fieldsGroup.fields.find(x => x.data.id === 'participated10Id')) {\r\n activity.participatedGrade10 = Boolean(participated10Field.value);\r\n }\r\n let participated11Field: IFieldForm | undefined;\r\n if (participated11Field = fieldsGroup.fields.find(x => x.data.id === 'participated11Id')) {\r\n activity.participatedGrade11 = Boolean(participated11Field.value);\r\n }\r\n let participated12Field: IFieldForm | undefined;\r\n if (participated12Field = fieldsGroup.fields.find(x => x.data.id === 'participated12Id')) {\r\n activity.participatedGrade12 = Boolean(participated12Field.value);\r\n }\r\n let participatedPostSecondaryField: IFieldForm | undefined;\r\n if (participatedPostSecondaryField = fieldsGroup.fields.find(x => x.data.id === 'participatedPostSecondaryId')) {\r\n activity.participatedPostsecondary = Boolean(participatedPostSecondaryField.value);\r\n }\r\n\r\n // XNOR\r\n // If any required fields or none are filled that is allowed\r\n activity.activityType = activity.activityType || 0;\r\n activity.activity = activity.activity || 0;\r\n if (!(activity.activityType !== 0 && activity.activity !== 0) &&\r\n (activity.activityType !== 0 || activity.activity !== 0)) {\r\n return false;\r\n }\r\n\r\n activityList = this.setApplicationActivitiesValues(activity, activityList);\r\n\r\n let i: number = 0;\r\n do {\r\n let activityItem: IApplicationActivity = {};\r\n activityItem = this.setApplicationActivitiesAdditional(fieldsGroup, i, activityItem);\r\n\r\n // Duplicated\r\n if (activityList.find(x => x.activityType === activityItem.activityType &&\r\n x.activity === activityItem.activity)) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'activityErrosId'.length) === 'activityErrosId' &&\r\n x.data.section === i);\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageDuplicate;\r\n field.data.error = true;\r\n });\r\n return false;\r\n }\r\n\r\n activityList = this.setApplicationActivitiesValues(activityItem, activityList);\r\n\r\n i++;\r\n } while (i < components.expansionPanel.activityCount);\r\n\r\n if (activityList.length > 0) {\r\n // Required fields should be filled\r\n activityList.forEach(activity => {\r\n if (activity.position || activity.hoursPerWeek ||\r\n activity.weeksPerYear || activity.numberOfYears ||\r\n activity.participatedGrade09 || activity.participatedGrade10 ||\r\n activity.participatedGrade11 || activity.participatedGrade12 ||\r\n activity.participatedPostsecondary) {\r\n if ((activity.activityType === null || activity.activityType === 0) &&\r\n (activity.activity === null || activity.activity === 0)) {\r\n isValid = false;\r\n }\r\n }\r\n });\r\n }\r\n // List is empty so no error should be show\r\n else {\r\n fieldsGroup.fields.forEach(field => {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n });\r\n isValid = true;\r\n }\r\n if (isValid) {\r\n application.activities = activityList;\r\n }\r\n\r\n this.setState({\r\n application\r\n });\r\n }\r\n return isValid;\r\n\r\n };\r\n\r\n private reviewAddress = (fieldsGroup: IFieldsGroup): boolean => {\r\n const {\r\n application,\r\n components\r\n } = this.state;\r\n\r\n if (components && components.expansionPanel.addressessCount === undefined) {\r\n components.expansionPanel.addressessCount = 0;\r\n }\r\n\r\n if (components && components.expansionPanel.addressessCount !== undefined && components.expansionPanel.addressessCount > -1) {\r\n const addressList: IApplicationAddress[] = [];\r\n let address: IApplicationAddress = { isPrimary: false };\r\n\r\n address = this.setApplicationAddress(fieldsGroup, address);\r\n address = this.setApplicationAddressValues(address);\r\n\r\n if (address.type !== 0 && address.line1 !== '' &&\r\n address.city !== '' && address.country !== 0) {\r\n address.isPrimary = true;\r\n addressList.push(address);\r\n }\r\n else if (address.line2 || address.line3 || address.line4 ||\r\n address.city || address.stateProvince || address.postalCode ||\r\n address.county) {\r\n addressList.push(address);\r\n }\r\n\r\n let i: number = 0;\r\n do {\r\n let address: IApplicationAddress = { isPrimary: false };\r\n address = this.setApplicationAddressAdditional(fieldsGroup, i, address);\r\n\r\n // Duplicated\r\n if (addressList.find(x => x.type === address.type)) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'addressErrorsId'.length) === 'addressErrorsId' &&\r\n x.data.section === i);\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageDuplicate;\r\n field.data.error = true;\r\n });\r\n return false;\r\n }\r\n\r\n address = this.setApplicationAddressValues(address);\r\n\r\n if (address.type !== 0 && address.line1 !== '' &&\r\n address.city !== '' && address.country !== 0) {\r\n addressList.push(address);\r\n }\r\n else if (address.line2 !== '' || address.line3 !== '' || address.line4 !== '' ||\r\n address.city !== '' || address.stateProvince !== 0 || address.postalCode !== '' ||\r\n address.county !== 0) {\r\n addressList.push(address);\r\n }\r\n i++;\r\n } while (i < components.expansionPanel.addressessCount);\r\n\r\n application.addresses = addressList;\r\n\r\n this.setState({\r\n application\r\n });\r\n\r\n return true;\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n\r\n private reviewEducation = (fieldsGroup: IFieldsGroup): boolean => {\r\n const {\r\n application,\r\n components\r\n } = this.state;\r\n\r\n let isValid: boolean = true;\r\n\r\n if (components && components.expansionPanel.educationCount === undefined) {\r\n components.expansionPanel.educationCount = 0;\r\n }\r\n\r\n if (components && components.expansionPanel.educationCount !== undefined && components.expansionPanel.educationCount > -1) {\r\n const educationList: IApplicationEducation[] = [];\r\n let education: IApplicationEducation = {\r\n enrollment: {},\r\n institution: {\r\n city: '',\r\n countryDesc: '',\r\n etsCode: '',\r\n ficeCode: '',\r\n id: 0,\r\n name: '',\r\n stateDesc: ''\r\n }\r\n };\r\n\r\n education = this.setApplicationEducation(fieldsGroup, education);\r\n education = this.setApplicationEducationValues(education);\r\n\r\n if (education.institution.city || education.enrollment.startDate || education.enrollment.endDate ||\r\n education.institution.etsCode || education.institution.name || education.institution.ficeCode) {\r\n educationList.push(education);\r\n }\r\n else if (education.enrollment &&\r\n education.enrollment.curriculumId && education.enrollment.curriculumId > 0 ||\r\n education.enrollment.honorsId && education.enrollment.honorsId > 0 ||\r\n education.enrollment.degreeId && education.enrollment.degreeId > 0 ||\r\n education.institution.id && education.institution.id > 0 ||\r\n education.institution.stateProvinceId && education.institution.stateProvinceId > 0 ||\r\n education.institution.countryId && education.institution.countryId > 0) {\r\n educationList.push(education);\r\n }\r\n\r\n // Dates\r\n if (education.enrollment.startDate && education.enrollment.endDate) {\r\n if (components && (education.enrollment.startDate || education.enrollment.endDate)) {\r\n if (moment(education.enrollment.startDate).format('YYYY-MM-DD') > moment(education.enrollment.endDate).format('YYYY-MM-DD')) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id === 'educationErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageNotValid;\r\n field.data.error = true;\r\n });\r\n return false;\r\n }\r\n else if (moment(education.enrollment.startDate).format('YYYY-MM-DD') <\r\n moment(education.enrollment.endDate).format('YYYY-MM-DD')) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id === 'educationErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = '';\r\n field.data.error = false;\r\n });\r\n }\r\n else if (education.enrollment && education.enrollment.startDate && education.enrollment.endDate &&\r\n (education.enrollment.startDate < moment(components.dateTimeMin).format('YYYY-MM-DD') ||\r\n education.enrollment.endDate > moment(components.dateTimeMax).format('YYYY-MM-DD'))) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id === 'educationErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageRange\r\n + moment(components.dateTimeMin).format('YYYY') + '-' +\r\n + moment(components.dateTimeMax).format('YYYY');\r\n field.data.error = true;\r\n });\r\n return false;\r\n }\r\n else if (education.enrollment && education.enrollment.startDate && education.enrollment.endDate &&\r\n (education.enrollment.startDate < moment(components.dateTimeMin).format('YYYY-MM-DD') ||\r\n education.enrollment.endDate < moment(components.dateTimeMax).format('YYYY-MM-DD'))) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id === 'educationErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = '';\r\n field.data.error = false;\r\n });\r\n }\r\n }\r\n }\r\n\r\n let i: number = 0;\r\n do {\r\n let education: IApplicationEducation = {\r\n enrollment: {},\r\n institution: {\r\n city: '',\r\n countryDesc: '',\r\n etsCode: '',\r\n ficeCode: '',\r\n id: 0,\r\n name: '',\r\n stateDesc: ''\r\n }\r\n };\r\n\r\n education = this.setApplicationEducationAdditional(fieldsGroup, i, education);\r\n education = this.setApplicationEducationValues(education);\r\n\r\n // Dates\r\n if (education.enrollment.startDate && education.enrollment.endDate) {\r\n if (components && (education.enrollment.startDate || education.enrollment.endDate)) {\r\n if (moment(education.enrollment.startDate).format('YYYY-MM-DD') >\r\n moment(education.enrollment.endDate).format('YYYY-MM-DD')) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'educationErrosId'.length) === 'educationErrosId' &&\r\n x.data.section === i);\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageNotValid;\r\n field.data.error = true;\r\n });\r\n return false;\r\n }\r\n else if (moment(education.enrollment.startDate).format('YYYY-MM-DD') <\r\n moment(education.enrollment.endDate).format('YYYY-MM-DD')) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'educationErrosId'.length) === 'educationErrosId' &&\r\n x.data.section === i);\r\n fieldsById.forEach(field => {\r\n field.data.label = '';\r\n field.data.error = false;\r\n });\r\n }\r\n else if (education.enrollment && education.enrollment.startDate && education.enrollment.endDate &&\r\n (education.enrollment.startDate < moment(components.dateTimeMin).format('YYYY-MM-DD') ||\r\n education.enrollment.endDate > moment(components.dateTimeMax).format('YYYY-MM-DD'))) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'educationErrosId'.length) === 'educationErrosId' &&\r\n x.data.section === i);\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageRange\r\n + moment(components.dateTimeMin).format('YYYY') + '-' +\r\n + moment(components.dateTimeMax).format('YYYY');\r\n field.data.error = true;\r\n });\r\n return false;\r\n }\r\n else if (education.enrollment && education.enrollment.startDate && education.enrollment.endDate &&\r\n (education.enrollment.startDate < moment(components.dateTimeMin).format('YYYY-MM-DD') ||\r\n education.enrollment.endDate < moment(components.dateTimeMax).format('YYYY-MM-DD'))) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'educationErrosId'.length) === 'educationErrosId' &&\r\n x.data.section === i);\r\n fieldsById.forEach(field => {\r\n field.data.label = '';\r\n field.data.error = false;\r\n });\r\n }\r\n }\r\n }\r\n // Duplicated\r\n if (education.enrollment && education.enrollment.degreeId && education.enrollment.curriculumId &&\r\n education.enrollment.honorsId &&\r\n (education.enrollment.degreeId > 0 && education.enrollment.curriculumId > 0 &&\r\n education.enrollment.honorsId > 0)) {\r\n if (educationList.find(x => x.enrollment.degreeId === education.enrollment.degreeId &&\r\n x.enrollment.curriculumId === education.enrollment.curriculumId &&\r\n x.enrollment.honorsId === education.enrollment.honorsId)) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'educationErrosId'.length) === 'educationErrosId' &&\r\n x.data.section === i);\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageDuplicate;\r\n field.data.error = true;\r\n });\r\n return false;\r\n }\r\n }\r\n else {\r\n if (education.institution.etsCode) {\r\n if (educationList.find(x => x.institution.etsCode === education.institution.etsCode)) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'educationErrosId'.length) === 'educationErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageDuplicate;\r\n field.data.error = true;\r\n });\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (education.institution.city || education.enrollment.startDate || education.enrollment.endDate ||\r\n education.institution.etsCode || education.institution.name || education.institution.ficeCode) {\r\n educationList.push(education);\r\n }\r\n else if (education.enrollment &&\r\n education.enrollment.curriculumId && education.enrollment.curriculumId > 0 ||\r\n education.enrollment.honorsId && education.enrollment.honorsId > 0 ||\r\n education.enrollment.degreeId && education.enrollment.degreeId > 0 ||\r\n education.institution.id && education.institution.id > 0 ||\r\n education.institution.stateProvinceId && education.institution.stateProvinceId > 0 ||\r\n education.institution.countryId && education.institution.countryId > 0) {\r\n educationList.push(education);\r\n }\r\n i++;\r\n } while (i < components.expansionPanel.educationCount);\r\n\r\n // Education is required\r\n if (fieldsGroup.isRequired) {\r\n // List is no empty so no error should be show.\r\n if (educationList.length > 0) {\r\n isValid = true;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id === 'educationErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = '';\r\n field.data.error = false;\r\n });\r\n }\r\n // List is empty so error should be show.\r\n else {\r\n isValid = false;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id === 'educationErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageRequired;\r\n field.data.error = true;\r\n });\r\n }\r\n }\r\n // Education is include\r\n else {\r\n // List is empty so no error should be show\r\n if (educationList.length === 0) {\r\n fieldsGroup.fields.forEach(field => {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n });\r\n isValid = true;\r\n }\r\n }\r\n if (isValid) {\r\n application.education = educationList;\r\n }\r\n this.setState({\r\n application: application\r\n });\r\n }\r\n return isValid;\r\n };\r\n\r\n private reviewEmergencyContacts = (fieldsGroup: IFieldsGroup): boolean => {\r\n const {\r\n application,\r\n components\r\n } = this.state;\r\n\r\n let isValid = true;\r\n\r\n if (components && components.expansionPanel.emergencyContactsCount === undefined) {\r\n components.expansionPanel.emergencyContactsCount = 0;\r\n }\r\n\r\n if (components && components.expansionPanel.emergencyContactsCount !== undefined && components.expansionPanel.emergencyContactsCount > -1) {\r\n const emergencyList: IApplicationEmergencyContact[] = [];\r\n\r\n const emergency: IApplicationEmergencyContact = { firstName: '', lastName: '', phoneNumber: '' };\r\n const firstNamefield = fieldsGroup.fields.findIndex(x => x.data.id === 'emergencyFirstNameId');\r\n if (firstNamefield > -1) {\r\n emergency.firstName = fieldsGroup.fields[firstNamefield].value;\r\n }\r\n const lastNameField = fieldsGroup.fields.findIndex(x => x.data.id === 'emergencyLastNameId');\r\n if (lastNameField > -1) {\r\n emergency.lastName = fieldsGroup.fields[lastNameField].value;\r\n }\r\n const phoneField = fieldsGroup.fields.findIndex(x => x.data.id === 'emergencyPhoneId');\r\n if (phoneField > -1) {\r\n emergency.phoneNumber = fieldsGroup.fields[phoneField].value;\r\n }\r\n const suffixField = fieldsGroup.fields.findIndex(x => x.data.id === 'emergencySuffixId');\r\n if (suffixField > -1) {\r\n emergency.suffixId = fieldsGroup.fields[suffixField].value;\r\n }\r\n const middleNameField = fieldsGroup.fields.findIndex(x => x.data.id === 'emergencyMiddleNameId');\r\n if (middleNameField > -1) {\r\n emergency.middleName = fieldsGroup.fields[middleNameField].value;\r\n }\r\n const lastNamePrefixField = fieldsGroup.fields.findIndex(x => x.data.id === 'emergencyLastNamePrefixId');\r\n if (lastNamePrefixField > -1) {\r\n emergency.lastNamePrefix = fieldsGroup.fields[lastNamePrefixField].value;\r\n }\r\n const relationshipField = fieldsGroup.fields.findIndex(x => x.data.id === 'emergencyRelationshipId');\r\n if (relationshipField > -1) {\r\n emergency.relationshipId = fieldsGroup.fields[relationshipField].value;\r\n }\r\n const prefix = fieldsGroup.fields.findIndex(x => x.data.id === 'emergencyPrefixId');\r\n if (prefix > -1) {\r\n emergency.prefixId = fieldsGroup.fields[prefix].value;\r\n }\r\n\r\n // XNOR\r\n // If any required fields or none are filled that is allowed\r\n emergency.firstName = emergency.firstName === null ? '' : emergency.firstName;\r\n emergency.lastName = emergency.lastName === null ? '' : emergency.lastName;\r\n emergency.phoneNumber = emergency.phoneNumber === null ? '' : emergency.phoneNumber;\r\n if (!(emergency.firstName !== '' && emergency.lastName !== '' && emergency.phoneNumber !== '') &&\r\n (emergency.firstName !== '' || emergency.lastName !== '' || emergency.phoneNumber !== '')) {\r\n return false;\r\n }\r\n\r\n if (emergency.firstName !== null && emergency.firstName !== '' &&\r\n emergency.lastName !== null && emergency.lastName !== '' &&\r\n emergency.phoneNumber !== null && emergency.phoneNumber !== '') {\r\n emergencyList.push(emergency);\r\n }\r\n else if (emergency.suffixId || emergency.middleName ||\r\n emergency.lastNamePrefix || emergency.relationshipId || emergency.prefixId) {\r\n emergencyList.push(emergency);\r\n }\r\n let i: number = 0;\r\n do {\r\n const emergency: IApplicationEmergencyContact = { firstName: '', lastName: '', phoneNumber: '' };\r\n\r\n const fieldsBySection = fieldsGroup.fields.filter(x => x.data.section === i);\r\n fieldsBySection.forEach(field => {\r\n if (field.data.id.substr(0, 'emergencyFirstNameId'.length) === 'emergencyFirstNameId') {\r\n emergency.firstName = field.value;\r\n }\r\n if (field.data.id.substr(0, 'emergencyLastNameId'.length) === 'emergencyLastNameId') {\r\n emergency.lastName = field.value;\r\n }\r\n if (field.data.id.substr(0, 'emergencyPhoneId'.length) === 'emergencyPhoneId') {\r\n emergency.phoneNumber = field.value;\r\n }\r\n if (field.data.id.substr(0, 'emergencySuffixId'.length) === 'emergencySuffixId') {\r\n emergency.suffixId = field.value;\r\n }\r\n if (field.data.id.substr(0, 'emergencyMiddleNameId'.length) === 'emergencyMiddleNameId') {\r\n emergency.middleName = field.value;\r\n }\r\n if (field.data.id.substr(0, 'emergencyLastNamePrefixId'.length) === 'emergencyLastNamePrefixId') {\r\n emergency.lastNamePrefix = field.value;\r\n }\r\n if (field.data.id.substr(0, 'emergencyRelationshipId'.length) === 'emergencyRelationshipId') {\r\n emergency.relationshipId = field.value;\r\n }\r\n if (field.data.id.substr(0, 'emergencyPrefixId'.length) === 'emergencyPrefixId') {\r\n emergency.prefixId = field.value;\r\n }\r\n });\r\n // Duplicated\r\n if (emergencyList.find(x => x.firstName === emergency.firstName &&\r\n x.lastName === emergency.lastName && x.relationshipId === emergency.relationshipId)) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'emergencyErrorsId'.length) === 'emergencyErrorsId' &&\r\n x.data.section === i);\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageDuplicate;\r\n field.data.error = true;\r\n });\r\n return false;\r\n }\r\n if (emergency.firstName !== null && emergency.firstName !== '' &&\r\n emergency.lastName !== null && emergency.lastName !== '' &&\r\n emergency.phoneNumber !== null && emergency.phoneNumber !== '') {\r\n emergencyList.push(emergency);\r\n }\r\n else if (emergency.suffixId || emergency.middleName ||\r\n emergency.lastNamePrefix || emergency.relationshipId || emergency.prefixId) {\r\n emergencyList.push(emergency);\r\n }\r\n i++;\r\n } while (i < components.expansionPanel.emergencyContactsCount);\r\n // Emergency is required\r\n if (fieldsGroup.isRequired) {\r\n // List is no empty so no error should be show.\r\n if (emergencyList.length > 0) {\r\n isValid = true;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id === 'emergencyErrorsId');\r\n fieldsById.forEach(field => {\r\n field.data.label = '';\r\n field.data.error = false;\r\n });\r\n }\r\n // List is empty so error should be show.\r\n else {\r\n isValid = false;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id === 'emergencyErrorsId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageRequired;\r\n field.data.error = true;\r\n });\r\n }\r\n }\r\n // Emergency is include\r\n else {\r\n // List is not empty\r\n if (emergencyList.length > 0) {\r\n // Required fields should be filled\r\n emergencyList.forEach(emergency => {\r\n if (emergency.suffixId || emergency.middleName ||\r\n emergency.lastNamePrefix || emergency.relationshipId || emergency.prefixId) {\r\n if ((emergency.firstName === null || emergency.firstName === '') &&\r\n (emergency.lastName === null || emergency.lastName === '') &&\r\n (emergency.phoneNumber === null || emergency.phoneNumber === '')) {\r\n isValid = false;\r\n }\r\n }\r\n });\r\n }\r\n // List is empty so no error should be show\r\n else {\r\n fieldsGroup.fields.forEach(field => {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n });\r\n isValid = true;\r\n }\r\n }\r\n if (isValid) {\r\n application.emergencyContacts = emergencyList;\r\n }\r\n this.setState({\r\n application: application\r\n });\r\n }\r\n return isValid;\r\n };\r\n\r\n private reviewEmployment = (fieldsGroup: IFieldsGroup): boolean => {\r\n const {\r\n application,\r\n components\r\n } = this.state;\r\n\r\n let isValid = true;\r\n\r\n if (components && components.expansionPanel.employeeCount === undefined) {\r\n components.expansionPanel.employeeCount = 0;\r\n }\r\n\r\n if (components && components.expansionPanel.employeeCount !== undefined && components.expansionPanel.employeeCount > -1) {\r\n const employmentList: IApplicationEmployment[] = [];\r\n if (components) {\r\n const employment: IApplicationEmployment = { name: '', positionId: 0, startDate: undefined, endDate: undefined };\r\n const employerNamefield = fieldsGroup.fields.findIndex(x => x.data.id === 'employerNameId');\r\n const employerPositionField = fieldsGroup.fields.findIndex(x => x.data.id === 'employerPositionId');\r\n if (employerNamefield > -1 && employerPositionField > -1) {\r\n employment.name = fieldsGroup.fields[employerNamefield].value;\r\n employment.positionId = fieldsGroup.fields[employerPositionField].value;\r\n\r\n employment.name = employment.name === null ? '' : employment.name;\r\n employment.positionId = employment.positionId === null ? 0 : employment.positionId;\r\n // If name has value position is not required\r\n if (employment.name !== '') {\r\n fieldsGroup.fields[employerPositionField].data.error = false;\r\n fieldsGroup.fields[employerPositionField].data.helperText = '';\r\n }\r\n // If position has value name is not required\r\n if (employment.positionId > 0) {\r\n fieldsGroup.fields[employerNamefield].data.error = false;\r\n fieldsGroup.fields[employerNamefield].data.helperText = '';\r\n }\r\n }\r\n const employerStartDateField = fieldsGroup.fields.findIndex(x => x.data.id === 'employerStartDateId');\r\n if (employerStartDateField > -1) {\r\n employment.startDate = fieldsGroup.fields[employerStartDateField].value;\r\n }\r\n const employerEndDateField = fieldsGroup.fields.findIndex(x => x.data.id === 'employerEndDateId');\r\n if (employerEndDateField > -1) {\r\n employment.endDate = fieldsGroup.fields[employerEndDateField].value;\r\n }\r\n // When group is required and name and position is empty, required error is show.\r\n if (fieldsGroup.isRequired && employment.name === '' &&\r\n (employment.positionId === 0 || employment.positionId === undefined)) {\r\n isValid = false;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'employmentErrosId'.length) === 'employmentErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageRequired;\r\n });\r\n return false;\r\n }\r\n if (employment.name !== '' || employment.positionId > 0) {\r\n employmentList.push(employment);\r\n }\r\n if (employment.startDate || employment.endDate) {\r\n if (employment.startDate && employment.endDate) {\r\n // Dates\r\n if (moment(employment.startDate).format('YYYY-MM-DD') > moment(employment.endDate).format('YYYY-MM-DD')) {\r\n isValid = false;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'employmentErrosId'.length) === 'employmentErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageNotValid;\r\n });\r\n }\r\n else if (employment.startDate < moment(components.dateTimeMin).format('YYYY-MM-DD') ||\r\n employment.endDate > moment(components.dateTimeMax).format('YYYY-MM-DD')) {\r\n isValid = false;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'employmentErrosId'.length) === 'employmentErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageRange\r\n + moment(components.dateTimeMin).format('YYYY') + '-' +\r\n + moment(components.dateTimeMax).format('YYYY');\r\n });\r\n }\r\n }\r\n if (employment.name === '' &&\r\n (employment.positionId === 0 || employment.positionId === undefined)) {\r\n isValid = false;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'employmentErrosId'.length) === 'employmentErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageRequired;\r\n });\r\n return false;\r\n }\r\n }\r\n let i: number = 0;\r\n do {\r\n const employment: IApplicationEmployment = { name: '', positionId: 0, startDate: undefined, endDate: undefined };\r\n\r\n const fieldsBySection = fieldsGroup.fields.filter(x => x.data.section === i);\r\n fieldsBySection.forEach(field => {\r\n if (field.data.id.substr(0, 'employerNameId'.length) === 'employerNameId') {\r\n employment.name = field.value === null ? null : field.value;\r\n }\r\n if (field.data.id.substr(0, 'employerPositionId'.length) === 'employerPositionId') {\r\n employment.positionId = field.value === '' ? 0 : field.value;\r\n }\r\n if (field.data.id.substr(0, 'employerStartDateId'.length) === 'employerStartDateId') {\r\n employment.startDate = field.value === '' ? null : field.value;\r\n }\r\n if (field.data.id.substr(0, 'employerEndDateId'.length) === 'employerEndDateId') {\r\n employment.endDate = field.value === '' ? null : field.value;\r\n }\r\n });\r\n fieldsBySection.forEach(field => {\r\n if (field.data.id.substr(0, 'employerNameId'.length) === 'employerNameId' &&\r\n employment.positionId > 0) {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n }\r\n if (field.data.id.substr(0, 'employerPositionId'.length) === 'employerPositionId' &&\r\n employment.name !== '') {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n }\r\n });\r\n // Duplicated\r\n if (employmentList.find(x => x.name === employment.name &&\r\n x.positionId === employment.positionId &&\r\n x.startDate === employment.startDate &&\r\n x.endDate === employment.endDate)) {\r\n isValid = false;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'employmentErrosId'.length) === 'employmentErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageDuplicate;\r\n });\r\n return false;\r\n }\r\n // If start date or end date is entered Position or Name should have a value\r\n if (employment.startDate || employment.endDate) {\r\n if (employment.name === '' &&\r\n (employment.positionId === 0 || employment.positionId === undefined)) {\r\n isValid = false;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'employmentErrosId'.length) === 'employmentErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageRequired;\r\n });\r\n return false;\r\n }\r\n if (employment.startDate && employment.endDate) {\r\n // Dates validations\r\n if (moment(employment.startDate).format('YYYY-MM-DD') > moment(employment.endDate).format('YYYY-MM-DD')) {\r\n isValid = false;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'employmentErrosId'.length) === 'employmentErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageNotValid;\r\n });\r\n }\r\n else if (employment.startDate < moment(components.dateTimeMin).format('YYYY-MM-DD') ||\r\n employment.endDate > moment(components.dateTimeMax).format('YYYY-MM-DD')) {\r\n isValid = false;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'employmentErrosId'.length) === 'employmentErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageRange\r\n + moment(components.dateTimeMin).format('YYYY') + '-' +\r\n + moment(components.dateTimeMax).format('YYYY');\r\n });\r\n }\r\n }\r\n }\r\n if (employment.name !== '' || employment.positionId > 0) {\r\n employmentList.push(employment);\r\n }\r\n i++;\r\n } while (i < components.expansionPanel.employeeCount);\r\n // Employment is required\r\n if (fieldsGroup.isRequired) {\r\n // List is empty so error should be show.\r\n if (employmentList.length === 0) {\r\n isValid = false;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'employmentErrosId'.length) === 'employmentErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageRequired;\r\n });\r\n }\r\n }\r\n // Employment is include\r\n else {\r\n // List is not empty\r\n if (employmentList.length > 0) {\r\n // Required fields should be filled\r\n employmentList.forEach(employment => {\r\n if (employment.startDate || employment.endDate) {\r\n if ((employment.name === null || employment.name === '') &&\r\n employment.positionId === 0) {\r\n isValid = false;\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n fieldsGroup.fields.forEach(field => {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n });\r\n isValid = true;\r\n }\r\n }\r\n if (isValid) {\r\n application.employments = employmentList;\r\n }\r\n this.setState({\r\n application: application\r\n });\r\n }\r\n }\r\n return isValid;\r\n };\r\n\r\n private reviewIpeds = (fieldsGroup: IFieldsGroup): boolean => {\r\n const {\r\n application\r\n } = this.state;\r\n\r\n let isValid = true;\r\n const hispanicAnswer: string = fieldsGroup.fields[2].value;\r\n\r\n if (hispanicAnswer) {\r\n // If question is responded with NO, user must select at least one subrace\r\n if (hispanicAnswer === '0') {\r\n if (application.ipeds) {\r\n const subRaces: IApplicationIpeds[] =\r\n application.ipeds.filter(x => x.ipedsFederalCategoryId !== 1);\r\n if (subRaces.length === 0) {\r\n isValid = false;\r\n const textErrorIndex: number = fieldsGroup.fields.findIndex(x => x.data.id === 'ipedsErrorsId');\r\n fieldsGroup.fields[textErrorIndex].data.label =\r\n fieldsGroup.errorMessageRequired;\r\n }\r\n }\r\n else {\r\n isValid = false;\r\n const textErrorIndex: number = fieldsGroup.fields.findIndex(x => x.data.id === 'ipedsErrorsId');\r\n fieldsGroup.fields[textErrorIndex].data.label =\r\n fieldsGroup.errorMessageRequired;\r\n }\r\n }\r\n }\r\n else {\r\n // If question was not answered and some subraces were selected, user must answer question\r\n if (application.ipeds && application.ipeds.length > 0) {\r\n isValid = false;\r\n const textErrorIndex: number = fieldsGroup.fields.findIndex(x => x.data.id === 'ipedsErrorsId');\r\n fieldsGroup.fields[textErrorIndex].data.label =\r\n fieldsGroup.errorMessageNotValid;\r\n }\r\n }\r\n // Save ipeds if them were saved\r\n application.ipeds = undefined;\r\n this.setIpedsValuesCheckList(fieldsGroup);\r\n this.setIpedsValuesNestedCheckList(fieldsGroup);\r\n\r\n return isValid;\r\n };\r\n\r\n private reviewPhoneGroup = (fieldsGroup: IFieldsGroup): boolean => {\r\n const {\r\n application,\r\n components\r\n } = this.state;\r\n\r\n if (components && components.expansionPanel.phoneCount === undefined) {\r\n components.expansionPanel.phoneCount = 0;\r\n }\r\n\r\n if (components && components.expansionPanel.phoneCount !== undefined && components.expansionPanel.phoneCount > -1) {\r\n const phoneList: IApplicationPhoneList[] = [];\r\n\r\n const phone: IApplicationPhoneList = { type: '', countryId: 0, number: '', isPrimary: false };\r\n const phoneTypeField = fieldsGroup.fields.findIndex(x => x.data.id === 'phoneTypeId');\r\n if (phoneTypeField > -1) {\r\n phone.type = fieldsGroup.fields[phoneTypeField].value;\r\n }\r\n const phoneCountryField = fieldsGroup.fields.findIndex(x => x.data.id === 'phoneCountryId');\r\n if (phoneCountryField > -1) {\r\n phone.countryId = fieldsGroup.fields[phoneCountryField].value;\r\n }\r\n const phoneNumberField = fieldsGroup.fields.findIndex(x => x.data.id === 'phoneNumberId');\r\n if (phoneNumberField > -1) {\r\n phone.number = fieldsGroup.fields[phoneNumberField].value;\r\n }\r\n const primaryPhoneField = fieldsGroup.fields.findIndex(x => x.data.id === 'primaryPhoneId');\r\n if (primaryPhoneField > -1) {\r\n phone.isPrimary = fieldsGroup.fields[primaryPhoneField].value === '1' ? true : false;\r\n }\r\n\r\n // Set values\r\n phone.type = phone.type === null ? '' : phone.type;\r\n phone.countryId = phone.countryId === 0 ? 0 : phone.countryId;\r\n phone.number = phone.number === null ? '' : phone.number;\r\n phone.isPrimary = phone.isPrimary === null ? false : phone.isPrimary;\r\n\r\n // Add phone to list\r\n if (phone.type !== '' && phone.countryId !== 0 && phone.number !== '') {\r\n phoneList.push(phone);\r\n }\r\n\r\n let i: number = 0;\r\n do {\r\n const phoneItem: IApplicationPhoneList = { type: '', countryId: 0, number: '', isPrimary: false };\r\n\r\n const fieldsBySection = fieldsGroup.fields.filter(x => x.data.section === i);\r\n fieldsBySection.forEach(field => {\r\n if (field.data.id.substr(0, 'phoneTypeId'.length) === 'phoneTypeId') {\r\n phoneItem.type = field.value;\r\n }\r\n if (field.data.id.substr(0, 'phoneCountryId'.length) === 'phoneCountryId') {\r\n phoneItem.countryId = field.value;\r\n }\r\n if (field.data.id.substr(0, 'phoneNumberId'.length) === 'phoneNumberId') {\r\n phoneItem.number = field.value;\r\n }\r\n if (field.data.id.substr(0, 'primaryPhoneId'.length) === 'primaryPhoneId') {\r\n phoneItem.isPrimary = field.value === '1' ? true : false;\r\n }\r\n });\r\n // Duplicated\r\n if (phoneList.find(x => x.type === phoneItem.type &&\r\n x.countryId === phoneItem.countryId && x.number === phoneItem.number)) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'phoneErrorsId'.length) === 'phoneErrorsId');\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageDuplicate;\r\n });\r\n return false;\r\n }\r\n // Set values\r\n phoneItem.type = phoneItem.type === null ? '' : phoneItem.type;\r\n phoneItem.countryId = phoneItem.countryId === 0 ? 0 : phoneItem.countryId;\r\n phoneItem.number = phoneItem.number === null ? '' : phoneItem.number;\r\n phoneItem.isPrimary = phoneItem.isPrimary === null ? false : phoneItem.isPrimary;\r\n\r\n // Add phone to list\r\n if (phoneItem.type !== '' && phoneItem.countryId !== 0 && phoneItem.number !== '') {\r\n phoneList.push(phoneItem);\r\n }\r\n i++;\r\n } while (i < components.expansionPanel.phoneCount);\r\n\r\n application.phones = phoneList;\r\n\r\n this.setState({\r\n application\r\n });\r\n\r\n return true;\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n\r\n private reviewPrograms = (fieldsGroup: IFieldsGroup): boolean => {\r\n const {\r\n application,\r\n components\r\n } = this.state;\r\n\r\n let isValid = true;\r\n\r\n if (components && components.expansionPanel.programsCount === undefined) {\r\n components.expansionPanel.programsCount = 0;\r\n }\r\n\r\n if (components && components.expansionPanel.programsCount !== undefined && components.expansionPanel.programsCount > -1) {\r\n const programList: IApplicationProgram[] = [];\r\n const program: IApplicationProgram = { programId: 0 };\r\n if (fieldsGroup && fieldsGroup.fields && fieldsGroup.fields.length > 0) {\r\n let exist: boolean = false;\r\n const field = fieldsGroup.fields.find(x => x.data.id === 'programOfStudydId');\r\n if (field && field.data && field.data.options && field.data.options.length > 0) {\r\n field.data.options.forEach(option => {\r\n if (Number(option.value) === Number(field.value)) {\r\n exist = true;\r\n }\r\n });\r\n if (exist) {\r\n program.programId = field.value;\r\n }\r\n else {\r\n isValid = false;\r\n }\r\n }\r\n }\r\n if (isValid) {\r\n const commintmentField = fieldsGroup.fields.findIndex(x => x.data.id === 'commitmentId');\r\n if (commintmentField > -1) {\r\n program.commitmentId = fieldsGroup.fields[commintmentField].value;\r\n }\r\n if (program.programId > 0) {\r\n programList.push(program);\r\n }\r\n let i: number = 0;\r\n do {\r\n const program: IApplicationProgram = { programId: 0 };\r\n\r\n const fieldsBySection = fieldsGroup.fields.filter(x => x.data.section === i);\r\n fieldsBySection.forEach(field => {\r\n if (field.data.id.substr(0, 'programOfStudydId'.length) === 'programOfStudydId') {\r\n program.programId = field.value;\r\n }\r\n if (field.data.id.substr(0, 'commitmentId'.length) === 'commitmentId') {\r\n program.commitmentId = field.value;\r\n }\r\n });\r\n if (programList.find(x => x.programId === program.programId)) {\r\n isValid = false;\r\n const textErrorIndex: number = fieldsGroup.fields.findIndex(x => x.data.id === 'programOfStudydErrorsId');\r\n fieldsGroup.fields[textErrorIndex].data.label =\r\n fieldsGroup.errorMessageDuplicate;\r\n }\r\n if (programList.find(x => x.programId ===\r\n program.programId && x.commitmentId === program.commitmentId)) {\r\n isValid = false;\r\n const textErrorIndex: number = fieldsGroup.fields.findIndex(x => x.data.id === 'programOfStudydErrorsId');\r\n fieldsGroup.fields[textErrorIndex].data.label =\r\n fieldsGroup.errorMessageRequired;\r\n }\r\n else if (program.programId > 0) {\r\n programList.push(program);\r\n }\r\n i++;\r\n } while (i < components.expansionPanel.programsCount);\r\n\r\n if (isValid) {\r\n application.programs = programList;\r\n }\r\n\r\n this.setState({\r\n application\r\n });\r\n }\r\n }\r\n return isValid;\r\n };\r\n\r\n private reviewRelatives = (fieldsGroup: IFieldsGroup): boolean => {\r\n const {\r\n application,\r\n components\r\n } = this.state;\r\n\r\n let isValid: boolean = true;\r\n\r\n if (components && components.expansionPanel.relativesCount === undefined) {\r\n components.expansionPanel.relativesCount = 0;\r\n }\r\n\r\n if (components && components.expansionPanel.relativesCount !== undefined && components.expansionPanel.relativesCount > -1) {\r\n const relativeList: IApplicationRelative[] = [];\r\n let relative: IApplicationRelative = {\r\n attendedInstitution: false,\r\n relationFirstName: '',\r\n relationLastName: '',\r\n relationType: 0\r\n };\r\n relative = this.setApplicationRelative(fieldsGroup, relative);\r\n relative = this.setApplicationRelativeValues(relative);\r\n\r\n if (relative.relationFirstName || relative.relationLastName || relative.relationType > 0 ||\r\n relative.attendedInstitution) {\r\n relativeList.push(relative);\r\n }\r\n else if (relative.relationPrefix || relative.relationSuffix || relative.relationMiddleName ||\r\n relative.relationLastNamePrefix) {\r\n relativeList.push(relative);\r\n }\r\n\r\n let i: number = 0;\r\n do {\r\n let relative: IApplicationRelative = {\r\n attendedInstitution: false,\r\n relationFirstName: '',\r\n relationLastName: '',\r\n relationType: 0\r\n };\r\n\r\n relative = this.setApplicationRelativeAdditional(fieldsGroup, i, relative);\r\n relative = this.setApplicationRelativeValues(relative);\r\n\r\n // Duplicated\r\n if (relative.relationFirstName && relative.relationLastName && relative.relationType) {\r\n if (relativeList.find(x => x.relationFirstName === relative.relationFirstName &&\r\n x.relationLastName === relative.relationLastName &&\r\n x.relationType === relative.relationType)) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id.substr(0, 'relativesErrosId'.length) === 'relativesErrosId' &&\r\n x.data.section === i);\r\n fieldsById.forEach(field => {\r\n field.data.label = fieldsGroup.errorMessageDuplicate;\r\n field.data.error = true;\r\n });\r\n return false;\r\n }\r\n }\r\n if (relative.relationFirstName || relative.relationLastName || relative.relationType > 0 ||\r\n relative.attendedInstitution) {\r\n relativeList.push(relative);\r\n }\r\n else if (relative.relationPrefix || relative.relationSuffix || relative.relationMiddleName ||\r\n relative.relationLastNamePrefix) {\r\n relativeList.push(relative);\r\n }\r\n i++;\r\n } while (i < components.expansionPanel.relativesCount);\r\n\r\n // Relatives is required\r\n if (fieldsGroup.isRequired) {\r\n // List is no empty so no error should be show.\r\n if (relativeList.length > 0) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id === 'relativesErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.error = false;\r\n field.data.label = '';\r\n });\r\n isValid = true;\r\n }\r\n // List is empty so error should be show.\r\n if (relativeList.length === 0) {\r\n isValid = false;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id === 'relativesErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.error = true;\r\n field.data.label = fieldsGroup.errorMessageRequired;\r\n });\r\n }\r\n }\r\n else {\r\n if (relativeList.length === 0) {\r\n fieldsGroup.fields.forEach(field => {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n });\r\n isValid = true;\r\n }\r\n }\r\n if (isValid) {\r\n application.relatives = relativeList;\r\n\r\n this.setState({\r\n application: application\r\n });\r\n }\r\n }\r\n return isValid;\r\n };\r\n\r\n private reviewResidency = (fieldsGroup: IFieldsGroup): boolean => {\r\n const {\r\n application\r\n } = this.state;\r\n\r\n let isValid: boolean = true;\r\n const residencyList: IApplicationResidency[] = [];\r\n let residency: IApplicationResidency = {};\r\n residency = this.setApplicationResidency(fieldsGroup, residency);\r\n\r\n if (residency.residencyPreference !== null ||\r\n residency.foodPlanInterest !== null ||\r\n residency.dormPlanInterest !== null ||\r\n residency.dormCampus !== null ||\r\n residency.dormBuilding !== null) {\r\n residencyList.push(residency);\r\n }\r\n\r\n // Residency is required\r\n if (fieldsGroup.isRequired) {\r\n // List is no empty so no error should be show.\r\n if (residencyList.length > 0) {\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id === 'relativesErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.error = false;\r\n field.data.label = '';\r\n });\r\n isValid = true;\r\n }\r\n // List is empty so error should be show.\r\n if (residencyList.length === 0) {\r\n isValid = false;\r\n const fieldsById =\r\n fieldsGroup.fields.filter(x =>\r\n x.data.id === 'residencyErrosId');\r\n fieldsById.forEach(field => {\r\n field.data.error = true;\r\n field.data.label = fieldsGroup.errorMessageRequired;\r\n });\r\n }\r\n }\r\n // Residency is include\r\n else {\r\n // List is empty so no error should be show\r\n if (residencyList.length === 0) {\r\n fieldsGroup.fields.forEach(field => {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n });\r\n isValid = true;\r\n }\r\n }\r\n if (isValid) {\r\n if (residencyList.length > 0) {\r\n if (residencyList[0].residencyPreference && residencyList[0].residencyPreference > 0) {\r\n application.residencyPreference = residencyList[0].residencyPreference;\r\n }\r\n if (residencyList[0].foodPlanInterest) {\r\n application.foodPlanInterest = residencyList[0].foodPlanInterest;\r\n }\r\n if (residencyList[0].dormPlanInterest) {\r\n application.dormPlanInterest = residencyList[0].dormPlanInterest;\r\n }\r\n if (residencyList[0].dormCampus && residencyList[0].dormCampus > 0) {\r\n application.dormCampus = residencyList[0].dormCampus;\r\n }\r\n if (residencyList[0].dormBuilding && residencyList[0].dormBuilding > 0) {\r\n application.dormBuilding = residencyList[0].dormBuilding;\r\n }\r\n }\r\n this.setState({\r\n application: application\r\n });\r\n }\r\n return isValid;\r\n };\r\n\r\n private reviewTestScoreCompleteness = (groupedControls: any): boolean => {\r\n let validCompleteness: boolean = true;\r\n // this is meant to iterate over all controls grouped by section\r\n for (const keyIndex of Object.keys(groupedControls)) {\r\n const scoreA: IFieldForm[] = groupedControls[Number(keyIndex)];\r\n\r\n const fieldsPopulated: boolean = scoreA.every(f => f.value && f.value !== '');\r\n const fieldsEmpty: boolean = scoreA.every(f => !f.value || f.value === '');\r\n\r\n if (!fieldsPopulated && !fieldsEmpty) {\r\n scoreA.forEach(field => {\r\n if (field.value && field.value !== '') {\r\n field.data.error = false;\r\n } else {\r\n field.data.error = true;\r\n validCompleteness = false;\r\n }\r\n });\r\n }\r\n }\r\n return validCompleteness;\r\n };\r\n\r\n private reviewTestScores = (groupedControls: any): boolean => {\r\n // this is meant to iterate over all controls grouped by section\r\n for (let i: number = 0; i < Object.keys(groupedControls).length; i++) {\r\n const scoreA: any = groupedControls[Number(Object.keys(groupedControls)[i])];\r\n for (let j: number = 0; j < Object.keys(groupedControls).length; j++) {\r\n if (i !== j) {\r\n let identical: boolean = true;\r\n const scoreB: any = groupedControls[Number(Object.keys(groupedControls)[j])];\r\n for (let k: number = 0; k < scoreA.length; k++) {\r\n const fieldA: IFieldForm = scoreA[k];\r\n const fieldB: IFieldForm = scoreB[k];\r\n if (fieldA.data.id !== fieldB.data.id) {\r\n if ((fieldA.value || '') !== (fieldB.value || '')) {\r\n identical = false;\r\n }\r\n }\r\n }\r\n if (identical) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n private reviewUserDefined = (fieldsGroup: IFieldsGroup): boolean => {\r\n const {\r\n application\r\n } = this.state;\r\n\r\n let isValid: boolean = true;\r\n fieldsGroup.fields.forEach(field => {\r\n if (field.isUserDefined) {\r\n // validate length of field\r\n const userDefined: IApplicationUserDefined = {\r\n columnLabel: '',\r\n columnName: '',\r\n columnType: 0,\r\n columnValue: '',\r\n isUploading: false\r\n };\r\n if (field.value) {\r\n if (field.maxLength && field.value.toString().length <= field.maxLength) {\r\n field.data.error = false;\r\n field.data.helperText = '';\r\n isValid = true;\r\n\r\n userDefined.columnLabel = field.data.label ? field.data.label : '';\r\n userDefined.columnName = field.data.id;\r\n if (field.dataType === 'nvarchar') {\r\n userDefined.columnType = 1;\r\n }\r\n if (field.dataType === 'date') {\r\n userDefined.columnType = 2;\r\n }\r\n if (field.dataType === 'time') {\r\n userDefined.columnType = 3;\r\n }\r\n userDefined.columnValue = field.value;\r\n userDefined.isUploading = field.isUploading ? field.isUploading : false;\r\n let userDefinedIndex: number = -1;\r\n userDefinedIndex =\r\n application.userDefined.findIndex(x => x.columnName === userDefined.columnName);\r\n if (userDefinedIndex > -1) {\r\n application.userDefined.splice(userDefinedIndex, 1);\r\n }\r\n application.userDefined.push(userDefined);\r\n }\r\n else {\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageRange;\r\n isValid = false;\r\n }\r\n }\r\n else {\r\n if (field.isRequired) {\r\n field.data.error = true;\r\n field.data.helperText = field.data.errorMessageRequired;\r\n isValid = false;\r\n }\r\n }\r\n }\r\n });\r\n return isValid;\r\n };\r\n\r\n private reviewCampus = (fieldsGroup: IFieldsGroup): void => {\r\n const {\r\n application\r\n } = this.state;\r\n\r\n const campusIndex = fieldsGroup.fields.findIndex(x => x.data.id === 'campusId');\r\n if (fieldsGroup.fields[campusIndex].componentType === 'CheckboxList') {\r\n application.campuses = undefined;\r\n if (campusIndex > -1) {\r\n const campusList = fieldsGroup.fields[campusIndex].value;\r\n if (campusList) {\r\n const array = Object.values(campusList.split(','));\r\n array.forEach(campus => {\r\n if (application.campuses) {\r\n let findCampus: number = -1;\r\n findCampus = application.campuses.findIndex(x => x === Number(campus));\r\n if (findCampus === -1) {\r\n application.campuses.push(\r\n Number(campus)\r\n );\r\n }\r\n }\r\n else {\r\n application.campuses = [\r\n Number(campus)\r\n ];\r\n }\r\n });\r\n }\r\n }\r\n }\r\n };\r\n\r\n private reviewAcademicInterest = (fieldsGroup: IFieldsGroup): void => {\r\n const {\r\n application\r\n } = this.state;\r\n\r\n const interestIndex = fieldsGroup.fields.findIndex(x => x.data.id === 'interestId');\r\n application.academicInterests = undefined;\r\n if (interestIndex > -1) {\r\n const interestList = fieldsGroup.fields[interestIndex].value;\r\n if (interestList) {\r\n const array = Object.values(interestList.split(','));\r\n array.forEach(interest => {\r\n if (application.academicInterests) {\r\n let findInterest: number = -1;\r\n findInterest = application.academicInterests.findIndex(x => x === Number(interest));\r\n if (findInterest === -1) {\r\n application.academicInterests.push(\r\n Number(interest)\r\n );\r\n }\r\n }\r\n else {\r\n application.academicInterests = [\r\n Number(interest)\r\n ];\r\n }\r\n });\r\n }\r\n }\r\n };\r\n // #endregion Review Information\r\n\r\n // #region Set Values for Collections\r\n private setApplicationActivitiesAdditional = (fieldsGroup: any, sectionNumber: number, activityItem: IApplicationActivity):\r\n IApplicationActivity => {\r\n const fieldsBySection = fieldsGroup.fields.filter(x => x.data.section === sectionNumber);\r\n fieldsBySection.forEach(field => {\r\n if (field.data.id.substr(0, 'activityTypeId'.length) === 'activityTypeId') {\r\n activityItem.activityType = field.value;\r\n }\r\n if (field.data.id.substr(0, 'activityId'.length) === 'activityId') {\r\n activityItem.activity = field.value;\r\n }\r\n if (field.data.id.substr(0, 'positionHeldId'.length) === 'positionHeldId') {\r\n activityItem.position = field.value;\r\n }\r\n if (field.data.id.substr(0, 'numberOfHoursPerWeekId'.length) === 'numberOfHoursPerWeekId') {\r\n activityItem.hoursPerWeek = field.value;\r\n }\r\n if (field.data.id.substr(0, 'numberOfWeeksPerYearId'.length) === 'numberOfWeeksPerYearId') {\r\n activityItem.weeksPerYear = field.value;\r\n }\r\n if (field.data.id.substr(0, 'numberOfYearsId'.length) === 'numberOfYearsId') {\r\n activityItem.numberOfYears = field.value;\r\n }\r\n if (field.data.id.substr(0, 'participated9Id'.length) === 'participated9Id') {\r\n activityItem.participatedGrade09 = Boolean(field.value);\r\n }\r\n if (field.data.id.substr(0, 'participated10Id'.length) === 'participated10Id') {\r\n activityItem.participatedGrade10 = Boolean(field.value);\r\n }\r\n if (field.data.id.substr(0, 'participated11Id'.length) === 'participated11Id') {\r\n activityItem.participatedGrade11 = Boolean(field.value);\r\n }\r\n if (field.data.id.substr(0, 'participated12Id'.length) === 'participated12Id') {\r\n activityItem.participatedGrade12 = Boolean(field.value);\r\n }\r\n if (field.data.id.substr(0, 'participatedPostSecondaryId'.length) === 'participatedPostSecondaryId') {\r\n activityItem.participatedPostsecondary = Boolean(field.value);\r\n }\r\n });\r\n return activityItem;\r\n };\r\n\r\n private setApplicationAddress = (fieldsGroup: any, address: IApplicationAddress):\r\n IApplicationAddress => {\r\n const addressTypefield = fieldsGroup.fields.findIndex(x => x.data.id === 'addressTypeId');\r\n if (addressTypefield > -1) {\r\n address.type = fieldsGroup.fields[addressTypefield].value;\r\n }\r\n const houseNumberField = fieldsGroup.fields.findIndex(x => x.data.id === 'houseNumberId');\r\n if (houseNumberField > -1) {\r\n address.houseNumber = fieldsGroup.fields[houseNumberField].value;\r\n }\r\n const addressLine1Field = fieldsGroup.fields.findIndex(x => x.data.id === 'addressLine1Id');\r\n if (addressLine1Field > -1) {\r\n address.line1 = fieldsGroup.fields[addressLine1Field].value;\r\n }\r\n const addressLine2Field = fieldsGroup.fields.findIndex(x => x.data.id === 'addressLine2Id');\r\n if (addressLine2Field > -1) {\r\n address.line2 = fieldsGroup.fields[addressLine2Field].value;\r\n }\r\n const addressLine3Field = fieldsGroup.fields.findIndex(x => x.data.id === 'addressLine3Id');\r\n if (addressLine3Field > -1) {\r\n address.line3 = fieldsGroup.fields[addressLine3Field].value;\r\n }\r\n const addressLine4Field = fieldsGroup.fields.findIndex(x => x.data.id === 'addressLine4Id');\r\n if (addressLine4Field > -1) {\r\n address.line4 = fieldsGroup.fields[addressLine4Field].value;\r\n }\r\n const addressCityField = fieldsGroup.fields.findIndex(x => x.data.id === 'addressCityId');\r\n if (addressCityField > -1) {\r\n address.city = fieldsGroup.fields[addressCityField].value;\r\n }\r\n const stateProvinceField = fieldsGroup.fields.findIndex(x => x.data.id === 'stateProvinceId');\r\n if (stateProvinceField > -1) {\r\n address.stateProvince = fieldsGroup.fields[stateProvinceField].value;\r\n }\r\n const postalCodeField = fieldsGroup.fields.findIndex(x => x.data.id === 'postalCodeId');\r\n if (postalCodeField > -1) {\r\n address.postalCode = fieldsGroup.fields[postalCodeField].value;\r\n }\r\n const countyIdField = fieldsGroup.fields.findIndex(x => x.data.id === 'addressCountyId');\r\n if (countyIdField > -1) {\r\n address.county = fieldsGroup.fields[countyIdField].value;\r\n }\r\n const addressCountryField = fieldsGroup.fields.findIndex(x => x.data.id === 'addressCountryId');\r\n if (addressCountryField > -1) {\r\n address.country = fieldsGroup.fields[addressCountryField].value;\r\n }\r\n return address;\r\n };\r\n\r\n private setApplicationAddressValues = (address: IApplicationAddress): IApplicationAddress => {\r\n address.type = address.type || 0;\r\n address.line1 = address.line1 || '';\r\n address.city = address.city || '';\r\n address.country = address.country || 0;\r\n\r\n address.line2 = address.line2 || '';\r\n address.line3 = address.line3 || '';\r\n address.line4 = address.line4 || '';\r\n address.city = address.city || '';\r\n address.stateProvince = address.stateProvince || 0;\r\n address.postalCode = address.postalCode || '';\r\n address.county = address.county || 0;\r\n\r\n return address;\r\n };\r\n\r\n private setApplicationAddressAdditional =\r\n (fieldsGroup: any, sectionNumber: number, address: IApplicationAddress): IApplicationAddress => {\r\n const fieldsBySection = fieldsGroup.fields.filter(x => x.data.section === sectionNumber);\r\n fieldsBySection.forEach(field => {\r\n if (field.data.id.substr(0, 'addressTypeId'.length) === 'addressTypeId') {\r\n address.type = field.value;\r\n }\r\n if (field.data.id.substr(0, 'houseNumberId'.length) === 'houseNumberId') {\r\n address.houseNumber = field.value;\r\n }\r\n if (field.data.id.substr(0, 'addressLine1Id'.length) === 'addressLine1Id') {\r\n address.line1 = field.value;\r\n }\r\n if (field.data.id.substr(0, 'addressLine2Id'.length) === 'addressLine2Id') {\r\n address.line2 = field.value;\r\n }\r\n if (field.data.id.substr(0, 'addressLine3Id'.length) === 'addressLine3Id') {\r\n address.line3 = field.value;\r\n }\r\n if (field.data.id.substr(0, 'addressLine4Id'.length) === 'addressLine4Id') {\r\n address.line4 = field.value;\r\n }\r\n if (field.data.id.substr(0, 'addressCityId'.length) === 'addressCityId') {\r\n address.city = field.value;\r\n }\r\n if (field.data.id.substr(0, 'stateProvinceId'.length) === 'stateProvinceId') {\r\n address.stateProvince = field.value;\r\n }\r\n if (field.data.id.substr(0, 'postalCodeId'.length) === 'postalCodeId') {\r\n address.postalCode = field.value;\r\n }\r\n if (field.data.id.substr(0, 'addressCountyId'.length) === 'addressCountyId') {\r\n address.county = field.value;\r\n }\r\n if (field.data.id.substr(0, 'addressCountryId'.length) === 'addressCountryId') {\r\n address.country = field.value;\r\n }\r\n });\r\n return address;\r\n };\r\n\r\n private setApplicationEducation = (fieldsGroup: any, education: IApplicationEducation): IApplicationEducation => {\r\n const degreefield = fieldsGroup.fields.findIndex(x => x.data.id === 'educationDegreeId');\r\n if (degreefield > -1) {\r\n education.enrollment.degreeId = fieldsGroup.fields[degreefield].value;\r\n }\r\n const curriculumField = fieldsGroup.fields.findIndex(x => x.data.id === 'educationCurriculumId');\r\n if (curriculumField > -1) {\r\n education.enrollment.curriculumId = fieldsGroup.fields[curriculumField].value;\r\n }\r\n const honorsField = fieldsGroup.fields.findIndex(x => x.data.id === 'educationHonorsId');\r\n if (honorsField > -1) {\r\n education.enrollment.honorsId = fieldsGroup.fields[honorsField].value;\r\n }\r\n const startDateField = fieldsGroup.fields.findIndex(x => x.data.id === 'educationStartDateId');\r\n if (startDateField > -1) {\r\n education.enrollment.startDate = fieldsGroup.fields[startDateField].value;\r\n }\r\n const endDateField = fieldsGroup.fields.findIndex(x => x.data.id === 'educationEndDateId');\r\n if (endDateField > -1) {\r\n education.enrollment.endDate = fieldsGroup.fields[endDateField].value;\r\n }\r\n const institutionField = fieldsGroup.fields.findIndex(x => x.data.id === 'educationInstitutionName');\r\n if (institutionField > -1) {\r\n education.institution.name = fieldsGroup.fields[institutionField].value;\r\n }\r\n const etsCodeField = fieldsGroup.fields.findIndex(x => x.data.id === 'educationEtsCodeId');\r\n if (etsCodeField > -1) {\r\n education.institution.etsCode = fieldsGroup.fields[etsCodeField].value;\r\n }\r\n const cityField = fieldsGroup.fields.findIndex(x => x.data.id === 'educationCityId');\r\n if (cityField > -1) {\r\n education.institution.city = fieldsGroup.fields[cityField].value;\r\n }\r\n const stateField = fieldsGroup.fields.findIndex(x => x.data.id === 'educationStateId');\r\n if (stateField > -1) {\r\n education.institution.stateProvinceId = fieldsGroup.fields[stateField].value;\r\n }\r\n const countryField = fieldsGroup.fields.findIndex(x => x.data.id === 'educationCountryId');\r\n if (countryField > -1) {\r\n education.institution.countryId = fieldsGroup.fields[countryField].value;\r\n }\r\n const ficeCodeField = fieldsGroup.fields.findIndex(x => x.data.id === 'educationFiceCode');\r\n if (ficeCodeField > -1) {\r\n education.institution.ficeCode = fieldsGroup.fields[ficeCodeField].value;\r\n }\r\n return education;\r\n };\r\n\r\n private setApplicationRelativeAdditional =\r\n (fieldsGroup: any, sectionNumber: number, relativeItem: IApplicationRelative): IApplicationRelative => {\r\n const fieldsBySection = fieldsGroup.fields.filter(x => x.data.section === sectionNumber);\r\n fieldsBySection.forEach(field => {\r\n if (field.data.id.substr(0, 'relativesPrefixId'.length) === 'relativesPrefixId') {\r\n relativeItem.relationPrefix = field.value;\r\n }\r\n if (field.data.id.substr(0, 'relativesFirstNameId'.length) === 'relativesFirstNameId') {\r\n relativeItem.relationFirstName = field.value;\r\n }\r\n if (field.data.id.substr(0, 'relativesMiddleNameId'.length) === 'relativesMiddleNameId') {\r\n relativeItem.relationMiddleName = field.value;\r\n }\r\n if (field.data.id.substr(0, 'relativesLastNamePrefixId'.length) === 'relativesLastNamePrefixId') {\r\n relativeItem.relationLastNamePrefix = field.value;\r\n }\r\n if (field.data.id.substr(0, 'relativesLastNameId'.length) === 'relativesLastNameId') {\r\n relativeItem.relationLastName = field.value;\r\n }\r\n if (field.data.id.substr(0, 'relativesSuffixId'.length) === 'relativesSuffixId') {\r\n relativeItem.relationSuffix = field.value;\r\n }\r\n if (field.data.id.substr(0, 'relativesRelationshipId'.length) === 'relativesRelationshipId') {\r\n relativeItem.relationType = field.value;\r\n }\r\n if (field.data.id.substr(0, 'relativesAttendedInstitutionId'.length) === 'relativesAttendedInstitutionId') {\r\n relativeItem.attendedInstitution = field.value;\r\n }\r\n });\r\n return relativeItem;\r\n };\r\n\r\n private setApplicationEducationValues = (education: IApplicationEducation): IApplicationEducation => {\r\n education.institution.city = education.institution.city || '';\r\n education.enrollment.curriculumId = education.enrollment.curriculumId || 0;\r\n education.enrollment.degreeId = education.enrollment.degreeId || 0;\r\n education.enrollment.honorsId = education.enrollment.honorsId || 0;\r\n education.enrollment.startDate = education.enrollment.startDate || undefined;\r\n education.enrollment.endDate = education.enrollment.endDate || undefined;\r\n education.institution.id = education.institution.id || 0;\r\n education.institution.name = education.institution.name || '';\r\n education.institution.etsCode = education.institution.etsCode || '';\r\n education.institution.city = education.institution.city || '';\r\n education.institution.stateProvinceId = education.institution.stateProvinceId || 0;\r\n education.institution.countryId = education.institution.countryId || 0;\r\n education.institution.ficeCode = education.institution.ficeCode || '';\r\n return education;\r\n };\r\n\r\n private setApplicationEducationAdditional = (fieldsGroup: any, sectionNumber: number, education: IApplicationEducation):\r\n IApplicationEducation => {\r\n const fieldsBySection = fieldsGroup.fields.filter(x => x.data.section === sectionNumber);\r\n fieldsBySection.forEach(field => {\r\n if (field.data.id.substr(0, 'educationDegreeId'.length) === 'educationDegreeId') {\r\n education.enrollment.degreeId = field.value;\r\n }\r\n if (field.data.id.substr(0, 'educationCurriculumId'.length) === 'educationCurriculumId') {\r\n education.enrollment.curriculumId = field.value;\r\n }\r\n if (field.data.id.substr(0, 'educationHonorsId'.length) === 'educationHonorsId') {\r\n education.enrollment.honorsId = field.value;\r\n }\r\n if (field.data.id.substr(0, 'educationStartDateId'.length) === 'educationStartDateId') {\r\n education.enrollment.startDate = field.value;\r\n }\r\n if (field.data.id.substr(0, 'educationEndDateId'.length) === 'educationEndDateId') {\r\n education.enrollment.endDate = field.value;\r\n }\r\n if (field.data.id.substr(0, 'educationInstitutionName'.length) === 'educationInstitutionName') {\r\n education.institution.name = field.value;\r\n }\r\n if (field.data.id.substr(0, 'educationEtsCodeId'.length) === 'educationEtsCodeId') {\r\n education.institution.etsCode = field.value;\r\n }\r\n if (field.data.id.substr(0, 'educationCityId'.length) === 'educationCityId') {\r\n education.institution.city = field.value;\r\n }\r\n if (field.data.id.substr(0, 'educationStateId'.length) === 'educationStateId') {\r\n education.institution.stateProvinceId = field.value;\r\n }\r\n if (field.data.id.substr(0, 'educationCountryId'.length) === 'educationCountryId') {\r\n education.institution.countryId = field.value;\r\n }\r\n if (field.data.id.substr(0, 'educationFiceCode'.length) === 'educationFiceCode') {\r\n education.institution.ficeCode = field.value;\r\n }\r\n });\r\n return education;\r\n };\r\n\r\n private setApplicationResidency = (fieldsGroup: any, residency: IApplicationResidency): IApplicationResidency => {\r\n const residencyPreferenceField = fieldsGroup.fields.findIndex(x => x.data.id === 'commutePreferenceId');\r\n if (residencyPreferenceField > -1) {\r\n residency.residencyPreference = fieldsGroup.fields[residencyPreferenceField].value;\r\n }\r\n const foodPlanInterestField = fieldsGroup.fields.findIndex(x => x.data.id === 'interestedFoodPlanId');\r\n if (foodPlanInterestField > -1) {\r\n residency.foodPlanInterest = fieldsGroup.fields[foodPlanInterestField].value;\r\n }\r\n const dormPlanInterestField = fieldsGroup.fields.findIndex(x => x.data.id === 'interestedDormPlanId');\r\n if (dormPlanInterestField > -1) {\r\n residency.dormPlanInterest = fieldsGroup.fields[dormPlanInterestField].value;\r\n }\r\n const dormCampusField = fieldsGroup.fields.findIndex(x => x.data.id === 'campusOptionsId');\r\n if (dormCampusField > -1) {\r\n residency.dormCampus = fieldsGroup.fields[dormCampusField].value;\r\n }\r\n const dormBuildingField = fieldsGroup.fields.findIndex(x => x.data.id === 'dormPlanOptionsId');\r\n if (dormBuildingField > -1) {\r\n residency.dormBuilding = fieldsGroup.fields[dormBuildingField].value;\r\n }\r\n return residency;\r\n };\r\n\r\n private setApplicationRelative = (fieldsGroup: any, relative: IApplicationRelative): IApplicationRelative => {\r\n const prefixField = fieldsGroup.fields.findIndex(x => x.data.id === 'relativesPrefixId');\r\n if (prefixField > -1) {\r\n relative.relationPrefix = fieldsGroup.fields[prefixField].value;\r\n }\r\n const firstNameField = fieldsGroup.fields.findIndex(x => x.data.id === 'relativesFirstNameId');\r\n if (firstNameField > -1) {\r\n relative.relationFirstName = fieldsGroup.fields[firstNameField].value;\r\n }\r\n const middleNameField = fieldsGroup.fields.findIndex(x => x.data.id === 'relativesMiddleNameId');\r\n if (middleNameField > -1) {\r\n relative.relationMiddleName = fieldsGroup.fields[middleNameField].value;\r\n }\r\n const lastNamePrefixField = fieldsGroup.fields.findIndex(x => x.data.id === 'relativesLastNamePrefixId');\r\n if (lastNamePrefixField > -1) {\r\n relative.relationLastNamePrefix = fieldsGroup.fields[lastNamePrefixField].value;\r\n }\r\n const lastNameField = fieldsGroup.fields.findIndex(x => x.data.id === 'relativesLastNameId');\r\n if (lastNameField > -1) {\r\n relative.relationLastName = fieldsGroup.fields[lastNameField].value;\r\n }\r\n const suffixField = fieldsGroup.fields.findIndex(x => x.data.id === 'relativesSuffixId');\r\n if (suffixField > -1) {\r\n relative.relationSuffix = fieldsGroup.fields[suffixField].value;\r\n }\r\n const relationshipField = fieldsGroup.fields.findIndex(x => x.data.id === 'relativesRelationshipId');\r\n if (relationshipField > -1) {\r\n relative.relationType = fieldsGroup.fields[relationshipField].value;\r\n }\r\n const attendedInstitutionField = fieldsGroup.fields.findIndex(x => x.data.id === 'relativesAttendedInstitutionId');\r\n if (attendedInstitutionField > -1) {\r\n relative.attendedInstitution = Boolean(fieldsGroup.fields[attendedInstitutionField].value);\r\n }\r\n return relative;\r\n };\r\n\r\n private setApplicationRelativeValues = (relative: IApplicationRelative): IApplicationRelative => {\r\n relative.applicationId = relative.applicationId || 0;\r\n relative.relationMiddleName = relative.relationMiddleName || '';\r\n relative.relationLastNamePrefix = relative.relationLastNamePrefix || '';\r\n\r\n return relative;\r\n };\r\n\r\n private setApplicationActivitiesValues =\r\n (activity: IApplicationActivity, activityList: IApplicationActivity[]): IApplicationActivity[] => {\r\n activity.activityType = activity.activityType || 0;\r\n activity.activity = activity.activity || 0;\r\n activity.hoursPerWeek = activity.hoursPerWeek || 0;\r\n activity.weeksPerYear = activity.weeksPerYear || 0;\r\n activity.numberOfYears = activity.numberOfYears || 0;\r\n activity.participatedGrade09 = activity.participatedGrade09 || false;\r\n activity.participatedGrade10 = activity.participatedGrade10 || false;\r\n activity.participatedGrade11 = activity.participatedGrade11 || false;\r\n activity.participatedGrade12 = activity.participatedGrade12 || false;\r\n activity.participatedPostsecondary = activity.participatedPostsecondary || false;\r\n\r\n if (activity.activityType !== 0 && activity.activity !== 0) {\r\n activityList.push(activity);\r\n }\r\n else if (activity.position || activity.hoursPerWeek || activity.weeksPerYear ||\r\n activity.numberOfYears || activity.participatedGrade09 || activity.participatedGrade10 ||\r\n activity.participatedGrade11 || activity.participatedGrade12 || activity.participatedPostsecondary) {\r\n activityList.push(activity);\r\n }\r\n return activityList;\r\n };\r\n\r\n private setIpedsValuesCheckList = (fieldsGroup: IFieldsGroup): void => {\r\n const {\r\n application\r\n } = this.state;\r\n\r\n const ipedsCheckList = fieldsGroup.fields[3].value;\r\n if (ipedsCheckList) {\r\n const array = Object.values(ipedsCheckList.split(','));\r\n array.forEach(iped => {\r\n if (application.ipeds) {\r\n let index: number = -1;\r\n index = application.ipeds.findIndex(x => x.ipedsFederalCategoryId === 1\r\n && x.ipedsEthnicityId === Number(iped));\r\n if (index === -1) {\r\n application.ipeds.push({\r\n ipedsEthnicityId: Number(iped),\r\n ipedsFederalCategoryId: 1\r\n });\r\n }\r\n }\r\n else {\r\n application.ipeds = [{\r\n ipedsEthnicityId: Number(iped),\r\n ipedsFederalCategoryId: 1\r\n }];\r\n }\r\n });\r\n }\r\n\r\n this.setState({\r\n application: application\r\n });\r\n };\r\n\r\n private setIpedsValuesNestedCheckList = (fieldsGroup: IFieldsGroup): void => {\r\n const {\r\n application\r\n } = this.state;\r\n\r\n const ipedsNestedCheckboxList = fieldsGroup.fields[4].value;\r\n if (ipedsNestedCheckboxList) {\r\n const ipedsArray = ipedsNestedCheckboxList.split(',');\r\n ipedsArray.forEach(iped => {\r\n const ipedItem = iped.split('$');\r\n if (ipedItem[0] !== '') {\r\n if (ipedItem.length > 1) {\r\n if (application.ipeds) {\r\n application.ipeds.push({\r\n ipedsEthnicityId: ipedItem[1] !== '' ? Number(ipedItem[1]) : undefined,\r\n ipedsFederalCategoryId: Number(ipedItem[0])\r\n });\r\n }\r\n else {\r\n application.ipeds = [{\r\n ipedsEthnicityId: ipedItem[1] !== '' ? Number(ipedItem[1]) : undefined,\r\n ipedsFederalCategoryId: Number(ipedItem[0])\r\n }];\r\n }\r\n }\r\n else {\r\n if (application.ipeds) {\r\n application.ipeds.push({\r\n ipedsFederalCategoryId: Number(ipedItem[0])\r\n });\r\n }\r\n else {\r\n application.ipeds = [{\r\n ipedsFederalCategoryId: Number(ipedItem[0])\r\n }];\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.setState({\r\n application: application\r\n });\r\n };\r\n\r\n // #endregion Set Values for Collections\r\n // #endregion Functions\r\n\r\n // #region Error Functions\r\n private logError = (logData: ILogData): void => {\r\n LayoutActions.setLogData(logData);\r\n };\r\n\r\n private redirectError = (code: number): void => {\r\n LayoutActions.setRedirectCode(code);\r\n };\r\n\r\n private showError = (message?: string): void => {\r\n LayoutActions.setAlert({ message: message, messageType: ResultType.error } as IAlert);\r\n };\r\n // #endregion Error Functions\r\n\r\n // #region Resolvers\r\n private resolveLayoutReady = () => {\r\n try {\r\n const {\r\n application,\r\n resources\r\n } = this.state;\r\n\r\n if (resources) {\r\n document.title = resources.lblPageTitle;\r\n\r\n if (application) {\r\n const hdnAppId: HTMLInputElement | undefined =\r\n document.getElementById('hdnApplicationId') as HTMLInputElement;\r\n if (hdnAppId && hdnAppId.value) {\r\n application.applicationId = Number(hdnAppId.value);\r\n hdnAppId.remove();\r\n Requests.getComponents(application.applicationId, this.resolveGetComponents, this.logError);\r\n\r\n const hdnTransactionId: HTMLInputElement | undefined =\r\n document.getElementById('hdnTransactionId') as HTMLInputElement;\r\n const hdnTransactionStatus: HTMLInputElement | undefined =\r\n document.getElementById('hdnTransactionStatus') as HTMLInputElement;\r\n const hdnTransactionAmount: HTMLInputElement | undefined =\r\n document.getElementById('hdnTransactionAmount') as HTMLInputElement;\r\n const hdnTransactionDescription: HTMLInputElement | undefined =\r\n document.getElementById('hdnTransactionDescription') as HTMLInputElement;\r\n const hdnTransactionAuthorizationNumber: HTMLInputElement | undefined =\r\n document.getElementById('hdnTransactionAuthorizationNumber') as HTMLInputElement;\r\n const hdnTransactionReturnUrl: HTMLInputElement | undefined =\r\n document.getElementById('hdnTransactionReturnUrl') as HTMLInputElement;\r\n if (hdnTransactionId && hdnTransactionId.value\r\n && hdnTransactionStatus\r\n && hdnTransactionAmount\r\n && hdnTransactionDescription\r\n && hdnTransactionAuthorizationNumber\r\n && hdnTransactionReturnUrl) {\r\n const paymentTransaction: IPaymentTransaction = {\r\n amount: hdnTransactionAmount.value,\r\n authorizationNumber: hdnTransactionAuthorizationNumber.value,\r\n description: hdnTransactionDescription.value,\r\n returnUrl: hdnTransactionReturnUrl.value,\r\n status: Number(hdnTransactionStatus.value),\r\n transactionId: Number(hdnTransactionAmount.value)\r\n } as IPaymentTransaction;\r\n this.setState({\r\n paymentModalOpenFail: Number(hdnTransactionStatus.value) === 0,\r\n paymentModalOpenSuccess: Number(hdnTransactionStatus.value) === 1,\r\n paymentTransaction: paymentTransaction\r\n });\r\n hdnTransactionId.remove();\r\n hdnTransactionStatus.remove();\r\n hdnTransactionAmount.remove();\r\n hdnTransactionDescription.remove();\r\n hdnTransactionAuthorizationNumber.remove();\r\n hdnTransactionReturnUrl.remove();\r\n }\r\n }\r\n else {\r\n const hdnSavedApplicationToken: HTMLInputElement | undefined =\r\n document.getElementById('hdnSavedApplicationToken') as HTMLInputElement;\r\n if (hdnSavedApplicationToken && hdnSavedApplicationToken.value) {\r\n this.setState({\r\n token: hdnSavedApplicationToken.value\r\n });\r\n hdnSavedApplicationToken.remove();\r\n Requests.getSavedApplicationComponents(hdnSavedApplicationToken.value, this.resolveGetComponents, this.logError);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this.logError(LogData.noResources(this.resolveLayoutReady.name));\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveLayoutReady.name, e));\r\n }\r\n };\r\n\r\n private resolveCountries = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveCountries.name);\r\n\r\n if (result?.status) {\r\n const countries: any = result.data;\r\n\r\n this.setState({\r\n countries: countries\r\n });\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveCountries.name, e));\r\n }\r\n };\r\n\r\n private resolveGetAddress = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveGetAddress.name);\r\n\r\n if (result?.status) {\r\n const rowsPerPageOptions: number[] = this.getRowsPerPageOptions(result.data.overallCount\r\n ? result.data.overallCount : 0);\r\n this.setState({\r\n addresses: result.data.addresses,\r\n rowsPerPageOptions,\r\n total: result.data.overallCount\r\n });\r\n LayoutActions.setLoading(false);\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveGetAddress.name, e));\r\n }\r\n };\r\n\r\n private resolveGetComponents = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveGetComponents.name);\r\n\r\n if (result?.status) {\r\n const components: IApplicationForm = result.data;\r\n if (components.steps) {\r\n const errors: IApplicationErrors[] = Array(components.steps.length);\r\n if (components.applicationFormId > 0) {\r\n const {\r\n application\r\n } = this.state;\r\n\r\n application.applicationId = components.applicationFormId;\r\n }\r\n if (components.savedApplicationId) {\r\n const {\r\n application\r\n } = this.state;\r\n\r\n application.savedApplicationId = components.savedApplicationId;\r\n }\r\n if (components.canSaveApplication) {\r\n this.setState({\r\n confirmationMessage: components.confirmationSaveMessage,\r\n saveMessage: components.footerSaveMessage,\r\n showSaveButton: components.canSaveApplication\r\n });\r\n }\r\n\r\n components.steps.forEach((step, i) => {\r\n errors[i] = { isStepError: false, groupErrors: Array(step.fieldsGroups.length), stepTitle: step.title };\r\n for (let j = 0; j < step.fieldsGroups.length; j++) {\r\n errors[i].groupErrors[j] = {\r\n firstSectionErrors: {\r\n firstFieldsErrors: [],\r\n isFirstSectionErrors: false\r\n },\r\n groupId: step.fieldsGroups[j].id,\r\n isGroupError: false,\r\n sectionErrors: []\r\n };\r\n }\r\n });\r\n\r\n const {\r\n paymentModalOpenFail,\r\n paymentModalOpenSuccess\r\n } = this.state;\r\n\r\n if (paymentModalOpenFail || paymentModalOpenSuccess) {\r\n components.isCompletedApplication = true;\r\n this.setState({\r\n showAttachments: false\r\n });\r\n }\r\n\r\n this.setState({\r\n components: components,\r\n errors: errors\r\n }, () => LayoutActions.setLoading(false));\r\n\r\n const fileSelector = this.buildFileSelector();\r\n\r\n this.setState({\r\n fileSelector: fileSelector\r\n });\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveGetComponents.name, e));\r\n }\r\n };\r\n\r\n private resolveGetChildOptions = (json: string): void => {\r\n try {\r\n const {\r\n components\r\n } = this.state;\r\n\r\n if (components) {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveGetChildOptions.name);\r\n\r\n if (result?.status) {\r\n if (result.data) {\r\n if (result.data.step && result.data.group && result.data.targetId) {\r\n const fields: any = components.steps[Number(result.data.step)].fieldsGroups[Number(result.data.group)].fields;\r\n const fieldIndex: number =\r\n fields.findIndex(x => x.data.id === result.data.targetId);\r\n if (fieldIndex > -1) {\r\n const childField: IFieldForm = fields[fieldIndex];\r\n if (result.data.results) {\r\n childField.data.options = result.data.results as IDropDownOption[];\r\n }\r\n else {\r\n childField.data.options = [] as IDropDownOption[];\r\n }\r\n if (childField) {\r\n childField.value = undefined;\r\n }\r\n this.setState({\r\n components: components\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n this.logError(LogData.fromException(this.resolveGetChildOptions.name, e));\r\n }\r\n };\r\n\r\n private resolveGetInstitutions = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveGetInstitutions.name);\r\n\r\n if (result?.status) {\r\n const rowsPerPageOptions: number[] = this.getRowsPerPageOptions(result.data.overallCount\r\n ? result.data.overallCount : 0);\r\n this.setState({\r\n institutions: result.data.institutions,\r\n rowsPerPageOptions,\r\n total: result.data.overallCount\r\n });\r\n LayoutActions.setLoading(false);\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveGetInstitutions.name, e));\r\n }\r\n };\r\n\r\n private resolveStates = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveStates.name);\r\n\r\n if (result?.status) {\r\n const states: any = result.data;\r\n\r\n this.setState({\r\n states: states\r\n });\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveStates.name, e));\r\n }\r\n };\r\n\r\n private resolveSaveIncompleteApplication = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveSaveIncompleteApplication.name);\r\n\r\n if (result?.status) {\r\n if (result.data.result) {\r\n const {\r\n components\r\n } = this.state;\r\n // Send notification\r\n if (components && result.data.token && result.data.email && components.name) {\r\n LayoutActions.setLoading(false);\r\n const urlToSend = `${window.location.origin}${Constants.webUrl}/Admissions/ApplicationForm/Saved/${result.data.token}`;\r\n Requests.postCreateSaveApplicationNotification(urlToSend,\r\n result.data.email, components.name, this.resolveCreateSaveApplicationNotification, this.logError);\r\n this.setState({\r\n openConfirmationSavedModal: true\r\n });\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveSaveIncompleteApplication.name, e));\r\n }\r\n };\r\n\r\n private resolveCreateSaveApplicationNotification = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveCreateSaveApplicationNotification.name);\r\n\r\n if (!result?.status) {\r\n this.logError(LogData.badJsonResult(this.resolveCreateSaveApplicationNotification.name));\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveCreateSaveApplicationNotification.name, e));\r\n }\r\n };\r\n\r\n private resolveSubmitApplication = (json: string): void => {\r\n try {\r\n const {\r\n components\r\n } = this.state;\r\n\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveSubmitApplication.name);\r\n\r\n if (result?.status) {\r\n if (result.data.result) {\r\n if (components) {\r\n if (result.data.applicationId) {\r\n this.setState({\r\n applicationId: result.data.applicationId\r\n });\r\n }\r\n if (result.data.paymentInfo) {\r\n this.setState({\r\n paymentInfo: result.data.paymentInfo\r\n });\r\n }\r\n // Attachments are after sumbit and before payment\r\n if (components.allowAttachment) {\r\n const {\r\n applicationId\r\n } = this.state;\r\n if (applicationId !== undefined && applicationId > 0) {\r\n Requests.postListApplicationAttachments(applicationId, this.resolveGetListApplicationAttachments, this.logError);\r\n this.setState({\r\n showAttachments: true\r\n });\r\n }\r\n }\r\n else {\r\n if (result.data.paymentInfo) {\r\n const returnUrl =\r\n `${Constants.webUrl}/Admissions/ApplicationForm/${components.applicationFormId}`;\r\n\r\n this.setState({\r\n paymentDetailModalOpen: true,\r\n paymentInfo: result.data.paymentInfo,\r\n returnUrl: returnUrl\r\n });\r\n }\r\n else {\r\n components.isCompletedApplication = true;\r\n this.setState({\r\n components: components\r\n });\r\n }\r\n }\r\n LayoutActions.setLoading(false);\r\n }\r\n }\r\n else {\r\n this.showError();\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveSubmitApplication.name, e));\r\n }\r\n };\r\n\r\n private resolveValidateScore = (json: string): void => {\r\n try {\r\n const {\r\n components\r\n } = this.state;\r\n\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveValidateScore.name);\r\n\r\n if (result?.status && components) {\r\n components.steps.forEach(step => {\r\n const group: IFieldsGroup | undefined = step.fieldsGroups.find(g => g.id === result.data.group);\r\n if (group) {\r\n const field: IFieldForm | undefined = group.fields.find(f => f.data.id === result.data.componentId);\r\n if (field) {\r\n if (result.data.isNumeric) {\r\n field.isNumeric = true;\r\n } else {\r\n field.isNumeric = false;\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.setState({\r\n components: this.state.components\r\n });\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveValidateScore.name, e));\r\n }\r\n };\r\n\r\n private resolveCreateAttachment = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveCreateAttachment.name);\r\n\r\n if (result?.status) {\r\n if (result.data.result) {\r\n const {\r\n applicationId\r\n } = this.state;\r\n if (applicationId !== undefined && applicationId > 0) {\r\n LayoutActions.setLoading(true);\r\n Requests.postListApplicationAttachments(applicationId, this.resolveGetListApplicationAttachments, this.logError);\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveCreateAttachment.name, e));\r\n }\r\n };\r\n\r\n private resolveGetListApplicationAttachments = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveGetListApplicationAttachments.name);\r\n\r\n if (result?.status) {\r\n if (result.data) {\r\n this.setState({\r\n attachments: result.data.appAttachmentsViewModel,\r\n openRemoveAttachmentDialog: false\r\n });\r\n const {\r\n applicationId\r\n } = this.state;\r\n if (applicationId) {\r\n LayoutActions.setLoading(true);\r\n Requests.GetApplicationAttachmentTotals(applicationId, this.resolveGetAttachmentTotals, this.logError);\r\n }\r\n const fileSelector = this.buildFileSelector();\r\n this.setState({\r\n fileSelector: fileSelector\r\n });\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveGetListApplicationAttachments.name, e));\r\n }\r\n };\r\n\r\n private resolveRemoveAttachment = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveRemoveAttachment.name);\r\n\r\n if (result?.status) {\r\n if (result.data) {\r\n const {\r\n applicationId\r\n } = this.state;\r\n if (applicationId) {\r\n LayoutActions.setLoading(true);\r\n Requests.postListApplicationAttachments(applicationId, this.resolveGetListApplicationAttachments, this.logError);\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveRemoveAttachment.name, e));\r\n }\r\n };\r\n\r\n private resolveGetAttachmentTotals = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveGetAttachmentTotals.name);\r\n\r\n if (result?.status) {\r\n this.setState({\r\n attachmentsTotalSize: result.data.appAttachmentTotalsViewModel.totalAttachmentSize,\r\n attachmentsTotalSizeNumber: Number(result.data.appAttachmentTotalsViewModel.totalAttachmentSizeNumber),\r\n totalNumberOfAttachments: Number(result.data.appAttachmentTotalsViewModel.totalNumberOfAttachments)\r\n });\r\n LayoutActions.setLoading(false);\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveGetAttachmentTotals.name, e));\r\n }\r\n };\r\n\r\n private resolveGetGeneralSettings = (json: string): void => {\r\n try {\r\n const result: IJsonResult | undefined\r\n = Resolver(json, this.resolveGetGeneralSettings.name);\r\n if (result?.status) {\r\n this.setState({\r\n governmentIdFormat: result.data.general.governmentIdFormat\r\n });\r\n }\r\n }\r\n catch (e) {\r\n this.logError(LogData.fromException(this.resolveGetGeneralSettings.name, e));\r\n }\r\n };\r\n // #endregion Resolvers\r\n\r\n // #region State Management Events\r\n private onLayoutReady = (): void => {\r\n const ready: boolean = LayoutStore.getLayoutReady();\r\n const resources: IApplicationFormResources | undefined = LayoutStore.getResources();\r\n const cultures: ICultures = LayoutStore.getCultures();\r\n\r\n if (ready) {\r\n Requests.getStates(this.resolveStates, this.logError);\r\n Requests.getCountries(this.resolveCountries, this.logError);\r\n Requests.getGeneralSettings(this.resolveGetGeneralSettings);\r\n\r\n this.setState({\r\n dateTimeCulture: cultures.dateTimeCulture,\r\n firstDayOfWeek: cultures.firstDayOfWeek,\r\n shortDatePattern: cultures.shortDatePattern,\r\n\r\n // Resources\r\n resources: resources\r\n }, this.resolveLayoutReady);\r\n }\r\n else {\r\n this.setState({\r\n componentError: true\r\n }, () => this.logError(LogData.layoutNoReady(this.onLayoutReady.name)));\r\n }\r\n };\r\n // #endregion State Management Events\r\n\r\n // #region Lifecycle\r\n public componentWillUnmount = (): void => {\r\n LayoutStore.removeLayoutReadyListener(this.onLayoutReady);\r\n };\r\n\r\n public componentDidCatch = (error, info): void => {\r\n this.setState({\r\n componentError: true\r\n }, () => {\r\n this.logError(LogData.fromComponentException(this.componentDidCatch.name, error, info));\r\n this.redirectError(500);\r\n });\r\n };\r\n // #endregion Lifecycle\r\n\r\n public render(): JSX.Element {\r\n const {\r\n activeStep,\r\n addresses,\r\n attachments,\r\n attachmentsTotalSize,\r\n changeEmailText,\r\n componentError,\r\n components,\r\n confirmationMessage,\r\n countries,\r\n dateTimeCulture,\r\n emailField,\r\n emptyEmailField,\r\n errors,\r\n expanded,\r\n fileName,\r\n firstDayOfWeek,\r\n hasPersonId,\r\n institutions,\r\n invalidEmail,\r\n openAddressSearchModal,\r\n openETSSearchModal,\r\n pageNumber,\r\n pageSize,\r\n paymentModalOpenFail,\r\n paymentModalOpenSuccess,\r\n paymentTransaction,\r\n resources,\r\n rowsPerPageOptions,\r\n openConfirmationSavedModal,\r\n openEmailModal,\r\n openNotAvailableModal,\r\n openRemoveAttachmentDialog,\r\n openSupportedFilesModal,\r\n saveMessage,\r\n selectedCity,\r\n selectedCountry,\r\n selectedEtsCode,\r\n selectedInstitutionName,\r\n selectedState,\r\n selectedZipCode,\r\n shortDatePattern,\r\n showAttachments,\r\n showSaveButton,\r\n showSignIn,\r\n showSignUp,\r\n states,\r\n total,\r\n\r\n // Payment\r\n paymentDetailModalOpen,\r\n paymentInfo,\r\n paymentModalOpenProcess,\r\n returnUrl,\r\n\r\n // Settings\r\n governmentIdFormat\r\n } = this.state;\r\n\r\n // #region Payment modals\r\n let processPaymentModal: JSX.Element | undefined;\r\n if (paymentModalOpenProcess && paymentInfo) {\r\n processPaymentModal = (\r\n \r\n );\r\n }\r\n // #endregion Payment modals\r\n\r\n let addressSearchModal: JSX.Element | undefined;\r\n\r\n if (resources && resources.addressSearchModal) {\r\n addressSearchModal = (\r\n \r\n );\r\n }\r\n\r\n let etsSearchModal: JSX.Element | undefined;\r\n if (resources && resources.etsSearchModal && states && countries) {\r\n etsSearchModal = (\r\n \r\n );\r\n }\r\n\r\n let confirmationSavedModal: JSX.Element | undefined;\r\n if (resources && confirmationMessage) {\r\n confirmationSavedModal = (\r\n \r\n );\r\n }\r\n\r\n let emailModal: JSX.Element | undefined;\r\n if (resources && openEmailModal) {\r\n emailModal = (\r\n \r\n {resources.emailModal.lblSave}\r\n \r\n )}\r\n id=\"emailModal\"\r\n header={resources.emailModal.lblSaveApplication}\r\n maxWidth=\"md\"\r\n open={openEmailModal}\r\n onClose={this.onCloseEmailModal}\r\n >\r\n \r\n \r\n \r\n {emailField && changeEmailText ? resources.emailModal.lblSaveApplicationInstructions\r\n : resources.emailModal.lblSaveApplicationEmptyEmailIns}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n let notAvailableModal: JSX.Element | undefined;\r\n if (resources && openNotAvailableModal) {\r\n notAvailableModal = (\r\n \r\n {resources.notAvailableModal.lblOk}\r\n \r\n )}\r\n id=\"notAvailableModal\"\r\n header={resources.notAvailableModal.lblNotAvailable}\r\n maxWidth=\"md\"\r\n open={openNotAvailableModal}\r\n onClose={this.onCloseNotAvailableModal}\r\n >\r\n \r\n \r\n \r\n {resources.notAvailableModal.lblNotAvailableMessage}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n let supportedFiles: JSX.Element | undefined;\r\n if (resources && components && components.fileTypes) {\r\n const supportedFilesBody: JSX.Element[] = [];\r\n components.fileTypes.forEach((availableFileType, i) => {\r\n let fileExt = '';\r\n const fileExtensions = availableFileType.fileExtension.split(';');\r\n fileExtensions.forEach(fExt => {\r\n fileExt = fileExt + fExt.replace('*.', '');\r\n });\r\n fileExt = fileExt.replace(/ /g, ', ');\r\n supportedFilesBody.push(\r\n \r\n \r\n \r\n {fileExt}\r\n \r\n \r\n \r\n );\r\n });\r\n\r\n supportedFiles = (\r\n \r\n \r\n {supportedFilesBody}\r\n \r\n
\r\n );\r\n }\r\n\r\n let supportedFilesModal: JSX.Element | undefined;\r\n if (resources && openSupportedFilesModal) {\r\n supportedFilesModal = (\r\n \r\n {resources.attachments.lblClose}\r\n \r\n )}\r\n id=\"supportedFilesModal\"\r\n header={resources.attachments.lblSupportedFilesTitle}\r\n maxWidth=\"md\"\r\n open={openSupportedFilesModal}\r\n onClose={this.onCloseSupportedFilesModal}\r\n >\r\n \r\n \r\n {supportedFiles}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n let attachmentsComponent: JSX.Element | undefined;\r\n if (resources && components && components.fileTypes) {\r\n attachmentsComponent = (\r\n \r\n );\r\n }\r\n\r\n let removeAttachmentModal: JSX.Element | undefined;\r\n if (resources && openRemoveAttachmentDialog) {\r\n removeAttachmentModal = (\r\n \r\n );\r\n }\r\n\r\n let signInModal: JSX.Element | undefined;\r\n if (!hasPersonId) {\r\n signInModal = (\r\n \r\n );\r\n }\r\n\r\n let signUpModal: JSX.Element | undefined;\r\n if (showSignUp) {\r\n signUpModal = (\r\n \r\n );\r\n }\r\n\r\n let contentPage: JSX.Element | undefined;\r\n if (!componentError && resources) {\r\n // #region Payment Info modal\r\n let paymentInfoModal: JSX.Element | undefined;\r\n if (paymentInfo && components && paymentDetailModalOpen) {\r\n paymentInfoModal = (\r\n \r\n );\r\n }\r\n // #endregion Payment Info modal\r\n\r\n if (components) {\r\n if (!showAttachments) {\r\n contentPage = (\r\n <>\r\n \r\n {paymentInfoModal}\r\n \r\n );\r\n }\r\n else {\r\n contentPage = (\r\n <>\r\n {attachmentsComponent}\r\n \r\n );\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n {contentPage}\r\n {addressSearchModal}\r\n {etsSearchModal}\r\n {processPaymentModal}\r\n {confirmationSavedModal}\r\n {emailModal}\r\n {notAvailableModal}\r\n {supportedFilesModal}\r\n {removeAttachmentModal}\r\n {signInModal}\r\n {signUpModal}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst ApplicationFormViewWithLayout = withLayout(ApplicationFormView);\r\n// #endregion Component\r\n\r\n// RenderDOM: Component\r\nReactDOM.render(, document.getElementById('root'));","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 63120,\n\t\"./it-ch.js\": 63120,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 18;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t18: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_hedtech_powercampus_self_service\"] = self[\"webpackChunk_hedtech_powercampus_self_service\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [464], () => (__webpack_require__(60072)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","props","classNameButtonText","classNameIconButton","disabled","lblPrint","link","resources","useState","open","setOpen","onClickPrint","window","location","assign","Hidden","smDown","Button","TextProps","display","IconProps","name","align","className","id","textVariantStyling","variant","onClick","mdUp","IconButton","color","Icon","large","Snackbar","ContentProps","message","lblPrintProcess","type","ResultType","onClose","PaymentOrigin","PaymentDetailModal","json","result","Resolver","resolveGetResources","status","setState","data","e","logError","LogData","idModule","idPage","state","getInitialState","this","componentError","logData","LayoutActions","code","RequestsLayout","componentDidMount","error","info","componentDidCatch","redirectError","contentPage","classes","coupons","enableOnlinePayment","paymentInfo","paymentInfoNoChanges","paymentMethod","paymentOrigin","titleName","yearTerm","onApplyCoupon","onChangeCouponCode","onChangePaymentAnotherAmount","onChangePaymentMethod","onPay","onRemoveCoupon","paymentMethods","headerModal","footerModal","rowClassName","isFirstRow","hasCharges","Registration","currentBalanceValue","totalAmountValue","push","description","Format","formatBalance","currentBalance","value","errorTextAnotherAmount","errorAnotherAmount","modified","Boolean","anotherAmount","invalidAnotherAmount","lblAnotherAmountInvalid","undefined","lblAnotherAmountRequired","lblAnotherAmount","nodeComplement","TextField","helperText","size","onChange","ConEdRegistration","useTransactionChargesOnly","paymentDueValue","Text","formatTitle","Grid","container","alignItems","justifyContent","item","xs","instructionsContainer","lblInstructions","statementNumber","printing","lblPrintStatement","Constants","spacing","RadioGroup","options","amountContainer","direction","discountApplied","totalAmount","lblDiscountedTotal","lblTotal","paymentDue","lblPaymentDue","requireOnlinePayment","btnBillMeLater","btnPay","btnOk","Modal","disableBackdropClick","disableEscapeKeyDown","disableHeaderTypography","header","maxWidth","footer","showTitleBarClose","lblDiscountTitle","lblDiscountInstructions","map","coupon","ci","key","sm","md","lg","isNew","noDeleteButton","btnDeleteCoupon","isApplied","isModified","isValid","lblDiscountCouponInvalid","lblDiscountCouponRequired","label","lblDiscountCoupon","maxCharacters","onEnterPress","btnApplyCoupon","lblDetail","chargeCredits","Table","breakpoint","root","table","component","lblCourse","lblCharge","lblAmount","find","c","isCredit","lblDiscount","row","cci","length","sectionId","noBottomBorder","columnName","scope","isOther","eventId","eventName","formatTitleSection","lblOthers","Application","amount","lblProgramFees","discountAmount","colSpan","footerPayment","classnames","footerTextSpacing","formatDiscountedTotal","formatTotal","formatPaymentDue","React","withStyles","theme","createStyles","backgroundColor","Tokens","height","marginBottom","paddingBottom","paddingLeft","paddingRight","paddingTop","width","marginTop","borderBottomColor","breakpoints","up","postProcessPayment","paymentRequest","resolver","resolveError","Request","postProcessTranscriptPayment","requestTranscripts","postProcessDonationPayment","giftCampaigns","applicationId","conEdTransactionId","personId","returnUrl","termSessionId","periodId","split","paymentPeriod","sessionPeriodId","Number","termPeriodId","term","year","Requests","resolvePostProcessPayment","onOk","replace","encodeURI","showError","messageType","lblTitle","btnCancel","Alert","text","lblContentText","AuthStatus","authenticateUser","userName","password","changePassword","passwordChange","getAuthenticationMode","isForgotPasswordEnabled","sendForgotPasswordEmail","reCaptchaResponse","styles","forgotPasswordLink","forgotText","loginCard","animation","loginText","reCaptchaContent","reCaptchaErrorText","signInButton","spacingAlert","spacingTitle","SignIn","LayoutStore","onAfterSignIn","URLSearchParams","search","get","newState","isLoading","includes","Redirect","OnFinishSignIn","event","alert","target","passwordModified","onChangePassword","userNameModified","onChangeUserName","isLoadingNext","isLoadingSignIn","onCloseModal","onGoSignUp","onGoSignUpModal","showLoaderNext","resolveGetAuthenticationMode","onNext","authMode","variation","showLoaderSignIn","resolveAuthenticateUser","timeout","Math","floor","random","setTimeout","lblInvalidCredentials","hideLoaderSignIn","onSignIn","userNameRef","current","focus","onUseAnotherAccount","accountValidations","errorCurrentPassword","newPassword","validations","PasswordValidation","PasswordConfirmationStore","confirmPassword","PasswordConfirmationActions","hasErrors","isCurrentPwdNewPwd","showLoaderChangePassword","currentPassword","resolveChangePassword","onChangePasswordButton","onCloseChangePassword","onChangePasswordValidation","userNameRecovery","userNameRecoveryModified","onChangeUserNameRecovery","emailSent","openForgotPassword","userNameRecoveryRef","onClickForgotPassword","stepNumber","reCaptchaError","StoreMode","passwordRef","onCloseForgotPassword","token","onRecaptchaChange","onReCaptchaError","isReCaptchaEnabled","reCaptchaRef","getValue","showLoaderSendEmail","resolveSendForgotPasswordEmail","onSendEmail","isLoadingChangePassword","isLoadingSendEmail","lblGenericError","hideAllLoaders","mode","hideLoaderNext","showSignInError","authResponse","success","Success","changePasswordAtNextLogon","openChangePassword","InvalidCredentials","IsLocked","authResponseDetail","attempt","remainingLockedOutTime","formatLockedAccount","lblLocked","InvalidPassword","remainingAttempts","formatInvalidAttempts","response","updatedSuccessfully","errors","ChangePasswordError","isNotPreviousPassword","hideLoaderChangePassword","resolveIsForgotPasswordEnabled","reCaptchaSiteKey","hideLoaderSendEmail","uiCulture","hideLoader","title","content","button","loading","btnChangePassword","lblChangePassword","lblChangePasswordInstructions","PasswordConfirmation","route","weight","lblForgotPasswordTitle","btnClose","btnSendEmail","role","formatEmailSent","lblForgotPasswordInstructions","autoComplete","lblUserNameRequired","lblUserName","ref","hl","sitekey","onExpired","onErrored","lblReCaptchaRequired","lblLogInTitle","overModal","Paragraph","events","lblUseAnotherAccount","btnNext","btnSingIn","lblPasswordRequired","lblPassword","passwordToggle","btnForgot","Card","withWidth","IPasswordPolicyErrors","getEmailRegExp","getPasswordPolicy","appArea","postSignUpApplication","account","postSignUpConed","postValidatePassword","passwordModel","margin","marginLeft","popperText","spacingButtons","spacingInstructions","textAlign","SignUp","emailRegExp","firstName","firstNameModified","lastName","lastNameModified","email","emailInvalid","emailIsValid","emailModified","onChangeTextField","isLoadingSave","componentValidations","showLoaderSave","resolvePostSignUp","onCreateAccount","onGoSignIn","onGoSignInModal","resolveGetEmailRegExp","resultSignUp","onAfterSignUp","lblCreatedSuccessfully","userAccountStatus","unableToDefineUserName","cannotCreateAccount","userAlreadyExists","existingUser","hideLoaderSave","peopleId","anchorEl","newAccountContent","errorTextFirstName","errorFirstName","lblFirstNameRequired","errorTextLastName","errorLastName","lblLastNameRequired","errorTextEmail","errorEmail","lblEmailInvalid","lblExistingUser","lblEmailRequired","lblCreateAccount","btnCreateAccount","src","lblCannotCreateAccount","noCompareAgainstPreviousPwd","topElements","lblContactInformation","lblFirstName","required","lblLastName","lblEmail","paginationComponent","bodyModal","addresses","pageNumber","pageSize","rowsPerPageOptions","totalAddress","zipCode","onChangePage","onChangeRowsPerPage","onClear","onClickLink","onSearch","btnSearch","btnClear","tableBody","forEach","address","j","lblZipCode","Link","city","stateProvinceId","countryId","countyId","lblCity","lblState","lblCounty","county","lblCountry","country","lblNoResults","Pagination","count","page","rowsPerPage","onPageChange","onRowsPerPageChange","category","federalCategory","fontWeight","sectionIndex","dateTimeCulture","expandedPanelId","fields","governmentIdFormat","groupIndex","isExpansionPanel","isHorizontalAligned","shortDatePattern","stepIndex","onChangeCheckBox","onChangeDropDown","onChangeDateTimeField","onChangeExpansionPanel","onChangeListCheckbox","onChangeRadioGroup","onClickButton","onDeleteItem","elements","ids","sectionIndexes","sectionElements","sectionContainers","headerDeleteElement","headerTitleElements","firstHeaderTitleElement","getId","idStringArray","index","setHeaderTitleElements","field","isExpansionPanelHeader","lblNew","splice","componentType","selectedOption","findIndex","x","fillElements","fieldElement","groupErrors","groupId","lblPrimary","fieldSize","gridSize","substr","buttonId","isPostalCode","isRequired","String","lblSearch","format","placeholder","emptyOption","lblSelect","exist","option","toString","Dropdown","multiple","allowMultipleSelection","checked","Checkbox","DatePicker","culture","idDelete","messageRequired","isCheck","chkElements","i","array","Object","values","FormControl","control","colorText","isWithLink","actionUrl","actions","action","_event","href","errorMessage","iped","ipedItem","ipedsEthnicityId","ipedsFederalCategoryId","elementsList","complexOptions","complexItem","childIsChecked","parentIsChecked","List","TextLink","alt","dangerouslySetInnerHTML","__html","sectionErrors","section","ExpansionPanel","applicationFormError","isSectionError","background","expandIcon","expanded","isWidthUp","setMultipleFields","firstSectionErrors","isFirstSectionErrors","buttonTop","groupTitleBottom","labelElement","instructionsElement","fieldGroup","fieldGroupIndex","firstDayOfWeek","onAddMore","isDisabled","isDisableButton","isMultiple","instructions","maximumAllowed","lblAddNew","containerDetails","padding","failedPayment","paymentTransaction","successPayment","onCloseFailedPayment","resourcesApplicationHandler","lblContentTextApplication","lblTitleDetails","Divider","lblDescription","lblAuthorizationCode","authorizationNumber","backButtonMovil","boxStep","boxShadow","buttonContainer","buttonsContainerMovil","marginRight","buttonStep","cardRoot","fieldContainer","footerPadding","inline","mobileStepperContent","minHeight","saveButtonMargin","saveFooter","stepperDesktop","activeStep","components","saveMessage","showSaveButton","onBackStep","onClickSave","onClickStep","onNextStep","onSubmit","noContent","MessageStyled","classMessage","lblNotAvailable","steps","Array","step","fieldsGroupsElements","fieldsGroups","fieldsGroupsModal","isCompletedApplication","confirmationGroup","confirmationIndex","footerGroup","footerGroupIndex","accent","query","matches","position","nextButton","fluid","lblNext","backButton","lblBack","feeAmount","isFlatFee","formatHasFee","formatHasFees","StepProgress","nonLinear","orientation","isStepError","optional","lblSubmit","lblSave","icon","palette","active","cursor","marginRigth","attachments","numberOfAttachments","totalSize","onClickContinue","onClickInfo","onClickOpenFolder","onClickRemoveAttachment","lblName","lblType","lblSize","lblDelete","attachment","attachmentTitle","extension","fileSize","Tooltip","placement","applicationAttachmentId","lblChooseFile","lblSupportedFiles","lblAttachments","lblTotalSize","lblNoUploads","lblContinue","confirmationMessage","tableInstitutions","countries","etsCode","institutionName","institutions","states","totalInstitutions","onChangeDropDownETSSearch","onChangeTextFieldETSSearch","emptyOptionState","lblEmptyOptionState","emptyOptionCountry","lblEmptyOptionCountry","lblInstitutionName","lblETSCode","lblFICECode","ficeCode","stateDesc","countryDesc","getAddresses","startIndex","getComponents","getSavedApplicationComponents","savedApplicationToken","postSubmit","application","postCreateSavedApplication","savedApplication","postCreateSaveApplicationNotification","urlToSend","formApplicationName","postCreateApplicationAttachment","applicationAttachment","postListApplicationAttachments","postDeleteApplicationAttachment","attachmentId","getApplicationAttachments","GetApplicationAttachmentTotals","getChildOptions","url","group","targetId","isApplicationForm","formId","getValidateScoreType","test","componentId","testId","getCountries","getStates","getInstitutions","stateId","institution","getGeneralSettings","getApplications","postDeleteSavedApplication","savedApplicationId","postUpdateSavedApplication","getStatusSettings","getSubmittedApplications","ApplicationFormView","paymentDetailModalOpen","onClosePaymentDetailModal","paymentModalOpenProcess","onClosePaymentModalProcess","fileSelector","document","createElement","supportedTypes","fileTypes","fileType","fileExtension","fileExt","setAttribute","onchange","onChangeFile","bind","buildFileSelector","mediaId","mediaTypeId","getMediaTypeId","inputFile","temporaryFileReader","FileReader","Promise","resolve","onload","encoded","repeat","readAsDataURL","readUploadedFile","stopPropagation","preventDefault","file","files","fileName","attachmentsTotalSizeNumber","totalNumberOfAttachments","lblTotalAttachmentsError","bytes","toFixed","maxAttachmentSize","lblAttachmentsSizeError","lblAllAttachmentsSizeError","maxApplicationAttachmentSize","fileContents","newFile","fileContent","resolveCreateAttachment","click","applicationFormId","showAttachments","openSupportedFilesModal","onCloseSupportedFilesModal","fieldButtonId","fileId","openRemoveAttachmentDialog","onClickRemoveAttachmentButton","resolveRemoveAttachment","onCloseRemoveAttachmentModal","showSignIn","onCloseSignIn","showSignUp","onCloseSignUp","onOpenSignIn","onOpenSignUp","emailField","onSaveEmailField","onSaveApplication","currentTarget","openAddressSearchModal","selectedZipCode","onCloseAddressSearchModal","selectedFieldId","fieldId","assignFieldValue","onClickZipCodeLink","onChangeTextFieldAddressSearch","resolveGetAddress","total","previousSize","selectedEtsCode","selectedCity","selectedInstitutionName","openETSSearchModal","selectedCountry","selectedState","onCloseETSSearchModal","optionSelected","resolveGetInstitutions","newComponents","phoneFields","numRow","idFields","resolveLayoutReady","applicationTop","getElementById","scrollIntoView","layoutId","person","temporaryEmail","applicationFormSettingId","formLayoutId","RequestsApplication","resolveSaveIncompleteApplication","openEmailModal","hasValueEmailField","fieldsGroup","invalidEmail","emptyEmailField","onChangeTextFieldModal","setApplicationValues","reviewRequiredFields","governmentId","cleanGovernmentId","resolveSubmitApplication","onCloseEmailModal","onCloseNotAvailableModal","finishButtonId","onCloseConfirmationSavedModal","app","evaluateAppJs","eval","isUserDefined","customScript","NaN","date","cultures","fieldIndex","dateMinFormat","moment","add","toUpperCase","dateMaxFormat","dateOfBirth","setValues","cleanErrorMessages","formatDateOutOfRange","errorMessageRequired","visaExpiration","passportExpiration","fieldTestTaken","testScores","dateTaken","itemArrId","toDate","Date","errorMessageRange","dateTimeMin","valueSelected","typeId","score","f","resolveValidateScore","checkBoxListIndex","checkBoxListField","ipedsList","ipeds","filter","childField","childEndPoint","resolveGetChildOptions","setIpedsValuesNestedCheckList","ipedNew","ipedIndex","itemToRemove","campuses","reviewCampus","campusIndex","campus","academicInterests","reviewAcademicInterest","setIpedsValuesCheckList","ipedsArray","ethnicity","onPrimaryButtonClick","emailRegExpression","match","errorMessageNotValid","onlyNum","RegExp","formerLastName","errorMessageFormat","lastNamePrefix","legalName","middleName","monthsInCountry","errorMessageNumeric","nickname","otherSource","fieldGroupTestScore","passportNumber","visaNumber","fieldHoursPerWeek","fieldWeeksPerYear","fieldYears","changeEmailText","expansionPanel","employeeCount","createNewSection","programsCount","phoneCount","initialGroupLengthTS","finalGroupLengthTS","newSetTS","slice","parentDropDownTS","childDropDownTS","testScoresCount","emergencyContactsCount","addressessCount","educationCount","initialGroupLength","activityCount","finalGroupLength","newSet","parentDropDown","childDropDown","relativesCount","groupLength","sectionNumber","deleteButton","isNumeric","onAddDeleteButton","panelId","componentName","firstPrimaryPhoneField","maxAdd","fieldIdName","isSectionField","errorMessageDuplicate","errorMessagePrimary","copiedField","newField","JSON","parse","stringify","copyField","errorTexId","fieldsErrors","isFieldError","fieldSectionIndex","sectionErrorIndex","fieldErrorIndex","programsValid","testScoresValid","validPhones","isValidEmploymentSection","emergencyContactsValid","ipedsValid","addressValid","userDefinedValid","educationValid","activityValid","relativeValid","residencyValid","isNaN","isDateValid","minDate","maxDate","isDateInRange","parentId","reviewPrograms","textErrorIndex","filteredControls","groupedControls","reduce","r","a","create","messageErrorIndex","reviewTestScores","some","reviewTestScoreCompleteness","reviewPhoneGroup","reviewIpeds","reviewEmployment","reviewEmergencyContacts","reviewAddress","isCustom","reviewUserDefined","reviewEducation","reviewActivities","reviewRelatives","reviewResidency","firstFieldsErrors","fieldError","sectionError","isGroupError","groupError","allErrors","especificErrors","education","fieldDefault","collegeAttendStatus","counselorId","countryOfBirth","gender","maritalStatus","passportCountryId","primaryCitizenship","primaryLanguage","prefix","religion","secondaryCitizenship","secondaryLanguage","period","sourceId","suffix","veteranStatus","visa","visaCountryId","isInterestedInExtracurricular","isInterestedInFinancialAid","isRetired","isSeekingDegree","policy","activityTypefield","activityField","positionHeldField","numberOfHoursPerWeekField","numberOfWeeksPerYearField","numberOfYearsField","participated9Field","participated10Field","participated11Field","participated12Field","participatedPostSecondaryField","activityList","activity","activityType","hoursPerWeek","weeksPerYear","numberOfYears","participatedGrade09","participatedGrade10","participatedGrade11","participatedGrade12","participatedPostsecondary","setApplicationActivitiesValues","activityItem","setApplicationActivitiesAdditional","activities","addressList","isPrimary","setApplicationAddress","setApplicationAddressValues","line1","line2","line3","line4","stateProvince","postalCode","setApplicationAddressAdditional","educationList","enrollment","setApplicationEducation","setApplicationEducationValues","startDate","endDate","curriculumId","honorsId","degreeId","dateTimeMax","setApplicationEducationAdditional","emergencyList","emergency","phoneNumber","firstNamefield","lastNameField","phoneField","suffixField","suffixId","middleNameField","lastNamePrefixField","relationshipField","relationshipId","prefixId","emergencyContacts","employmentList","employment","positionId","employerNamefield","employerPositionField","employerStartDateField","employerEndDateField","fieldsBySection","employments","hispanicAnswer","phoneList","phone","number","phoneTypeField","phoneCountryField","phoneNumberField","primaryPhoneField","phoneItem","phones","programList","program","programId","commintmentField","commitmentId","programs","relativeList","relative","attendedInstitution","relationFirstName","relationLastName","relationType","setApplicationRelative","setApplicationRelativeValues","relationPrefix","relationSuffix","relationMiddleName","relationLastNamePrefix","setApplicationRelativeAdditional","relatives","residencyList","residency","setApplicationResidency","residencyPreference","foodPlanInterest","dormPlanInterest","dormCampus","dormBuilding","validCompleteness","keys","keyIndex","scoreA","fieldsPopulated","every","fieldsEmpty","identical","scoreB","k","fieldA","fieldB","userDefined","columnLabel","columnType","columnValue","isUploading","maxLength","userDefinedIndex","dataType","campusList","interestIndex","interestList","interest","addressTypefield","houseNumberField","houseNumber","addressLine1Field","addressLine2Field","addressLine3Field","addressLine4Field","addressCityField","stateProvinceField","postalCodeField","countyIdField","addressCountryField","degreefield","curriculumField","honorsField","startDateField","endDateField","institutionField","etsCodeField","cityField","stateField","countryField","ficeCodeField","relativeItem","residencyPreferenceField","foodPlanInterestField","dormPlanInterestField","dormCampusField","dormBuildingField","prefixField","firstNameField","attendedInstitutionField","ipedsCheckList","ipedsNestedCheckboxList","lblPageTitle","hdnAppId","remove","resolveGetComponents","hdnTransactionId","hdnTransactionStatus","hdnTransactionAmount","hdnTransactionDescription","hdnTransactionAuthorizationNumber","hdnTransactionReturnUrl","transactionId","paymentModalOpenFail","paymentModalOpenSuccess","hdnSavedApplicationToken","resolveCountries","getRowsPerPageOptions","overallCount","canSaveApplication","confirmationSaveMessage","footerSaveMessage","stepTitle","results","resolveStates","origin","resolveCreateSaveApplicationNotification","openConfirmationSavedModal","allowAttachment","resolveGetListApplicationAttachments","g","appAttachmentsViewModel","resolveGetAttachmentTotals","attachmentsTotalSize","appAttachmentTotalsViewModel","totalAttachmentSize","totalAttachmentSizeNumber","resolveGetGeneralSettings","general","ready","onLayoutReady","idMainPage","expansionPanelHeaders","hasPersonId","openNotAvailableModal","maxValue","processPaymentModal","addressSearchModal","etsSearchModal","confirmationSavedModal","emailModal","notAvailableModal","supportedFiles","supportedFilesModal","attachmentsComponent","removeAttachmentModal","signInModal","signUpModal","paymentInfoModal","onChangePageAddress","onClearAddress","onSearchAddress","onClearInstitution","onSearchInstitution","lblSaveApplication","lblSaveApplicationInstructions","lblSaveApplicationEmptyEmailIns","lblEnterEmail","lblInvalidEmal","lblEmailAddress","lblEmptyEmailAddress","lblOk","lblNotAvailableMessage","supportedFilesBody","availableFileType","fExt","lblClose","lblSupportedFilesTitle","Attachments","ConfirmationDialog","contentText","lblRemoveConfirmation","primaryActionOnClick","primaryActionText","lblAcceptConfirmation","secondaryActionOnClick","secondaryActionText","lblCancelConfirmation","lblRemoveTitle","applicationHandler","Layout","hideHeader","showCart","showNotifications","ApplicationFormViewWithLayout","withLayout","ReactDOM","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","module","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","n","getter","__esModule","d","definition","defineProperty","enumerable","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","nc","__webpack_exports__"],"sourceRoot":""}