{"version":3,"sources":["components/ExcelExporter/excel.svg","components/Table/TableHead.jsx","components/UseCancellablePromises/UseCancellablePromises.js","components/ClickPreventionOnDoubleClick/ClickPreventionOnDoubleClick.js","components/Table/TableRow.jsx","components/Table/Table.jsx","features/Application/ApplicationRowTemplate.jsx","components/CustomNumberFormat/CustomNumberFormat.jsx","components/FormInputs/TextField/TextField.jsx","components/FormInputs/DateTimeField/DateTimeField.jsx","components/FormInputs/AutocompleteDropdown/AutocompleteDropdown.jsx","constants/applicationStatus.js","components/FormInputs/Button/Button.jsx","config/axios.js","config/environment.js","components/Notification/Notification.jsx","features/common/PlanInfoSmartDropDown/PlanInfoSmartDropDown.jsx","apiCalls/getPlanInfo.js","features/common/MembershipTypeSmartDropDown/MembershipTypeSmartDropDown.jsx","apiCalls/getMembershipType.js","features/Application/ApplicationFilters.jsx","apiCalls/application/getApplicataionList.js","apiCalls/getDiscount.js","components/ExcelExporter/ExcelExporter.jsx","helperFunctions/effectiveDate.js","features/Application/ApplicationsList.jsx","apiCalls/application/getApplicationById.js","components/Stepper/Stepper.jsx","helperFunctions/checkEmailValidity.js","helperFunctions/checkCreditCardValidity.js","helperFunctions/checkCVVValidity.js","helperFunctions/checkPhoneNumber.js","components/FormWizard/FormWizard.jsx","features/common/GenderSmartDropDown/GenderSmartDropDown.jsx","apiCalls/getGender.js","features/common/RelationshipTypeSmartDropDown/RelationshipTypeSmartDropDown.jsx","apiCalls/getRelationshipType.js","features/common/ManageDependents/UpsertDependentForm.jsx","components/DialogBox/DialogBox.jsx","features/common/ManageDependents/ManageDependents.jsx","constants/usaStates.js","features/common/Address/Address.jsx","features/common/CenterSmartDropDown/CenterSmartDropDown.jsx","apiCalls/getCenter.js","features/Application/NewApplication/StepOne.jsx","features/common/DiscountSmartDropDown/DiscountSmartDropDown.jsx","features/Application/NewApplication/StepTwo.jsx","constants/autoPaymentDays.js","components/PaymentCardInput/PaymentCardInput.jsx","helperFunctions/Security.js","features/common/PaymentTypeSmartDropDown/PaymentTypeSmartDropDown.jsx","apiCalls/getPaymentType.js","components/FormInputs/CheckboxField/CheckboxField.jsx","features/Application/NewApplication/StepThree.jsx","config/colorPalette.js","features/Application/NewApplication/ConfirmationPage.jsx","features/Application/NewApplication/NewApplication.jsx","apiCalls/application/submitApplication.js","apiCalls/application/saveApplication.js","features/Commission/CommissionRowTemplate.jsx","constants/commissionTypes.js","features/Commission/CommissionFilters.jsx","apiCalls/getCommissionList.js","features/Commission/CommissionsList.jsx","features/Performance/TargetComparison.jsx","features/Performance/ProductsSold.jsx","features/Performance/Performance.jsx","apiCalls/getAgentPerformance.js","config/Routes.jsx","assets/media/companyLogo.png","components/Navigation/Navigation.jsx","assets/media/stethoscope.png","redux/actions/AccountInfoActions.js","redux/middleware/AccountInfoMiddleware.js","components/App/App.jsx","reportWebVitals.js","config/materialui.js","config/authConfig.js","redux/reducers/AccountInfoReducer.js","redux/reducers/RootReducer.js","index.js"],"names":["_g","_g2","_g3","_g4","_g5","_g6","_g7","_g8","_g9","_g10","_g11","_g12","_g13","_g14","_g15","useStyles","makeStyles","theme","label","paddingLeft","spacing","height","color","fontSize","fontWeight","lineHeight","sortIcon","width","opacity","backgroundColor","tableHead","borderRadius","boxShadow","tableCell","padding","NativeTableHead","props","headCells","order","orderBy","onRequestSort","classes","TableHead","className","TableRow","map","headCell","showColumn","TableCell","align","sortDirection","id","Grid","container","direction","justify","alignItems","style","sortable","TableSortLabel","active","onClick","property","event","IconComponent","ExpandMoreIcon","Typography","border","clip","margin","overflow","position","top","UseCancellablePromises","pendingPromises","useRef","appendPendingPromises","promise","current","removePendingPromises","filter","p","clearPendingPromises","cancel","ClickPreventionOnDoubleClick","onDoubleClick","api","time","waitForClick","isCanceled","Promise","resolve","reject","then","value","error","cancellablePromise","setTimeout","catch","errorInfo","tableRow","cursor","boxSizing","selected","allowRowClickSelection","NativeTableRow","data","columnOrder","onRowClick","handleDoubleClickRow","identifier","handleClick","handleDoubleClick","rowTemplateComponent","React","Children","children","child","cloneElement","tabIndex","join","tableContainer","webkitBorderRadius","background","webkitBoxShadow","loader","left","NativeTable","rows","rowTemplate","page","totalPages","loading","handleSingleClickRow","tableHeight","handleRowsOrderChange","refreshTable","setRefreshTable","sortOrder","sortBy","useState","setOrder","setOrderBy","sortedRows","setSortedRows","tableContainerRef","useEffect","scrollTop","stableSort","array","cmp","stabilizedThis","el","index","sort","a","b","desc","getSorting","Paper","TableContainer","onScroll","e","tableViewHeight","target","offsetHeight","tableScrollHeight","scrollHeight","scrollLocation","loadMoreRecords","ref","Table","size","stickyHeader","TableBody","num","hc","Skeleton","variant","row","ApplicationRowTemplate","column","membershipId","isActive","moment","startDate","format","CustomNumberFormat","inputRef","onChange","onlyInteger","other","getInputRef","onValueChange","values","floatValue","isNumericString","allowNegative","isAllowed","Number","isInteger","NativeTextField","required","disabled","helperText","onBlur","rowsMax","isNumericOnly","isIntegerOnly","multiline","onFocus","isPhoneNumber","maxLength","handleChange","handleBlur","TextField","fullWidth","autoComplete","InputProps","inputComponent","inputProps","InputLabelProps","NativeDateTimeField","showTime","disablePast","disableFuture","localeData","localeFormat","longDateFormat","selectedDate","setSelectedDate","isValid","handleDateChange","date","utils","MomentUtils","libInstance","locale","inputVariant","toDate","KeyboardButtonProps","chipsFont","listboxScrollBar","NativeAutocompleteDropdown","options","multiple","onInputChange","valueIndexes","renderOption","optionLabelKey","optionValueKey","open","setOpen","selectedOption","setSelectedOption","labelKey","setLabelKey","valueKey","setValueKey","opt","length","vI","v","find","o","otherProps","Autocomplete","onOpen","onClose","val","inputVal","getOptionLabel","option","loadingText","renderInput","params","endAdornment","CircularProgress","popupIcon","listbox","ChipProps","root","applicationStatus","NativeButton","type","upDownButton","IconButton","edge","ExpandLess","ExpandMoreRounded","addButton","Button","marginTop","AddCircle","editButton","Edit","deleteButton","Delete","defaultButton","getAxiosInstance","authToken","axiosInstance","axios","create","headers","axiosRetry","retries","retryDelay","exponentialDelay","prod","functionsURL","azureADRedirectURI","agentGroupId","environment","Notification","message","Snackbar","autoHideDuration","elevation","severity","DEFAULT_NOTIFICATION","connect","state","accountInfo","membershipTypeId","blankAllowed","setOptions","setLoading","newValue","setNewValue","notification","setNotification","setAuthToken","jwtIdToken","source","CancelToken","queryParam","get","cancelToken","token","response","status","getPlanInfo","d","planDesc","planInfoId","planTypeId","fee","monthsPay","monthlyPayment","stripeProductId","isCancel","console","log","AutocompleteDropdown","findIndex","getMembershipType","membershipTypeDesc","DEFAULT_FORM_VALUES","applicationNumber","applicationDate","memberName","planType","membershipType","heading","typography","pxToRem","flexBasis","flexShrink","secondaryHeading","palette","text","secondary","ApplicationFilters","expanded","setExpanded","formValues","setFormValues","filterCount","setFilterCount","onFilterChange","handleFormChange","key","prevState","Accordion","AccordionSummary","expandIcon","AccordionDetails","item","xs","DateTimeField","count","field","getApplicationList","pageSize","filters","post","offset","take","getDiscount","_extends","Object","assign","i","arguments","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgExcel","_ref","svgRef","title","titleId","xmlns","xmlnsXlink","x","y","viewBox","enableBackground","xmlSpace","fill","ForwardRef","ExcelFile","ReactExport","ExcelSheet","ExcelColumn","DowloadToExcelButton","fileName","columns","sheetName","sheet","file","filename","element","SvgIcon","name","c","calculateEffectiveDate","clone","startOf","add","DEFAULT_APPLICATION_LIST_HEADCELLS","refreshList","setRefreshList","setData","pageNumber","setPageNumber","setTotalPages","filterValues","setFilerValues","totalRecords","setTotalRecords","debounceSetPageNumber","useCallback","debounce","history","useHistory","account","userName","agentCode","err","fetchApplicationList","aT","absolutePages","Math","floor","prevData","display","justifyContent","ExcelExporter","newFilterValues","prevValues","undefined","applicationId","prevPageNumber","getApplicationById","app","dependents","members","relationshipTypeId","push","firstName","lastName","dateOfBirth","gender","genderId","phone","phoneNumber","memberId","relationship","relationshipType","primaryMember","m","formData","address","addressLine1","addressLine2","city","addressCity","addressState","zipCode","addressZip","toString","primaryPhone","primaryPhoneNumber","emergencyPhone","emergencyPhoneNumber","email","eMail","center","primaryCenterId","planInfo","oneTimeFee","monthlyFee","totalPayment","toFixed","membershipEffectiveDate","discountCode","discount","discountOptions","total","isPercentage","discountedAmount","pathname","textAlign","stepLabel","NativeStepper","steps","activeStep","onStepClick","Stepper","step","Step","StepLabel","StepIconProps","completed","minHeight","checkEmailValidity","test","checkCreditCardValidity","creditCardNumber","checkCVVValidity","cardNumber","cvv","validPhoneNumber","number","chars","isNaN","slice","appBar","bottom","stepContainer","FormWizard","onSubmit","handleNextClick","allowAnotherSubmit","resetAllowAnotherSubmit","errors","setErrors","setActiveStep","clonedComponents","setClonedComponents","disableSubmit","setDisableSubmit","submitLoading","setSubmitLoading","nextLoading","setNextLoading","noWayBack","setNoWayBack","newErrors","activeStepData","Array","isArray","trim","arr","component","stepNum","hasError","getErrorMessage","handleFieldChange","onRequiredChange","handleRequiredChange","stepIndex","hidden","AppBar","marginRight","prevActiveStep","result","forEach","it","mem","memIndex","Date","handleSubmit","getGender","genderDesc","getRelationshipType","newD","relationshipTypeDesc","UpsertDependentForm","isFormValid","setIsFormValid","isUpdateMode","setIsUpdateMode","upsertDependent","dependent","clearable","isSameOrBefore","dialogContent","maxHeight","overflowY","paper","closeBtn","right","NativeDialogBox","openDialog","onCloseBtnClicked","noCloseBtn","dialogTemplate","Dialog","maxWidth","Close","DialogContent","TABLE_HEADER","marginLeft","ManageDependents","showUpsertDependentDialog","setShowUpsertDependentDialog","updateDependentFormValues","setUpdateDependentFormValues","updateDependentIndex","setUpdateDependentIndex","closeAndReset","DialogBox","newDependent","table","header","dependentIndex","scope","DeleteForever","usaStates","Address","onAddressChange","showErrorMessage","lodash","isEqual","isValidAddress","prevFormValues","getCenter","code","StepOne","middleName","newDependents","setDiscountOptions","getTotal","selectedDiscount","selectedPlan","priority","memType","membershipPriority","autoPaymentDays","PaymentCardInput","cardDetails","cardExpiryDate","dateInfo","isSameOrAfter","views","cardCVVNumber","isElevatedPermissions","groups","idToken","includes","hasElevatedPermissions","validOptions","setValidOptions","withHighPrivileges","setWithHighPrivileges","getPaymentType","hp","isBackOfficeOnly","paymentTypeDesc","paymentTypeId","loadOptions","CheckboxField","FormControlLabel","control","Checkbox","checked","lineItem","textBox","textBoxHolder","StepThree","nameOnTheCard","enableAutomaticPayments","dayOfAutomaticPayment","paymentType","comments","isRequired","List","ListItem","ListItemText","Divider","createPalette","colorHexValue","replace","colorIntValue","parseInt","red","green","blue","opacity25","opacity50","opacity75","opacity100","COLOR_PALETTE","orange","ConfirmationPage","window","location","reload","confirmationData","setConfirmationData","setAllowAnotherSubmit","useLocation","DEFAULT_STEPS","setSteps","prevSteps","prevStep","newData","preparePayload","form","payload","dateOfAutomaticPayment","automaticPaymentDate","automaticCharge","formWithPaymentDetails","initialAmount","paymentMethod","cardOwnerName","cardExpirationMonth","cardExpirationYear","cvcCode","application","submitApplication","success","saveApplication","CommissionRowTemplate","isProcessed","displayType","fixedDecimalScale","decimalScale","thousandSeparator","prefix","commissionTypes","commissionType","filterStartDate","filterEndDate","CommissionFilters","getCommissionList","DEFAULT_COMMISSION_LIST_HEADCELLS","setFilterValues","fetchCommissionList","TargetComparison","barChart","max","valueField","argumentField","styles","flexDirection","Item","withStyles","restProps","Label","ProductsSold","pieChart","itemComponent","labelComponent","DEFAULT_DATA","actual","salesTarget","distribution","getAgentPerformance","year","month","routes","linkName","path","showInNavigation","icon","Home","PersonAdd","ListAlt","MonetizationOn","TrendingUp","ExitToApp","drawerWidth","zIndex","drawer","transition","transitions","easing","sharp","duration","leavingScreen","appBarShift","enteringScreen","menuButton","hide","whiteSpace","drawerOpen","drawerClose","overflowX","breakpoints","up","toolbar","mixins","content","link","textDecoration","agentInfo","float","verticalAlign","padded","paddingTop","useTheme","logout","CssBaseline","clsx","Toolbar","Menu","noWrap","src","companyLogo","alt","Drawer","ChevronRight","ChevronLeft","route","to","button","ListItemIcon","primary","actionTypes","setAccountInfo","dispatch","initAccountInfo","ownProps","exact","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","WHITE","createMuiTheme","fontFamily","common","black","white","default","light","main","dark","contrastText","hint","overrides","MuiInputLabel","outlined","transform","MuiOutlinedInput","input","MuiFormHelperText","marginDense","MuiFormLabel","clientId","config","auth","authority","postLogoutRedirectUri","redirectUri","validateAuthority","navigateToLoginRequestUrl","cache","cacheLocation","storeAuthStateInCookie","authenticationParameters","scopes","loginType","LoginType","Redirect","tokenRefreshUri","origin","authProvider","MsalAuthProvider","AccountInfoReducer","action","RootReducer","combineReducers","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPONSE","compose","store","createStore","applyMiddleware","thunk","localStorage","clear","cookies","document","cookie","split","eqPos","substr","deleteAllCookies","ReactDOM","render","ThemeProvider","provider","forceLogin","login","authenticationState","AuthenticationState","Authenticated","Unauthenticated","InProgress","getElementById"],"mappings":"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","file":"static/js/main.cb037007.chunk.js","sourcesContent":["var _g, _g2, _g3, _g4, _g5, _g6, _g7, _g8, _g9, _g10, _g11, _g12, _g13, _g14, _g15;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgExcel(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 512 512\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#ECEFF1\"\n },\n d: \"M496,432.011H272c-8.832,0-16-7.168-16-16s0-311.168,0-320s7.168-16,16-16h224 c8.832,0,16,7.168,16,16v320C512,424.843,504.832,432.011,496,432.011z\"\n }), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#388E3C\"\n },\n d: \"M336,176.011h-64c-8.832,0-16-7.168-16-16s7.168-16,16-16h64c8.832,0,16,7.168,16,16 S344.832,176.011,336,176.011z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#388E3C\"\n },\n d: \"M336,240.011h-64c-8.832,0-16-7.168-16-16s7.168-16,16-16h64c8.832,0,16,7.168,16,16 S344.832,240.011,336,240.011z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#388E3C\"\n },\n d: \"M336,304.011h-64c-8.832,0-16-7.168-16-16s7.168-16,16-16h64c8.832,0,16,7.168,16,16 S344.832,304.011,336,304.011z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#388E3C\"\n },\n d: \"M336,368.011h-64c-8.832,0-16-7.168-16-16s7.168-16,16-16h64c8.832,0,16,7.168,16,16 S344.832,368.011,336,368.011z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#388E3C\"\n },\n d: \"M432,176.011h-32c-8.832,0-16-7.168-16-16s7.168-16,16-16h32c8.832,0,16,7.168,16,16 S440.832,176.011,432,176.011z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#388E3C\"\n },\n d: \"M432,240.011h-32c-8.832,0-16-7.168-16-16s7.168-16,16-16h32c8.832,0,16,7.168,16,16 S440.832,240.011,432,240.011z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#388E3C\"\n },\n d: \"M432,304.011h-32c-8.832,0-16-7.168-16-16s7.168-16,16-16h32c8.832,0,16,7.168,16,16 S440.832,304.011,432,304.011z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#388E3C\"\n },\n d: \"M432,368.011h-32c-8.832,0-16-7.168-16-16s7.168-16,16-16h32c8.832,0,16,7.168,16,16 S440.832,368.011,432,368.011z\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#2E7D32\"\n },\n d: \"M282.208,19.691c-3.648-3.04-8.544-4.352-13.152-3.392l-256,48C5.472,65.707,0,72.299,0,80.011v352 c0,7.68,5.472,14.304,13.056,15.712l256,48c0.96,0.192,1.952,0.288,2.944,0.288c3.712,0,7.328-1.28,10.208-3.68 c3.68-3.04,5.792-7.584,5.792-12.32v-448C288,27.243,285.888,22.731,282.208,19.691z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"#FAFAFA\"\n },\n d: \"M220.032,309.483l-50.592-57.824l51.168-65.792c5.44-6.976,4.16-17.024-2.784-22.464 c-6.944-5.44-16.992-4.16-22.464,2.784l-47.392,60.928l-39.936-45.632c-5.856-6.72-15.968-7.328-22.56-1.504 c-6.656,5.824-7.328,15.936-1.504,22.56l44,50.304L83.36,310.187c-5.44,6.976-4.16,17.024,2.784,22.464 c2.944,2.272,6.432,3.36,9.856,3.36c4.768,0,9.472-2.112,12.64-6.176l40.8-52.48l46.528,53.152 c3.168,3.648,7.584,5.504,12.032,5.504c3.744,0,7.488-1.312,10.528-3.968C225.184,326.219,225.856,316.107,220.032,309.483z\"\n }), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null)), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", null)), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", null)), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", null)), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", null)), _g6 || (_g6 = /*#__PURE__*/React.createElement(\"g\", null)), _g7 || (_g7 = /*#__PURE__*/React.createElement(\"g\", null)), _g8 || (_g8 = /*#__PURE__*/React.createElement(\"g\", null)), _g9 || (_g9 = /*#__PURE__*/React.createElement(\"g\", null)), _g10 || (_g10 = /*#__PURE__*/React.createElement(\"g\", null)), _g11 || (_g11 = /*#__PURE__*/React.createElement(\"g\", null)), _g12 || (_g12 = /*#__PURE__*/React.createElement(\"g\", null)), _g13 || (_g13 = /*#__PURE__*/React.createElement(\"g\", null)), _g14 || (_g14 = /*#__PURE__*/React.createElement(\"g\", null)), _g15 || (_g15 = /*#__PURE__*/React.createElement(\"g\", null)));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgExcel);\nexport default __webpack_public_path__ + \"static/media/excel.d73b2655.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n TableCell,\n TableRow,\n TableHead,\n TableSortLabel,\n Typography,\n makeStyles,\n Grid\n} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\n\nconst useStyles = makeStyles(theme => ({\n label: {\n paddingLeft: theme.spacing(1),\n height: '16px',\n color: '#0C2340',\n fontSize: '13px',\n fontWeight: '600',\n lineHeight: '16px'\n },\n sortIcon: {\n //paddingLeft: theme.spacing(1),\n height: '20px',\n width: '20px',\n opacity: '0.5',\n backgroundColor: '#FFFFFF',\n color: '#0C2340'\n },\n tableHead: {\n height: '51px',\n borderRadius: '5px 5px 0 0',\n backgroundColor: '#EBEEF1',\n boxShadow: '0 0 15px 0 rgba(0,0,0,0.1)'\n },\n tableCell: {\n padding: '14px'\n }\n\n}));\n\nconst NativeTableHead = (props) => {\n\n const { headCells, order, orderBy, onRequestSort} = props;\n\n const classes = useStyles();\n\n const createSortHandler = property => event => {\n onRequestSort(event, property);\n };\n\n return (\n \n \n {\n headCells.map(headCell => {\n if (headCell.showColumn) {\n return (\n \n \n {\n headCell.sortable ?\n \n { headCell.label }\n {\n orderBy === headCell.id ? \n (\n \n {order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n \n ) : null\n }\n : \n { headCell.label }\n\n }\n \n \n \n )\n }\n return null;\n })\n }\n \n \n );\n}\n\nNativeTableHead.propTypes = {\n headCells: PropTypes.array.isRequired,\n};\n\nexport default NativeTableHead;\n","/*\nRefer using hooks solution from - \nhttps://medium.com/trabe/prevent-click-events-on-double-click-with-react-with-and-without-hooks-6bf3697abc40\n\nto prevent click vents on double click\n*/\nimport {useRef} from 'react';\n\nconst UseCancellablePromises = () => {\n const pendingPromises = useRef([]);\n\n const appendPendingPromises = promise => pendingPromises.current = [...pendingPromises.current, promise];\n\n const removePendingPromises = promise => pendingPromises.current = pendingPromises.current.filter(p => p !== promise);\n\n const clearPendingPromises = () => pendingPromises.current.map(p => p.cancel());\n\n const api = {\n appendPendingPromises,\n removePendingPromises,\n clearPendingPromises,\n }\n\n return api;\n}\n\nexport default UseCancellablePromises;","import UseCancellablePromises from \"../UseCancellablePromises/UseCancellablePromises\";\n\nconst cancellablePromise = promise => {\n let isCanceled = false;\n const wrappedPromise = new Promise((resolve, reject) => {\n promise.then(\n value => (isCanceled ? reject({isCanceled, value}) : resolve(value)),\n error => reject({isCanceled, error})\n )\n })\n\n return {\n promise: wrappedPromise,\n cancel: () => (isCanceled = true)\n }\n};\n\nconst delay = time => new Promise(resolve => setTimeout(resolve, time));\n\nconst ClickPreventionOnDoubleClick = (onClick, onDoubleClick) => {\n const api = UseCancellablePromises();\n\n const handleClick = () => {\n api.clearPendingPromises();\n const waitForClick = cancellablePromise(delay(300));\n api.appendPendingPromises(waitForClick);\n\n return waitForClick.promise\n .then(() => {\n api.removePendingPromises(waitForClick);\n onClick();\n })\n .catch(errorInfo => {\n api.removePendingPromises(waitForClick);\n if(!errorInfo.isCanceled) {\n throw errorInfo.error;\n }\n });\n }\n\n const handleDoubleClick = () => {\n api.clearPendingPromises();\n onDoubleClick();\n }\n\n return [handleClick, handleDoubleClick];\n}\n\nexport default ClickPreventionOnDoubleClick;","import React from 'react';\nimport {TableRow} from '@material-ui/core';\nimport PropTypes from \"prop-types\";\nimport {makeStyles} from '@material-ui/core/styles';\nimport ClickPreventionOnDoubleClick from \"../ClickPreventionOnDoubleClick/ClickPreventionOnDoubleClick\";\n\nconst useStyles = makeStyles(theme => ({\n tableRow: {\n '&:hover': {\n cursor: 'pointer',\n backgroundColor: 'rgba(12,35,64,0.1)',\n margin: '20px 50px',\n boxShadow: 'inset 0px 0px 0px 5px white',\n borderRadius: '6px',\n boxSizing: 'border-box',\n }\n },\n selected: {\n \"&:focus\": {\n backgroundColor: props => props.allowRowClickSelection && 'rgba(12,35,64,0.1)'\n }\n }\n}));\n\nconst NativeTableRow = (props) => {\n const { data, columnOrder, onRowClick, handleDoubleClickRow, identifier } = props;\n\n /*\n In order to prevent firing click event on double clicking, we have created ClickPreventionOnDoubleClick component\n Use event handlers returned by this component to handle single and double click.\n */\n const [handleClick, handleDoubleClick] = ClickPreventionOnDoubleClick(() => {\n onRowClick(data[identifier]);\n }, () => {\n /*\n handleDoubleClickRow is an optional prop in Table component. \n In case user hasn't passed this prop, we execute onRowClick function prop which is required in Table component.\n */\n typeof handleDoubleClickRow === 'function' ? handleDoubleClickRow(data[identifier]) : onRowClick(data[identifier]); \n })\n\n const classes = useStyles(props);\n const rowTemplateComponent = React.Children.map(props.children, child => {\n return React.cloneElement(child, {\n data : data,\n columnOrder: columnOrder,\n ...child.props\n });\n });\n\n return \n {rowTemplateComponent}\n ;\n}\n\nNativeTableRow.propTypes = {\n data: PropTypes.object.isRequired,\n children: PropTypes.element.isRequired,\n columnOrder: PropTypes.array,\n onRowClick: PropTypes.func\n}\n\nexport default NativeTableRow;\n","import React, {useEffect, useRef, useState} from 'react';\nimport NativeTableHead from './TableHead';\nimport NativeTableRow from './TableRow';\nimport PropTypes from \"prop-types\";\nimport {makeStyles, Paper, Table, TableBody, TableCell, TableContainer, TableRow} from \"@material-ui/core\";\nimport Skeleton from '@material-ui/lab/Skeleton';\n\nconst useStyles = makeStyles({\n tableContainer: {\n '&::-webkit-scrollbar': {\n width: '4px',\n height: '4px'\n },\n '&::-webkit-scrollbar-track': {\n webkitBorderRadius: '2px',\n borderRadius: '2px'\n },\n '&::-webkit-scrollbar-thumb': {\n opacity: 0.3,\n webkitBorderRadius: '2px',\n borderRadius: '2px',\n background: '#00000042',\n webkitBoxShadow: 'inset 0 0 6px rgba(0,0,0,0.5)'\n }\n },\n loader: {\n position: 'absolute',\n top: '50%',\n left: '50%'\n }\n});\n\nconst NativeTable = props => {\n const classes = useStyles(props);\n\n const {headCells, rows, rowTemplate, page, totalPages, loading, identifier, \n handleSingleClickRow, tableHeight, handleDoubleClickRow, handleRowsOrderChange, \n refreshTable, setRefreshTable, sortOrder, sortBy} = props;\n\n const [order, setOrder] = useState('asc');\n const [orderBy, setOrderBy] = useState(headCells[0].id);\n const [sortedRows, setSortedRows] = useState([]);\n\n const tableContainerRef = useRef(null);\n\n useEffect(() => {\n if(sortOrder) setOrder(sortOrder)\n }, [sortOrder])\n\n useEffect(() => {\n if(sortBy) setOrderBy(sortBy)\n }, [sortBy])\n\n useEffect(() => {\n if(page === 1){\n tableContainerRef.current.scrollTop = 0;\n }\n }, [page]);\n\n const nativeTableScrolled = (e) => {\n // If the user has scrolled within 200px of the bottom, add more data\n const buffer = 200;\n const tableViewHeight = e.target.offsetHeight // viewport: ~500px\n const tableScrollHeight = e.target.scrollHeight // length of all table\n const scrollLocation = e.target.scrollTop; // how far user scrolled\n let limit = tableScrollHeight - tableViewHeight - buffer;\n\n if (!loading && scrollLocation > limit) {\n if (page < totalPages) {\n props.loadMoreRecords(e);\n }\n }\n }\n\n const handleRequestSort = (event, property) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n }; \n \n const stableSort = (array, cmp) => {\n const stabilizedThis = array.map((el, index) => [el, index]);\n stabilizedThis.sort((a, b) => {\n const order = cmp(a[0], b[0]);\n if (order !== 0) return order;\n return a[1] - b[1];\n });\n return stabilizedThis.map(el => el[0]);\n }\n\n const desc = (a, b, orderBy) => {\n if (b[orderBy] < a[orderBy]) {\n return -1;\n }\n if (b[orderBy] > a[orderBy]) {\n return 1;\n }\n return 0;\n }\n\n const getSorting = (order, orderBy) => {\n return order === 'desc' ? (a, b) => desc(a, b, orderBy) : (a, b) => -desc(a, b, orderBy);\n }\n\n useEffect(() => {\n if(refreshTable) {\n setSortedRows(stableSort(rows, getSorting(order, orderBy)))\n }\n }, [rows, refreshTable])\n\n //Any time sort order changes, sort the rows and return sorted rows back to parent component\n useEffect(() => {\n setSortedRows(stableSort(rows, getSorting(order, orderBy)))\n }, [order, orderBy])\n\n useEffect(() => {\n handleRowsOrderChange(sortedRows)\n setRefreshTable(false)\n }, [sortedRows])\n\n return \n\n \n \n {\n headCells ?\n \n :\n null\n }\n {\n loading ?\n \n {\n [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15].map(num => {\n return \n {\n headCells.map(hc => {\n if(hc.showColumn) {\n return \n \n \n }\n return null\n })\n }\n \n })\n }\n :\n \n {\n sortedRows\n .map((row, index) => {\n return \n {rowTemplate}\n \n })\n }\n \n }\n \n \n \n}\n\nNativeTable.propTypes = {\n /*\n headCells prop is used to render table head and it must be an array of object. Object must be in following format - \n [\n {id: 'taskNumber', label: 'Task Number', showColumn: true, filtertable: false, keywordBasedSearchFilter: false, sortable: 'true'},\n {id: 'description', label: 'Description', showColumn: true, filtertable: false, keywordBasedSearchFilter: false, sortable: 'true'},\n ]\n */\n headCells: PropTypes.array.isRequired,\n /*\n rows prop is used to render table body and it must be an array of object. \n Table body works with object in any format provided that rowTemplate component handles it in right way.\n Table body loops through rows and forwards each row object to rowTemplate as it is.\n If now rows, pass an empty array.\n */\n rows: PropTypes.array.isRequired,\n /*\n rowTemplate is a JSX component that renders each row in table body.\n */\n rowTemplate: PropTypes.element.isRequired,\n /*\n page and totalPages help with the lazy loading.\n Developer can decide how many rows he wants to render in first page i.e. first render\n On scrolling to bottom next page will be rendered and page will be set to next page number\n This happens until we react last page i.e. page === totalPages\n */\n page: PropTypes.number.isRequired,\n totalPages: PropTypes.number.isRequired,\n //loading prop displays/hides loading spinner\n loading: PropTypes.bool.isRequired,\n /*\n loadMoreRecords gets called if scroll reaches bottom and there are more pages left to render\n */\n loadMoreRecords: PropTypes.func,\n loadMoreRecords: (props, propName, componentName) => {\n if((props['page'] < props['totalPages']) && !props[propName]) {\n return new Error(`Prop ${propName} is required if totalPages > page i.e. there are more records to render in ${componentName}`);\n } \n },\n /*\n identifier prop should be an id of column that uniquely identifies the row\n On row click or multiple row selection, row[column.id] would be returned\n This way parent components knows which row was clicked on or selected.\n For e.g. taskNumber, description, clientGroup etc\n */\n identifier: PropTypes.string.isRequired,\n /*\n handleRowSelection prop should be able to receive one parameter. \n This paramenter can be an array of identifiers of selected rows or single identifier of selected row\n depending on parent component allowing/disallowing multiple rows selection\n */\n handleSingleClickRow: PropTypes.func.isRequired,\n /*\n tableHeight prop is optional and takes a number to set table height in terms of viewport height.\n */\n tableHeight: PropTypes.number,\n /*\n handleDoubleClickRow prop should be able to receive one parameter. \n This table returns identifier of double clicked row\n */\n handleDoubleClickRow: PropTypes.func,\n /*\n handleRowsOrderChange function prop should be able to receive one param - sortedRows\n This param is an sorted array of row objects. This sort order will be dictated by user\n This helps to keep rows order in sync for Table and NextPrevDialog\n */\n handleRowsOrderChange: PropTypes.func.isRequired,\n /*\n In order to break the endless loop that results due to two way binding of rows between parent component and Table component we use \n boolean prop refreshTable\n Anytime rows data changes in parent component, it is set to true\n */\n refreshTable: PropTypes.bool.isRequired,\n /*\n If rows data changes in Table component, refreshTable boolean flag in parent component should be set to false\n This prop function allows to do that.\n */\n setRefreshTable: PropTypes.func.isRequired,\n /*\n sortOrder and sortBy props can be used to set default sorting\n sortBy should have id of one of the columns passed in prop headCells array\n */\n sortOrder: PropTypes.oneOf(['asc', 'desc']),\n soryBy: PropTypes.string\n}\n\nexport default NativeTable;\n","import React from 'react';\nimport {TableCell, Typography} from '@material-ui/core';\nimport moment from 'moment'\n\nconst ApplicationRowTemplate = props => {\n const {data, columnOrder} = props;\n\n return columnOrder.map(column => {\n if(column.showColumn) {\n if(column.id === 'status') {\n return {data.membershipId > 0 ? (data.isActive ? \"Processed\" : \"Inactive\") : \"Draft\"}\n }\n if(column.id === 'startDate'){\n return {moment(data.startDate).format('MM/DD/YYYY')}\n }\n \n return {(column.id === 'membershipId' && data[column.id] <= 0) ? '': data[column.id]}\n }\n return null;\n })\n}\n\nexport default ApplicationRowTemplate;","import React from 'react';\nimport NumberFormat from 'react-number-format';\nimport PropTypes from \"prop-types\";\n\nconst CustomNumberFormat = props => {\n const {inputRef, onChange, onlyInteger, ...other} = props;\n\n return (\n {\n onChange({target: {value: values.floatValue}});\n }}\n isNumericString\n allowNegative={false}\n isAllowed={values => {\n if(typeof onlyInteger === 'boolean' && onlyInteger && values.floatValue && !Number.isInteger(values.floatValue)) return false;\n return true;\n }}\n />\n );\n}\n\nCustomNumberFormat.propTypes = {\n inputRef: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default CustomNumberFormat;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {TextField} from \"@material-ui/core\";\nimport CustomNumberFormat from \"../../CustomNumberFormat/CustomNumberFormat\";\n\nconst NativeTextField = props => {\n const {label, value, onChange, required, disabled, helperText, onBlur, rowsMax, error, isNumericOnly, isIntegerOnly, multiline, rows, onFocus, isPhoneNumber, maxLength} = props;\n\n const handleChange = (value) => {\n if(onChange) onChange(value || '');\n }\n\n const handleBlur = (value) => {\n if(onBlur) onBlur(value);\n }\n\n return handleChange(event.target.value)}\n onBlur={(event) => handleBlur(event.target.value)}\n onFocus={onFocus}\n InputLabelProps={{\n margin: 'dense'\n }}\n autoComplete=\"new-password\"\n />\n};\n\nNativeTextField.propTypes = {\n label: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([\n PropTypes.string.isRequired,\n PropTypes.number.isRequired,\n ]),\n onChange: PropTypes.func,\n disabled:PropTypes.bool,\n required: PropTypes.bool,\n error: PropTypes.bool,\n helperText: PropTypes.string,\n isNumericOnly: PropTypes.bool,\n isIntegerOnly: PropTypes.bool,\n multiline: PropTypes.bool,\n rows: PropTypes.number,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n isPhoneNumber: PropTypes.bool\n};\n\nexport default NativeTextField;\n","import React, {useEffect, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {KeyboardDatePicker, KeyboardDateTimePicker, MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport MomentUtils from '@date-io/moment';\nimport moment from 'moment';\n\n\nconst NativeDateTimeField = props => {\n const {value, onChange, label, fullWidth, helperText, required, error, disabled, \n showTime, disablePast, disableFuture} = props;\n\n let localeData = moment.localeData();\n let localeFormat = showTime ? localeData.longDateFormat('lll') : localeData.longDateFormat('ll');\n\n const [selectedDate, setSelectedDate] = useState(null);\n\n useEffect(() => {\n if(selectedDate !== value){\n if(value && moment(value).isValid()){\n // const momentValue = moment(value);\n // if(momentValue.hours() === 0){\n // momentValue.hours(8);\n // }\n // setSelectedDate(value);\n setSelectedDate(value)\n }else{\n setSelectedDate(null);\n }\n }\n }, [value]);\n\n const handleDateChange = (date) => {\n onChange(date);\n };\n\n return (\n \n {\n showTime ?\n handleDateChange(date && moment(date).isValid() ? date.toDate() : null)}\n size='small'\n KeyboardButtonProps={{\n 'aria-label': 'change date',\n }}\n disabled={disabled}\n disablePast={disablePast}\n disableFuture={disableFuture}\n InputLabelProps={{\n margin: 'dense'\n }}\n />\n :\n handleDateChange(date && moment(date).isValid() ? moment(date).format('YYYY-MM-DD') : null)}\n size='small'\n KeyboardButtonProps={{\n 'aria-label': 'change date',\n }}\n disabled={disabled}\n disablePast={disablePast}\n disableFuture={disableFuture}\n InputLabelProps={{\n margin: 'dense'\n }}\n />\n }\n \n );\n }\n;\n\nNativeDateTimeField.propTypes = {\n label: PropTypes.string.isRequired,\n value: PropTypes.any,\n onChange: PropTypes.func,\n required: PropTypes.bool,\n error: PropTypes.bool,\n helperText: PropTypes.string,\n fullWidth: PropTypes.bool,\n disabled: PropTypes.bool,\n showTime: PropTypes.bool,\n disableFuture: PropTypes.bool,\n disablePast: PropTypes.bool\n};\n\nexport default NativeDateTimeField;\n","import React, { useState, useEffect, Fragment } from 'react';\nimport { makeStyles, TextField, CircularProgress } from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport { ExpandMore } from '@material-ui/icons';\nimport PropTypes from 'prop-types';\n\nconst useStyles = makeStyles({\n chipsFont: {\n color: 'black'\n },\n listboxScrollBar: {\n '&::-webkit-scrollbar': {\n width: '4px',\n height: '4px'\n },\n '&::-webkit-scrollbar-track': {\n webkitBorderRadius: '2px',\n borderRadius: '2px'\n },\n '&::-webkit-scrollbar-thumb': {\n opacity: 0.3,\n webkitBorderRadius: '2px',\n borderRadius: '2px',\n background: '#00000042',\n webkitBoxShadow: 'inset 0 0 6px rgba(0,0,0,0.5)'\n }\n }\n})\n\nconst NativeAutocompleteDropdown = props => {\n const { label, options, multiple, onChange, value, onInputChange, loading, valueIndexes,\n disabled, renderOption, required, error, helperText, optionLabelKey, optionValueKey } = props;\n const [open, setOpen] = useState(false);\n const [selectedOption, setSelectedOption] = useState(multiple ? [] : (valueIndexes ? {} : \"\"));\n const [labelKey, setLabelKey] = useState(\"label\");\n const [valueKey, setValueKey] = useState(\"value\");\n const classes = useStyles(props);\n\n useEffect(() => {\n if (optionLabelKey) setLabelKey(optionLabelKey);\n }, [optionLabelKey])\n\n useEffect(() => {\n if (optionValueKey) setValueKey(optionValueKey);\n }, [optionValueKey])\n\n useEffect(() => {\n let opt;\n if (multiple) {\n opt = [];\n if (valueIndexes && valueIndexes.length) {\n opt = valueIndexes.map(vI => {\n return options[vI];\n })\n }\n else if (!valueIndexes) {\n opt = value.map(v => options.find(o => o[valueKey] === v));\n }\n }\n else {\n opt = {};\n if (valueIndexes && valueIndexes.length) {\n opt = options[valueIndexes[0]];\n }\n else if (!valueIndexes) {\n opt = options.find(o => o[valueKey] === value);\n if (!opt) opt = \"\";\n }\n }\n setSelectedOption(opt);\n }, [value, options, multiple, valueKey, valueIndexes])\n\n const otherProps = {};\n\n if (typeof renderOption === \"function\") {\n otherProps.renderOption = (opt) => renderOption(opt);\n }\n\n return setOpen(true)}\n onClose={() => setOpen(false)}\n onChange={(event, val) => {\n if (multiple) {\n onChange(val.map(v => v[valueKey]))\n }\n else {\n onChange(val ? val[valueKey] : (valueIndexes ? null : \"\"))\n }\n setSelectedOption(val)\n }}\n onInputChange={(event, inputVal) => {\n if (onInputChange) {\n onInputChange(inputVal)\n }\n }}\n getOptionLabel={option => {\n return option && option[labelKey] ? option[labelKey] : \"\"\n }}\n renderOption={option => option.label}\n options={options}\n loading={loading}\n loadingText={`Loading ${label} options`}\n multiple={multiple}\n renderInput={(params) => {\n return (\n \n {loading ? : null}\n {params.InputProps.endAdornment}\n \n )\n }}\n InputLabelProps={{\n margin: 'dense'\n }}\n inputProps={{ ...params.inputProps, autoComplete: 'new-password' }}\n required={required}\n error={error}\n helperText={helperText}\n />\n )\n }}\n popupIcon={}\n classes={{ listbox: classes.listboxScrollBar }}\n ChipProps={{\n classes: { root: classes.chipsFont }\n }}\n value={ value ? (options.find(o => {\n if(selectedOption && selectedOption.value) return o.value === selectedOption.value\n return false;\n }) || value) : null }\n disabled={disabled}\n size=\"small\"\n {...otherProps}\n style={{ margin: '-8px 0px' }}\n /> \n}\n\nNativeAutocompleteDropdown.propTypes = {\n label: PropTypes.string.isRequired,\n options: PropTypes.array.isRequired,\n options: (props, propName, componentName) => {\n const keys = [props['optionLabelKey'] || \"label\", props['optionValueKey'] || \"value\"].sort();\n let error = false;\n props[propName].some(opt => {\n if (JSON.stringify(Object.keys(opt).sort()) !== JSON.stringify(keys)) {\n error = true;\n return error === true; //break the loop\n }\n })\n if (error) return new Error(`Array prop ${propName} must have item objects in correct shape in ${componentName}`);\n },\n options: (props, propName, componentName) => {\n let error = false;\n props[propName].some(opt => {\n if (typeof opt.value !== \"string\") {\n if (!props['valueIndexes']) {\n error = true;\n return error === true;\n }\n }\n });\n if (error) return new Error(`If value of option item in prop array ${propName} (for e.g. options[0]['valueKey']) is not of string type, \n prop array valueIndexes is required`);\n },\n /*\n if prop multiple = true,\n onChange function prop should be able to receive one array param - value\n value will be an array of selected options values\n else \n onChange function prop should be able to receive one string param - value\n value will be selected option's value\n */\n onChange: PropTypes.func.isRequired,\n /*\n if prop multiple = true,\n value prop must be an array\n else \n value prop must be a string\n */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.array,\n PropTypes.object\n ]).isRequired,\n value: (props, propName, componentName) => {\n if (props['multiple'] && !Array.isArray(props[propName])) {\n return new Error(`Required prop ${propName} must be an array if prop multiple is true in ${componentName}`);\n }\n if (!props['multiple']) {\n if (props['valueIndexes'] && typeof props[propName] !== \"object\") {\n return new Error(`Required prop ${propName} must be an object if prop multiple is false and option item in prop options array \n (i.e. options[0]['valueKey']) is of type object in ${componentName}`);\n }\n else if (!props['valueIndexes'] && typeof props[propName] !== \"string\") {\n return new Error(`Required prop ${propName} must be a string if prop multiple is false and option item in prop options array \n (i.e. options[0]['valueKey']) is of type string in ${componentName}`);\n }\n }\n },\n /*\n If value of option item in prop options array (for e.g. options[0]['valueKey']) is not of type String and is of type Object, \n comparison can become difficult\n Comparison is required find option item in options array that matches to prop value. This helps with pre-populating dropdown\n with passed down selections (using prop value).\n So we require implemntor to pass valueIndexes prop array that has indexes of selected values inside prop options array\n */\n valueIndexes: PropTypes.arrayOf(PropTypes.number),\n loading: PropTypes.bool.isRequired,\n multiple: PropTypes.bool,\n /*\n prop function onInputChange should be able to receive one param - inputVal\n inputVal reflects changes in input value\n Implementor can use this function to call API and fetch options based on user input keyword\n Bydefault, all options are loaded at once and user can search through them\n */\n onInputChange: PropTypes.func,\n disabled: PropTypes.bool,\n /*\n prop function renderOption must be able to receive one param - option\n option object will have the same shape as an item of options array prop\n Implementor can use this function to render option in different way by returning\n a ReactNode\n */\n renderOption: PropTypes.func,\n required: PropTypes.bool,\n error: PropTypes.bool,\n helperText: PropTypes.string,\n /*\n props optionLabelKey = \"label\" and optionValueKey = \"value\" by default\n If implementer has option object in options prop array in different shape, these props\n can be used\n For e.g. for options array prop having shape - \n [\n {\n clientGroupID: 'MARIO',\n clientGroupName: 'Mario'\n }\n ]\n implementer can use these props -\n optionLabelKey = \"clientGroupName\"\n optionValueKey = \"clientGroupID\" \n so that he doesn't have to change his options array\n */\n optionLabelKey: PropTypes.string,\n optionValueKey: PropTypes.string\n}\n\nexport default NativeAutocompleteDropdown;","const applicationStatus = [\n {\n label: 'Processed',\n value: 'Processed'\n },\n {\n label: 'Draft',\n value: 'Draft'\n }\n]\n\nexport default applicationStatus;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Button,\n IconButton\n } from \"@material-ui/core\";\nimport {Delete, Edit, AddCircle, ExpandLess, ExpandMoreRounded} from \"@material-ui/icons\";\n\nconst NativeButton = props => {\n const {onClick, label, disabled, size, type} = props;\n\n const upDownButton = type === 'up' ? \n \n \n : type === 'down' ? \n \n \n : null;\n\n const addButton = label ?\n \n :\n \n \n ;\n\n const editButton = label ?\n \n :\n \n \n ;\n\n const deleteButton = label ?\n \n :\n \n \n ;\n\n const defaultButton = ;\n\n const renderButton = () => {\n if(type === 'add'){\n return addButton;\n }\n else if(type === 'edit'){\n return editButton;\n }\n else if(type === 'delete'){\n return deleteButton;\n }\n else if(upDownButton){\n return upDownButton;\n }\n else{\n return defaultButton;\n }\n }\n\n return renderButton();\n};\n\nNativeButton.propTypes = {\n onClick: PropTypes.func.isRequired,\n type: PropTypes.string,\n label: PropTypes.string,\n size: PropTypes.string,\n disabled: PropTypes.bool\n};\n\nexport default NativeButton;\n","import axios from 'axios';\nimport axiosRetry from 'axios-retry';\n\nexport const getAxiosInstance = (authToken) => {\n const axiosInstance = axios.create({\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${authToken}`\n }\n });\n \n axiosRetry(axiosInstance, { \n retries: 10,\n retryDelay: axiosRetry.exponentialDelay \n });\n\n return axiosInstance;\n}","const local = {\n functionsURL: \"http://localhost:7071/api/\",\n azureADRedirectURI: \"http://localhost:3000\",\n agentGroupId: \"ca2eeec3-3145-4af5-b057-01f2309dc026\"\n}\n\nconst dev = {\n functionsURL: \"https://orange-medical-plan-functions.azurewebsites.net/api/\",\n azureADRedirectURI: \"https://orange-medical-plan-agent-webapp.azurewebsites.net\",\n agentGroupId: \"ca2eeec3-3145-4af5-b057-01f2309dc026\"\n}\n\nconst test = {\n functionsURL: \"https://orange-medical-plan-functions.azurewebsites.net/api/\",\n azureADRedirectURI: \"https://orange-medical-plan-agent-webapp.azurewebsites.net\",\n agentGroupId: \"ca2eeec3-3145-4af5-b057-01f2309dc026\"\n}\n\nconst prod = {\n functionsURL: \"https://prod-omp-functionapp.azurewebsites.net/api/\",\n azureADRedirectURI: \"https://prod-omp-agent-webapp.azurewebsites.net\",\n agentGroupId: \"447981c3-c847-4929-8164-8410c20836fc\"\n}\n\nconst environment = () => {\n switch(process.env.REACT_APP_ENVIRONMENT) {\n case 'PROD':\n return prod;\n case 'TEST':\n return test;\n case 'DEV':\n return dev;\n case 'LOCAL':\n return local;\n default:\n return dev;\n }\n};\n\nexport default environment;","import {\n Snackbar\n} from '@material-ui/core';\nimport MuiAlert from '@material-ui/lab/Alert';\nimport PropTypes from 'prop-types';\n\nconst Notification = props => {\n const {open, onClose, message, type} = props;\n\n return \n \n {message}\n \n \n}\n\nNotification.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func,\n message: PropTypes.string,\n type: PropTypes.oneOf(['success', 'warning', 'info', 'error'])\n}\n\nexport default Notification;","import {useState, useEffect} from 'react';\nimport AutocompleteDropdown from \"../../../components/FormInputs/AutocompleteDropdown/AutocompleteDropdown\";\nimport {getPlanInfo} from \"../../../apiCalls/getPlanInfo\";\nimport axios from 'axios';\nimport PropTypes from \"prop-types\";\nimport Notification from \"../../../components/Notification/Notification\";\nimport {connect} from 'react-redux';\n\nconst DEFAULT_NOTIFICATION = {\n type: \"error\",\n message: \"\",\n open: false\n};\n\nconst PlanInfoSmartDropDown = props => {\n\n const {label, value, onChange, required, disabled, error, helperText, membershipTypeId, blankAllowed, accountInfo} = props;\n const [options, setOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [newValue, setNewValue] = useState(null);\n const [notification, setNotification] = useState({...DEFAULT_NOTIFICATION});\n const [authToken, setAuthToken] = useState(\"\");\n\n useEffect(() => {\n if(accountInfo && accountInfo.jwtIdToken) {\n setAuthToken(accountInfo.jwtIdToken);\n }\n }, [accountInfo])\n\n useEffect(() => {\n if(value) setNewValue(value)\n else {\n if(options.length && !blankAllowed) {\n setNewValue(options[0].value);\n onChange(options[0].value);\n }\n else setNewValue(null);\n };\n }, [value, options])\n\n useEffect(() => {\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n if(authToken) { \n setLoading(true)\n getPlanInfo(source, membershipTypeId, authToken)\n .then(response => {\n setOptions(response.map(d => {\n return {\n label: d.planDesc,\n value: {\n planDesc: d.planDesc,\n planInfoId: d.planInfoId,\n planTypeId: d.planTypeId,\n membershipTypeId: d.membershipTypeId,\n fee: d.fee,\n monthsPay: d.monthsPay,\n monthlyPayment: d.monthlyPayment,\n stripeProductId: d.stripeProductId\n }\n }\n }));\n \n //setNewValue(value);\n setLoading(false);\n })\n .catch(error => {\n if (axios.isCancel(error)) {\n console.log(\"Cancelled plan info options fetching\");\n } else {\n console.log('Failed to fetch plan info options', error);\n setLoading(false);\n setNotification({\n open: true,\n type: \"error\",\n message: \"Failed to fetch center options, please try again\"\n });\n }\n });\n }\n return () => source.cancel();\n }, [membershipTypeId, authToken]);\n\n return <>\n opt.value.planTypeId === newValue.planTypeId)] : []\n }\n loading={loading}\n onChange={onChange}\n required={required}\n disabled={disabled}\n error={error}\n helperText={helperText}\n />\n {\n setNotification({...DEFAULT_NOTIFICATION})\n }}\n />\n \n}\n\nPlanInfoSmartDropDown.propTypes = {\n label: PropTypes.string.isRequired, \n value: PropTypes.object, \n onChange: PropTypes.func.isRequired, \n required: PropTypes.bool,\n disabled: PropTypes.bool, \n error: PropTypes.bool, \n helperText: PropTypes.string,\n membershipTypeId: PropTypes.string,\n blankAllowed: PropTypes.bool\n}\n\nconst mapStateToProps = state => {\n return {\n accountInfo: state.accountInfo\n }\n}\n \nexport default connect(mapStateToProps)(PlanInfoSmartDropDown);\n\n","import {getAxiosInstance} from \"../config/axios\";\nimport environment from \"../config/environment\";\n\nexport const getPlanInfo = (source, membershipTypeId, authToken) => {\n const queryParam = membershipTypeId ? `?membershipTypeId=${membershipTypeId}` : \"\";\n return new Promise((resolve, reject) => {\n getAxiosInstance(authToken).get(`${environment().functionsURL}plan-info${queryParam}`,\n {\n cancelToken: source.token \n })\n .then(response => {\n if(response && response.status === 200) {\n if(response && response.data && response.data.data && response.data.data.length) {\n resolve(response.data.data);\n }\n else {\n resolve([]);\n }\n }\n reject(response);\n })\n .catch(error => reject(error))\n })\n}\n\n","import {useState, useEffect} from 'react';\nimport AutocompleteDropdown from \"../../../components/FormInputs/AutocompleteDropdown/AutocompleteDropdown\";\nimport {getMembershipType} from \"../../../apiCalls/getMembershipType\";\nimport axios from 'axios';\nimport PropTypes from \"prop-types\";\nimport Notification from \"../../../components/Notification/Notification\";\nimport {connect} from 'react-redux';\n\nconst DEFAULT_NOTIFICATION = {\n type: \"error\",\n message: \"\",\n open: false\n};\n\nconst MembershipTypeSmartDropDown = props => {\n\n const {label, value, onChange, required, disabled, error, helperText, accountInfo} = props;\n const [options, setOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [notification, setNotification] = useState({...DEFAULT_NOTIFICATION});\n const [authToken, setAuthToken] = useState(\"\");\n\n useEffect(() => {\n if(accountInfo && accountInfo.jwtIdToken) {\n setAuthToken(accountInfo.jwtIdToken);\n }\n }, [accountInfo])\n\n\n\n useEffect(() => {\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n\n if(authToken) {\n setLoading(true)\n getMembershipType(source, authToken)\n .then(response => { \n setOptions(response.map(d => {\n return {\n label: d.membershipTypeDesc,\n value: d.membershipTypeId\n }\n }));\n setLoading(false);\n })\n .catch(error => {\n if (axios.isCancel(error)) {\n console.log(\"Cancelled membership type options fetching\");\n } else {\n console.log('Failed to fetch membership type options', error);\n setLoading(false);\n setNotification({\n open: true,\n type: \"error\",\n message: \"Failed to fetch membership type options, please try again\"\n });\n }\n });\n }\n\n return () => source.cancel();\n }, [authToken]);\n\n return <>\n \n {\n setNotification({...DEFAULT_NOTIFICATION})\n }}\n />\n \n}\n\nMembershipTypeSmartDropDown.propTypes = {\n label: PropTypes.string.isRequired, \n value: PropTypes.string.isRequired, \n onChange: PropTypes.func.isRequired, \n required: PropTypes.bool,\n disabled: PropTypes.bool, \n error: PropTypes.bool, \n helperText: PropTypes.string\n}\n\nconst mapStateToProps = state => {\n return {\n accountInfo: state.accountInfo\n }\n}\n\nexport default connect(mapStateToProps)(MembershipTypeSmartDropDown);\n\n","import {getAxiosInstance} from \"../config/axios\";\nimport environment from \"../config/environment\";\n\nexport const getMembershipType = (source, authToken) => {\n return new Promise((resolve, reject) => {\n getAxiosInstance(authToken).get(`${environment().functionsURL}membership-type`,\n {\n cancelToken: source.token \n })\n .then(response => {\n if(response && response.status === 200) {\n if(response && response.data && response.data.length) {\n resolve(response.data);\n }\n else {\n resolve([]);\n }\n }\n reject(response);\n })\n .catch(error => reject(error))\n })\n}\n\n","import {useState, useEffect} from 'react';\nimport {\n Accordion,\n AccordionSummary,\n AccordionDetails,\n Typography,\n Grid,\n makeStyles\n} from '@material-ui/core';\nimport {ExpandMore} from '@material-ui/icons';\nimport TextField from \"../../components/FormInputs/TextField/TextField\";\nimport DateTimeField from \"../../components/FormInputs/DateTimeField/DateTimeField\";\nimport AutocompleteDropdown from \"../../components/FormInputs/AutocompleteDropdown/AutocompleteDropdown\";\nimport applicationStatus from \"../../constants/applicationStatus\";\nimport Button from \"../../components/FormInputs/Button/Button\";\nimport PropTypes from 'prop-types';\nimport PlanInfoSmartDropDown from \"../common/PlanInfoSmartDropDown/PlanInfoSmartDropDown\";\nimport MembershipTypeSmartDropDown from \"../common/MembershipTypeSmartDropDown/MembershipTypeSmartDropDown\";\n\nconst DEFAULT_FORM_VALUES = {\n applicationNumber: '',\n applicationDate: null,\n memberName: '',\n planType: null,\n membershipType: '',\n status: '',\n}\n\nconst useStyles = makeStyles((theme) => ({\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n}));\n\nconst ApplicationFilters = (props) => {\n\n const [expanded, setExpanded] = useState(false);\n const [formValues, setFormValues] = useState({...DEFAULT_FORM_VALUES});\n const [filterCount, setFilterCount] = useState(0);\n\n const {onFilterChange} = props;\n const classes = useStyles();\n\n useEffect(() => {\n \n }, [formValues])\n\n const handleFormChange = (key, value) => {\n setFormValues(prevState => {\n return {\n ...prevState,\n [key]: value\n }\n })\n }\n\n const handleApplyFilters = () => {\n let count = 0;\n for(const field in formValues) {\n if(formValues[field]) count = count+1;\n }\n setFilterCount(count);\n onFilterChange(formValues);\n setExpanded(false);\n }\n\n const handleClearFilters = () => {\n setFormValues({...DEFAULT_FORM_VALUES});\n setFilterCount(0);\n onFilterChange({...DEFAULT_FORM_VALUES});\n setExpanded(false);\n }\n\n return setExpanded(prevState => !prevState)}>\n }\n aria-controls=\"panel-content\"\n id=\"panel-header\"\n >\n Filters\n {`${filterCount} filter(s) applied`}\n \n \n \n \n handleFormChange('applicationNumber', val)}\n />\n \n \n handleFormChange('applicationDate', date)}\n />\n \n \n handleFormChange('memberName', val)}\n />\n \n \n handleFormChange('planType', val)}\n membershipTypeId={formValues.membershipType} \n blankAllowed={true}\n />\n \n \n handleFormChange('membershipType', val)}\n />\n \n \n handleFormChange('status', val)}\n />\n \n \n \n   \n \n \n \n \n \n}\n\nApplicationFilters.propTypes = {\n onFilterChange: PropTypes.func.isRequired\n}\n\nexport default ApplicationFilters;","import {getAxiosInstance} from \"../../config/axios\";\nimport environment from \"../../config/environment\";\n\nexport const getApplicationList = (source, index, pageSize, filters, authToken) => {\n return new Promise((resolve, reject) => {\n getAxiosInstance(authToken).post(`${environment().functionsURL}membership/filter`,\n {\n offset: index,\n take: pageSize, \n ...filters\n },\n {\n cancelToken: source.token \n })\n .then(response => {\n if(response && response.status === 200) {\n if(response && response.data && response.data.data && response.data.data.length) {\n resolve(response.data);\n }\n else {\n resolve({\n data: [],\n count: 0\n });\n }\n }\n reject(response);\n })\n .catch(error => reject(error))\n })\n}","import {getAxiosInstance} from \"../config/axios\";\nimport environment from \"../config/environment\";\n\nexport const getDiscount = (source, authToken) => {\n return new Promise((resolve, reject) => {\n getAxiosInstance(authToken).get(`${environment().functionsURL}discount`,\n {\n cancelToken: source.token \n })\n .then(response => {\n if(response && response.status === 200) {\n if(response?.data?.data?.length) {\n resolve(response.data?.data);\n }\n else {\n resolve([]);\n }\n }\n reject(response);\n })\n .catch(error => reject(error))\n })\n}\n\n","import React from 'react';\nimport SvgIcon from '@material-ui/core/SvgIcon';\nimport Button from '@material-ui/core/Button'\nimport { ReactComponent as ExcelIcon } from \"./excel.svg\";\n\nimport ReactExport from \"react-export-excel\";\nimport moment from 'moment';\n\nconst ExcelFile = ReactExport.ExcelFile;\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\n\nconst DowloadToExcelButton = (props) => {\n const { fileName, columns, data, sheetName } = props;\n\n const sheet = `${sheetName}-1` || `Sheet-1`;\n const file = `${fileName || 'excel-file'}-${moment().format('YYYYMMDDHHmmss')}`;\n\n return (\n
\n {data && data.length > 0 && columns ? (\n \n \n \n \n )}\n >\n \n {columns.map((c, index) => )}\n \n ) : null} \n
);\n}\n\nexport default DowloadToExcelButton;","import moment from 'moment'\nconst calculateEffectiveDate = () => {\n if(moment().date() < 16){\n return moment().clone().startOf('month').format('YYYY-MM-DD');\n }\n\n return moment().add(1, 'month').startOf('month').format('YYYY-MM-DD');\n}\n\nexport default calculateEffectiveDate;","import {useState, useEffect, useCallback} from 'react';\nimport Table from \"../../components/Table/Table\";\nimport ApplicationRowTemplate from \"./ApplicationRowTemplate\";\nimport {\n Grid,\n Typography\n} from '@material-ui/core';\nimport ApplicationFilters from \"./ApplicationFilters\";\nimport {getApplicationList} from \"../../apiCalls/application/getApplicataionList\";\nimport {debounce} from 'lodash';\nimport axios from 'axios';\nimport {useHistory} from \"react-router-dom\";\nimport Notification from \"../../components/Notification/Notification\";\nimport {getApplicationById} from \"../../apiCalls/application/getApplicationById\";\nimport {connect} from 'react-redux';\nimport moment from 'moment';\nimport {getDiscount} from \"../../apiCalls/getDiscount\";\nimport ExcelExporter from '../../components/ExcelExporter/ExcelExporter';\nimport calculateEffectiveDate from '../../helperFunctions/effectiveDate';\n\nconst DEFAULT_APPLICATION_LIST_HEADCELLS = [\n {id: 'applicationId', label: 'Application', showColumn: true, sortable: 'true'},\n {id: 'membershipId', label: 'Membership', showColumn: true, sortable: 'true'},\n {id: 'startDate', label: 'Start Date', showColumn: true, sortable: 'true'},\n {id: 'memberName', label: 'Member Name', showColumn: true, sortable: 'true'},\n {id: 'planTypeDesc', label: 'Type of Plan', showColumn: true, sortable: 'true'},\n {id: 'primaryPhoneNumber', label: 'Phone', showColumn: true, sortable: 'true'},\n {id: 'eMail', label: 'Email', showColumn: true, sortable: 'true'},\n {id: 'status', label: 'Status', showColumn: true, sortable: 'true'},\n {id: 'primaryCenterId', label: 'Center', showColumn: true, sortable: 'true'}\n];\n\nconst DEFAULT_APPLICATIONS_PER_PAGE = 50;\n\nconst DEFAULT_NOTIFICATION = {\n type: \"success\",\n message: \"\",\n open: false\n}\n\nconst ApplicationsList = (props) => {\n\n const {accountInfo} = props;\n\n const [refreshList, setRefreshList] = useState(false);\n const [data, setData] = useState([]);\n const [pageNumber, setPageNumber] = useState(1);\n const [totalPages, setTotalPages] = useState(1);\n const [loading, setLoading] = useState(false);\n const [filterValues, setFilerValues] = useState({});\n const [notification, setNotification] = useState({...DEFAULT_NOTIFICATION});\n const [authToken, setAuthToken] = useState(\"\");\n const [totalRecords, setTotalRecords] = useState([]);\n\n const debounceSetPageNumber = useCallback(debounce(() => setPageNumber(0), 1000), []);\n\n const history = useHistory();\n\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n\n useEffect(() => {\n if(authToken && accountInfo?.account?.userName) {\n getApplicationList(source, 0, 10000, { agentCode: accountInfo.account.userName }, authToken)\n .then((response) => setTotalRecords(response?.data))\n .catch((err) => setTotalRecords([]));\n }\n }, [authToken, accountInfo])\n\n useEffect(() => {\n if(accountInfo && accountInfo.jwtIdToken) {\n setAuthToken(accountInfo.jwtIdToken);\n }\n }, [accountInfo])\n\n useEffect(() => {\n if(pageNumber === 0) {\n return setPageNumber(1);\n }\n\n if(authToken && accountInfo && accountInfo.account && accountInfo.account.userName) {\n fetchApplicationList(accountInfo.account.userName, authToken);\n }\n\n return () => source.cancel();\n }, [pageNumber, accountInfo, authToken]);\n\n const loadMoreRecords = () => {\n setLoading(true);\n if(pageNumber < totalPages) {\n setPageNumber(prevPageNumber => prevPageNumber+1);\n }\n }\n\n\n\n const fetchApplicationList = (agentCode, aT) => {\n setLoading(true);\n getApplicationList(source, ((pageNumber-1) * DEFAULT_APPLICATIONS_PER_PAGE), DEFAULT_APPLICATIONS_PER_PAGE, \n {\n ...filterValues,\n agentCode: agentCode\n }, aT)\n .then(response => {\n if(pageNumber === 1) {\n setData(response.data);\n const absolutePages = Number(response.count) / DEFAULT_APPLICATIONS_PER_PAGE;\n setTotalPages( absolutePages === Math.floor(absolutePages) ? absolutePages : Math.floor(absolutePages) + 1 );\n }\n else {\n setData(prevData => {\n return [\n ...data,\n ...response.data\n ]\n })\n };\n setLoading(false);\n setRefreshList(true);\n })\n .catch(error => {\n if (axios.isCancel(error)) {\n console.log(\"Cancelled applications list fetching\");\n } else {\n console.log('Error fetching application list', error);\n setNotification({\n open: true,\n type: \"error\",\n message: \"Failed to fetch applications, please try again\"\n });\n }\n });\n }\n\n const handleDoubleClickRow = identifier => { \n getApplicationById(source, identifier, authToken)\n .then(app => {\n const dependents = [];\n if(app.members.length > 1) {\n for(let i = 0; i < app.members.length; i++) {\n if(app.members[i].relationshipTypeId !== 'P') {\n dependents.push({\n firstName: app.members[i].firstName,\n lastName: app.members[i].lastName,\n dateOfBirth: app.members[i].dateOfBirth,\n gender: app.members[i].genderId,\n phone: app.members[i].phoneNumber,\n applicationId: app.applicationId,\n memberId: app.members[i].memberId,\n relationship: app.members[i].relationshipType\n });\n }\n }\n }\n const primaryMember = app.members.filter(m => m.relationshipTypeId === 'P');\n if(app && app.membershipId < 1) {\n const formData = [{\n address: {\n isValid: true,\n value: {\n addressLine1: app.addressLine1,\n addressLine2: app.addressLine2 || \"\",\n city: app.addressCity,\n state: app.addressState,\n zipCode: app.addressZip.toString()\n }\n },\n primaryPhone: app.primaryPhoneNumber,\n emergencyPhone: app.emergencyPhoneNumber || \"\",\n email: app.eMail,\n center: app.primaryCenterId.toString(),\n firstName: primaryMember[0].firstName,\n lastName: primaryMember[0].lastName,\n dateOfBirth: primaryMember[0].dateOfBirth,\n gender: primaryMember[0].genderId,\n applicationId: app.applicationId,\n memberId: primaryMember[0].memberId,\n dependents: dependents\n }, \n {\n planType: {\n fee: app.planInfo.fee,\n membershipTypeId: app.planInfo.membershipTypeId,\n monthlyPayment: app.planInfo.monthlyPayment,\n monthsPay: app.planInfo.monthsPay,\n planDesc: app.planInfo.planDesc,\n planInfoId: app.planInfo.planInfoId,\n planTypeId: app.planInfo.planTypeId,\n stripeProductId: app.planInfo.stripeProductId\n },\n membershipType: app.planInfo.membershipTypeId,\n oneTimeFee: app.planInfo.fee,\n monthlyFee: app.planInfo.monthlyPayment,\n totalPayment: ( app.planInfo.fee + (app.planInfo.monthlyPayment * app.planInfo.monthsPay) ).toFixed(2),\n membershipEffectiveDate: calculateEffectiveDate(),\n discountCode: app?.discount?.discountCode,\n discountOptions: []\n }];\n if (app?.discount) {\n let total = formData[1].totalPayment;\n total = Number(total);\n if(app.discount.isPercentage) { \n total -= ((total * app.discount.discountedAmount) / 100);\n } else total -= app.discount.discountedAmount\n formData[1].totalPayment = total?.toFixed(2);\n }\n history.push({\n pathname: '/new',\n state: {\n formData: formData\n }\n });\n }\n else {\n setNotification({\n open: true,\n type: \"info\",\n message: `ApplicationId ${app.applicationId} is already processed.`\n })\n }\n\n })\n .catch(error => {\n if (axios.isCancel(error)) {\n console.log(\"Cancelled fetching application by id\");\n } else {\n console.log('Error fetching application by id', error);\n setNotification({\n open: true,\n type: \"error\",\n message: \"Failed to fetch application in draft, please try again\"\n });\n }\n })\n }\n\n const handleFilterChange = newFilterValues => {\n setFilerValues(prevValues => {\n return {\n ...prevValues,\n memberName: newFilterValues.memberName || undefined,\n applicationId: newFilterValues.applicationNumber || undefined,\n applicationDate: newFilterValues.applicationDate || undefined,\n planTypeId: newFilterValues.planType && newFilterValues.planType.planTypeId ? newFilterValues.planType.planTypeId : undefined,\n status: newFilterValues.status || undefined,\n membershipTypeId: newFilterValues.membershipType || undefined\n }\n });\n debounceSetPageNumber();\n }\n\n return \n \n My Applications\n \n \n \n \n \n \n }\n loadMoreRecords={loadMoreRecords}\n identifier=\"applicationId\"\n handleSingleClickRow={() => console.log()}\n handleDoubleClickRow={handleDoubleClickRow}\n tableHeight={70}\n handleRowsOrderChange={() => console.log()}\n setRefreshTable={setRefreshList}\n refreshTable={refreshList}\n sortBy=\"applicationId\"\n sortOrder=\"asc\"\n />\n \n {\n setNotification({...DEFAULT_NOTIFICATION})\n }}\n />\n \n}\n\nconst mapStateToProps = state => {\n return {\n accountInfo: state.accountInfo\n }\n}\n\nexport default connect(mapStateToProps)(ApplicationsList);","import {getAxiosInstance} from \"../../config/axios\";\nimport environment from \"../../config/environment\";\n\nexport const getApplicationById = (source, applicationId, authToken) => {\n return new Promise((resolve, reject) => {\n getAxiosInstance(authToken).get(`${environment().functionsURL}membership-application?applicationId=${applicationId}`,\n {\n cancelToken: source.token \n })\n .then(response => {\n if(response && response.status === 200) {\n if(response && response.data && response.data.length) {\n resolve(response.data[0]);\n }\n }\n reject(response);\n })\n .catch(error => reject(error))\n })\n}","import React from 'react';\nimport {\n makeStyles,\n Stepper,\n Step,\n StepLabel\n} from '@material-ui/core';\nimport PropTypes from \"prop-types\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n textAlign: 'center'\n },\n stepLabel:{\n cursor: \"pointer\",\n '&$disabled': {\n cursor: 'pointer'\n }\n }\n}));\n\nconst NativeStepper = (props) => {\n const classes = useStyles();\n const {steps, activeStep, onStepClick} = props;\n\n return (\n
\n \n {\n steps.map((step, index) => {\n return (\n onStepClick(index)}\n >\n \n {step.label}\n \n \n );\n })\n }\n \n
\n {\n props.children\n }\n
\n
\n );\n};\n\nNativeStepper.propTypes = {\n steps: PropTypes.array.isRequired,\n activeStep: PropTypes.number.isRequired,\n onStepClick: PropTypes.func\n};\n\nexport default NativeStepper;\n","export const checkEmailValidity = (email) => {\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(email);\n}","export const checkCreditCardValidity = (creditCardNumber) => {\n const americanExpress = /^3[47][0-9]{13}$/; \n const visa = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/; \n const masterCard = /^(?:5[0-9]{15})$/; \n const discover = /^(?:6[0-9]{15})$/; \n const dinnersClub = /^3[068][0-9]{12}$/;\n\n return americanExpress.test(creditCardNumber) || \n visa.test(creditCardNumber) || \n masterCard.test(creditCardNumber) || \n discover.test(creditCardNumber) || \n dinnersClub.test(creditCardNumber);\n}","export const checkCVVValidity = (cardNumber, cvv) => {\n const americanExpressCardNumber = /^3[47][0-9]{13}$/;\n const americanExpressCVV = /^[0-9]{4}$/; \n const restCVV = /^[0-9]{3}$/; \n\n if(americanExpressCardNumber.test(cardNumber)) {\n return americanExpressCVV.test(cvv);\n }\n else return restCVV.test(cvv);\n\n}","export default function validPhoneNumber(number){\n if(!number || number === ''){\n return true;\n }\n\n const chars = number.toString();\n return !isNaN(number) && chars.length === 10 && chars.slice(0,1) !== '1' ;\n}","import React, {useEffect, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {\n makeStyles,\n Button,\n Typography,\n CircularProgress,\n AppBar,\n Grid,\n Paper\n} from \"@material-ui/core\";\nimport Stepper from \"../Stepper/Stepper\";\nimport {checkEmailValidity} from \"../../helperFunctions/checkEmailValidity\";\nimport {checkCreditCardValidity} from \"../../helperFunctions/checkCreditCardValidity\";\nimport Notification from \"../../components/Notification/Notification\";\nimport {checkCVVValidity} from \"../../helperFunctions/checkCVVValidity\";\n\nimport validPhoneNumber from '../../helperFunctions/checkPhoneNumber';\n\nconst useStyles = makeStyles({\n appBar: {\n textAlign: 'right',\n backgroundColor: \"white\",\n bottom: 0,\n padding:10,\n top:\"auto\"\n },\n stepContainer: {\n padding: '20px',\n height: 'auto'\n }\n});\n\nconst DEFAULT_NOTIFICATION = {\n type: \"success\",\n message: \"\",\n open: false\n}\n\nconst FormWizard = props => {\n const {steps, onSubmit, handleNextClick, allowAnotherSubmit, resetAllowAnotherSubmit} = props; \n const classes = useStyles();\n\n const [data, setData] = useState(steps.map(i => i.data));\n const [errors, setErrors] = useState({});\n const [activeStep, setActiveStep] = useState(0);\n const [clonedComponents, setClonedComponents] = useState([]);\n const [disableSubmit, setDisableSubmit] = useState(false);\n const [submitLoading, setSubmitLoading] = useState(false);\n const [nextLoading, setNextLoading] = useState(false);\n const [notification, setNotification] = useState({...DEFAULT_NOTIFICATION});\n const [noWayBack, setNoWayBack] = useState(false);\n\n useEffect(() => {\n setData(steps.map(i => i.data));\n }, [steps])\n\n useEffect(() => {\n if(allowAnotherSubmit) {\n setDisableSubmit(false);\n setSubmitLoading(false);\n if(resetAllowAnotherSubmit) resetAllowAnotherSubmit(); \n }\n }, [allowAnotherSubmit])\n\n useEffect(() => {\n const newErrors = {}\n for(let i = 0; i < steps.length; i++) {\n const activeStepData = data[i];\n for (let key in errors) {\n if (activeStepData[key]) {\n newErrors[key] = errors[key];\n }\n }\n\n for (let key in activeStepData) {\n if (activeStepData[key].required) {\n if (Array.isArray(activeStepData[key].value)) {\n if (activeStepData[key].value.length < 1) {\n newErrors[key] = 'Field is required!';\n } else {\n delete newErrors[key];\n }\n } else if (activeStepData[key]?.value === null || \n activeStepData?.[key]?.value?.toString()?.trim()?.length === 0 ||\n (key === 'address' && typeof activeStepData[key].value === 'object' && !activeStepData[key].value.isValid) ||\n (key === 'email' && !checkEmailValidity(activeStepData[key].value))\n ) {\n newErrors[key] = 'Field is required!';\n } else if ( key === 'cardNumber' && !checkCreditCardValidity(activeStepData[key].value) ) {\n newErrors[key] = 'Invalid CC number';\n } else if ( key === 'cardCVVNumber' && !checkCVVValidity(activeStepData['cardNumber'].value, activeStepData[key].value) ) {\n newErrors[key] = 'Invalid CVV';\n }else if ((key === \"emergencyPhone\" || key === \"primaryPhone\") && !validPhoneNumber(activeStepData[key].value)){\n newErrors[key] = `Invalid ${key === \"emergencyPhone\" ? 'Emergency Phone Number' : 'Primary Phone Number'}` ;\n }\n else {\n delete newErrors[key];\n }\n }\n }\n }\n if(Object.keys(newErrors).length > 0) setDisableSubmit(true);\n else setDisableSubmit(false);\n\n }, [data, steps, errors]);\n\n useEffect(() => {\n const activeStepData = data[activeStep];\n const newErrors = {};\n\n for (let key in errors) {\n if (activeStepData[key]) {\n newErrors[key] = errors[key];\n }\n }\n\n for (let key in activeStepData) {\n if (activeStepData[key].required) {\n if (Array.isArray(activeStepData[key].value)) {\n if (activeStepData[key].value.length < 1) {\n newErrors[key] = 'Field is required!';\n } else {\n delete newErrors[key];\n }\n } else if (activeStepData[key].value === null || \n activeStepData[key]?.value?.toString().trim().length === 0 ||\n (key === 'address' && typeof activeStepData[key].value === 'object' && !activeStepData[key].value.isValid) ||\n (key === 'email' && !checkEmailValidity(activeStepData[key].value))\n ) {\n newErrors[key] = 'Field is required!';\n } else if ( key === 'cardNumber' && !checkCreditCardValidity(activeStepData[key].value) ) {\n newErrors[key] = 'Invalid CC number';\n } else if ( key === 'cardCVVNumber' && !checkCVVValidity(activeStepData['cardNumber'].value, activeStepData[key].value) ) {\n newErrors[key] = 'Invalid CVV';\n } else if ((key === \"emergencyPhone\" || key === \"primaryPhone\") && !validPhoneNumber(activeStepData[key].value)){\n newErrors[key] = `Invalid ${key === \"emergencyPhone\" ? 'Emergency Phone Number' : 'Primary Phone Number'}` ;\n }\n else {\n delete newErrors[key];\n }\n }\n }\n\n setErrors(newErrors);\n\n }, [data, activeStep]);\n\n useEffect(() => {\n const arr = steps.map((step, i) => {\n return React.cloneElement(step.component,\n {\n data: data,\n stepNum: i,\n activeStep: activeStep,\n errors: errors,\n setErrors: setErrors,\n hasError: hasError,\n getErrorMessage: getErrorMessage,\n onChange: handleFieldChange,\n onRequiredChange: handleRequiredChange\n });\n });\n setClonedComponents(arr);\n }, [data, steps, errors]);\n\n const handleStepBack = () => {\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\n };\n\n const handleStepNext = () => {\n setNextLoading(true);\n const result = {};\n data.forEach(arr => {\n for (let key in arr) {\n if (Array.isArray(arr[key].value)) {\n if (arr[key].value.length >= 1) {\n result[key] = arr[key].value;\n } \n } else if ( !( arr?.[key].value === null || \n arr?.[key]?.value?.toString()?.trim()?.length === 0 ||\n (key === 'address' && typeof arr[key].value === 'object' && !arr[key].value.isValid) ||\n (key === 'email' && !checkEmailValidity(arr[key].value)) ||\n (key === 'cardNumber' && !checkCreditCardValidity(arr[key].value)) ||\n (key === 'cardCVVNumber' && !checkCVVValidity(arr[key].value))\n )) {\n result[key] = arr[key].value;\n }\n }\n });\n handleNextClick(result)\n .then(response => {\n if(response && response.data && response.data.length) {\n handleFieldChange('applicationId', response.data[0].applicationId, 0);\n handleFieldChange('memberId', response.data[0].members[0].memberId, 0);\n handleFieldChange('dependents', \n response.data[0].members\n .filter(it => it.relationshipTypeId !== 'P')\n .map((mem, memIndex) => {\n return {\n applicationId: response.data[0].applicationId,\n memberId: mem.memberId,\n dateOfBirth: new Date(mem.dateOfBirth),\n firstName: mem.firstName,\n lastName: mem.lastName,\n phone: mem.phoneNumber,\n gender: mem.genderId,\n relationship: data[0].dependents.value[memIndex].relationship\n }\n }), 0);\n }\n setNextLoading(false);\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n })\n .catch(error => {\n console.log('Failed to save partial application', error);\n setNextLoading(false);\n setNotification({\n open: true,\n type: \"error\",\n message: \"We couldn't save partial application, please try again\"\n }); \n });\n };\n\n const handleFieldChange = (field, value, stepIndex) => {\n setData(prevState => {\n return prevState.map((step, i) => {\n if (((stepIndex && stepIndex === i) || activeStep === i) && step[field]) {\n return {\n ...step,\n [field]: {\n ...step[field],\n value: value\n }\n }\n }\n return step;\n });\n });\n };\n\n const handleRequiredChange = (field, value, stepIndex) => {\n setData(prevState => {\n return prevState.map((step, i) => {\n if (((stepIndex && stepIndex === i) || activeStep === i) && step[field]) {\n return {\n ...step,\n [field]: {\n ...step[field],\n required: value\n }\n }\n }\n return step;\n });\n });\n }\n\n const handleStepClick = (index) => {\n if (!disableSubmit && !Object.keys(errors).length > 0) {\n setActiveStep(index)\n }\n }\n\n const handleSubmit = () => { \n setDisableSubmit(true);\n setSubmitLoading(true);\n\n const result = {};\n data.forEach(arr => {\n for (let key in arr) {\n result[key] = arr[key].value;\n } \n });\n\n onSubmit(result);\n };\n\n const hasError = (key) => {\n if (errors[key]) {\n return true;\n }\n return false;\n };\n\n const getErrorMessage = (key) => {\n if (errors[key]) {\n return errors[key];\n }\n return null;\n };\n\n return (\n \n \n
\n \n {\n clonedComponents.map((component, index) => {\n return \n })\n }\n \n \n
\n \n \n
\n \n\n \n\n \n
\n
\n
\n setNotification({...DEFAULT_NOTIFICATION})}\n />\n
\n );\n};\n\nFormWizard.propTypes = {\n onSubmit: PropTypes.func.isRequired,\n steps: PropTypes.array.isRequired,\n handleNextClick: PropTypes.func,\n allowAnotherSubmit: PropTypes.bool,\n resetAllowAnotherSubmit: PropTypes.func\n};\n\nexport default FormWizard;\n","import {useState, useEffect} from 'react';\nimport AutocompleteDropdown from \"../../../components/FormInputs/AutocompleteDropdown/AutocompleteDropdown\";\nimport {getGender} from \"../../../apiCalls/getGender\";\nimport axios from 'axios';\nimport PropTypes from \"prop-types\";\nimport Notification from \"../../../components/Notification/Notification\";\nimport {connect} from 'react-redux';\n\nconst DEFAULT_NOTIFICATION = {\n type: \"error\",\n message: \"\",\n open: false\n}\n\nconst GenderSmartDropDown = props => {\n\n const {label, value, onChange, required, disabled, error, helperText, accountInfo} = props;\n const [options, setOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [notification, setNotification] = useState({...DEFAULT_NOTIFICATION});\n const [authToken, setAuthToken] = useState(\"\");\n\n useEffect(() => {\n if(accountInfo && accountInfo.jwtIdToken) {\n setAuthToken(accountInfo.jwtIdToken);\n }\n }, [accountInfo])\n\n useEffect(() => {\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n \n if(authToken) { \n setLoading(true)\n getGender(source, authToken)\n .then(response => {\n setOptions(response.map(d => {\n return {\n label: d.genderDesc,\n value: d.genderId\n }\n }));\n \n setLoading(false);\n })\n .catch(error => {\n if (axios.isCancel(error)) {\n console.log(\"Cancelled gender options fetching\");\n } else {\n console.log('Failed to fetch gender options', error);\n setLoading(false);\n setNotification({\n open: true,\n type: \"error\",\n message: \"Failed to fetch gender options, please try again\"\n });\n }\n });\n }\n\n return () => source.cancel();\n\n }, [authToken]);\n\n return <>\n \n {\n setNotification({...DEFAULT_NOTIFICATION})\n }}\n />\n \n}\n\nGenderSmartDropDown.propTypes = {\n label: PropTypes.string.isRequired, \n value: PropTypes.string.isRequired, \n onChange: PropTypes.func.isRequired, \n required: PropTypes.bool,\n disabled: PropTypes.bool, \n error: PropTypes.bool, \n helperText: PropTypes.string\n}\n\nconst mapStateToProps = state => {\n return {\n accountInfo: state.accountInfo\n }\n}\n \nexport default connect(mapStateToProps)(GenderSmartDropDown);\n\n","import {getAxiosInstance} from \"../config/axios\";\nimport environment from \"../config/environment\";\n\nexport const getGender = (source, authToken) => {\n return new Promise((resolve, reject) => {\n getAxiosInstance(authToken).get(`${environment().functionsURL}get-genders`,\n {\n cancelToken: source.token \n })\n .then(response => {\n if(response && response.status === 200) {\n if(response && response.data && response.data.length) {\n resolve(response.data);\n }\n else {\n resolve([]);\n }\n }\n reject(response);\n })\n .catch(error => reject(error))\n })\n}\n\n","import {useState, useEffect} from 'react';\nimport AutocompleteDropdown from \"../../../components/FormInputs/AutocompleteDropdown/AutocompleteDropdown\";\nimport {getRelationshipType} from \"../../../apiCalls/getRelationshipType\";\nimport axios from 'axios';\nimport PropTypes from \"prop-types\";\nimport Notification from \"../../../components/Notification/Notification\";\nimport {connect} from 'react-redux';\n\nconst DEFAULT_NOTIFICATION = {\n type: \"error\",\n message: \"\",\n open: false\n};\n\nconst RelationshipTypeSmartDropDown = props => {\n\n const {label, value, onChange, required, disabled, error, helperText, accountInfo} = props;\n const [options, setOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [notification, setNotification] = useState({...DEFAULT_NOTIFICATION});\n const [authToken, setAuthToken] = useState(\"\");\n\n useEffect(() => {\n if(accountInfo && accountInfo.jwtIdToken) {\n setAuthToken(accountInfo.jwtIdToken);\n }\n }, [accountInfo])\n\n useEffect(() => {\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n\n if(authToken) { \n setLoading(true)\n getRelationshipType(source, authToken)\n .then(response => {\n setOptions(response.filter(d => d.membershipType !== 'I').map(newD => {\n return {\n label: newD.relationshipTypeDesc,\n value: newD\n }\n }));\n setLoading(false);\n })\n .catch(error => {\n if (axios.isCancel(error)) {\n console.log(\"Cancelled relationship type options fetching\");\n } else {\n console.log('Failed to fetch relationship type options', error);\n setLoading(false);\n setNotification({\n open: true,\n type: \"error\",\n message: \"Failed to fetch relationship type options, please try again\"\n });\n }\n });\n }\n\n return () => source.cancel();\n }, [authToken]);\n\n return <>\n opt.value.relationshipTypeId === value.relationshipTypeId)] : []\n }\n />\n {\n setNotification({...DEFAULT_NOTIFICATION})\n }}\n />\n \n}\n\nRelationshipTypeSmartDropDown.propTypes = {\n label: PropTypes.string.isRequired, \n value: PropTypes.object, \n onChange: PropTypes.func.isRequired, \n required: PropTypes.bool,\n disabled: PropTypes.bool, \n error: PropTypes.bool, \n helperText: PropTypes.string\n}\n\nconst mapStateToProps = state => {\n return {\n accountInfo: state.accountInfo\n }\n}\n \nexport default connect(mapStateToProps)(RelationshipTypeSmartDropDown);\n\n","import {getAxiosInstance} from \"../config/axios\";\nimport environment from \"../config/environment\";\n\nexport const getRelationshipType = (source, authToken) => {\n return new Promise((resolve, reject) => {\n getAxiosInstance(authToken).get(`${environment().functionsURL}get-relationship-type`,\n {\n cancelToken: source.token \n })\n .then(response => {\n if(response && response.status === 200) {\n if(response && response.data && response.data.length) {\n resolve(response.data);\n }\n else {\n resolve([]);\n }\n }\n reject(response);\n })\n .catch(error => reject(error))\n })\n}\n\n","import {useState, useEffect} from 'react';\nimport {Grid, makeStyles} from '@material-ui/core';\nimport TextField from \"../../../components/FormInputs/TextField/TextField\";\nimport Button from \"../../../components/FormInputs/Button/Button\";\nimport PropTypes from 'prop-types';\nimport GenderSmartDropDown from \"../GenderSmartDropDown/GenderSmartDropDown\";\nimport RelationshipTypeSmartDropDown from \"../RelationshipTypeSmartDropDown/RelationshipTypeSmartDropDown\";\nimport {KeyboardDatePicker, MuiPickersUtilsProvider} from \"@material-ui/pickers\";\nimport MomentUtils from '@date-io/moment';\nimport moment from 'moment';\nimport validPhoneNumber from '../../../helperFunctions/checkPhoneNumber';\n\nconst DEFAULT_FORM_VALUES = {\n firstName: '',\n lastName: '',\n dateOfBirth: null,\n relationship: null,\n gender: '',\n phone: '',\n memberId: '',\n applicationId: ''\n}\n\nconst useStyles = makeStyles({\n container: {\n padding: '20px'\n }\n})\n\nconst UpsertDependentForm = props => {\n\n const [formValues, setFormValues] = useState({...DEFAULT_FORM_VALUES})\n const [isFormValid, setIsFormValid] = useState(false);\n const [isUpdateMode, setIsUpdateMode] = useState(false);\n const {upsertDependent, dependent} = props.data;\n\n const classes = useStyles();\n\n useEffect(() => {\n if(formValues.firstName && formValues.lastName && formValues.dateOfBirth && \n formValues.relationship && formValues.gender && (validPhoneNumber(formValues.phone) && formValues.phone !== '')) {\n setIsFormValid(true)\n }\n else setIsFormValid(false)\n }, [formValues])\n\n useEffect(() => {\n if(dependent) {\n setFormValues(dependent);\n setIsUpdateMode(true);\n }\n }, [dependent])\n\n const handleFormChange = (key, value) => {\n setFormValues(prevValues => {\n return {\n ...prevValues,\n [key]: value\n }\n })\n }\n return \n \n

{`${isUpdateMode ? 'Update' : 'Add'} Dependent`}

\n
\n \n handleFormChange('firstName', val)}\n required={true}\n />\n \n \n handleFormChange('lastName', val)}\n required={true}\n />\n \n \n \n {\n if( date && moment(date).isValid() && moment(date).isSameOrBefore(new Date()) ) {\n handleFormChange('dateOfBirth', moment(date).format('YYYY-MM-DD'))\n }\n else handleFormChange('dateOfBirth', null);\n }}\n format=\"MM/DD/yyyy\"\n inputVariant=\"outlined\"\n margin=\"none\"\n size='small'\n disableFuture={true}\n InputLabelProps={{\n margin: 'dense'\n }}\n fullWidth\n required={true}\n />\n \n \n \n handleFormChange('relationship', val)}\n required={true}\n />\n \n \n handleFormChange('gender', val)}\n required={true}\n />\n \n \n handleFormChange('phone', val)}\n required={true}\n isNumericOnly\n isPhoneNumber={true}\n error={!validPhoneNumber(formValues.phone) || formValues.phone === ''}\n helperText={!validPhoneNumber(formValues.phone) || formValues.phone === ''? 'Invalid phone number' : undefined}\n />\n \n \n upsertDependent(formValues, isUpdateMode)}\n size=\"small\"\n label={isUpdateMode ? \"Save\" : \"Add\"}\n disabled={!isFormValid}\n />\n \n
\n}\n\nUpsertDependentForm.propTypes = {\n upsertDependent: PropTypes.func,\n dependent: PropTypes.shape({\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n dateOfBirth: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]),\n relationship: PropTypes.string,\n gender: PropTypes.string,\n phone: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n memberId: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n applicationId: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ])\n })\n}\n\nexport default UpsertDependentForm","import React from 'react';\nimport {\n Dialog,\n DialogContent,\n makeStyles\n} from \"@material-ui/core\";\nimport {Close} from \"@material-ui/icons\";\nimport PropTypes from \"prop-types\";\n\nconst useStyles = makeStyles({\n dialogContent:{\n padding:'0px',\n height: 'auto',\n maxHeight: props => props.size === 'xl' ? 'none' : '500px',\n overflow: 'hidden',\n overflowY: 'scroll',\n '&::-webkit-scrollbar': {\n width: '6px',\n height: '6px'\n },\n '&::-webkit-scrollbar-track': {\n webkitBorderRadius: '2px',\n borderRadius: '2px'\n },\n '&::-webkit-scrollbar-thumb': {\n opacity: 0.3,\n webkitBorderRadius: '2px',\n borderRadius: '2px',\n background: '#00000042',\n webkitBoxShadow: 'inset 0 0 6px rgba(0,0,0,0.5)'\n } \n },\n paper: {\n overflowY: 'inherit'\n },\n closeBtn: {\n position: 'absolute',\n right: '-40px',\n color: '#C7C9C7',\n fontSize: '36px',\n opacity: 0.8,\n '&:hover' : {\n opacity: 1\n }\n }\n});\n\nconst NativeDialogBox = props => {\n const classes = useStyles(props);\n\n const {openDialog, onCloseBtnClicked, size, noCloseBtn, dialogTemplate, data} = props;\n\n const renderTemplate = (child) => {\n return React.cloneElement(child,\n {\n data: data\n }\n );\n }\n\n return \n {\n noCloseBtn === true ? \n null : \n \n }\n \n {renderTemplate(dialogTemplate)}\n \n \n}\n\nNativeDialogBox.propTypes = {\n openDialog: PropTypes.bool.isRequired,\n onCloseBtnClicked: PropTypes.func.isRequired,\n dialogTemplate: PropTypes.element.isRequired,\n size: PropTypes.string,\n noCloseBtn: PropTypes.bool\n}\n\nexport default NativeDialogBox;\n\n","import React, {useState, Fragment} from 'react';\nimport {\n makeStyles,\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Typography,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n Paper,\n Grid,\n IconButton\n} from '@material-ui/core';\nimport {ExpandMore, DeleteForever} from '@material-ui/icons';\nimport Button from \"../../../components/FormInputs/Button/Button\";\nimport UpsertDependentForm from \"./UpsertDependentForm\";\nimport DialogBox from \"../../../components/DialogBox/DialogBox\";\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\n\nconst TABLE_HEADER = ['First Name', 'Last Name', 'DOB', 'Relationship', 'Gender', 'Phone', 'Delete']\n\nconst useStyles = makeStyles((theme) => ({\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0,\n marginLeft: '-30px'\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n tableRow: {\n '&:hover': {\n cursor: 'pointer'\n }\n }\n}));\n\nconst ManageDependents = props => {\n\n const {dependents, onChange} = props;\n\n const classes = useStyles();\n const [expanded, setExpanded] = useState(false);\n const [showUpsertDependentDialog, setShowUpsertDependentDialog] = useState(false);\n const [updateDependentFormValues, setUpdateDependentFormValues] = useState(null);\n const [updateDependentIndex, setUpdateDependentIndex] = useState(-1);\n\n const populateUpdateForm = (index, dependentObject) => {\n setUpdateDependentFormValues(dependentObject);\n setShowUpsertDependentDialog(true);\n setUpdateDependentIndex(index);\n }\n\n const upsertDependent = (newDependent, isUpdateMode) => {\n if(isUpdateMode) {\n onChange([\n ...dependents.slice(0, updateDependentIndex),\n newDependent,\n ...dependents.slice(updateDependentIndex+1)\n ])\n }\n else {\n onChange([\n ...dependents,\n {...newDependent}\n ]) \n }\n closeAndReset()\n }\n\n const closeAndReset = () => {\n setShowUpsertDependentDialog(false);\n setUpdateDependentFormValues(null);\n setUpdateDependentIndex(-1);\n }\n\n return \n }\n data={{\n upsertDependent: upsertDependent,\n dependent: updateDependentFormValues\n }}\n />\n setExpanded(prevState => !prevState)}>\n }\n aria-controls=\"panel-content\"\n id=\"panel-header\"\n >\n Dependent Information\n {`${dependents.length} dependent(s)`}\n \n \n \n \n
\n \n \n {\n TABLE_HEADER.map(header => {header})\n }\n \n \n \n {\n dependents.map((dependent, dependentIndex) => {\n return populateUpdateForm(dependentIndex, dependent)}\n >\n {dependent.firstName}\n {dependent.lastName}\n {moment(dependent.dateOfBirth).format('MM/DD/YYYY')}\n {dependent.relationship.relationshipTypeDesc}\n {dependent.gender}\n {dependent.phone}\n \n {\n onChange([\n ...dependents.slice(0, dependentIndex),\n ...dependents.slice(dependentIndex+1)\n ])\n }}\n >\n \n \n \n \n })\n }\n \n
\n \n
\n
\n \n \n \n}\n\nManageDependents.propTypes = {\n onChange: PropTypes.func.isRequired,\n dependents: PropTypes.arrayOf(PropTypes.shape({\n firstName: PropTypes.string,\n lastName: PropTypes.string,\n dateOfBirth: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]),\n relationship: PropTypes.object,\n gender: PropTypes.string,\n phone: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n memberId: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n applicationId: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ])\n }))\n}\n\nexport default ManageDependents;\n","const usaStates = [\n {\n label: \"Alabama\",\n value: \"AL\"\n },\n {\n label: \"Alaska\",\n value: \"AK\"\n },\n {\n label: \"American Samoa\",\n value: \"AS\"\n },\n {\n label: \"Arizona\",\n value: \"AZ\"\n },\n {\n label: \"Arkansas\",\n value: \"AR\"\n },\n {\n label: \"California\",\n value: \"CA\"\n },\n {\n label: \"Colorado\",\n value: \"CO\"\n },\n {\n label: \"Connecticut\",\n value: \"CT\"\n },\n {\n label: \"Delaware\",\n value: \"DE\"\n },\n {\n label: \"District Of Columbia\",\n value: \"DC\"\n },\n {\n label: \"Federated States Of Micronesia\",\n value: \"FM\"\n },\n {\n label: \"Florida\",\n value: \"FL\"\n },\n {\n label: \"Georgia\",\n value: \"GA\"\n },\n {\n label: \"Guam\",\n value: \"GU\"\n },\n {\n label: \"Hawaii\",\n value: \"HI\"\n },\n {\n label: \"Idaho\",\n value: \"ID\"\n },\n {\n label: \"Illinois\",\n value: \"IL\"\n },\n {\n label: \"Indiana\",\n value: \"IN\"\n },\n {\n label: \"Iowa\",\n value: \"IA\"\n },\n {\n label: \"Kansas\",\n value: \"KS\"\n },\n {\n label: \"Kentucky\",\n value: \"KY\"\n },\n {\n label: \"Louisiana\",\n value: \"LA\"\n },\n {\n label: \"Maine\",\n value: \"ME\"\n },\n {\n label: \"Marshall Islands\",\n value: \"MH\"\n },\n {\n label: \"Maryland\",\n value: \"MD\"\n },\n {\n label: \"Massachusetts\",\n value: \"MA\"\n },\n {\n label: \"Michigan\",\n value: \"MI\"\n },\n {\n label: \"Minnesota\",\n value: \"MN\"\n },\n {\n label: \"Mississippi\",\n value: \"MS\"\n },\n {\n label: \"Missouri\",\n value: \"MO\"\n },\n {\n label: \"Montana\",\n value: \"MT\"\n },\n {\n label: \"Nebraska\",\n value: \"NE\"\n },\n {\n label: \"Nevada\",\n value: \"NV\"\n },\n {\n label: \"New Hampshire\",\n value: \"NH\"\n },\n {\n label: \"New Jersey\",\n value: \"NJ\"\n },\n {\n label: \"New Mexico\",\n value: \"NM\"\n },\n {\n label: \"New York\",\n value: \"NY\"\n },\n {\n label: \"North Carolina\",\n value: \"NC\"\n },\n {\n label: \"North Dakota\",\n value: \"ND\"\n },\n {\n label: \"Northern Mariana Islands\",\n value: \"MP\"\n },\n {\n label: \"Ohio\",\n value: \"OH\"\n },\n {\n label: \"Oklahoma\",\n value: \"OK\"\n },\n {\n label: \"Oregon\",\n value: \"OR\"\n },\n {\n label: \"Palau\",\n value: \"PW\"\n },\n {\n label: \"Pennsylvania\",\n value: \"PA\"\n },\n {\n label: \"Puerto Rico\",\n value: \"PR\"\n },\n {\n label: \"Rhode Island\",\n value: \"RI\"\n },\n {\n label: \"South Carolina\",\n value: \"SC\"\n },\n {\n label: \"South Dakota\",\n value: \"SD\"\n },\n {\n label: \"Tennessee\",\n value: \"TN\"\n },\n {\n label: \"Texas\",\n value: \"TX\"\n },\n {\n label: \"Utah\",\n value: \"UT\"\n },\n {\n label: \"Vermont\",\n value: \"VT\"\n },\n {\n label: \"Virgin Islands\",\n value: \"VI\"\n },\n {\n label: \"Virginia\",\n value: \"VA\"\n },\n {\n label: \"Washington\",\n value: \"WA\"\n },\n {\n label: \"West Virginia\",\n value: \"WV\"\n },\n {\n label: \"Wisconsin\",\n value: \"WI\"\n },\n {\n label: \"Wyoming\",\n value: \"WY\"\n }\n]\n\nexport default usaStates;","import {useState, useEffect} from 'react';\nimport TextField from \"../../../components/FormInputs/TextField/TextField\";\nimport AutocompleteDropdown from \"../../../components/FormInputs/AutocompleteDropdown/AutocompleteDropdown\";\nimport {\n Grid\n} from '@material-ui/core';\nimport usaStates from \"../../../constants/usaStates\";\nimport lodash from 'lodash';\nimport PropTypes from 'prop-types';\n\nconst DEFAULT_FORM_VALUES = {\n isValid: false,\n value: { \n addressLine1: '',\n addressLine2: '',\n city: '',\n state: '',\n zipCode: ''\n }\n}\n\nconst Address = props => {\n\n const [formValues, setFormValues] = useState({...DEFAULT_FORM_VALUES});\n\n const {address, onAddressChange, showErrorMessage} = props;\n\n useEffect(() => {\n if(address) {\n setFormValues(address)\n }\n }, [address])\n\n useEffect(() => {\n if(!lodash.isEqual(address, formValues)) {\n onAddressChange(formValues)\n } \n }, [formValues])\n\n const handleFormChange = (key, value) => {\n if(key==='zipCode' && value && value.length > 5){\n return;\n }\n\n setFormValues(prevState => {\n let isValidAddress = true;\n if(value) {\n\n for(let field in prevState.value) {\n if(field !== 'addressLine2' && field !== key && !prevState.value[field]) {\n isValidAddress = false;\n break;\n }\n }\n\n }\n else isValidAddress = false;\n\n return {\n ...prevState,\n isValid: isValidAddress,\n value: {\n ...prevState.value,\n [key]: value\n }\n }\n\n });\n }\n\n return \n \n handleFormChange('addressLine1', val)}\n value={formValues.value.addressLine1}\n error={showErrorMessage && !formValues.isValid}\n />\n \n \n {\n setFormValues(prevFormValues => {\n return {\n ...prevFormValues,\n value: {\n ...prevFormValues.value,\n addressLine2: val\n }\n }\n })\n }}\n value={formValues.value.addressLine2}\n error={false}\n />\n \n \n handleFormChange('city', val)}\n value={formValues.value.city}\n error={showErrorMessage && !formValues.isValid}\n helperText={showErrorMessage && !formValues.isValid ? \"Valid address is required\" : undefined}\n />\n \n \n handleFormChange('state', val)}\n value={formValues.value.state}\n error={showErrorMessage && !formValues.isValid}\n />\n \n \n handleFormChange('zipCode', val)}\n value={formValues.value.zipCode}\n isNumericOnly={false}\n maxLength={5}\n error={showErrorMessage && (formValues.value?.zipCode?.toString().length !== 5)}\n helperText={showErrorMessage && (formValues.value?.zipCode?.toString().length !== 5) ? 'Invalid Zip Code' : undefined}\n />\n \n \n}\n\nAddress.propTypes = {\n address: PropTypes.shape({\n isValid: PropTypes.bool.isRequired,\n value: PropTypes.shape({\n addressLine1: PropTypes.string.isRequired,\n addressLine2: PropTypes.string,\n city: PropTypes.string.isRequired,\n state: PropTypes.string.isRequired,\n zipCode: PropTypes.string.isRequired\n })\n }),\n onAddressChange: PropTypes.func.isRequired,\n showErrorMessage: PropTypes.bool\n}\n\nexport default Address;","import {useState, useEffect} from 'react';\nimport AutocompleteDropdown from \"../../../components/FormInputs/AutocompleteDropdown/AutocompleteDropdown\";\nimport {getCenter} from \"../../../apiCalls/getCenter\";\nimport axios from 'axios';\nimport PropTypes from \"prop-types\";\nimport Notification from \"../../../components/Notification/Notification\";\nimport {connect} from 'react-redux';\n\nconst DEFAULT_NOTIFICATION = {\n type: \"error\",\n message: \"\",\n open: false\n};\n\nconst CenterSmartDropDown = props => {\n\n const {label, value, onChange, required, disabled, error, helperText, accountInfo} = props;\n const [options, setOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [notification, setNotification] = useState({...DEFAULT_NOTIFICATION});\n const [authToken, setAuthToken] = useState(\"\");\n\n useEffect(() => {\n if(accountInfo && accountInfo.jwtIdToken) {\n setAuthToken(accountInfo.jwtIdToken);\n }\n }, [accountInfo])\n\n useEffect(() => {\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n\n if(authToken) { \n setLoading(true)\n getCenter(source, authToken)\n .then(response => {\n setOptions(response.map(newD => {\n return {\n label: newD.label,\n value: newD.code\n }\n }));\n setLoading(false);\n })\n .catch(error => {\n if (axios.isCancel(error)) {\n console.log(\"Cancelled center options fetching\");\n } else {\n console.log('Failed to fetch center options', error);\n setLoading(false);\n setNotification({\n open: true,\n type: \"error\",\n message: \"Failed to fetch center options, please try again\"\n });\n }\n });\n }\n\n return () => source.cancel();\n }, [authToken]);\n\n return <>\n \n {\n setNotification({...DEFAULT_NOTIFICATION})\n }}\n />\n \n}\n\nCenterSmartDropDown.propTypes = {\n label: PropTypes.string.isRequired, \n value: PropTypes.string.isRequired, \n onChange: PropTypes.func.isRequired, \n required: PropTypes.bool,\n disabled: PropTypes.bool, \n error: PropTypes.bool, \n helperText: PropTypes.string\n}\n\nconst mapStateToProps = state => {\n return {\n accountInfo: state.accountInfo\n }\n}\n \nexport default connect(mapStateToProps)(CenterSmartDropDown);\n\n","import {getAxiosInstance} from \"../config/axios\";\nimport environment from \"../config/environment\";\n\nexport const getCenter = (source, authToken) => {\n return new Promise((resolve, reject) => {\n getAxiosInstance(authToken).get(`${environment().functionsURL}get-drop-down/centers`,\n {\n cancelToken: source.token \n })\n .then(response => {\n if(response && response.status === 200) {\n if(response && response.data && response.data.length) {\n resolve(response.data);\n }\n else {\n resolve([]);\n }\n }\n reject(response);\n })\n .catch(error => reject(error))\n })\n}\n\n","import {\n Grid\n} from '@material-ui/core';\nimport TextField from \"../../../components/FormInputs/TextField/TextField\";\nimport ManageDependents from '../../common/ManageDependents/ManageDependents';\nimport Address from \"../../common/Address/Address\";\nimport GenderSmartDropDown from \"../../common/GenderSmartDropDown/GenderSmartDropDown\";\nimport CenterSmartDropDown from \"../../common/CenterSmartDropDown/CenterSmartDropDown\";\nimport {KeyboardDatePicker, MuiPickersUtilsProvider} from \"@material-ui/pickers\";\nimport MomentUtils from '@date-io/moment';\nimport moment from 'moment';\n\nconst StepOne = (props) => {\n const {data, stepNum, hasError, getErrorMessage, onChange} = props;\n const {firstName, middleName, lastName, dateOfBirth, gender, address,\n primaryPhone, emergencyPhone, center, email, dependents} = data[stepNum];\n\nreturn \n \n onChange('firstName', val)}\n required={firstName.required}\n error={hasError('firstName')}\n disabled={false}\n helperText={getErrorMessage('firstName')}\n />\n \n \n onChange('middleName', val)}\n required={middleName.required}\n error={hasError('middleName')}\n disabled={false}\n helperText={getErrorMessage('middleName')}\n />\n \n \n onChange('lastName', val)}\n required={lastName.required}\n error={hasError('lastName')}\n disabled={false}\n helperText={getErrorMessage('lastName')}\n />\n \n \n \n {\n if( date && moment(date).isValid() && moment(date).isSameOrBefore(new Date()) ) {\n onChange('dateOfBirth', moment(date).format('YYYY-MM-DD'))\n }\n else onChange('dateOfBirth', null);\n }}\n format=\"MM/DD/yyyy\"\n inputVariant=\"outlined\"\n margin=\"none\"\n size='small'\n disableFuture={true}\n InputLabelProps={{\n margin: 'dense'\n }}\n fullWidth\n required={dateOfBirth.required}\n error={hasError('dateOfBirth')}\n helperText={getErrorMessage('dateOfBirth')}\n />\n \n \n \n onChange('gender', val)}\n required={gender.required}\n error={hasError('gender')}\n disabled={false}\n helperText={getErrorMessage('gender')} \n />\n \n \n
onChange('address', val)}\n showErrorMessage={true}\n />\n \n \n onChange('primaryPhone', val)}\n required={primaryPhone.required}\n error={hasError('primaryPhone')}\n disabled={false}\n helperText={getErrorMessage('primaryPhone')}\n isNumericOnly\n isPhoneNumber={true}\n />\n \n \n onChange('emergencyPhone', val)}\n required={emergencyPhone.required}\n error={hasError('emergencyPhone')}\n disabled={false}\n helperText={getErrorMessage('emergencyPhone')}\n isNumericOnly\n isPhoneNumber={true}\n />\n \n \n onChange('email', val)}\n required={email.required}\n error={hasError('email')}\n disabled={false}\n helperText={getErrorMessage('email')}\n />\n \n \n onChange('center', val)}\n required={center.required}\n error={hasError('center')}\n disabled={false}\n helperText={getErrorMessage('center')} \n />\n \n \n onChange('dependents', newDependents)}\n />\n \n \n}\n\nexport default StepOne","import {useState, useEffect} from 'react';\nimport AutocompleteDropdown from \"../../../components/FormInputs/AutocompleteDropdown/AutocompleteDropdown\";\nimport {getDiscount} from \"../../../apiCalls/getDiscount\";\nimport axios from 'axios';\nimport PropTypes from \"prop-types\";\nimport Notification from \"../../../components/Notification/Notification\";\nimport {connect} from 'react-redux';\n\nconst DEFAULT_NOTIFICATION = {\n type: \"error\",\n message: \"\",\n open: false\n}\n\nconst DiscountSmartDropDown = props => {\n\n const {label, value, onChange, required, disabled, error, helperText, accountInfo, discountOptions} = props;\n const [options, setOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [notification, setNotification] = useState({...DEFAULT_NOTIFICATION});\n const [authToken, setAuthToken] = useState(\"\");\n\n useEffect(() => {\n if(accountInfo && accountInfo.jwtIdToken) {\n setAuthToken(accountInfo.jwtIdToken);\n }\n }, [accountInfo])\n\n useEffect(() => {\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n\n if (discountOptions) {\n setOptions(discountOptions); \n } else if(authToken) {\n setLoading(true)\n getDiscount(source, authToken)\n .then(response => {\n setOptions(response.map(d => {\n return {\n label: d.discountCode,\n value: d.discountCode,\n isPercentage: d.isPercentage,\n discountedAmount: d.discountedAmount\n }\n }));\n \n setLoading(false);\n })\n .catch(error => {\n if (axios.isCancel(error)) {\n console.log(\"Cancelled discount options fetching\");\n } else {\n console.log('Failed to fetch discount options', error);\n setLoading(false);\n setNotification({\n open: true,\n type: \"error\",\n message: \"Failed to fetch discount options, please try again\"\n });\n }\n });\n }\n\n return () => {\n source.cancel();\n };\n }, [authToken]);\n\n useEffect(() => {\n setOptions(discountOptions)\n }, [discountOptions])\n \n const handleChange = (selectedOption) => {\n onChange(options.find(item => item.value === selectedOption))\n }\n\n return <>\n \n {\n setNotification({...DEFAULT_NOTIFICATION})\n }}\n />\n \n}\n\nDiscountSmartDropDown.propTypes = {\n label: PropTypes.string.isRequired, \n value: PropTypes.string.isRequired, \n onChange: PropTypes.func.isRequired, \n required: PropTypes.bool,\n disabled: PropTypes.bool, \n error: PropTypes.bool, \n helperText: PropTypes.string\n}\n\nconst mapStateToProps = state => {\n return {\n accountInfo: state.accountInfo\n }\n}\n \nexport default connect(mapStateToProps)(DiscountSmartDropDown);\n","import {useEffect, useState} from 'react';\nimport {\n Grid\n} from '@material-ui/core';\nimport axios from 'axios';\nimport TextField from \"../../../components/FormInputs/TextField/TextField\";\nimport DateTimeField from \"../../../components/FormInputs/DateTimeField/DateTimeField\";\nimport PlanInfoSmartDropDown from \"../../common/PlanInfoSmartDropDown/PlanInfoSmartDropDown\";\nimport MembershipTypeSmartDropDown from \"../../common/MembershipTypeSmartDropDown/MembershipTypeSmartDropDown\";\nimport DiscountSmartDropDown from \"../../common/DiscountSmartDropDown/DiscountSmartDropDown\";\nimport {getDiscount} from \"../../../apiCalls/getDiscount\";\nimport {connect} from 'react-redux';\nimport calculateEffectiveDate from '../../../helperFunctions/effectiveDate'\n\nconst StepTwo = (props) => {\n const {data, stepNum, hasError, getErrorMessage, onChange, accountInfo} = props;\n const {planType, membershipType, oneTimeFee, monthlyFee, membershipEffectiveDate, totalPayment, discountCode} = data[stepNum];\n const [discountOptions, setDiscountOptions] = useState([]);\n const {dependents} = data[0];\n const [authToken, setAuthToken] = useState(\"\");\n\n const getTotal = (selectedDiscount, selectedPlan) => {\n let total = (selectedPlan?.fee + (selectedPlan?.monthlyPayment * selectedPlan?.monthsPay)) || 1;\n total = Number(total);\n if(selectedDiscount && 'isPercentage' in selectedDiscount\n && 'discountedAmount' in selectedDiscount) {\n if(selectedDiscount.isPercentage) { \n total -= ((total * selectedDiscount.discountedAmount) / 100);\n } else total -= selectedDiscount.discountedAmount \n }\n return total?.toFixed(2);\n }\n\n useEffect(() => {\n if(accountInfo && accountInfo.jwtIdToken) {\n setAuthToken(accountInfo.jwtIdToken);\n }\n }, [accountInfo])\n\n useEffect(() => {\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n if (authToken) {\n getDiscount(source, authToken)\n .then(response => {\n const options = response.map(d => {\n return {\n label: d.discountCode,\n value: d.discountCode,\n isPercentage: d.isPercentage,\n discountedAmount: d.discountedAmount\n }\n });\n setDiscountOptions(options); \n })\n .catch(error => {\n setDiscountOptions([])\n });\n }\n }, [authToken]);\n\n useEffect(() => {\n let priority = 0;\n let memType = 'I'; \n const length = dependents.value.length;\n for(let i = 0; i < length; i++) {\n if(dependents.value[i].relationship.membershipPriority > priority) {\n priority = dependents.value[i].relationship.membershipPriority;\n memType = dependents.value[i].relationship.membershipType;\n }\n }\n onChange('membershipType', memType, 1);\n onChange('oneTimeFee', '', 1);\n onChange('monthlyFee', '', 1);\n onChange('monthsPay', '', 1);\n onChange('totalPayment', '', 1);\n onChange('planType', null, 1)\n }, [dependents]);\n\n return (\n \n \n {\n if(val) {\n onChange('oneTimeFee', val.fee, 1);\n onChange('monthlyFee', val.monthlyPayment, 1);\n onChange('monthsPay', val.monthsPay, 1);\n onChange('totalPayment', \n getTotal(discountOptions?.find((item) => item.value === discountCode.value), val), 1);\n }\n else {\n onChange('oneTimeFee', '', 1);\n onChange('monthlyFee', '', 1);\n onChange('monthsPay', '', 1);\n onChange('totalPayment', '', 1);\n }\n onChange('planType', val, 1)\n }}\n required={planType.required}\n error={hasError('planType')}\n disabled={false}\n helperText={getErrorMessage('planType')}\n membershipTypeId={membershipType.value} \n blankAllowed={true}\n />\n \n \n onChange('membershipType', val)}\n required={membershipType.required}\n disabled={true}\n />\n \n \n onChange('oneTimeFee', val)}\n required={oneTimeFee.required}\n error={hasError('oneTimeFee')}\n disabled={true}\n helperText={getErrorMessage('oneTimeFee')}\n isNumericOnly\n />\n \n \n onChange('monthlyFee', val)}\n required={monthlyFee.required}\n error={hasError('monthlyFee')}\n disabled={true}\n helperText={getErrorMessage('monthlyFee')}\n isNumericOnly\n />\n \n \n onChange('totalPayment', val)}\n required={totalPayment.required}\n error={hasError('totalPayment')}\n disabled={true}\n helperText={getErrorMessage('totalPayment')}\n isNumericOnly\n />\n \n \n onChange('membershipEffectiveDate', date)}\n required={membershipEffectiveDate.required}\n error={hasError('membershipEffectiveDate')}\n disabled={true}\n helperText={getErrorMessage('membershipEffectiveDate')}\n disablePast={true}\n />\n \n \n {\n onChange('discountCode', val ? val.value : undefined);\n if(val) {\n onChange('totalPayment', getTotal(val, planType.value));\n }\n else{\n onChange('totalPayment', getTotal({\n isPercentage: false,\n discountedAmount: 0\n }, planType.value));\n }\n }}\n required={discountCode.required}\n disabled={false}\n discountOptions={discountOptions}\n />\n \n \n )\n}\n\nconst mapStateToProps = state => {\n return {\n accountInfo: state.accountInfo\n }\n}\n \nexport default connect(mapStateToProps)(StepTwo);\n","const autoPaymentDays = [\n {\n value: 1,\n label: '01'\n },\n {\n value: 2,\n label: '02'\n },\n {\n value: 3,\n label: '03'\n },\n {\n value: 4,\n label: '04'\n },\n {\n value: 5,\n label: '05'\n },\n {\n value: 6,\n label: '06'\n },\n {\n value: 7,\n label: '07'\n },\n {\n value: 8,\n label: '08'\n },\n {\n value: 9,\n label: '09'\n },\n {\n value: 10,\n label: '10'\n },\n {\n value: 11,\n label: '11'\n },\n {\n value: 12,\n label: '12'\n },\n {\n value: 13,\n label: '13'\n },\n {\n value: 14,\n label: '14'\n },\n {\n value: 15,\n label: '15'\n }/*,\n {\n value: '16',\n label: '16'\n },\n {\n value: '17',\n label: '17'\n },\n {\n value: '18',\n label: '18'\n },\n {\n value: '19',\n label: '19'\n },\n {\n value: '20',\n label: '20'\n },\n {\n value: '21',\n label: '21'\n },\n {\n value: '22',\n label: '22'\n },\n {\n value: '23',\n label: '23'\n }*/\n]\n\nexport default autoPaymentDays;","import {\n TextField,\n Grid\n} from '@material-ui/core';\nimport {KeyboardDatePicker, MuiPickersUtilsProvider} from \"@material-ui/pickers\";\nimport MomentUtils from '@date-io/moment';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\n\nconst PaymentCardInput = props => {\n\n const {cardDetails, onChange} = props;\n return \n \n onChange('cardNumber', event.target.value)}\n />\n \n \n \n {\n const dateInfo = moment(date).startOf('month');\n if( date && moment(date).isValid() && dateInfo.isSameOrAfter(moment().startOf('month'))) {\n onChange('cardExpiryDate', date)\n }\n else onChange('cardExpiryDate', null);\n }}\n required={cardDetails.cardExpiryDate.required}\n error={cardDetails.cardExpiryDate.error}\n helperText={cardDetails.cardExpiryDate.helperText}\n size='small'\n views={['year', 'month']}\n disablePast={true}\n format=\"MM-yyyy\"\n />\n \n \n \n onChange('cardCVVNumber', event.target.value)}\n />\n \n \n}\n\nPaymentCardInput.propTypes = {\n onChange: PropTypes.func.isRequired,\n cardDetails: PropTypes.shape({\n cardNumber: PropTypes.shape({\n value: PropTypes.string,\n required: PropTypes.bool,\n error: PropTypes.bool,\n helperText: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object\n ])\n }),\n cardExpiryDate: PropTypes.shape({\n value: PropTypes.object,\n required: PropTypes.bool,\n error: PropTypes.bool,\n helperText: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object\n ])\n }),\n cardCVVNumber: PropTypes.shape({\n value: PropTypes.string,\n required: PropTypes.bool,\n error: PropTypes.bool,\n helperText: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object\n ])\n }) \n }).isRequired\n}\n\nexport default PaymentCardInput","export const isElevatedPermissions = (accountInfo) => { \n const groups = accountInfo?.account?.idToken?.groups; \n if(groups){\n const isElevated = (groups.includes('a7244e88-0ece-4efd-ab25-5244f93e544c') || groups.includes('796cf834-ed16-4e33-8c13-cfc324523e87'))\n return isElevated;\n }\n return false;\n}","import {useState, useEffect} from 'react';\nimport AutocompleteDropdown from \"../../../components/FormInputs/AutocompleteDropdown/AutocompleteDropdown\";\nimport {getPaymentType} from \"../../../apiCalls/getPaymentType\";\nimport axios from 'axios';\nimport PropTypes from \"prop-types\";\nimport Notification from \"../../../components/Notification/Notification\";\nimport {connect} from 'react-redux';\nimport { isElevatedPermissions } from '../../../helperFunctions/Security';\n\nconst DEFAULT_NOTIFICATION = {\n type: \"error\",\n message: \"\",\n open: false\n};\n\nconst PaymentTypeSmartDropDown = props => {\n\n const {label, value, onChange, required, disabled, error, helperText, accountInfo, hasElevatedPermissions} = props;\n const [options, setOptions] = useState([]);\n const [validOptions, setValidOptions] = useState([]);\n const [loading, setLoading] = useState(false);\n const [notification, setNotification] = useState({...DEFAULT_NOTIFICATION});\n const [authToken, setAuthToken] = useState(\"\");\n const [withHighPrivileges, setWithHighPrivileges] = useState(false);\n\n useEffect(() => {\n if(accountInfo && accountInfo.jwtIdToken) {\n setAuthToken(accountInfo.jwtIdToken);\n }\n }, [accountInfo])\n\n const loadOptions = () => {\n const hp = isElevatedPermissions(accountInfo);\n setWithHighPrivileges(hp);\n setOptions(validOptions.filter(d => d.isBackOfficeOnly === false || withHighPrivileges === true)\n .map(newD => {\n return {\n label: newD.paymentTypeDesc,\n value: newD.paymentTypeId\n }\n }))\n }\n\n useEffect(() => {\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n if(authToken) { \n setLoading(true)\n getPaymentType(source, authToken)\n .then(response => { \n setValidOptions(response);\n setLoading(false);\n })\n .catch(error => {\n if (axios.isCancel(error)) {\n console.log(\"Cancelled payment type options fetching\");\n } else {\n console.log('Failed to fetch payment type options', error);\n setLoading(false);\n setNotification({\n open: true,\n type: \"error\",\n message: \"Failed to fetch center options, please try again\"\n });\n }\n });\n }\n\n return () => source.cancel();\n }, [authToken]); \n\n useEffect(() => {\n loadOptions();\n }, [validOptions])\n\n return <>\n \n {\n setNotification({...DEFAULT_NOTIFICATION})\n }}\n />\n \n}\n\nPaymentTypeSmartDropDown.propTypes = {\n label: PropTypes.string.isRequired, \n value: PropTypes.string.isRequired, \n onChange: PropTypes.func.isRequired, \n required: PropTypes.bool,\n disabled: PropTypes.bool, \n error: PropTypes.bool, \n helperText: PropTypes.string\n}\n\nconst mapStateToProps = state => {\n return {\n accountInfo: state.accountInfo\n }\n}\n \nexport default connect(mapStateToProps)(PaymentTypeSmartDropDown);\n\n","import {getAxiosInstance} from \"../config/axios\";\nimport environment from \"../config/environment\";\n\nexport const getPaymentType = (source, authToken) => {\n return new Promise((resolve, reject) => {\n getAxiosInstance(authToken).get(`${environment().functionsURL}payment-type`,\n {\n cancelToken: source.token \n })\n .then(response => {\n if(response && response.status === 200) {\n if(response && response.data && response.data.length) {\n resolve(response.data);\n }\n else {\n resolve([]);\n }\n }\n reject(response);\n })\n .catch(error => reject(error))\n })\n}\n\n","import {FormControlLabel, Checkbox} from '@material-ui/core';\nimport PropTypes from 'prop-types';\n\nconst CheckboxField = props => {\n const {value, onChange, name, label, disabled, required, size} = props;\n\n return onChange(event.target.checked)}\n name={name}\n color=\"secondary\"\n disabled={disabled}\n required={required}\n size={size}\n />\n }\n label={label}\n />\n}\n\nCheckboxField.propTypes = {\n value: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n size: PropTypes.oneOf(['small', 'medium'])\n}\n\nexport default CheckboxField;","import {useEffect} from 'react';\nimport {\n Grid,\n makeStyles,\n List,\n ListItem,\n ListItemText,\n Divider,\n TextField as MUITextField\n} from '@material-ui/core';\nimport TextField from \"../../../components/FormInputs/TextField/TextField\";\nimport AutocompleteDropdown from \"../../../components/FormInputs/AutocompleteDropdown/AutocompleteDropdown\";\nimport autoPaymentDays from \"../../../constants/autoPaymentDays\";\nimport moment from 'moment';\nimport PaymentCardInput from \"../../../components/PaymentCardInput/PaymentCardInput\";\nimport PaymentTypeSmartDropDown from \"../../common/PaymentTypeSmartDropDown/PaymentTypeSmartDropDown\";\nimport CheckboxField from \"../../../components/FormInputs/CheckboxField/CheckboxField\";\n\nconst useStyles = makeStyles(theme => ({\n lineItem: {\n padding: '0px'\n },\n textBox: {\n minHeight: '100px',\n height: '100px'\n },textBoxHolder: {\n minHeight: '120px',\n height: '120px'\n },\n}))\n\nconst StepThree = (props) => {\n const {data, stepNum, errors, setErrors, hasError, getErrorMessage, onChange, onRequiredChange} = props;\n\n const {nameOnTheCard, cardNumber, cardExpiryDate, cardCVVNumber, enableAutomaticPayments,\n dayOfAutomaticPayment, paymentType, comments} = data[stepNum];\n\n const {oneTimeFee, monthlyFee, monthsPay, totalPayment, hasElevatedPermissions} = data[1];\n\n useEffect(() => {\n if(enableAutomaticPayments.value && !dayOfAutomaticPayment.value) {\n setErrors(prevState => {\n return {\n ...prevState,\n dayOfAutomaticPayment: 'Day of auto payment is required if enable auto payment is true.'\n }\n });\n }\n else {\n if(errors.dayOfAutomaticPayment) {\n setErrors(prevState => {\n const newErrors = {...prevState};\n delete newErrors['dayOfAutomaticPayment'];\n return newErrors;\n });\n }\n }\n\n }, [enableAutomaticPayments, dayOfAutomaticPayment]);\n\n useEffect(() => {\n const isRequired = paymentType.value === 'C' ? true : false;\n onRequiredChange('nameOnTheCard', isRequired);\n onRequiredChange('cardNumber', isRequired);\n onRequiredChange('cardExpiryDate', isRequired);\n onRequiredChange('cardCVVNumber', isRequired);\n\n if(!isRequired) {\n setErrors(prevState => {\n const newErrors = {...prevState};\n delete newErrors['nameOnTheCard'];\n delete newErrors['cardNumber'];\n delete newErrors['cardExpiryDate'];\n delete newErrors['cardCVVNumber'];\n return newErrors;\n });\n }\n\n /* Removing automatic payment */\n if(paymentType.value !== 'C'){\n onChange('enableAutomaticPayments', false);\n onChange('dayOfAutomaticPayment', '01')\n }\n }, [paymentType])\n\n const classes = useStyles();\n\n return \n \n onChange('paymentType', val)}\n required={paymentType.required}\n error={hasError('paymentType')}\n helperText={getErrorMessage('paymentType')} \n hasElevatedPermissions={hasElevatedPermissions}\n />\n \n {\n paymentType.value === 'C' ?\n <>\n \n \n \n \n onChange('nameOnTheCard', val)}\n required={nameOnTheCard.required}\n error={hasError('nameOnTheCard')}\n disabled={false}\n helperText={getErrorMessage('nameOnTheCard')}\n />\n \n \n {\n onChange('enableAutomaticPayments', val);\n if(!val) onChange('dayOfAutomaticPayment', '01')\n }}\n size=\"medium\"\n name=\"enable-auto-payments\"\n />\n \n \n onChange('dayOfAutomaticPayment', val)}\n required={dayOfAutomaticPayment.required}\n error={hasError('dayOfAutomaticPayment')}\n disabled={!enableAutomaticPayments.value}\n helperText={getErrorMessage('dayOfAutomaticPayment')} \n />\n \n
\n :\n null\n }\n \n onChange('comments', val)}\n required={false}\n multiline={true} \n rows={4} \n rowsMax={10}\n />\n \n \n \n \n {`Transaction Date: ${moment().format('MM/DD/YYYY')}`}\n \n \n \n {`One Time Fee: $${oneTimeFee.value}`}\n \n \n \n {`Monthly Fee: $${monthlyFee.value}`}\n \n \n \n {`Number Of Monthly Payments: ${monthsPay.value}`}\n \n \n {`Total: $${totalPayment.value}`}\n \n \n \n
\n}\n\nexport default StepThree","const createPalette = (color) => {\n const colorHexValue = color.replace('#', '')\n const colorIntValue = parseInt(colorHexValue, 16)\n const red = (colorIntValue >> 16) & 255;\n const green = (colorIntValue >> 8) & 255;\n const blue = colorIntValue & 255;\n\n return {\n opacity25: `rgba(${red}, ${green}, ${blue}, 0.25)`,\n opacity50: `rgba(${red}, ${green}, ${blue}, 0.5)`,\n opacity75: `rgba(${red}, ${green}, ${blue}, 0.75)`,\n opacity100: `rgba(${red}, ${green}, ${blue}, 1)`\n }\n}\n\nexport const COLOR_PALETTE = {\n green: createPalette('#255c09'),\n orange: createPalette('#fea412'),\n red: createPalette('#f44336')\n}\n\n","import {\n Grid,\n Button\n} from '@material-ui/core';\nimport {COLOR_PALETTE} from \"../../../config/colorPalette\";\nimport {Link} from 'react-router-dom';\n\nconst ConfirmationPage = props => {\n const {data} = props;\n\n return \n \n

Congratulations you are an Orange Member!

\n
\n
\n \n

Now you can enjoy all Orange Medical Plan benefits.

\n
\n \n

Your Member ID is \"{data.membershipId}\"

\n
\n \n

You will receive an email with all membership detail information

\n
\n \n \n \n
\n}\n\nexport default ConfirmationPage;","import React, {useState, useEffect} from 'react'\nimport FormWizard from \"./../../../components/FormWizard/FormWizard\";\nimport StepOne from \"./StepOne\";\nimport StepTwo from \"./StepTwo\";\nimport StepThree from \"./StepThree\";\nimport ConfirmationPage from \"./ConfirmationPage\";\nimport {\n Grid\n} from '@material-ui/core';\nimport {saveApplication} from \"../../../apiCalls/application/saveApplication\";\nimport axios from 'axios';\nimport {useLocation} from 'react-router-dom';\nimport moment from 'moment';\nimport {submitApplication} from \"../../../apiCalls/application/submitApplication\";\nimport Notification from \"../../../components/Notification/Notification\";\nimport {connect} from 'react-redux';\nimport { isElevatedPermissions } from '../../../helperFunctions/Security';\nimport calculateEffectiveDate from '../../../helperFunctions/effectiveDate'\n\nconst DEFAULT_NOTIFICATION = {\n type: \"success\",\n message: \"\",\n open: false\n}\n\nconst NewApplication = (props) => {\n\n const {accountInfo} = props;\n\n const [confirmationData, setConfirmationData] = useState(null);\n const [notification, setNotification] = useState({...DEFAULT_NOTIFICATION});\n const [allowAnotherSubmit, setAllowAnotherSubmit] = useState(false);\n const [authToken, setAuthToken] = useState(\"\");\n const location = useLocation();\n\n const DEFAULT_STEPS = [\n {\n label: 'Personal Information',\n component: ,\n data: {\n hasElevatedPermissions: isElevatedPermissions(accountInfo),\n applicationId: {\n required: false,\n value: ''\n },\n memberId: {\n required: false,\n value: ''\n },\n firstName: {\n required: true,\n value: ''\n },\n middleName: {\n required: false,\n value: ''\n },\n lastName: {\n required: true,\n value: ''\n },\n dateOfBirth: {\n required: true,\n value: null\n },\n gender: {\n required: true,\n value: ''\n },\n address: {\n required: true,\n value: null\n },\n primaryPhone: {\n required: true,\n value: ''\n },\n emergencyPhone: {\n required: true,\n value: ''\n },\n email: {\n required: true,\n value: ''\n },\n center: {\n required: true,\n value: ''\n },\n dependents: {\n required: false,\n value: []\n }\n }\n },\n {\n label: 'Plan Information',\n component: ,\n data: {\n hasElevatedPermissions: isElevatedPermissions(accountInfo),\n planType: {\n required: true,\n value: undefined\n },\n membershipType: {\n required: true,\n value: 'I'\n },\n oneTimeFee: {\n required: false,\n value: ''\n },\n monthlyFee: {\n required: false,\n value: ''\n },\n monthsPay: {\n required: false,\n value: ''\n },\n totalPayment: {\n required: false,\n value: ''\n },\n membershipEffectiveDate: {\n required: true,\n value: calculateEffectiveDate()\n },\n discountCode: {\n required: false,\n value: ''\n }\n }\n },\n {\n label: 'Payment',\n component: ,\n data: {\n hasElevatedPermissions: isElevatedPermissions(accountInfo),\n paymentType: {\n required: true,\n value: 'C'\n },\n nameOnTheCard: {\n required: true,\n value: ''\n },\n cardNumber: {\n required: true,\n value: ''\n },\n cardExpiryDate: {\n required: true,\n value: null\n },\n cardCVVNumber: {\n required: true,\n value: ''\n },\n enableAutomaticPayments: {\n required: false,\n value: false\n },\n dayOfAutomaticPayment: {\n required: false,\n value: ''\n },\n comments: {\n required: false,\n value: ''\n }\n }\n }\n ];\n\n const [steps, setSteps] = useState([...DEFAULT_STEPS]);\n\n useEffect(() => {\n if(accountInfo && accountInfo.jwtIdToken) {\n setAuthToken(accountInfo.jwtIdToken);\n }\n }, [accountInfo])\n\n useEffect(() => {\n if(location && location.state && location.state.formData) {\n setSteps(prevSteps => {\n return prevSteps.map((prevStep, index) => {\n const newData = {}\n for(var key in location.state.formData[index]) {\n newData[key] = {\n required: prevStep.data[key]?.required,\n value: location.state.formData[index][key]\n }\n }\n return {\n ...prevStep,\n data: {\n ...prevStep.data,\n ...newData\n \n }\n }\n })\n });\n }\n }, [location.key])\n\n const preparePayload = form => {\n const payload = {\n addressLine1: form.address.value.addressLine1,\n addressLine2: form.address.value.addressLine2,\n addressCity: form.address.value.city,\n addressState: form.address.value.state,\n addressZip: form.address.value.zipCode,\n eMail: form.email,\n primaryPhoneNumber: form.primaryPhone,\n emergencyPhoneNumber: form.emergencyPhone,\n agentCode: accountInfo && accountInfo.account && accountInfo.account.userName ? accountInfo.account.userName : '',\n primaryCenterId: form.center,\n planInfoId: form.planType?.planInfoId,\n applicationId: form.applicationId,\n discountCode: form.discountCode,\n dateOfAutomaticPayment: form.enableAutomaticPayments !== true ? 1 : isNaN(parseInt(form.dayOfAutomaticPayment)) ? moment(form.membershipEffectiveDate).date() : parseInt(form.dayOfAutomaticPayment),\n automaticPaymentDate: form.enableAutomaticPayments !== true ? 1 : isNaN(parseInt(form.dayOfAutomaticPayment)) ? moment(form.membershipEffectiveDate).date() : parseInt(form.dayOfAutomaticPayment),\n automaticCharge: form.enableAutomaticPayments\n }\n\n const members = [{\n firstName: form.firstName,\n lastName: form.lastName,\n dateOfBirth: form.dateOfBirth,\n phoneNumber: form.primaryPhone,\n genderId: form.gender,\n relationshipTypeId: 'P',\n applicationId: form.applicationId,\n memberId: form.memberId\n }]\n\n if(form.dependents && form.dependents.length) {\n for(let i = 0; i < form.dependents.length; i++) {\n members.push({\n firstName: form.dependents[i].firstName,\n lastName: form.dependents[i].lastName,\n dateOfBirth: form.dependents[i].dateOfBirth,\n phoneNumber: form.dependents[i].phone,\n genderId: form.dependents[i].gender,\n relationshipTypeId: form.dependents[i].relationship.relationshipTypeId,\n applicationId: form.applicationId,\n memberId: form.dependents[i].memberId || undefined\n })\n }\n }\n\n payload.members = members;\n payload.comments = form.comments;\n\n if(form.membershipEffectiveDate) payload.startDate = form.membershipEffectiveDate;\n\n return payload;\n }\n \n const handleNextClick = form => {\n return new Promise((resolve, reject) => {\n saveApplication(axios.CancelToken.source(), preparePayload(form), authToken)\n .then(response => resolve(response))\n .catch(error => reject(error))\n });\n }\n\n const handleFormSubmit = form => { \n const formWithPaymentDetails = {...preparePayload(form)};\n formWithPaymentDetails.initialAmount = form.totalPayment;\n if(form.paymentType === 'C') {\n formWithPaymentDetails.paymentMethod = {\n paymentTypeId: \"card\",\n cardNumber: form.cardNumber,\n cardOwnerName: form.nameOnTheCard,\n cardExpirationMonth: moment(form.cardExpiryDate).format('M'),\n cardExpirationYear: moment(form.cardExpiryDate).format('YYYY'),\n cvcCode: form.cardCVVNumber\n }\n }\n else {\n formWithPaymentDetails.paymentMethod = {\n paymentTypeId: form.paymentType\n }\n }\n\n submitApplication(axios.CancelToken.source(), formWithPaymentDetails, authToken)\n .then(response => { \n if(response && response.success !== undefined && response.success && response.application.membershipId > 0) {\n setConfirmationData({\n membershipId: response.application.membershipId\n });\n }\n else {\n setNotification({\n open: true,\n type: \"error\",\n message: response && response.error && response.error.message ? response.error.message : `Failed to submit application, please try again.`\n });\n setAllowAnotherSubmit(true);\n }\n })\n .catch(error => {\n const response = error.response.data;\n console.log('Failed to submit application', error)\n setNotification({\n open: true,\n type: \"error\",\n message: response && response.error && response.error.message ? response.error.message : `Failed to submit application, please try again.`\n });\n setAllowAnotherSubmit(true);\n });\n \n }\n return \n \n {\n confirmationData ?\n :\n setAllowAnotherSubmit(false)}\n /> \n }\n \n {\n setNotification({...DEFAULT_NOTIFICATION})\n }}\n />\n \n}\n\nconst mapStateToProps = state => {\n return {\n accountInfo: state.accountInfo\n }\n}\n \nexport default connect(mapStateToProps)(NewApplication)","import {getAxiosInstance} from \"../../config/axios\";\nimport environment from \"../../config/environment\";\n\nexport const submitApplication = (source, application, authToken) => {\n return new Promise((resolve, reject) => {\n getAxiosInstance(authToken).post(`${environment().functionsURL}application`,\n {\n ...application\n },\n {\n cancelToken: source.token \n })\n .then(response => {\n if(response && response.status === 200 && response.data) {\n resolve(response.data);\n }\n else reject(response);\n })\n .catch(error => reject(error));\n })\n}","import {getAxiosInstance} from \"../../config/axios\";\nimport environment from \"../../config/environment\";\n\nexport const saveApplication = (source, application, authToken) => {\n return new Promise((resolve, reject) => {\n getAxiosInstance(authToken).post(`${environment().functionsURL}membership-application`,\n {\n ...application\n },\n {\n cancelToken: source.token \n })\n .then(response => resolve(response))\n .catch(error => reject(error))\n })\n}","import React from 'react';\nimport {TableCell, Typography} from '@material-ui/core';\nimport moment from 'moment';\nimport NumberFormat from 'react-number-format'\n\nconst CommissionRowTemplate = props => {\n const {data, columnOrder} = props;\n\n return columnOrder.map(column => {\n if(column.showColumn) {\n if(column.id === 'status') {\n return {data.isProcessed ? \"Processed\" : \"Draft\"}\n }\n if(column.id === 'commissionDate') {\n return {moment(data[column.id]).format('MM/DD/YYYY')}\n }\n if(column.id === 'commissionAmount') {\n return \n }\n return {data[column.id]}\n }\n return null;\n })\n}\n\nexport default CommissionRowTemplate;","const commissionTypes = [\n {\n label: 'Commission',\n value: 'Commission'\n },\n {\n label: 'Residual',\n value: 'Residual'\n },\n {\n label: 'Refound',\n value: 'Refound'\n }\n]\n\nexport default commissionTypes;","import {useState, useEffect} from 'react';\nimport {\n Accordion,\n AccordionSummary,\n AccordionDetails,\n Typography,\n Grid,\n makeStyles\n} from '@material-ui/core';\nimport {ExpandMore} from '@material-ui/icons';\nimport TextField from \"../../components/FormInputs/TextField/TextField\";\nimport AutocompleteDropdown from \"../../components/FormInputs/AutocompleteDropdown/AutocompleteDropdown\";\nimport applicationStatus from \"../../constants/applicationStatus\";\nimport commissionTypes from \"../../constants/commissionTypes\";\nimport Button from \"../../components/FormInputs/Button/Button\";\nimport PropTypes from 'prop-types';\nimport DateTimeField from \"../../components/FormInputs/DateTimeField/DateTimeField\";\n\nconst DEFAULT_FORM_VALUES = {\n memberName: '',\n status: '',\n commissionType: '',\n filterStartDate: null,\n filterEndDate: null\n}\n\nconst useStyles = makeStyles((theme) => ({\n heading: {\n fontSize: theme.typography.pxToRem(15),\n flexBasis: '33.33%',\n flexShrink: 0\n },\n secondaryHeading: {\n fontSize: theme.typography.pxToRem(15),\n color: theme.palette.text.secondary,\n },\n}));\n\nconst CommissionFilters = (props) => {\n\n const [expanded, setExpanded] = useState(false);\n const [formValues, setFormValues] = useState({...DEFAULT_FORM_VALUES});\n const [filterCount, setFilterCount] = useState(0);\n\n const {onFilterChange} = props;\n const classes = useStyles();\n\n useEffect(() => {\n \n }, [formValues])\n\n const handleFormChange = (key, value) => {\n setFormValues(prevState => {\n return {\n ...prevState,\n [key]: value\n }\n })\n }\n\n const handleApplyFilters = () => {\n let count = 0;\n for(const field in formValues) {\n if(formValues[field]) count = count+1;\n }\n setFilterCount(count);\n onFilterChange(formValues);\n setExpanded(false);\n }\n\n const handleClearFilters = () => {\n setFormValues({...DEFAULT_FORM_VALUES});\n setFilterCount(0);\n onFilterChange({...DEFAULT_FORM_VALUES});\n setExpanded(false);\n }\n\n return setExpanded(prevState => !prevState)}>\n }\n aria-controls=\"panel-content\"\n id=\"panel-header\"\n >\n Filters\n {`${filterCount} filter(s) applied`}\n \n \n \n \n handleFormChange('memberName', val)}\n />\n \n \n handleFormChange('commissionType', val)}\n />\n \n \n handleFormChange('status', val)}\n />\n \n \n handleFormChange('filterStartDate', date)}\n />\n \n \n handleFormChange('filterEndDate', date)}\n />\n \n \n \n   \n \n \n \n \n \n}\n\nCommissionFilters.propTypes = {\n onFilterChange: PropTypes.func.isRequired\n}\n\nexport default CommissionFilters;","import {getAxiosInstance} from \"../config/axios\";\nimport environment from \"../config/environment\";\n\nexport const getCommissionList = (source, index, pageSize, filters, authToken) => {\n return new Promise((resolve, reject) => {\n getAxiosInstance(authToken).post(`${environment().functionsURL}commission-history/filter`,\n {\n offset: index,\n take: pageSize, \n ...filters\n },\n {\n cancelToken: source.token \n })\n .then(response => {\n if(response && response.status === 200) {\n if(response && response.data && response.data.data && response.data.data.length) {\n resolve(response.data);\n }\n else {\n resolve({\n data: [],\n count: 0\n });\n }\n }\n reject(response);\n })\n .catch(error => reject(error))\n })\n}","import {useState, useEffect, useCallback} from 'react';\nimport Table from \"../../components/Table/Table\";\nimport CommissionRowTemplate from \"./CommissionRowTemplate\";\nimport {\n Grid,\n Typography\n} from '@material-ui/core';\nimport CommissionFilters from \"./CommissionFilters\";\nimport {getCommissionList} from \"../../apiCalls/getCommissionList\";\nimport {debounce} from 'lodash';\nimport axios from 'axios';\nimport Notification from \"../../components/Notification/Notification\";\nimport {connect} from 'react-redux';\nimport ExcelExporter from '../../components/ExcelExporter/ExcelExporter';\n\nconst DEFAULT_COMMISSION_LIST_HEADCELLS = [\n {id: 'commissionType', label: 'Type of Commission', showColumn: true, sortable: 'true'},\n {id: 'applicationId', label: 'Application Number', showColumn: true, sortable: 'true'},\n {id: 'commissionDate', label: 'Commission Date', showColumn: true, sortable: 'true'},\n {id: 'memberName', label: 'Member Name', showColumn: true, sortable: 'true'},\n {id: 'commissionAmount', label: 'Commission Amount', showColumn: true, sortable: 'true'},\n {id: 'status', label: 'Status', showColumn: true, sortable: 'true'}\n]\n\nconst DEFAULT_COMMISSIONS_PER_PAGE = 50;\n\nconst DEFAULT_NOTIFICATION = {\n type: \"success\",\n message: \"\",\n open: false\n}\n\nconst CommissionsList = (props) => {\n\n const {accountInfo} = props;\n\n const [refreshList, setRefreshList] = useState(false);\n const [data, setData] = useState([]);\n const [pageNumber, setPageNumber] = useState(1);\n const [totalPages, setTotalPages] = useState(1);\n const [loading, setLoading] = useState(false);\n const [filterValues, setFilterValues] = useState({});\n const [notification, setNotification] = useState({...DEFAULT_NOTIFICATION});\n const [authToken, setAuthToken] = useState(\"\");\n const [totalRecords, setTotalRecords] = useState([]);\n\n const debounceSetPageNumber = useCallback(debounce(() => setPageNumber(0), 1000), []);\n\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n\n useEffect(() => {\n if(authToken && accountInfo?.account?.userName) {\n getCommissionList(source, 0, 10000, { agentCode: accountInfo.account.userName }, authToken)\n .then((response) => setTotalRecords(response?.data))\n .catch((err) => setTotalRecords([]));\n }\n }, [authToken, accountInfo])\n\n useEffect(() => {\n if(accountInfo && accountInfo.jwtIdToken) {\n setAuthToken(accountInfo.jwtIdToken);\n }\n }, [accountInfo])\n\n useEffect(() => {\n if(pageNumber === 0) {\n return setPageNumber(1);\n }\n\n if(authToken && accountInfo && accountInfo.account && accountInfo.account.userName) {\n fetchCommissionList(accountInfo.account.userName, authToken);\n }\n\n return () => source.cancel();\n }, [pageNumber, accountInfo, authToken]);\n\n const loadMoreRecords = () => {\n setLoading(true);\n if(pageNumber < totalPages) {\n setPageNumber(prevPageNumber => prevPageNumber+1);\n }\n }\n\n const fetchCommissionList = (agentCode, aT) => {\n setLoading(true);\n getCommissionList(source, ((pageNumber-1) * DEFAULT_COMMISSIONS_PER_PAGE), DEFAULT_COMMISSIONS_PER_PAGE, \n {\n ...filterValues,\n agentCode: agentCode\n }, aT)\n .then(response => {\n if(pageNumber === 1) {\n setData(response.data);\n const absolutePages = Number(response.count) / DEFAULT_COMMISSIONS_PER_PAGE;\n setTotalPages( absolutePages === Math.floor(absolutePages) ? absolutePages : Math.floor(absolutePages) + 1 );\n }\n else {\n setData(prevData => {\n return [\n ...data,\n ...response.data\n ]\n })\n };\n setLoading(false);\n setRefreshList(true);\n })\n .catch(error => {\n if (axios.isCancel(error)) {\n console.log(\"Cancelled commission list fetching\");\n } else {\n console.log('Error fetching commision list', error);\n setNotification({\n open: true,\n type: \"error\",\n message: \"Failed to fetch commissions, please try again\"\n });\n }\n });\n }\n\n const handleFilterChange = newFilterValues => {\n setFilterValues(prevValues => {\n return {\n ...prevValues,\n memberName: newFilterValues.memberName || undefined,\n isProcessed: newFilterValues.status === 'Processed' ? true : \n (newFilterValues.status === 'Draft' ? false : undefined),\n commissionType: newFilterValues.commissionType || undefined,\n filterStartDate: newFilterValues.filterStartDate || undefined,\n filterEndDate: newFilterValues.filterEndDate || undefined\n }\n });\n debounceSetPageNumber();\n }\n\n return \n \n My Commissions\n \n \n \n \n \n \n }\n loadMoreRecords={loadMoreRecords}\n identifier=\"commissionHistoryId\"\n handleSingleClickRow={() => console.log('Single Click On Row')}\n handleDoubleClickRow={() => console.log('Double Click On Row')}\n tableHeight={70}\n handleRowsOrderChange={() => console.log('Rows Order Changed')}\n setRefreshTable={setRefreshList}\n refreshTable={refreshList}\n sortBy=\"applicationNumber\"\n sortOrder=\"asc\"\n />\n \n {\n setNotification({...DEFAULT_NOTIFICATION})\n }}\n />\n \n}\n\nconst mapStateToProps = state => {\n return {\n accountInfo: state.accountInfo\n }\n}\n \nexport default connect(mapStateToProps)(CommissionsList);","import Paper from '@material-ui/core/Paper';\nimport {\n Chart,\n BarSeries,\n Title,\n ArgumentAxis,\n ValueAxis,\n} from '@devexpress/dx-react-chart-material-ui';\nimport {Animation} from '@devexpress/dx-react-chart';\n\nconst TargetComparison = props => {\n\n const {barChart} = props; \n \n return \n \n \n \n \n \n <Animation/>\n </Chart>\n </Paper>\n}\n\nexport default TargetComparison;","import {\n Paper,\n withStyles\n} from '@material-ui/core';\nimport {\n Chart,\n PieSeries,\n Title,\n Legend\n} from '@devexpress/dx-react-chart-material-ui';\n\nconst styles = theme => ({\n item: {\n flexDirection: 'row-reverse',\n },\n label: {\n textAlign: 'right',\n },\n});\n \nconst Item = withStyles(styles)(({ classes, ...restProps }) => (\n <Legend.Item {...restProps} className={classes.item} />\n));\n \nconst Label = withStyles(styles)(({ classes, ...restProps }) => (\n <Legend.Label {...restProps} className={classes.label} />\n));\n\nconst ProductsSold = props => {\n\n const {pieChart} = props;\n return <Paper> \n <Chart data={pieChart}>\n <PieSeries valueField=\"value\" argumentField=\"label\"/>\n <Title text=\"Products Sold\"/>\n <Legend itemComponent={Item} labelComponent={Label} />\n </Chart>\n </Paper>\n}\n\nexport default ProductsSold;","import {useState, useEffect} from 'react'\nimport {\n Grid,\n Typography\n} from '@material-ui/core';\nimport TargetComparison from \"./TargetComparison\";\nimport ProductsSold from \"./ProductsSold\";\nimport {getAgentPerformance} from \"../../apiCalls/getAgentPerformance\";\nimport axios from 'axios';\nimport Notification from \"../../components/Notification/Notification\";\nimport moment from 'moment';\nimport {connect} from 'react-redux';\n\nconst DEFAULT_NOTIFICATION = {\n type: \"success\",\n message: \"\",\n open: false\n}\n\nconst DEFAULT_DATA = {\n barChart: [\n {key: 'Actual', value: 0},\n {key: 'Target', value: 0}\n ],\n pieChart: [\n {value: 0, label: 'None'}\n ]\n}\n\nconst Performance = props => {\n\n const {accountInfo} = props;\n\n const [data, setData] = useState({...DEFAULT_DATA});\n const [notification, setNotification] = useState({...DEFAULT_NOTIFICATION});\n const [authToken, setAuthToken] = useState(\"\");\n\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n\n useEffect(() => {\n if(accountInfo && accountInfo.jwtIdToken) {\n setAuthToken(accountInfo.jwtIdToken);\n }\n }, [accountInfo])\n\n useEffect(() => {\n if(accountInfo && accountInfo.account && accountInfo.account.userName && authToken) {\n getAgentPerformance(source, {\n year: moment().format('YYYY'),\n month: moment().format('M'),\n agentCode: accountInfo.account.userName\n }, authToken)\n .then(response => {\n setData({\n barChart: [\n {key: 'Actual', value: response.actual || 0},\n {key: 'Target', value: response.salesTarget || 0}\n ],\n pieChart: [...response.distribution]\n })\n })\n .catch(error => {\n if (axios.isCancel(error)) {\n console.log(\"Cancelled fetching performance\");\n } else {\n console.log('Error fetching agent performance', error);\n setNotification({\n open: true,\n type: \"error\",\n message: \"Failed to fetch agent performance, please try again\"\n });\n }\n setData({...DEFAULT_DATA});\n })\n }\n\n return () => source.cancel();\n }, [accountInfo, authToken]);\n\n return <Grid container spacing={2} style={{width: '100%', padding: '20px'}}>\n <Grid item xs={12}>\n <Typography variant=\"h5\">My Performance</Typography>\n </Grid>\n <Grid item xs={6}>\n <TargetComparison barChart={[...data.barChart]}/>\n </Grid>\n <Grid item xs={6}>\n <ProductsSold pieChart={[...data.pieChart]}/>\n </Grid>\n <Notification\n open={notification.open}\n type={notification.type}\n message={notification.message}\n onClose={() => {\n setNotification({...DEFAULT_NOTIFICATION})\n }}\n />\n </Grid>\n}\n\nconst mapStateToProps = state => {\n return {\n accountInfo: state.accountInfo\n }\n}\n\nexport default connect(mapStateToProps)(Performance)","import {getAxiosInstance} from \"../config/axios\";\nimport environment from \"../config/environment\";\n\nexport const getAgentPerformance = (source, filters, authToken) => {\n return new Promise((resolve, reject) => {\n getAxiosInstance(authToken).post(`${environment().functionsURL}performance`,\n {...filters},\n {\n cancelToken: source.token \n })\n .then(response => {\n if(response && response.status === 200) {\n if(response && response.data && response.data.length) {\n resolve(response.data[0]);\n }\n else resolve({\n actual: 0,\n salesTarget: 0,\n distribution: [\n {value: 0, label: 'None'}\n ]\n }); \n }\n })\n .catch(error => reject(error))\n })\n}\n\n","import React from 'react'\nimport {\n PersonAdd,\n ExitToApp,\n ListAlt,\n Home,\n MonetizationOn,\n TrendingUp\n} from '@material-ui/icons'\nimport ApplicationsList from \"./../features/Application/ApplicationsList\";\nimport NewApplication from \"./../features/Application/NewApplication/NewApplication\";\nimport CommissionsList from \"./../features/Commission/CommissionsList\";\nimport Performance from \"./../features/Performance/Performance\";\n\nconst routes = [\n {\n linkName: 'Home',\n path: '/',\n component: <NewApplication />,\n showInNavigation: false,\n icon: <Home />\n },\n {\n linkName: 'New Application',\n path: '/new',\n component: <NewApplication />,\n showInNavigation: true,\n icon: <PersonAdd />\n },\n {\n linkName: 'Applications',\n path: '/applications',\n component: <ApplicationsList />,\n showInNavigation: true,\n icon: <ListAlt />\n },\n {\n linkName: 'Commissions',\n path: '/commissions',\n component: <CommissionsList />,\n showInNavigation: true,\n icon: <MonetizationOn />\n },\n {\n linkName: 'Performance',\n path: '/performance',\n component: <Performance />,\n showInNavigation: true,\n icon: <TrendingUp />\n },\n {\n linkName: 'Signout',\n showInNavigation: true,\n icon: <ExitToApp />\n }\n]\n\nexport default routes","export default __webpack_public_path__ + \"static/media/companyLogo.c359e370.png\";","import React from 'react';\nimport clsx from 'clsx';\nimport { \n makeStyles, \n useTheme,\n Drawer,\n AppBar,\n Toolbar,\n List,\n CssBaseline,\n Typography,\n Divider,\n IconButton,\n ListItem,\n ListItemIcon,\n ListItemText,\n Grid\n} from '@material-ui/core';\nimport {\n Menu,\n ChevronLeft,\n ChevronRight\n} from '@material-ui/icons';\nimport {Link} from 'react-router-dom';\nimport companyLogo from \"../../assets/media/companyLogo.png\";\nimport {COLOR_PALETTE} from \"../../config/colorPalette\";\nimport {connect} from 'react-redux';\nimport stethoscope from \"../../assets/media/stethoscope.png\";\n\nconst drawerWidth = 240;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n },\n appBar: {\n zIndex: theme.zIndex.drawer + 1,\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n backgroundColor: '#ffffff'\n },\n appBarShift: {\n marginLeft: drawerWidth,\n width: `calc(100% - ${drawerWidth}px)`,\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n menuButton: {\n marginRight: 36,\n color: COLOR_PALETTE.orange.opacity100\n },\n hide: {\n display: 'none',\n },\n drawer: {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: 'nowrap',\n },\n drawerOpen: {\n width: drawerWidth,\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n drawerClose: {\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: 'hidden',\n width: theme.spacing(7) + 1,\n [theme.breakpoints.up('sm')]: {\n width: theme.spacing(9) + 1,\n },\n },\n toolbar: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n padding: theme.spacing(0, 1),\n // necessary for content to be below app bar\n ...theme.mixins.toolbar,\n },\n content: {\n overflowY: 'hidden',\n marginTop: 65,\n width: '100%'\n },\n link: {\n textDecoration: 'none',\n color: COLOR_PALETTE.green.opacity100\n },\n agentInfo: {\n color: COLOR_PALETTE.green.opacity100,\n float: 'right',\n padding: '2px 6px',\n fontSize: 'sm',\n verticalAlign: 'middle'\n },\n padded: {\n paddingTop: theme.spacing(1)\n }\n}));\n\nconst Navigation = (props) => {\n const classes = useStyles();\n const theme = useTheme();\n const [open, setOpen] = React.useState(false);\n\n const {routes, children, accountInfo, logout} = props\n\n const handleDrawerOpen = () => {\n setOpen(true);\n };\n\n const handleDrawerClose = () => {\n setOpen(false);\n };\n\n return (\n <div className={classes.root}>\n <CssBaseline />\n <AppBar\n position=\"fixed\"\n className={clsx(classes.appBar, {\n [classes.appBarShift]: open,\n })}\n >\n <Toolbar>\n <Grid container>\n <Grid item xs={1}><IconButton\n color=\"inherit\"\n aria-label=\"open drawer\"\n onClick={handleDrawerOpen}\n edge=\"start\"\n className={clsx(classes.menuButton, {\n [classes.hide]: open,\n })}\n >\n <Menu />\n </IconButton></Grid>\n <Grid item xs={3}><Typography variant=\"h6\" noWrap>\n <img src={companyLogo} alt=\"Company Logo\" height=\"40\" />\n </Typography></Grid>\n <Grid item xs={7} className={classes.padded}>\n <img src={stethoscope} className={classes.agentInfo} alt=\"Company Logo\" height=\"25\" />\n <Typography className={classes.agentInfo}>\n {\n accountInfo && accountInfo.account && accountInfo.account.name ?\n accountInfo.account.name:\n ''\n }\n </Typography>\n </Grid>\n </Grid>\n </Toolbar>\n </AppBar>\n <Drawer\n variant=\"permanent\"\n className={clsx(classes.drawer, {\n [classes.drawerOpen]: open,\n [classes.drawerClose]: !open,\n })}\n classes={{\n paper: clsx({\n [classes.drawerOpen]: open,\n [classes.drawerClose]: !open,\n }),\n }}\n >\n <div className={classes.toolbar}>\n <IconButton onClick={handleDrawerClose}>\n {theme.direction === 'rtl' ? <ChevronRight /> : <ChevronLeft />}\n </IconButton>\n </div>\n <Divider />\n <List>\n {\n routes.map(route => {\n if(route.showInNavigation) {\n if(route.linkName === 'Signout') {\n return <Link \n to={location => location}\n style={{textDecoration: 'none'}}\n onClick={logout} \n key={route.linkName} \n className={classes.link}> \n <ListItem button>\n <ListItemIcon>{route.icon}</ListItemIcon>\n <ListItemText primary={route.linkName}/>\n </ListItem>\n </Link>\n }\n return <Link to={route.path} key={route.linkName} className={classes.link}> \n <ListItem button>\n <ListItemIcon>{route.icon}</ListItemIcon>\n <ListItemText primary={route.linkName} />\n </ListItem>\n </Link>\n }\n else return null\n })\n }\n </List>\n </Drawer>\n <main className={classes.content}>\n {children}\n </main>\n </div>\n );\n}\n\nconst mapStateToProps = state => {\n return {\n accountInfo: state.accountInfo\n }\n}\n\nexport default connect(mapStateToProps)(Navigation)\n","export default \"data:image/png;base64,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\"","export const actionTypes = {\n INIT_ACCOUNT_INFO: 'INIT_ACCOUNT_INFO'\n}\n\nexport const initAccountInfo = data => {\n return {\n type: actionTypes.INIT_ACCOUNT_INFO,\n payload: data\n }\n}","import {initAccountInfo} from \"./../actions/AccountInfoActions\";\n\nexport const setAccountInfo = data => {\n return dispatch => {\n dispatch(initAccountInfo(data));\n }\n}","import './App.css'\nimport React, {Fragment, useEffect} from 'react'\nimport {BrowserRouter as Router, Route, Switch} from 'react-router-dom'\nimport routes from \"../../config/Routes\"\nimport Navigation from \"../../components/Navigation/Navigation\";\nimport {setAccountInfo} from \"../../redux/middleware/AccountInfoMiddleware\";\nimport {connect} from 'react-redux';\n\nconst App = (props) => {\n\n const {accountInfo, logout, setAccountInfo} = props;\n\n useEffect(() => {\n setAccountInfo(accountInfo)\n }, [accountInfo])\n\n return <Fragment>\n <Router>\n <Navigation routes={routes} logout={logout}>\n <Switch>\n {\n routes.map(route => {\n return <Route exact path={route.path} key={route.linkName}>{route.component}</Route>\n })\n }\n </Switch>\n </Navigation>\n </Router>\n </Fragment>\n}\n\nconst mapStateToProps = state => {\n return {}\n}\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n setAccountInfo: () => dispatch(setAccountInfo(ownProps.accountInfo))\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(App);\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import {COLOR_PALETTE} from \"./colorPalette\";\nimport {createMuiTheme} from '@material-ui/core/styles';\n\nconst BLACK = '#000000';\nconst WHITE = '#FFFFFF';\n\nexport const theme = createMuiTheme({\n typography: {\n fontFamily: ['muli','Helvetica','Arial','Lucida','sans-serif'].join(',')\n },\n palette: {\n common: {\n black: BLACK,\n white: WHITE\n },\n background: {\n paper: WHITE,\n default: WHITE\n },\n primary: {\n light: COLOR_PALETTE.green.opacity50,\n main: COLOR_PALETTE.green.opacity100,\n dark: COLOR_PALETTE.green.opacity100,\n contrastText: WHITE\n },\n secondary: {\n light: COLOR_PALETTE.orange.opacity50,\n main: COLOR_PALETTE.orange.opacity100,\n dark: COLOR_PALETTE.orange.opacity100,\n contrastText: WHITE\n },\n error: {\n light: COLOR_PALETTE.red.opacity50,\n main: COLOR_PALETTE.red.opacity100,\n dark: COLOR_PALETTE.red.opacity100,\n contrastText: WHITE\n },\n text: {\n primary: COLOR_PALETTE.green.opacity100,\n secondary: COLOR_PALETTE.orange.opacity100,\n disabled: \"rgba(0, 0, 0, 0.38)\",\n hint: \"rgba(0, 0, 0, 0.38)\"\n }\n },\n overrides: {\n MuiInputLabel : {\n outlined: {\n transform: \"translate(14px, 10px) scale(1)\"\n }\n },\n MuiOutlinedInput: {\n input: {\n height: '12px' \n }\n },\n MuiFormHelperText: {\n root: {\n margin: '0px'\n },\n marginDense: {\n marginTop: '0px'\n }\n },\n MuiFormLabel: {\n root: {\n fontSize: '13px' \n }\n } \n }\n})","import {MsalAuthProvider, LoginType} from 'react-aad-msal';\nimport environment from \"../config/environment\";\n\nconst tenantId = \"6af0fad1-5ad5-4447-82b9-3e6f1e5fa135\";\nconst clientId = \"8081ae57-0e02-4d58-8ec3-764ae72d1c01\";\n\nconst config = {\n auth: {\n authority: `https://login.microsoftonline.com/${tenantId}`,\n clientId: clientId,\n postLogoutRedirectUri: environment().azureADRedirectURI,\n redirectUri: environment().azureADRedirectURI,\n validateAuthority: true,\n navigateToLoginRequestUrl: true \n },\n cache: {\n cacheLocation: \"localStorage\",\n storeAuthStateInCookie: false\n }\n};\nconst authenticationParameters = {\n scopes: [\n `${clientId}/.default`\n ]\n}\n\nconst options = {\n loginType: LoginType.Redirect,\n tokenRefreshUri: window.location.origin + '/auth.html'\n}\n\nexport const authProvider = new MsalAuthProvider(config, authenticationParameters, options)","import {actionTypes} from './../actions/AccountInfoActions';\n\nconst AccountInfoReducer = (state = {}, action) => {\n const {payload, type} = action;\n switch(type) {\n case actionTypes.INIT_ACCOUNT_INFO:\n return {\n ...state,\n ...payload\n };\n default:\n return state;\n }\n};\n\nexport default AccountInfoReducer;","import {combineReducers} from 'redux';\nimport AccountInfoReducer from \"./AccountInfoReducer\";\n\nconst RootReducer = combineReducers({\n accountInfo: AccountInfoReducer\n});\n\nexport default RootReducer;","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './components/App/App';\nimport reportWebVitals from './reportWebVitals';\nimport {ThemeProvider} from '@material-ui/styles';\nimport {theme} from './config/materialui';\nimport {AzureAD, AuthenticationState} from 'react-aad-msal';\nimport {authProvider} from \"../src/config/authConfig\";\nimport {\n Grid,\n CircularProgress,\n Button\n} from '@material-ui/core';\nimport {COLOR_PALETTE} from \"../src/config/colorPalette\";\nimport thunk from 'redux-thunk';\nimport RootReducer from \"./redux/reducers/RootReducer\";\nimport {Provider} from 'react-redux';\nimport {applyMiddleware, compose, createStore} from 'redux';\nimport environment from \"./config/environment\";\n\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPONSE || compose;\nconst store = createStore(RootReducer, composeEnhancers(applyMiddleware(thunk)));\n\nfunction deleteAllCookies() {\n try{\n // document.cookie.replace(\n // /(?<=^|;).+?(?=\\=|;|$)/g, \n // name => window.location.hostname\n // .split(/\\.(?=[^\\.]+\\.)/)\n // .reduceRight((acc, val, i, arr) => i ? arr[i]='.'+val+acc : (arr[i]='', arr), '')\n // .map(domain => document.cookie=`${name}=;max-age=0;path=/;domain=${domain}`)\n // );\n const cookies = document.cookie.split(\";\");\n for (const cookie of cookies) {\n const eqPos = cookie.indexOf(\"=\");\n const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\n document.cookie = name + \"=;expires=Thu, 01 Jan 1970 00:00:00 GMT\";\n }\n }\n catch(e){\n console.log('something happened that we did not remove cookies, probably Safari crap since Apple is horrible!!')\n }\n}\n\nwindow.localStorage.clear();\ndeleteAllCookies();\n\nReactDOM.render(\n <Provider store={store}>\n <ThemeProvider theme={theme}>\n <AzureAD provider={authProvider} forceLogin={true}> \n {\n ({login, logout, authenticationState, error, accountInfo}) => {\n switch (authenticationState) {\n case AuthenticationState.Authenticated:\n if(accountInfo && accountInfo.account && accountInfo.account.idToken &&\n accountInfo.account.idToken.groups && accountInfo.account.idToken.groups.length) {\n if(accountInfo.account.idToken.groups.includes(environment().agentGroupId)) {\n return <App accountInfo={accountInfo} login={login} logout={logout} />\n }\n }\n return <Grid container alignItems=\"center\" direction=\"column\" style={{padding: '20px'}}>\n <Grid item xs={12} style={{color: COLOR_PALETTE.orange.opacity100}}>\n <h2>Only agents are allowed to access this app!</h2>\n </Grid>\n <Grid item xs={12}>\n <Button variant=\"contained\" color=\"secondary\" onClick={logout}>Login Using Different Account</Button> \n </Grid>\n </Grid>\n\n case AuthenticationState.Unauthenticated:\n return <Grid container alignItems=\"center\" direction=\"column\" style={{padding: '20px'}}>\n <Grid item xs={12} style={{color: COLOR_PALETTE.orange.opacity100}}>\n <h2>We couldn't find your account info, please try logging in again!</h2>\n </Grid>\n <Grid item xs={12}>\n <Button variant=\"contained\" color=\"secondary\" onClick={login}>Login</Button> \n </Grid>\n </Grid>\n\n case AuthenticationState.InProgress:\n return <CircularProgress style={{position: 'absolute', top: '50%', left: '50%'}} />\n \n default:\n return null;\n }\n }\n }\n </AzureAD>\n </ThemeProvider>\n </Provider>,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}