{"version":3,"sources":["store/reducers/resource.ts","store/reducers/action-type.util.ts","store/reducers/authentication.ts","store/reducers/proposals.ts","store/reducers/productBuilder.ts","store/models/broker.model.ts","store/models/client.model.ts","constants/StringConstants.ts","store/models/proposal.model.ts","util/utils.currency.ts","store/reducers/proposalOptions.ts","store/reducers/clientOptions.ts","store/reducers/brokers.ts","store/reducers/companies.ts","store/reducers/brokerBuilder.ts","store/reducers/affiiate.ts","store/reducers/secureUpload.ts","store/reducers/secureUploadDocumentType.ts","store/reducers/index.ts","store/index.ts","views/AppSideNav/AppSideNav.tsx","views/AppContainer.tsx","views/Layout/FooterShort.tsx","constants/EnvConstants.ts","views/Layout/HeaderHome.tsx","views/QuoteEngine/Quote.tsx","components/Toast/Toast.tsx","views/Broker/Welcome.tsx","views/Layout/Footer.tsx","views/Layout/Header.tsx","components/Form/TextField/TextField.tsx","components/Form/SingleSelectField/SingleSelectField.tsx","components/UploadDocumentModal/UploadDocumentModal.tsx","views/Broker/ClientBuilder.tsx","views/QuoteEngine/QuoteWizard.tsx","views/QuoteEngine/QuoteSent.tsx","views/Login/Login.tsx","util/utils.validators.ts","components/Form/TypeaheadField/TypeaheadField.tsx","util/utils.defaultValues.ts","views/BrokerBuilder/ExistentBrokerNav.tsx","views/BrokerBuilder/BrokerBuilder.tsx","routes.tsx","app.tsx","config/axios-config.ts","constants/StorageConstants.ts","index.tsx"],"names":["SortDirection","PENDING","actionType","concat","FULFILLED","REJECTED","ACTION_TYPES","initialState","sessionInitialized","isAuthenticated","currentBroker","undefined","isLoggedIn","validateEmailRequest","username","axios","post","then","data","brokerId","getBrokerId","failed","error","catch","response","id","clearSessionTokens","localStorage","clear","getActionSymbol","getOr","getActionData","ListOptions","Object","classCallCheck","this","page","rows","sort","query","ResourceStore","loading","listOptions","total","projection","map","ResourceFactory","resourceKey","resourceUrl","resourceIdKey","customDefaultState","defaultState","resourceSymbol","Symbol","itemsToMap","keyBy","itemsToProjection","items","i","remapItem","item","objectSpread","remapItems","FETCH_LIST","FETCH","CREATE","UPDATE","DELETE","fetchList","arguments","length","sortOptions","get","sortOrder","startCase","type","meta","payload","params","set","fetch","create","update","remove","delete","reducer","state","action","totalRows","productTypeList","carrierTypeList","occupationClassTypeList","designTypeList","renewabilityTypeList","bpTypeList","epTypeList","ownOccTypeList","residualTypeList","minimumResidualBenefitPayableTypeList","futureInsurabilityOptionsTypeList","airTypeList","colaTypeList","mentalNervousLimitationTypeList","catastrophicBenefitRiderTypeList","uniqueProvisionsTypeList","defaultBroker","brokerID","brokerName","preferredName","primaryPhone","primaryEmail","companyName","affiliateName","externalID","isSMSTextEnabled","brokerProduction","carrierType","premiumTotal","defaultMedication","name","dose","frequencyTypeID","defaultCondition","conditionName","medications","defaultClient","firstName","lastName","email","conditions","FORM_FIELD_REQUIRED","FORM_FIELD_INVALID","BRO_EMAIL_TYPE_PRIMARY","BRO_EMAIL_TYPE_ALT","BRO_EMAIL_TYPE_CC","BRO_EMAIL_TYPE_REQUESTER","BRO_PHONE_TYPE_OFFICE","BRO_PHONE_TYPE_CELL","BRO_PHONE_TYPE_FAX","NEW_AFFILIATE","NEW_COMPANY","NEW_PROPOSAL","NEW_BROKER","defaultProposal","proposalID","proposalGroupID","broker","client","caseDesign","organization","specialistID","productTypeID","epTypeID","bpTypeID","payorTypeID","tobaccoTypeID","tobaccoFrequencyTypeID","isMaxBenefit","statusTypeID","originationTypeID","roundCurrency","value","parseFloat","toFixed","isSubmitting","isSavingNext","isClassificationLoaded","isSavingPrevious","overviewOptions","selectOriginList","selectSpecialistList","selectBrokerList","selectProductList","selectHearAboutUsList","clientOptions","selectGenderList","selectPrefixList","selectTobaccoTypeList","selectTobaccoFrequencyList","selectMedicationFrequencyList","selectCredentialTypeList","selectGovernmentTypeList","selectStateList","selectPaidByTypeList","classificationOptions","bpTypeFullList","designTypeFullList","caseDesignOptions","selectBPList","selectEPList","selectPayorList","selectRiderList","caseDesignRiderOptions","productID","productName","riders","statusList","age","years","months","days","isSubmitToastVisible","isSaveToastVisible","currentProposal","proposalMap","selectedOccupationOption","newProposal","_action$payload$data$","overviewDetails","hearAboutUsTypeID","objectWithoutProperties","esm_extends","clientDetails","clients","c","push","isReplaceExistingCoverage","_action$payload$data$2","caseDesignDetails","productType","benefitAmount","_action$payload$data2","proposal","createdDate","isSubmitted","defineProperty","productOptions","selectProductTypes","createBroker","fetchBroker","updateBroker","companyAffiliate","isAfiliateRequestInProgress","affiliateList","branchList","companyList","rbmList","hearAboutUsList","brokerPrimaryEmailValidating","existentBrokerIdByEmail","existentBrokerFirstNameByEmail","existentBrokerLastNameByEmail","affiliateLogoId","fetchAffiliateLogo","affiliateId","documents","uploadModal","documentTypes","Array","isUploadModalVisible","isUploadToastVisible","isConfirmationModalVisible","isConfirmationFailModalVisible","isDocumentTypesLoaded","rootReducer","combineReducers","auth","proposals","proposalOptions","occupationOption","newState","_action$payload$data","classifications","proposalId","analyzer","baseBenefitAmount","ssib","totalBenefitAmount","annualPremium","potentialBenefitPayout","monthlyPremium","classificationDetails","_action$meta","productBuilder","dropdownOptions","brokers","companies","brokerBuilder","selectAffiliateList","selectBranchList","selectRBMList","selectCompanyList","existentBroker","affiliate","secureUpload","documentOptions","secureUploadDocumentType","defaultMiddleware","thunkMiddleware","promiseMiddleware","reduxDevtoolsExtension","window","composedMiddleware","trace","traceLimit","compose","applyMiddleware","apply","store","createStore","AppSideNav","props","_this$createMap","_this","possibleConstructorReturn","getPrototypeOf","call","createProposal","S","path","createCompany","createAffiliate","createMap","handleOnClick","getCreateButton","open","history","isActiveClassName","isActive","location","pathname","getCreateName","logout","toggle","bind","assertThisInitialized","dropdownOpen","setState","prevState","split","filter","x","react","className","React","withRouter","connect","_ref","AppContainer","_React$Component","inherits","createClass","key","react_default","a","createElement","views_AppSideNav_AppSideNav","children","Component","FooterShort","Container","Row","Col","href","target","BASE_API_URL","process","HeaderHome","match","affiliateParam","url","startsWith","logoAffiliateUrl","_this$props","affiliateLogoLoading","sm","src","alt","title","Fragment","mapDispatchToProps","QuoteEngine","campaignParam","companyParam","companyId","campaignId","brokerUrl","loginUrl","Layout_HeaderHome","fluid","react_router_dom","to","views_Layout_FooterShort","Snackbar","withStyles","theme","root","width","MuiSnackbar","Toast","message","onClose","closeButton","Button","onClick","e","Toast_Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","ContentProps","style","padding","fontSize","Welcome","_this2","welcomeMessage","components_Toast_Toast","hideLoggedInToast","Footer","Header","TextField","label","light","appendText","prependText","disabled","placeholder","fieldProps","react_final_form_es","assign","component","input","touched","InputGroup","InputGroupAddon","addonType","InputGroupText","SingleSelect","options","isRequired","hint","Tooltip","placement","Help_default","SingleSelectField","parse","parseInt","DialogActions","marginBottom","spacing","display","flexDirection","justifyContent","MuiDialogActions","UploadDocumentModal","handleDrop","accepted","rejected","forEach","newFileItem","file","note","documentType","files","toConsumableArray","handleClickCancel","onCancel","clearFiles","handleClickUpload","handleFiles","handleDeleteFile","fileName","preventDefault","updatedFiles","index","Dialog","PaperProps","onSubmit","initialValues","formProps","handleSubmit","DialogTitle","DialogContent","react_dropzone_dist_es","onDrop","getRootProps","getInputProps","isDragActive","fileItem","Label","TextField_TextField_TextField","react_final_form_listeners_es","SingleSelectField_SingleSelectField","variant","size","Icon","dirty","UploadDocumentModal_DialogActions","ClientBuilder","submit","asyncToGenerator","regenerator_default","mark","_callee","values","wrap","_context","prev","next","stop","_x","uploadFiles","_ref2","_callee2","acceptedFiles","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","_step","acceptedFile","_context2","iterator","done","uploadDocument","t0","t1","return","finish","t2","toggleUploadModal","_x2","_x3","replace","_componentDidMount","_callee3","_context3","fetchDocumentTypes","fetchBrokerProfile","_this$props2","clientID","views_Layout_Header","views_Broker_Welcome","toggleUploadToast","components_UploadDocumentModal_UploadDocumentModal","views_Layout_Footer","secureUploadFileItem","formData","FormData","append","headers","Content-Type","QuoteWizard","views_Broker_ClientBuilder","QuoteSent","Login","_getPrototypeOf2","_len","args","_key","authResult","validateEmail","sent","abrupt","FORM_ERROR","from","search","react_router","render","_ref4","submitFailed","invalid","submitError","submitting","noValidate","validate","Spinner","color","dispatch","_ref5","PHONE_NUMBER_REGEX","RegExp","ZIP_CODE_REGEX","isEmpty","TypeaheadFieldComponent","selected","asArray","castArray","emptyLabel","typeaheadProps","newProps","isValid","visited","defaultSelected","onChange","isArray","FormGroup","react_bootstrap_typeahead_es","keyValueToDropdownOption","kvp","TypeaheadField","defaultOptionValue","undefinedIfDefault","ExistentBrokerNav","BrokerBuilder","errors","P","fieldName","phoneNumber","test","zipCode","result","formValuesToBroker","fillBrokerEmptyValues","affiliateID","cellPhone","brokerAdditionalEmails","isPrimary","phoneType","emailAddress","emailType","affiliateIDs","isNaN","companyIDs","companyID","Number","isInteger","address","stateID","affiliateFreeTypeName","companyFreeTypeName","marketingCampaignID","HearAboutTypeID","notes","brokerToFormValues","affiliates","brokerPhones","officePhoneItem","find","officePhone","faxPhone","alternateEmail","ccEmail","requestorEmail","formStateTemp","formStateHandler","createDecorator","field","updates","allValues","previousValues","emailDisabled","fetchProductBuilderOptions","fetchBrokerOptions","form","getFieldState","officePhoneMask","phoneMask","defaultValues","howDidYouHearAboutUsID","companyFullList","hearAboutUsFullList","selectedCompanyDetails","howDidYouHearAboutUs","isCompanyRendering","isAffiliateRendering","stateList","brokerAffiliateID","selectedCompany","decorators","_ref3","Form_TypeaheadField_TypeaheadField","fetchCompanyAffiliate","console","log","formatString","getPrimaryPhoneLabel","fetchBrokerByPrimaryEmail","views_BrokerBuilder_ExistentBrokerNav","campaignID","_ref5$brokerBuilder","Routes","src_views_AppContainer","App","useUtils_cfb96ac9","utils","MomentUtils","routes","removeAgents","config","defaults","agent","httpAgent","httpsAgent","baseURL","setupAxios","onUnauthenticated","onResponseError","responseError","status","missingConfig","isLoginRoute","request","responseURL","getItem","interceptors","use","token","Authorization","mountPoint","document","getElementById","actions","bindActionCreators","ReactDOM","es","app"],"mappings":"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","file":"static/js/main.45df1162.chunk.js","sourcesContent":["import axios from \"axios\";\r\nimport { get, set, startCase } from \"lodash\";\r\nimport { getOr, keyBy } from \"lodash/fp\";\r\nimport { PENDING, FULFILLED, REJECTED } from \"./action-type.util\";\r\n\r\nconst getActionSymbol = getOr(null, \"meta.resourceSymbol\");\r\nconst getActionData = getOr(null, \"payload.data\");\r\n\r\nenum SortDirection {\r\n Asc,\r\n Desc\r\n}\r\n\r\ntype SortOption = [string, SortDirection.Asc | SortDirection.Desc];\r\n\r\nexport class ListOptions {\r\n page: number = 1;\r\n rows: number = 25;\r\n sort: SortOption[] = [];\r\n query?: { [key: string]: string } = {};\r\n}\r\n\r\ninterface IResourceMap {\r\n [id: string]: R;\r\n}\r\n\r\nexport class ResourceStore {\r\n loading: boolean = false;\r\n error: any = {};\r\n listOptions: ListOptions = new ListOptions();\r\n total: number = 0;\r\n projection: Array = [];\r\n map: IResourceMap = {};\r\n}\r\n\r\nexport default function ResourceFactory(\r\n resourceKey: string,\r\n resourceUrl: string,\r\n resourceIdKey: string,\r\n customDefaultState?: () => ResourceStore,\r\n ...functions: Array<(state: ResourceStore, action: any) => ResourceStore>\r\n) {\r\n const defaultState = customDefaultState ? customDefaultState() : new ResourceStore();\r\n const resourceSymbol = Symbol(resourceKey);\r\n const itemsToMap = keyBy(resourceIdKey);\r\n const itemsToProjection = items => items.map(i => i[resourceIdKey]);\r\n const remapItem = item => ({ id: item[resourceIdKey], ...item });\r\n const remapItems = items => items.map(remapItem);\r\n\r\n const ACTION_TYPES = {\r\n FETCH_LIST: `${resourceKey}/FETCH_LIST`,\r\n FETCH: `${resourceKey}/FETCH`,\r\n CREATE: `${resourceKey}/CREATE`,\r\n UPDATE: `${resourceKey}/UPDATE`,\r\n DELETE: `${resourceKey}/DELETE`\r\n };\r\n\r\n function resourceReducer(state = defaultState, action): ResourceStore {\r\n if (getActionSymbol(action) !== resourceSymbol) {\r\n return state;\r\n }\r\n\r\n switch (action.type) {\r\n case PENDING(ACTION_TYPES.FETCH):\r\n case PENDING(ACTION_TYPES.FETCH_LIST): {\r\n return { ...state, loading: true, error: null };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH_LIST): {\r\n const data = getActionData(action);\r\n const map = itemsToMap(data.items);\r\n const projection = itemsToProjection(data.items);\r\n const listOptions = action.meta.listOptions;\r\n\r\n return {\r\n ...state,\r\n map: {\r\n ...state.map,\r\n ...map\r\n },\r\n projection,\r\n total: data.totalRows,\r\n listOptions,\r\n error: null,\r\n loading: false\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH): {\r\n const data = getActionData(action);\r\n const map = itemsToMap([data]);\r\n return {\r\n ...state,\r\n map: {\r\n ...state.map,\r\n ...map\r\n },\r\n error: null,\r\n loading: false\r\n };\r\n }\r\n\r\n case REJECTED(ACTION_TYPES.FETCH):\r\n case REJECTED(ACTION_TYPES.FETCH_LIST): {\r\n return { ...defaultState, error: true }; // TODO: extract error from rejected payload.\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Query a list of resources with the specified options.\r\n * @param {PageQuery} listOptions - query options.\r\n */\r\n function fetchList(listOptions: ListOptions = new ListOptions()) {\r\n const { page, rows, sort: sortOptions, query } = listOptions;\r\n\r\n const sort = get(sortOptions, \"0.0\");\r\n const sortOrder = startCase(get(sortOptions, \"0.1\"));\r\n\r\n return {\r\n type: ACTION_TYPES.FETCH_LIST,\r\n meta: { resourceSymbol, listOptions },\r\n payload: axios\r\n .get(resourceUrl, {\r\n params: {\r\n ...query,\r\n page,\r\n sort,\r\n sortOrder,\r\n rows\r\n }\r\n })\r\n .then(response => {\r\n const items = get(response, \"data.items\", null);\r\n if (items) set(response, \"data.items\", remapItems(items));\r\n return response;\r\n })\r\n };\r\n }\r\n\r\n /**\r\n * Fetch a single resource\r\n * @param {string} id - resource id.\r\n */\r\n function fetch(id: string) {\r\n return {\r\n type: ACTION_TYPES.FETCH,\r\n meta: { resourceSymbol },\r\n payload: axios.get(`${resourceUrl}/${id}`).then(response => {\r\n const item = get(response, \"data\", null);\r\n if (item) set(response, \"data\", remapItem(item));\r\n return response;\r\n })\r\n };\r\n }\r\n\r\n /**\r\n * Create a resource with the specified parameters.\r\n * @param {[key: string]: any} params - key value pairs to initialize the resource.\r\n */\r\n function create(params: { [key: string]: any }) {\r\n return {\r\n type: ACTION_TYPES.CREATE,\r\n meta: { resourceSymbol },\r\n payload: axios.post(resourceUrl, params)\r\n };\r\n }\r\n\r\n /**\r\n * Update the resource specified by the provided params.\r\n *\r\n * **NOTE** - the params must contain the id of the resource to update.\r\n *\r\n * @param {[key: string]: any} params - key value pairs to initialize the resource.\r\n */\r\n function update(params: { [key: string]: any }) {\r\n return {\r\n type: ACTION_TYPES.CREATE,\r\n meta: { resourceSymbol },\r\n payload: axios.post(resourceUrl, params)\r\n };\r\n }\r\n\r\n /**\r\n * Delete the resource with the specified id.\r\n * @param {number} id\r\n */\r\n function remove(id: number) {\r\n return {\r\n type: ACTION_TYPES.DELETE,\r\n meta: { resourceSymbol },\r\n payload: axios.delete(`${resourceUrl}/${id}`)\r\n };\r\n }\r\n\r\n return {\r\n fetchList,\r\n fetch,\r\n create,\r\n update,\r\n remove,\r\n reducer: resourceReducer\r\n };\r\n}\r\n","export const PENDING = actionType => `${actionType}_PENDING`\r\nexport const FULFILLED = actionType => `${actionType}_FULFILLED`\r\nexport const REJECTED = actionType => `${actionType}_REJECTED`\r\n","import axios from \"axios\";\r\nimport { IAuthenticationResult } from \"./../models/authenticationResult.model\";\r\nimport { PENDING, FULFILLED, REJECTED } from \"./action-type.util\";\r\n\r\nexport const ACTION_TYPES = {\r\n LOGIN: \"auth/LOGIN\",\r\n REFRESH: \"auth/REFRESH\",\r\n LOGOUT: \"auth/LOGOUT\",\r\n HIDE_LOGGEDIN_TOAST: \"auth/HIDE_LOGGEDIN_TOAST\",\r\n FETCH_BROKER_PROFILE: \"brokerauth/FETCH_PROFILE\"\r\n};\r\n\r\nconst initialState = {\r\n sessionInitialized: false,\r\n isAuthenticated: false,\r\n currentBroker: undefined,\r\n isLoggedIn: false\r\n};\r\n\r\nexport type AuthState = Readonly;\r\n\r\n/**\r\n * Authentication Reducer\r\n */\r\nexport default (state: AuthState = initialState, action): AuthState => {\r\n switch (action.type) {\r\n \r\n case FULFILLED(ACTION_TYPES.FETCH_BROKER_PROFILE): {\r\n const broker = action.payload.data;\r\n return {\r\n ...state,\r\n isLoggedIn: true,\r\n currentBroker: broker\r\n };\r\n }\r\n\r\n case REJECTED(ACTION_TYPES.FETCH_BROKER_PROFILE): {\r\n return {\r\n ...state,\r\n isAuthenticated: false\r\n };\r\n }\r\n\r\n // no - network statuses\r\n case ACTION_TYPES.HIDE_LOGGEDIN_TOAST: {\r\n return {\r\n ...state,\r\n isLoggedIn: false\r\n };\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport const hideLoggedInToast = () => {\r\n return {\r\n type: ACTION_TYPES.HIDE_LOGGEDIN_TOAST\r\n };\r\n};\r\n\r\n/**\r\n * Fetch broker profile information.\r\n */\r\nexport const fetchBrokerProfile = (id: string) => ({\r\n type: ACTION_TYPES.FETCH_BROKER_PROFILE,\r\n payload: axios.get(\"brokerspublic/\" + id)\r\n});\r\n\r\n/*\r\n * Perform ValidateEmail Network Request.\r\n */\r\nconst validateEmailRequest = (username) => {\r\n return axios.post(\"validateEmail\", { username })\r\n .then((data) =>\r\n {\r\n var brokerID = getBrokerId(data);\r\n var result: IAuthenticationResult = {\r\n brokerId: brokerID,\r\n failed: false,\r\n error: undefined\r\n };\r\n\r\n return result;\r\n })\r\n .catch((error) => {\r\n var result: IAuthenticationResult = {\r\n brokerId: undefined,\r\n failed: true,\r\n error: error.response.data\r\n };\r\n\r\n return result;\r\n });\r\n}\r\n\r\n/**\r\n * Initialize a brker session with an email\r\n * @param {string} username - email of specified broker.\r\n */\r\nexport const validateEmail = (username) => async dispatch => {\r\n return await validateEmailRequest(username);\r\n};\r\n\r\nexport const logout = () => dispatch => {\r\n clearSessionTokens();\r\n dispatch({ type: ACTION_TYPES.LOGOUT });\r\n};\r\n\r\nconst getBrokerId = (response: { data?: { id: string; } }) => {\r\n //localStorage.setItem(K.BROKERID, response.data.externalID); // may be not needed, will remove later\r\n return response.data.id;\r\n};\r\n\r\n/**\r\n * Clear active users storage.\r\n */\r\nconst clearSessionTokens = () => {\r\n localStorage.clear();\r\n};\r\n","import { IProposalRecord } from \"../models/proposal.model\";\r\nimport ResourceFactory from \"./resource\";\r\n\r\nconst resourceKey = \"proposals\";\r\nconst resourceUrl = \"proposals\";\r\nconst resourceIdKey = \"proposalID\";\r\n\r\nconst { reducer, fetchList, create, fetch } = ResourceFactory(\r\n resourceKey,\r\n resourceUrl,\r\n resourceIdKey\r\n);\r\n\r\nexport type ProposalResourcesState = ReturnType;\r\nexport const fetchProposalsList = fetchList;\r\nexport const createProposal = create;\r\nexport const fetchProposal = fetch;\r\nexport default reducer;\r\n","import axios from \"axios\";\r\n\r\nimport { PENDING, FULFILLED, REJECTED } from \"./action-type.util\";\r\n\r\nexport const ACTION_TYPES = {\r\n FETCH_OPTIONS: \"productBuilder/FETCH_OPTIONS\",\r\n CREATE_PRODUCT: \"productBuilder/CREATE_PRODUCT\"\r\n};\r\n\r\nconst initialState = {\r\n loading: false,\r\n productTypeList: [],\r\n carrierTypeList: [],\r\n occupationClassTypeList: [],\r\n designTypeList: [],\r\n renewabilityTypeList: [],\r\n bpTypeList: [],\r\n epTypeList: [],\r\n ownOccTypeList: [],\r\n residualTypeList: [],\r\n minimumResidualBenefitPayableTypeList: [],\r\n futureInsurabilityOptionsTypeList: [],\r\n airTypeList: [],\r\n colaTypeList: [],\r\n mentalNervousLimitationTypeList: [],\r\n catastrophicBenefitRiderTypeList: [],\r\n uniqueProvisionsTypeList: []\r\n};\r\n\r\nexport type ProductBuilderState = Readonly;\r\n\r\n/*\r\n * Product Builder Reducer\r\n */\r\nexport default (state: ProductBuilderState = initialState, action): ProductBuilderState => {\r\n switch (action.type) {\r\n // Pending Actions\r\n case PENDING(ACTION_TYPES.FETCH_OPTIONS):\r\n case PENDING(ACTION_TYPES.CREATE_PRODUCT): {\r\n return {\r\n ...state,\r\n loading: true\r\n };\r\n }\r\n\r\n // Fulfilled Actions\r\n case FULFILLED(ACTION_TYPES.FETCH_OPTIONS): {\r\n const dropdownOptions = action.payload.data;\r\n\r\n return {\r\n ...state,\r\n ...dropdownOptions\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.CREATE_PRODUCT): {\r\n return {\r\n ...state,\r\n loading: false\r\n };\r\n }\r\n\r\n // Rejected Actions\r\n case REJECTED(ACTION_TYPES.FETCH_OPTIONS): {\r\n return {\r\n ...state,\r\n loading: false\r\n };\r\n }\r\n\r\n case REJECTED(ACTION_TYPES.CREATE_PRODUCT): {\r\n return {\r\n ...state,\r\n loading: false\r\n };\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Populate the Product Builder drop downs with options.\r\n */\r\nexport const fetchProductBuilderOptions = () => ({\r\n type: ACTION_TYPES.FETCH_OPTIONS,\r\n payload: axios.get(\"products/builder\")\r\n});\r\n\r\n/**\r\n * Create a new product with the specified product options.\r\n */\r\nexport const createProduct = payload => ({\r\n type: ACTION_TYPES.CREATE_PRODUCT,\r\n payload: axios.post(\"products\", payload)\r\n});\r\n","import * as S from \"../../constants/StringConstants\";\r\n\r\nexport interface IBroker {\r\n brokerID: 0;\r\n brokerName: string;\r\n preferredName: string;\r\n primaryPhone: string;\r\n primaryEmail: string;\r\n companyName: string;\r\n affiliateName: string;\r\n externalID: number;\r\n isSMSTextEnabled: boolean;\r\n brokerProduction: [\r\n {\r\n carrierType: string;\r\n premiumTotal: number;\r\n }\r\n ];\r\n}\r\n\r\nexport const defaultBroker: Readonly = {\r\n brokerID: null,\r\n brokerName: \"\",\r\n preferredName: \"\",\r\n primaryPhone: \"\",\r\n primaryEmail: \"\",\r\n companyName: \"\",\r\n affiliateName: \"\",\r\n externalID: null,\r\n isSMSTextEnabled: false,\r\n brokerProduction: [\r\n {\r\n carrierType: undefined,\r\n premiumTotal: undefined\r\n }\r\n ]\r\n};\r\n","export interface IClient {\r\n firstName: string;\r\n lastName: string;\r\n email: string,\r\n conditions: ICondition[];\r\n}\r\n\r\nexport interface ICondition {\r\n conditionName: string;\r\n medications: IMedication[];\r\n}\r\n\r\nexport interface IMedication {\r\n name: string;\r\n dose: string;\r\n frequencyTypeID: number;\r\n}\r\n\r\nexport const defaultMedication: Readonly = {\r\n name: undefined,\r\n dose: undefined,\r\n frequencyTypeID: 1\r\n};\r\n\r\nexport const defaultCondition: Readonly = {\r\n conditionName: undefined,\r\n medications: [defaultMedication]\r\n};\r\n\r\nexport const defaultClient: Readonly = {\r\n firstName: undefined,\r\n lastName: undefined,\r\n email: undefined,\r\n conditions: [defaultCondition]\r\n};\r\n","/*\r\n * Main\r\n */\r\nexport const MAIN_TITLE = \"DIS\";\r\nexport const MAIN_PROPOSAL_DETAILS = (proposalID: any) => `DIS | Proposal - ${proposalID}`\r\n\r\n/*\r\n * Quote Engine\r\n */\r\nexport const QUOTE_ENGINE = \"Welcome to DIS Secure Upload\";\r\nexport const QUOTE_ENGINE_REGISTER_LABEL = \"Register\";\r\nexport const QUOTE_ENGINE_LOGIN_LABEL = \"Login\";\r\nexport const QUOTE_ENGINE_FAILED_MESSAGE = \"Quote Engine Generic Error\";\r\nexport const AFFILIATE = \"Affiliate\";\r\nexport const QUOTE_SENT_SUCCESS_MESSAGE = \"Your request for proposal has been entered. Thank you!\";\r\nexport const NEW_QUOTE_CREATION = \"Create new Quote\";\r\nexport const NEW_QUOTE_CREATION_LABEL = \"This email already exists in the database, click button \";\r\n\r\n/*\r\n * Login\r\n */\r\nexport const LOGIN_SIGN_IN = \"Next\";\r\nexport const FORGOT_PSWD = \"Submit\";\r\nexport const EMAIL_LABEL = \"Email\";\r\nexport const LOGIN_PASSWORD = \"Password\";\r\nexport const LOGIN_INVALID_PASSWORD = \"Invalid Password\";\r\nexport const LOGIN_FAILED_MESSAGE = \"The email is invalid please email and call DIS for assistance. (Email: it@diservices.com Phone: 800-898-9641)\";\r\nexport const ACCESS_FAILED_MESSAGE = \"Failed to fetch account data.\";\r\nexport const LOGIN_PASSWORD_REQUIRED = \"Please enter a password.\";\r\nexport const LOGIN_EMAIL_REQUIRED = \"Please enter an email.\";\r\n\r\n/*\r\n * Forgot Password\r\n */\r\nexport const FORGOT_PASSWORD = \"Forgot your password?\";\r\nexport const FORGOT_PASSWORD_LABEL = \"FORGOT PASSWORD\";\r\nexport const FORGOT_PASSWORD_DESCRIPTION =\r\n \"Please input your email below and the administrator will reset your password\";\r\nexport const FORGOT_PASSWORD_RESET_BUTTON = \"Send\";\r\nexport const FORGOT_PASSWORD_ADMIN_NOTIFIED = \"ADMINISTRATOR SUCCESSFULLY NOTIFIED\";\r\n\r\n/*\r\n * Client Builder\r\n */\r\nexport const WELCOME_BACK_LABEL = \"Welcome, \";\r\n\r\n/*\r\n * Product Builder\r\n */\r\nexport const PB_PRODUCT_TYPE = \"Product\";\r\nexport const PB_CARRIER_TYPE = \"Carrier\";\r\nexport const PB_OCCUPATION_CLASS_TYPE = \"Occupation Class\";\r\nexport const PB_DESIGN_TYPE = \"Design\";\r\nexport const PB_RENEWABILITY_TYPE = \"Renewability\";\r\nexport const PB_BP_TYPE = \"BP\";\r\nexport const PB_EP_TYPE = \"EP\";\r\nexport const PB_OWN_OCC_TYPE = \"Own OCC\";\r\nexport const PB_RESIDUAL_TYPE = \"Residual\";\r\nexport const PB_AIR_TYPE = \"AIR\";\r\nexport const PB_COLA_TYPE = \"COLA\";\r\nexport const PB_CATASTROPHIC_BENEFIT_TYPE = \"Catastrophic Benefit Rider\";\r\nexport const PB_FUTURE_INSURABILITY_OPTIONS_TYPE = \"Future Insurability Options\";\r\nexport const PB_UNIQUE_PROVISIONS_TYPE = \"Unique Provisions\";\r\nexport const PB_MINIMUM_RESIDUAL_BENEFIT_TYPE = \"Minimum Residual Benefit Payable\";\r\nexport const PB_MENTAL_NERVOUS_LIMITATION_TYPE = \"Mental Nervous Limitation\";\r\nexport const PB_SUBMIT_BUTTON = \"Submit\";\r\nexport const PB_PRODUCT_CREATED_MESSAGE = \"Success!\";\r\nexport const PB_DEFAULT_PRODUCT_TYPE = \"Select a Product\";\r\nexport const PB_SUBMIT_SUCCESS_TOAST =\"Successfully submitted!\";\r\nexport const PB_SAVE_SUCCESS_TOAST = \"Your changes have been saved.\";\r\nexport const PB_PROPOSAL_SUBMITTED = \"Proposal Submitted, please wait.\";\r\nexport const PB_INTRUCTIONS1 = \"Tell Us About the Person to Be Insured\";\r\nexport const PB_INTRUCTIONS2 = \"Select Coverage\";\r\nexport const PB_INTRUCTIONS3 = \"Receive Your Quote\";\r\n/*\r\n * Loading\r\n */\r\nexport const LOADING = \"Loading...\";\r\n\r\n/*\r\n * Components\r\n */\r\nexport const DD_NO_RESULTS = \"No Results Found\";\r\n\r\n/*\r\n * Errors\r\n */\r\nexport const ERROR_NETWORK_GENERAL = \"Network error. Please try again later.\";\r\nexport const ERROR_USER_ROLE_UNAUTHORIZED = \"You are not authorized to access this page.\";\r\n\r\n/**\r\n * Form Errors\r\n */\r\nexport const FORM_FIELD_REQUIRED = \"This field is required\";\r\nexport const FORM_FIELD_INVALID = \"Invalid\";\r\nexport const FORM_DOCUMENT_REQUIRED = \"Document required\";\r\n\r\n/*\r\n * Proposals Table\r\n */\r\nexport const PRO_COL_TIME = \"Time\";\r\nexport const PRO_COL_PROPOSAL = \"Proposal\";\r\nexport const PRO_COL_REV = \"Rev\";\r\nexport const PRO_COL_BRANCH = \"Branch\";\r\nexport const PRO_COL_RBM = \"RBM\";\r\nexport const PRO_COL_AFFILIATE = \"Affiliate\";\r\nexport const PRO_COL_MEMBER = \"Member Company\";\r\nexport const PRO_COL_BROKER = \"Broker\";\r\nexport const PRO_COL_CLIENT = \"Client\";\r\nexport const PRO_COL_PROPOSAL_SPECIALIST = \"Proposal Specialist\";\r\nexport const PRO_COL_STATUS = \"Status\";\r\nexport const PRO_COL_MULTI_LIFE = \"Multi-Life\";\r\nexport const PRO_ALL = \"All\";\r\n\r\n/**\r\n * Brokers Table\r\n */\r\nexport const BRO_COL_NAME = \"Broker Name\";\r\nexport const BRO_COL_PRIMARY_PHONE = \"Primary Phone\";\r\nexport const BRO_COL_PRIMARY_EMAIL = \"Primary Email\";\r\nexport const BRO_COL_COMPANY = \"Company\";\r\nexport const BRO_COL_AFFILIATE = \"Affiliate\";\r\nexport const BRO_PAGE_TITLE = \"Brokers\";\r\n\r\n/**\r\n * Broker Builder\r\n */\r\n\r\nexport const BRO_NEW_TITLE = \"Broker Detail\";\r\nexport const BRO_SUBMIT_BUTTON = \"Next\";\r\n\r\nexport const BRO_EMAIL_TYPE_PRIMARY = \"Primary\";\r\nexport const BRO_EMAIL_TYPE_ALT = \"Alternate\";\r\nexport const BRO_EMAIL_TYPE_CC = \"CC\";\r\nexport const BRO_EMAIL_TYPE_REQUESTER = \"Requester\";\r\n\r\nexport const BRO_PHONE_TYPE_OFFICE = \"Office\";\r\nexport const BRO_PHONE_TYPE_CELL = \"Cell\";\r\nexport const BRO_PHONE_TYPE_FAX = \"Fax\";\r\nexport const BRO_PRIMARY_LABEL = \"PRIMARY #\";\r\n\r\nexport const BRO_INFO_TITLE = \"BROKER INFORMATION\";\r\nexport const BRO_PHONE_TITLE = \"PHONE\";\r\nexport const BRO_EMAIL_TITLE = \"EMAIL\";\r\nexport const BRO_ADDRESS_TITLE = \"ADDRESS\";\r\nexport const BRO_NOTES_TITLE = \"BROKER NOTES\";\r\n\r\nexport const BRO_FIRST_NAME_LABEL = \"First Name\";\r\nexport const BRO_LAST_NAME_LABEL = \"Last Name\";\r\nexport const BRO_PREF_NAME_LABEL = \"Preferred Name\";\r\nexport const BRO_AFFILIATE_LABEL = \"Affiliate\";\r\nexport const BRO_COMPANY_LABEL = \"Company\";\r\nexport const BRO_BROKER_ID_LABEL = \"Broker ID\";\r\nexport const BRO_EXTERNAL_ID_LABEL = \" External ID\";\r\nexport const BRO_BRANCH_LABEL = \"Branch\";\r\nexport const BRO_RBM_LABEL = \"RBM\";\r\nexport const BRO_BUSINESS_OWNER_LABEL = \"Business Owner\";\r\nexport const BRO_STREET_ADDRESS_LABEL = \"Street Address\";\r\nexport const BRO_CITY_LABEL = \"City\";\r\nexport const BRO_STATE_LABEL = \"State\";\r\nexport const BRO_ZIP_LABEL = \"Zip\";\r\nexport const BRO_NOTES_LABEL = \"Provide additional instructions we should know about\";\r\n\r\n/*\r\n * Proposal Status\r\n */\r\nexport const PRO_STATUS_QA = \"QA\";\r\nexport const PRO_STATUS_SINGLE_CLASS = \"Single Class\";\r\nexport const PRO_STATUS_ASSIGNED = \"Assigned\";\r\nexport const PRO_STATUS_APP_SUBMITTED = \"App Submitted\";\r\nexport const PRO_STATUS_PENDING = \"Pending\";\r\nexport const PRO_STATUS_IN_FORCE = \"In Force\";\r\nexport const PRO_STATUS_VOID = \"Void\";\r\n\r\n/*\r\n * Side Navigation\r\n */\r\nexport const NEW_AFFILIATE = \"Affiliate\";\r\nexport const NEW_COMPANY = \"Company\";\r\nexport const NEW_PROPOSAL = \"Proposal\";\r\nexport const NEW_BROKER = \"Broker\";\r\nexport const NAV_SOMETHING = \"Something for broker only\";\r\nexport const NAV_USERS = \"Users\";\r\nexport const NAV_PRODUCT_BUILDER = \"Product Builder\";\r\nexport const PAGINATION_ROWS_PER_PAGE = \"Rows per page\";\r\nexport const PAGINATION_PAGE_STATUS = (rowStart: number, rowEnd: number, rowTotal: number) =>\r\n `${rowStart}-${rowEnd} of ${rowTotal}`;\r\nexport const NAV_LOGOUT = \"Logout\";\r\n/**\r\n * Product Builder\r\n */\r\nexport const PB_STATUS_LABEL = \"Status\";\r\n\r\n/**\r\n * Proposal Details Overview\r\n */\r\nexport const PDO_SPECIALIST_TITLE = \"SPECIALIST\";\r\nexport const PDO_BROKER_TITLE = \"BROKER\";\r\nexport const PDO_PRODUCT_TITLE = \"PRODUCT\";\r\nexport const PDO_CLIENT_TITLE = \"CLIENT\";\r\nexport const PDO_PROPOSAL_SOURCE_TITLE = \"PROPOSAL SOURCE\";\r\n\r\nexport const PDO_SPECIALIST_NAME_LABEL = \"Proposal Specialist Name\";\r\nexport const PDO_BROKER_NAME_LABEL = \"Broker Name\";\r\nexport const PDO_PREFERRED_BROKER_NAME_LABEL = \"Preferred Broker Name\";\r\nexport const PDO_BROKER_PRIMARY_PHONE_LABEL = \"Primary Phone\";\r\nexport const PDO_BROKER_COMPANY_LABEL = \"Company\";\r\nexport const PDO_BROKER_AFFILIATE_LABEL = \"Affiliate\";\r\nexport const PDO_BROKER_ID_LABEL = \"Broker ID\";\r\nexport const PDO_BROKER_EXTERNAL_ID_LABEL = \"External ID\";\r\nexport const PDO_BROKER_DETAILS_BUTTON = \"View Broker Details\";\r\nexport const PDO_PRODUCT_TYPE_LABEL = \"Product Type\";\r\nexport const PDO_CLIENT_FIRST_NAME_LABEL = \"Client First Name\";\r\nexport const PDO_CLIENT_LAST_NAME_LABEL = \"Client Last Name\";\r\nexport const PDO_ORIGINATION_LABEL = \"Origination\";\r\nexport const PDO_HOW_DID_LABEL = \"How Did You Hear About Us?\";\r\nexport const PDO_MARKETING_CAMPAIGN_LABEL = \"Campaign\";\r\nexport const PDO_QUOTE_ENGINE = \"Quote Engine\";\r\n\r\n/**\r\n * Proposal Details Client\r\n */\r\nexport const PDC_CLIENT_INFORMATION_TITLE = \"CLIENT INFORMATION\";\r\nexport const PDC_BROKER_QUOTE_TITLE = \"Upload your files\";\r\nexport const PDC_CLIENT_FIRST_NAME_LABEL = \"Client First Name\";\r\nexport const PDC_CLIENT_LAST_NAME_LABEL = \"Client Last Name\";\r\nexport const PDC_CLIENT_EMAIL_NAME_LABEL = \"Client Email\";\r\nexport const PDC_CLIENT_PHONE = \"Client Phone\";\r\nexport const PDC_CLIENT_EMAIL_NAME_NOTE = \"**Please note: Client Email isn’t retained\";\r\nexport const PDC_CLIENT_PHONE_NAME_NOTE = \"**Please note: Client Phone number not retained\";\r\nexport const PDC_CLIENT_OCCUPATION_NOTE = \"**If the desired occupation is not present, please search for 'all other' and add occupation in the 'Other' field\";\r\n\r\nexport const PDC_PREFIX_LABEL = \"Prefix\";\r\nexport const PDC_CREDENTIALS_LABEL = \"Credentials\";\r\nexport const PDC_STATE_LABEL = \"State\";\r\nexport const PDC_DOB_LABEL = \"Date of Birth\";\r\nexport const PDC_YEARS_LABEL = \"Years\";\r\nexport const PDC_MONTHS_LABEL = \"Months\";\r\nexport const PDC_DAYS_LABEL = \"Days\";\r\nexport const PDC_GENDER_LABEL = \"Gender\";\r\nexport const PDC_HEIGHT_LABEL = \"Height\";\r\nexport const PDC_WEIGHT_LABEL = \"Weight\";\r\n\r\nexport const PDC_OCCUPATION_TITLE = \"OCCUPATION\";\r\nexport const PDC_OCCUPATION_OTHER_NAME_LABEL = \"Other\";\r\nexport const PDC_OCCUPATION_NAME_LABEL = \"Occupation Name\";\r\nexport const PDC_DUTIES_LABEL = \"Duties\";\r\nexport const PDC_ANNUAL_INCOME_LABEL = \"Annual Income\";\r\nexport const PDC_BONES_LABEL = \"Bonus\";\r\nexport const PDC_PASSIVE_INCOME_LABEL = \"Passive Income\";\r\nexport const PDC_GOVERNMENT_LABEL = \"Government\";\r\nexport const PDC_GOVERNMENT_YEARS_LABEL = \"Government Years\";\r\nexport const PDC_BUSINESS_OWNER_LABEL = \"Business Owner\";\r\nexport const PDC_WORK_FROM_HOME_LABEL = \"Work from Home\";\r\nexport const PDC_YEARS_IN_BUSINESS_LABEL = \"Years in Business\";\r\nexport const PDC_EMPLOYEES_LABEL = \"Employees\";\r\nexport const PDC_GOVERNMENT_TYPE_LABEL = \"Type\";\r\nexport const PDC_PERCENTAGE_FROM_HOME = \"% Work from Home\";\r\n\r\nexport const PDC_TOBACCO_USAGE_TITLE = \"TOBACCO USAGE\";\r\nexport const PDC_TOBACCO_TYPE_LABEL = \"Type\";\r\nexport const PDC_TOBACCO_FREQUENCY_LABEL = \"Frequency\";\r\nexport const PDC_TOBACCO_LAST_USE_LABEL = \"Last Use\";\r\nexport const PDC_MEDICAL_NOTES_TITLE = \"MEDICAL NOTES\";\r\nexport const PDC_NAME_OF_CONDITION_LABEL = \"Name of Condition\";\r\nexport const PDC_DATE_OF_DIAGNOSIS_LABEL = \"Date of Diagnosis\";\r\nexport const PDC_TYPE_OF_TREATMENT_LABEL = \"Type of Treatment\";\r\nexport const PDC_MEDICATIONS_TAKEN_LABEL = \"Medications Taken\";\r\nexport const PDC_MEDICATION_NAME_LABEL = \"Medication Name\";\r\nexport const PDC_DOSE_LABEL = \"Dose\";\r\nexport const PDC_FREQUENCY_LABEL = \"Frequency\";\r\nexport const PDC_ADD_MEDICATION_BUTTON = \"ADD ANOTHER MEDICATION\";\r\nexport const PDC_ADDITIONAL_NOTES_LABEL = \"Additional Notes\";\r\nexport const PDC_ADD_CONDITION_LABEL = \"Add Another Condition\";\r\nexport const PDC_SPOUSE_DETAILS_TITLE = \"SPOUSE DETAILS\";\r\nexport const PDC_SPOUSE_DETAILS_LABEL = \"Spouse Details\";\r\nexport const PDC_MULTI_LIFE_TITLE = \"MULTI-LIFE\";\r\nexport const PDC_DELETE = \"Delete\";\r\nexport const PDC_EXISTING_COVERAGE = \"EXISTING COVERAGE\";\r\nexport const PDC_INDIVIDUAL_LABEL = \"Individual Monthly Benefit\";\r\nexport const PDC_REPLACE_EXISTING_LABEL = \"Replace Existing\";\r\nexport const PDC_GROUP_PERCENT_LABEL = \"Group %\";\r\nexport const PDC_GROUP_CAP_LABEL = \"Group Cap\";\r\nexport const PDC_PAID_BY_LABEL = \"Paid By\";\r\n\r\nexport const PDC_YES = \"Yes\";\r\nexport const PDC_NO = \"No\";\r\n\r\n/**\r\n * Proposal Builder Steps\r\n */\r\nexport const PDS_CLIENT = \"Client\";\r\nexport const PDS_CASE_DESIGN = \"Product Options\";\r\n\r\n/**\r\n * Proposal Container\r\n */\r\nexport const PC_NEW_TITLE = \"New Proposal\";\r\nexport const PC_EXISTING_TITLE = \"Existing Proposal\";\r\nexport const PC_DETAILS_TAB = \"Details\";\r\nexport const PC_DOCUMENTATION_TAB = \"Documentation\";\r\nexport const PC_PROPOSAL_BUTTON = \"Proposal\";\r\nexport const PC_ANALYZER_BUTTON = \"Analyzer\";\r\nexport const PC_SAVE_BUTTON = \"Create\";\r\nexport const PC_NEXT_BUTTON = \"Next\";\r\nexport const PC_PREV_BUTTON = \"Previous\";\r\nexport const PC_SUBMIT_BUTTON = \"Submit\";\r\nexport const PC_REVISIONS = \"Revisions\";\r\nexport const PC_PROPOSAL_NOTES = \"Proposal Notes\";\r\nexport const PC_BROKER_NOTES = \"Broker Notes\";\r\nexport const PC_NOTE_DEFAULT_TITLE = \"None Yet\";\r\nexport const PC_NOTE_DEFAULT_DESC = \"Data will appear here when available.\";\r\nexport const PC_REVISION_DEFAULT_TITLE = \"No Revisions\";\r\nexport const PC_REVISION_DEFAULT_DESC = \"Proposal Revisions will appear here.\";\r\nexport const PC_NEW_NOTE = \"New Note\";\r\nexport const PC_DISCLAIMER = \"Disclaimer\";\r\nexport const PC_SAVE_DISCLAIMER_BUTTON = \"Save\";\r\n\r\n/**\r\n * Affiliates Table\r\n */\r\n\r\nexport const AFF_COL_NAME = \"Affiliate Name\";\r\nexport const AFF_COL_ADDRESS = \"Address\";\r\nexport const AFF_COL_BRANCH = \"Branch\";\r\nexport const AFF_COL_PHONE = \"Phone\";\r\nexport const AFF_COL_PRIMARY_CONTACT = \"Primary Contact\";\r\nexport const AFF_COL_AFFILIATE_ID = \"Affiliate ID\";\r\nexport const AFF_COL_EXTERNAL_ID = \"External ID\";\r\nexport const AFF_PAGE_TITLE = \"Affiliates\";\r\n\r\n/**\r\n * Affiliates Form\r\n */\r\n\r\nexport const AFF_NAME_LABEL = \"Affiliate Name\";\r\nexport const AFF_BRANCH_TYPE_LABEL = \"Branch Type\";\r\nexport const AFF_PHONE_LABEL = \"Phone\";\r\nexport const AFF_EMAIL_LABEL = \"Email\";\r\nexport const AFF_AFFILIATE_ID_LABEL = \"Affiliate ID\";\r\nexport const AFF_EXTERNAL_ID_LABEL = \"External ID\";\r\nexport const AFF_STREET_ADDRESS_LABEL = \"Street Address\";\r\nexport const AFF_CITY_LABEL = \"City\";\r\nexport const AFF_STATE_LABEL = \"State\";\r\nexport const AFF_ZIP_LABEL = \"Zip\";\r\nexport const AFF_CONTACT_ID_LABEL = \"Contact ID\";\r\nexport const AFF_FIRST_NAME_LABEL = \"First Name\";\r\nexport const AFF_LAST_NAME_LABEL = \"Last Name\";\r\nexport const AFF_IS_PRIMARY_LABEL = \"Primary Contact\";\r\nexport const AFF_ERROR_ONLY_1_PRIMARY = \"Only one contact may be primary\";\r\nexport const AFF_CONTACT_HEADER = \"Contacts\";\r\nexport const AFF_SUBMIT_BUTTON = \"Save\";\r\nexport const AFF_ADD_ALT_CONTACT = \"Add Alternate Contact\";\r\nexport const AFF_DETAIL_PAGE_TITLE = \"Affiliate Detail\";\r\nexport const AFF_DETAIL_CARD_TITLE = \"Affiliate Information\";\r\nexport const AFF_DETAIL_CARD_TITLE_PRI = \"Primary Contact\";\r\nexport const AFF_DETAIL_CARD_TITLE_AFF = \"Alternate Contact\";\r\nexport const AFF_DETAIL_CARD_TITLE4 = \"address\";\r\nexport const AFF_DETAIL_CARD_TITLE5 = \"Companies\";\r\nexport const AFF_COM_COL_COMPANY_NAME = \"Company Name\";\r\nexport const AFF_COM_COL_BRANCH = \"Branch\";\r\nexport const AFF_COM_COL_EMAIL = \"Email\";\r\nexport const AFF_COM_COL_PHONE = \"Phone\";\r\nexport const AFF_NOTES_LABEL = \"Saved Notes\";\r\nexport const AFF_NOTES_TITLE = \"AFFILIATE NOTES\";\r\n\r\n/**\r\n * Companies Table\r\n */\r\n\r\nexport const CO_COL_NAME = \"Company Name\";\r\nexport const CO_COL_ADDRESS = \"Address\";\r\nexport const CO_COL_BRANCH = \"Branch\";\r\nexport const CO_COL_RBM = \"RBM\";\r\nexport const CO_COL_PHONE = \"Phone\";\r\nexport const CO_COL_EMAIL = \"Email\";\r\nexport const CO_COL_PRIMARY_CONTACT = \"Primary Contact\";\r\nexport const CO_COL_COMPANY_ID = \"Company ID\";\r\nexport const CO_COL_EXTERNAL_ID = \"External ID\";\r\nexport const CO_PAGE_TITLE = \"Companies\";\r\n\r\n/**\r\n * Company Form\r\n */\r\n\r\nexport const CO_NAME_LABEL = \"Company Name\";\r\nexport const CO_AFFILIATE_LABEL = \"Affiliate\";\r\nexport const CO_FIRST_NAME_LABEL = \"First Name\";\r\nexport const CO_LAST_NAME_LABEL = \"Last Name\";\r\nexport const CO_COMPANY_ID_LABEL = \"Company ID\";\r\nexport const CO_EXTERNAL_ID_LABEL = \"External ID\";\r\nexport const CO_BRANCH_LABEL = \"Branch\";\r\nexport const CO_RBM_LABEL = \"RBM\";\r\nexport const CO_PHONE_LABEL = \"Phone\";\r\nexport const CO_EMAIL_LABEL = \"Email\";\r\nexport const CO_STREET_ADDRESS_LABEL = \"Street Address\";\r\nexport const CO_CITY_LABEL = \"City\";\r\nexport const CO_STATE_LABEL = \"State\";\r\nexport const CO_ZIP_LABEL = \"Zip\";\r\nexport const CO_SUBMIT_BUTTON = \"Save\";\r\nexport const CO_DETAIL_PAGE_TITLE = \"Company Detail\";\r\nexport const CO_SECOND_TITLE = \"Company Information\";\r\nexport const CO_THIRD_TITLE = \"Primary Contact\";\r\nexport const CO_FOURTH_TITLE = \"Address\";\r\nexport const CO_ADD_AFFILIATE_BUTTON = \"Add Affiliate\";\r\nexport const CO_AFFILIATE_DETAILS_BUTTON = \"Affiliate Details\";\r\nexport const CO_NO_AFF_RESULTS = \"No Results Found\";\r\n\r\n/**\r\n *\r\n * Products\r\n */\r\n\r\nexport const PROD_COL_PRODUCT_TYPE = \"Product\";\r\nexport const PROD_COL_CARRIER_TYPE = \"Carrier\";\r\nexport const PROD_COL_OCC_CLASS_TYPE = \"OCC Class\";\r\nexport const PROD_COL_DESIGN_TYPE = \"Design\";\r\nexport const PROD_COL_RENEWABILITY_TYPE = \"Renewability\";\r\nexport const PROD_COL_BP_TYPE = \"BP\";\r\nexport const PROD_COL_EP_TYPE = \"EP\";\r\nexport const PROD_COL_OWN_OCC_TYPE = \"Own OCC\";\r\nexport const PROD_COL_RESIDUAL_TYPE = \"Residual\";\r\nexport const PROD_COL_AIR_TYPE = \"AIR\";\r\nexport const PROD_COL_COLA_TYPE = \"COLA\";\r\nexport const PROD_COL_PRODUCT_ID = \"ID\";\r\nexport const PROD_DELETE_BUTTON = \"Delete\";\r\n\r\n/**\r\n * Medical Notes\r\n */\r\nexport const MN_CONDITION_NAME_LABEL = \"Name of Condition\";\r\nexport const MN_DATE_OF_DIAGNOSIS_LABEL = \"Date of Diagnosis\";\r\nexport const MN_TYPE_OF_TREATMENT_LABEL = \"Type of Treatment\";\r\nexport const MN_MEDICATIONS_TAKEN_LABEL = \"Medications Taken\";\r\nexport const MN_MEDICATION_NAME_LABEL = \"Medication Name\";\r\nexport const MN_DOSE_LABEL = \"Dose\";\r\nexport const MN_FREQUENCY_LABEL = \"Frequency\";\r\nexport const MN_ADD_MEDICATION_BUTTON = \"ADD ANOTHER MEDICATION\";\r\nexport const MN_ADDITIONAL_NOTES_LABEL = \"Additional Notes\";\r\nexport const MN_ADD_CONDITION_LABEL = \"Add Another Condition\";\r\n\r\n/**\r\n * Modal\r\n */\r\nexport const MOD_DIALOG_1 = \"You have made changes to this proposal without saving them.\";\r\n\r\n/**\r\n * Classifications Step\r\n */\r\nexport const PBC_CARRIER_LABEL = \"Carrier\";\r\nexport const PBC_OCC_LABEL = \"Occupation Class\";\r\nexport const PBC_TITLE = \"DISABILITY INSURANCE PRODUCT CLASSIFICATION DETAILS\";\r\nexport const PBC_PRODUCT_LABEL = \"Product\";\r\nexport const PBC_ADD_COLUMN_BUTTON = \"Add Column\";\r\nexport const PBC_DELETE = \"Delete\";\r\n\r\n/**\r\n * Case Design\r\n */\r\nexport const PBCD_PRODUCT_SELECTION_TITLE = \"PRODUCT SELECTION\";\r\nexport const PBCD_PRODUCT_TYPE_LABEL = \"Product Type\";\r\nexport const PBCD_BP_LABEL = \"BP\";\r\nexport const PBCD_BP_NOTE = \"The maximum duration of time in which benefits can be paid\";\r\nexport const PBCD_EP_LABEL = \"EP\";\r\nexport const PBCD_EP_NOTE = \"The period of days a claimant must wait prior to accruing benefits\";\r\nexport const PBCD_PAYOR_LABEL = \"Payor\";\r\nexport const PBCD_PAYOR_NOTE = \"Who is paying the premiums? Employee = tax free benefits, Employer = taxable benefits.\";\r\nexport const PBCD_BENEFIT_AMOUNT = \"Benefit Amount\";\r\nexport const PBCD_BENEFIT_NOTE = \"The amount of coverage available based on earned income. Typically, the carriers can protect up to 65% of your clients gross income\";\r\nexport const PDC_I_AM_NOT_SURE_NOTE = \"Need a little help? Allow our highly trained sales specialist to design this policy for you\";\r\nexport const PBCD_ADDITIONAL_CLIENT_NOTE = \"Additional client or case design info\";\r\n\r\n\r\n/**\r\n * Analyzer\r\n */\r\nexport const ANL_BASE_BENEFIT_LABEL = \"Base Benefit\";\r\nexport const ANL_OCC_CLASS_LABEL = \"Occ Class\";\r\nexport const ANL_SSIB_LABEL = \"SSIB\";\r\nexport const ANL_TOTAL_BENEFIT_LABEL = \"Total Benefit\";\r\nexport const ANL_RENEWABILITY_LABEL = \"Renewability\";\r\nexport const ANL_BP_LABEL = \"BP\";\r\nexport const ANL_EP_LABEL = \"EP\";\r\nexport const ANL_OWN_OCC_LABEL = \"Own Occ\";\r\nexport const ANL_RESIDUAL_LABEL = \"Residual\";\r\nexport const ANL_MINIMUM_RESIDUAL_LABEL = \"Minimum Residual Benefit Payable\";\r\nexport const ANL_FUTURE_INSURABILITY_LABEL = \"Future Insurability Options\";\r\nexport const ANL_AIR_LABEL = \"AIR\";\r\nexport const ANL_COLA_LABEL = \"COLA\";\r\nexport const ANL_MENTAL_NERVOUS_LABEL = \"Mental Nervous Limitation\";\r\nexport const ANL_CATASTROPHIC_LABEL = \"Catastrophic\";\r\nexport const ANL_CATASTROPHIC_AMOUNT_LABEL = \"Amount\";\r\nexport const ANL_UNIQUE_PROVISION_LABEL = \"Unique Provision\";\r\nexport const ANL_AP_LABEL = \"Annual Premium\";\r\nexport const ANL_POTENTIAL_BENEFIT_LABEL = \"Potential Benefit Payout\";\r\nexport const ANL_MONTHLY_LABEL = \"Monthly Premium\";\r\nexport const ANL_SAVE_BUTTON = \"Save Page\";\r\nexport const ANL_COST_PER_100_LABEL = \"Cost per 100 of Benefit \";\r\n\r\n/**\r\n * Documentation\r\n */\r\nexport const DOC_DOCUMENTS_TITLE = \"DOCUMENTS ASSOCIATED WITH PROPOSAL\";\r\nexport const DOC_ADD_DOCUMENT_BUTTON = \"Add Document(s)\";\r\nexport const DOC_ATTACH_COL = \"Attach\";\r\nexport const DOC_NAME_COL = \"Name\";\r\nexport const DOC_TYPE_COL = \"Type\";\r\nexport const DOC_DOWNLOAD_COL = \"Download\";\r\nexport const DOC_DELETE_COL = \"Delete\";\r\nexport const DOC_MODIFIED_BY_COL = \"Modified By\";\r\nexport const DOC_MODIFIED_DATE_COL = \"Modified\";\r\nexport const DOC_SEND_DOCUMENTATION_TITLE = \"SEND DOCUMENTATION\";\r\nexport const DOC_DEFAULT_RECIPIENTS = \"Default Recipients:\";\r\nexport const DOC_OTHER_EMAIL = \"Other Email:\";\r\nexport const DOC_SUBJECT = \"Subject:\";\r\nexport const DOC_BODY_TITLE = \"Email Body:\";\r\nexport const DOC_SMS_TITLE = \"SMS Body:\";\r\nexport const DOC_SEND_BUTTON = \"Send\";\r\nexport const DOC_FILE_UPLOAD_SUCCESS_TOAST = \"File upload success!\";\r\nexport const DOC_DOWNLOAD_BUTTON = \"Download\";\r\nexport const DOC_DELETE_BUTTON = \"Delete\";\r\nexport const DOC_CONF_MODAL_TITLE = \"Documentation Successfully Sent\";\r\nexport const DOC_CONF_MODAL_REV_NOTE = \"Confirmation will be noted in the Revisions section\";\r\nexport const DOC_CONF_MODAL_BUTTON = \"Continue\";\r\nexport const DOC_EMAIL_VALIDATION_FAIL_TOAST =\r\n \"Please ensure the email contains an attachment and a valid recipient\";\r\nexport const DOC_DELETE_CONFIRM_TEXT = \"Are you sure you want to delete this document?\";\r\nexport const DOC_DELETE_YES_BUTTON = \"Yes\";\r\nexport const DOC_DELETE_NO_BUTTON = \"No\";\r\n\r\n/**\r\n * Upload Document Modal\r\n */\r\nexport const UDM_TITLE = \"Upload Document\";\r\nexport const UDM_CANCEL_BUTTON = \"Cancel\";\r\nexport const UDM_UPLOAD_BUTTON = \"Upload\";\r\nexport const UDM_DEFAULT_FILE_TYPE = \"Document Type\";\r\nexport const UDM_SEND_SMS = \"Send SMS\";\r\nexport const UDM_DROPZONE = \"Drag 'n' drop or click to select file.\";\r\nexport const UDM_DELETE_BUTTON = \"Delete\";\r\n\r\n/**\r\n * Form Modal\r\n */\r\nexport const FM_DEFAULT_SAVE = \"Save\";\r\n\r\n/**\r\n * Accordion\r\n */\r\nexport const AC_EDIT_BUTTON = \"Edit\";\r\n\r\n/**\r\n * Toast\r\n */\r\nexport const T_BUTTON = \"CLOSE\";\r\n\r\n/*\r\n * Dropdown Builder Labels\r\n */\r\nexport const DD_BUILDER_LABEL_BRANCH = \"Branch\";\r\nexport const DD_BUILDER_LABEL_COMPANY = \"Company\";\r\nexport const DD_BUILDER_LABEL_RBM = \"RBM\";\r\nexport const DD_BUILDER_LABEL_BUSINESS_OWNER = \"Business Owner\";\r\n\r\n/*\r\n *\r\n */\r\nexport const REV_ITEM_SENT = (date: any, time: any, zone: any) =>\r\n `Sent on ${date} at ${time} ${zone}`;\r\nexport const REV_NEW_VALUE_LABEL = \"New Value:\";\r\nexport const REV_OLD_VALUE_LABEL = \"Old Value:\";\r\n\r\nexport const SU_SUBMIT_SUCCESS_TOAST = \"Files Successfully uploaded!\";\r\nexport const SU_NOTE_LABEL = \"Note\";\r\nexport const SU_DOCUMENT_TYPE = \"Document type\";\r\nexport const SU_NOTE_PLACEHOLDER = \"Type notes here\";\r\n","import { IBroker, defaultBroker } from \"./broker.model\";\r\nimport { IClient, defaultClient } from \"./client.model\";\r\nimport * as S from \"../../constants/StringConstants\";\r\n\r\n/**\r\n * ProposalRecords represent a single entry in the proposals table.\r\n */\r\nexport interface IProposalRecord {\r\n timeSpan: string;\r\n proposalID: number;\r\n revisionNumber: number;\r\n branch: string;\r\n rbm: string;\r\n affiliate: string;\r\n memberCompany: string;\r\n brokerName: string;\r\n clientName: string;\r\n specialistName: string;\r\n status: string;\r\n}\r\n\r\nexport const defaultValue: Readonly = {\r\n timeSpan: \"\",\r\n proposalID: null,\r\n revisionNumber: null,\r\n branch: \"\",\r\n rbm: \"\",\r\n affiliate: \"\",\r\n memberCompany: \"\",\r\n brokerName: \"\",\r\n clientName: \"\",\r\n specialistName: \"\",\r\n status: \"\"\r\n};\r\n\r\nexport interface IProposal {\r\n proposalID: number;\r\n proposalGroupID: number;\r\n broker: IBroker;\r\n client: IClient;\r\n caseDesign: any;\r\n organization: string;\r\n specialistID: number;\r\n productTypeID: number;\r\n epTypeID: number;\r\n bpTypeID: number;\r\n payorTypeID: number;\r\n tobaccoTypeID: number;\r\n tobaccoFrequencyTypeID: number;\r\n isMaxBenefit: boolean;\r\n statusTypeID: number;\r\n originationTypeID: number;\r\n}\r\n\r\nexport const defaultProposal: Readonly = {\r\n proposalID: null,\r\n proposalGroupID: null,\r\n broker: defaultBroker,\r\n client: defaultClient,\r\n caseDesign: null,\r\n organization: S.PDO_QUOTE_ENGINE,\r\n specialistID: undefined,\r\n productTypeID: undefined,\r\n epTypeID: undefined,\r\n bpTypeID: undefined,\r\n payorTypeID: undefined,\r\n tobaccoTypeID: 1,\r\n tobaccoFrequencyTypeID: 1,\r\n isMaxBenefit: true,\r\n statusTypeID: 2,\r\n originationTypeID: 1\r\n};\r\n\r\nexport const overviewDefaults = {\r\n proposalID: null,\r\n proposalGroupID: null,\r\n broker: defaultBroker,\r\n clients: [defaultClient]\r\n};\r\n","/**\r\n * utils.currency.ts\r\n * Disability Insurance Services\r\n *\r\n * Created by Jeremy Moyers\r\n */\r\n\r\n/**\r\n * Round the specified number to the hundreds place.\r\n * @param {number} value - the number value to round.\r\n */\r\nexport const roundCurrency = (value: number): number => {\r\n if (value === undefined) {\r\n return;\r\n }\r\n return parseFloat(value.toFixed(2));\r\n};\r\n\r\nexport const formatUSD = (value: number): string => {\r\n const formatter = new Intl.NumberFormat(\"en-US\", {\r\n style: \"currency\",\r\n currency: \"USD\"\r\n });\r\n\r\n return formatter.format(value);\r\n};\r\n","import axios from \"axios\";\r\nimport { get } from \"lodash\";\r\nimport { PENDING, FULFILLED, REJECTED } from \"./action-type.util\";\r\nimport { IOption } from \"../models/option.model\";\r\nimport { defaultProposal } from \"../models/proposal.model\";\r\nimport { defaultCondition } from \"../models/client.model\";\r\nimport { roundCurrency } from \"../../util/utils.currency\";\r\n\r\nconst ACTION_TYPES = {\r\n RESET_BUILDER: \"proposal/RESET_BUILDER\",\r\n FETCH_OPTIONS: \"proposal/FETCH_OPTIONS\",\r\n FETCH_BROKER: \"proposal/FETCH_BROKER\",\r\n FETCH_RIDERS: \"proposal/FETCH_RIDERS\",\r\n FETCH_STATUS_LIST: \"proposal/FETCH_STATUS_LIST\",\r\n FETCH_PROPOSAL: \"proposal/FETCH_PROPOSAL\",\r\n FETCH_PROPOSAL_CLASSIFICATION: \"proposal/FETCH_PROPOSAL_CLASSIFICATION\",\r\n SAVE_PROPOSAL: \"proposal/SAVE_PROPOSAL\",\r\n SUBMIT_PROPOSAL: \"proposal/SUBMIT_PROPOSAL\",\r\n FETCH_AGE: \"proposal/FETCH_AGE\",\r\n\r\n HIDE_SUBMIT_TOAST: \"proposal/HIDE_SUBMIT_TOAST\",\r\n HIDE_SAVE_TOAST: \"proposal/HIDE_SAVE_TOAST\",\r\n FETCH_OCCUPATION: \"proposal/FETCH_OCCUPATION\",\r\n CHANGE_STATUS_TYPE: \"proposal/CHANGE_STATUS_TYPE\"\r\n};\r\n\r\nconst overviewOptions = {\r\n selectOriginList: [],\r\n selectSpecialistList: [],\r\n selectBrokerList: [],\r\n selectProductList: [],\r\n selectHearAboutUsList: []\r\n};\r\n\r\nconst clientOptions = {\r\n selectGenderList: [],\r\n selectPrefixList: [],\r\n selectTobaccoTypeList: [],\r\n selectTobaccoFrequencyList: [],\r\n selectMedicationFrequencyList: [],\r\n selectCredentialTypeList: [],\r\n selectGovernmentTypeList: [],\r\n selectStateList: [],\r\n selectPaidByTypeList: []\r\n};\r\n\r\nconst classificationOptions = {\r\n bpTypeFullList: [],\r\n designTypeFullList: []\r\n};\r\n\r\nconst caseDesignOptions = {\r\n selectBPList: [],\r\n selectEPList: [],\r\n selectPayorList: [],\r\n selectRiderList: []\r\n};\r\n\r\ntype StatusList = IOption[];\r\n\r\ntype CarrierOptions = {\r\n [productTypeID: number]: IOption[];\r\n};\r\n\r\ntype OccClassOptions = {\r\n [productTypeID: number]: {\r\n [carrierValue: number]: IOption[];\r\n };\r\n};\r\n\r\ntype productOptions = {\r\n [productTypeID: number]: {\r\n [carrierValue: number]: {\r\n [occClassValue: number]: IOption[];\r\n };\r\n };\r\n};\r\n\r\ntype CaseDesignRiderOptions = {\r\n productID: number;\r\n productName: string;\r\n riders: Array;\r\n};\r\n\r\nconst initialState = {\r\n isSubmitting: false,\r\n isSavingNext: false,\r\n isClassificationLoaded: false,\r\n isSavingPrevious: false,\r\n overviewOptions: overviewOptions,\r\n clientOptions: clientOptions,\r\n classificationOptions: classificationOptions,\r\n caseDesignOptions: caseDesignOptions,\r\n // Step 2\r\n caseDesignRiderOptions: {\r\n productID: null,\r\n productName: \"\",\r\n riders: []\r\n },\r\n statusList: [],\r\n age: {\r\n years: \"\",\r\n months: \"\",\r\n days: \"\"\r\n },\r\n isSubmitToastVisible: false,\r\n isSaveToastVisible: false,\r\n currentProposal: {},\r\n proposalMap: {}, // going to delete that prop with all possible referencies\r\n selectedOccupationOption: undefined\r\n};\r\n\r\nexport type ProposalOverviewOptionsState = Readonly;\r\nexport type ProposalClientOptions = Readonly;\r\nexport type ProposalClassificationOptions = Readonly;\r\nexport type ProposalCaseDesignOptions = Readonly;\r\nexport type ProposalOptionsState = Readonly;\r\n\r\n/**\r\n * ProposalOptions Reducer\r\n */\r\nexport default (state: ProposalOptionsState = initialState, action): ProposalOptionsState => {\r\n switch (action.type) {\r\n // Pending\r\n case PENDING(ACTION_TYPES.SUBMIT_PROPOSAL): {\r\n return {\r\n ...state,\r\n isSubmitting: true\r\n };\r\n }\r\n case PENDING(ACTION_TYPES.FETCH_OCCUPATION):\r\n case PENDING(ACTION_TYPES.FETCH_AGE):\r\n case PENDING(ACTION_TYPES.FETCH_PROPOSAL):\r\n case PENDING(ACTION_TYPES.FETCH_STATUS_LIST):\r\n case PENDING(ACTION_TYPES.FETCH_RIDERS):\r\n case PENDING(ACTION_TYPES.FETCH_OPTIONS): {\r\n return {\r\n ...state\r\n };\r\n }\r\n\r\n // Fulfilled\r\n\r\n case FULFILLED(ACTION_TYPES.RESET_BUILDER): {\r\n return {\r\n ...initialState\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH_OCCUPATION): {\r\n const occupationOption = get(action, \"payload.data\");\r\n return {\r\n ...state,\r\n selectedOccupationOption: occupationOption\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH_AGE): {\r\n const age = {\r\n years: action.payload.data.years,\r\n months: action.payload.data.months,\r\n days: action.payload.data.days\r\n };\r\n return {\r\n ...state,\r\n age\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH_RIDERS): {\r\n const productID = action.payload.data.productID;\r\n const productName = action.payload.data.productName;\r\n const riders = action.payload.data.riders;\r\n return {\r\n ...state,\r\n caseDesignRiderOptions: {\r\n productID,\r\n productName,\r\n riders\r\n }\r\n };\r\n }\r\n\r\n case ACTION_TYPES.SAVE_PROPOSAL: {\r\n const currentProposal = action.payload;\r\n return {\r\n ...state,\r\n currentProposal,\r\n isSaveToastVisible: true,\r\n isSavingNext: false,\r\n isSavingPrevious: false\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH_PROPOSAL): {\r\n const newState = newProposal(state, action);\r\n return {\r\n ...state,\r\n ...newState\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH_PROPOSAL_CLASSIFICATION): {\r\n const { classifications, proposalId, ...classificationOptions } = action.payload.data;\r\n \r\n classifications.map(c => {\r\n c.analyzer.baseBenefitAmount = roundCurrency(c.analyzer.baseBenefitAmount);\r\n c.analyzer.ssib = roundCurrency(c.analyzer.ssib);\r\n c.analyzer.totalBenefitAmount = roundCurrency(c.analyzer.totalBenefitAmount);\r\n c.analyzer.annualPremium = roundCurrency(c.analyzer.annualPremium);\r\n c.analyzer.potentialBenefitPayout = roundCurrency(c.analyzer.potentialBenefitPayout);\r\n c.analyzer.monthlyPremium = roundCurrency(c.analyzer.monthlyPremium);\r\n return c;\r\n });\r\n \r\n return {\r\n ...state,\r\n isClassificationLoaded: true,\r\n classificationOptions,\r\n proposalMap:{\r\n ...state.proposalMap,\r\n [proposalId]:{\r\n ...state.proposalMap[proposalId],\r\n classifications\r\n }\r\n }\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH_OPTIONS): {\r\n const overviewOptions = action.payload.data.overviewDetails;\r\n const clientOptions = action.payload.data.clientDetails;\r\n const classificationOptions = action.payload.data.classificationDetails;\r\n const caseDesignOptions = action.payload.data.caseDesignDetails;\r\n const specialistID = action.meta.specialistID;\r\n return {\r\n ...state,\r\n overviewOptions,\r\n clientOptions,\r\n classificationOptions,\r\n caseDesignOptions,\r\n proposalMap: {\r\n [\"new\"]: {\r\n ...defaultProposal,\r\n specialistID\r\n }\r\n }\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH_STATUS_LIST): {\r\n const statusList = get(action, \"payload.data\");\r\n return {\r\n ...state,\r\n statusList\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.SUBMIT_PROPOSAL): {\r\n const currentProposal = {};\r\n return {\r\n ...state,\r\n currentProposal,\r\n isSubmitting: false,\r\n isSubmitToastVisible: true\r\n };\r\n }\r\n\r\n // Rejected\r\n case REJECTED(ACTION_TYPES.FETCH_OCCUPATION):\r\n case REJECTED(ACTION_TYPES.SUBMIT_PROPOSAL):\r\n case REJECTED(ACTION_TYPES.FETCH_AGE):\r\n case REJECTED(ACTION_TYPES.FETCH_STATUS_LIST):\r\n case REJECTED(ACTION_TYPES.FETCH_RIDERS):\r\n case REJECTED(ACTION_TYPES.FETCH_OPTIONS): {\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n isSavingNext: false,\r\n isSavingPrevious: false\r\n };\r\n }\r\n\r\n // Non - network\r\n case ACTION_TYPES.HIDE_SUBMIT_TOAST: {\r\n return {\r\n ...state,\r\n isSubmitToastVisible: false\r\n };\r\n }\r\n\r\n case ACTION_TYPES.HIDE_SAVE_TOAST: {\r\n return {\r\n ...state,\r\n isSaveToastVisible: false\r\n };\r\n }\r\n\r\n case ACTION_TYPES.CHANGE_STATUS_TYPE: {\r\n const { proposalID, statusTypeID } = action.meta;\r\n const proposal = state.proposalMap[proposalID];\r\n \r\n return {\r\n ...state,\r\n proposalMap: {\r\n ...state.proposalMap,\r\n [proposalID]: {\r\n ...proposal,\r\n statusTypeID\r\n }\r\n }\r\n };\r\n }\r\n\r\n default: {\r\n return {\r\n ...state\r\n };\r\n }\r\n }\r\n};\r\n\r\nconst newProposal = (state: ProposalOptionsState, action): ProposalOptionsState => {\r\n const {\r\n specialistID,\r\n broker,\r\n productTypeID,\r\n hearAboutUsTypeID,\r\n originationTypeID,\r\n ...overviewOptions\r\n } = action.payload.data.overviewDetails;\r\n\r\n const { ...clientOptions } = action.payload.data.clientDetails;\r\n var { clients } = action.payload.data.clientDetails;\r\n\r\n // Ensure clients have a default medical condition.\r\n clients = clients.map(c => {\r\n if (c.conditions.length === 0) {\r\n c.conditions.push(defaultCondition);\r\n }\r\n c.isReplaceExistingCoverage = c.isReplaceExistingCoverage ? 1 : 0;\r\n return c;\r\n });\r\n\r\n const {\r\n productType,\r\n bpTypeID,\r\n epTypeID,\r\n payorTypeID,\r\n benefitAmount,\r\n isMaxBenefit,\r\n riders,\r\n ...caseDesignOptions\r\n } = action.payload.data.caseDesignDetails;\r\n\r\n const {\r\n proposalID,\r\n proposalGroupID,\r\n statusTypeID,\r\n createdDate,\r\n isSubmitted\r\n } = action.payload.data;\r\n\r\n const proposal = {\r\n proposalID,\r\n proposalGroupID,\r\n specialistID,\r\n broker,\r\n productTypeID,\r\n originationTypeID,\r\n hearAboutUsTypeID,\r\n clients,\r\n productType,\r\n bpTypeID,\r\n epTypeID,\r\n payorTypeID,\r\n benefitAmount,\r\n isMaxBenefit,\r\n riders,\r\n statusTypeID,\r\n createdDate,\r\n isSubmitted\r\n };\r\n\r\n // HACK: pull the age out and store it in the top level state.\r\n const age = get(proposal, \"clients.0.age\");\r\n\r\n return {\r\n ...state,\r\n overviewOptions,\r\n clientOptions,\r\n caseDesignOptions,\r\n proposalMap: {\r\n ...state.proposalMap,\r\n [proposalID]: proposal\r\n },\r\n age\r\n };\r\n};\r\n\r\nexport const resetBuilder = () => {\r\n return {\r\n type: FULFILLED(ACTION_TYPES.RESET_BUILDER),\r\n payload: {}\r\n };\r\n};\r\n\r\n/**\r\n * Fetch an existing proposal and it's options\r\n */\r\nexport const fetchProposal = (id: string) => {\r\n return {\r\n type: ACTION_TYPES.FETCH_PROPOSAL,\r\n payload: axios.get(`proposals/${id}`)\r\n };\r\n};\r\n\r\n/**\r\n * Fetch an existing proposal Classification options\r\n */\r\nexport const fetchProposalClassifications = (id: string) => {\r\n return {\r\n type: ACTION_TYPES.FETCH_PROPOSAL_CLASSIFICATION,\r\n payload: axios.get(`proposals/${id}/classifications`)\r\n };\r\n};\r\n\r\n/**\r\n * Create a resource with the specified parameters.\r\n * @param {[key: string]: any} params - key value pairs to initialize the resource.\r\n */\r\nexport const saveProposal = (params: { [key: string]: any }) => {\r\n return {\r\n type: ACTION_TYPES.SAVE_PROPOSAL,\r\n meta: { formAction: \"save\" },\r\n payload: axios.post(\"proposals\", params)\r\n };\r\n};\r\n\r\n/**\r\n * Submit a proposal to DIS\r\n * @param params\r\n */\r\nexport const submitProposal = (params: { [key: string]: any }) => {\r\n return {\r\n type: ACTION_TYPES.SUBMIT_PROPOSAL,\r\n payload: axios.post(`brokerspublic/proposal`, params)\r\n };\r\n};\r\n\r\n/**\r\n * Save the proposal on client side only.\r\n * @param params -proposal json data.\r\n */\r\nexport const saveProposalNext = (params: { [key: string]: any }) => \r\n({\r\n type: ACTION_TYPES.SAVE_PROPOSAL,\r\n meta: { formAction: \"next\" },\r\n payload: params\r\n});\r\n\r\n/**\r\n * Save the proposal on client side only.\r\n * @params params - proposal json data.\r\n */\r\nexport const saveProposalPrevious = (params: { [key: string]: any }) => ({\r\n type: ACTION_TYPES.SAVE_PROPOSAL,\r\n meta: { formAction: \"previous\" },\r\n payload: params\r\n});\r\n\r\n/**\r\n * Fetch all status options available.\r\n */\r\nexport const fetchStatusList = () => ({\r\n type: ACTION_TYPES.FETCH_STATUS_LIST,\r\n payload: axios.get(\"proposals/statuses\")\r\n});\r\n\r\n/**\r\n * Fetch dropdown options for creating a new proposal.\r\n */\r\nexport const fetchProposalOptions = (specialistID: number) => ({\r\n type: ACTION_TYPES.FETCH_OPTIONS,\r\n meta: { specialistID },\r\n payload: axios.get(\"proposals/new\")\r\n});\r\n\r\n/**\r\n * Fetch details for the specified broker.\r\n * @param {number} brokerId\r\n */\r\nexport const fetchBrokerDetails = brokerId => ({\r\n type: ACTION_TYPES.FETCH_BROKER,\r\n payload: axios.get(`brokers/${brokerId}`)\r\n});\r\n\r\n/**\r\n * Fetch the riders for the specified product.\r\n * @param {number} productTypeID\r\n */\r\nexport const fetchRiders = (productTypeID: number) => ({\r\n type: ACTION_TYPES.FETCH_RIDERS,\r\n payload: axios.get(`products/${productTypeID}/riders`, { params: { id: productTypeID } })\r\n});\r\n\r\n/**\r\n * Request age break down for the specified date of birth.\r\n * Age breakdown: X years X months X days\r\n * @param dob\r\n */\r\nexport const fetchAge = (dob: string) => {\r\n return {\r\n type: ACTION_TYPES.FETCH_AGE,\r\n payload: axios.get(`datetime/age/${dob.split('T')[0]}`)\r\n };\r\n};\r\n\r\nexport const fetchOccupation = (occupationID: number) => {\r\n return {\r\n type: ACTION_TYPES.FETCH_OCCUPATION,\r\n payload: axios.get(`proposals/occupations/${occupationID}`)\r\n };\r\n};\r\n\r\n/**\r\n * Update state to hide the submission toast.\r\n */\r\nexport const hideToast = () => {\r\n return {\r\n type: ACTION_TYPES.HIDE_SUBMIT_TOAST\r\n };\r\n};\r\n\r\nexport const hideSaveToast = () => {\r\n return {\r\n type: ACTION_TYPES.HIDE_SAVE_TOAST\r\n };\r\n};\r\n\r\n/**\r\n * Change the statusTypeID for the specified proposal in redux.\r\n * The status type dropdown lives outside the rest of the proposal builder form so it\r\n * requires a workaround to propagate it's changes. I hate life.\r\n * @param {string} proposalID - id of the specified proposal. \"new\" is a valid id.\r\n * @param {number} statusTypeID - id of the status type.\r\n */\r\nexport const changeStatusTypeForProposal = (proposalID: string, statusTypeID: number) => {\r\n return {\r\n type: ACTION_TYPES.CHANGE_STATUS_TYPE,\r\n meta: { proposalID, statusTypeID }\r\n };\r\n};\r\n","import axios from \"axios\";\r\nimport { get } from \"lodash\";\r\nimport { PENDING, FULFILLED, REJECTED } from \"./action-type.util\";\r\nimport { IOption } from \"../models/option.model\";\r\nimport { defaultProposal } from \"../models/proposal.model\";\r\nimport { defaultCondition } from \"../models/client.model\";\r\nimport { roundCurrency } from \"../../util/utils.currency\";\r\nimport { string } from \"prop-types\";\r\n\r\nconst ACTION_TYPES = {\r\n CLIENT_FETCH_OPTIONS: \"client/FETCH_OPTIONS\",\r\n CASEDESIGN_FETCH_OPTIONS: \"casedesign/FETCH_OPTIONS\",\r\n PRODUCT_FETCH_PRODUCTTYPES: \"product/FETCH_PRODUCTTYPES\",\r\n FETCH_RIDERS: \"casedesign/FETCH_RIDERS\"\r\n};\r\n\r\nconst productOptions = {\r\n selectProductTypes: []\r\n};\r\n\r\nconst clientOptions = {\r\n selectGenderList: [],\r\n selectPrefixList: [],\r\n selectTobaccoTypeList: [],\r\n selectTobaccoFrequencyList: [],\r\n selectMedicationFrequencyList: [],\r\n selectCredentialTypeList: [],\r\n selectGovernmentTypeList: [],\r\n selectStateList: [],\r\n selectPaidByTypeList: []\r\n};\r\n\r\nconst caseDesignOptions = {\r\n selectBPList: [],\r\n selectEPList: [],\r\n selectPayorList: [],\r\n selectRiderList: []\r\n};\r\n\r\nconst initialState = {\r\n isSubmitting: false,\r\n isSavingNext: false,\r\n isSavingPrevious: false,\r\n \r\n productOptions: productOptions,\r\n clientOptions: clientOptions,\r\n caseDesignOptions: caseDesignOptions,\r\n caseDesignRiderOptions: {\r\n productID: null,\r\n productName: \"\",\r\n riders: []\r\n }\r\n};\r\n\r\nexport type ClientsOptions = Readonly;\r\nexport type ProposalCaseDesignOptions = Readonly;\r\nexport type ClientOptionsState = Readonly;\r\n\r\n/**\r\n * ClientOptions Reducer\r\n */\r\nexport default (state: ClientOptionsState = initialState, action): ClientOptionsState => {\r\n switch (action.type) {\r\n case PENDING(ACTION_TYPES.CLIENT_FETCH_OPTIONS): {\r\n return {\r\n ...state\r\n };\r\n }\r\n case FULFILLED(ACTION_TYPES.CLIENT_FETCH_OPTIONS): {\r\n var clientOptions = action.payload.data;\r\n return {\r\n ...state,\r\n clientOptions\r\n };\r\n }\r\n case REJECTED(ACTION_TYPES.CLIENT_FETCH_OPTIONS): {\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n isSavingNext: false,\r\n isSavingPrevious: false\r\n };\r\n }\r\n\r\n case PENDING(ACTION_TYPES.FETCH_RIDERS):\r\n case PENDING(ACTION_TYPES.CASEDESIGN_FETCH_OPTIONS): {\r\n return {\r\n ...state\r\n };\r\n }\r\n case FULFILLED(ACTION_TYPES.CASEDESIGN_FETCH_OPTIONS): {\r\n var caseDesignOptions = action.payload.data;\r\n \r\n return {\r\n ...state,\r\n caseDesignOptions\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH_RIDERS): {\r\n const productID = action.payload.data.productID;\r\n const productName = action.payload.data.productName;\r\n const riders = action.payload.data.riders;\r\n return {\r\n ...state,\r\n caseDesignRiderOptions: {\r\n productID,\r\n productName,\r\n riders\r\n }\r\n };\r\n }\r\n \r\n case REJECTED(ACTION_TYPES.CASEDESIGN_FETCH_OPTIONS): {\r\n return {\r\n ...state,\r\n isSubmitting: false,\r\n isSavingNext: false,\r\n isSavingPrevious: false\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.PRODUCT_FETCH_PRODUCTTYPES): {\r\n var productOptions = action.payload.data;\r\n return {\r\n ...state,\r\n productOptions\r\n };\r\n }\r\n case PENDING(ACTION_TYPES.PRODUCT_FETCH_PRODUCTTYPES): {\r\n return {\r\n ...state\r\n };\r\n }\r\n case REJECTED(ACTION_TYPES.PRODUCT_FETCH_PRODUCTTYPES): {\r\n return {\r\n ...state\r\n };\r\n }\r\n\r\n default: {\r\n return {\r\n ...state\r\n };\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Fetch dropdown options for creating a new potential proposal.\r\n */\r\nexport const fetchClientOptions = () => ({\r\n type: ACTION_TYPES.CLIENT_FETCH_OPTIONS,\r\n meta: { },\r\n payload: axios.get(\"brokerspublic/clientoptions\")\r\n});\r\n\r\nexport const fetchCaseDesignOptions = () => ({\r\n type: ACTION_TYPES.CASEDESIGN_FETCH_OPTIONS,\r\n meta: { },\r\n payload: axios.get(\"brokerspublic/casedesignoptions\")\r\n});\r\n\r\nexport const fetchProductTypeOptions = () => ({\r\n type: ACTION_TYPES.PRODUCT_FETCH_PRODUCTTYPES,\r\n meta: { },\r\n payload: axios.get(\"brokerspublic/producttypes\")\r\n});\r\n\r\nexport const fetchRiders = (productTypeID: number) => ({\r\n type: ACTION_TYPES.FETCH_RIDERS,\r\n payload: axios.get(`products/${productTypeID}/riders`, { params: { id: productTypeID } })\r\n});\r\n","import { IBroker } from \"../models/broker.model\";\r\nimport ResourceFactory from \"./resource\";\r\n\r\nconst resourceKey = \"brokerspublic\";\r\nconst resourceUrl = \"brokerspublic\";\r\nconst resourceIdKey = \"brokerID\";\r\n\r\nconst { reducer, fetchList, create, fetch, update } = ResourceFactory(resourceKey, resourceUrl, resourceIdKey);\r\n\r\nexport type BrokerResourcesState = ReturnType;\r\nexport const fetchBrokersList = fetchList;\r\nexport const createBroker = create;\r\nexport const fetchBroker = fetch;\r\nexport const updateBroker = update;\r\nexport default reducer;\r\n","import axios from 'axios'\r\n\r\nimport { ICompany } from '../models/company.model'\r\nimport ResourceFactory from './resource'\r\n\r\nconst resourceKey = 'companies'\r\nconst resourceUrl = 'companies'\r\nconst resourceIdKey = 'companyID'\r\n\r\nconst { reducer, fetchList, fetch, create, update } = ResourceFactory(\r\n resourceKey,\r\n resourceUrl,\r\n resourceIdKey\r\n)\r\n\r\nexport type CompanyResourcesState = ReturnType\r\nexport const fetchCompanyList = fetchList\r\nexport const fetchCompany = fetch\r\nexport const createCompany = create\r\nexport const updateCompany = update\r\nexport default reducer\r\n","import axios from \"axios\";\r\n\r\nimport { PENDING, FULFILLED, REJECTED } from \"./action-type.util\";\r\n\r\nconst ACTION_TYPES = {\r\n FETCH_OPTIONS: \"brokers/FETCH_OPTIONS\",\r\n FETCH_AFFILIATE: \"brokers/FETCH_AFFILIATE\",\r\n FETCH_BROKER_PRIMARY_EMAIL: \"brokers/FETCH_BROKER_PRIMARY_EMAIL\",\r\n};\r\n\r\nconst initialState = {\r\n loading: false,\r\n companyAffiliate: undefined,\r\n isAfiliateRequestInProgress: false,\r\n affiliateList: [],\r\n branchList: [],\r\n companyList: [],\r\n selectStateList: [],\r\n rbmList: [],\r\n hearAboutUsList: [],\r\n brokerPrimaryEmailValidating: false,\r\n existentBrokerIdByEmail: undefined,\r\n existentBrokerFirstNameByEmail: undefined,\r\n existentBrokerLastNameByEmail: undefined\r\n};\r\n\r\nexport type BrokerBuilderState = Readonly;\r\n\r\n/**\r\n * BrokerBuilder Reducer\r\n */\r\nexport default (state: BrokerBuilderState = initialState, action): BrokerBuilderState => {\r\n switch (action.type) {\r\n case PENDING(ACTION_TYPES.FETCH_AFFILIATE):{\r\n return {\r\n ...state,\r\n companyAffiliate: undefined,\r\n loading: true,\r\n isAfiliateRequestInProgress: true\r\n };\r\n }\r\n case PENDING(ACTION_TYPES.FETCH_OPTIONS): {\r\n return {\r\n ...state,\r\n companyAffiliate: undefined,\r\n loading: true\r\n };\r\n }\r\n case PENDING(ACTION_TYPES.FETCH_BROKER_PRIMARY_EMAIL): {\r\n return {\r\n ...state,\r\n brokerPrimaryEmailValidating: true,\r\n existentBrokerIdByEmail: undefined\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH_OPTIONS): {\r\n const affiliateList = action.payload.data.selectAffiliateList;\r\n const branchList = action.payload.data.selectBranchList;\r\n const rbmList = action.payload.data.selectRBMList;\r\n const companyList = action.payload.data.selectCompanyList;\r\n const selectStateList = action.payload.data.selectStateList;\r\n const hearAboutUsList = action.payload.data.selectHearAboutUsList;\r\n \r\n return {\r\n ...state,\r\n companyAffiliate: undefined,\r\n affiliateList,\r\n companyList,\r\n branchList,\r\n rbmList,\r\n selectStateList,\r\n hearAboutUsList,\r\n loading: false,\r\n brokerPrimaryEmailValidating: false,\r\n existentBrokerIdByEmail: undefined\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH_AFFILIATE): {\r\n const companyAffiliate = action.payload.data;\r\n return {\r\n ...state,\r\n companyAffiliate,\r\n isAfiliateRequestInProgress: false\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH_BROKER_PRIMARY_EMAIL): {\r\n const existentBroker = action.payload.data;\r\n return {\r\n ...state,\r\n brokerPrimaryEmailValidating: false,\r\n existentBrokerIdByEmail: existentBroker.brokerID\r\n };\r\n }\r\n\r\n case REJECTED(ACTION_TYPES.FETCH_OPTIONS): {\r\n return {\r\n ...state,\r\n loading: false\r\n };\r\n }\r\n\r\n case REJECTED(ACTION_TYPES.FETCH_BROKER_PRIMARY_EMAIL): {\r\n return {\r\n ...state,\r\n brokerPrimaryEmailValidating: false,\r\n existentBrokerIdByEmail: undefined\r\n };\r\n }\r\n\r\n default: {\r\n return {\r\n ...state\r\n };\r\n }\r\n }\r\n};\r\n\r\nexport const fetchBrokerOptions = (campaignID: number) => {\r\n var url = `brokerspublic/new`;\r\n if(campaignID) {\r\n url += \"/\" + campaignID;\r\n }\r\n return {\r\n type: ACTION_TYPES.FETCH_OPTIONS,\r\n payload: axios.get(url)\r\n };\r\n};\r\n\r\nexport const fetchCompanyAffiliate = (companyID: number) => ({\r\n type: ACTION_TYPES.FETCH_AFFILIATE,\r\n payload: axios.get(`companies/${companyID}/affiliate`)\r\n});\r\n\r\nexport const fetchBrokerByPrimaryEmail = (email: string) => ({\r\n type: ACTION_TYPES.FETCH_BROKER_PRIMARY_EMAIL,\r\n payload: axios.post(`validatePrimaryEmailExists`, { email })\r\n});\r\n","import axios from \"axios\";\r\n\r\nimport { PENDING, FULFILLED, REJECTED } from \"./action-type.util\";\r\n\r\nconst ACTION_TYPES = {\r\n FETCH_AFFILIATE_LOGO: \"affiliate/FETCH_AFFILIATE_LOGO\"\r\n};\r\n\r\nconst initialState = {\r\n loading: false,\r\n affiliateLogoId: undefined,\r\n};\r\n\r\nexport type AffiliateState = Readonly;\r\n\r\n/**\r\n * Affiliate Reducer\r\n */\r\nexport default (state: AffiliateState = initialState, action): AffiliateState => {\r\n switch (action.type) {\r\n case PENDING(ACTION_TYPES.FETCH_AFFILIATE_LOGO):{\r\n return {\r\n ...state,\r\n affiliateLogoId: undefined,\r\n loading: true\r\n };\r\n }\r\n \r\n case FULFILLED(ACTION_TYPES.FETCH_AFFILIATE_LOGO): {\r\n return {\r\n ...state,\r\n affiliateLogoId: action.payload.data,\r\n loading: false\r\n };\r\n }\r\n\r\n case REJECTED(ACTION_TYPES.FETCH_AFFILIATE_LOGO): {\r\n return {\r\n ...state,\r\n loading: false\r\n };\r\n }\r\n\r\n default: {\r\n return {\r\n ...state\r\n };\r\n }\r\n }\r\n};\r\n\r\nexport const fetchAffiliateLogo = (affiliateId: number) => ({\r\n type: ACTION_TYPES.FETCH_AFFILIATE_LOGO,\r\n payload: axios.get(`affiliates/${affiliateId}/logo`)\r\n});\r\n\r\n","import axios from \"axios\";\r\nimport { get, set } from \"lodash\";\r\n\r\nimport { IDocument } from \"../models/document.model\";\r\nimport { PENDING, FULFILLED, REJECTED } from \"./action-type.util\";\r\nimport { IOption } from \"../models/option.model\";\r\nimport { ISecureUploadFile } from '../../store/models/secureUploadFile.model';\r\n\r\nconst remapItem = item => ({ id: item[\"documentID\"], ...item });\r\nconst remapItems = items => items.map(remapItem);\r\n\r\nexport const ACTION_TYPES = {\r\n FETCH_DOCUMENTS: \"secureUpload/FETCH_DOCUMENTS\",\r\n UPLOAD_FILE: \"secureUpload/UPLOAD_FILE\",\r\n DOWNLOAD_FILE: \"secureUpload/DOWNLOAD_FILE\",\r\n DELETE_FILE: \"secureUpload/DELETE_FILE\",\r\n TOGGLE_UPLOAD_MODAL: \"secureUpload/TOGGLE_UPLOAD_MODAL\",\r\n TOGGLE_UPLOAD_TOAST: \"secureUpload/TOGGLE_UPLOAD_TOAST\",\r\n FETCH_DOCUMENT_TYPES: \"secureUpload/FETCH_TYPES\",\r\n TOGGLE_CONFIRMATION_MODAL: \"secureUpload/TOGGLE_CONFIRMATION_MODAL\",\r\n TOGGLE_CONFIRMATION_FAIL_MODAL: \"secureUpload/TOGGLE_CONFIRMATION_FAIL_MODAL\"\r\n};\r\n\r\nconst initialState = {\r\n documents: [],\r\n uploadModal: {\r\n documentTypes: new Array()\r\n },\r\n isUploadModalVisible: false,\r\n isUploadToastVisible: false,\r\n isConfirmationModalVisible: false,\r\n isConfirmationFailModalVisible: false\r\n};\r\n\r\nexport type SecureUploadState = Readonly;\r\n\r\n/**\r\n * SecureUpload Reducer\r\n */\r\nexport default (state: SecureUploadState = initialState, action): SecureUploadState => {\r\n switch (action.type) {\r\n // Pending\r\n case PENDING(ACTION_TYPES.FETCH_DOCUMENT_TYPES):\r\n case PENDING(ACTION_TYPES.DOWNLOAD_FILE):\r\n case PENDING(ACTION_TYPES.UPLOAD_FILE):\r\n case PENDING(ACTION_TYPES.FETCH_DOCUMENTS): {\r\n return {\r\n ...state\r\n };\r\n }\r\n\r\n // Fulfilled\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH_DOCUMENT_TYPES): {\r\n const documentOptions = get(action, \"payload.data\");\r\n return {\r\n ...state,\r\n uploadModal: {\r\n ...state.uploadModal,\r\n documentTypes: documentOptions\r\n }\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.DOWNLOAD_FILE): {\r\n return {\r\n ...state\r\n };\r\n }\r\n case FULFILLED(ACTION_TYPES.UPLOAD_FILE): {\r\n return {\r\n ...state,\r\n isUploadToastVisible: true\r\n };\r\n }\r\n\r\n case FULFILLED(ACTION_TYPES.FETCH_DOCUMENTS): {\r\n return {\r\n ...state\r\n };\r\n }\r\n\r\n // Rejected\r\n case REJECTED(ACTION_TYPES.FETCH_DOCUMENT_TYPES):\r\n case REJECTED(ACTION_TYPES.DOWNLOAD_FILE):\r\n case REJECTED(ACTION_TYPES.UPLOAD_FILE):\r\n case REJECTED(ACTION_TYPES.FETCH_DOCUMENTS): {\r\n return {\r\n ...state\r\n };\r\n }\r\n\r\n // Non network actions\r\n\r\n case ACTION_TYPES.TOGGLE_UPLOAD_MODAL: {\r\n const isUploadModalVisible = get(action, \"meta.open\");\r\n return {\r\n ...state,\r\n isUploadModalVisible\r\n };\r\n }\r\n\r\n case ACTION_TYPES.TOGGLE_UPLOAD_TOAST: {\r\n const isUploadToastVisible = get(action, \"meta.open\");\r\n return {\r\n ...state,\r\n isUploadToastVisible\r\n };\r\n }\r\n\r\n case ACTION_TYPES.TOGGLE_CONFIRMATION_MODAL: {\r\n const isConfirmationModalVisible = get(action, \"meta.open\");\r\n return {\r\n ...state,\r\n isConfirmationModalVisible\r\n };\r\n }\r\n\r\n case ACTION_TYPES.TOGGLE_CONFIRMATION_FAIL_MODAL: {\r\n const isConfirmationFailModalVisible = get(action, \"meta.open\");\r\n return {\r\n ...state,\r\n isConfirmationFailModalVisible\r\n };\r\n }\r\n\r\n default: {\r\n return {\r\n ...state\r\n };\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Fetch documents associated with the specified proposal .\r\n * @param {string} proposalID\r\n */\r\nexport const fetchDocuments = (proposalID: string) => {\r\n return {\r\n type: ACTION_TYPES.FETCH_DOCUMENTS,\r\n payload: axios.get(`proposals/${proposalID}/correspondence`).then(response => {\r\n const items = get(response, \"data\", null);\r\n if (items) set(response, \"data\", remapItems(items));\r\n return response;\r\n })\r\n };\r\n};\r\n\r\n/**\r\n * Fetch document types for the Upload modal.\r\n * @param {string} proposalID - id of the proposal\r\n */\r\nexport const fetchDocumentTypes = (proposalID: string) => {\r\n return {\r\n type: ACTION_TYPES.FETCH_DOCUMENT_TYPES,\r\n payload: axios.get(`proposals/${proposalID}/correspondence/types`)\r\n };\r\n};\r\n\r\n/**\r\n * Upload a document for the specified broker.\r\n * @param {number} brokerId - The specified broker ID.\r\n * @param {string} documentTypeID - the type of document.\r\n * @param {any} file - documents data\r\n */\r\nexport const uploadDocument = (brokerId: number, secureUploadFileItem: ISecureUploadFile) => {\r\n const formData = new FormData();\r\n formData.append(\"FormFile\", secureUploadFileItem.file);\r\n formData.append(\"FormFileNote\", secureUploadFileItem.note);\r\n formData.append(\"FormFileType\", `${secureUploadFileItem.documentType}`);\r\n\r\n return {\r\n type: ACTION_TYPES.UPLOAD_FILE,\r\n payload: axios.post(`secureupload/${brokerId}`, formData, {\r\n headers: { \"Content-Type\": \"multipart/form-data\" }\r\n })\r\n };\r\n};\r\n\r\n/**\r\n * Download the binary data for the specified document.\r\n * @param {string} proposalID - Id of the proposal that owns the document.\r\n * @param {string} documentID - Id of the specified document.\r\n */\r\nexport const downloadDocument = (proposalID: string, documentID: string) => {\r\n return {\r\n type: ACTION_TYPES.DOWNLOAD_FILE,\r\n payload: axios.get(`proposals/${proposalID}/correspondence/${documentID}`, { responseType: \"blob\" })\r\n };\r\n};\r\n\r\n/**\r\n * Delete the specified document for the specified proposal.\r\n * @param {string} proposalID - Id of the proposal tha owns the document.\r\n * @param {string} documentID - Id of the document to delete.\r\n */\r\nexport const deleteDocument = (proposalID: string, documentID: string) => {\r\n return {\r\n type: ACTION_TYPES.DELETE_FILE,\r\n payload: axios.delete(`proposals/${proposalID}/correspondence/${documentID}`)\r\n };\r\n};\r\n\r\n/**\r\n * Show or Hide the upload document modal.\r\n * @param {boolean} open - true opens modal, false closes modal.\r\n */\r\nexport const toggleUploadModal = (open: boolean) => {\r\n return {\r\n type: ACTION_TYPES.TOGGLE_UPLOAD_MODAL,\r\n meta: { open }\r\n };\r\n};\r\n\r\n/**\r\n * Show or Hide the documentation email confirmation modal\r\n * @param {boolean} open - true opens modal, false closes modal.\r\n */\r\nexport const toggleConfirmationModal = (open: boolean) => {\r\n return {\r\n type: ACTION_TYPES.TOGGLE_CONFIRMATION_MODAL,\r\n meta: { open }\r\n };\r\n};\r\n\r\n/**\r\n * Show or Hide the documentation email confirmation modal\r\n * @param {boolean} open - true opens modal, false closes modal.\r\n */\r\nexport const toggleConfirmationFailModal = (open: boolean) => {\r\n return {\r\n type: ACTION_TYPES.TOGGLE_CONFIRMATION_FAIL_MODAL,\r\n meta: { open }\r\n };\r\n};\r\n\r\n/**\r\n * Set isUploadToastVisible to false\r\n */\r\nexport const toggleUploadToast = (open: boolean) => {\r\n return {\r\n type: ACTION_TYPES.TOGGLE_UPLOAD_TOAST,\r\n meta: { open }\r\n };\r\n};\r\n\r\n/**\r\n * Download the proposal document for the specified proposal .\r\n * @param {string} proposalID\r\n */\r\nexport const downloadProposal = (proposalID: string) => {\r\n return {\r\n type: ACTION_TYPES.DOWNLOAD_FILE,\r\n payload: axios.get(`proposals/submissions/${proposalID}`, {\r\n params: { type: \"Proposal\" },\r\n responseType: \"blob\"\r\n })\r\n };\r\n};\r\n\r\n/**\r\n * Download the analyzer pdf for the specified proposal\r\n * @param proposalID\r\n */\r\nexport const downloadAnalyzer = (proposalID: string) => {\r\n return {\r\n type: ACTION_TYPES.DOWNLOAD_FILE,\r\n payload: axios.get(`proposals/submissions/${proposalID}`, {\r\n params: { type: \"Analyzer\" },\r\n responseType: \"blob\"\r\n })\r\n };\r\n};\r\n","import axios from \"axios\";\r\nimport { get, set } from \"lodash\";\r\n\r\nimport { IDocument } from \"../models/document.model\";\r\nimport { PENDING, FULFILLED, REJECTED } from \"./action-type.util\";\r\nimport { IOption } from \"../models/option.model\";\r\nimport { ISecureUploadFile } from '../../store/models/secureUploadFile.model';\r\n\r\nexport const ACTION_TYPES = {\r\n FETCH_DOCUMENT_TYPES: \"secureUploadDocumentType/FETCH_DOCUMENT_TYPES\"\r\n};\r\n\r\nconst initialState = {\r\n documentTypes: [],\r\n isDocumentTypesLoaded: false\r\n};\r\n\r\nexport type SecureUploadDocumentTypeState = Readonly;\r\n\r\n/**\r\n * SecureUpload Reducer\r\n */\r\nexport default (state: SecureUploadDocumentTypeState = initialState, action): SecureUploadDocumentTypeState => {\r\n switch (action.type) {\r\n // Pending\r\n case PENDING(ACTION_TYPES.FETCH_DOCUMENT_TYPES): {\r\n return {\r\n ...state\r\n };\r\n }\r\n\r\n // Fulfilled\r\n case FULFILLED(ACTION_TYPES.FETCH_DOCUMENT_TYPES): {\r\n const documentOptions = get(action, \"payload.data\");\r\n return {\r\n ...state,\r\n documentTypes: documentOptions\r\n };\r\n }\r\n\r\n // Rejected\r\n case REJECTED(ACTION_TYPES.FETCH_DOCUMENT_TYPES): {\r\n return {\r\n ...state\r\n };\r\n }\r\n\r\n default: {\r\n return {\r\n ...state\r\n };\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Fetch document types associated with the specified proposal .\r\n */\r\nexport const fetchDocumentTypes = () => {\r\n return {\r\n type: ACTION_TYPES.FETCH_DOCUMENT_TYPES,\r\n payload: axios.get(`secureupload/documenttypes`)\r\n };\r\n};","import { combineReducers } from \"redux\";\r\n\r\nimport auth, { AuthState } from \"./authentication\";\r\nimport proposals, { ProposalResourcesState } from \"./proposals\";\r\nimport productBuilder, { ProductBuilderState } from \"./productBuilder\";\r\nimport proposalOptions, { ProposalOptionsState } from \"./proposalOptions\";\r\nimport clientOptions, { ClientOptionsState } from \"./clientOptions\";\r\nimport brokers, { BrokerResourcesState } from \"./brokers\";\r\nimport companies, { CompanyResourcesState } from \"./companies\";\r\nimport brokerBuilder, { BrokerBuilderState } from \"./brokerBuilder\";\r\nimport affiliate, { AffiliateState } from \"./affiiate\";\r\nimport secureUpload, { SecureUploadState } from \"./secureUpload\";\r\nimport secureUploadDocumentType, { SecureUploadDocumentTypeState } from \"./secureUploadDocumentType\";\r\n\r\nexport interface IRootState {\r\n readonly auth: AuthState;\r\n readonly proposals: ProposalResourcesState;\r\n readonly proposalOptions: ProposalOptionsState;\r\n readonly clientOptions: ClientOptionsState;\r\n readonly productBuilder: ProductBuilderState;\r\n readonly brokers: BrokerResourcesState;\r\n readonly companies: CompanyResourcesState;\r\n readonly brokerBuilder: BrokerBuilderState;\r\n readonly affiliate: AffiliateState;\r\n readonly secureUpload: SecureUploadState;\r\n readonly secureUploadDocumentType: SecureUploadDocumentTypeState;\r\n}\r\n\r\nconst rootReducer = combineReducers({\r\n auth,\r\n proposals,\r\n proposalOptions,\r\n clientOptions,\r\n productBuilder,\r\n brokers,\r\n companies,\r\n brokerBuilder,\r\n affiliate,\r\n secureUpload,\r\n secureUploadDocumentType\r\n});\r\n\r\nexport default rootReducer;\r\n","import { createStore, combineReducers, applyMiddleware, compose } from 'redux'\r\nimport promiseMiddleware from 'redux-promise-middleware'\r\nimport thunkMiddleware from 'redux-thunk'\r\nimport rootReducer, { IRootState } from './reducers/index'\r\n\r\nconst defaultMiddleware = [thunkMiddleware, promiseMiddleware]\r\n\r\nconst reduxDevtoolsExtension = window['__REDUX_DEVTOOLS_EXTENSION_COMPOSE__']\r\nconst devtoolsCompose = reduxDevtoolsExtension\r\n ? reduxDevtoolsExtension({ trace: true, traceLimit: 10 })\r\n : null\r\nconst devComposeEnhancers: (a: R) => R = devtoolsCompose || compose\r\n\r\nconst composedMiddleware =\r\n process.env.NODE_ENV === 'development'\r\n ? devComposeEnhancers(applyMiddleware(...defaultMiddleware))\r\n : compose(applyMiddleware(...defaultMiddleware))\r\n\r\nconst store = createStore(rootReducer, {} as IRootState, composedMiddleware)\r\n\r\nexport default store\r\n","import * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Component } from \"react\";\r\nimport { RouteComponentProps, Link, withRouter } from \"react-router-dom\";\r\n\r\nimport {\r\n Dropdown,\r\n UncontrolledDropdown,\r\n DropdownToggle,\r\n DropdownMenu,\r\n DropdownItem\r\n} from \"reactstrap\";\r\n\r\nimport * as S from \"../../constants/StringConstants\";\r\nimport { IRootState } from \"src/store/reducers\";\r\nimport \"./AppSideNav.scss\";\r\n\r\ninterface IAppSideNavProps extends StateProps, DispatchProps, RouteComponentProps {\r\n}\r\n\r\nexport interface AppSideNavState {\r\n dropdownOpen?: boolean;\r\n}\r\n\r\nexport interface AppSideNavProps {\r\n dropdownOpen?: boolean;\r\n}\r\n\r\nclass AppSideNav extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.toggle = this.toggle.bind(this);\r\n this.state = { dropdownOpen: false };\r\n }\r\n\r\n toggle() {\r\n this.setState(prevState => ({\r\n dropdownOpen: !prevState.dropdownOpen\r\n }));\r\n }\r\n\r\n createProposal = {\r\n name: S.NEW_PROPOSAL,\r\n path: \"/proposals/new\"\r\n };\r\n\r\n createCompany = {\r\n name: S.NEW_COMPANY,\r\n path: \"/companies/new\"\r\n };\r\n\r\n createAffiliate = {\r\n name: S.NEW_AFFILIATE,\r\n path: \"/affiliates/new\"\r\n };\r\n\r\n createBroker = {\r\n name: S.NEW_BROKER,\r\n path: \"/brokers/new\"\r\n };\r\n\r\n createMap = {\r\n [\"proposals\"]: this.createProposal,\r\n [\"companies\"]: this.createCompany,\r\n [\"affiliates\"]: this.createAffiliate,\r\n [\"brokers\"]: this.createBroker\r\n };\r\n\r\n handleOnClick = () => {\r\n const path = this.getCreateButton().path;\r\n\r\n if (path === this.createProposal.path) {\r\n window.open(path);\r\n } else {\r\n this.props.history.push(path);\r\n }\r\n };\r\n\r\n isActiveClassName = (path: string): string => {\r\n return this.isActive(path) ? \"isActive\" : \"\";\r\n };\r\n\r\n isActive = (path: string) => {\r\n return this.props.location.pathname === path;\r\n };\r\n\r\n getCreateButton() {\r\n return (\r\n this.createMap[this.props.location.pathname.split(\"/\").filter(x => x)[0]] ||\r\n this.createProposal\r\n );\r\n }\r\n\r\n getCreateName = () => {\r\n return this.getCreateButton().name;\r\n };\r\n\r\n logout = () => {\r\n //this.props.logout();\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = ({ auth }: IRootState) => ({\r\n});\r\n\r\nconst mapDispatchToProps = { };\r\n\r\ntype StateProps = ReturnType;\r\ntype DispatchProps = typeof mapDispatchToProps;\r\n\r\nexport default withRouter(\r\n connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n )(AppSideNav)\r\n);\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { RouteComponentProps, Switch, Route, Redirect } from \"react-router-dom\";\r\nimport { Container, Row, Col } from \"reactstrap\";\r\nimport cx from \"classnames\";\r\n\r\nimport { IRootState } from \"../store/reducers\";\r\nimport AppSideNav from \"./AppSideNav/AppSideNav\";\r\nimport \"./AppContainer.scss\";\r\n\r\nexport interface IAppContainerProps extends StateProps, DispatchProps, RouteComponentProps {}\r\n\r\nexport class AppContainer extends React.Component {\r\n render() {\r\n return (\r\n
\r\n \r\n\r\n
{this.props.children}
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: IRootState) => ({});\r\n\r\nconst mapDispatchToProps = {};\r\n\r\ntype StateProps = ReturnType;\r\ntype DispatchProps = typeof mapDispatchToProps;\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(AppContainer);\r\n","import \"./FooterShort.scss\";\r\nimport React from \"react\";\r\nimport { IRootState } from \"../../store/reducers\";\r\nimport { connect } from \"react-redux\";\r\nimport { Container, Row, Col } from 'reactstrap'\r\n\r\nexport interface IFooterShortState {\r\n }\r\n \r\n export interface IFooterShortProps extends StateProps, DispatchProps {\r\n }\r\n \r\n class FooterShort extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n \r\n this.state = {\r\n isLoggedIn: false\r\n };\r\n }\r\n \r\n render() {\r\n \r\n return (\r\n \r\n );\r\n }\r\n }\r\n \r\n const mapStateToProps = (state: IRootState) => ({\r\n \r\n });\r\n \r\n const mapDispatchToProps = {\r\n };\r\n \r\n type StateProps = ReturnType;\r\n type DispatchProps = typeof mapDispatchToProps;\r\n \r\n export default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n )(FooterShort);\r\n\r\n","export const BASE_API_URL = process.env.REACT_APP_BASE_API_URL as string\r\n","import \"./Header.scss\";\r\nimport React from \"react\";\r\nimport { get, set } from \"lodash\";\r\nimport { BrowserRouter as Router, Link, RouteComponentProps } from \"react-router-dom\";\r\nimport { IRootState } from \"../../store/reducers\";\r\nimport { connect } from \"react-redux\";\r\nimport { Container, Row, Col } from 'reactstrap'\r\nimport { BASE_API_URL } from \"../../constants/EnvConstants\";\r\nimport { fetchAffiliateLogo } from \"../../store/reducers/affiiate\";\r\n\r\nexport interface IHeaderHomeState {\r\n affiliateId?: number;\r\n}\r\n\r\nexport interface IHeaderHomeProps extends StateProps, DispatchProps, RouteComponentProps {\r\n}\r\n \r\nclass HeaderHome extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n affiliateId: undefined\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.props.match) {\r\n const affiliateParam = get(this.props.match.params, \"affiliateId\");\r\n\r\n var affiliateId = undefined;\r\n if (affiliateParam && this.props.match.url.startsWith(\"/quote/\")) {\r\n affiliateId = +affiliateParam.match(/(\\d+)/)[0];\r\n this.setState(state => \r\n {\r\n affiliateId\r\n });\r\n this.props.fetchAffiliateLogo(affiliateId);\r\n }\r\n }\r\n }\r\n \r\n render() {\r\n var logoAffiliateUrl = undefined;\r\n\r\n const { affiliateLogoId, affiliateLogoLoading } = this.props;\r\n if (affiliateLogoId){\r\n logoAffiliateUrl = BASE_API_URL + \"affiliates/\" + affiliateLogoId + \"/affiliateLogo\";\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n \"\"\r\n
\r\n \r\n {!logoAffiliateUrl && !affiliateLogoLoading\r\n ? \r\n \r\n {/*
\r\n
\r\n diservices.com\r\n
\r\n
*/}\r\n \r\n \r\n
\r\n
\r\n 800-898-9641\r\n
\r\n
\r\n \r\n
\r\n : \r\n \r\n \r\n  \r\n \r\n \r\n \r\n \r\n \r\n }\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n \r\n const mapStateToProps = (state: IRootState) => ({\r\n affiliateLogoId: state.affiliate.affiliateLogoId,\r\n affiliateLogoLoading: state.affiliate.loading\r\n });\r\n \r\n const mapDispatchToProps = {\r\n fetchAffiliateLogo,\r\n };\r\n \r\n type StateProps = ReturnType;\r\n type DispatchProps = typeof mapDispatchToProps;\r\n \r\n export default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n )(HeaderHome);\r\n\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { BrowserRouter as Router, Link, RouteComponentProps } from \"react-router-dom\";\r\nimport { Container, Row, Col, Spinner } from \"reactstrap\";\r\nimport { get } from \"lodash\";\r\n\r\nimport { IRootState } from \"../../store/reducers\";\r\nimport * as S from \"../../constants/StringConstants\";\r\nimport \"./Quote.scss\";\r\nimport Header from '../Layout/Header';\r\nimport FooterShort from '../Layout/FooterShort';\r\nimport HeaderHome from '../Layout/HeaderHome';\r\n\r\nexport interface IQuoteEngineProps extends StateProps, DispatchProps, RouteComponentProps {\r\n\r\n}\r\n\r\nexport class QuoteEngine extends React.Component {\r\n render() {\r\n const affiliateParam = get(this.props.match.params, \"affiliateId\");\r\n const campaignParam = get(this.props.match.params, \"campaignId\");\r\n const companyParam = get(this.props.match.params, \"companyId\");\r\n\r\n var affiliateId = undefined;\r\n if(affiliateParam)\r\n affiliateId = +affiliateParam.match(/(\\d+)/)[0];\r\n \r\n var companyId = undefined;\r\n if(companyParam)\r\n companyId = +companyParam.match(/(\\d+)/)[0];\r\n\r\n var campaignId = undefined;\r\n if(campaignParam)\r\n campaignId = +campaignParam.match(/(\\d+)/)[0];\r\n \r\n let brokerUrl = \"/brokers\";\r\n let loginUrl = \"/login\";\r\n if (companyId) {\r\n brokerUrl = brokerUrl + \"/company/\" + companyId + \"/new\";\r\n }\r\n else if (affiliateId){\r\n brokerUrl = brokerUrl + \"/affiliate/\" + affiliateId + \"/new\";\r\n } else {\r\n brokerUrl += \"/new\";\r\n }\r\n\r\n if (campaignId) {\r\n let campaignParam = \"/campaign/\" + campaignId;\r\n brokerUrl += campaignParam;\r\n loginUrl += campaignParam;\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n

{S.QUOTE_ENGINE}

\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n {S.QUOTE_ENGINE_REGISTER_LABEL}\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n {S.QUOTE_ENGINE_LOGIN_LABEL}\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = ({ auth }: IRootState) => ({\r\n isAuthenticated: auth.isAuthenticated\r\n});\r\nconst mapDispatchToProps = { };\r\n\r\ntype StateProps = ReturnType;\r\ntype DispatchProps = typeof mapDispatchToProps;\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(QuoteEngine);\r\n","/**\r\n * Toast.tsx\r\n * Disability Insurance Services\r\n *\r\n * Created by Jeremy Moyers on Thur May 2 14:46:37 2019\r\n */\r\nimport React from \"react\";\r\nimport MuiSnackbar from \"@material-ui/core/Snackbar\";\r\nimport MuiSnackbarContent from \"@material-ui/core/Snackbar\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport \"./Toast.scss\";\r\nimport * as S from \"../../constants/StringConstants\";\r\n\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\ninterface IToastProps {\r\n message: string;\r\n open: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nconst Snackbar = withStyles(theme => ({\r\n root: {\r\n width: \"57rem\"\r\n }\r\n}))(MuiSnackbar);\r\n\r\nclass Toast extends React.Component {\r\n render() {\r\n const { message, open, onClose } = this.props;\r\n\r\n const closeButton = (\r\n {\r\n onClose();\r\n }}\r\n className=\"toast__close-button\">\r\n {S.T_BUTTON}\r\n \r\n );\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Toast;\r\n","import React from \"react\";\r\nimport { get } from \"lodash\";\r\nimport { Container, Row, Col, Label } from \"reactstrap\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport * as S from \"../../constants/StringConstants\";\r\nimport { IRootState } from \"../../store/reducers\";\r\nimport \"./Welcome.scss\"\r\nimport Toast from \"../../components/Toast/Toast\";\r\nimport {\r\n hideLoggedInToast\r\n} from \"../../store/reducers/authentication\";\r\n\r\nexport interface IWelcomeState {\r\n isLoggedIn: boolean;\r\n}\r\n\r\nexport interface IWelcomeProps extends StateProps, DispatchProps {\r\n}\r\n\r\nclass Welcome extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoggedIn: false\r\n };\r\n }\r\n\r\n render() {\r\n const { currentBroker, isLoggedIn } = this.props;\r\n\r\n var welcomeMessage = \"\";\r\n if(currentBroker){\r\n welcomeMessage = S.WELCOME_BACK_LABEL + currentBroker.firstName + ' ' + currentBroker.lastName;\r\n }\r\n return (\r\n
\r\n {\r\n this.props.hideLoggedInToast();\r\n }}\r\n open={isLoggedIn}\r\n />\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: IRootState) => ({\r\n currentBroker: state.auth.currentBroker,\r\n isLoggedIn: state.auth.isLoggedIn\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n hideLoggedInToast\r\n};\r\n\r\ntype StateProps = ReturnType;\r\ntype DispatchProps = typeof mapDispatchToProps;\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Welcome);\r\n","import \"./Footer.scss\";\r\nimport React from \"react\";\r\nimport { IRootState } from \"../../store/reducers\";\r\nimport { connect } from \"react-redux\";\r\nimport { Container, Row, Col } from 'reactstrap'\r\n\r\nexport interface IFooterState {\r\n }\r\n \r\n export interface IFooterProps extends StateProps, DispatchProps {\r\n }\r\n \r\n class Footer extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n \r\n this.state = {\r\n isLoggedIn: false\r\n };\r\n }\r\n \r\n render() {\r\n \r\n return (\r\n \r\n );\r\n }\r\n }\r\n \r\n const mapStateToProps = (state: IRootState) => ({\r\n \r\n });\r\n \r\n const mapDispatchToProps = {\r\n };\r\n \r\n type StateProps = ReturnType;\r\n type DispatchProps = typeof mapDispatchToProps;\r\n \r\n export default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n )(Footer);\r\n\r\n","import \"./Header.scss\";\r\nimport React from \"react\";\r\nimport { get, set } from \"lodash\";\r\nimport { BrowserRouter as Router, Link, RouteComponentProps } from \"react-router-dom\";\r\nimport { IRootState } from \"../../store/reducers\";\r\nimport { connect } from \"react-redux\";\r\nimport { Container, Row, Col } from 'reactstrap'\r\nimport { BASE_API_URL } from \"../../constants/EnvConstants\";\r\nimport { fetchAffiliateLogo } from \"../../store/reducers/affiiate\";\r\n\r\nexport interface IHeaderState {\r\n affiliateId?: number;\r\n}\r\n\r\nexport interface IHeaderProps extends StateProps, DispatchProps, RouteComponentProps {\r\n}\r\n \r\nclass Header extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n }\r\n\r\n render() {\r\n var logoAffiliateUrl = undefined;\r\n\r\n const { affiliateLogoId, affiliateLogoLoading } = this.props;\r\n if (affiliateLogoId){\r\n logoAffiliateUrl = BASE_API_URL + \"affiliates/\" + affiliateLogoId + \"/affiliateLogo\";\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n \"\"\r\n
\r\n \r\n \r\n  \r\n \r\n \r\n
\r\n
\r\n 800-898-9641\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n \r\n const mapStateToProps = (state: IRootState) => ({\r\n affiliateLogoId: state.affiliate.affiliateLogoId,\r\n affiliateLogoLoading: state.affiliate.loading\r\n });\r\n \r\n const mapDispatchToProps = {\r\n fetchAffiliateLogo,\r\n };\r\n \r\n type StateProps = ReturnType;\r\n type DispatchProps = typeof mapDispatchToProps;\r\n \r\n export default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n )(Header);\r\n\r\n","import React from \"react\";\r\nimport { Field, FieldProps } from \"react-final-form\";\r\nimport { Input, InputGroup, InputGroupAddon, InputGroupText } from \"reactstrap\";\r\nimport \"./TextField.scss\";\r\n\r\n/**\r\n * label - label decoration for describing the text input content. ex: \"username\" or \"email\";\r\n * light - assign true to render light themed text field component.\r\n * appendText - static text content displayed after the input field. ex: \"_______ lbs\" or \"________ meters\";\r\n * prependText - static text content displayed before the input field. ex: \"$ _______\"\r\n */\r\nexport interface ITextFieldProps extends FieldProps {\r\n label?: string;\r\n light?: boolean;\r\n type?: string;\r\n appendText?: string;\r\n prependText?: string;\r\n placeholder?: string;\r\n}\r\n\r\nexport default class TextField extends React.Component<\r\n ITextFieldProps\r\n > {\r\n render() {\r\n const { label, light, appendText, prependText, disabled, placeholder, ...fieldProps } = this.props;\r\n\r\n return (\r\n \r\n {({ input, meta }) => \r\n {\r\n return (\r\n \r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n {prependText && (\r\n \r\n {prependText}\r\n \r\n )}\r\n \r\n {meta.touched && meta.error && {meta.error}}\r\n {appendText && (\r\n \r\n {appendText}\r\n \r\n )}\r\n \r\n
  • \r\n
\r\n \r\n )\r\n }}\r\n
\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Field, FieldProps, FieldRenderProps } from \"react-final-form\";\r\nimport { IListOption } from \"../../../store/models/listOption.models\";\r\nimport { defaultOptionValue } from \"../../../util/utils.defaultValues\";\r\nimport \"./SingleSelectField.scss\";\r\nimport { Tooltip } from '@material-ui/core';\r\nimport PriorityHighIcon from '@material-ui/icons/PriorityHigh';\r\nimport HelpIcon from '@material-ui/icons/Help';\r\n\r\n/**\r\n * @param {string} label - user facing string used for the title of the Select.\r\n * @param {Array} - options presented in the Select to the user.\r\n */\r\nexport interface ISelectProps extends FieldProps {\r\n label?: string;\r\n options: Array;\r\n}\r\n\r\nexport interface ISelectRenderProps\r\n extends ISelectProps,\r\n FieldRenderProps {}\r\n\r\n/**\r\n * The standard select component.\r\n *\r\n * Displays a list of IListOption objects.\r\n */\r\nexport class SingleSelect extends React.Component {\r\n render() {\r\n const { label, options, input, meta, disabled, isRequired, hint, ...rest } = this.props;\r\n\r\n return (\r\n \r\n
    \r\n
  • \r\n \r\n {isRequired ?\r\n \r\n : ''\r\n }\r\n {hint ?\r\n {hint}} placement=\"right-start\">\r\n \r\n \r\n : ''\r\n }\r\n
  • \r\n
  • \r\n \r\n
  • \r\n {meta.touched && meta.error && {meta.error}}\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\n// HTMLSelectElement\r\n\r\nexport interface ISelectFieldProps extends ISelectProps, FieldProps \r\n{\r\n isRequired?: Boolean;\r\n hint?: String;\r\n}\r\n\r\nexport default function SingleSelectField(props: ISelectFieldProps) {\r\n return (\r\n {\r\n const id = parseInt(value, 10);\r\n /*\r\n This was once a way to avoid having to filter the default value out of every\r\n model to DTO conversion. However, in order to differentiate between deleting\r\n an analyzer column and selecting a default value from the dropdown we need to\r\n allow the default Option value to persist. A possible solution is to add a\r\n 'doesFilterDefaultValues' prop but for now were just gonna filter default\r\n values in every dto conversion.\r\n if (id === defaultOptionValue) {\r\n return undefined;\r\n }\r\n */\r\n return id;\r\n }}\r\n {...props}\r\n />\r\n );\r\n}\r\n","import React from \"react\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport MuiDialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport Dropzone, { DropEvent } from \"react-dropzone\";\r\nimport { Form as FinalForm } from \"react-final-form\";\r\nimport { FORM_ERROR } from \"final-form\";\r\nimport { Button, IconButton, Icon } from '@material-ui/core'\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport { get, set } from \"lodash\";\r\nimport { Container, Row, Col, Label } from \"reactstrap\";\r\nimport TextField from '../../components/Form/TextField/TextField';\r\nimport { OnChange } from \"react-final-form-listeners\";\r\nimport { connect } from \"react-redux\";\r\nimport { IRootState } from \"../../store/reducers\";\r\n\r\nimport * as S from \"../../constants/StringConstants\";\r\nimport SingleSelectField, {\r\n SingleSelect\r\n} from \"../../components/Form/SingleSelectField/SingleSelectField\";\r\nimport { createListOption, IListOption } from \"../../store/models/listOption.models\";\r\nimport { defaultOptionValue, addDefaultOption } from \"../../util/utils.defaultValues\";\r\nimport { IOption } from \"../../store/models/option.model\";\r\n\r\nimport \"./UploadDocumentModal.scss\";\r\nimport { ISecureUploadFile } from '../../store/models/secureUploadFile.model';\r\n\r\nexport interface UploadDocumentModalProps \r\n extends StateProps,\r\n DispatchProps {\r\n open: boolean;\r\n handleFiles: (acceptedFiles: T[]) => void;\r\n onCancel: () => void;\r\n}\r\n\r\ninterface UploadDocumentModalState {\r\n files: ISecureUploadFile[];\r\n}\r\n\r\nconst DialogActions = withStyles(theme => ({\r\n root: {\r\n marginBottom: \"1,5rem\",\r\n padding: theme.spacing(1),\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\"\r\n }\r\n}))(MuiDialogActions);\r\n\r\nexport class UploadDocumentModal extends React.Component<\r\n UploadDocumentModalProps,\r\n UploadDocumentModalState\r\n> {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n files: []\r\n };\r\n }\r\n\r\n handleDrop = (accepted, rejected) => {\r\n if (accepted.length > 0) {\r\n accepted.forEach(a => {\r\n const newFileItem: ISecureUploadFile = {\r\n file: a,\r\n note: '',\r\n documentType: 1 };\r\n\r\n this.setState(state => ({\r\n files: [...state.files, newFileItem]\r\n }));\r\n });\r\n };\r\n };\r\n\r\n handleClickCancel = () => {\r\n const { onCancel } = this.props;\r\n onCancel();\r\n this.clearFiles();\r\n };\r\n\r\n handleClickUpload = () => {\r\n const { handleFiles } = this.props;\r\n const { files } = this.state;\r\n handleFiles(files);\r\n this.clearFiles();\r\n };\r\n\r\n clearFiles = () => {\r\n this.setState(state => ({\r\n files: []\r\n }));\r\n };\r\n\r\n handleDeleteFile = (e, fileName) => {\r\n e.preventDefault();\r\n const { files } = this.state;\r\n const updatedFiles = files.filter((value, index) => {\r\n return value.file.name !== fileName;\r\n });\r\n this.setState(state => ({\r\n files: updatedFiles\r\n }));\r\n };\r\n\r\n render() {\r\n const { open, secureUploadDocumentType, onCancel } = this.props;\r\n const { files } = this.state;\r\n\r\n const documentTypes = secureUploadDocumentType.documentTypes;\r\n\r\n return (\r\n
\r\n \r\n \r\n {formProps => {\r\n return (\r\n
\r\n {S.UDM_TITLE}\r\n \r\n \r\n {({ getRootProps, getInputProps, isDragActive }) => (\r\n
\r\n \r\n

{S.UDM_DROPZONE}

\r\n
\r\n )}\r\n
\r\n \r\n \r\n  \r\n \r\n {files.map((fileItem, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {value => {\r\n this.state.files[index].note = value;\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n {value => {\r\n this.state.files[index].documentType = value;\r\n }}\r\n \r\n \r\n \r\n this.handleDeleteFile(e, fileItem.file.name)}\r\n size=\"large\">\r\n {S.UDM_DELETE_BUTTON}\r\n delete\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n {formProps.error && formProps.dirty && (\r\n
{formProps.error}
\r\n )}\r\n
\r\n \r\n \r\n \r\n {S.UDM_UPLOAD_BUTTON}\r\n \r\n \r\n
\r\n );\r\n }}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\n\r\nconst mapStateToProps = (state: IRootState) => {\r\n return ({\r\n secureUploadDocumentType: state.secureUploadDocumentType\r\n });\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n \r\n};\r\n\r\ntype StateProps = ReturnType;\r\ntype DispatchProps = typeof mapDispatchToProps;\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(UploadDocumentModal);\r\n","import React from \"react\";\r\nimport { BASE_API_URL } from \"../../constants/EnvConstants\";\r\nimport ReactDOM, { render } from \"react-dom\";\r\nimport RouteContext, { Redirect } from \"react-router\";\r\nimport { get, set } from \"lodash\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport { Form as FinalForm, FormRenderProps } from \"react-final-form\";\r\nimport { OnChange } from \"react-final-form-listeners\";\r\nimport { IRootState } from \"../../store/reducers\";\r\nimport ProposalStepper from \"../../components/ProposalStepper/ProposalStepper\";\r\nimport Toast from \"../../components/Toast/Toast\";\r\nimport { defaultOptionValue, undefinedIfDefault } from \"../../util/utils.defaultValues\";\r\nimport { fetchBrokerProfile } from \"../../store/reducers/authentication\";\r\nimport { fetchDocumentTypes } from '../../store/reducers/secureUploadDocumentType';\r\n\r\nimport {\r\n fetchDocuments,\r\n uploadDocument,\r\n downloadDocument,\r\n deleteDocument,\r\n toggleUploadModal,\r\n toggleUploadToast,\r\n toggleConfirmationModal,\r\n toggleConfirmationFailModal\r\n} from \"../../store/reducers/secureUpload\";\r\n\r\nimport * as S from \"../../constants/StringConstants\";\r\nimport { RouteComponentProps } from \"react-router\";\r\nimport Welcome from './Welcome';\r\nimport { Container, Row, Col } from 'reactstrap'\r\nimport \"./ClientBuilder.scss\";\r\nimport PreFooter from '../Layout/PreFooter';\r\nimport Footer from '../Layout/Footer';\r\nimport Header from '../Layout/Header';\r\nimport UploadDocumentModal from '../../components/UploadDocumentModal/UploadDocumentModal';\r\nimport { ISecureUploadFile } from '../../store/models/secureUploadFile.model';\r\n\r\nexport const saveSymbol = Symbol(\"SAVE FORM\");\r\nexport const stepSymbol = Symbol(\"STEP FORM\");\r\nexport const stepIndexSymbol = Symbol(\"STEP INDEX\");\r\n\r\n/**\r\n * Client Builder Component Properties\r\n */\r\nexport interface IClientBuilderProps\r\n extends StateProps,\r\n DispatchProps,\r\n RouteComponentProps<{ id: string, client: string }> {\r\n brokerID: string;\r\n clientID: string;\r\n onBrokerChange: (notes: string) => void;\r\n }\r\n\r\n/**\r\n * Internal state of the Client Builder\r\n */\r\ninterface IClientBuilderState {\r\n // current page number\r\n page: number;\r\n isSubmitting: boolean;\r\n brokerID?: number;\r\n}\r\n\r\nexport class ClientBuilder extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n \r\n const page = get(props, \"history.location.state.pageIndex\", 0);\r\n\r\n if (page !== 0) {\r\n this.props.history.replace(undefined, {});\r\n }\r\n\r\n this.state = {\r\n page: page,\r\n isSubmitting: false,\r\n brokerID: undefined\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n const { brokerID } = this.props;\r\n\r\n const id = parseInt(brokerID, 10);\r\n if (id) {\r\n this.setState(state => ({\r\n ...state,\r\n brokerID: id\r\n }));\r\n\r\n await this.props.fetchDocumentTypes();\r\n await this.props.fetchBrokerProfile(`${id}`);\r\n }\r\n }\r\n\r\n /**\r\n * Submit the current values and navigate to the next page.\r\n */\r\n submit = async values => {\r\n // const { } = this.props;\r\n // const campaignId = get(this.props.match.params, \"campaignId\");\r\n \r\n // var caseDesign = values;\r\n // var newProposal = {\r\n // ...currentProposal,\r\n // caseDesign,\r\n // campaignId\r\n // }\r\n \r\n //await this.props.submitProposal(newProposal);\r\n };\r\n\r\n uploadFiles = async (brokerID: number, acceptedFiles: ISecureUploadFile[]) => {\r\n try {\r\n for (const acceptedFile of acceptedFiles) {\r\n try {\r\n await this.props.uploadDocument(brokerID, acceptedFile);\r\n } catch (e) {\r\n // TODO: notify/handle?\r\n }\r\n }\r\n\r\n // if (this.fileTableRef) {\r\n // this.fileTableRef.update({});\r\n // }\r\n } catch (e) {\r\n // TODO: notify/handle?\r\n } finally {\r\n this.props.toggleUploadModal(false);\r\n }\r\n };\r\n\r\n render() {\r\n const { isUploadModalVisible, isUploadToastVisible } = this.props;\r\n\r\n const { page } = this.state;\r\n const { brokerID, clientID } = this.props;\r\n \r\n return (\r\n
\r\n {clientID ? \"\" :
}\r\n
\r\n {clientID ? \"\" : }\r\n \r\n {\r\n this.props.toggleUploadToast(false);\r\n }}\r\n open={isUploadToastVisible}\r\n />\r\n \r\n \r\n this.uploadFiles(this.state.brokerID, files)}\r\n onCancel={() => {\r\n this.props.toggleUploadModal(false);\r\n }}\r\n />\r\n\r\n \r\n \r\n

{S.PDC_BROKER_QUOTE_TITLE}

\r\n \r\n
\r\n \r\n \r\n {\r\n e.preventDefault();\r\n this.props.toggleUploadModal(true);\r\n }}>\r\n {S.DOC_ADD_DOCUMENT_BUTTON}\r\n \r\n \r\n \r\n \r\n \r\n  \r\n \r\n \r\n
\r\n
\r\n {clientID ? \"\" :
}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: IRootState) => {\r\n return ({\r\n secureUpload: state.secureUpload,\r\n isUploadModalVisible: state.secureUpload.isUploadModalVisible,\r\n isUploadToastVisible: state.secureUpload.isUploadToastVisible\r\n });\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n fetchBrokerProfile,\r\n toggleUploadModal,\r\n toggleUploadToast,\r\n uploadDocument,\r\n fetchDocumentTypes\r\n};\r\n\r\ntype StateProps = ReturnType;\r\ntype DispatchProps = typeof mapDispatchToProps;\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ClientBuilder);\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\nimport { get } from \"lodash\";\r\n\r\nimport { IRootState } from \"../../store/reducers\";\r\nimport \"./QuoteWizard.scss\";\r\nimport ClientBuilder from '../Broker/ClientBuilder';\r\n\r\nexport interface IQuoteWizardProps extends StateProps, DispatchProps, RouteComponentProps {\r\n}\r\n\r\nexport class QuoteWizard extends React.Component {\r\n render() {\r\n const brokerID = get(this.props.match.params, \"id\", \"new\");\r\n var clientID = get(this.props.match.params, \"client\", undefined);\r\n if(!clientID && this.props.match.url.startsWith(\"/client\")){\r\n clientID = \"-1\";\r\n }\r\n \r\n return ;\r\n }\r\n}\r\n\r\nconst mapStateToProps = ({ auth }: IRootState) => ({\r\n isAuthenticated: auth.isAuthenticated\r\n});\r\nconst mapDispatchToProps = { };\r\n\r\ntype StateProps = ReturnType;\r\ntype DispatchProps = typeof mapDispatchToProps;\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(QuoteWizard);\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { BrowserRouter as Router, Link, RouteComponentProps } from \"react-router-dom\";\r\nimport { Container, Row, Col } from \"reactstrap\";\r\nimport { get } from \"lodash\";\r\n\r\nimport { IRootState } from \"../../store/reducers\";\r\nimport TextField from \"../../components/Form/TextField/TextField\";\r\nimport * as S from \"../../constants/StringConstants\";\r\nimport \"./QuoteSent.scss\";\r\n\r\nexport interface IQuoteEngineProps extends StateProps, DispatchProps, RouteComponentProps {\r\n\r\n}\r\n\r\nexport class QuoteSent extends React.Component {\r\n\r\n render() {\r\n const brokerID = get(this.props.match.params, \"id\", \"new\");\r\n const campaignId = get(this.props.match.params, \"campaignId\");\r\n let brokerUrl = \"/broker/\";\r\n if(this.props.match.params[1] === \"client\" || campaignId === \"client\"){\r\n brokerUrl = \"/client/\";\r\n }\r\n \r\n if(brokerID){\r\n brokerUrl = brokerUrl + brokerID;\r\n }\r\n if (campaignId && campaignId !== \"client\"){\r\n brokerUrl += \"/campaign/\" + campaignId;\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n

{S.QUOTE_SENT_SUCCESS_MESSAGE}

\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = ({ auth }: IRootState) => ({\r\n isAuthenticated: auth.isAuthenticated\r\n});\r\nconst mapDispatchToProps = { };\r\n\r\ntype StateProps = ReturnType;\r\ntype DispatchProps = typeof mapDispatchToProps;\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(QuoteSent);\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { RouteComponentProps, Link, Redirect } from \"react-router-dom\";\r\nimport { Form as FinalForm } from \"react-final-form\";\r\nimport { FORM_ERROR } from \"final-form\";\r\nimport { Container, Row, Col, Spinner } from \"reactstrap\";\r\nimport { get } from \"lodash\";\r\n\r\nimport { IRootState } from \"../../store/reducers\";\r\nimport TextField from \"../../components/Form/TextField/TextField\";\r\nimport { validateEmail } from \"../../store/reducers/authentication\";\r\nimport * as S from \"../../constants/StringConstants\";\r\nimport \"./Login.scss\";\r\nimport Welcome from '../Broker/Welcome';\r\nimport Header from '../Layout/Header';\r\nimport FooterShort from '../Layout/FooterShort';\r\nimport HeaderHome from '../Layout/HeaderHome';\r\n\r\nexport interface ILoginProps extends StateProps, DispatchProps, RouteComponentProps {}\r\n\r\nexport class Login extends React.Component {\r\n onSubmit = async values => {\r\n const { email } = values;\r\n var authResult = await this.props.validateEmail(email);\r\n \r\n var failed = get(authResult, \"failed\");\r\n if (failed) {\r\n return {\r\n [FORM_ERROR]: get(authResult, \"error\")\r\n };\r\n } else {\r\n var brokerId = get(authResult, \"brokerId\");\r\n const campaignId = get(this.props.match.params, \"campaignId\");\r\n\r\n let brokerUrl = \"/broker/\" + brokerId;\r\n if (campaignId){\r\n brokerUrl += \"/campaign/\" + campaignId;\r\n }\r\n this.props.history.push(brokerUrl);\r\n }\r\n \r\n };\r\n\r\n render() {\r\n const { location, isAuthenticated } = this.props;\r\n const { from } = location.state || { from: { pathname: \"/\", search: location.search } };\r\n\r\n if (isAuthenticated) {\r\n return ;\r\n }\r\n\r\n return (\r\n
\r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n {/*

{S.LOGIN_SIGN_IN}

*/}\r\n\r\n {\r\n return (\r\n
\r\n {submitFailed &&
{submitError}
}\r\n\r\n (value ? undefined : S.FORM_FIELD_REQUIRED)}\r\n />\r\n\r\n \r\n \r\n );\r\n }}\r\n />\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = ({ auth }: IRootState) => ({\r\n isAuthenticated: auth.isAuthenticated\r\n});\r\nconst mapDispatchToProps = { validateEmail };\r\n\r\ntype StateProps = ReturnType;\r\ntype DispatchProps = typeof mapDispatchToProps;\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(Login);\r\n","import { isEmptyOrDefault } from \"./utils.defaultValues\";\r\nimport { NumberFormatValues } from \"react-number-format\";\r\n\r\nexport const PHONE_NUMBER_REGEX = new RegExp(/(^(\\+\\d{1,2}\\s)?\\(?\\d{3}\\)?[\\s.-]\\d{3}[\\s.-]\\d{4}(?:[\\s.-]\\d{1,6})?$)/);\r\nexport const ZIP_CODE_REGEX = new RegExp(/^[0-9]*$/);\r\nexport const EXTERNAL_ID_REGEX = new RegExp(/^\\d{1,9}$/);\r\n\r\n/**\r\n * Check if the input string is undefined, null, or white space from beginning to end of string.\r\n * @param value\r\n */\r\nexport const isEmpty = (value: string): boolean => {\r\n return value === null || value === undefined || value.match(/^\\s*$/) !== null;\r\n};\r\n\r\n/**\r\n * Ensure the specified number value is a valid number between 0-100.\r\n * Allow for undefined.\r\n * @param {NumberFormatValues} values provided by a NumberFormatField\r\n */\r\nexport const isValidPercentage = (values: NumberFormatValues): boolean => {\r\n if (!values.floatValue) {\r\n return true;\r\n }\r\n return values.floatValue <= 100;\r\n};\r\n","import React from \"react\";\r\nimport { Field, FieldProps, FieldRenderProps } from \"react-final-form\";\r\nimport { Typeahead } from \"react-bootstrap-typeahead\";\r\nimport { FormGroup, Label } from \"reactstrap\";\r\nimport { castArray } from 'lodash'\r\n\r\nimport * as S from \"../../../constants/StringConstants\";\r\nimport { IListOption } from \"../../../store/models/listOption.models\";\r\nimport \"./TypeaheadField.scss\";\r\n\r\nexport interface ITypeaheadOption {\r\n value: string | number | boolean | {};\r\n label?: string;\r\n}\r\n\r\nexport interface ITypeaheadProps {\r\n label: string;\r\n option?: ITypeaheadOption[];\r\n emptyLabel?: string;\r\n selected?: ITypeaheadOption | ITypeaheadOption[];\r\n}\r\n\r\nexport interface ITypeaheadFieldRenderProps\r\n extends FieldRenderProps,\r\n ITypeaheadProps {}\r\n\r\nexport interface ITypeaheadState {\r\n selected: ITypeaheadOption\r\n}\r\n\r\nexport class TypeaheadFieldComponent extends React.Component<\r\n ITypeaheadFieldRenderProps\r\n> {\r\n state = {\r\n selected: undefined\r\n }\r\n\r\n constructor (props: ITypeaheadFieldRenderProps) {\r\n super(props)\r\n const asArray = castArray(props.selected)\r\n if (asArray && asArray.length && asArray[0]) {\r\n this.state = {\r\n selected: asArray\r\n }\r\n }\r\n }\r\n\r\n onChange (selected: ITypeaheadOption) {\r\n this.setState({\r\n selected\r\n })\r\n }\r\n\r\n render() {\r\n const { input, meta, label, emptyLabel, selected, ...typeaheadProps } = this.props;\r\n\r\n const newProps = {\r\n id: input.name,\r\n isValid: meta.visited && meta.invalid,\r\n emptyLabel: emptyLabel || S.DD_NO_RESULTS,\r\n // these 2 lines so Typescript will shut up\r\n selected: [],\r\n defaultSelected: [],\r\n onChange: this.onChange,\r\n ...input,\r\n ...typeaheadProps\r\n }\r\n\r\n if (selected) {\r\n if (Array.isArray(selected)) {\r\n newProps.selected = selected\r\n } else {\r\n newProps.selected = [selected]\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {meta.touched && meta.error && {meta.error}}\r\n \r\n );\r\n }\r\n}\r\n\r\n// TODO: make types for ITypeaheadOption and IListOption & use constructors for that\r\nexport function keyValueToDropdownOption(kvp: IListOption): ITypeaheadOption {\r\n return {\r\n label: kvp.key,\r\n value: kvp.value\r\n };\r\n}\r\n\r\nexport interface ITypeaheadFieldProps\r\n extends FieldProps,\r\n ITypeaheadProps {}\r\n\r\nconst TypeaheadField = (props: ITypeaheadFieldProps) => (\r\n \r\n);\r\n\r\nexport default TypeaheadField;\r\n","/**\r\n * utils.defaultValues.ts\r\n * Disability Insurance Services\r\n *\r\n * Created by Jeremy Moyers on Wed May 17\r\n */\r\n\r\n// The default value for Single Select option lists\r\n// It has to be a string because HTML Javascript and React Final Form hate you.\r\nexport const defaultOptionValue = -1;\r\n\r\nexport const addDefaultOption = function(label, options){\r\n if(Array.isArray(options)){\r\n return [\r\n { key: label, value: defaultOptionValue, disabled: false },\r\n ...options\r\n ];\r\n }\r\n else {\r\n return [\r\n { key: label, value: defaultOptionValue, disabled: false }\r\n ];\r\n }\r\n} \r\n\r\nexport const isEmptyOrDefault = (value: any): boolean => {\r\n return !value || (value && value === defaultOptionValue || value === -1);\r\n};\r\n\r\nexport const undefinedIfDefault = (value: any): any => {\r\n return value === defaultOptionValue || value === -1 ? undefined : value;\r\n};\r\n","import React from \"react\";\r\nimport { get } from \"lodash\";\r\nimport { Container, Row, Col, Label } from \"reactstrap\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport * as S from \"../../constants/StringConstants\";\r\nimport { IRootState } from \"../../store/reducers\";\r\nimport TextField from \"../../components/Form/TextField/TextField\";\r\nimport \"./ExistentBrokerNav.scss\"\r\nimport { Link } from 'react-router-dom';\r\n\r\nexport interface IExistentBrokerNavProps extends StateProps, DispatchProps {}\r\n\r\nclass ExistentBrokerNav extends React.Component {\r\n render() {\r\n const { existentBrokerIdByEmail } = this.props;\r\n \r\n if (existentBrokerIdByEmail) {\r\n let brokerUrl = \"/broker/\" + existentBrokerIdByEmail;\r\n return (\r\n \r\n
\r\n {S.NEW_QUOTE_CREATION_LABEL}\r\n {S.NEW_QUOTE_CREATION}\r\n
\r\n
\r\n ); }\r\n else {\r\n return '';\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: IRootState) => ({\r\n brokerPrimaryEmailValidating: state.brokerBuilder.brokerPrimaryEmailValidating,\r\n existentBrokerIdByEmail: state.brokerBuilder.existentBrokerIdByEmail,\r\n existentBrokerFirstNameByEmail: state.brokerBuilder.existentBrokerFirstNameByEmail,\r\n existentBrokerLastNameByEmail: state.brokerBuilder.existentBrokerLastNameByEmail,\r\n});\r\n\r\nconst mapDispatchToProps = {};\r\n\r\ntype StateProps = ReturnType;\r\ntype DispatchProps = typeof mapDispatchToProps;\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ExistentBrokerNav);\r\n","import React from 'react'\r\nimport { Form as FinalForm, Field, FormSpy } from 'react-final-form'\r\nimport { FORM_ERROR, FormApi } from 'final-form'\r\nimport { connect } from 'react-redux'\r\nimport { get, set } from 'lodash'\r\nimport { Container, Row, Col, Spinner } from 'reactstrap'\r\nimport createDecorator from 'final-form-calculate'\r\n\r\nimport { IRootState } from '../../store/reducers'\r\nimport { createBroker, fetchBroker, updateBroker } from '../../store/reducers/brokers'\r\nimport { fetchBrokerOptions, fetchCompanyAffiliate, fetchBrokerByPrimaryEmail } from '../../store/reducers/brokerBuilder';\r\nimport { fetchProductBuilderOptions } from \"../../store/reducers/productBuilder\";\r\nimport { IBroker, defaultBroker } from '../../store/models/broker.model'\r\n\r\nimport * as S from '../../constants/StringConstants'\r\nimport * as P from '../../util/utils.validators'\r\nimport TextField from '../../components/Form/TextField/TextField'\r\nimport SingleSelectField from '../../components/Form/SingleSelectField/SingleSelectField'\r\nimport TypeaheadField, {\r\n keyValueToDropdownOption,\r\n ITypeaheadOption\r\n} from '../../components/Form/TypeaheadField/TypeaheadField'\r\nimport { RouteComponentProps } from 'react-router'\r\nimport './BrokerBuilder.scss'\r\nimport formatString from 'format-string-by-pattern'\r\nimport {\r\n addDefaultOption,\r\n undefinedIfDefault\r\n} from '../../util/utils.defaultValues'\r\nimport { OnChange } from \"react-final-form-listeners\";\r\n\r\nimport ExistentBrokerNav from './ExistentBrokerNav';\r\nimport Header from '../Layout/Header'\r\nimport PreFooter from '../Layout/PreFooter'\r\nimport Footer from '../Layout/Footer'\r\n\r\nexport interface IBrokerBuilderState {\r\n}\r\n\r\ninterface IBrokerBuilderProps extends StateProps, DispatchProps, RouteComponentProps<{ id: string }> \r\n{\r\n}\r\n\r\nclass BrokerBuilder extends React.Component {\r\n \r\n campaignId: number;\r\n companyId: number;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n emailDisabled: 'disabled'\r\n };\r\n }\r\n\r\n validate = (values: any) => {\r\n const errors = {}\r\n\r\n if (P.isEmpty(values.firstName)) {\r\n errors['firstName'] = S.FORM_FIELD_REQUIRED\r\n }\r\n\r\n if (P.isEmpty(values.lastName)) {\r\n errors['lastName'] = S.FORM_FIELD_REQUIRED\r\n }\r\n\r\n if (!values.primaryEmail) {\r\n errors['primaryEmail'] = S.FORM_FIELD_REQUIRED\r\n }\r\n\r\n const phoneFields = ['officePhone', 'cellPhone', 'faxPhone']\r\n phoneFields.map(fieldName => {\r\n const phoneNumber = get(values, fieldName)\r\n const pattern = P.PHONE_NUMBER_REGEX\r\n if (phoneNumber && !pattern.test(phoneNumber)) {\r\n set(errors, fieldName, S.FORM_FIELD_INVALID)\r\n }\r\n })\r\n\r\n const zipCode = get(values, 'address.zip')\r\n const zipPattern = P.ZIP_CODE_REGEX\r\n if (zipCode && !zipPattern.test(zipCode)) {\r\n set(errors, 'address.zip', S.FORM_FIELD_INVALID)\r\n }\r\n\r\n return errors\r\n }\r\n\r\n handleSubmit = async (values: any) => {\r\n const broker = this.formValuesToBroker(values);\r\n this.fillBrokerEmptyValues(broker); \r\n \r\n try {\r\n var result = await this.props.createBroker(broker);\r\n const brokerID = +get(result, 'value.data')\r\n \r\n let brokerUrl = \"/broker/\" + brokerID;\r\n if (this.campaignId){\r\n brokerUrl += \"/campaign/\" + this.campaignId;\r\n }\r\n\r\n this.props.history.push(brokerUrl);\r\n } catch (err) {\r\n return { [FORM_ERROR]: 'Error Submitting' }\r\n }\r\n }\r\n\r\n fillBrokerEmptyValues(broker) {\r\n if (typeof get(broker, 'companyID') !== 'number') {\r\n set(broker, 'companyID', 0)\r\n } \r\n if (typeof get(broker, 'affiliateID') !== 'number') {\r\n set(broker, 'affiliateID', undefined)\r\n } \r\n }\r\n\r\n componentDidMount() {\r\n this.props.fetchProductBuilderOptions();\r\n \r\n\r\n const campaignParam = get(this.props.match.params, \"campaignId\");\r\n const companyParam = get(this.props.match.params, \"companyId\");\r\n var companyId = undefined;\r\n if(companyParam)\r\n companyId = +companyParam.match(/(\\d+)/)[0];\r\n var campaignId = undefined;\r\n if(campaignParam)\r\n campaignId = +campaignParam.match(/(\\d+)/)[0];\r\n \r\n this.campaignId = campaignId;\r\n this.companyId = companyId;\r\n\r\n this.props.fetchBrokerOptions(campaignId);\r\n }\r\n\r\n formValuesToBroker = (values: any) => {\r\n const primaryPhone = get(values, 'primaryPhone')\r\n const cellPhone = get(values, 'cellPhone')\r\n\r\n const brokerPhones = [\r\n {\r\n phoneNumber: get(values, 'officePhone'),\r\n isPrimary: primaryPhone === S.BRO_PHONE_TYPE_OFFICE,\r\n phoneType: S.BRO_PHONE_TYPE_OFFICE\r\n },\r\n {\r\n phoneNumber: cellPhone,\r\n isPrimary: primaryPhone === S.BRO_PHONE_TYPE_CELL,\r\n phoneType: S.BRO_PHONE_TYPE_CELL\r\n },\r\n {\r\n phoneNumber: get(values, 'faxPhone'),\r\n phoneType: S.BRO_PHONE_TYPE_FAX\r\n }\r\n ].filter(x => x && x.phoneNumber)\r\n\r\n const brokerAdditionalEmails = [\r\n {\r\n emailAddress: get(values, 'primaryEmail'),\r\n emailType: S.BRO_EMAIL_TYPE_PRIMARY\r\n },\r\n {\r\n emailAddress: get(values, 'alternateEmail'),\r\n emailType: S.BRO_EMAIL_TYPE_ALT\r\n },\r\n {\r\n emailAddress: get(values, 'ccEmail'),\r\n emailType: S.BRO_EMAIL_TYPE_CC\r\n },\r\n {\r\n emailAddress: get(values, 'requestorEmail'),\r\n emailType: S.BRO_EMAIL_TYPE_REQUESTER\r\n }\r\n ].filter(x => x && x.emailAddress)\r\n\r\n let affiliateIDs = get(values, 'affiliateID')\r\n let affiliateID\r\n\r\n if (affiliateIDs && affiliateIDs.length && affiliateIDs[0].value) {\r\n affiliateID = affiliateIDs[0].value\r\n } else if (!isNaN(affiliateIDs)) {\r\n affiliateID = affiliateIDs;\r\n } else {\r\n affiliateID = undefined;\r\n }\r\n\r\n let companyIDs = undefinedIfDefault(get(values, 'companyID'))\r\n // Default behavior for an empty new form is to have it as undefined\r\n let companyID = undefined;\r\n\r\n if (Array.isArray(companyIDs) && companyIDs.length > 0) {\r\n // form was pre-populated with a list of options\r\n companyID = companyIDs[0].value\r\n } else if (Number.isInteger(companyIDs)) {\r\n // a single item has been selected\r\n companyID = companyIDs;\r\n }\r\n\r\n if (values.address) {\r\n values.address.stateID = undefinedIfDefault(values.address.stateID)\r\n }\r\n\r\n return {\r\n brokerID: get(values, 'brokerID'),\r\n firstName: get(values, 'firstName'),\r\n lastName: get(values, 'lastName'),\r\n preferredName: get(values, 'preferredName'),\r\n affiliateFreeTypeName: get(values, 'affiliateFreeTypeName'),\r\n companyFreeTypeName: get(values, 'companyFreeTypeName'),\r\n companyID: companyID,\r\n affiliateID: undefinedIfDefault(affiliateID),\r\n marketingCampaignID: undefinedIfDefault(get(values, 'marketingCampaignID')),\r\n HearAboutTypeID: undefinedIfDefault(get(values, 'hearAboutUsTypeID')),\r\n brokerAdditionalEmails,\r\n address: get(values, 'address'),\r\n notes: get(values, 'notes')\r\n }\r\n }\r\n\r\n brokerToFormValues = (broker: IBroker, affiliates: ITypeaheadOption[]) => {\r\n const brokerPhones = get(broker, 'brokerPhones') || []\r\n const brokerAdditionalEmails = get(broker, 'brokerAdditionalEmails') || []\r\n const officePhoneItem = brokerPhones.find(x => x.phoneType === 1)\r\n\r\n const affiliate = affiliates.find(a => a.value === get(broker, 'affiliateID'))\r\n\r\n return {\r\n brokerID: get(broker, 'brokerID'),\r\n firstName: get(broker, 'firstName'),\r\n lastName: get(broker, 'lastName'),\r\n preferredName: get(broker, 'preferredName'),\r\n companyFreeTypeName: get(broker, 'companyFreeTypeName'),\r\n affiliateFreeTypeName: get(broker, 'affiliateFreeTypeName'),\r\n companyID: get(broker, 'companyID'),\r\n affiliateID: affiliate ? affiliate.value : undefined,\r\n marketingCampaignID: get(broker, 'marketingCampaignID'),\r\n hearAboutUsTypeID: get(broker, 'hearAboutUsTypeID'),\r\n address: get(broker, 'address'),\r\n notes: get(broker, 'notes'),\r\n officePhone: get(officePhoneItem, 'phoneNumber'),\r\n cellPhone: get(\r\n brokerPhones.find(x => x.phoneType === 2),\r\n 'phoneNumber'\r\n ),\r\n faxPhone: get(\r\n brokerPhones.find(x => x.phoneType === 3),\r\n 'phoneNumber'\r\n ),\r\n primaryPhone:\r\n officePhoneItem && officePhoneItem.isPrimary\r\n ? S.BRO_PHONE_TYPE_OFFICE\r\n : S.BRO_PHONE_TYPE_CELL,\r\n primaryEmail: get(\r\n brokerAdditionalEmails.find(x => x.emailType === 1),\r\n 'emailAddress'\r\n ),\r\n alternateEmail: get(\r\n brokerAdditionalEmails.find(x => x.emailType === 2),\r\n 'emailAddress'\r\n ),\r\n ccEmail: get(\r\n brokerAdditionalEmails.find(x => x.emailType === 3),\r\n 'emailAddress'\r\n ),\r\n requestorEmail: get(\r\n brokerAdditionalEmails.find(x => x.emailType === 4),\r\n 'emailAddress'\r\n )\r\n }\r\n }\r\n\r\n getPrimaryPhoneLabel(form: FormApi, key: string) {\r\n const field = form.getFieldState('primaryPhone')\r\n if (!field) {\r\n return ''\r\n }\r\n\r\n return field.value === key ? S.BRO_PRIMARY_LABEL : ''\r\n }\r\n\r\n get broker() {\r\n return this.props.brokers.map[this.props.match.params.id]\r\n }\r\n\r\n get brokerID() {\r\n const id = parseInt(this.props.match.params.id, 10)\r\n\r\n return id && !isNaN(id) ? id : null\r\n }\r\n\r\n formStateTemp = undefined;\r\n\r\n formStateHandler = createDecorator({\r\n field: /./,\r\n updates: (value, name, allValues, previousValues) => {\r\n this.formStateTemp = allValues;\r\n return {}\r\n }\r\n })\r\n\r\n render() {\r\n var brokerBuilderScope = this;\r\n\r\n const { existentBrokerIdByEmail } = this.props;\r\n const { dropdownOptions, companyAffiliate } = this.props\r\n const officePhoneMask = { name: 'phone-1', parse: '(999) 999-9999.999999' }\r\n const phoneMask = { name: 'phone-1', parse: '(999) 999-9999' }\r\n\r\n // if there's an id then we should be editing\r\n const broker = this.broker;\r\n\r\n const defaultValues = {\r\n affiliateID: undefined,\r\n companyID: undefined,\r\n howDidYouHearAboutUsID: undefined,\r\n marketingCampaignID: undefined,\r\n primaryPhone: S.BRO_PHONE_TYPE_OFFICE,\r\n ...this.formStateTemp\r\n }\r\n\r\n const affiliateList = (get(dropdownOptions, 'affiliateList') || []).map(\r\n keyValueToDropdownOption\r\n )\r\n\r\n const companyList = (get(dropdownOptions, 'companyList') || []).map(\r\n keyValueToDropdownOption\r\n )\r\n \r\n var companyFullList = get(dropdownOptions, 'companyList', []);\r\n var hearAboutUsFullList = get(dropdownOptions, 'hearAboutUsList', []);\r\n\r\n let affiliate = undefined;\r\n let selectedCompanyDetails = undefined;\r\n const affiliateParam = get(this.props.match.params, \"affiliateId\");\r\n const campaignParam = get(this.props.match.params, \"campaignId\");\r\n const companyParam = get(this.props.match.params, \"companyId\");\r\n\r\n var affiliateId = undefined;\r\n if(affiliateParam)\r\n affiliateId = +affiliateParam.match(/(\\d+)/)[0];\r\n \r\n var companyId = undefined;\r\n if(companyParam)\r\n companyId = +companyParam.match(/(\\d+)/)[0];\r\n\r\n var campaignId = undefined;\r\n if(campaignParam)\r\n campaignId = +campaignParam.match(/(\\d+)/)[0];\r\n\r\n let howDidYouHearAboutUs = undefined;\r\n\r\n let isCompanyRendering = false;\r\n let isAffiliateRendering = false;\r\n if (companyId) {\r\n isCompanyRendering = true;\r\n selectedCompanyDetails = companyFullList.find(a => a.value === companyId);\r\n if(selectedCompanyDetails) {\r\n affiliate = affiliateList.find(a => a.value === selectedCompanyDetails.affiliateId);\r\n defaultValues.affiliateID = selectedCompanyDetails.affiliateId;\r\n }\r\n }\r\n else if (affiliateId) {\r\n isAffiliateRendering = true;\r\n affiliate = affiliateList.find(a => a.value === affiliateId);\r\n companyFullList = companyFullList.filter(x => x.affiliateId === affiliateId);\r\n }\r\n \r\n if (campaignId) {\r\n howDidYouHearAboutUs = hearAboutUsFullList.find(a => a.value === campaignId); \r\n }\r\n \r\n if (!howDidYouHearAboutUs && isAffiliateRendering) {\r\n howDidYouHearAboutUs = hearAboutUsFullList.find(a => a.key === 'Affiliate');\r\n }\r\n else if (!howDidYouHearAboutUs) {\r\n howDidYouHearAboutUs = hearAboutUsFullList.find(a => a.key === 'Other');\r\n }\r\n \r\n const stateList = addDefaultOption(\r\n S.BRO_STATE_LABEL,\r\n get(dropdownOptions, 'selectStateList', [])\r\n )\r\n \r\n // If viewing an existing broker with an affiliate always select that affiliate.\r\n // If there is no existing broker affiliate use the affiliate of the selected company.\r\n const brokerAffiliateID = get(broker, 'affiliateID');\r\n if (brokerAffiliateID) {\r\n affiliate = affiliateList.find(a => a.value === brokerAffiliateID);\r\n defaultValues.affiliateID = affiliate ? affiliate.value : 0;\r\n } else if (companyAffiliate) {\r\n affiliate = affiliateList.find(a => a.value === get(companyAffiliate, 'affiliateID'));\r\n defaultValues.affiliateID = affiliate ? affiliate.value : 0\r\n set(broker, 'affiliateID', get(affiliate, 'value'));\r\n }\r\n // If affiliateId we received via params - override all existent logic\r\n if(affiliateId && affiliate){\r\n defaultValues.affiliateID = affiliate ? affiliate.value : 0;\r\n }\r\n // If howDidYouHearAboutUsId we received via params - override all existent logic\r\n if(howDidYouHearAboutUs){\r\n defaultValues.hearAboutUsTypeID = howDidYouHearAboutUs ? howDidYouHearAboutUs.value : 0;\r\n }\r\n\r\n const initialValues = broker ? this.brokerToFormValues(broker, affiliateList) : defaultValues;\r\n\r\n if (selectedCompanyDetails) {\r\n initialValues.companyID = selectedCompanyDetails.value;\r\n }\r\n let selectedCompany = undefined;\r\n if (initialValues.companyID) {\r\n selectedCompany = companyList.find(c => c.value === initialValues.companyID);\r\n }\r\n \r\n return (\r\n
\r\n
\r\n {\r\n return (\r\n
\r\n

{S.BRO_NEW_TITLE}

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

{S.BRO_INFO_TITLE}

\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n isCompanyRendering\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n : \"\"\r\n }\r\n {isAffiliateRendering && !isCompanyRendering\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n \r\n {value => {\r\n const companyID = get(value, '0.value');\r\n if (companyID && !affiliateId) {\r\n try {\r\n this.props.fetchCompanyAffiliate(companyID);\r\n set(this.broker, 'affiliateID', 0);\r\n set(this.broker, 'companyID', companyID);\r\n\r\n } catch (e) {\r\n console.log('exception:', e)\r\n }\r\n }\r\n }}\r\n \r\n \r\n \r\n :\"\" }\r\n {!isAffiliateRendering && !isCompanyRendering\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\"\"\r\n }\r\n \r\n \r\n

{S.BRO_PHONE_TITLE}

\r\n \r\n
\r\n (\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n />\r\n \r\n \r\n

{S.BRO_EMAIL_TITLE}

\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {value => {\r\n var primaryEmail = value;\r\n if (primaryEmail && primaryEmail.length > 4){\r\n var re = /\\S+@\\S+\\.\\S+/;\r\n var isValid = re.test(primaryEmail);\r\n if(isValid) {\r\n this.props.fetchBrokerByPrimaryEmail(primaryEmail);\r\n }\r\n }\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

{S.BRO_ADDRESS_TITLE}

\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {campaignId \r\n ? \r\n \r\n \r\n : \r\n \r\n }\r\n \r\n \r\n \r\n

{S.BRO_NOTES_TITLE}

\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {submitting || existentBrokerIdByEmail ? : S.BRO_SUBMIT_BUTTON}\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }}\r\n />\r\n {/* */}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst mapStateToProps = ({\r\n brokers,\r\n brokerBuilder: { loading, companyAffiliate, existentBrokerIdByEmail, isAfiliateRequestInProgress, ...dropdownOptions }\r\n}: IRootState) => ({\r\n brokers,\r\n companyAffiliate,\r\n isAfiliateRequestInProgress,\r\n dropdownOptions,\r\n existentBrokerIdByEmail\r\n})\r\n\r\nconst mapDispatchToProps = {\r\n createBroker,\r\n fetchBrokerOptions,\r\n fetchBroker,\r\n updateBroker,\r\n fetchCompanyAffiliate,\r\n fetchBrokerByPrimaryEmail,\r\n fetchProductBuilderOptions\r\n}\r\n\r\ntype StateProps = ReturnType\r\ntype DispatchProps = typeof mapDispatchToProps\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(BrokerBuilder)\r\n","import React from \"react\";\r\nimport { Switch, Route, Redirect } from \"react-router-dom\";\r\n\r\nimport AppContainer from \"./views/AppContainer\";\r\n\r\nimport QuoteEngine from \"./views/QuoteEngine/Quote\";\r\nimport QuoteWizard from \"./views/QuoteEngine/QuoteWizard\";\r\nimport QuoteSent from \"./views/QuoteEngine/QuoteSent\";\r\n\r\nimport Login from \"./views/Login/Login\";\r\n\r\nimport PrivateRoute from \"./components/PrivateRoute\";\r\nimport BrokerBuilder from \"./views/BrokerBuilder/BrokerBuilder\";\r\n\r\nconst Routes = () => (\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n />\r\n \r\n
\r\n);\r\n\r\nexport default Routes;\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { RouteComponentProps, Link } from \"react-router-dom\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\n\r\nimport MomentUtils from \"@date-io/moment\";\r\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\n\r\nimport Routes from \"./routes\";\r\nimport { IRootState } from \"./store/reducers\";\r\nimport * as K from \"./constants/StorageConstants\";\r\n\r\nimport \"./styles/index.scss\";\r\n\r\nexport interface IAppProps extends StateProps, DispatchProps, RouteComponentProps {}\r\n\r\nexport class App extends React.Component {\r\n \r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = ({ auth }: IRootState) => ({\r\n ...auth\r\n});\r\n\r\nconst mapDispatchToProps = {\r\n \r\n};\r\n\r\ntype StateProps = ReturnType;\r\ntype DispatchProps = typeof mapDispatchToProps;\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(App);\r\n","/**\r\n * axios-config.ts\r\n * Disability Insurance Services\r\n *\r\n * Created by Jeremy Moyers on Thu Apr 4 13:59:10 2019\r\n * Copyright Seamgen, LLC. All rights reserved.\r\n */\r\n\r\nimport axios from \"axios\";\r\nimport { get } from \"lodash\";\r\nimport { BASE_API_URL } from \"../constants/EnvConstants\";\r\nimport * as K from \"../constants/StorageConstants\";\r\n\r\naxios.defaults.baseURL = BASE_API_URL;\r\n\r\n// removes agents from axios configs, to prevent circular references\r\nfunction removeAgents(axios, config) {\r\n if (axios.defaults.agent === config.agent) {\r\n delete config.agent;\r\n }\r\n if (axios.defaults.httpAgent === config.httpAgent) {\r\n delete config.httpAgent;\r\n }\r\n if (axios.defaults.httpsAgent === config.httpsAgent) {\r\n delete config.httpsAgent;\r\n }\r\n}\r\n\r\n/**\r\n * Setup axios for default api url and error handling.\r\n */\r\nconst setupAxios = onUnauthenticated => {\r\n /**\r\n * During an active session add a Bearer token to all request headers.\r\n */\r\n const requestInterceptor = config => {\r\n const token = localStorage.getItem(K.ACCESS_TOKEN);\r\n if (token) {\r\n config.headers.Authorization = `Bearer ${token}`;\r\n }\r\n return config;\r\n };\r\n\r\n /**\r\n * Check all response for and handle authorization errors.\r\n */\r\n const onResponseError = async responseError => {\r\n const config = responseError.config;\r\n const status =\r\n get(responseError, \"status\", null) || get(responseError, \"response.status\", null);\r\n const missingConfig = !config;\r\n const isLoginRoute = responseError.request.responseURL === BASE_API_URL + \"login\";\r\n\r\n // attempt to refresh session and retry request\r\n if (status === 403 || status === 401) {\r\n if (missingConfig || isLoginRoute) throw responseError;\r\n\r\n /** pulled from https://github.com/softonic/axios-retry/blob/master/es/index.js */\r\n removeAgents(axios, config);\r\n // config.transformRequest = [data => data]\r\n\r\n // For non login authorization failures attempt to refresh the access token\r\n // If the access token cannot be refreshed, navigate to login\r\n const refreshToken = localStorage.getItem(K.REFRESH_TOKEN);\r\n if (!refreshToken) {\r\n onUnauthenticated();\r\n throw responseError;\r\n }\r\n\r\n try {\r\n //await refreshSession(refreshToken);\r\n return axios(config);\r\n } catch (refreshError) {\r\n onUnauthenticated();\r\n throw refreshError;\r\n }\r\n }\r\n\r\n throw responseError;\r\n };\r\n\r\n /**\r\n * Allow successful responses to pass through;\r\n */\r\n const onResponseSuccess = response => response;\r\n\r\n axios.interceptors.request.use(requestInterceptor);\r\n axios.interceptors.response.use(onResponseSuccess, onResponseError);\r\n};\r\n\r\nexport default setupAxios;\r\n","/**\r\n * StorageConstants.ts\r\n * Disability Insurance Services\r\n *\r\n * Created by Jeremy Moyers on Thu Apr 8 13:02:42 2019\r\n * Copyright Seamgen, LLC. All rights reserved.\r\n */\r\n\r\n /**\r\n * Session Keys\r\n */\r\nexport const ACCESS_TOKEN = \"accessTokenKey\"\r\nexport const REFRESH_TOKEN = \"refreshTokenKey\"\r\nexport const BROKERID = \"brokerId\"\r\n\r\n","import React from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport { bindActionCreators } from 'redux'\r\n\r\nimport { Provider } from 'react-redux'\r\nimport store from './store/index'\r\n\r\nimport App from './app'\r\nimport setupAxios from './config/axios-config'\r\nimport { logout } from './store/reducers/authentication'\r\n\r\nimport './styles/index.scss'\r\nimport './index.scss'\r\n\r\nconst mountPoint = document.getElementById('root')\r\n\r\nconst actions = bindActionCreators({ logout }, store.dispatch);\r\nsetupAxios(() => actions.logout())\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n mountPoint\r\n)\r\n"],"sourceRoot":""}