{"version":3,"sources":["containers/CallRequestBox/constants.js","components/Icons/IconHelp.js","utils/functions.js","containers/CallRequestBox/selectors.js","containers/CallRequestBox/actions.js","utils/networking.js","containers/ContractingPage/Forms/FormValidator.js","utils/dateFactory.js","containers/MedicalTeamPage/functions.js","utils/makeActionCreator.js","containers/MedicalTeamPage/selectors.js","containers/MedicalTeamPage/actions.js","containers/MedicalTeamPage/constants.js","containers/Menu/actions.js","containers/Menu/constants.js","containers/App/index.js","containers/Menu/selectors.js","containers/LanguageProvider/selectors.js","containers/LanguageProvider/index.js","utils/cookies.js","containers/MedicalTeamPage/sagas.js","containers/OfficeSearcher/constants.js","containers/OfficeSearcher/actions.js","containers/OfficeSearcher/sagas.js","containers/NewsViewer/constants.js","containers/NewsViewer/actions.js","containers/NewsViewer/sagas.js","containers/ContractingPage/constants.js","containers/ContractingPage/actions.js","containers/ContractingPage/DocAndSignatureView/constants.js","containers/ContractingPage/DocAndSignatureView/actions.js","containers/ContractingPage/DocAndSignatureView/selectors.js","containers/FilesUploader/BankStatementUploader/selectors.js","containers/FilesUploader/NifUploader/selectors.js","containers/FilesUploader/constants.js","containers/FilesUploader/actions.js","containers/FilesUploader/functions.js","containers/FilesUploader/sagas.js","containers/RecoveryContractModal/constants.js","containers/RecoveryContractModal/actions.js","containers/RecoveryContractModal/sagas.js","containers/CalculatorPage/selectors.js","containers/ContractingPage/ApiModels.js","containers/ContractingPage/documentationUtils.js","containers/ContractingPage/PolicyHolderView/selectors.js","containers/ContractingPage/InsuredsView/constants.js","containers/ContractingPage/InsuredsView/actions.js","containers/ContractingPage/InsuredsView/selectors.js","containers/ContractingPage/HomeView/selectors.js","containers/ContractingPage/selectors.js","containers/ContractingPage/functions.js","containers/ContractingPage/sagas/defaultSagas.js","containers/ContractingPage/calculatorRequest.js","containers/ContractingPage/sagas/recalculateSagas.js","containers/LanguageProvider/reducer.js","containers/App/constants.js","containers/LanguageProvider/constants.js","containers/MedicalTeamPage/reducer.js","containers/Faqs/reducer.js","containers/Faqs/constants.js","containers/Menu/reducer.js","containers/CalculatorPage/mapDraft.js","containers/CalculatorPage/constants.js","containers/CalculatorPage/reducer.js","containers/Tabs/reducer.js","containers/Tabs/constants.js","containers/OfficeSearcher/functions.js","containers/OfficeSearcher/reducer.js","containers/CallRequestBox/reducer.js","containers/ContractingPage/InsuredsView/mocks/stageMock.js","containers/ContractingPage/InsuredsView/mapDraft.js","containers/ContractingPage/InsuredsView/reducer.js","containers/ContractingPage/PolicyHolderView/mapDraft.js","containers/ContractingPage/PolicyHolderView/mocks/stageMock.js","containers/ContractingPage/PolicyHolderView/reducer.js","containers/ContractingPage/PolicyHolderView/constants.js","containers/ContractingPage/DocAndSignatureView/reducer.js","containers/FilesUploader/NifUploader/reducer.js","containers/FilesUploader/NifUploader/functions.js","containers/FilesUploader/NifUploader/constants.js","containers/FilesUploader/BankStatementUploader/reducer.js","containers/FilesUploader/BankStatementUploader/constants.js","containers/ContractingPage/HomeView/reducer.js","containers/ContractingPage/HomeView/constants.js","containers/NewsViewer/reducer.js","containers/ProductSearch/reducer.js","containers/ProductSearch/constants.js","containers/HomePage/reducer.js","containers/HomePage/constants.js","containers/RecoveryContractModal/reducer.js","containers/ContractingPage/reducer.js","reducers.js","store.js","i18n.js","utils/asyncInjectors.js","utils/buildRoute.js","routes.js","index.js","containers/App/selectors.js"],"names":["SHOW_MODAL","FORM_SENDED","IconHelp","_React$PureComponent","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","_createClass","key","value","Tooltip","this","tooltip","placement","title","content","innerHTML","html","_this","React","createElement","ref","c","className","concat","props","tooltipClassName","onClick","preventPropagation","dangerouslySetInnerHTML","__html","PureComponent","getObjectPropertyByPath","originalObj","path","replace","split","reduce","obj","property","err","event","ev","window","stopPropagation","cancelBubble","formatQueryParams","qparams","enc","encodeURIComponent","Object","keys","map","k","filter","x","join","parseTooltip","string","includes","beforeSplitted","afterSplitted","getProductConfigById","id","findKey","config","products","toString","makeSelectModalActive","createSelector","state","get","toJS","substate","showModal","makeSelectUrl","url","makeSelectRequestSended","formSended","showModalAction","makeActionCreator","markAsSendedAction","baseUrl","networkConfig","production","getNet","params","Promise","resolve","reject","api","query","header","Headers","set","append","JSON","stringify","fetch","method","headers","then","response","status","json","responseJson","catch","error","postNet","body","putNet","valrequired","undefined","valDate","moment","isValid","valtlfMovil","test","valPhoneMobile","valPhone","valEmail","getBirthDateFromAge","age","birthAge","startOf","add","utc","toDate","getAge","date","momentDate","diff","isOfLegalAge","birthDate","getDateFromString","dateString","format","buildProductList","productJson","productList","i","len","length","item","type","name","specialitiesList","buildSpecialities","specialities","push","specialitiesJson","indent","child","buildFilterDataMap","dataFilter","data","types","getProductList","filterDataMap","medicalTeamId","getSpecialistList","productId","getIndexFromArray","array","getInitialMedicalTeam","medicalTeamOptions","team","buildGeoData","results","geoData","addrComponents","address_components","postalCode","long_name","town","province","geometry","viewport","b","f","southWestLatitude","southWestLongitude","northEastLatitude","northEastLongitude","_len","argNames","Array","_key","_len2","args","_key2","action","forEach","arg","index","makeSelectFilterData","makeSelectQueryParams","makeSelectIsLoadingSearch","isLoadingSearch","makeSelectIsLoadingMore","isLoadingMore","makeSelectSearchResult","searchResult","makeSelectNumTotalResults","numTotalResults","makeSelectSearchSpecialist","searchSpecialist","makeSelectSearchLocation","searchLocation","makeSelectSortType","sortType","makeSelectForm","form","makeSelectCoords","coords","initializeFilterDataAction","INITIALIZE_FILTER_DATA_ACTION","setQueryParamsAction","SET_QUERY_PARAMS_ACTION","setFilterDataAction","SET_FILTER_DATA_ACTION","setSortTypeAction","SET_SORT_ACTION","searchAction","SEARCH_ACTION","setSearchSpecialistAction","SET_SEARCH_SPECIALIST_ACTION","setSearchLocationAction","SET_SEARCH_LOCATION_ACTION","loadMoreAction","LOAD_MORE_ACTION","setIsLoadingSearchAction","SET_IS_LOADING_SEARCH_ACTION","setIsLoadingMoreAction","SET_IS_LOADING_MORE_ACTION","setSearchResultAction","SET_SEARCH_RESULT_ACTION","setMoreResultAction","SET_MORE_RESULTS_ACTION","setFormAction","SET_FORM_ACTION","setCoordsAction","SET_COORDS_ACTION","activeMenuAction","updateLocale","localization","App","Children","toArray","children","mapStateToProps","createStructuredSelector","isActive","privacyPolicyUrl","isRequestSended","connect","dispatch","onActiveMenu","position","onShowModal","markAsSended","selectLanguage","LanguageProvider","IntlProvider","locale","messages","only","languageState","getCookie","cname","ca","decodeURIComponent","document","cookie","charAt","substring","indexOf","isTrackingEnabled","consentLevel","parse","tracking","_regeneratorRuntime","exports","Op","prototype","hasOwn","hasOwnProperty","defineProperty","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","call","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","record","result","__await","unwrapped","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","return","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","constructor","mark","setPrototypeOf","__proto__","awrap","async","iter","val","object","reverse","pop","skipTempReset","prev","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","_marked","initializeFilterData","_marked2","search","_marked3","searchNewSort","_marked4","loadMore","_marked5","defaultSaga","_context","put","callback","t0","sort","_context2","select","medicalTeamCode","medicalTeamTypeId","product","specialityId","specialist","provinceTownPostalCode","location","nameOrMedicalCenter","latitude","longitude","_context3","_context4","offset","_context5","takeLatest","take","LOCATION_CHANGE","SET_RESPONSE","FILTER_OFFICES","SET_OFFICE_DISTANCE","SET_COMBO_OPTIONS","SELECT_OFFICE","TOGGLE_MAP","SET_USER_COORDS","setResponseAction","loadOffices","SET_NEWS","setNews","loadNewsSaga","limit","items","watchers","cancel","INITIALIZE_CONTRACT_ACTION","NEXT_STEP_ACTION","LAST_STEP_ACTION","VALIDATE_CONTRACT_ACTION","CONFIRMATE_CONTRACT_ACTION","UPDATE_FEE_ACTION","CANCEL_LOAD_ACTION","SET_POLICY_ACTION","SEND_FILES_ACTION","SET_CODE_ACTION","nextStepAction","renewPinAction","cancelConfirmationAction","recalculateAction","updateFeeAction","cancelLoadAction","setCodeAction","INITIALIZE_ACTION","SHOW_MODAL_ACTION","ACCEPT_CONDITIONS_ACTION","IS_VALID_CONTRACT_ACTION","RENEWED_PIN_ACTION","IS_PDF_RENDER","CANCEL_UPLOAD_ACTION","isValidContractAction","renewedPinAction","cancelUploadAction","makeSelectIdContract","idContract","makeSelectBankStatement","file","makeSelectFilesUploaded","files","makeSelectExpirationDates","expirationDates","makeSelectDocumentsId","documentsId","SET_FILES_FROM_DRAFT_ACTION","SET_FILES_SENDED_ACTION","setFilesFromDraftAction","setFilesSendedAction","constructDocs","_ref","bankStatement","documents","totalBase64Docs","nifs","nif","expiration","base64Docs","fromDraft","documentId","documentBank","readedBase64Docs","_loop","j","_loop2","_i","reader","FileReader","readAsDataURL","onload","onerror","console","sendDocuments","getNifs","getBankStatement","getAllFiles","parseResponse","_marked6","sendNifs","_marked7","sendBankStatement","_marked8","sendFiles","_marked9","sendFilesAndRenewPin","_marked10","contract","requestModel","docs","alert","message","_context6","_context7","_context8","_context9","_context10","RECOVERY_ERROR_ACTION","PRELOAD_DRAFT_ACTION","LOAD_DRAFT_ACTION","SET_LOADED_DRAFT_ACTION","recoveryErrorAction","recoveryRequiresNifAction","setLoadedDraftAction","callError","showError","draftNotFound","agentNotAllowed","preLoadDraft","loadDraft","nifIsRequired","errors","find","description","agentIsNotAllowed","loadedDraft","code","hashedEmail","_callee","petitions","browserHistory","getCurrentLocation","pathname","phone","agentNotAllowedResult","getJobDescription","productConfig","jodCode","contractingConfig","occupations","PersonData","relationship","surname","lastName","gender","genre","nationalityCode","nationality","nationalities","Number","parseInt","nationalityDescription","address","direction","cp","city","country","countries","countryCode","contact","phone1","mobilePhone","phone2","email","jobDescription","cno","profession","cnoDescription","Insured","_PersonData","isPolicyHolder","healthState","weight","height","comments","healthComments","pathologies","_objectSpread","healthCondition","coverages","Modalidad","modality","ImportePrimeraPrima","ImporteAsegurado","ImporteSubsidio","Beneficiarios","HomeInfo","objectInsured","homeDescrip","TipoVivienda","EsUnifamiliar","singleFamily","EsDespoblada","AñoConstruccion","homeInfo","constructionYear","MetrosConstruidos","squareMeters","PuertasBlindadas","armouredDoors","RejasVentanas","grates","Contraventanas","shutters","AlarmaConectada","alarm","VigilanciaPermanente","vigilance","homeAddress","CP","Address","streetType","City","State","Country","guaranties","ContinenteRiesgo","risk","Continente","continent","Contenido","JoyasValor","lowJewelry","ObjetosValor","lowObjects","JoyasDentroValor","highInJewelry","JoyasFueraValor","highOutJewelry","ObjetosDentroValor","highInObjects","ObjetosFueraValor","highOutObjects","mortage","FinancialEntity","entity","MortageNumber","entityNumber","MortageNumberSecond","entity2","SecondFinancialEntity","entityNumber2","month","year","effect","Petitions","importe","calculator","formName","importeSubsidio","selectedModality","mode","isId","modalitiesInfo","modalitiesGroup","modalities","modalityName","getModality","saludPlus","coverageRequestData","infoLopd","policies","infoCesion","paymentDetails","Iban","paymentInfo","account","Frequency","paymentPeriod","insureds","covFormName","covData","healthConditionData","newHeathConditionData","dataComments","capital","benef","beneficiaries","comercialDetails","effectDate","policyStart","Contract","PolicyHolder","policyHolder","getGenericInformativeNoteUrl","documentsInModal","productInfo","docModals","documentsInLink","docLinks","text","documentNames","informativeNotesInModal","a","getInformativeNoteUrl","addons","addon","makeSelectPolicyHolderData","makeSelectPaymentInfo","makeSelectBeneficiaries","beneficiariesInfo","ADD_INSURED_ACTION","DELETE_INSURED_ACTION","SET_INSURED_DATA_ACTION","ENABLE_EDIT_INSURED_ACTION","HEALTH_CONDITION_MODAL_ACTION","ENABLE_ADDRESS_DATA_ACTION","CHANGE_CONTACT_DATA_ACTION","RESET_STATE_INSURED","SET_FORM_FIELD_ACTION","setFormFieldAction","makeSelectInsureds","makeSelectHomeData","homeData","makeSelectProductConfig","makeSelectPolicies","makeSelectDraftCode","getMensualFee","total","price","isArray","selectorResult","selectedModalityTotalPrice","selectedOption","getAvailablePinPhones","resultPhones","insuredData","getModalityPrice","totalDataInResponse","getTotalDataInResponse","totalResponses","responseModalityGroups","modGrpIndex","modIndex","normalizePrice","copyContactDataFromPolicyHolder","sendContract","confirmContract","renewPin","saveDraft","log","t1","contractId","ContractModel","first","sbjs","current","codes","draftKey","draftCode","informativeNoteUrl","confirmations","doc","contractData","docIds","promoterNif","hasBankStatement","hasExpirationDates","nifPromoter","application","onSend","insuredRelationshipIsValue","textRelationshipInsureds","hasInsuredTaker","hasSpouse","areFamily","textRelationshipForm","dataForm","personNumberSelected","p","areFamilyForm","getConstants","constants","getRequestModel","modalitiesArray","ageCont","mod","subtype","getCalculatorRequest","calculatorIsHealth","insuredsStep","txtRelation","insured","RelationshipInsureds","getRequestModelByModalities","calculatorHasAgesSelector","options","res","recalculate","calculatorIsForm","insuredHasField","field","insuredsHasAges","hasAges","setFormFromInsureds","nextForm","calcForm","requestList","personInfo","mensualFee","_form","_insureds","fee","BirthDate","selectedProduct","Jewels","JewelsOutSafe","JewelsInSafe","Objects","ObjectsOutSafe","ObjectsInSafe","splice","selectedModalityGrp","findIndex","initialState","fromJS","languageProviderReducer","medicalTeamPageReducer","merge","numberOfResults","selectedFaq","faqsReducer","menuReducer","nextValue","setLoadedDraft","draftProduct","newState","draftModality","setModality","setInsureds","setPostalCode","setProductAddons","SubsidioMensual","setCoverages","calculatorPageReducer","stateJs","activeTab","TabsReducer","comparerOfficesByDistance","distance","officesByLocation","offices","showMap","userCoords","officeSearcherReducer","officeSelected","isEditing","isEnabled","showHealthModal","enabledAddressData","enabledContactData","DermatosisSalud","HerniasSalud","FracturasSalud","MiopiaGlaucomaDetalle","DistimiaSalud","PatologiasPsiSalud","CirrosisSalud","HepatitisSalud","EsclerosisSalud","MiopatiasSalud","TraumatismoSalud","CardiopatiaSalud","ArritmiaSalud","TromboSalud","VaricesSalud","BronquitisSalud","AsmaSalud","TumoresSalud","Tumores24meses","CoaguloVIHSalud","PatologiaTiroidea","PatologiaOvarica","DrogasDetalle","AlcoholismoDetalle","CigarrillosDetalle","Discapacidad","TratamientoMedicoSalud","IntervencionQuirurgicaSalud","policy","policyError","getRelationship","relationshipDraft","isMultiInsured","IsMultiInsured","getInsuredCoverages","isFirstInsured","mapDraftData","newInsured","getInsuredPathologies","presentHealthConditionForm","presentHealthConditionFormValue","healthValues","healthConditionsConfig","healthConditionForm","healthValuesForm","healthGroup","list","healthCond","getHealthConditionFormValues","getHealthConditionFormStatus","baseInsured","contractingPageReducer","_ref2","requiresPolicyHolderAsInsured","lastInsurance","addressData","assign","nextState","setPolicyHolderData","paymentData","setPaymentFormStatus","iban","frequency","setPaymentData","some","isPolicyHolderAnInsured","isEditingPaymentInfo","isEditingBeneficiaries","initializePolicyholder","paymentInfoFilled","beneficiariesFilled","hasBeneficiaries","policyHolderViewReducer","acceptedConditions","sendedPin","buttonConditions","render","docAndSignatureViewReducer","toUpperCase","pinIsSending","expirationDatesErrors","intializeUploaders","_deleteOldNifs","newNifs","savedNifsKeys","filesJs","expirationDatesJs","savedNif","nifIsOld","deleteOldNifs","newData","newFiles","newExpirationDates","addNewNifs","setUploadedFiles","resultFiles","resultDocumentsId","setFilesSended","nifUploaderReducer","setUploadedFile","bankStatementUploaderReducer","saveObjects","homeViewReducer","newsViewerReducer","news","productSelected","familySelected","getArrayFamilies","cloneFams","_toConsumableArray","families","productSearchOrder","fam","familyProducts","getArrayProducts","order","family","productSearchReducer","cmb","productSelect","showVideo","initialBaseState","show","finished","requiresNif","isLoading","fromEmail","setLoadingDraft","isLoadingByUrl","recoveryContractModalReducer","step","policiesError","setPolicy","actualPolicies","errorIndex","setPolicyError","policyConfig","pol","mandatory","newFee","routeInitialState","locationBeforeTransitions","routeReducer","payload","createReducer","asyncReducers","combineReducers","formReducer","route","language","medicalTeamPage","faqsState","calculatorPage","calculatorReducer","menuState","tabsComponent","tabsReducer","officeSearcher","nifUploader","bankStatementUploader","callRequestBox","insuredsView","insuredsViewReducer","policyHolderView","docAndSignatureView","homeView","newsViewer","productSearch","homePage","homePageReducer","recoveryContractModal","contractingPage","sagaMiddleware","createSagaMiddleware","addLocaleData","enLocaleData","translationMessages","en","formatTranslationMessages","defaultFormattedMessages","enTranslationMessages","formattedMessages","_defineProperty","checkStore","store","shape","isFunction","subscribe","getState","replaceReducer","runSaga","isObject","invariant","conformsTo","injectAsyncReducer","asyncReducer","isString","isEmpty","Reflect","has","injectAsyncSagas","sagas","warning","errorLoading","loadModule","cb","componentModule","default","buildRoute","pathRoute","nameRoute","arrayModules","getComponent","importModules","all","renderRoute","component","_slicedToArray","buildRouteSagas","injectReducer","injectSagas","_ref3","_ref4","reducer","history","middlewares","routerMiddleware","enhancers","applyMiddleware","composeEnhancers","compose","createStore","run","medicalTeamPageSaga","officeSearchSaga","newsViewerSaga","filesUploaderSaga","recoveryContractModalSaga","contractingDefaultSaga","contractingRecalculateSaga","configureStore","syncHistoryWithStore","selectLocationState","prevRoutingState","prevRoutingStateJS","routingState","equals","makeSelectLocationState","rootRoute","childRoutes","_getAsyncInjectors","getAsyncInjectors","createRoutes","init","ReactDOM","Provider","Router","onUpdate","scrollTo","ga","routes","getElementById","Intl"],"mappings":"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","file":"static/js/main.94bb13c9.chunk.js","sourcesContent":["export const SHOW_MODAL = 'app/CalculatorPage/SHOW_MODAL';\r\nexport const FORM_SENDED = 'app/CalculatorPage/FORM_SENDED';\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Tooltip from 'tooltip.js';\r\n\r\nexport class IconHelp extends React.PureComponent {\r\n // eslint-disable-line\r\n componentDidMount() {\r\n new Tooltip(this.tooltip, {\r\n // eslint-disable-line\r\n placement: 'top',\r\n title: this.content.innerHTML,\r\n html: true,\r\n });\r\n }\r\n render() {\r\n return (\r\n {\r\n this.tooltip = c;\r\n }}\r\n className={`tooltip-element u-margin-left-tiny ${this.props.tooltipClassName}`}\r\n onClick={this.props.preventPropagation}\r\n >\r\n {\r\n this.content = c;\r\n }}\r\n className=\"tooltip-element__content\"\r\n >\r\n

\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nIconHelp.propTypes = {\r\n tooltip: PropTypes.string,\r\n tooltipClassName: PropTypes.string,\r\n preventPropagation: PropTypes.func,\r\n};\r\n\r\nexport default IconHelp;\r\n","import React from 'react';\r\nimport config from 'config.json';\r\nimport configLegal from 'config/legal.config.json';\r\nimport split from 'lodash/split';\r\nimport IconHelp from 'components/Icons/IconHelp';\r\nimport findKey from 'lodash/findKey';\r\n\r\nexport const getObjectPropertyByPath = (originalObj, path) => {\r\n try {\r\n return path\r\n .replace('[', '.')\r\n .replace(']', '')\r\n .split('.')\r\n .reduce((obj, property) => obj[property], originalObj);\r\n } catch (err) {\r\n return undefined;\r\n }\r\n};\r\n\r\nexport const preventPropagation = event => {\r\n const ev = !event ? window.event : event; // IE:Moz\r\n ev.stopPropagation ? ev.stopPropagation() : (ev.cancelBubble = true); // eslint-disable-line\r\n};\r\n\r\nexport const formatQueryParams = qparams => {\r\n const enc = encodeURIComponent;\r\n return Object.keys(qparams)\r\n .map(k => {\r\n if (!qparams[k]) return undefined;\r\n return `${enc(k)}=${enc(qparams[k])}`;\r\n })\r\n .filter(x => x)\r\n .join('&');\r\n};\r\n\r\nexport const parseTooltip = string => {\r\n if (string && string.includes('');\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n return ;\r\n};\r\n\r\nexport const getProductConfigById = id => {\r\n const key = findKey(config.products, {\r\n id: id.toString(),\r\n });\r\n return config.products[key];\r\n};\r\n\r\nexport const tableGenerator = rows => {\r\n let table = '';\r\n for (let i = 0; i < rows.length; i += 1) {\r\n table += ``;\r\n }\r\n table += '
${rows[i].left}${\r\n rows[i].right\r\n }
';\r\n return table;\r\n};\r\n\r\nexport const getPrivacyInfo = product => {\r\n if (product.enterprise === 'DP') {\r\n return configLegal.privacyDp;\r\n } else if (product.enterprise === 'DPSG') {\r\n return configLegal.privacyDpsg;\r\n }\r\n return '';\r\n};\r\n","import { createSelector } from 'reselect';\r\n\r\nconst selectCallRequestBoxDomain = () => (state) =>\r\n state.get('callRequestBox').toJS();\r\n\r\nconst makeSelectModalActive = () =>\r\n createSelector(\r\n selectCallRequestBoxDomain(),\r\n (substate) => substate.showModal,\r\n );\r\n\r\nconst makeSelectUrl = () =>\r\n createSelector(selectCallRequestBoxDomain(), (substate) => substate.url);\r\n\r\nconst makeSelectRequestSended = () =>\r\n createSelector(\r\n selectCallRequestBoxDomain(),\r\n (substate) => substate.formSended,\r\n );\r\n\r\nexport { makeSelectModalActive, makeSelectRequestSended, makeSelectUrl };\r\n","import makeActionCreator from 'utils/makeActionCreator';\r\nimport { SHOW_MODAL, FORM_SENDED } from './constants';\r\n\r\nexport const showModalAction = makeActionCreator(\r\n SHOW_MODAL,\r\n 'showModal',\r\n 'url',\r\n);\r\nexport const markAsSendedAction = makeActionCreator(FORM_SENDED, 'value');\r\n","import 'whatwg-fetch';\r\nimport networkConfig from 'config/network.json';\r\nimport { formatQueryParams } from './functions';\r\n\r\nconst baseUrl = process.env.REACT_APP_ENVIRONMENT === 'production' ? networkConfig.production : networkConfig.stage;\r\n\r\nexport const getNet = (params) => new Promise((resolve, reject) => {\r\n let url = `${baseUrl}/${params.api}`;\r\n if (params.id) {\r\n url = `${url}/${params.id}`;\r\n }\r\n\r\n if (params.qparams) {\r\n const query = formatQueryParams(params.qparams);\r\n url = `${url}?${query}`;\r\n }\r\n\r\n const header = new Headers();\r\n header.set('Content-Type', 'text/plain; charset=utf-8');\r\n header.append('pragma', 'no-cache');\r\n header.append('cache-control', 'no-cache');\r\n if (params.header) {\r\n header.append('data', JSON.stringify(params.header));\r\n }\r\n\r\n fetch(url, {\r\n method: 'GET',\r\n headers: header,\r\n })\r\n .then((response) => (response.status === 204 ? '' : response.json()))\r\n .then((responseJson) => {\r\n resolve(responseJson);\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n});\r\n\r\nexport const postNet = (params) => new Promise((resolve, reject) => {\r\n fetch(`${baseUrl}/${params.api}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(params.body),\r\n })\r\n .then((response) => {\r\n if (response.status === 204) {\r\n resolve();\r\n } else {\r\n return response.json();\r\n }\r\n })\r\n .then((responseJson) => {\r\n resolve(responseJson);\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n});\r\n\r\nexport const putNet = (params) => new Promise((resolve, reject) => {\r\n fetch(`${baseUrl}/${params.api}`, {\r\n method: 'PUT',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(params.body),\r\n })\r\n .then((response) => response.json())\r\n .then((responseJson) => {\r\n resolve(responseJson);\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n});\r\n","import moment from 'moment';\r\nimport { isOfLegalAge } from 'utils/dateFactory';\r\nimport contactInfo from '../../../config/contact.config.json';\r\n\r\nexport const SPANISH_NATIONALITY_CODE = '724';\r\nexport const NO_OPTION_SELECTED = -1;\r\n\r\nexport const valrequired = value =>\r\n value && value != NO_OPTION_SELECTED\r\n ? undefined\r\n : 'Este campo es obligatorio';\r\n\r\nexport const valNotInside = (value, array) => {\r\n const timesFinded = array.filter(\r\n item => item.toUpperCase() === value.toUpperCase(),\r\n ).length;\r\n if (timesFinded > 0) {\r\n return 'Este valor no puede coincidir con el de otra persona del contrato';\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const valnif = function validateNIF(value) {\r\n const nif = value.toUpperCase();\r\n const nifRegex = /^[XYZ]?\\d{5,8}[A-Z]$/;\r\n if (nifRegex.test(nif)) {\r\n const nifNumber = nif.substr(0, nif.length - 1);\r\n const startsWith = nifNumber.substr(0, 1);\r\n if (startsWith === 'X' || startsWith === 'Y' || startsWith === 'Z') {\r\n return (\r\n 'Para continuar con su solicitud de seguro llame al ' +\r\n contactInfo.sellPhone\r\n );\r\n }\r\n const nifLetter = nif.substr(nif.length - 1, 1);\r\n const appropriateLetterPosition = nifNumber % 23;\r\n let letterChoice = 'TRWAGMYFPDXBNJZSQVHLCKET';\r\n letterChoice = letterChoice.substr(appropriateLetterPosition, 1);\r\n if (letterChoice !== nifLetter || value.length !== 9) {\r\n return 'El NIF no es válido';\r\n }\r\n return undefined;\r\n }\r\n return 'El NIF no es válido';\r\n};\r\n\r\nexport const valDate = value => {\r\n if (!moment(value, 'DD/MM/YYYY', true).isValid()) {\r\n return 'La fecha no es válida';\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const valNotFutureDate = value => {\r\n if (moment(value, 'DD/MM/YYYY', true).isAfter(Date.now())) {\r\n return 'La fecha no es válida';\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const valAccountNumber = value => {\r\n const parsedAccountNumber = value.toString().replace(/\\s/g, '');\r\n if (!isNaN(parsedAccountNumber) && parsedAccountNumber.length === 22) {\r\n return undefined;\r\n }\r\n return 'El número de cuenta debe ser válido';\r\n};\r\n\r\nexport const valtlfMovil = value => {\r\n const mobileRegex = /^(\\+?56)?(\\s?)(0?9)(\\s?)[9876543]\\d{7}$/;\r\n\r\n if (mobileRegex.test(value.replace(/\\s+/g, '')) === true) {\r\n return undefined;\r\n }\r\n return 'El teléfono móvil no es válido';\r\n};\r\n\r\nexport const valPhone = value => {\r\n const regex = /^(\\+56|0056|56)?[2-9][0-9]{8}$/;\r\n\r\n if (value && !regex.test(value.replace(/\\s+/g, ''))) {\r\n return 'El teléfono no es válido';\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const valPhoneMobile = value => {\r\n if (valPhone(value) == undefined || valtlfMovil == undefined) {\r\n return undefined;\r\n }\r\n \r\n return 'El teléfono no es válido';\r\n};\r\n\r\nexport const valEmail = value => {\r\n const emailRegex = /^\\w+([\\.\\+\\-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w+)+$/;\r\n\r\n if (emailRegex.test(value) === true) {\r\n return undefined;\r\n }\r\n return 'La dirección de correo electrónico no es válida';\r\n};\r\n\r\nexport const valNationality = value => {\r\n if (value === SPANISH_NATIONALITY_CODE) {\r\n return undefined;\r\n }\r\n return (\r\n 'Para continuar con su solicitud de seguro llame al ' +\r\n contactInfo.sellPhone\r\n );\r\n};\r\n\r\nexport const valLegalAge = value => {\r\n if (isOfLegalAge(value)) {\r\n return undefined;\r\n }\r\n return 'El tomador no puede ser menor de edad';\r\n};\r\n\r\nexport const valIntegerNumber = value => {\r\n if (parseFloat(value) === parseInt(value) && !isNaN(value)) {\r\n return undefined;\r\n }\r\n return 'No es un número entero válido';\r\n};\r\n","import moment from 'moment';\r\n\r\nexport const getBirthDateFromAge = age => {\r\n if (age === undefined) return null;\r\n const birthAge = moment()\r\n .startOf('day')\r\n .add(age * -1, 'Y');\r\n return moment.utc(birthAge, 'DD/MM/YYYY').toDate();\r\n};\r\n\r\nexport const getAge = date => {\r\n const momentDate = moment(date, 'DD/MM/YYYY');\r\n return moment().diff(momentDate, 'years');\r\n};\r\n\r\nexport const isOfLegalAge = birthDate => getAge(birthDate) >= 18;\r\n\r\nexport const isLessThanAge = (birthDate, age) => getAge(birthDate) < age;\r\n\r\nexport const getDateFromString = dateString => {\r\n const momentDate = moment(dateString);\r\n const formattedDate = momentDate.format('DD/MM/YYYY');\r\n return formattedDate;\r\n};\r\n","/**\r\n PRIVATE METHODS\r\n */\r\n\r\nfunction buildProductList(productJson) {\r\n const productList = [];\r\n for (let i = 0, len = productJson.length; i < len; i += 1) {\r\n const item = {\r\n value: productJson[i].type,\r\n name: productJson[i].name,\r\n specialitiesList: buildSpecialities(productJson[i].specialities, [], ''),\r\n };\r\n productList.push(item);\r\n }\r\n return productList;\r\n}\r\n\r\nfunction buildSpecialities(specialitiesJson, specialitiesList, indent) {\r\n if (specialitiesJson === null || specialitiesJson === undefined)\r\n return specialitiesList;\r\n\r\n for (let i = 0, len = specialitiesJson.length; i < len; i += 1) {\r\n const item = {\r\n value: specialitiesJson[i].id,\r\n name: `${indent}${specialitiesJson[i].name}`,\r\n };\r\n specialitiesList.push(item);\r\n buildSpecialities(\r\n specialitiesJson[i].child,\r\n specialitiesList,\r\n `${indent}     `,\r\n );\r\n }\r\n return specialitiesList;\r\n}\r\n\r\nfunction buildFilterDataMap(dataFilter) {\r\n const map = {};\r\n if (dataFilter !== undefined) {\r\n for (let i = 0, len = dataFilter.length; i < len; i += 1) {\r\n const data = buildProductList(dataFilter[i].types);\r\n map[dataFilter[i].type] = data;\r\n }\r\n }\r\n return map;\r\n}\r\n\r\nfunction getProductList(filterDataMap, medicalTeamId) {\r\n return filterDataMap && medicalTeamId && filterDataMap[medicalTeamId]\r\n ? filterDataMap[medicalTeamId]\r\n : [];\r\n}\r\n\r\nfunction getSpecialistList(filterDataMap, medicalTeamId, productId) {\r\n return filterDataMap &&\r\n medicalTeamId &&\r\n productId &&\r\n filterDataMap[medicalTeamId]\r\n ? filterDataMap[medicalTeamId][\r\n getIndexFromArray(filterDataMap[medicalTeamId], productId)\r\n ].specialitiesList\r\n : [];\r\n}\r\n\r\nfunction getIndexFromArray(array, value) {\r\n if (array && value) {\r\n for (let i = 0; i < array.length; i += 1) {\r\n if (array[i].value == value) {\r\n return i;\r\n }\r\n }\r\n }\r\n return 0;\r\n}\r\n\r\nfunction getInitialMedicalTeam(filterDataMap, qparams, medicalTeamOptions) {\r\n if (qparams && qparams.team) {\r\n if (filterDataMap) {\r\n return filterDataMap[qparams.team]\r\n ? qparams.team\r\n : medicalTeamOptions[0].id;\r\n }\r\n\r\n for (let i = 0; i < medicalTeamOptions.length; i += 1) {\r\n if (qparams.team == medicalTeamOptions[i].id) {\r\n return medicalTeamOptions[i].id;\r\n }\r\n }\r\n }\r\n return medicalTeamOptions[0].id;\r\n}\r\n\r\nfunction buildGeoData(results) {\r\n const geoData = {};\r\n if (results && results[0]) {\r\n const addrComponents = results[0].address_components;\r\n for (let i = 0; i < addrComponents.length; i += 1) {\r\n const item = addrComponents[i];\r\n switch (item.types[0]) {\r\n case 'postal_code':\r\n geoData.postalCode = item.long_name;\r\n break;\r\n\r\n case 'locality':\r\n geoData.town = item.long_name;\r\n break;\r\n\r\n case 'administrative_area_level_1':\r\n if (!geoData.province) {\r\n geoData.province = item.long_name;\r\n }\r\n break;\r\n\r\n case 'administrative_area_level_2':\r\n geoData.province = item.long_name;\r\n break;\r\n\r\n case 'administrative_area_level_3':\r\n if (!geoData.town) {\r\n geoData.town = item.long_name;\r\n }\r\n break;\r\n\r\n case 'administrative_area_level_4':\r\n if (!geoData.town) {\r\n geoData.town = item.long_name;\r\n }\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n if (\r\n results[0].geometry &&\r\n results[0].geometry.viewport &&\r\n results[0].geometry.viewport.b &&\r\n results[0].geometry.viewport.f\r\n ) {\r\n geoData.southWestLatitude = results[0].geometry.viewport.f.b;\r\n geoData.southWestLongitude = results[0].geometry.viewport.b.b;\r\n geoData.northEastLatitude = results[0].geometry.viewport.f.f;\r\n geoData.northEastLongitude = results[0].geometry.viewport.b.f;\r\n }\r\n }\r\n return geoData;\r\n}\r\n\r\nexport {\r\n buildFilterDataMap,\r\n getIndexFromArray,\r\n getProductList,\r\n getSpecialistList,\r\n getInitialMedicalTeam,\r\n buildGeoData,\r\n};\r\n","export default function makeActionCreator(type, ...argNames) {\r\n return (...args) => {\r\n const action = { type };\r\n argNames.forEach((arg, index) => {\r\n action[argNames[index]] = args[index];\r\n });\r\n return action;\r\n };\r\n}\r\n","import { createSelector } from 'reselect';\r\n\r\n\r\nconst selectMedicalTeamPageDomain = () => (state) => state.get('medicalTeamPage') ? state.get('medicalTeamPage').toJS() : {};\r\n\r\nconst makeSelectFilterData = () => createSelector(\r\n selectMedicalTeamPageDomain(),\r\n (substate) => substate && substate.filterDataMap\r\n);\r\n\r\nconst makeSelectQueryParams = () => createSelector(\r\n selectMedicalTeamPageDomain(),\r\n (substate) => substate && substate.qparams\r\n);\r\n\r\nconst makeSelectIsLoadingSearch = () => createSelector(\r\n selectMedicalTeamPageDomain(),\r\n (substate) => substate.isLoadingSearch\r\n);\r\n\r\nconst makeSelectIsLoadingMore = () => createSelector(\r\n selectMedicalTeamPageDomain(),\r\n (substate) => substate.isLoadingMore\r\n);\r\n\r\nconst makeSelectSearchResult = () => createSelector(\r\n selectMedicalTeamPageDomain(),\r\n (substate) => substate.searchResult\r\n);\r\n\r\nconst makeSelectNumTotalResults = () => createSelector(\r\n selectMedicalTeamPageDomain(),\r\n (substate) => substate.numTotalResults\r\n);\r\n\r\nconst makeSelectSearchSpecialist = () => createSelector(\r\n selectMedicalTeamPageDomain(),\r\n (substate) => substate.searchSpecialist\r\n);\r\n\r\nconst makeSelectSearchLocation = () => createSelector(\r\n selectMedicalTeamPageDomain(),\r\n (substate) => substate.searchLocation\r\n);\r\n\r\nconst makeSelectSortType = () => createSelector(\r\n selectMedicalTeamPageDomain(),\r\n (substate) => substate.sortType\r\n);\r\n\r\nconst makeSelectForm = () => createSelector(\r\n selectMedicalTeamPageDomain(),\r\n (substate) => substate.form\r\n);\r\n\r\nconst makeSelectCoords = () => createSelector(\r\n selectMedicalTeamPageDomain(),\r\n (substate) => substate.coords\r\n);\r\n\r\nexport {\r\n makeSelectFilterData,\r\n makeSelectQueryParams,\r\n makeSelectIsLoadingSearch,\r\n makeSelectIsLoadingMore,\r\n makeSelectSearchResult,\r\n makeSelectNumTotalResults,\r\n makeSelectSearchSpecialist,\r\n makeSelectSearchLocation,\r\n makeSelectSortType,\r\n makeSelectForm,\r\n makeSelectCoords,\r\n};\r\n","import makeActionCreator from 'utils/makeActionCreator';\r\nimport {\r\n INITIALIZE_FILTER_DATA_ACTION,\r\n SET_QUERY_PARAMS_ACTION,\r\n SET_FILTER_DATA_ACTION,\r\n SET_SORT_ACTION,\r\n SEARCH_ACTION,\r\n SET_SEARCH_SPECIALIST_ACTION,\r\n SET_SEARCH_LOCATION_ACTION,\r\n LOAD_MORE_ACTION,\r\n SET_IS_LOADING_SEARCH_ACTION,\r\n SET_IS_LOADING_MORE_ACTION,\r\n SET_SEARCH_RESULT_ACTION,\r\n SET_MORE_RESULTS_ACTION,\r\n SET_FORM_ACTION,\r\n SET_COORDS_ACTION,\r\n} from './constants';\r\n\r\n\r\nexport const initializeFilterDataAction = makeActionCreator(INITIALIZE_FILTER_DATA_ACTION, 'callback', 'params');\r\nexport const setQueryParamsAction = makeActionCreator(SET_QUERY_PARAMS_ACTION, 'values');\r\nexport const setFilterDataAction = makeActionCreator(SET_FILTER_DATA_ACTION, 'filterDataMap');\r\nexport const setSortTypeAction = makeActionCreator(SET_SORT_ACTION, 'value');\r\nexport const searchAction = makeActionCreator(SEARCH_ACTION, 'values');\r\nexport const setSearchSpecialistAction = makeActionCreator(SET_SEARCH_SPECIALIST_ACTION, 'value');\r\nexport const setSearchLocationAction = makeActionCreator(SET_SEARCH_LOCATION_ACTION, 'value');\r\nexport const loadMoreAction = makeActionCreator(LOAD_MORE_ACTION);\r\nexport const setIsLoadingSearchAction = makeActionCreator(SET_IS_LOADING_SEARCH_ACTION, 'value');\r\nexport const setIsLoadingMoreAction = makeActionCreator(SET_IS_LOADING_MORE_ACTION, 'value');\r\nexport const setSearchResultAction = makeActionCreator(SET_SEARCH_RESULT_ACTION, 'response');\r\nexport const setMoreResultAction = makeActionCreator(SET_MORE_RESULTS_ACTION, 'response');\r\nexport const setFormAction = makeActionCreator(SET_FORM_ACTION, 'value');\r\nexport const setCoordsAction = makeActionCreator(SET_COORDS_ACTION, 'value');\r\n\r\n","export const INITIALIZE_FILTER_DATA_ACTION = 'app/MedicalTeamPage/INITIALIZE_FILTER_DATA_ACTION';\r\nexport const SET_QUERY_PARAMS_ACTION = 'app/MedicalTeamPage/SET_QUERY_PARAMS_ACTION';\r\nexport const SET_FILTER_DATA_ACTION = 'app/MedicalTeamPage/SET_FILTER_DATA_ACTION';\r\nexport const SET_SORT_ACTION = 'app/MedicalTeamPage/SET_SORT_ACTION';\r\nexport const SEARCH_ACTION = 'app/MedicalTeamPage/SEARCH_ACTION';\r\nexport const SET_SEARCH_SPECIALIST_ACTION = 'app/MedicalTeamPage/SET_SEARCH_SPECIALIST_ACTION';\r\nexport const SET_SEARCH_LOCATION_ACTION = 'app/MedicalTeamPage/SET_SEARCH_LOCATION_ACTION';\r\nexport const LOAD_MORE_ACTION = 'app/MedicalTeamPage/LOAD_MORE_ACTION';\r\nexport const SET_IS_LOADING_SEARCH_ACTION = 'app/MedicalTeamPage/SET_IS_LOADING_SEARCH_ACTION';\r\nexport const SET_IS_LOADING_MORE_ACTION = 'app/MedicalTeamPage/SET_IS_LOADING_MORE_ACTION';\r\nexport const SET_SEARCH_RESULT_ACTION = 'app/MedicalTeamPage/SET_SEARCH_RESULT_ACTION';\r\nexport const SET_MORE_RESULTS_ACTION = 'app/MedicalTeamPage/SET_MORE_RESULTS_ACTION';\r\nexport const SET_FORM_ACTION = 'app/MedicalTeamPage/SET_FORM_ACTION';\r\nexport const SET_COORDS_ACTION = 'app/MedicalTeamPage/SET_COORDS_ACTION';\r\n\r\n","import makeActionCreator from 'utils/makeActionCreator';\r\nimport {\r\n SELECT_OPTION_ACTION,\r\n ACTIVE_MENU_ACTION,\r\n} from './constants';\r\n\r\nexport const selectOptionAction = makeActionCreator(SELECT_OPTION_ACTION, 'position');\r\nexport const activeMenuAction = makeActionCreator(ACTIVE_MENU_ACTION);\r\n","export const SELECT_OPTION_ACTION = 'app/Menu/SELECT_OPTION_ACTION';\r\nexport const ACTIVE_MENU_ACTION = 'app/Menu/ACTIVE_MENU_ACTION';\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { createStructuredSelector } from 'reselect';\r\nimport moment from 'moment';\r\nimport localization from 'moment/locale/es';\r\nimport {\r\n makeSelectModalActive,\r\n makeSelectUrl,\r\n makeSelectRequestSended,\r\n} from 'containers/CallRequestBox/selectors';\r\nimport {\r\n showModalAction,\r\n markAsSendedAction,\r\n} from 'containers/CallRequestBox/actions';\r\n\r\nimport { activeMenuAction } from '../Menu/actions';\r\nimport { makeSelectIsActive } from '../Menu/selectors';\r\n\r\nif (process.env.REACT_APP_ENVIRONMENT !== 'test') {\r\n moment.updateLocale('es', localization);\r\n}\r\n\r\nexport class App extends React.PureComponent {\r\n // eslint-disable-line react/prefer-stateless-function\r\n render() {\r\n return (\r\n
\r\n {React.Children.toArray(this.props.children)}\r\n
\r\n );\r\n }\r\n}\r\n\r\nApp.propTypes = {\r\n location: PropTypes.object,\r\n children: PropTypes.node,\r\n onActiveMenu: PropTypes.func.isRequired,\r\n onShowModal: PropTypes.func,\r\n markAsSended: PropTypes.func,\r\n isActive: PropTypes.bool,\r\n showModal: PropTypes.bool,\r\n isRequestSended: PropTypes.bool,\r\n};\r\n\r\nconst mapStateToProps = createStructuredSelector({\r\n isActive: makeSelectIsActive(),\r\n showModal: makeSelectModalActive(),\r\n privacyPolicyUrl: makeSelectUrl(),\r\n isRequestSended: makeSelectRequestSended(),\r\n});\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n onActiveMenu: position => dispatch(activeMenuAction(position)),\r\n onShowModal: showModal => {\r\n dispatch(showModalAction(showModal));\r\n },\r\n markAsSended: () => dispatch(markAsSendedAction(true)),\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(App);\r\n","import { createSelector } from 'reselect';\r\n\r\nconst selectMenuDomain = () => (state) => state.get('menuState').toJS();\r\n\r\nconst makeSelectSelectedOption = () => createSelector(\r\n selectMenuDomain(),\r\n (substate) => substate.selectedOption\r\n);\r\n\r\nconst makeSelectIsActive = () => createSelector(\r\n selectMenuDomain(),\r\n (substate) => substate.isActive\r\n);\r\n\r\nexport {\r\n makeSelectSelectedOption,\r\n makeSelectIsActive,\r\n};\r\n","import { createSelector } from 'reselect';\r\n\r\n/**\r\n * Direct selector to the languageToggle state domain\r\n */\r\nconst selectLanguage = (state) => state.get('language');\r\n\r\n/**\r\n * Select the language locale\r\n */\r\n\r\nconst makeSelectLocale = () => createSelector(\r\n selectLanguage,\r\n (languageState) => languageState.get('locale')\r\n);\r\n\r\nexport {\r\n selectLanguage,\r\n makeSelectLocale,\r\n};\r\n","/*\r\n *\r\n * LanguageProvider\r\n *\r\n * this component connects the redux state language locale to the\r\n * IntlProvider component and i18n messages (loaded from `app/translations`)\r\n */\r\n\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { createSelector } from 'reselect';\r\nimport { IntlProvider } from 'react-intl';\r\n\r\nimport { makeSelectLocale } from './selectors';\r\n\r\nexport class LanguageProvider extends React.PureComponent {\r\n // eslint-disable-line react/prefer-stateless-function\r\n render() {\r\n return (\r\n \r\n {React.Children.only(this.props.children)}\r\n \r\n );\r\n }\r\n}\r\n\r\nLanguageProvider.propTypes = {\r\n locale: PropTypes.string,\r\n messages: PropTypes.object,\r\n children: PropTypes.element.isRequired,\r\n};\r\n\r\nconst mapStateToProps = createSelector(makeSelectLocale(), locale => ({\r\n locale,\r\n}));\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n dispatch,\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LanguageProvider);\r\n","import sbjs from 'sourcebuster';\r\n\r\nexport const getCookie = (cname) => {\r\n const name = `${cname}=`;\r\n const decodedCookie = decodeURIComponent(document.cookie);\r\n const ca = decodedCookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) === ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) === 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport const setCookie = (cname, cvalue) => {\r\n const exdays = 30;\r\n const d = new Date();\r\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\r\n const expires = `expires${d.toUTCString()}`;\r\n document.cookie = `${cname}=${cvalue};${expires};path=/`;\r\n};\r\n\r\nexport const isTrackingEnabled = () => {\r\n if (getCookie('cookie_consent_user_accepted')) {\r\n const consentLevel = JSON.parse(getCookie('cookie_consent_level'));\r\n return consentLevel && consentLevel.tracking;\r\n }\r\n return false;\r\n};\r\n\r\nexport const initSbjs = () => {\r\n if (isTrackingEnabled()) {\r\n sbjs.init();\r\n }\r\n};\r\n","import { take, call, put, select, takeLatest } from 'redux-saga/effects';\r\nimport { LOCATION_CHANGE } from 'react-router-redux';\r\nimport { getNet } from 'utils/networking';\r\nimport {\r\n makeSelectSortType,\r\n makeSelectSearchResult,\r\n makeSelectForm,\r\n makeSelectCoords,\r\n} from './selectors';\r\nimport {\r\n INITIALIZE_FILTER_DATA_ACTION,\r\n SEARCH_ACTION,\r\n LOAD_MORE_ACTION,\r\n SET_SORT_ACTION,\r\n} from './constants';\r\nimport {\r\n setFilterDataAction,\r\n setIsLoadingSearchAction,\r\n setIsLoadingMoreAction,\r\n setSearchResultAction,\r\n setMoreResultAction,\r\n setFormAction,\r\n} from './actions';\r\nimport { buildFilterDataMap } from './functions';\r\n\r\nfunction* initializeFilterData(action) {\r\n try {\r\n const response = yield call(getNet, {\r\n api: 'api/medicalteam/source',\r\n header: {},\r\n id: '',\r\n });\r\n const filterDataMap = buildFilterDataMap(response);\r\n\r\n yield put(setFilterDataAction(filterDataMap));\r\n if (action.callback) {\r\n action.callback(filterDataMap, action.params);\r\n }\r\n } catch (ex) {}\r\n}\r\n\r\nfunction* search(data) {\r\n try {\r\n const sort = yield select(makeSelectSortType());\r\n const coords = yield select(makeSelectCoords());\r\n const form = data.values;\r\n\r\n const qparams = {\r\n medicalTeamCode: form.team,\r\n medicalTeamTypeId: form.product,\r\n specialityId: form.specialist,\r\n provinceTownPostalCode: form.location,\r\n nameOrMedicalCenter: form.name,\r\n latitude: coords ? coords.latitude : undefined,\r\n longitude: coords ? coords.longitude : undefined,\r\n sort,\r\n postalCode: form.postalCode,\r\n town: form.town,\r\n province: form.province,\r\n southWestLatitude: form.southWestLatitude,\r\n southWestLongitude: form.southWestLongitude,\r\n northEastLatitude: form.northEastLatitude,\r\n northEastLongitude: form.northEastLongitude,\r\n };\r\n\r\n const response = yield call(getNet, {\r\n api: 'api/medicalteam/search',\r\n qparams,\r\n });\r\n yield put(setFormAction(form));\r\n yield put(setSearchResultAction(response));\r\n } catch (e) {\r\n put(setIsLoadingSearchAction(false));\r\n }\r\n}\r\n\r\nfunction* searchNewSort() {\r\n try {\r\n const sort = yield select(makeSelectSortType());\r\n const form = yield select(makeSelectForm());\r\n const coords = yield select(makeSelectCoords());\r\n const qparams = {\r\n medicalTeamCode: form.team,\r\n medicalTeamTypeId: form.product,\r\n specialityId: form.specialist,\r\n provinceTownPostalCode: form.location,\r\n nameOrMedicalCenter: form.name,\r\n latitude: coords ? coords.latitude : undefined,\r\n longitude: coords ? coords.longitude : undefined,\r\n sort,\r\n postalCode: form.postalCode,\r\n town: form.town,\r\n province: form.province,\r\n southWestLatitude: form.southWestLatitude,\r\n southWestLongitude: form.southWestLongitude,\r\n northEastLatitude: form.northEastLatitude,\r\n northEastLongitude: form.northEastLongitude,\r\n };\r\n\r\n const response = yield call(getNet, {\r\n api: 'api/medicalteam/search',\r\n qparams,\r\n });\r\n yield put(setFormAction(form));\r\n yield put(setSearchResultAction(response));\r\n } catch (e) {\r\n put(setIsLoadingSearchAction(false));\r\n }\r\n}\r\n\r\nfunction* loadMore() {\r\n try {\r\n const form = yield select(makeSelectForm());\r\n const sort = yield select(makeSelectSortType());\r\n const results = yield select(makeSelectSearchResult());\r\n const coords = yield select(makeSelectCoords());\r\n\r\n const qparams = {\r\n medicalTeamCode: form.team,\r\n medicalTeamTypeId: form.product,\r\n specialityId: form.specialist,\r\n provinceTownPostalCode: form.location,\r\n nameOrMedicalCenter: form.name,\r\n latitude: coords ? coords.latitude : undefined,\r\n longitude: coords ? coords.longitude : undefined,\r\n sort,\r\n offset: results.length,\r\n postalCode: form.postalCode,\r\n town: form.town,\r\n province: form.province,\r\n southWestLatitude: form.southWestLatitude,\r\n southWestLongitude: form.southWestLongitude,\r\n northEastLatitude: form.northEastLatitude,\r\n northEastLongitude: form.northEastLongitude,\r\n };\r\n\r\n const response = yield call(getNet, {\r\n api: 'api/medicalteam/search',\r\n qparams,\r\n });\r\n yield put(setMoreResultAction(response));\r\n } catch (e) {\r\n yield setIsLoadingMoreAction(false);\r\n }\r\n}\r\n\r\nexport function* defaultSaga() {\r\n yield takeLatest(INITIALIZE_FILTER_DATA_ACTION, initializeFilterData);\r\n yield takeLatest(SEARCH_ACTION, search);\r\n yield takeLatest(SET_SORT_ACTION, searchNewSort);\r\n yield takeLatest(LOAD_MORE_ACTION, loadMore);\r\n yield take(LOCATION_CHANGE);\r\n}\r\n\r\nexport default [defaultSaga];\r\n","export const SET_RESPONSE = 'app/OfficeSearcher/SET_RESPONSE';\r\nexport const LOAD_OFFICES = 'app/OfficeSearcher/LOAD_OFFICES';\r\nexport const FILTER_OFFICES = 'app/OfficeSearcher/FILTER_OFFICES';\r\nexport const SET_OFFICE_DISTANCE = 'app/OfficeSearcher/SET_OFFICE_DISTANCE';\r\nexport const SET_COMBO_OPTIONS = 'app/OfficeSearcher/SET_COMBO_OPTIONS';\r\nexport const SELECT_OFFICE = 'app/OfficeSearcher/SELECT_OFFICE';\r\nexport const TOGGLE_MAP = 'app/OfficeSearcher/TOGGLE_MAP';\r\nexport const SET_USER_COORDS = 'app/OfficeSearcher/SET_USER_COORDS';\r\n","import makeActionCreator from 'utils/makeActionCreator';\r\nimport {\r\n LOAD_OFFICES,\r\n SET_RESPONSE,\r\n FILTER_OFFICES,\r\n SET_OFFICE_DISTANCE,\r\n SET_COMBO_OPTIONS,\r\n SELECT_OFFICE,\r\n TOGGLE_MAP,\r\n SET_USER_COORDS,\r\n} from './constants';\r\n\r\nexport const loadOfficesAction = makeActionCreator(LOAD_OFFICES);\r\nexport const setResponseAction = makeActionCreator(SET_RESPONSE, 'response');\r\nexport const setOfficesByLocationAction = makeActionCreator(FILTER_OFFICES, 'offices');\r\nexport const setOfficeDistanceAction = makeActionCreator(SET_OFFICE_DISTANCE, 'offices');\r\nexport const setComboOptionsAction = makeActionCreator(SET_COMBO_OPTIONS, 'options');\r\nexport const setOfficeSelected = makeActionCreator(SELECT_OFFICE, 'officeSelected');\r\nexport const toggleMapMobile = makeActionCreator(TOGGLE_MAP);\r\nexport const setUserCoordinates = makeActionCreator(SET_USER_COORDS, 'coords');\r\n","import { call, put, takeLatest } from 'redux-saga/effects';\r\nimport { getNet } from 'utils/networking';\r\nimport { LOAD_OFFICES } from './constants';\r\nimport { setResponseAction } from './actions';\r\n\r\nfunction* loadOffices() {\r\n const response = yield call(getNet, { api: 'api/offices', id: '' });\r\n yield put(setResponseAction(response));\r\n}\r\n\r\nexport function* defaultSaga() {\r\n yield takeLatest(LOAD_OFFICES, loadOffices);\r\n}\r\n\r\n// All sagas to be loaded\r\nexport default [\r\n defaultSaga,\r\n];\r\n","/*\r\n *\r\n * NewsViewer constants\r\n *\r\n */\r\n\r\nexport const LOAD_NEWS = 'app/NewsViewer/LOAD_NEWS';\r\nexport const SET_NEWS = 'app/NewsViewer/SET_NEWS';\r\n","/*\r\n *\r\n * NewsViewer actions\r\n *\r\n */\r\nimport makeActionCreator from 'utils/makeActionCreator';\r\nimport {\r\n LOAD_NEWS,\r\n SET_NEWS,\r\n} from './constants';\r\n\r\nexport const loadNews = makeActionCreator(LOAD_NEWS);\r\nexport const setNews = makeActionCreator(SET_NEWS, 'news');\r\n","import { call, take, put, takeLatest, cancel } from 'redux-saga/effects';\r\nimport { LOCATION_CHANGE } from 'react-router-redux';\r\nimport { getNet } from 'utils/networking';\r\nimport { LOAD_NEWS } from './constants';\r\nimport { setNews } from './actions';\r\n\r\n\r\nexport function* loadNewsSaga() {\r\n const qparams = { limit: 3 };\r\n const response = yield call(getNet, { api: 'api/news', qparams });\r\n yield put(setNews(response.items));\r\n}\r\n\r\nexport function* defaultSaga() {\r\n const watchers = [\r\n yield takeLatest(LOAD_NEWS, loadNewsSaga),\r\n ];\r\n\r\n yield take(LOCATION_CHANGE);\r\n\r\n for (let i = 0; i < watchers.length; i += 1) {\r\n yield cancel(watchers[i]);\r\n }\r\n}\r\n\r\n// All sagas to be loaded\r\nexport default [\r\n defaultSaga,\r\n];\r\n","export const INITIALIZE_CONTRACT_ACTION = 'app/ContractingPage/INITIALIZE_CONTRACT_ACTION';\r\nexport const NEXT_STEP_ACTION = 'app/ContractingPage/NEXT_STEP_ACTION';\r\nexport const LAST_STEP_ACTION = 'app/ContractingPage/LAST_STEP_ACTION';\r\nexport const VALIDATE_CONTRACT_ACTION = 'app/ContractingPage/VALIDATE_CONTRACT_ACTION';\r\nexport const CONFIRMATE_CONTRACT_ACTION = 'app/ContractingPage/CONFIRMATE_CONTRACT_ACTION';\r\nexport const RENEW_PIN_ACTION = 'app/ContractingPage/RENEW_PIN_ACTION';\r\nexport const NEW_LOAD_INSUREDS = 'app/ContractingPage/NEW_LOAD_INSUREDS';\r\nexport const CANCEL_CONFIRMATION_ACTION = 'app/ContractingPage/CANCEL_CONFIRMATION_ACTION';\r\nexport const RECALCULATE_ACTION = 'app/ContractingPage/RECALCULATE_ACTION';\r\nexport const UPDATE_FEE_ACTION = 'app/ContractingPage/UPDATE_FEE_ACTION';\r\nexport const CANCEL_LOAD_ACTION = 'app/ContractingPage/CANCEL_LOAD_ACTION';\r\nexport const SET_POLICY_ACTION = 'app/ContractingPage/SET_POLICY_ACTION';\r\nexport const SET_POLICY_ERROR_ACTION = 'app/ContractingPage/SET_POLICY_ERROR_ACTION';\r\nexport const SEND_FILES_ACTION = 'app/ContractingPage/SEND_FILES_ACTION';\r\nexport const SEND_DRAFT_ACTION = 'app/ContractingPage/SEND_DRAFT_ACTION';\r\nexport const SET_CODE_ACTION = 'app/ContractingPage/SET_CODE_ACTION';\r\n\r\n","import makeActionCreator from 'utils/makeActionCreator';\r\nimport {\r\n INITIALIZE_CONTRACT_ACTION,\r\n NEXT_STEP_ACTION,\r\n LAST_STEP_ACTION,\r\n VALIDATE_CONTRACT_ACTION,\r\n CONFIRMATE_CONTRACT_ACTION,\r\n RENEW_PIN_ACTION,\r\n CANCEL_CONFIRMATION_ACTION,\r\n RECALCULATE_ACTION,\r\n UPDATE_FEE_ACTION,\r\n CANCEL_LOAD_ACTION,\r\n SET_POLICY_ACTION,\r\n SET_POLICY_ERROR_ACTION,\r\n SEND_FILES_ACTION,\r\n SEND_DRAFT_ACTION,\r\n SET_CODE_ACTION,\r\n} from './constants';\r\n\r\nexport const initializeContractAction = makeActionCreator(INITIALIZE_CONTRACT_ACTION, 'productConfig');\r\nexport const nextStepAction = makeActionCreator(NEXT_STEP_ACTION);\r\nexport const lastStepAction = makeActionCreator(LAST_STEP_ACTION);\r\nexport const validateContractAction = makeActionCreator(VALIDATE_CONTRACT_ACTION);\r\nexport const confirmateContractAction = makeActionCreator(CONFIRMATE_CONTRACT_ACTION);\r\nexport const renewPinAction = makeActionCreator(RENEW_PIN_ACTION, 'doc');\r\nexport const cancelConfirmationAction = makeActionCreator(CANCEL_CONFIRMATION_ACTION);\r\nexport const recalculateAction = makeActionCreator(RECALCULATE_ACTION, 'productConfig');\r\nexport const updateFeeAction = makeActionCreator(UPDATE_FEE_ACTION, 'newFee');\r\nexport const cancelLoadAction = makeActionCreator(CANCEL_LOAD_ACTION);\r\nexport const setPolicyAction = makeActionCreator(SET_POLICY_ACTION, 'id');\r\nexport const setPolicyErrorAction = makeActionCreator(SET_POLICY_ERROR_ACTION);\r\nexport const sendFilesAction = makeActionCreator(SEND_FILES_ACTION);\r\nexport const sendContractDraftAction = makeActionCreator(SEND_DRAFT_ACTION, 'email', 'onSend');\r\nexport const setCodeAction = makeActionCreator(SET_CODE_ACTION, 'code');\r\n\r\n","export const INITIALIZE_ACTION = 'app/DocAndSignatureView/INITIALIZE_ACTION';\r\nexport const SHOW_MODAL_ACTION = 'app/DocAndSignatureView/SHOW_MODAL_ACTION';\r\nexport const ACCEPT_CONDITIONS_ACTION = 'app/DocAndSignatureView/ACCEPT_CONDITIONS_ACTION';\r\nexport const SET_CODE_ACTION = 'app/DocAndSignatureView/SET_CODE_ACTION';\r\nexport const IS_VALID_CONTRACT_ACTION = 'app/DocAndSignatureView/IS_VALID_CONTRACT_ACTION';\r\nexport const RENEWED_PIN_ACTION = 'app/DocAndSignatureView/RENEWED_PIN_ACTION';\r\nexport const IS_PDF_RENDER = 'app/DocAndSignatureView/IS_PDF_RENDER';\r\nexport const CANCEL_UPLOAD_ACTION = 'app/DocAndSignatureView/CANCEL_UPLOAD_ACTION';\r\n","import makeActionCreator from 'utils/makeActionCreator';\r\nimport {\r\n INITIALIZE_ACTION,\r\n SHOW_MODAL_ACTION,\r\n ACCEPT_CONDITIONS_ACTION,\r\n SET_CODE_ACTION,\r\n IS_VALID_CONTRACT_ACTION,\r\n RENEWED_PIN_ACTION,\r\n IS_PDF_RENDER,\r\n CANCEL_UPLOAD_ACTION,\r\n} from './constants';\r\n\r\nexport const initializeAction = makeActionCreator(INITIALIZE_ACTION);\r\nexport const showModalAction = makeActionCreator(SHOW_MODAL_ACTION, 'value');\r\nexport const acceptConditionsAction = makeActionCreator(ACCEPT_CONDITIONS_ACTION);\r\nexport const setCodeAction = makeActionCreator(SET_CODE_ACTION, 'nif', 'code');\r\nexport const isValidContractAction = makeActionCreator(IS_VALID_CONTRACT_ACTION, 'idContract', 'documents');\r\nexport const renewedPinAction = makeActionCreator(RENEWED_PIN_ACTION);\r\nexport const isPdfRenderAction = makeActionCreator(IS_PDF_RENDER);\r\nexport const cancelUploadAction = makeActionCreator(CANCEL_UPLOAD_ACTION);\r\n","import { createSelector } from 'reselect';\r\n\r\nconst selectDocAndSignatureViewDomain = () => state => state.get('docAndSignatureView').toJS();\r\n\r\nconst makeSelectShowModal = () => createSelector(\r\n selectDocAndSignatureViewDomain(),\r\n substate => substate.showModal,\r\n);\r\n\r\nconst makeSelectAcceptedConditions = () => createSelector(\r\n selectDocAndSignatureViewDomain(),\r\n substate => substate.acceptedConditions,\r\n);\r\n\r\nconst makeSelectCodes = () => createSelector(\r\n selectDocAndSignatureViewDomain(),\r\n substate => substate.codes,\r\n);\r\n\r\nconst makeSelectPinIsLoading = () => createSelector(\r\n selectDocAndSignatureViewDomain(),\r\n substate => substate.pinIsLoading,\r\n);\r\n\r\nconst makeSelectIdContract = () => createSelector(\r\n selectDocAndSignatureViewDomain(),\r\n substate => substate.idContract,\r\n);\r\n\r\nconst makeSelectSendedPin = () => createSelector(\r\n selectDocAndSignatureViewDomain(),\r\n substate => substate.sendedPin,\r\n);\r\n\r\nconst makeSelectPinIsSending = () => createSelector(\r\n selectDocAndSignatureViewDomain(),\r\n substate => substate.pinIsSending,\r\n);\r\n\r\nconst makeSelectDocuments = () => createSelector(\r\n selectDocAndSignatureViewDomain(),\r\n substate => substate.documents,\r\n);\r\n\r\nconst makeSelectButtonConditions = () => createSelector(\r\n selectDocAndSignatureViewDomain(),\r\n (substate) => substate.buttonConditions\r\n);\r\n\r\nexport {\r\n makeSelectShowModal,\r\n makeSelectAcceptedConditions,\r\n makeSelectCodes,\r\n makeSelectPinIsLoading,\r\n makeSelectIdContract,\r\n makeSelectSendedPin,\r\n makeSelectPinIsSending,\r\n makeSelectDocuments,\r\n makeSelectButtonConditions,\r\n};\r\n","import { createSelector } from 'reselect';\r\n\r\nconst selectBankStatementUploaderDomain = () => state =>\r\n state.get('bankStatementUploader').toJS();\r\n\r\nexport const makeSelectBankStatement = () =>\r\n createSelector(selectBankStatementUploaderDomain(), substate => substate.file);\r\n\r\nexport default makeSelectBankStatement;\r\n","import { createSelector } from 'reselect';\r\n\r\nconst selectNifUploaderDomain = () => state =>\r\n state.get('nifUploader').toJS();\r\n\r\nconst makeSelectFilesUploaded = () =>\r\n createSelector(selectNifUploaderDomain(), substate => substate.files);\r\n\r\nconst makeSelectExpirationDates = () =>\r\n createSelector(\r\n selectNifUploaderDomain(),\r\n substate => substate.expirationDates,\r\n );\r\n\r\nconst makeSelectExpirationDatesErrors = () =>\r\n createSelector(\r\n selectNifUploaderDomain(),\r\n substate => substate.expirationDatesErrors,\r\n );\r\n\r\nconst makeSelectDocumentsId = () =>\r\n createSelector(selectNifUploaderDomain(), substate => substate.documentsId);\r\n\r\nexport {\r\n makeSelectFilesUploaded,\r\n makeSelectExpirationDatesErrors,\r\n makeSelectExpirationDates,\r\n makeSelectDocumentsId,\r\n};\r\n","export const SET_FILES_FROM_DRAFT_ACTION = 'app/FilesUploader/SET_FILES_FROM_DRAFT_ACTION';\r\nexport const SET_FILES_SENDED_ACTION = 'app/FilesUploader/SET_FILES_SENDED_ACTION';\r\n","import makeActionCreator from 'utils/makeActionCreator';\r\n\r\nimport {\r\n SET_FILES_FROM_DRAFT_ACTION,\r\n SET_FILES_SENDED_ACTION,\r\n} from './constants';\r\n\r\nexport const setFilesFromDraftAction = makeActionCreator(SET_FILES_FROM_DRAFT_ACTION, 'files');\r\nexport const setFilesSendedAction = makeActionCreator(SET_FILES_SENDED_ACTION, 'files');\r\n","import moment from 'moment';\r\n\r\nexport const constructDocs = ({\r\n files,\r\n expirationDates,\r\n documentsId,\r\n bankStatement,\r\n}) =>\r\n new Promise((resolve, reject) => {\r\n try {\r\n let documents = []; //eslint-disable-line\r\n let totalBase64Docs = 0;\r\n\r\n if (files) {\r\n const nifs = Object.keys(files);\r\n\r\n for (let i = 0; i < nifs.length; i += 1) {\r\n const document = {\r\n nif: nifs[i],\r\n expiration: expirationDates[nifs[i]]\r\n ? moment.utc(expirationDates[nifs[i]], 'DD/MM/YYYY').toDate()\r\n : undefined,\r\n type: 10,\r\n base64Docs: files[nifs[i]][0].fromDraft ? [] : files[nifs[i]],\r\n documentId: documentsId[nifs[i]],\r\n };\r\n documents.push(document);\r\n totalBase64Docs += document.base64Docs.length;\r\n }\r\n }\r\n\r\n if (bankStatement) {\r\n const documentBank = {\r\n type: 2020,\r\n base64Docs: [bankStatement],\r\n };\r\n documents.push(documentBank);\r\n totalBase64Docs += 1;\r\n }\r\n\r\n if (totalBase64Docs === 0) {\r\n resolve(documents);\r\n }\r\n\r\n let readedBase64Docs = 1;\r\n for (let j = 0; j < documents.length; j += 1) {\r\n for (let i = 0; i < documents[j].base64Docs.length; i += 1) {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(documents[j].base64Docs[i]);\r\n reader.onload = () => {\r\n documents[j].base64Docs[i] = reader.result.split(',')[1];\r\n if (readedBase64Docs === totalBase64Docs) {\r\n resolve(documents);\r\n } else {\r\n readedBase64Docs += 1;\r\n }\r\n };\r\n reader.onerror = error => {\r\n console.error(error);\r\n reject(error);\r\n };\r\n }\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n reject(error);\r\n }\r\n });\r\n","import { call, put, select, takeLatest } from 'redux-saga/effects';\r\nimport { postNet } from 'utils/networking';\r\nimport { SEND_FILES_ACTION } from 'containers/ContractingPage/constants';\r\nimport { renewPinAction } from 'containers/ContractingPage/actions';\r\nimport { cancelUploadAction } from 'containers/ContractingPage/DocAndSignatureView/actions';\r\nimport { makeSelectIdContract } from 'containers/ContractingPage/DocAndSignatureView/selectors';\r\nimport { makeSelectBankStatement } from './BankStatementUploader/selectors';\r\nimport {\r\n makeSelectFilesUploaded,\r\n makeSelectDocumentsId,\r\n makeSelectExpirationDates,\r\n} from './NifUploader/selectors';\r\nimport { setFilesSendedAction } from './actions';\r\nimport { constructDocs } from './functions';\r\n\r\nfunction* sendDocuments(documents) {\r\n const contract = yield select(makeSelectIdContract());\r\n const requestModel = {\r\n idContract: contract,\r\n docs: documents,\r\n };\r\n\r\n const response = yield call(postNet, {\r\n api: 'api/contract/upload',\r\n body: requestModel,\r\n });\r\n return response;\r\n}\r\n\r\nfunction* getNifs() {\r\n const files = yield select(makeSelectFilesUploaded());\r\n const documentsId = yield select(makeSelectDocumentsId());\r\n const expirationDates = yield select(makeSelectExpirationDates());\r\n return yield call(constructDocs, {\r\n files,\r\n expirationDates,\r\n documentsId,\r\n });\r\n}\r\n\r\nfunction* getBankStatement() {\r\n const bankStatement = yield select(makeSelectBankStatement());\r\n return yield call(constructDocs, {\r\n bankStatement,\r\n });\r\n}\r\n\r\nfunction* getAllFiles() {\r\n const files = yield select(makeSelectFilesUploaded());\r\n const documentsId = yield select(makeSelectDocumentsId());\r\n const expirationDates = yield select(makeSelectExpirationDates());\r\n const bankStatement = yield select(makeSelectBankStatement());\r\n return yield call(constructDocs, {\r\n files,\r\n expirationDates,\r\n documentsId,\r\n bankStatement,\r\n });\r\n}\r\n\r\nfunction* parseResponse(response) {\r\n if (response.status === 1) {\r\n yield put(setFilesSendedAction(response.documents));\r\n return true;\r\n }\r\n alert(response.message);\r\n yield put(cancelUploadAction());\r\n return false;\r\n}\r\n\r\nexport function* sendNifs() {\r\n try {\r\n const documents = yield call(getNifs);\r\n const response = yield call(sendDocuments, documents);\r\n yield call(parseResponse, response);\r\n } catch (error) {\r\n console.error(error);\r\n yield put(cancelUploadAction());\r\n }\r\n}\r\n\r\nexport function* sendBankStatement() {\r\n try {\r\n const documents = yield call(getBankStatement);\r\n const response = yield call(sendDocuments, documents);\r\n yield call(parseResponse, response);\r\n } catch (error) {\r\n console.error(error);\r\n yield put(cancelUploadAction());\r\n }\r\n}\r\n\r\nexport function* sendFiles() {\r\n try {\r\n const documents = yield call(getAllFiles);\r\n const response = yield call(sendDocuments, documents);\r\n return yield call(parseResponse, response);\r\n } catch (error) {\r\n console.error(error);\r\n yield put(cancelUploadAction());\r\n return false;\r\n }\r\n}\r\n\r\nfunction* sendFilesAndRenewPin() {\r\n const responseOk = yield call(sendFiles);\r\n if (responseOk) {\r\n yield put(renewPinAction());\r\n }\r\n}\r\n\r\nexport function* defaultSaga() {\r\n yield takeLatest(SEND_FILES_ACTION, sendFilesAndRenewPin);\r\n}\r\n","export const SHOW_RECOVERY_CONTRACT_MODAL_ACTION = 'app/RecoveryContractModal/SHOW_RECOVERY_CONTRACT_MODAL_ACTION';\r\nexport const HIDE_RECOVERY_CONTRACT_MODAL_ACTION = 'app/RecoveryContractModal/HIDE_RECOVERY_CONTRACT_MODAL_ACTION';\r\nexport const RECOVERY_ERROR_ACTION = 'app/RecoveryContractModal/RECOVERY_ERROR_ACTION';\r\nexport const RECOVERY_REQUIRES_NIF_ACTION = 'app/RecoveryContractModal/RECOVERY_REQUIRES_NIF_ACTION';\r\nexport const PRELOAD_DRAFT_ACTION = 'app/RecoveryContractModal/PRELOAD_DRAFT_ACTION';\r\nexport const LOAD_DRAFT_ACTION = 'app/RecoveryContractModal/LOAD_DRAFT_ACTION';\r\nexport const SET_LOADED_DRAFT_ACTION = 'app/RecoveryContractModal/SET_LOADED_DRAFT_ACTION';\r\n\r\n","import makeActionCreator from 'utils/makeActionCreator';\r\nimport {\r\n SHOW_RECOVERY_CONTRACT_MODAL_ACTION,\r\n HIDE_RECOVERY_CONTRACT_MODAL_ACTION,\r\n RECOVERY_ERROR_ACTION,\r\n RECOVERY_REQUIRES_NIF_ACTION,\r\n LOAD_DRAFT_ACTION,\r\n PRELOAD_DRAFT_ACTION,\r\n SET_LOADED_DRAFT_ACTION,\r\n} from './constants';\r\n\r\nexport const showRecoveryContractModalAction = makeActionCreator(\r\n SHOW_RECOVERY_CONTRACT_MODAL_ACTION,\r\n);\r\nexport const hideRecoveryContractModalAction = makeActionCreator(\r\n HIDE_RECOVERY_CONTRACT_MODAL_ACTION,\r\n);\r\nexport const recoveryErrorAction = makeActionCreator(\r\n RECOVERY_ERROR_ACTION,\r\n 'error',\r\n);\r\nexport const recoveryRequiresNifAction = makeActionCreator(\r\n RECOVERY_REQUIRES_NIF_ACTION,\r\n 'qparams',\r\n);\r\n\r\nexport const loadContractDraftAction = makeActionCreator(\r\n LOAD_DRAFT_ACTION,\r\n 'qparams',\r\n);\r\n\r\nexport const preLoadContractDraftAction = makeActionCreator(\r\n PRELOAD_DRAFT_ACTION,\r\n 'qparams',\r\n);\r\n\r\nexport const setLoadedDraftAction = makeActionCreator(\r\n SET_LOADED_DRAFT_ACTION,\r\n 'contract',\r\n 'code',\r\n 'key',\r\n);\r\n","import { call, put, takeLatest } from 'redux-saga/effects';\r\nimport find from 'lodash/find';\r\nimport config from 'config.json';\r\nimport findKey from 'lodash/findKey';\r\nimport { push } from 'react-router-redux';\r\nimport { getNet } from 'utils/networking';\r\nimport { browserHistory } from 'react-router';\r\nimport { setFilesFromDraftAction } from 'containers/FilesUploader/actions';\r\nimport { recalculateAction } from 'containers/ContractingPage/actions';\r\nimport { LOAD_DRAFT_ACTION, PRELOAD_DRAFT_ACTION } from './constants';\r\nimport {\r\n recoveryErrorAction,\r\n recoveryRequiresNifAction,\r\n setLoadedDraftAction,\r\n} from './actions';\r\n\r\nconst nifIsRequired = response =>\r\n response.errors &&\r\n find(response.errors, { description: 'isRequired', path: 'nif' });\r\n\r\nconst agentIsNotAllowed = response =>\r\n response.errors &&\r\n find(response.errors, {\r\n path: 'agentNotAllowed',\r\n });\r\n\r\nfunction* loadedDraft({ response, code, hashedEmail }) {\r\n yield put(setLoadedDraftAction(response, code, hashedEmail));\r\n if (response.docs) {\r\n yield put(setFilesFromDraftAction(response.docs));\r\n }\r\n const product = findKey(config.products, {\r\n id: response.petitions[0].product.toString(),\r\n });\r\n yield put(\r\n push(`/contratar/${product}${browserHistory.getCurrentLocation().search}`),\r\n );\r\n yield put(recalculateAction(config.products[product]));\r\n}\r\n\r\nfunction* callError() {\r\n yield put(\r\n recoveryErrorAction([\r\n {\r\n description: 'No se ha podido recuperar la solicitud',\r\n },\r\n ]),\r\n );\r\n yield put(push(browserHistory.getCurrentLocation().pathname));\r\n}\r\n\r\nfunction* showError(error) {\r\n yield put(\r\n recoveryErrorAction([\r\n {\r\n description: error,\r\n },\r\n ]),\r\n );\r\n yield put(push(browserHistory.getCurrentLocation().pathname));\r\n}\r\n\r\nfunction* draftNotFound() {\r\n yield call(\r\n showError,\r\n 'No se ha encontrado ningún contrato asociado al email indicado.',\r\n );\r\n}\r\n\r\nfunction* agentNotAllowed(data) {\r\n yield call(\r\n showError,\r\n `Para continuar con el proceso de contratación te recomendamos que contactes con ${\r\n data.name\r\n } en el ${data.phone}`,\r\n );\r\n}\r\n\r\nfunction* preLoadDraft(action) {\r\n try {\r\n const response = yield call(getNet, {\r\n api: 'api/contract/load',\r\n qparams: action.qparams,\r\n });\r\n\r\n if (response) {\r\n const agentNotAllowedResult = agentIsNotAllowed(response);\r\n if (nifIsRequired(response)) {\r\n yield put(recoveryRequiresNifAction(action.qparams));\r\n } else if (agentNotAllowedResult) {\r\n yield call(agentNotAllowed, agentNotAllowedResult.description);\r\n } else {\r\n yield call(loadedDraft, {\r\n response,\r\n code: action.qparams.code,\r\n hashedEmail: action.qparams.key,\r\n });\r\n }\r\n } else {\r\n yield call(draftNotFound);\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n yield call(callError);\r\n }\r\n}\r\n\r\nfunction* loadDraft(action) {\r\n try {\r\n const response = yield call(getNet, {\r\n api: 'api/contract/load',\r\n qparams: action.qparams,\r\n });\r\n if (response) {\r\n if (response.errors) {\r\n yield put(\r\n recoveryErrorAction([\r\n {\r\n description:\r\n 'No se ha encontrado ningún contrato asociado al DNI/NIE indicado.',\r\n },\r\n ]),\r\n );\r\n yield put(push(browserHistory.getCurrentLocation().pathname));\r\n } else {\r\n yield call(loadedDraft, {\r\n response,\r\n code: action.qparams.code,\r\n hashedEmail: action.qparams.hashedEmail,\r\n });\r\n }\r\n } else {\r\n yield call(draftNotFound);\r\n }\r\n } catch (error) {\r\n yield call(callError, error);\r\n }\r\n}\r\n\r\nfunction* defaultSaga() {\r\n yield takeLatest(LOAD_DRAFT_ACTION, loadDraft);\r\n yield takeLatest(PRELOAD_DRAFT_ACTION, preLoadDraft);\r\n}\r\n\r\nexport default defaultSaga;\r\n","import { createSelector } from 'reselect';\r\n\r\nconst selectCalculatorPageDomain = () => (state) => state.get('calculatorPage') ? state.get('calculatorPage').toJS() : {};\r\n\r\nexport const makeSelectForm = () => createSelector(\r\n selectCalculatorPageDomain(),\r\n (substate) => substate.form,\r\n);\r\n\r\n","import moment from 'moment';\r\nimport contractingConfig from 'config/contracting.config.json';\r\nimport find from 'lodash/find';\r\n\r\nconst getJobDescription = (productConfig, jodCode) => {\r\n if (contractingConfig.occupations) {\r\n for (let i = 0; i < contractingConfig.occupations.length; i += 1) {\r\n if (contractingConfig.occupations[i].value === jodCode) {\r\n return contractingConfig.occupations[i].name;\r\n }\r\n }\r\n return jodCode;\r\n }\r\n};\r\n\r\nconst getModality = (productConfig, form, isId) => {\r\n if (productConfig.modalitiesInfo) {\r\n const modalitiesGroup = productConfig.modalitiesInfo.modalitiesGroup;\r\n for (let i = 0; i < modalitiesGroup.length; i += 1) {\r\n for (let j = 0; j < modalitiesGroup[i].modalities.length; j += 1) {\r\n const modality = modalitiesGroup[i].modalities[j];\r\n if (\r\n modality.modality === form.selectedModality ||\r\n modality.modalityName === form.selectedModality\r\n ) {\r\n return isId\r\n ? modalitiesGroup[i].modalities[j].modality\r\n : modalitiesGroup[i].modalities[j].modalityName;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nclass PersonData {\r\n constructor(data) {\r\n let relationship = data.relationship;\r\n if (relationship === 'Es el tomador') {\r\n relationship = '0';\r\n }\r\n this.data = {\r\n nif: data.nif,\r\n name: data.name,\r\n surname: data.lastName,\r\n birthDate: moment.utc(data.birthDate, 'DD/MM/YYYY').toDate(),\r\n gender: data.genre,\r\n relationship,\r\n };\r\n this.nationalityCode = data.nationality;\r\n const nationality = find(contractingConfig.nationalities, {\r\n value: Number.parseInt(data.nationality),\r\n });\r\n this.nationalityDescription = nationality ? nationality.name : null;\r\n\r\n this.address = {\r\n address: data.direction,\r\n cp: data.postalCode,\r\n city: data.town,\r\n state: data.province,\r\n country: find(contractingConfig.countries, {\r\n value: Number.parseInt(data.country),\r\n }).name,\r\n countryCode: data.country,\r\n };\r\n this.contact = {\r\n phone1: data.mobilePhone,\r\n phone2: data.phone,\r\n email: data.email,\r\n };\r\n this.jobDescription = {\r\n cno: data.profession,\r\n cnoDescription: getJobDescription(data.productConfig, data.profession),\r\n };\r\n }\r\n}\r\n\r\nclass Insured extends PersonData {\r\n constructor(data) {\r\n super(data);\r\n this.isPolicyHolder = data.relationship === 'Es el tomador';\r\n this.healthState = {\r\n weight: data.weight,\r\n height: data.height,\r\n comments: data.healthComments,\r\n pathologies: {\r\n ...data.healthCondition,\r\n },\r\n };\r\n this.coverages = {\r\n Modalidad: data.modality ? data.modality.toString() : null,\r\n ImportePrimeraPrima: data.ImportePrimeraPrima,\r\n ImporteAsegurado: data.ImporteAsegurado,\r\n ImporteSubsidio: data.ImporteSubsidio,\r\n Beneficiarios: data.Beneficiarios,\r\n ...data.coverages,\r\n };\r\n }\r\n}\r\n\r\nclass HomeInfo {\r\n constructor(data) {\r\n this.objectInsured = {\r\n homeDescrip: {\r\n TipoVivienda: 'Principal',\r\n EsUnifamiliar: data.form.singleFamily === '1' ? 'Si' : 'No',\r\n EsDespoblada: 'No',\r\n AñoConstruccion: data.homeInfo.constructionYear,\r\n MetrosConstruidos: data.form.squareMeters,\r\n PuertasBlindadas: data.homeInfo.armouredDoors ? 'Si' : 'No',\r\n RejasVentanas: data.homeInfo.grates ? 'Si' : 'No',\r\n Contraventanas: data.homeInfo.shutters ? 'Si' : 'No',\r\n AlarmaConectada: data.homeInfo.alarm ? 'Si' : 'No',\r\n VigilanciaPermanente: data.homeInfo.vigilance ? 'Si' : 'No',\r\n },\r\n homeAddress: {\r\n CP: data.homeInfo.postalCode,\r\n Address: `${data.homeInfo.streetType} ${data.homeInfo.direction}`,\r\n City: data.homeInfo.town,\r\n State: data.homeInfo.province,\r\n Country: data.homeInfo.country,\r\n },\r\n };\r\n this.guaranties = {\r\n ContinenteRiesgo: data.form.risk ? 'Si' : 'No',\r\n Continente: data.form.continent\r\n ? (Number(data.form.continent) * 100).toString()\r\n : '0',\r\n Contenido: data.form.content\r\n ? (Number(data.form.content) * 100).toString()\r\n : '0',\r\n JoyasValor: data.homeInfo.lowJewelry\r\n ? (Number(data.homeInfo.lowJewelry) * 100).toString()\r\n : '0',\r\n ObjetosValor: data.homeInfo.lowObjects\r\n ? (Number(data.homeInfo.lowObjects) * 100).toString()\r\n : '0',\r\n JoyasDentroValor: data.homeInfo.highInJewelry\r\n ? (Number(data.homeInfo.highInJewelry) * 100).toString()\r\n : '0',\r\n JoyasFueraValor: data.homeInfo.highOutJewelry\r\n ? (Number(data.homeInfo.highOutJewelry) * 100).toString()\r\n : '0',\r\n ObjetosDentroValor: data.homeInfo.highInObjects\r\n ? (Number(data.homeInfo.highInObjects) * 100).toString()\r\n : '0',\r\n ObjetosFueraValor: data.homeInfo.highOutObjects\r\n ? (Number(data.homeInfo.highOutObjects) * 100).toString()\r\n : '0',\r\n };\r\n this.mortage = {\r\n FinancialEntity: data.homeInfo.entity || '',\r\n MortageNumber: data.homeInfo.entityNumber || '',\r\n MortageNumberSecond: data.homeInfo.entity2 || '',\r\n SecondFinancialEntity: data.homeInfo.entityNumber2 || '',\r\n };\r\n const date = moment().add(1, 'M');\r\n const momentDate = `01/${date.month() + 1}/${date.year()}`;\r\n this.effect = {\r\n date: moment.utc(momentDate, 'DD/MM/YYYY').toDate(),\r\n };\r\n }\r\n}\r\n\r\nclass Petitions {\r\n constructor(data) {\r\n // TODO: Refactorizar de algún modo los dos siguientes campos.\r\n const importe =\r\n data.productConfig.calculator &&\r\n data.productConfig.calculator.type === 'selector'\r\n ? (\r\n data.form[data.productConfig.calculator.form.formName] *\r\n 100 *\r\n 12\r\n ).toString()\r\n : null;\r\n const importeSubsidio =\r\n data.productConfig.calculator &&\r\n data.productConfig.calculator.type === 'selector'\r\n ? (\r\n data.form[data.productConfig.calculator.form.formName] * 100\r\n ).toString()\r\n : null;\r\n\r\n // TODO: Cambiar esto para coger el campo del modelo de contratación que se debe poner en el JSON\r\n let modality = data.form.selectedModality || data.productConfig.id;\r\n if (data.productConfig.id === 'CPP') {\r\n modality = 'No profesional';\r\n }\r\n if (data.productConfig.id === '5') {\r\n // Hogar\r\n modality = modality === '5' ? 'Plus' : 'DP';\r\n }\r\n\r\n this.id = data.id;\r\n this.product = data.productConfig.id;\r\n // this.type = data.contract.type;\r\n this.mode = getModality(data.productConfig, data.form, false);\r\n this.type = data.form.saludPlus ? data.form.saludPlus : 0;\r\n this.coverageRequestData = {\r\n saludPlus: data.form.saludPlus ? 'Si' : '',\r\n };\r\n\r\n this.infoLopd = find(data.policies, { id: 'infoLopd' })\r\n ? find(data.policies, { id: 'infoLopd' }).value\r\n : false;\r\n this.infoCesion = find(data.policies, { id: 'infoCesion' })\r\n ? find(data.policies, { id: 'infoCesion' }).value\r\n : false;\r\n\r\n this.paymentDetails = {\r\n Iban: `ES${\r\n data.paymentInfo.account\r\n ? data.paymentInfo.account.replace(/\\s/g, '')\r\n : ''\r\n }`,\r\n Frequency: data.paymentInfo.paymentPeriod,\r\n };\r\n this.insureds = [];\r\n for (let i = 0; i < data.insureds.length; i += 1) {\r\n const coverages = {};\r\n if (\r\n data.productConfig.contract &&\r\n data.productConfig.contract.coverages\r\n ) {\r\n for (\r\n let j = 0;\r\n j < data.productConfig.contract.coverages.length;\r\n j += 1\r\n ) {\r\n const covFormName = data.productConfig.contract.coverages[j].formName;\r\n const covData = data.insureds[i].data[covFormName];\r\n coverages[covFormName] = covData ? 'Si' : 'No';\r\n }\r\n }\r\n const healthConditionData = data.insureds[i].healthConditionData;\r\n const keys = Object.keys(healthConditionData);\r\n const newHeathConditionData = [];\r\n let dataComments = '';\r\n for (let j = 0; j < keys.length; j += 1) {\r\n if (keys[j] !== 'comments') {\r\n newHeathConditionData[keys[j]] =\r\n healthConditionData[keys[j]] === 'true';\r\n } else {\r\n dataComments = healthConditionData[keys[j]];\r\n }\r\n }\r\n\r\n this.insureds.push(\r\n new Insured({\r\n ...data.insureds[i].data,\r\n\r\n healthCondition: newHeathConditionData,\r\n healthComments: dataComments,\r\n modality,\r\n ImportePrimeraPrima: importe,\r\n ImporteSubsidio: importeSubsidio,\r\n ImporteAsegurado: data.form.capital,\r\n Beneficiarios: data.benef ? data.benef.beneficiaries : undefined,\r\n coverages,\r\n }),\r\n );\r\n }\r\n this.comercialDetails = {\r\n id: '',\r\n };\r\n\r\n this.homeInfo = new HomeInfo(data);\r\n // TODO: Se queda deshabilitado para cuando se pueda configurar este campo por producto\r\n // this.effectDate = moment.utc(data.paymentInfo.policyStart, 'DD/MM/YYYY').toDate();\r\n const effectDate = data.paymentInfo.policyStart\r\n ? moment.utc(data.paymentInfo.policyStart, 'DD/MM/YYYY').toDate()\r\n : undefined;\r\n const date = moment().add(1, 'M');\r\n const momentDate = `01/${date.month() + 1}/${date.year()}`;\r\n this.effectDate =\r\n effectDate || moment.utc(momentDate, 'DD/MM/YYYY').toDate();\r\n }\r\n}\r\n\r\nexport default class Contract {\r\n constructor(data) {\r\n this.PolicyHolder = new PersonData(data.policyHolder);\r\n this.Petitions = [];\r\n this.Petitions.push(\r\n new Petitions({\r\n id: data.id,\r\n paymentInfo: data.paymentInfo,\r\n productConfig: data.productConfig,\r\n form: data.form,\r\n insureds: data.insureds,\r\n homeInfo: data.homeInfo,\r\n policies: data.policies,\r\n benef: data.beneficiaries,\r\n }),\r\n );\r\n }\r\n}\r\n","import contractingConfig from 'config/contracting.config.json';\r\nimport includes from 'lodash/includes';\r\nimport { getObjectPropertyByPath } from 'utils/functions';\r\nimport find from 'lodash/find';\r\n\r\nconst getInformativeNoteLinkLabel = url => (` y la nota informativa previa.`);\r\n\r\nconst getGenericInformativeNoteUrl = (productConfig, form) => {\r\n const documentsInModal = productConfig.productInfo.coverages.docModals;\r\n const documentsInLink = productConfig.productInfo.coverages.docLinks;\r\n\r\n if (documentsInLink) {\r\n for (let i = 0; i < documentsInLink.length; i += 1) {\r\n if (includes(documentsInLink[i].text, 'información legal')) {\r\n return documentsInLink[i].url;\r\n }\r\n }\r\n }\r\n if (documentsInModal) {\r\n const documentNames = [];\r\n let informativeNotesInModal = [];\r\n\r\n for (let i = 0; i < documentsInModal.length; i += 1) {\r\n if (includes(documentsInModal[i].title, 'Notas informativas')) {\r\n informativeNotesInModal = documentsInModal[i].files;\r\n }\r\n }\r\n for (let j = 0; j < informativeNotesInModal.length; j += 1) {\r\n documentNames.push(informativeNotesInModal[j].name);\r\n }\r\n const name = documentNames.find(a =>\r\n a.includes(form.selectedModality.split(' ')[0]),\r\n );\r\n if (name) {\r\n const doc = find(informativeNotesInModal, { name });\r\n return doc.url;\r\n }\r\n }\r\n return '';\r\n};\r\n\r\nexport const getInformativeNoteUrl = (productConfig, form) => {\r\n const addons = getObjectPropertyByPath(productConfig, 'modalitiesInfo.addons');\r\n\r\n // If products has addons then the docs are in the contracting.config.json\r\n // else the docs are in the coverages docs\r\n if (addons) {\r\n for (let i = 0; i < addons.length; i += 1) {\r\n const addon = addons[i];\r\n if (form[addon.id]) {\r\n const document = find(contractingConfig.documents, { name: `${form.selectedModality.split(' ')[0]} ${addon.id}` });\r\n return document.url;\r\n }\r\n return getGenericInformativeNoteUrl(productConfig, form);\r\n }\r\n } else {\r\n return getGenericInformativeNoteUrl(productConfig, form);\r\n }\r\n};\r\n\r\nexport default function getLabelWithDocs({\r\n id,\r\n label,\r\n productConfig,\r\n privacyDpsg,\r\n privacyDp,\r\n prevContractingDpsg,\r\n prevContractingDp,\r\n form,\r\n}) {\r\n let formatedLabel = label;\r\n if (id === 'confirmation' && productConfig) {\r\n formatedLabel += ` He leído y entendido la política de privacidad`;\r\n formatedLabel += `, la información previa a la contratación`;\r\n const informativeNoteUrl = getInformativeNoteUrl(productConfig, form, formatedLabel);\r\n if (informativeNoteUrl) {\r\n return formatedLabel + getInformativeNoteLinkLabel(informativeNoteUrl);\r\n }\r\n return formatedLabel;\r\n }\r\n\r\n return formatedLabel;\r\n}\r\n","import { createSelector } from 'reselect';\r\n\r\nconst selectPolicyHolderViewDomain = () => (state) => state.get('policyHolderView').toJS();\r\n\r\nconst makeSelectPolicyHolderData = () => createSelector(\r\n selectPolicyHolderViewDomain(),\r\n (substate) => substate.data\r\n);\r\n\r\nconst makeSelectPolicyHolderFromInsured = () => createSelector(\r\n selectPolicyHolderViewDomain(),\r\n (substate) => substate.isPolicyHolderAnInsured\r\n);\r\n\r\nconst makeSelectIsEditing = () => createSelector(\r\n selectPolicyHolderViewDomain(),\r\n (substate) => substate.isEditing\r\n);\r\n\r\nconst makeSelectPaymentInfo = () => createSelector(\r\n selectPolicyHolderViewDomain(),\r\n (substate) => substate.paymentInfo\r\n);\r\n\r\nconst makeSelectIsEditingPaymentInfo = () => createSelector(\r\n selectPolicyHolderViewDomain(),\r\n (substate) => substate.isEditingPaymentInfo\r\n);\r\n\r\nconst makeSelectBeneficiaries = () => createSelector(\r\n selectPolicyHolderViewDomain(),\r\n (substate) => substate.beneficiariesInfo\r\n);\r\n\r\nconst makeSelectIsEditingBeneficiaries = () => createSelector(\r\n selectPolicyHolderViewDomain(),\r\n (substate) => substate.isEditingBeneficiaries\r\n);\r\n\r\nexport {\r\n makeSelectPolicyHolderData,\r\n makeSelectPolicyHolderFromInsured,\r\n makeSelectIsEditing,\r\n makeSelectPaymentInfo,\r\n makeSelectIsEditingPaymentInfo,\r\n makeSelectBeneficiaries,\r\n makeSelectIsEditingBeneficiaries,\r\n};\r\n","export const ADD_INSURED_ACTION = 'app/ContractingPage/InsuredsView/ADD_INSURED_ACTION';\r\nexport const DELETE_INSURED_ACTION = 'app/ContractingPage/InsuredsView/DELETE_INSURED_ACTION';\r\nexport const SET_INSURED_DATA_ACTION = 'app/ContractingPage/InsuredsView/SET_INSURED_DATA_ACTION';\r\nexport const ENABLE_EDIT_INSURED_ACTION = 'app/ContractingPage/InsuredsView/ENABLE_EDIT_INSURED';\r\nexport const ENABLE_HEALTH_CONDITION_MODAL_ACTION = 'app/ContractingPage/InsuredsView/ENABLE_HEALTH_CONDITION_MODAL_ACTION';\r\nexport const HEALTH_CONDITION_MODAL_ACTION = 'app/ContractingPage/InsuredsView/HEALTH_CONDITION_MODAL_ACTION';\r\nexport const ENABLE_ADDRESS_DATA_ACTION = 'app/ContractingPage/InsuredsView/ENABLE_ADDRESS_DATA_ACTION';\r\nexport const CHANGE_CONTACT_DATA_ACTION = 'app/ContractingPage/InsuredsView/CHANGE_CONTACT_DATA_ACTION';\r\nexport const RESET_STATE_INSURED = 'app/ContractingPage/InsuredsView/RESET_STATE_INSURED';\r\nexport const SET_FORM_FIELD_ACTION = 'app/ContractingPage/InsuredsView/SET_FORM_FIELD_ACTION';\r\n\r\n","import makeActionCreator from 'utils/makeActionCreator';\r\nimport {\r\n ADD_INSURED_ACTION,\r\n DELETE_INSURED_ACTION,\r\n SET_INSURED_DATA_ACTION,\r\n HEALTH_CONDITION_MODAL_ACTION,\r\n ENABLE_EDIT_INSURED_ACTION,\r\n ENABLE_HEALTH_CONDITION_MODAL_ACTION,\r\n ENABLE_ADDRESS_DATA_ACTION,\r\n CHANGE_CONTACT_DATA_ACTION,\r\n RESET_STATE_INSURED,\r\n SET_FORM_FIELD_ACTION,\r\n} from './constants';\r\n\r\nexport const addInsuredAction = makeActionCreator(ADD_INSURED_ACTION);\r\nexport const deleteInsuredAction = makeActionCreator(DELETE_INSURED_ACTION, 'position');\r\nexport const setInsuredDataAction = makeActionCreator(SET_INSURED_DATA_ACTION, 'values', 'position');\r\nexport const enableEditInsuredAction = makeActionCreator(ENABLE_EDIT_INSURED_ACTION, 'position');\r\nexport const enableHealthConditionModalAction = makeActionCreator(ENABLE_HEALTH_CONDITION_MODAL_ACTION, 'position');\r\nexport const healthConditionModalAction = makeActionCreator(HEALTH_CONDITION_MODAL_ACTION, 'value', 'position', 'data');\r\nexport const enableAddressDataAction = makeActionCreator(ENABLE_ADDRESS_DATA_ACTION, 'position');\r\nexport const changeContactDataAction = makeActionCreator(CHANGE_CONTACT_DATA_ACTION, 'position', 'value');\r\nexport const resetStateInsuredAction = makeActionCreator(RESET_STATE_INSURED, 'product');\r\nexport const setFormFieldAction = makeActionCreator(SET_FORM_FIELD_ACTION, 'position', 'field', 'value');\r\n\r\n","import { createSelector } from 'reselect';\r\n\r\nconst selectInsuredsViewDomain = () => (state) => state.get('insuredsView').toJS();\r\n\r\nconst makeSelectInsureds = () => createSelector(\r\n selectInsuredsViewDomain(),\r\n (substate) => substate.insureds\r\n);\r\n\r\nexport {\r\n makeSelectInsureds,\r\n};\r\n","import { createSelector } from 'reselect';\r\n\r\nconst selectHomeViewDomain = () => (state) => state.get('homeView').toJS();\r\nconst selectFormDomain = () => (state) => state.get('form').toJS();\r\n\r\nconst makeSelectHomeData = () => createSelector(\r\n selectHomeViewDomain(),\r\n (substate) => substate.homeData\r\n);\r\n\r\nconst makeSelectForm = () => createSelector(\r\n selectFormDomain(),\r\n (substate) => substate.homeForm\r\n);\r\n\r\nexport {\r\n makeSelectHomeData,\r\n makeSelectForm,\r\n};\r\n","import { createSelector } from 'reselect';\r\n\r\nconst selectContractingPageDomain = () => state =>\r\n state.get('contractingPage') ? state.get('contractingPage').toJS() : {};\r\n\r\nconst makeSelectFee = () =>\r\n createSelector(selectContractingPageDomain(), substate => substate.fee);\r\n\r\nconst makeSelectStep = () =>\r\n createSelector(selectContractingPageDomain(), substate => substate.step);\r\n\r\nconst makeSelectProductConfig = () =>\r\n createSelector(\r\n selectContractingPageDomain(),\r\n substate => substate.productConfig,\r\n );\r\n\r\nconst makeSelectIsConfirmationLoading = () =>\r\n createSelector(\r\n selectContractingPageDomain(),\r\n substate => substate.isConfirmationLoading,\r\n );\r\n\r\nconst makeSelectPolicies = () =>\r\n createSelector(selectContractingPageDomain(), substate => substate.policies);\r\n\r\nconst makeSelectPoliciesError = () =>\r\n createSelector(\r\n selectContractingPageDomain(),\r\n substate => substate.policiesError,\r\n );\r\n\r\nconst makeSelectDraftCode = () =>\r\n createSelector(selectContractingPageDomain(), substate => substate.code);\r\n\r\nconst makeSelectDraftKey = () =>\r\n createSelector(selectContractingPageDomain(), substate => substate.key);\r\n\r\nconst makeSelectPromoterNif = () =>\r\n createSelector(\r\n selectContractingPageDomain(),\r\n substate => substate.promoterNif,\r\n );\r\n\r\nexport {\r\n makeSelectFee,\r\n makeSelectStep,\r\n makeSelectProductConfig,\r\n makeSelectIsConfirmationLoading,\r\n makeSelectPoliciesError,\r\n makeSelectPolicies,\r\n makeSelectDraftCode,\r\n makeSelectDraftKey,\r\n makeSelectPromoterNif,\r\n};\r\n","import contractingConfig from 'config/contracting.config.json';\r\nimport { getAge } from 'utils/dateFactory';\r\nimport { getObjectPropertyByPath } from 'utils/functions';\r\nimport sbjs from 'sourcebuster';\r\nimport find from 'lodash/find';\r\n\r\nexport const getMensualFee = (productConfig, form, result) => {\r\n const modalitiesInfo = productConfig.modalitiesInfo;\r\n let total = 0;\r\n\r\n if (productConfig.price && !Array.isArray(productConfig.price)) {\r\n return productConfig.price;\r\n }\r\n\r\n if (\r\n modalitiesInfo &&\r\n !productConfig.calculator.selectorResult &&\r\n modalitiesInfo.modalitiesGroup\r\n ) {\r\n total += form.selectedModalityTotalPrice;\r\n }\r\n\r\n if (modalitiesInfo && modalitiesInfo.addons) {\r\n for (let i = 0; i < modalitiesInfo.addons.length; i += 1) {\r\n if (form[modalitiesInfo.addons[i].id]) {\r\n total += form[modalitiesInfo.addons[i].id];\r\n }\r\n }\r\n }\r\n\r\n if (productConfig.calculator.type === 'selector' && !modalitiesInfo) {\r\n total += form[productConfig.calculator.form.formName];\r\n }\r\n\r\n if (\r\n productConfig.calculator.type === 'selector' &&\r\n modalitiesInfo &&\r\n modalitiesInfo.modalitiesGroup\r\n ) {\r\n const selectedOption = form[productConfig.calculator.form.formName];\r\n let position = 0;\r\n for (\r\n let i = 0;\r\n i < modalitiesInfo.modalitiesGroup[0].modalities.length;\r\n i += 1\r\n ) {\r\n if (\r\n modalitiesInfo.modalitiesGroup[0].modalities[i].modality.toString() ===\r\n selectedOption.toString()\r\n ) {\r\n position = i;\r\n }\r\n }\r\n total += result[position].price;\r\n }\r\n return total;\r\n};\r\n\r\nexport const getContractingStepsByProduct = product => {\r\n const totalSteps = contractingConfig.steps;\r\n const visibleSteps = [];\r\n\r\n for (let i = 0; i < totalSteps.length; i += 1) {\r\n if (\r\n !totalSteps[i].products ||\r\n totalSteps[i].products.filter(prod => prod === product).length\r\n ) {\r\n visibleSteps.push(totalSteps[i]);\r\n }\r\n }\r\n return visibleSteps;\r\n};\r\n\r\nexport const getStepsTitles = steps => {\r\n const titles = [];\r\n steps.forEach(step => {\r\n titles.push(step.name);\r\n }, this);\r\n return titles;\r\n};\r\n\r\nexport const checkPolicies = policies => {\r\n const policiesConfig = contractingConfig.policy;\r\n for (let i = 0; i < policiesConfig.length; i += 1) {\r\n if (policiesConfig[i].mandatory) {\r\n const policy = find(policies, { id: policiesConfig[i].id });\r\n if (!policy || !policy.value) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n};\r\n\r\nexport const getPaymentPeriodName = paymentValue => {\r\n for (let i = 0; i < contractingConfig.paymentPeriods.length; i += 1) {\r\n const payment = contractingConfig.paymentPeriods[i];\r\n if (payment.value == paymentValue) {\r\n return payment.text;\r\n }\r\n }\r\n return '-';\r\n};\r\n\r\nexport const isValidInsureds = insureds => {\r\n for (let i = 0; i < insureds.length; i += 1) {\r\n if (insureds[i].isEditing) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\nexport const getAvailablePinPhones = (insureds, policyHolder) => {\r\n const resultPhones = [\r\n {\r\n name: policyHolder.name,\r\n nif: policyHolder.nif,\r\n phone: policyHolder.mobilePhone,\r\n },\r\n ];\r\n for (let i = 0; i < insureds.length; i += 1) {\r\n const insuredData = insureds[i].data;\r\n if (\r\n insuredData.nif !== policyHolder.nif &&\r\n getAge(insuredData.birthDate) >= 18\r\n ) {\r\n resultPhones.push({\r\n name: insuredData.name,\r\n nif: insuredData.nif,\r\n phone: insuredData.mobilePhone,\r\n });\r\n }\r\n }\r\n\r\n return resultPhones;\r\n};\r\n\r\nconst arePinPhonesFilled = (insureds, policyHolder, codes) => {\r\n if (!codes) {\r\n return false;\r\n }\r\n const nifs = Object.keys(codes);\r\n if (getAvailablePinPhones(insureds, policyHolder).length === nifs.length) {\r\n for (let i = 0; i < nifs.length; i += 1) {\r\n if (codes[nifs[i]] === undefined || codes[nifs[i]].length !== 6) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nconst personalDataHaveNif = (data) => (data && data.nif != null && data.nif !== '');\r\n\r\nconst someInsuredsHaveNif = (insureds) => {\r\n for (let i = 0; i < insureds.length; i += 1) {\r\n if (personalDataHaveNif(insureds[i].data)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nexport const isSaveDraftButtonDisabled = (props) =>\r\n (!someInsuredsHaveNif(props.insureds) && !personalDataHaveNif(props.policyHolderData))\r\n && props.step < 2;\r\n\r\nexport const isSaveDraftButtonVisible = (props) => (props && props.draft ? props.draft : false);\r\n\r\nexport const isContinueButtonDisabled = (currentStepId, props) => {\r\n switch (currentStepId) {\r\n case 'insureds':\r\n return !isValidInsureds(props.insureds);\r\n case 'policyHolder':\r\n return props.isEditingPolicyHolder || props.isEditingPaymentInfo || props.isEditingBeneficiaries;\r\n case 'docAndSignature':\r\n return !arePinPhonesFilled(\r\n props.insureds,\r\n props.policyHolderData,\r\n props.codes,\r\n );\r\n default:\r\n return true;\r\n }\r\n};\r\n\r\nexport const getSourceBusterInfo = id => {\r\n return { id, first: sbjs.get.first, current: sbjs.get.current };\r\n};\r\n\r\n\r\nconst getTotalDataInResponse = (props) => {\r\n let totalDataInResponse = 0;\r\n for (let i = 0; i < props.productConfig.modalitiesInfo.modalitiesGroup.length; i += 1) {\r\n totalDataInResponse += props.productConfig.modalitiesInfo.modalitiesGroup[i].modalities.length;\r\n }\r\n return totalDataInResponse;\r\n};\r\n\r\nexport const getModalityPrice = (props) => {\r\n let total = 0;\r\n\r\n // Get the total number of modalities\r\n const totalDataInResponse = getTotalDataInResponse(props);\r\n\r\n // Group the response by the number of modalities\r\n const totalResponses = props.response.length / totalDataInResponse;\r\n\r\n // Get the modalities number in the current group\r\n const responseModalityGroups = props.productConfig.modalitiesInfo.modalitiesGroup[props.modGrpIndex].modalities.length;\r\n\r\n for (let i = 0; i < totalResponses; i += 1) {\r\n const response = props.response[props.modIndex + (props.modGrpIndex * responseModalityGroups) + (totalDataInResponse * i)];\r\n if (response.status === 0) return 0;\r\n\r\n let price = 0;\r\n if (Array.isArray(response.price)) { // The price could be an array\r\n for (let j = 0; j < response.price.length; j += 1) {\r\n price += response.price[j];\r\n }\r\n } else {\r\n price += response.price;\r\n }\r\n // Normalizes the price if needed\r\n if (props.productConfig.modalitiesInfo.normalizePrice) {\r\n total += price / props.productConfig.modalitiesInfo.normalizePrice;\r\n } else {\r\n total += price;\r\n }\r\n }\r\n return total;\r\n};\r\n\r\nexport const isPolicyHolderAnInsured = insureds => {\r\n for (let i = 0; i < insureds.length; i += 1) {\r\n if (insureds[i].data.relationship === 'Es el tomador') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nfunction isModalitySelected(modality) {\r\n return modality.modalityName === this.selectedModality;\r\n}\r\n\r\nfunction productHasModalities(product) {\r\n return product.modalitiesInfo;\r\n}\r\n\r\nfunction deleteToolTipIfNecessary(name) {\r\n if (name && name.indexOf('<') !== -1) {\r\n return name.slice(0, name.indexOf('<'));\r\n }\r\n return name;\r\n}\r\n\r\nfunction getModalityNameSelectedFromProductModalities(calculatorForm, productModalitiesGroup) {\r\n const modalitiesInGroup = productModalitiesGroup[calculatorForm.selectedModalityGrp].modalities;\r\n const modalityName = modalitiesInGroup.filter(isModalitySelected, calculatorForm)[0].name;\r\n return deleteToolTipIfNecessary(modalityName);\r\n}\r\n\r\nexport function buildModalityNameToShow(calculatorForm, product) {\r\n let modalityNameToShow = '';\r\n if (!productHasModalities(product)) {\r\n return product.productInfo.name;\r\n }\r\n\r\n if (getObjectPropertyByPath(calculatorForm, 'selectedModalityGrp') >= 0) {\r\n modalityNameToShow = getModalityNameSelectedFromProductModalities(calculatorForm,\r\n product.modalitiesInfo.modalitiesGroup);\r\n }\r\n\r\n if (!getObjectPropertyByPath(product, 'modalitiesInfo.addons')) {\r\n return modalityNameToShow;\r\n }\r\n\r\n product.modalitiesInfo.addons.forEach(addon => {\r\n if (calculatorForm[addon.id]) {\r\n modalityNameToShow += ` + ${addon.name}`;\r\n }\r\n });\r\n\r\n return modalityNameToShow;\r\n}\r\n","import {\r\n call,\r\n put,\r\n select,\r\n takeLatest,\r\n} from 'redux-saga/effects';\r\nimport { push } from 'react-router-redux';\r\nimport { postNet, putNet } from 'utils/networking';\r\nimport { isTrackingEnabled } from 'utils/cookies';\r\nimport {\r\n sendNifs,\r\n sendBankStatement,\r\n sendFiles,\r\n} from 'containers/FilesUploader/sagas';\r\nimport { makeSelectForm } from 'containers/CalculatorPage/selectors';\r\nimport { makeSelectBankStatement } from 'containers/FilesUploader/BankStatementUploader/selectors';\r\nimport {\r\n makeSelectExpirationDates,\r\n makeSelectDocumentsId,\r\n} from 'containers/FilesUploader/NifUploader/selectors';\r\nimport ContractModel from '../ApiModels';\r\nimport { getInformativeNoteUrl } from '../documentationUtils';\r\nimport {\r\n VALIDATE_CONTRACT_ACTION,\r\n CONFIRMATE_CONTRACT_ACTION,\r\n RENEW_PIN_ACTION,\r\n SEND_DRAFT_ACTION,\r\n} from '../constants';\r\nimport {\r\n nextStepAction,\r\n cancelConfirmationAction,\r\n cancelLoadAction,\r\n setCodeAction,\r\n} from '../actions';\r\nimport {\r\n isValidContractAction,\r\n renewedPinAction,\r\n} from '../DocAndSignatureView/actions';\r\nimport {\r\n makeSelectBeneficiaries,\r\n makeSelectPaymentInfo,\r\n makeSelectPolicyHolderData,\r\n} from '../PolicyHolderView/selectors';\r\nimport {\r\n makeSelectCodes,\r\n makeSelectIdContract,\r\n} from '../DocAndSignatureView/selectors';\r\nimport { setFormFieldAction } from '../InsuredsView/actions';\r\nimport { makeSelectInsureds } from '../InsuredsView/selectors';\r\nimport { makeSelectHomeData } from '../HomeView/selectors';\r\nimport {\r\n makeSelectProductConfig,\r\n makeSelectPolicies,\r\n makeSelectDraftCode,\r\n makeSelectDraftKey,\r\n makeSelectPromoterNif,\r\n} from '../selectors';\r\nimport {\r\n getAvailablePinPhones,\r\n getSourceBusterInfo,\r\n} from '../functions';\r\n\r\nfunction* copyContactDataFromPolicyHolder(insureds, policyHolder) {\r\n for (let i = 0; i < insureds.length; i += 1) {\r\n if (!insureds[i].data.mobilePhone) {\r\n try {\r\n yield put(\r\n setFormFieldAction(i, 'mobilePhone', policyHolder.mobilePhone),\r\n );\r\n } catch (error) {\r\n console.log('No se han podido copiar el correo de contacto del padre ');\r\n }\r\n }\r\n if (!insureds[i].data.email) {\r\n try {\r\n yield put(setFormFieldAction(i, 'email', policyHolder.email));\r\n } catch (error) {\r\n console.log(\r\n 'No se han podido copiar el teléfono de contacto del padre ',\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction* sendContract() {\r\n try {\r\n const beneficiaries = yield select(makeSelectBeneficiaries());\r\n const paymentInfo = yield select(makeSelectPaymentInfo());\r\n const policyHolder = yield select(makeSelectPolicyHolderData());\r\n const productConfig = yield select(makeSelectProductConfig());\r\n const homeInfo = yield select(makeSelectHomeData());\r\n const form = yield select(makeSelectForm());\r\n const policies = yield select(makeSelectPolicies());\r\n const contractId = yield select(makeSelectIdContract());\r\n let insureds = yield select(makeSelectInsureds());\r\n yield call(copyContactDataFromPolicyHolder, insureds, policyHolder);\r\n insureds = yield select(makeSelectInsureds());\r\n\r\n const requestModel = new ContractModel({\r\n policyHolder,\r\n paymentInfo,\r\n productConfig,\r\n form,\r\n insureds,\r\n beneficiaries,\r\n homeInfo,\r\n policies,\r\n id: contractId,\r\n });\r\n const response = yield call(postNet, {\r\n api: 'api/contract/validate',\r\n body: requestModel,\r\n });\r\n yield put(cancelConfirmationAction());\r\n if (response[0].error.length > 0) {\r\n yield put(cancelLoadAction());\r\n alert(response[0].error);\r\n } else {\r\n yield put(nextStepAction());\r\n yield put(isValidContractAction(response[0].id, response[0].document));\r\n if (isTrackingEnabled()) {\r\n yield call(postNet, {\r\n api: 'api/tracksource',\r\n body: getSourceBusterInfo(response[0].id),\r\n });\r\n }\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n alert('Se ha producido un error, vuelva a intentarlo');\r\n yield put(cancelLoadAction());\r\n }\r\n}\r\n\r\nfunction* confirmContract() {\r\n try {\r\n const codes = yield select(makeSelectCodes());\r\n const productConfig = yield select(makeSelectProductConfig());\r\n const form = yield select(makeSelectForm());\r\n const draftKey = yield select(makeSelectDraftKey());\r\n const draftCode = yield select(makeSelectDraftCode());\r\n const informativeNoteUrl = getInformativeNoteUrl(productConfig, form);\r\n const nifs = Object.keys(codes);\r\n const confirmations = [];\r\n\r\n for (let i = 0; i < nifs.length; i += 1) {\r\n confirmations.push({ doc: nifs[i], key: codes[nifs[i]] });\r\n }\r\n\r\n const response = yield call(postNet, {\r\n api: 'api/contract/confirmation',\r\n body: {\r\n url: informativeNoteUrl,\r\n code: draftCode,\r\n hashedEmail: draftKey,\r\n confirmations,\r\n },\r\n });\r\n if (response.status === 1) {\r\n yield put(push('/final'));\r\n } else {\r\n alert(\"Se ha producido un error al confirmar su contrato. Inténtelo más tarde.\");\r\n yield put(cancelConfirmationAction());\r\n }\r\n } catch (err) {\r\n yield put(cancelConfirmationAction());\r\n }\r\n}\r\n\r\nfunction* renewPin(action) {\r\n try {\r\n const body = [];\r\n const idContract = yield select(makeSelectIdContract());\r\n const contractData = { idContract, docIds: [] };\r\n\r\n // If no doc then send pin to all insureds, else send only to the selected insured\r\n if (!action.doc) {\r\n const insureds = yield select(makeSelectInsureds());\r\n const policyHolder = yield select(makeSelectPolicyHolderData());\r\n const availablePhones = getAvailablePinPhones(insureds, policyHolder);\r\n availablePhones.forEach(phone => {\r\n contractData.docIds.push(phone.nif);\r\n });\r\n } else {\r\n contractData.docIds.push(action.doc);\r\n }\r\n body.push(contractData);\r\n\r\n const result = yield call(putNet, { api: 'api/contract/renewpin', body });\r\n if (result.status === 0) {\r\n alert(result.message);\r\n } else {\r\n yield put(renewedPinAction());\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n}\r\n\r\nfunction* saveDraft(values) {\r\n try {\r\n const form = yield select(makeSelectForm());\r\n const beneficiaries = yield select(makeSelectBeneficiaries());\r\n const paymentInfo = yield select(makeSelectPaymentInfo());\r\n const policyHolder = yield select(makeSelectPolicyHolderData());\r\n const productConfig = yield select(makeSelectProductConfig());\r\n const insureds = yield select(makeSelectInsureds());\r\n const homeInfo = yield select(makeSelectHomeData());\r\n const policies = yield select(makeSelectPolicies());\r\n const draftCode = yield select(makeSelectDraftCode());\r\n const idContract = yield select(makeSelectIdContract());\r\n const expirationDates = yield select(makeSelectExpirationDates());\r\n const bankStatement = yield select(makeSelectBankStatement());\r\n const promoterNif = yield select(makeSelectPromoterNif());\r\n\r\n const hasBankStatement = bankStatement !== undefined;\r\n let hasExpirationDates = Object.values(expirationDates).length > 0;\r\n\r\n Object.values(expirationDates).forEach(date => {\r\n if (!date) {\r\n hasExpirationDates = false;\r\n }\r\n });\r\n\r\n if (hasExpirationDates && hasBankStatement) {\r\n yield call(sendFiles);\r\n } else if (!hasExpirationDates && hasBankStatement) {\r\n yield call(sendBankStatement);\r\n } else if (hasExpirationDates && !hasBankStatement) {\r\n yield call(sendNifs);\r\n }\r\n\r\n const contract = new ContractModel({\r\n policyHolder,\r\n paymentInfo,\r\n productConfig,\r\n form,\r\n insureds,\r\n beneficiaries,\r\n homeInfo,\r\n policies,\r\n id: idContract,\r\n });\r\n contract.Petitions[0].comercialDetails.nifPromoter = promoterNif;\r\n contract.docs = [];\r\n const documents = yield select(makeSelectDocumentsId());\r\n const docNifs = Object.keys(documents);\r\n docNifs.forEach(nif => {\r\n contract.docs.push({\r\n nif,\r\n documentId: documents[nif],\r\n });\r\n });\r\n\r\n const requestModel = {\r\n application: contract,\r\n code: draftCode,\r\n email: values.email,\r\n };\r\n const result = yield call(postNet, {\r\n api: 'api/contract/save',\r\n body: requestModel,\r\n });\r\n\r\n if (result.status === 0) {\r\n values.onSend(true);\r\n } else {\r\n const code = result.message;\r\n yield put(setCodeAction(code));\r\n values.onSend();\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n values.onSend(\r\n 'Ha ocurrido un error al guardar su borrador. Pruebe de nuevo más tarde.',\r\n );\r\n }\r\n}\r\n\r\nexport default function* defaultSaga() {\r\n yield takeLatest(VALIDATE_CONTRACT_ACTION, sendContract);\r\n yield takeLatest(CONFIRMATE_CONTRACT_ACTION, confirmContract);\r\n yield takeLatest(RENEW_PIN_ACTION, renewPin);\r\n yield takeLatest(SEND_DRAFT_ACTION, saveDraft);\r\n}\r\n","import { getBirthDateFromAge, getAge } from 'utils/dateFactory';\r\n\r\nconst MAX_AGE_FAMILY = 54;\r\nconst NUM_PEOPLE_COUPLE = 2;\r\nconst isRangeFamiliar = age => (age <= MAX_AGE_FAMILY);\r\n\r\nconst insuredRelationshipIsValue = (insureds, value) => {\r\n for (let i = 0; i < insureds.length; i += 1) {\r\n if (insureds[i].data.relationship === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\n\r\nconst areFamilyForm = dataForm => {\r\n for (let p = 0; p < parseInt(dataForm.personNumberSelected); p += 1) {\r\n if (getBirthDateFromAge(dataForm[`age${p}`])>MAX_AGE_FAMILY){\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nconst areFamily = insureds => {\r\n if (insureds.length <= NUM_PEOPLE_COUPLE) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < insureds.length; i += 1) {\r\n if (!isRangeFamiliar(getAge(insureds[i].data.birthDate))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\nconst textRelationshipInsureds = insureds => {\r\n const hasInsuredTaker = insuredRelationshipIsValue(insureds, 'Es el tomador');\r\n const hasSpouse = insuredRelationshipIsValue(insureds, '3');\r\n\r\n if (hasInsuredTaker && hasSpouse && insureds.length === NUM_PEOPLE_COUPLE) {\r\n return 'Pareja';\r\n }\r\n\r\n if (areFamily(insureds)) {\r\n return 'Familia';\r\n }\r\n\r\n return null;\r\n};\r\n\r\n\r\n\r\nconst textRelationshipForm = dataForm => {\r\n \r\n if ( dataForm.relationship && parseInt(dataForm.personNumberSelected) === NUM_PEOPLE_COUPLE) {\r\n return 'Pareja';\r\n }\r\n\r\n if (areFamilyForm(dataForm)) {\r\n return 'Familia';\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst calculatorHasAgesSelector = (productConfig) => {\r\n if (productConfig.calculator) {\r\n for (let i = 0; i < productConfig.calculator.form.length; i += 1) {\r\n if (productConfig.calculator.form[i].type === 'ages-selector') {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nconst getConstants = (productConfig) => {\r\n const constants = {};\r\n if (productConfig.constants) {\r\n for (let k = 0; k < productConfig.constants.length; k += 1) {\r\n // Add constants\r\n constants[productConfig.constants[k].formName] = productConfig.constants[k].value;\r\n }\r\n }\r\n return constants;\r\n};\r\n\r\nconst getRequestModel = (productConfig, form, modalitiesArray, ageCont) => {\r\n const result = [];\r\n for (let j = 0; j < modalitiesArray.length; j += 1) {\r\n const mod = modalitiesArray[j];\r\n const data = {\r\n modality: mod.modality,\r\n subtype: mod.modality,\r\n };\r\n const params = {};\r\n if (productConfig.calculator) {\r\n for (let k = 0; k < productConfig.calculator.form.length; k += 1) {\r\n // Special case age selector\r\n if (productConfig.calculator.form[k].type !== 'ages-selector') {\r\n params[productConfig.calculator.form[k].formName] =\r\n form[productConfig.calculator.form[k].formName];\r\n } else {\r\n params.birthDate = getBirthDateFromAge(form[`age${ageCont}`]);\r\n }\r\n }\r\n }\r\n result.push({\r\n type: productConfig.id,\r\n ...data,\r\n params: {\r\n ...params,\r\n ...getConstants(productConfig),\r\n },\r\n });\r\n }\r\n return result;\r\n};\r\n\r\nconst calculatorIsHealth = productConfig => {\r\n if (productConfig.calculator) {\r\n return (productConfig.id === '30');\r\n }\r\n return false;\r\n};\r\n\r\n// Solo para Salud\r\nconst getRequestModelByModalities = (productConfig, form, modalitiesArray, insuredsStep) => {\r\n const result = [];\r\n for (let j = 0; j < modalitiesArray.length; j += 1) {\r\n const mod = modalitiesArray[j];\r\n const data = {\r\n modality: mod.modality,\r\n subtype: mod.modality,\r\n };\r\n const insureds = [];\r\n let txtRelation;\r\n\r\n if (productConfig.calculator) {\r\n if (insuredsStep[0].data.birthDate) {\r\n for (let i = 0; i < insuredsStep.length; i += 1) {\r\n const insured = {};\r\n insured.birthDate = insuredsStep[i].data.birthDate;\r\n insured.id = (i + 1);\r\n insured.postalCode = insuredsStep[i].data.postalCode;\r\n insureds.push(insured);\r\n }\r\n txtRelation=textRelationshipInsureds(insuredsStep)\r\n } else {\r\n for (let p = 0; p < parseInt(form.personNumberSelected); p += 1) {\r\n const insured = {};\r\n for (let k = 0; k < productConfig.calculator.form.length; k += 1) {\r\n // Special case age selector\r\n if (productConfig.calculator.form[k].type !== 'ages-selector') {\r\n insured[productConfig.calculator.form[k].formName] =\r\n form[productConfig.calculator.form[k].formName];\r\n } else {\r\n insured.birthDate = getBirthDateFromAge(form[`age${p}`]);\r\n }\r\n }\r\n insured.id = (p + 1);\r\n insureds.push(insured);\r\n }\r\n txtRelation=textRelationshipForm(form);\r\n }\r\n }\r\n result.push({\r\n type: productConfig.id,\r\n ...data,\r\n params: {\r\n RelationshipInsureds: txtRelation,\r\n insureds,\r\n ...getConstants(productConfig),\r\n },\r\n });\r\n }\r\n return result;\r\n};\r\n\r\n\r\nexport const getCalculatorRequest = (productConfig, form, insureds) => {\r\n if (productConfig.modalitiesInfo) {\r\n const modalitiesGroup = productConfig.modalitiesInfo.modalitiesGroup;\r\n let modalitiesArray = [];\r\n for (let i = 0; i < modalitiesGroup.length; i += 1) {\r\n modalitiesArray = modalitiesArray.concat(modalitiesGroup[i].modalities);\r\n }\r\n\r\n if ((calculatorIsHealth(productConfig))) {\r\n return getRequestModelByModalities(productConfig, form, modalitiesArray, insureds);\r\n } else if (calculatorHasAgesSelector(productConfig)) {\r\n let result = [];\r\n for (let i = 0; i < form.personNumberSelected; i += 1) {\r\n result = result.concat(getRequestModel(productConfig, form, modalitiesArray, i));\r\n }\r\n return result;\r\n }\r\n return getRequestModel(productConfig, form, modalitiesArray);\r\n }\r\n if (productConfig.calculator.type === 'selector') {\r\n const result = [];\r\n for (let i = 0; i < productConfig.calculator.form.options.length; i += 1) {\r\n const res = {\r\n type: productConfig.id,\r\n params: {\r\n ...getConstants(productConfig),\r\n },\r\n };\r\n res.params[productConfig.calculator.form.formName] = productConfig.calculator.form.options[i];\r\n result.push(res);\r\n }\r\n return result;\r\n }\r\n return null;\r\n};\r\n\r\nexport default getCalculatorRequest;\r\n","import { call, put, select, takeLatest } from 'redux-saga/effects';\r\nimport findIndex from 'lodash/findIndex';\r\nimport { getNet } from 'utils/networking';\r\nimport { getBirthDateFromAge, getAge } from 'utils/dateFactory';\r\nimport { makeSelectForm } from 'containers/CalculatorPage/selectors';\r\nimport { makeSelectInsureds } from '../InsuredsView/selectors';\r\nimport { makeSelectHomeData } from '../HomeView/selectors';\r\nimport getCalculatorRequest from '../calculatorRequest';\r\nimport { INITIALIZE_CONTRACT_ACTION, RECALCULATE_ACTION } from '../constants';\r\nimport { updateFeeAction } from '../actions';\r\nimport { getMensualFee, getModalityPrice } from '../functions';\r\nimport { makeSelectProductConfig } from '../selectors';\r\n\r\n\r\nconst calculatorIsForm = productConfig =>\r\n productConfig.calculator && productConfig.calculator.type === 'form';\r\nconst insuredHasField = (insureds, field) =>\r\n insureds[0].data[field] !== undefined;\r\nconst insuredsHasAges = insureds => {\r\n let hasAges = true;\r\n\r\n insureds.forEach(insured => {\r\n if (insured.data.birthDate === undefined) {\r\n hasAges = false;\r\n }\r\n });\r\n\r\n return hasAges;\r\n};\r\n\r\n\r\nconst setFormFromInsureds = (productConfig, form, insureds) => {\r\n const nextForm = form;\r\n for (let i = 0; i < productConfig.calculator.form.length; i += 1) {\r\n const calcForm = productConfig.calculator.form[i];\r\n if (calcForm.formName === 'age' && insuredHasField(insureds, 'birthDate')) {\r\n nextForm.age = getAge(insureds[0].data.birthDate);\r\n } else if (\r\n calcForm.formName === 'postalCode' &&\r\n insuredHasField(insureds, 'postalCode')\r\n ) {\r\n nextForm.postalCode = insureds[0].data.postalCode;\r\n } else if (calcForm.type === 'ages-selector' && insuredsHasAges(insureds)) {\r\n nextForm.personNumberSelected = insureds.length;\r\n for (let j = 0; j < insureds.length; j += 1) {\r\n nextForm[`age${j}`] = getAge(insureds[j].data.birthDate);\r\n }\r\n }\r\n }\r\n return nextForm;\r\n};\r\n\r\nexport function* recalculate(action) {\r\n try {\r\n const productConfig = action.productConfig\r\n ? action.productConfig\r\n : yield select(makeSelectProductConfig());\r\n\r\n if (calculatorIsForm(productConfig)) {\r\n let form = yield select(makeSelectForm());\r\n const insureds = yield select(makeSelectInsureds());\r\n\r\n form = setFormFromInsureds(productConfig, form, insureds);\r\n\r\n let requestList = getCalculatorRequest(productConfig, form, insureds);\r\n const personInfo = { BirthDate: getBirthDateFromAge(form.age) };\r\n\r\n if (productConfig.id === '5') {\r\n // Hogar special case\r\n const homeInfo = yield select(makeSelectHomeData());\r\n requestList = [\r\n {\r\n type: productConfig.id,\r\n subtype: form.selectedProduct,\r\n params: {\r\n ...form,\r\n risk: form.risk ? 1 : -1,\r\n Jewels: homeInfo.lowJewelry\r\n ? (Number(homeInfo.lowJewelry) * 100).toString()\r\n : '0',\r\n JewelsOutSafe: homeInfo.highOutJewelry\r\n ? (Number(homeInfo.highOutJewelry) * 100).toString()\r\n : '0',\r\n JewelsInSafe: homeInfo.highInJewelry\r\n ? (Number(homeInfo.highInJewelry) * 100).toString()\r\n : '0',\r\n Objects: homeInfo.lowObjects\r\n ? (Number(homeInfo.lowObjects) * 100).toString()\r\n : '0',\r\n ObjectsOutSafe: homeInfo.highOutObjects\r\n ? (Number(homeInfo.highOutObjects) * 100).toString()\r\n : '0',\r\n ObjectsInSafe: homeInfo.highInObjects\r\n ? (Number(homeInfo.highInObjects) * 100).toString()\r\n : '0',\r\n },\r\n },\r\n ];\r\n if (form.selectedProduct === '4') {\r\n productConfig.modalitiesInfo.modalitiesGroup.splice(1, 1);\r\n } else {\r\n productConfig.modalitiesInfo.modalitiesGroup.splice(0, 1);\r\n }\r\n }\r\n const response = yield call(getNet, {\r\n api: 'api/calculate',\r\n header: { requestList, personInfo },\r\n id: '',\r\n });\r\n const price = getModalityPrice({\r\n productConfig,\r\n response,\r\n modGrpIndex: form.selectedModalityGrp,\r\n modIndex: findIndex(\r\n productConfig.modalitiesInfo.modalitiesGroup[form.selectedModalityGrp]\r\n .modalities,\r\n { modalityName: form.selectedModality },\r\n ),\r\n });\r\n form.selectedModalityTotalPrice = price;\r\n const mensualFee = getMensualFee(productConfig, form, response);\r\n yield put(updateFeeAction(mensualFee));\r\n } else {\r\n const form = yield select(makeSelectForm());\r\n const insureds = yield select(makeSelectInsureds());\r\n let fee = form.fee;\r\n if (!fee && form.capital) {\r\n fee = form.capital;\r\n }\r\n yield put(updateFeeAction(fee * insureds.length));\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n}\r\n\r\nexport default function* defaultSaga() {\r\n yield takeLatest(INITIALIZE_CONTRACT_ACTION, recalculate);\r\n yield takeLatest(RECALCULATE_ACTION, recalculate);\r\n}\r\n","/*\r\n *\r\n * LanguageProvider reducer\r\n *\r\n */\r\n\r\nimport { fromJS } from 'immutable';\r\n\r\nimport {\r\n CHANGE_LOCALE,\r\n} from './constants';\r\nimport {\r\n DEFAULT_LOCALE,\r\n} from '../App/constants'; // eslint-disable-line\r\n\r\nconst initialState = fromJS({\r\n locale: DEFAULT_LOCALE,\r\n});\r\n\r\nfunction languageProviderReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case CHANGE_LOCALE:\r\n return state\r\n .set('locale', action.locale);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default languageProviderReducer;\r\n","/*\r\n * AppConstants\r\n * Each action has a corresponding type, which the reducer knows and picks up on.\r\n * To avoid weird typos between the reducer and the actions, we save them as\r\n * constants here. We prefix them with 'yourproject/YourComponent' so we avoid\r\n * reducers accidentally picking up actions they shouldn't.\r\n *\r\n * Follow this format:\r\n * export const YOUR_ACTION_CONSTANT = 'yourproject/YourContainer/YOUR_ACTION_CONSTANT';\r\n */\r\n\r\nexport const DEFAULT_LOCALE = 'en';\r\n","/*\r\n *\r\n * LanguageProvider constants\r\n *\r\n */\r\n\r\nexport const CHANGE_LOCALE = 'app/LanguageToggle/CHANGE_LOCALE';\r\nexport const DEFAULT_LOCALE = 'en';\r\n","import { fromJS } from 'immutable';\r\nimport {\r\n SET_FILTER_DATA_ACTION,\r\n SET_QUERY_PARAMS_ACTION,\r\n SET_SORT_ACTION,\r\n SEARCH_ACTION,\r\n SET_SEARCH_SPECIALIST_ACTION,\r\n SET_SEARCH_LOCATION_ACTION,\r\n SET_SEARCH_RESULT_ACTION,\r\n SET_IS_LOADING_SEARCH_ACTION,\r\n SET_IS_LOADING_MORE_ACTION,\r\n LOAD_MORE_ACTION,\r\n SET_MORE_RESULTS_ACTION,\r\n SET_FORM_ACTION,\r\n SET_COORDS_ACTION,\r\n} from './constants';\r\n\r\nconst initialState = fromJS({\r\n form: {},\r\n sortType: 'priority',\r\n isLoadingSearch: false,\r\n isLoadingMore: false,\r\n});\r\n\r\nfunction medicalTeamPageReducer(state = initialState, action) {\r\n switch (action.type) {\r\n\r\n case SET_QUERY_PARAMS_ACTION:\r\n return state.set('qparams', action.values);\r\n\r\n case SET_FILTER_DATA_ACTION:\r\n return state.set('filterDataMap', action.filterDataMap);\r\n\r\n case SET_SORT_ACTION:\r\n return state.merge({\r\n searchResult: undefined,\r\n sortType: action.value,\r\n });\r\n\r\n case SEARCH_ACTION:\r\n return state.merge({\r\n searchResult: undefined,\r\n numTotalResults: undefined,\r\n isLoadingSearch: true,\r\n });\r\n\r\n case SET_SEARCH_SPECIALIST_ACTION:\r\n return state.set('searchSpecialist', action.value);\r\n\r\n case SET_SEARCH_LOCATION_ACTION:\r\n return state.set('searchLocation', action.value);\r\n\r\n case LOAD_MORE_ACTION:\r\n return state.set('isLoadingMore', true);\r\n\r\n case SET_SEARCH_RESULT_ACTION:\r\n return state.merge({\r\n searchResult: action.response.items,\r\n numTotalResults: action.response.numberOfResults,\r\n isLoadingSearch: false,\r\n });\r\n\r\n case SET_IS_LOADING_SEARCH_ACTION:\r\n return state.set('isLoadingSearch', action.value);\r\n\r\n case SET_IS_LOADING_MORE_ACTION:\r\n return state.set('isLoadingMore', action.value);\r\n\r\n case SET_MORE_RESULTS_ACTION:\r\n return state.merge({\r\n numTotalResults: action.response.numberOfResults,\r\n searchResult: state.get('searchResult').toJS().concat(action.response.items),\r\n isLoadingMore: false,\r\n });\r\n\r\n case SET_FORM_ACTION:\r\n return state.set('form', action.value);\r\n\r\n case SET_COORDS_ACTION:\r\n return state.set('coords', { latitude: action.value.latitude, longitude: action.value.longitude });\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default medicalTeamPageReducer;\r\n","/*\r\n *\r\n * Faqs reducer\r\n *\r\n */\r\n\r\nimport { fromJS } from 'immutable';\r\nimport {\r\n SELECT_FAQ,\r\n} from './constants';\r\n\r\nconst initialState = fromJS({\r\n selectedFaq: -1,\r\n});\r\n\r\nfunction faqsReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case SELECT_FAQ:\r\n if (action.index === state.get('selectedFaq')) {\r\n return state.set('selectedFaq', -1);\r\n }\r\n return state.set('selectedFaq', action.index);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default faqsReducer;\r\n","/*\r\n *\r\n * Faqs constants\r\n *\r\n */\r\n\r\nexport const SELECT_FAQ = 'app/Faqs/SELECT_FAQ';\r\n","import { fromJS } from 'immutable';\r\nimport {\r\n SELECT_OPTION_ACTION,\r\n ACTIVE_MENU_ACTION,\r\n} from './constants';\r\n\r\nconst initialState = fromJS({\r\n selectedOption: undefined,\r\n isActive: false,\r\n});\r\n\r\nfunction menuReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case SELECT_OPTION_ACTION:\r\n if (state.get('selectedOption') === action.position) {\r\n return state.set('selectedOption', undefined);\r\n }\r\n return state.set('selectedOption', action.position);\r\n case ACTIVE_MENU_ACTION: // eslint-disable-line\r\n const nextValue = !state.get('isActive');\r\n if (!nextValue) {\r\n return state.merge({\r\n isActive: nextValue,\r\n selectedOption: undefined,\r\n });\r\n }\r\n return state.set('isActive', nextValue);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default menuReducer;\r\n","import { getProductConfigById, getObjectPropertyByPath } from 'utils/functions';\r\nimport { getDateFromString, getAge } from 'utils/dateFactory';\r\nimport find from 'lodash/find';\r\n\r\nconst setModality = (action, productConfig, state) => {\r\n let form = state.get('form');\r\n const draftModality = getObjectPropertyByPath(\r\n action.contract,\r\n 'petitions[0].mode',\r\n );\r\n if (productConfig && draftModality) {\r\n productConfig.modalitiesInfo.modalitiesGroup.forEach((mod, i) => {\r\n const selectedModality = find(mod.modalities, {\r\n modalityName: draftModality,\r\n });\r\n if (selectedModality) {\r\n form = form.merge({\r\n selectedModality: draftModality,\r\n selectedModalityGrp: i,\r\n });\r\n }\r\n });\r\n }\r\n return state.set('form', form);\r\n};\r\n\r\nconst setInsureds = (insureds, state) => {\r\n let form = state.get('form');\r\n if (insureds) {\r\n insureds.forEach((insured, i) => {\r\n if (insured.data) {\r\n form = form.set(\r\n `age${i}`,\r\n getAge(getDateFromString(insured.data.birthDate)),\r\n );\r\n }\r\n });\r\n }\r\n form = form.set('personNumberSelected', insureds.length);\r\n return state.set('form', form);\r\n};\r\n\r\nconst setPostalCode = (insureds, state) => {\r\n let form = state.get('form');\r\n if (insureds && insureds[0].address) {\r\n form = form.set('postalCode', insureds[0].address.cp);\r\n }\r\n return state.set('form', form);\r\n};\r\n\r\nconst setProductAddons = (productConfig, coverageRequestData, state) => {\r\n let form = state.get('form');\r\n const addons = getObjectPropertyByPath(\r\n productConfig,\r\n 'modalitiesInfo.addons',\r\n );\r\n if (addons && coverageRequestData) {\r\n addons.forEach(addon => {\r\n if (coverageRequestData[addon.id] === 'Si') {\r\n form = form.set(addon.id, addon.price);\r\n }\r\n });\r\n }\r\n return state.set('form', form);\r\n};\r\n\r\nconst setCoverages = (insureds, state) => {\r\n let form = state.get('form');\r\n\r\n if (!insureds[0].coverages) {\r\n return state;\r\n }\r\n\r\n const coverages = insureds[0].coverages;\r\n\r\n if (coverages.ImporteAsegurado) {\r\n form = form.set('capital', coverages.ImporteAsegurado);\r\n }\r\n\r\n if (coverages.SubsidioMensual) {\r\n form = form.set('fee', coverages.SubsidioMensual / 100);\r\n }\r\n\r\n return state.set('form', form);\r\n};\r\n\r\nexport default function setLoadedDraft(state, action) {\r\n const draftProduct = action.contract.petitions[0].product;\r\n const productConfig = getProductConfigById(draftProduct);\r\n\r\n let newState = setModality(action, productConfig, state);\r\n newState = setInsureds(\r\n getObjectPropertyByPath(action.contract, 'petitions[0].insureds'),\r\n newState,\r\n );\r\n newState = setPostalCode(\r\n getObjectPropertyByPath(action.contract, 'petitions[0].insureds'),\r\n newState,\r\n );\r\n newState = setProductAddons(\r\n productConfig,\r\n getObjectPropertyByPath(\r\n action.contract,\r\n 'petitions[0].coverageRequestData',\r\n ),\r\n newState,\r\n );\r\n newState = setCoverages(\r\n getObjectPropertyByPath(action.contract, 'petitions[0].insureds'),\r\n newState,\r\n );\r\n\r\n return newState.set('productConfig', productConfig);\r\n}\r\n","export const SET_FORM_ACTION = 'app/CalculatorPage/SET_FORM_ACTION';\r\n","import { fromJS } from 'immutable';\r\nimport { SET_LOADED_DRAFT_ACTION } from 'containers/RecoveryContractModal/constants';\r\nimport setLoadedDraft from './mapDraft';\r\nimport {\r\n SET_FORM_ACTION,\r\n} from './constants';\r\n\r\nconst initialState = fromJS({\r\n form: {},\r\n});\r\n\r\nfunction calculatorPageReducer(state = initialState, action) {\r\n const stateJs = state.toJS();\r\n switch (action.type) {\r\n case SET_FORM_ACTION:\r\n stateJs.form = action.form;\r\n return fromJS(stateJs);\r\n case SET_LOADED_DRAFT_ACTION:\r\n return setLoadedDraft(state, action);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default calculatorPageReducer;\r\n","import { fromJS } from 'immutable';\r\nimport { CHANGE_TAB } from './constants';\r\n\r\nconst initialState = fromJS({\r\n activeTab: 1,\r\n});\r\n\r\nfunction TabsReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case CHANGE_TAB:\r\n return state.set('activeTab', action.index);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default TabsReducer;\r\n","export const CHANGE_TAB = 'app/OfficesPage/CHANGE_TAB';\r\n","export const getDistanceFromCoordsInKm = (lat1, lon1, lat2, lon2) => {\r\n const p = 0.017453292519943295; // Math.PI / 180\r\n const c = Math.cos;\r\n const a = (0.5 - (c((lat2 - lat1) * p) / 2)) +\r\n (c(lat1 * p) * c(lat2 * p) * ((1 - c((lon2 - lon1) * p)) / 2));\r\n\r\n return 12742 * Math.asin(Math.sqrt(a)); // 2 * R; R = 6371 km\r\n};\r\n\r\nexport function comparerOfficesByDistance(a, b) {\r\n if (a.distance > b.distance) {\r\n return 1;\r\n }\r\n if (a.distance < b.distance) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n}\r\n\r\nexport function showLocationInNavegatorMessage() {\r\n alert('Se requiere aceptar el permiso de ubicación para utilizar esta funcionalidad.\\n\\nAcepte los permisos de localización de su navegador y refresque la pantalla de oficinas.');\r\n}\r\n","import { fromJS } from 'immutable';\r\nimport {\r\n SET_RESPONSE,\r\n FILTER_OFFICES,\r\n SET_OFFICE_DISTANCE,\r\n SET_COMBO_OPTIONS,\r\n SELECT_OFFICE,\r\n TOGGLE_MAP,\r\n SET_USER_COORDS,\r\n} from './constants';\r\nimport { comparerOfficesByDistance,\r\n} from './functions';\r\n\r\nconst initialState = fromJS({\r\n officesByLocation: [],\r\n offices: [],\r\n options: [],\r\n showMap: false,\r\n userCoords: {},\r\n});\r\n\r\nfunction officeSearcherReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case SET_RESPONSE:\r\n return state.merge({\r\n response: action.response,\r\n offices: action.response,\r\n });\r\n case SET_COMBO_OPTIONS:\r\n return state.set('options', action.options);\r\n case FILTER_OFFICES:\r\n return state.merge({\r\n officesByLocation: action.offices.sort(comparerOfficesByDistance),\r\n officeSelected: action.offices[0],\r\n });\r\n case SET_OFFICE_DISTANCE:\r\n return state.set('offices', action.offices);\r\n case SELECT_OFFICE:\r\n return state.set('officeSelected', action.officeSelected);\r\n case TOGGLE_MAP:\r\n return state.set('showMap', !state.get('showMap'));\r\n case SET_USER_COORDS:\r\n return state.set('userCoords', action.coords);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default officeSearcherReducer;\r\n","import { fromJS } from 'immutable';\r\nimport { SHOW_MODAL, FORM_SENDED } from './constants';\r\n\r\nconst initialState = fromJS({\r\n showModal: false,\r\n formSended: false,\r\n});\r\n\r\nfunction calculatorPageReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case SHOW_MODAL:\r\n return state.merge({\r\n showModal: action.showModal,\r\n url: action.url,\r\n formSended: false,\r\n });\r\n case FORM_SENDED:\r\n return state.set('formSended', action.value);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default calculatorPageReducer;\r\n","import { fromJS } from 'immutable';\r\n\r\nexport const initialStateStage = fromJS({ // eslint-disable-line\r\n insureds: [\r\n {\r\n isEditing: false,\r\n isEnabled: true,\r\n healthCondition: true,\r\n showHealthModal: false,\r\n enabledAddressData: false,\r\n enabledContactData: true,\r\n data: {\r\n lastName: 'Aranda Lairón',\r\n genre: '1',\r\n height: '165',\r\n nif: '12345678Z',\r\n name: 'Carlos',\r\n mobilePhone: '690630300',\r\n birthDate: '13/05/1990',\r\n phone: '961234567',\r\n province: 'Valencia',\r\n town: 'Valencia',\r\n country: '724',\r\n postalCode: '46002',\r\n relationship: 'Es el tomador',\r\n weight: '80',\r\n profession: '3412',\r\n nationality: '724',\r\n email: 'correo@mail.com',\r\n direction: 'Xativa 23',\r\n },\r\n healthConditionData: {\r\n DermatosisSalud: 'false',\r\n HerniasSalud: 'false',\r\n FracturasSalud: 'false',\r\n MiopiaGlaucomaDetalle: 'false',\r\n DistimiaSalud: 'false',\r\n PatologiasPsiSalud: 'false',\r\n CirrosisSalud: 'false',\r\n HepatitisSalud: 'false',\r\n EsclerosisSalud: 'false',\r\n MiopatiasSalud: 'false',\r\n TraumatismoSalud: 'false',\r\n CardiopatiaSalud: 'false',\r\n ArritmiaSalud: 'false',\r\n TromboSalud: 'false',\r\n VaricesSalud: 'false',\r\n BronquitisSalud: 'false',\r\n AsmaSalud: 'false',\r\n TumoresSalud: 'false',\r\n Tumores24meses: 'false',\r\n CoaguloVIHSalud: 'false',\r\n PatologiaTiroidea: 'false',\r\n PatologiaOvarica: 'false',\r\n DrogasDetalle: 'false',\r\n AlcoholismoDetalle: 'false',\r\n CigarrillosDetalle: 'false',\r\n Discapacidad: 'false',\r\n TratamientoMedicoSalud: 'false',\r\n IntervencionQuirurgicaSalud: 'false',\r\n },\r\n },\r\n ],\r\n policy: false,\r\n policyError: false,\r\n});\r\n","import { fromJS } from 'immutable';\r\nimport findKey from 'lodash/findKey';\r\nimport { getObjectPropertyByPath } from 'utils/functions';\r\nimport { getDateFromString, isOfLegalAge } from 'utils/dateFactory';\r\nimport healthConditionsConfig from 'config/healthConditions.json';\r\nimport config from 'config.json';\r\n\r\nconst getInsuredPathologies = pathologies => {\r\n const result = {};\r\n const keys = Object.keys(pathologies);\r\n keys.forEach(key => {\r\n result[key] = pathologies[key].toString();\r\n });\r\n\r\n return result;\r\n};\r\n\r\nconst healthConditionPresentAndCommentsIfNeeded = (\r\n presentHealthConditionForm,\r\n presentHealthConditionFormValue,\r\n comments,\r\n) =>\r\n !presentHealthConditionForm ||\r\n (presentHealthConditionFormValue === 'true' && !comments);\r\n\r\nconst getHealthConditionFormValues = healthValues => {\r\n const healthValuesForm = [];\r\n healthValues.forEach(healthGroup => {\r\n healthGroup.list.forEach(healthCond => {\r\n healthValuesForm.push(healthCond.id);\r\n });\r\n });\r\n return healthValuesForm;\r\n};\r\n\r\nconst getHealthConditionFormStatus = (healthConditionData, productId) => {\r\n const product = findKey(config.products, { id: productId.toString() });\r\n\r\n const healthValues =\r\n healthConditionsConfig[config.products[product].healthConditionForm];\r\n const keys = Object.keys(healthConditionData);\r\n const healthValuesForm = getHealthConditionFormValues(healthValues);\r\n\r\n for (let i = 0; i < healthValuesForm.length; i += 1) {\r\n if (\r\n healthConditionPresentAndCommentsIfNeeded(\r\n keys.indexOf(healthValuesForm[i]) !== -1,\r\n healthConditionData[healthValuesForm[i]],\r\n healthConditionData.comments,\r\n )\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\n\r\nconst IsMultiInsured = (productId) => {\r\n const product = findKey(config.products, { id: productId.toString() });\r\n return config.products[product].isMultiInsured;\r\n};\r\n\r\nconst getRelationship = (insured, productId) => {\r\n if (!insured.data) return -1;\r\n let relationshipDraft = insured.data.relationship;\r\n if (!IsMultiInsured(productId)) { // Si es monoasegurado, relación del asegurado es el tomador\r\n relationshipDraft = '0';\r\n }\r\n if (!isOfLegalAge(getDateFromString(insured.data.birthDate))) {\r\n return '1';\r\n }\r\n return relationshipDraft === '0' ? 'Es el tomador' : relationshipDraft;\r\n};\r\n\r\nconst getInsuredCoverages = coverages => {\r\n const result = {};\r\n if (coverages) {\r\n const keys = Object.keys(coverages);\r\n keys.forEach(key => {\r\n if (coverages[key] === 'Si') {\r\n result[key] = true;\r\n }\r\n });\r\n }\r\n return result;\r\n};\r\n\r\nconst isFirstInsured = index => index === 0;\r\n\r\nexport const mapDraftData = action => {\r\n const insureds = [];\r\n const draftInsureds = getObjectPropertyByPath(\r\n action.contract,\r\n 'petitions[0].insureds',\r\n );\r\n draftInsureds.forEach((insured, i) => {\r\n const newInsured = {\r\n isEditing: isFirstInsured(i),\r\n isEnabled: isFirstInsured(i),\r\n healthCondition: true,\r\n showHealthModal: false,\r\n enabledAddressData: false,\r\n enabledContactData: true,\r\n data: {\r\n lastName: insured.data ? insured.data.surname : undefined,\r\n genre: insured.data ? insured.data.gender.toString() : undefined,\r\n height: insured.healthState ? insured.healthState.height : undefined,\r\n nif: insured.data ? insured.data.nif : undefined,\r\n name: insured.data ? insured.data.name : undefined,\r\n mobilePhone: insured.contact ? insured.contact.phone1 : undefined,\r\n birthDate: insured.data\r\n ? getDateFromString(insured.data.birthDate)\r\n : undefined,\r\n phone: insured.contact ? insured.contact.phone2 : undefined,\r\n province: insured.address ? insured.address.state : undefined,\r\n town: insured.address ? insured.address.city : undefined,\r\n country:\r\n insured.address && insured.address.countryCode\r\n ? insured.address.countryCode\r\n : '724',\r\n postalCode: insured.address ? insured.address.cp : undefined,\r\n relationship: getRelationship(\r\n insured,\r\n action.contract.petitions[0].product),\r\n weight: insured.healthState ? insured.healthState.weight : undefined,\r\n profession: insured.jobDescription\r\n ? insured.jobDescription.cno\r\n : undefined,\r\n nationality: insured.nationalityCode ? insured.nationalityCode : '724',\r\n email: insured.contact ? insured.contact.email : undefined,\r\n direction: insured.address ? insured.address.address : undefined,\r\n ...getInsuredCoverages(insured.coverages),\r\n },\r\n };\r\n\r\n if (insured.healthState && insured.healthState.pathologies) {\r\n newInsured.healthConditionData = getInsuredPathologies(\r\n insured.healthState.pathologies,\r\n );\r\n newInsured.healthConditionData.comments = insured.healthState\r\n ? insured.healthState.comments\r\n : undefined;\r\n newInsured.healthCondition = getHealthConditionFormStatus(\r\n newInsured.healthConditionData,\r\n action.contract.petitions[0].product,\r\n );\r\n }\r\n\r\n insureds.push(newInsured);\r\n });\r\n return insureds;\r\n};\r\n\r\nexport default function setLoadedDraft(state, action) {\r\n return state.set('insureds', fromJS(mapDraftData(action)));\r\n}\r\n","import { fromJS } from 'immutable';\r\nimport { SET_LOADED_DRAFT_ACTION } from 'containers/RecoveryContractModal/constants';\r\nimport { initialStateStage } from './mocks/stageMock';\r\nimport setLoadedDraft from './mapDraft';\r\nimport {\r\n ADD_INSURED_ACTION,\r\n DELETE_INSURED_ACTION,\r\n SET_INSURED_DATA_ACTION,\r\n ENABLE_EDIT_INSURED_ACTION,\r\n ENABLE_HEALTH_CONDITION_MODAL_ACTION,\r\n HEALTH_CONDITION_MODAL_ACTION,\r\n ENABLE_ADDRESS_DATA_ACTION,\r\n CHANGE_CONTACT_DATA_ACTION,\r\n RESET_STATE_INSURED,\r\n SET_FORM_FIELD_ACTION,\r\n} from './constants';\r\n\r\nconst baseInsured = {\r\n healthCondition: false,\r\n healthConditionData: {},\r\n showHealthModal: false,\r\n enabledAddressData: false,\r\n enabledContactData: true,\r\n data: {\r\n nationality: '724',\r\n country: '724',\r\n },\r\n};\r\n\r\nconst initialStateBase = fromJS({\r\n insureds: [\r\n {\r\n isEditing: true,\r\n isEnabled: true,\r\n ...baseInsured,\r\n },\r\n ],\r\n});\r\n\r\nconst initialState = process.env.REACT_APP_ENVIRONMENT === 'development' ? initialStateStage : initialStateBase;\r\n\r\nfunction contractingPageReducer(state = initialState, action) {\r\n const stateJs = state.toJS();\r\n switch (action.type) {\r\n\r\n case RESET_STATE_INSURED: {\r\n if (action.product.requiresPolicyHolderAsInsured && !action.product.isMultiInsured) {\r\n stateJs.insureds[0].data.relationship = 'Es el tomador';\r\n return fromJS(stateJs);\r\n }\r\n return initialState;\r\n }\r\n case ADD_INSURED_ACTION: //eslint-disable-line\r\n const lastInsurance = stateJs.insureds[stateJs.insureds.length - 1];\r\n let isEditing = false;\r\n let isEnabled = false;\r\n if (!lastInsurance.isEditing && lastInsurance.isEnabled) {\r\n isEditing = true;\r\n isEnabled = true;\r\n }\r\n if (stateJs.insureds[0].data) {\r\n let data =\r\n (({ province, town, country, postalCode, direction }) => (\r\n { province, town, country, postalCode, direction }\r\n ))(stateJs.insureds[0].data);\r\n // Merge the direction data and the insureds base data\r\n data = { ...data, ...baseInsured.data };\r\n stateJs.insureds.push({ isEditing, isEnabled, ...baseInsured, data });\r\n } else {\r\n stateJs.insureds.push({ isEditing, isEnabled, ...baseInsured });\r\n }\r\n return fromJS(stateJs);\r\n case DELETE_INSURED_ACTION:\r\n stateJs.insureds.splice(action.position, 1);\r\n if (stateJs.insureds[action.position] !== undefined &&\r\n !stateJs.insureds[action.position].isEnabled) {\r\n stateJs.insureds[action.position].isEditing = true;\r\n stateJs.insureds[action.position].isEnabled = true;\r\n }\r\n return fromJS(stateJs);\r\n case ENABLE_EDIT_INSURED_ACTION:\r\n stateJs.insureds[action.position].isEditing = true;\r\n return fromJS(stateJs);\r\n case SET_INSURED_DATA_ACTION:\r\n stateJs.insureds[action.position].data = { ...action.values };\r\n stateJs.insureds[action.position].isEditing = false;\r\n if (stateJs.insureds[action.position + 1] !== undefined) {\r\n stateJs.insureds[action.position + 1].isEditing = true;\r\n stateJs.insureds[action.position + 1].isEnabled = true;\r\n }\r\n if (action.position === 0) {\r\n const addressData =\r\n (({ province, town, country, postalCode, direction }) => (\r\n { province, town, country, postalCode, direction }\r\n ))(stateJs.insureds[0].data);\r\n\r\n for (let i = 1; i < stateJs.insureds.length; i += 1) {\r\n if (!stateJs.insureds[i].enabledAddressData) {\r\n Object.assign(stateJs.insureds[i].data, addressData);\r\n }\r\n }\r\n }\r\n return fromJS(stateJs);\r\n case SET_FORM_FIELD_ACTION:\r\n stateJs.insureds[action.position].data[action.field] = action.value;\r\n return fromJS(stateJs);\r\n case ENABLE_HEALTH_CONDITION_MODAL_ACTION:\r\n stateJs.insureds[action.position].showHealthModal = true;\r\n return fromJS(stateJs);\r\n case HEALTH_CONDITION_MODAL_ACTION:\r\n if (action.value) {\r\n stateJs.insureds[action.position].healthConditionData = action.data;\r\n }\r\n stateJs.insureds[action.position].healthCondition = action.value;\r\n stateJs.insureds[action.position].showHealthModal = false;\r\n return fromJS(stateJs);\r\n case ENABLE_ADDRESS_DATA_ACTION:\r\n stateJs.insureds[action.position].enabledAddressData = true;\r\n return fromJS(stateJs);\r\n case CHANGE_CONTACT_DATA_ACTION:\r\n stateJs.insureds[action.position].enabledContactData = action.value;\r\n return fromJS(stateJs);\r\n case SET_LOADED_DRAFT_ACTION:\r\n return setLoadedDraft(state, action);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default contractingPageReducer;\r\n","import { fromJS } from 'immutable';\r\nimport { getObjectPropertyByPath } from 'utils/functions';\r\nimport { getDateFromString } from 'utils/dateFactory';\r\n\r\nconst setPolicyHolderData = (state, policyHolder) => {\r\n const data = {\r\n lastName: policyHolder.data.surname,\r\n genre: policyHolder.data.gender.toString(),\r\n nif: policyHolder.data.nif,\r\n name: policyHolder.data.name,\r\n mobilePhone: policyHolder.contact.phone1,\r\n birthDate: getDateFromString(policyHolder.data.birthDate),\r\n phone: policyHolder.contact.phone2,\r\n province: policyHolder.address.state,\r\n town: policyHolder.address.city,\r\n country: policyHolder.address.countryCode,\r\n postalCode: policyHolder.address.cp,\r\n profession: policyHolder.jobDescription.cno,\r\n nationality: policyHolder.nationalityCode,\r\n email: policyHolder.contact.email,\r\n direction: policyHolder.address.address,\r\n };\r\n\r\n return state.set('data', fromJS(data));\r\n};\r\n\r\nconst setPaymentData = (state, paymentDetails) => {\r\n let account = paymentDetails.iban ? paymentDetails.iban.replace('ES', '') : '';\r\n account = paymentDetails.Iban ? paymentDetails.Iban.replace('ES', '') : account;\r\n let paymentPeriod = paymentDetails.frequency ? paymentDetails.frequency.toString() : undefined;\r\n paymentPeriod = paymentDetails.Frequency ? paymentDetails.Frequency.toString() : paymentPeriod;\r\n\r\n return state.set('paymentInfo', fromJS({ account, paymentPeriod }));\r\n};\r\n\r\nconst isPolicyHolderAnInsured = (contract) => {\r\n const insureds = getObjectPropertyByPath(contract, 'petitions[0].insureds');\r\n return insureds.some(insured => insured.isPolicyHolder);\r\n};\r\n\r\nconst setPaymentFormStatus = (state) => {\r\n let newState = state;\r\n const paymentData = state.get('paymentInfo');\r\n if (paymentData.get('account') && paymentData.get('paymentPeriod')) {\r\n newState = newState.set('isEditingPaymentInfo', false);\r\n } else {\r\n newState = newState.set('isEditingPaymentInfo', true);\r\n }\r\n return newState;\r\n};\r\n\r\nexport default function setLoadedDraft(state, action) {\r\n const policyHolder = action.contract.policyHolder;\r\n const paymentDetails = getObjectPropertyByPath(action.contract, 'petitions[0].paymentDetails');\r\n const insureds = getObjectPropertyByPath(action.contract, 'petitions[0].insureds');\r\n const beneficiaries = insureds[0].coverages.Beneficiarios;\r\n let nextState = state;\r\n if (policyHolder) {\r\n nextState = setPolicyHolderData(nextState, policyHolder);\r\n }\r\n if (paymentDetails) {\r\n nextState = setPaymentData(nextState, paymentDetails);\r\n nextState = setPaymentFormStatus(nextState);\r\n }\r\n if (isPolicyHolderAnInsured(action.contract)) {\r\n nextState = nextState.merge({ isPolicyHolderAnInsured: true });\r\n } else {\r\n nextState = nextState.merge({ isPolicyHolderAnInsured: false, isEditing: true });\r\n }\r\n if (beneficiaries) {\r\n nextState = nextState.merge({ beneficiariesInfo: { beneficiaries } });\r\n }\r\n\r\n return nextState;\r\n}\r\n","import { fromJS } from 'immutable';\r\n\r\nexport const initialStateStage = fromJS({\r\n data: {\r\n lastName: 'Beta Tester',\r\n genre: '1',\r\n height: '165',\r\n nif: '12345678Z',\r\n name: 'Testencio',\r\n mobilePhone: '628199311',\r\n birthDate: '01/01/1950',\r\n phone: '961234567',\r\n province: 'Valencia',\r\n town: 'Valencia',\r\n country: '724',\r\n postalCode: '46002',\r\n relationship: 'Es el tomador',\r\n weight: '80',\r\n profession: '3412',\r\n nationality: '724',\r\n email: 'correo@mail.com',\r\n direction: 'Calle inventada 123',\r\n },\r\n isPolicyHolderAnInsured: false,\r\n isEditing: false,\r\n paymentInfo: {\r\n paymentPeriod: '3',\r\n account: '3021004567740100213986',\r\n },\r\n isEditingPaymentInfo: true,\r\n beneficiariesInfo: {},\r\n isEditingBeneficiaries: true,\r\n});\r\n","import { fromJS } from 'immutable';\r\nimport { SET_LOADED_DRAFT_ACTION } from 'containers/RecoveryContractModal/constants';\r\nimport setLoadedDraft from './mapDraft';\r\nimport { initialStateStage } from './mocks/stageMock';\r\nimport {\r\n INITIALIZE_POLICYHOLDER_ACTION,\r\n SET_POLICYHOLDER_ACTION,\r\n EDIT_POLICYHOLDER_ACTION,\r\n SET_PAYMENTINFO_ACTION,\r\n EDIT_PAYMENTINFO_ACTION,\r\n SET_BENEFICIARIES_ACTION,\r\n EDIT_BENEFICIARIES_ACTION,\r\n RESET_STATE_POLICYHOLDER_ACTION,\r\n} from './constants';\r\n\r\nconst initialStateBase = fromJS({\r\n data: {\r\n nationality: '724',\r\n country: '724',\r\n },\r\n isPolicyHolderAnInsured: false,\r\n isEditing: true,\r\n paymentInfo: {},\r\n isEditingPaymentInfo: false,\r\n beneficiariesInfo: {},\r\n isEditingBeneficiaries: false,\r\n});\r\n\r\nconst initialState = process.env.REACT_APP_ENVIRONMENT === 'development' ? initialStateStage : initialStateBase;\r\n\r\nconst initializePolicyholder = (state, action) => {\r\n const isEmpty = Object.keys(action.data).length === 0;\r\n if (isEmpty) {\r\n return initialState;\r\n }\r\n\r\n const paymentInfoFilled = Object.keys(state.get('paymentInfo').toJS()).length;\r\n const beneficiariesFilled = Object.keys(state.get('beneficiariesInfo').toJS()).length;\r\n\r\n return state.merge({\r\n data: action.data,\r\n isEditing: false,\r\n isPolicyHolderAnInsured: true,\r\n isEditingPaymentInfo: !paymentInfoFilled,\r\n isEditingBeneficiaries: !beneficiariesFilled && action.beneficiaries,\r\n hasBeneficiaries: action.beneficiaries,\r\n });\r\n};\r\n\r\nfunction policyHolderViewReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case RESET_STATE_POLICYHOLDER_ACTION:\r\n return initialState;\r\n case INITIALIZE_POLICYHOLDER_ACTION: // eslint-disable-line\r\n return initializePolicyholder(state, action);\r\n case SET_POLICYHOLDER_ACTION:\r\n return state.merge({\r\n data: action.data,\r\n isEditing: false,\r\n isEditingPaymentInfo: true,\r\n });\r\n case EDIT_POLICYHOLDER_ACTION:\r\n return state.set('isEditing', true);\r\n case SET_PAYMENTINFO_ACTION:\r\n return state.merge({\r\n paymentInfo: action.data,\r\n isEditingPaymentInfo: false,\r\n isEditingBeneficiaries: state.get('hasBeneficiaries'),\r\n });\r\n case EDIT_PAYMENTINFO_ACTION:\r\n return state.set('isEditingPaymentInfo', true);\r\n case SET_BENEFICIARIES_ACTION:\r\n return state.merge({\r\n beneficiariesInfo: action.data,\r\n isEditingBeneficiaries: false,\r\n });\r\n case EDIT_BENEFICIARIES_ACTION:\r\n return state.set('isEditingBeneficiaries', true);\r\n case SET_LOADED_DRAFT_ACTION:\r\n return setLoadedDraft(state, action);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default policyHolderViewReducer;\r\n","export const INITIALIZE_POLICYHOLDER_ACTION = 'app/PolicyHolderView/INITIALIZE_POLICYHOLDER_DATA_ACTION';\r\nexport const SET_POLICYHOLDER_ACTION = 'app/PolicyHolderView/SET_POLICYHOLDER_ACTION';\r\nexport const EDIT_POLICYHOLDER_ACTION = 'app/PolicyHolderView/EDIT_POLICYHOLDER_ACTION';\r\nexport const SET_PAYMENTINFO_ACTION = 'app/PolicyHolderView/SET_PAYMENTINFO_ACTION';\r\nexport const EDIT_PAYMENTINFO_ACTION = 'app/PolicyHolderView/EDIT_PAYMENT_INFO_ACTION';\r\nexport const SET_BENEFICIARIES_ACTION = 'app/PolicyHolderView/SET_BENEFICIARIES_ACTION';\r\nexport const EDIT_BENEFICIARIES_ACTION = 'app/PolicyHolderView/EDIT_BENEFICIARIES_ACTION';\r\nexport const RESET_STATE_POLICYHOLDER_ACTION = 'app/PolicyHolderView/RESET_STATE_POLICYHOLDER_ACTION';\r\n","import { fromJS } from 'immutable';\r\nimport { getObjectPropertyByPath } from 'utils/functions';\r\nimport { SET_LOADED_DRAFT_ACTION } from 'containers/RecoveryContractModal/constants';\r\nimport {\r\n INITIALIZE_ACTION,\r\n SHOW_MODAL_ACTION,\r\n ACCEPT_CONDITIONS_ACTION,\r\n SET_CODE_ACTION,\r\n IS_VALID_CONTRACT_ACTION,\r\n RENEWED_PIN_ACTION,\r\n IS_PDF_RENDER,\r\n CANCEL_UPLOAD_ACTION,\r\n} from './constants';\r\n\r\nimport { SEND_FILES_ACTION } from '../constants';\r\n\r\nconst setLoadedDraft = (state, action) => {\r\n const idContract = getObjectPropertyByPath(\r\n action.contract,\r\n 'petitions[0].id',\r\n );\r\n if (idContract) {\r\n return state.set('idContract', idContract);\r\n }\r\n return state;\r\n};\r\n\r\nconst initialState = fromJS({\r\n showModal: undefined,\r\n acceptedConditions: [],\r\n sendedPin: false,\r\n buttonConditions: {\r\n text: undefined,\r\n render: false,\r\n },\r\n codes: {},\r\n});\r\n\r\nfunction docAndSignatureViewReducer(state = initialState, action) {\r\n const stateJs = state.toJS();\r\n switch (action.type) {\r\n case INITIALIZE_ACTION:\r\n return initialState;\r\n case SHOW_MODAL_ACTION:\r\n if (action.value === undefined) {\r\n return state.merge({\r\n showModal: action.value,\r\n buttonConditions: {\r\n text: undefined,\r\n render: false,\r\n },\r\n });\r\n }\r\n return state.set('showModal', action.value);\r\n case ACCEPT_CONDITIONS_ACTION: {\r\n stateJs.acceptedConditions[stateJs.showModal] = true;\r\n stateJs.showModal = undefined;\r\n stateJs.buttonConditions = {\r\n text: undefined,\r\n render: false,\r\n };\r\n return fromJS(stateJs);\r\n }\r\n case SET_CODE_ACTION:\r\n stateJs.codes[action.nif] = action.code.toUpperCase();\r\n return fromJS(stateJs);\r\n case IS_VALID_CONTRACT_ACTION:\r\n return state.merge({\r\n idContract: action.idContract,\r\n documents: action.documents,\r\n });\r\n case SEND_FILES_ACTION:\r\n return state.set('pinIsSending', true);\r\n case RENEWED_PIN_ACTION:\r\n return state.merge({\r\n sendedPin: true,\r\n pinIsSending: false,\r\n });\r\n case IS_PDF_RENDER:\r\n if (stateJs.acceptedConditions[stateJs.showModal]) {\r\n return state;\r\n }\r\n return state.set('buttonConditions', {\r\n text: 'Lea el documento para aceptar las condiciones',\r\n render: true,\r\n });\r\n case CANCEL_UPLOAD_ACTION:\r\n return state.set('pinIsSending', false);\r\n case SET_LOADED_DRAFT_ACTION:\r\n return setLoadedDraft(state, action);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default docAndSignatureViewReducer;\r\n","import { fromJS } from 'immutable';\r\nimport { deleteOldNifs, addNewNifs } from './functions';\r\nimport {\r\n INITIALIZE_ACTION,\r\n UPLOAD_FILE_ACTION,\r\n DELETE_FILE_ACTION,\r\n UPDATE_EXPIRATION_DATE,\r\n UPDATE_ERROR_EXPIRATION_DATE,\r\n} from './constants';\r\nimport {\r\n SET_FILES_FROM_DRAFT_ACTION,\r\n SET_FILES_SENDED_ACTION,\r\n} from '../constants';\r\n\r\nconst initialState = fromJS({\r\n files: {},\r\n documentsId: {},\r\n expirationDates: {},\r\n expirationDatesErrors: {},\r\n});\r\n\r\nconst intializeUploaders = (state, action) => {\r\n let { files, expirationDates } = deleteOldNifs(\r\n action.nifs,\r\n state.get('files'),\r\n state.get('expirationDates'),\r\n );\r\n\r\n const newData = addNewNifs(action.nifs, files, expirationDates);\r\n files = newData.files;\r\n expirationDates = newData.expirationDates;\r\n\r\n return state.merge({ files, expirationDates });\r\n};\r\n\r\nconst setUploadedFiles = (state, action) => {\r\n const resultFiles = {};\r\n const resultDocumentsId = {};\r\n action.files.forEach(file => {\r\n resultFiles[file.nif] = [{ name: 'DNI GUARDADO', fromDraft: true }];\r\n resultDocumentsId[file.nif] = file.documentId;\r\n });\r\n return state.merge({\r\n files: fromJS(resultFiles),\r\n documentsId: fromJS(resultDocumentsId),\r\n });\r\n};\r\n\r\nconst setFilesSended = (state, action) => {\r\n const resultDocumentsId = {};\r\n action.files.forEach(file => {\r\n if (file.nif) {\r\n resultDocumentsId[file.nif] = file.documentId;\r\n }\r\n });\r\n return state.set('documentsId', resultDocumentsId);\r\n};\r\n\r\nfunction nifUploaderReducer(state = initialState, action) {\r\n const stateJs = state.toJS();\r\n switch (action.type) {\r\n case INITIALIZE_ACTION:\r\n return intializeUploaders(state, action);\r\n case UPDATE_EXPIRATION_DATE:\r\n stateJs.expirationDates[action.id] = action.date;\r\n return fromJS(stateJs);\r\n case UPDATE_ERROR_EXPIRATION_DATE:\r\n stateJs.expirationDatesErrors[action.id] = action.error;\r\n return fromJS(stateJs);\r\n case UPLOAD_FILE_ACTION:\r\n if (!stateJs.files[action.id].length) {\r\n stateJs.expirationDates[action.id] = undefined;\r\n stateJs.expirationDatesErrors[action.id] = undefined;\r\n }\r\n stateJs.files[action.id].push(action.file);\r\n return fromJS(stateJs);\r\n case SET_FILES_FROM_DRAFT_ACTION:\r\n return setUploadedFiles(state, action);\r\n case DELETE_FILE_ACTION:\r\n stateJs.files[action.id].splice(action.index, 1);\r\n stateJs.expirationDates[action.id] = undefined;\r\n stateJs.expirationDatesErrors[action.id] = undefined;\r\n return fromJS(stateJs);\r\n case SET_FILES_SENDED_ACTION:\r\n return setFilesSended(state, action);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default nifUploaderReducer;\r\n","import {\r\n valDate,\r\n valrequired,\r\n} from 'containers/ContractingPage/Forms/FormValidator';\r\nimport includes from 'lodash/includes';\r\nimport moment from 'moment';\r\nimport { fromJS } from 'immutable';\r\n\r\nconst MAX_FILE_SIZE_IN_BYTES = 1024 * 1024 * 5;\r\n\r\nexport const checkDate = (id, date, callback) => {\r\n let validationResult = valrequired(date);\r\n if (validationResult !== undefined) {\r\n callback(id, validationResult);\r\n return;\r\n }\r\n validationResult = valDate(date);\r\n if (validationResult !== undefined) {\r\n callback(id, validationResult);\r\n return;\r\n }\r\n if (moment(date, 'DD/MM/YYYY', true).isBefore()) {\r\n callback(id, 'La fecha de expiración no es válida');\r\n return;\r\n }\r\n\r\n callback(id, undefined);\r\n};\r\n\r\nconst nifIsOld = (newNifs, savedNif) => newNifs.indexOf(savedNif) === -1;\r\n\r\nexport const deleteOldNifs = (newNifs, files, expirationDates) => {\r\n const savedNifsKeys = Object.keys(files.toJS());\r\n const filesJs = files.toJS();\r\n const expirationDatesJs = expirationDates.toJS();\r\n savedNifsKeys.forEach(savedNif => {\r\n if (nifIsOld(newNifs, savedNif)) {\r\n delete filesJs[savedNif];\r\n delete expirationDatesJs[savedNif];\r\n }\r\n });\r\n return {\r\n files: fromJS(filesJs),\r\n expirationDates: fromJS(expirationDatesJs),\r\n };\r\n};\r\n\r\nexport const addNewNifs = (newNifs, files, expirationDates) => {\r\n let newFiles = files;\r\n let newExpirationDates = expirationDates;\r\n newNifs.forEach(nif => {\r\n if (!newFiles.get(`${nif}`)) {\r\n newFiles = newFiles.set([nif], []);\r\n newExpirationDates = expirationDates.set([nif], undefined);\r\n }\r\n });\r\n return { files: newFiles, expirationDates: newExpirationDates };\r\n};\r\n\r\nexport const fileIsValid = file => {\r\n if (!(file.size < MAX_FILE_SIZE_IN_BYTES) || !includes(file.type, 'image/')) {\r\n alert('El archivo debe ser una imagen e inferior a 5MB');\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nexport default checkDate;\r\n","export const INITIALIZE_ACTION = 'app/NifUploader/INITIALIZE_ACTION';\r\nexport const UPLOAD_FILE_ACTION = 'app/NifUploader/UPLOAD_FILE_ACTION';\r\nexport const DELETE_FILE_ACTION = 'app/NifUploader/DELETE_FILE_ACTION';\r\nexport const UPDATE_EXPIRATION_DATE = 'app/NifUploader/UPDATE_EXPIRATION_DATE';\r\nexport const UPDATE_ERROR_EXPIRATION_DATE = 'app/NifUploader/UPDATE_ERROR_EXPIRATION_DATE';\r\n","import find from 'lodash/find';\r\nimport { fromJS } from 'immutable';\r\nimport { UPLOAD_FILE_ACTION, DELETE_FILE_ACTION } from './constants';\r\nimport {\r\n SET_FILES_FROM_DRAFT_ACTION,\r\n SET_FILES_SENDED_ACTION,\r\n} from '../constants';\r\n\r\nconst initialState = fromJS({\r\n file: undefined,\r\n});\r\n\r\nconst setUploadedFile = (state, action) => {\r\n if (find(action.files, { nif: 'null' }) !== undefined) {\r\n return state.merge({\r\n file: fromJS({ name: 'EXTRACTO GUARDADO', fromDraft: true }),\r\n });\r\n }\r\n return state;\r\n};\r\n\r\nconst setFilesSended = (state, action) => {\r\n const file = find(action.files, { nif: null });\r\n if (file) {\r\n return state.set('documentId', file.documentId);\r\n }\r\n return state;\r\n};\r\n\r\nfunction bankStatementUploaderReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case UPLOAD_FILE_ACTION:\r\n return state.set('file', action.file);\r\n case SET_FILES_FROM_DRAFT_ACTION:\r\n return setUploadedFile(state, action);\r\n case DELETE_FILE_ACTION:\r\n return state.set('file', undefined);\r\n case SET_FILES_SENDED_ACTION:\r\n return setFilesSended(state, action);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default bankStatementUploaderReducer;\r\n","export const UPLOAD_FILE_ACTION = 'app/BankStatementUploader/UPLOAD_FILE_ACTION';\r\nexport const DELETE_FILE_ACTION = 'app/BankStatementUploader/DELETE_FILE_ACTION';\r\n","import { fromJS } from 'immutable';\r\nimport {\r\n SET_HOME_DATA_ACTION,\r\n} from './constants';\r\n\r\nconst initialState = fromJS({\r\n homeData: {},\r\n saveObjects: false,\r\n});\r\n\r\nfunction homeViewReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case SET_HOME_DATA_ACTION:\r\n return state.set('homeData', action.data);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default homeViewReducer;\r\n","export const SET_HOME_DATA_ACTION = 'app/HomeView/SET_HOME_DATA_ACTION';\r\n","/*\r\n *\r\n * NewsViewer reducer\r\n *\r\n */\r\n\r\nimport { fromJS } from 'immutable';\r\nimport {\r\n SET_NEWS,\r\n} from './constants';\r\n\r\nconst initialState = fromJS({\r\n});\r\n\r\nfunction newsViewerReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case SET_NEWS:\r\n return state.set('news', action.news);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default newsViewerReducer;\r\n","import { fromJS } from 'immutable';\r\nimport config from 'config.json';\r\nimport {\r\n SET_FAMILY_ACTION,\r\n SET_PRODUCT_ACTION,\r\n INI_COMBOS_CALCULATOR_ACTION,\r\n} from './constants';\r\n\r\nconst initialState = fromJS({\r\n productSelected: 'salud',\r\n familySelected: 0,\r\n});\r\n\r\nconst getArrayFamilies = () => {\r\n //const fams = config.families;\r\n const result = [];\r\n const cloneFams = [...config.families];\r\n\r\n cloneFams.sort((a, b) => (b.productSearchOrder < a.productSearchOrder ? 1 : -1));\r\n for (let i = 0; i < cloneFams.length; i += 1) {\r\n const fam = cloneFams[i];\r\n const familyProducts = getArrayProducts(cloneFams, i);\r\n if (familyProducts.length > 0) {\r\n result.push({\r\n title: fam.title,\r\n position: i,\r\n products: familyProducts,\r\n order: fam.productSearchOrder,\r\n });\r\n }\r\n }\r\n return result;\r\n};\r\n\r\nconst getArrayProducts = (cloneFams, family) => {\r\n const result = [];\r\n for (let i = 0; i < cloneFams[family].products.length; i += 1) {\r\n const product = cloneFams[family].products[i];\r\n result.push({\r\n title: config.products[product].productInfo.name,\r\n path: cloneFams[family].products[i],\r\n });\r\n }\r\n return result;\r\n};\r\n\r\nconst productSearchReducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case INI_COMBOS_CALCULATOR_ACTION: {\r\n return state.set('familySelect', getArrayFamilies());\r\n }\r\n case SET_FAMILY_ACTION: {\r\n const cmb = state.get('familySelect');\r\n return state.merge({\r\n familySelected: action.family,\r\n productSelect: cmb[action.family].products,\r\n productSelected: cmb[action.family].products[0].path,\r\n });\r\n }\r\n case SET_PRODUCT_ACTION:\r\n return state.set('productSelected', action.product);\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default productSearchReducer;\r\n","/*\r\n *\r\n * ProductSearch constants\r\n *\r\n */\r\n\r\nexport const INI_COMBOS_CALCULATOR_ACTION = 'app/ProductSearch/INI_COMBOS_CALCULATOR_ACTION';\r\nexport const SET_FAMILY_ACTION = 'app/ProductSearch/SET_FAMILY_ACTION';\r\nexport const SET_PRODUCT_ACTION = 'app/ProductSearch/SET_PRODUCT_ACTION';\r\n","import { fromJS } from 'immutable';\r\nimport {\r\n SHOW_VIDEO_ACTION,\r\n} from './constants';\r\n\r\nconst initialState = fromJS({\r\n showVideo: false,\r\n});\r\n\r\nfunction contractingPageReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case SHOW_VIDEO_ACTION:\r\n return state.set('showVideo', !state.get('showVideo'));\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default contractingPageReducer;\r\n","export const SHOW_VIDEO_ACTION = 'app/HomePage/SHOW_VIDEO_ACTION';\r\n","import { fromJS } from 'immutable';\r\nimport {\r\n SHOW_RECOVERY_CONTRACT_MODAL_ACTION,\r\n HIDE_RECOVERY_CONTRACT_MODAL_ACTION,\r\n RECOVERY_ERROR_ACTION,\r\n RECOVERY_REQUIRES_NIF_ACTION,\r\n SET_LOADED_DRAFT_ACTION,\r\n PRELOAD_DRAFT_ACTION,\r\n LOAD_DRAFT_ACTION,\r\n} from './constants';\r\n\r\nconst initialBaseState = {\r\n show: false,\r\n finished: false,\r\n error: false,\r\n message: undefined,\r\n requiresNif: false,\r\n isLoading: false,\r\n qparams: undefined,\r\n fromEmail: false,\r\n};\r\n\r\nconst initialState = fromJS(initialBaseState);\r\n\r\nconst isLoadingByUrl = state => {\r\n return state.get('show') === false;\r\n};\r\n\r\nconst setLoadingDraft = (state, action) => {\r\n const nextState = {\r\n isLoading: true,\r\n };\r\n if (isLoadingByUrl(state)) {\r\n nextState.fromEmail = true;\r\n nextState.show = true;\r\n }\r\n return state.merge({\r\n ...nextState,\r\n });\r\n};\r\n\r\nfunction recoveryContractModalReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case SHOW_RECOVERY_CONTRACT_MODAL_ACTION:\r\n return state.set('show', true);\r\n case PRELOAD_DRAFT_ACTION:\r\n case LOAD_DRAFT_ACTION:\r\n return setLoadingDraft(state, action);\r\n case HIDE_RECOVERY_CONTRACT_MODAL_ACTION:\r\n return state.merge(initialBaseState);\r\n case SET_LOADED_DRAFT_ACTION:\r\n return state.merge({\r\n finished: true,\r\n error: false,\r\n isLoading: false,\r\n message:\r\n 'Se ha recuperado la solicitud correctamente. Puedes seguir con el proceso de contratación.',\r\n });\r\n case RECOVERY_ERROR_ACTION:\r\n return state.merge({\r\n finished: true,\r\n error: true,\r\n isLoading: false,\r\n message: action.error[0].description,\r\n });\r\n\r\n case RECOVERY_REQUIRES_NIF_ACTION: {\r\n return state.merge({\r\n requiresNif: true,\r\n isLoading: false,\r\n fromEmail: false,\r\n show: true,\r\n qparams: action.qparams,\r\n });\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default recoveryContractModalReducer;\r\n","import { fromJS } from 'immutable';\r\nimport find from 'lodash/find';\r\nimport contractingConfig from 'config/contracting.config.json';\r\nimport findIndex from 'lodash/findIndex';\r\nimport { SET_LOADED_DRAFT_ACTION } from 'containers/RecoveryContractModal/constants';\r\nimport { getObjectPropertyByPath, getProductConfigById } from 'utils/functions';\r\nimport {\r\n INITIALIZE_CONTRACT_ACTION,\r\n NEXT_STEP_ACTION,\r\n LAST_STEP_ACTION,\r\n VALIDATE_CONTRACT_ACTION,\r\n CANCEL_CONFIRMATION_ACTION,\r\n UPDATE_FEE_ACTION,\r\n CONFIRMATE_CONTRACT_ACTION,\r\n CANCEL_LOAD_ACTION,\r\n SET_POLICY_ACTION,\r\n SET_POLICY_ERROR_ACTION,\r\n SET_CODE_ACTION,\r\n} from './constants';\r\n\r\nconst initialState = fromJS({\r\n fee: 0,\r\n step: 0,\r\n policies: [],\r\n policiesError: [],\r\n promoterNif: undefined,\r\n});\r\n\r\nconst setLoadedDraft = (state, action) => {\r\n const infoCesion = getObjectPropertyByPath(\r\n action.contract,\r\n 'petitions[0].infoCesion',\r\n );\r\n const infoLopd = getObjectPropertyByPath(\r\n action.contract,\r\n 'petitions[0].infoLOPD',\r\n );\r\n const comercialDetails = getObjectPropertyByPath(\r\n action.contract,\r\n 'petitions[0].comercialDetails',\r\n );\r\n const draftProduct = action.contract.petitions[0].product;\r\n const productConfig = getProductConfigById(draftProduct);\r\n\r\n return state.merge({\r\n policies: [\r\n { id: 'infoCesion', value: infoCesion },\r\n { id: 'infoLopd', value: infoLopd },\r\n ],\r\n productConfig,\r\n promoterNif: comercialDetails ? comercialDetails.nifPromoter : undefined,\r\n code: action.code,\r\n key: action.key,\r\n step: 0,\r\n });\r\n};\r\n\r\nconst setPolicy = (state, action) => {\r\n const actualPolicies = state.get('policies').toJS();\r\n const policiesError = state.get('policiesError').toJS();\r\n const policy = find(actualPolicies, { id: action.id });\r\n\r\n // Check the error and delete\r\n const errorIndex = policiesError.indexOf(action.id);\r\n if (errorIndex !== -1) {\r\n policiesError.splice(errorIndex, 1);\r\n }\r\n\r\n // Initialize\r\n if (policy === undefined) {\r\n actualPolicies.push({ id: action.id, value: true });\r\n } else {\r\n policy.value = !policy.value;\r\n actualPolicies[findIndex(actualPolicies, { id: action.id })] = policy;\r\n }\r\n\r\n return state.merge({\r\n policies: fromJS(actualPolicies),\r\n policiesError: fromJS(policiesError),\r\n });\r\n};\r\n\r\nconst setPolicyError = state => {\r\n const policyConfig = contractingConfig.policy;\r\n const errors = [];\r\n for (let i = 0; i < policyConfig.length; i += 1) {\r\n const pol = find(state.get('policies').toJS(), {\r\n id: policyConfig[i].id,\r\n });\r\n if (policyConfig[i].mandatory && (pol === undefined || !pol.value)) {\r\n errors.push(policyConfig[i].id);\r\n }\r\n }\r\n return state.set('policiesError', fromJS(errors));\r\n};\r\n\r\nfunction contractingPageReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case INITIALIZE_CONTRACT_ACTION:\r\n return initialState.merge({\r\n productConfig: action.productConfig,\r\n });\r\n case NEXT_STEP_ACTION:\r\n return state.set('step', state.get('step') + 1);\r\n case LAST_STEP_ACTION:\r\n return state.set('step', state.get('step') - 1);\r\n case CONFIRMATE_CONTRACT_ACTION:\r\n case VALIDATE_CONTRACT_ACTION:\r\n return state.set('isConfirmationLoading', true);\r\n case CANCEL_CONFIRMATION_ACTION:\r\n case CANCEL_LOAD_ACTION:\r\n return state.set('isConfirmationLoading', false);\r\n case UPDATE_FEE_ACTION:\r\n return state.set('fee', action.newFee);\r\n case SET_POLICY_ACTION:\r\n return setPolicy(state, action);\r\n case SET_POLICY_ERROR_ACTION:\r\n return setPolicyError(state);\r\n case SET_CODE_ACTION:\r\n return state.set('code', action.code);\r\n case SET_LOADED_DRAFT_ACTION:\r\n return setLoadedDraft(state, action);\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default contractingPageReducer;\r\n","/**\r\n * Combine all reducers in this file and export the combined reducers.\r\n * If we were to do this in store.js, reducers wouldn't be hot reloadable.\r\n */\r\n\r\nimport { combineReducers } from 'redux-immutable';\r\nimport { fromJS } from 'immutable';\r\nimport { LOCATION_CHANGE } from 'react-router-redux';\r\nimport { reducer as formReducer } from 'redux-form/immutable';\r\n\r\nimport languageProviderReducer from 'containers/LanguageProvider/reducer';\r\nimport medicalTeamPageReducer from 'containers/MedicalTeamPage/reducer';\r\nimport faqsReducer from 'containers/Faqs/reducer';\r\nimport menuReducer from 'containers/Menu/reducer';\r\nimport calculatorReducer from 'containers/CalculatorPage/reducer';\r\nimport tabsReducer from 'containers/Tabs/reducer';\r\nimport officeSearcher from 'containers/OfficeSearcher/reducer';\r\nimport callRequestBox from 'containers/CallRequestBox/reducer';\r\nimport insuredsViewReducer from 'containers/ContractingPage/InsuredsView/reducer';\r\nimport policyHolderViewReducer from 'containers/ContractingPage/PolicyHolderView/reducer';\r\nimport docAndSignatureViewReducer from 'containers/ContractingPage/DocAndSignatureView/reducer';\r\nimport nifUploaderReducer from 'containers/FilesUploader/NifUploader/reducer';\r\nimport bankStatementUploaderReducer from 'containers/FilesUploader/BankStatementUploader/reducer';\r\nimport homeViewReducer from 'containers/ContractingPage/HomeView/reducer';\r\nimport newsViewerReducer from 'containers/NewsViewer/reducer';\r\nimport productSearchReducer from 'containers/ProductSearch/reducer';\r\nimport homePageReducer from 'containers/HomePage/reducer';\r\nimport recoveryContractModalReducer from 'containers/RecoveryContractModal/reducer';\r\nimport contractingPageReducer from 'containers/ContractingPage/reducer';\r\n/*\r\n * routeReducer\r\n *\r\n * The reducer merges route location changes into our immutable state.\r\n * The change is necessitated by moving to react-router-redux@4\r\n *\r\n */\r\n\r\n// Initial routing state\r\nconst routeInitialState = fromJS({\r\n locationBeforeTransitions: null,\r\n});\r\n\r\n/**\r\n * Merge route into the global application state\r\n */\r\nfunction routeReducer(state = routeInitialState, action) {\r\n switch (action.type) {\r\n /* istanbul ignore next */\r\n case LOCATION_CHANGE:\r\n return state.merge({\r\n locationBeforeTransitions: action.payload,\r\n });\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\n/**\r\n * Creates the main reducer with the asynchronously loaded ones\r\n */\r\nexport default function createReducer(asyncReducers) {\r\n return combineReducers({\r\n form: formReducer,\r\n route: routeReducer,\r\n language: languageProviderReducer,\r\n medicalTeamPage: medicalTeamPageReducer,\r\n faqsState: faqsReducer,\r\n calculatorPage: calculatorReducer,\r\n menuState: menuReducer,\r\n tabsComponent: tabsReducer,\r\n officeSearcher,\r\n nifUploader: nifUploaderReducer,\r\n bankStatementUploader: bankStatementUploaderReducer,\r\n callRequestBox,\r\n insuredsView: insuredsViewReducer,\r\n policyHolderView: policyHolderViewReducer,\r\n docAndSignatureView: docAndSignatureViewReducer,\r\n homeView: homeViewReducer,\r\n newsViewer: newsViewerReducer,\r\n productSearch: productSearchReducer,\r\n homePage: homePageReducer,\r\n recoveryContractModal: recoveryContractModalReducer,\r\n contractingPage: contractingPageReducer,\r\n ...asyncReducers,\r\n });\r\n}\r\n","/**\r\n * Create the store with asynchronously loaded reducers\r\n */\r\n\r\nimport { createStore, applyMiddleware, compose } from 'redux';\r\nimport Immutable, { fromJS } from 'immutable';\r\nimport { routerMiddleware } from 'react-router-redux';\r\nimport createSagaMiddleware from 'redux-saga';\r\n\r\nimport { defaultSaga as medicalTeamPageSaga } from 'containers/MedicalTeamPage/sagas';\r\nimport { defaultSaga as officeSearchSaga } from 'containers/OfficeSearcher/sagas';\r\nimport { defaultSaga as newsViewerSaga } from 'containers/NewsViewer/sagas';\r\nimport { defaultSaga as filesUploaderSaga } from 'containers/FilesUploader/sagas';\r\nimport recoveryContractModalSaga from 'containers/RecoveryContractModal/sagas';\r\nimport contractingDefaultSaga from 'containers/ContractingPage/sagas/defaultSagas';\r\nimport contractingRecalculateSaga from 'containers/ContractingPage/sagas/recalculateSagas';\r\n\r\nimport createReducer from './reducers';\r\n\r\nconst sagaMiddleware = createSagaMiddleware();\r\n\r\nexport default function configureStore(initialState = {}, history) {\r\n // Create the store with two middlewares\r\n // 1. sagaMiddleware: Makes redux-sagas work\r\n // 2. routerMiddleware: Syncs the location/URL path to the state\r\n const middlewares = [sagaMiddleware, routerMiddleware(history)];\r\n\r\n const enhancers = [applyMiddleware(...middlewares)];\r\n\r\n // If Redux DevTools Extension is installed use it, otherwise use Redux compose\r\n /* eslint-disable no-underscore-dangle */\r\n const composeEnhancers =\r\n process.env.REACT_APP_ENVIRONMENT !== 'production' &&\r\n process.env.REACT_APP_ENVIRONMENT !== 'stage' &&\r\n typeof window === 'object' &&\r\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\r\n serialize: {\r\n immutable: Immutable,\r\n },\r\n })\r\n : compose;\r\n /* eslint-enable */\r\n\r\n const store = createStore(\r\n createReducer(),\r\n fromJS(initialState),\r\n composeEnhancers(...enhancers),\r\n );\r\n\r\n // Extensions\r\n store.runSaga = sagaMiddleware.run;\r\n sagaMiddleware.run(medicalTeamPageSaga);\r\n sagaMiddleware.run(officeSearchSaga);\r\n sagaMiddleware.run(newsViewerSaga);\r\n sagaMiddleware.run(filesUploaderSaga);\r\n sagaMiddleware.run(recoveryContractModalSaga);\r\n sagaMiddleware.run(contractingDefaultSaga);\r\n sagaMiddleware.run(contractingRecalculateSaga);\r\n store.asyncReducers = {}; // Async reducer registry\r\n\r\n // Make reducers hot reloadable, see http://mxs.is/googmo\r\n /* istanbul ignore next */\r\n if (module.hot) {\r\n module.hot.accept('./reducers', () => {\r\n import('./reducers').then(reducerModule => {\r\n const createReducers = reducerModule.default;\r\n const nextReducers = createReducers(store.asyncReducers);\r\n\r\n store.replaceReducer(nextReducers);\r\n });\r\n });\r\n }\r\n\r\n return store;\r\n}\r\n","/**\r\n * i18n.js\r\n *\r\n * This will setup the i18n language files and locale data for your app.\r\n *\r\n */\r\nimport { addLocaleData } from 'react-intl';\r\nimport enLocaleData from 'react-intl/locale-data/en';\r\n\r\nimport { DEFAULT_LOCALE } from './containers/App/constants'; // eslint-disable-line\r\nimport enTranslationMessages from './translations/en.json';\r\n\r\nexport const appLocales = [\r\n 'en',\r\n];\r\n\r\naddLocaleData(enLocaleData);\r\n\r\nexport const formatTranslationMessages = (locale, messages) => {\r\n const defaultFormattedMessages = locale !== DEFAULT_LOCALE\r\n ? formatTranslationMessages(DEFAULT_LOCALE, enTranslationMessages)\r\n : {};\r\n return Object.keys(messages).reduce((formattedMessages, key) => {\r\n let message = messages[key];\r\n if (!message && locale !== DEFAULT_LOCALE) {\r\n message = defaultFormattedMessages[key];\r\n }\r\n return Object.assign(formattedMessages, { [key]: message });\r\n }, {});\r\n};\r\n\r\nexport const translationMessages = {\r\n en: formatTranslationMessages('en', enTranslationMessages),\r\n};\r\n","import conformsTo from 'lodash/conformsTo';\r\nimport isEmpty from 'lodash/isEmpty';\r\nimport isFunction from 'lodash/isFunction';\r\nimport isObject from 'lodash/isObject';\r\nimport isString from 'lodash/isString';\r\nimport invariant from 'invariant';\r\nimport warning from 'warning';\r\nimport createReducer from 'reducers';\r\n\r\n/**\r\n * Validate the shape of redux store\r\n */\r\nexport function checkStore(store) {\r\n const shape = {\r\n dispatch: isFunction,\r\n subscribe: isFunction,\r\n getState: isFunction,\r\n replaceReducer: isFunction,\r\n runSaga: isFunction,\r\n asyncReducers: isObject,\r\n };\r\n invariant(\r\n conformsTo(store, shape),\r\n '(app/utils...) asyncInjectors: Expected a valid redux store'\r\n );\r\n}\r\n\r\n/**\r\n * Inject an asynchronously loaded reducer\r\n */\r\nexport function injectAsyncReducer(store, isValid) {\r\n return function injectReducer(name, asyncReducer) {\r\n if (!isValid) checkStore(store);\r\n\r\n invariant(\r\n isString(name) && !isEmpty(name) && isFunction(asyncReducer),\r\n '(app/utils...) injectAsyncReducer: Expected `asyncReducer` to be a reducer function'\r\n );\r\n\r\n if (Reflect.has(store.asyncReducers, name)) return;\r\n\r\n store.asyncReducers[name] = asyncReducer; // eslint-disable-line no-param-reassign\r\n store.replaceReducer(createReducer(store.asyncReducers));\r\n };\r\n}\r\n\r\n/**\r\n * Inject an asynchronously loaded saga\r\n */\r\nexport function injectAsyncSagas(store, isValid) {\r\n return function injectSagas(sagas) {\r\n if (!isValid) checkStore(store);\r\n\r\n invariant(\r\n Array.isArray(sagas),\r\n '(app/utils...) injectAsyncSagas: Expected `sagas` to be an array of generator functions'\r\n );\r\n\r\n warning(\r\n !isEmpty(sagas),\r\n '(app/utils...) injectAsyncSagas: Received an empty `sagas` array'\r\n );\r\n\r\n sagas.map(store.runSaga);\r\n };\r\n}\r\n\r\n/**\r\n * Helper for creating injectors\r\n */\r\nexport function getAsyncInjectors(store) {\r\n checkStore(store);\r\n\r\n return {\r\n injectReducer: injectAsyncReducer(store, true),\r\n injectSagas: injectAsyncSagas(store, true),\r\n };\r\n}\r\n","const errorLoading = err => {\r\n console.error('Dynamic page loading failed', err); // eslint-disable-line no-console\r\n};\r\n\r\nconst loadModule = cb => componentModule => {\r\n cb(null, componentModule.default);\r\n};\r\n\r\nexport function buildRoute(pathRoute, nameRoute, arrayModules) {\r\n return {\r\n path: pathRoute,\r\n name: nameRoute,\r\n getComponent(nextState, cb) {\r\n const importModules = Promise.all(arrayModules);\r\n const renderRoute = loadModule(cb);\r\n\r\n importModules.then(([component]) => {\r\n renderRoute(component);\r\n });\r\n\r\n importModules.catch(errorLoading);\r\n },\r\n };\r\n}\r\n\r\nexport function buildRouteSagas(\r\n pathRoute,\r\n nameRoute,\r\n arrayModules,\r\n injectReducer,\r\n injectSagas,\r\n) {\r\n return {\r\n path: pathRoute,\r\n name: nameRoute,\r\n getComponent(nextState, cb) {\r\n const importModules = Promise.all(arrayModules);\r\n const renderRoute = loadModule(cb);\r\n\r\n importModules.then(([reducer, sagas, component]) => {\r\n injectReducer(nameRoute, reducer.default);\r\n // Podría no ser necesario Sagas en una vista,\r\n // por lo que el segundo parámetro sería el componente\r\n if (injectSagas) {\r\n injectSagas(sagas.default);\r\n renderRoute(component);\r\n } else {\r\n renderRoute(sagas);\r\n }\r\n });\r\n\r\n importModules.catch(errorLoading);\r\n },\r\n };\r\n}\r\n","// These are the pages you can go to.\r\n// They are all wrapped in the App component, which should contain the navbar etc\r\n// See http://blog.mxstbr.com/2016/01/react-apps-with-pages for more information\r\n// about the code splitting business\r\nimport { getAsyncInjectors } from 'utils/asyncInjectors';\r\nimport { buildRoute, buildRouteSagas } from 'utils/buildRoute';\r\n\r\nconst errorLoading = err => {\r\n console.error('Dynamic page loading failed', err); // eslint-disable-line no-console\r\n};\r\n\r\nconst loadModule = cb => componentModule => {\r\n cb(null, componentModule.default);\r\n};\r\n\r\nexport default function createRoutes(store) {\r\n // Create reusable async injectors using getAsyncInjectors factory\r\n const { injectReducer, injectSagas } = getAsyncInjectors(store); // eslint-disable-line no-unused-vars\r\n return [\r\n buildRoute('/dental', 'home', [import('containers/MedicalTeamPage')]),\r\n\r\n // Product page\r\n buildRouteSagas(\r\n '/seguro/:product',\r\n 'productPage',\r\n [\r\n import('containers/ProductPage/reducer'),\r\n import('containers/ProductPage/sagas'),\r\n import('containers/ProductPage'),\r\n ],\r\n injectReducer,\r\n injectSagas,\r\n ),\r\n\r\n // Calculator\r\n // buildRouteSagas(\r\n // '/calculadora/:product',\r\n // 'calculatorPage',\r\n // [\r\n // import('containers/CalculatorPage/reducer'),\r\n // import('containers/CalculatorPage'),\r\n // ],\r\n // injectReducer,\r\n // null,\r\n // ),\r\n\r\n // Contracting\r\n // buildRoute('/contratar/:product', 'contractingPage', [\r\n // import('containers/ContractingPage'),\r\n // ]),\r\n // buildRoute('/final', 'thankYouPage', [import('containers/ThankYouPage')]),\r\n\r\n // Medical team\r\n buildRoute('/cuadromedico', 'medicalTeamPage', [\r\n import('containers/MedicalTeamPage'),\r\n ]),\r\n // buildRoute('/talleres', 'medicalTeamPage', [\r\n // import('containers/MedicalTeamPage/Talleres'),\r\n // ]),\r\n\r\n // Offices\r\n // buildRouteSagas(\r\n // '/oficinas',\r\n // 'officesPage',\r\n // [\r\n // import('containers/OfficesPage/reducer'),\r\n // import('containers/OfficesPage'),\r\n // ],\r\n // injectReducer,\r\n // null,\r\n // ),\r\n\r\n // FAQs\r\n // buildRouteSagas(\r\n // '/faqs',\r\n // 'FaqsPage',\r\n // [import('containers/FaqsPage/reducer'), import('containers/FaqsPage')],\r\n // injectReducer,\r\n // null,\r\n // ),\r\n\r\n {\r\n path: '*',\r\n name: 'notfound',\r\n getComponent(nextState, cb) {\r\n import('containers/NotFoundPage')\r\n .then(loadModule(cb))\r\n .catch(errorLoading);\r\n },\r\n },\r\n ];\r\n}\r\n","import 'core-js/es5';\r\nimport 'core-js/es6';\r\n\r\n// Import all the third party stuff\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { Router, browserHistory } from 'react-router';\r\nimport { syncHistoryWithStore } from 'react-router-redux';\r\nimport './assets/css/styles.css';\r\n\r\n// CSS from styles npm package\r\n// import 'styles/dist/css/styles.css';\r\n\r\n// Import root app\r\nimport App from './containers/App';\r\n\r\n// Import selector for `syncHistoryWithStore`\r\nimport { makeSelectLocationState } from './containers/App/selectors';\r\n\r\n// Import Language Provider\r\nimport LanguageProvider from './containers/LanguageProvider';\r\n\r\n// Inits sbjs if tracking cookie is enabled\r\nimport { initSbjs } from 'utils/cookies';\r\n\r\n// Load the favicon, the manifest.json file and the .htaccess file\r\n/* eslint-disable import/no-unresolved, import/extensions */\r\n//import '!file-loader?name=[name].[ext]!/public/favicon.ico';\r\n//import '!file-loader?name=[name].[ext]!/public/manifest.json';\r\n//import 'file-loader?name=[name].[ext]!/public/.htaccess';\r\n//import 'file-loader?name=[name].[ext]!/public/robots.txt';\r\n//import 'file-loader?name=[name].[ext]!/public/sitemap.xml';\r\n/* eslint-enable import/no-unresolved, import/extensions */\r\n\r\nimport configureStore from './store';\r\n\r\n// Import i18n messages\r\nimport { translationMessages } from './i18n';\r\n\r\n// Import root routes\r\nimport createRoutes from './routes';\r\n\r\n// Create redux store with history\r\n// this uses the singleton browserHistory provided by react-router\r\n// Optionally, this could be changed to leverage a created history\r\n// e.g. `const browserHistory = useRouterHistory(createBrowserHistory)();`\r\nconst initialState = {};\r\nexport const store = configureStore(initialState, browserHistory);\r\n\r\n// Sync history and store, as the react-router-redux reducer\r\n// is under the non-default key (\"routing\"), selectLocationState\r\n// must be provided for resolving how to retrieve the \"route\" in the state\r\nconst history = syncHistoryWithStore(browserHistory, store, {\r\n selectLocationState: makeSelectLocationState(),\r\n});\r\n\r\n// Set up the router, wrapping all Routes in the App component\r\nconst rootRoute = {\r\n component: App,\r\n childRoutes: createRoutes(store),\r\n};\r\n\r\nconst isProduction = process.env.REACT_APP_ENVIRONMENT === 'production';\r\n\r\nconst logGoogleAnalyticsPageview = () => {\r\n if (isProduction) {\r\n if (!window.ga) {\r\n window.onload = () => {\r\n window.ga('gtm1.require', 'ec');\r\n window.ga(\r\n 'gtm1.send',\r\n 'pageview',\r\n window.location.pathname + window.location.search,\r\n );\r\n };\r\n } else {\r\n window.ga(\r\n 'gtm1.send',\r\n 'pageview',\r\n window.location.pathname + window.location.search,\r\n );\r\n }\r\n }\r\n};\r\n\r\ninitSbjs();\r\n\r\nconst render = (messages) => {\r\n ReactDOM.render(\r\n \r\n \r\n {\r\n window.scrollTo(0, 0);\r\n logGoogleAnalyticsPageview();\r\n }}\r\n history={history}\r\n routes={rootRoute}\r\n />\r\n \r\n ,\r\n document.getElementById('app'),\r\n );\r\n};\r\n\r\n// Hot reloadable translation json files\r\nif (module.hot) {\r\n // modules.hot.accept does not accept dynamic dependencies,\r\n // have to be constants at compile-time\r\n module.hot.accept('./i18n', () => {\r\n render(translationMessages);\r\n });\r\n}\r\n\r\n// Chunked polyfill for browsers without Intl support\r\nif (!window.Intl) {\r\n new Promise((resolve) => {\r\n resolve(import('intl'));\r\n })\r\n .then(() => Promise.all([import('intl/locale-data/jsonp/en.js')]))\r\n .then(() => render(translationMessages))\r\n .catch((err) => {\r\n throw err;\r\n });\r\n} else {\r\n render(translationMessages);\r\n}\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\n// reportWebVitals();\r\n","// makeSelectLocationState expects a plain JS object for the routing state\r\nconst makeSelectLocationState = () => {\r\n let prevRoutingState;\r\n let prevRoutingStateJS;\r\n\r\n return (state) => {\r\n const routingState = state.get('route'); // or state.route\r\n\r\n if (!routingState.equals(prevRoutingState)) {\r\n prevRoutingState = routingState;\r\n prevRoutingStateJS = routingState.toJS();\r\n }\r\n\r\n return prevRoutingStateJS;\r\n };\r\n};\r\n\r\nexport {\r\n makeSelectLocationState,\r\n};\r\n"],"sourceRoot":""}