{"version":3,"sources":["components/Header/Header.jsx","components/Assistant/Assistant.js","Services/TokenServices.js","Services/JSONExchangeTSV.js","Services/WebServicesTSV.js","Services/InsuranceApplicationServices.js","Services/CategoryServices.js","components/ButtonTSV/ButtonTSV.js","Services/LocalStorageTokenServices.js","components/ModalContact/ModalContact.js","components/Footer/Footer.js","pages/LoadingPage/LoadingPage.js","Services/JSONRider.js","components/CategoryCard/CategoryCard.js","components/CategoryCard/CategoryList.js","pages/Welcome/Welcome.js","Services/ProcedureServices.js","Services/NumericalRangeCardServices.js","Services/ParameterService.js","Services/SelectedProductListServices.js","Services/MatrixCardServices.js","Services/Procedure.js","components/HeaderStepper/HeaderStepper.js","Services/QuestionServices.js","Services/ProductServices.js","Services/JSONProcessFileServices.js","Services/SelectedRiderListService.js","components/ProductCard/ModalProductDescription.jsx","components/ProductCard/ProductCard.js","components/SelectedProductsList/SelectedProductsList.js","Services/YesNoQuestionCardServices.js","components/ModalInfo/ModalInfo.js","components/YesNoQuestionCard/YesNoQuestionCard.js","Services/MultipleChoiseCardServices.js","components/MultipleChoiceCard/MultipleChoiceCard.js","Services/LongAnswerCardServices.js","components/LongAnswerCard/LongAnswerCard.js","Services/DateCardServices.js","components/DateCard/DateCard.js","components/NumericalRangeCard/NumericalRangeCard.js","Services/UniqueSelectionCardServices.js","components/UniqueSelectionCard/UniqueSelectionCard.js","components/Field/Field.js","components/CardField/CardField.js","components/MatrixCard/MatrixCard.js","components/CardType/CardType.js","Services/RatesServiceTSV.js","Services/SliderCardService.js","components/SliderCard/SliderCard.js","components/SelectedRider/SelectedRider.js","components/SelectedRider/SelectedRiderMultiple.js","components/FieldRider/FieldRider.js","Services/RiderCardService.js","components/RiderCard/RiderCard.js","components/SelectedRiderList/PaymentDetails.js","Services/SelectedRisksServices.js","Services/RiskServices.js","components/SelectedRiderList/SelectedRiderList.js","Services/SelectedRiderSavingService.js","components/SelectedRiderS4/SelectedSavingProjectionS4.js","components/SelectedRiderS4/SelectedRiderS4.js","components/SelectedRiderS4/SelectedRiderListS4.js","components/SelectedRiderSaving/SelectedSavingProjection.js","components/SelectedRiderSaving/SelectedRiderSaving.js","components/StepperForm/StepperForm.js","pages/LandingPage/LandingPage.jsx","pages/Terms/Terms.jsx","pages/Privacy/Privacy.jsx","pages/Home/Home.jsx","App.js","index.js","../bootstrap/bs-stepper/dist/js/bs-stepper.js"],"names":["Header","_React$Component","_inherits","_super","_createSuper","props","_this","_classCallCheck","call","state","_createClass","key","value","_jsxs","className","children","_jsx","Navbar","Container","Brand","Link","to","location","_objectSpread","pathname","src","React","Component","TokenServices","EncryptToken","token","tokenEncrypt","CryptoJS","AES","encrypt","JSON","stringify","toString","document","cookie","concat","DecryptToken","split","filter","x","trim","length","decrypt","enc","Utf8","replace","GetPublicToken","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","result","wrap","_context2","prev","next","statusResponse","data","error","fetch","process","method","headers","then","_ref2","_callee","response","_context","ok","json","resultapi","stop","_x","apply","arguments","catch","console","log","abrupt","dateExpitationLocal","Date","getTime","this","parse","atob","exp","JSONExchangeTSV","localStorage","setItem","insured_persons","serie","product_questions","selected_product","risk","risk_questions","insured_risk","product_payment","payment","details","applicationData","rated_table","getItem","insuredPersons","jsonTsv","ratedTable","rateTable","insuredPerson","undefined","index","id_insured","idInsured","splice","btoa","push","productQuestions","productsQuestions","question","id_question","main_matrix","foundQuestion","question_list","forEach","subQuestion","productsQuestion","selectedProduct","risks","riskQuesitons","riskQuestions","riskQuestion","insuredRisk","insuredRisks","productPayment","id_tsv_field","question_text","includes","riskAnswer","answerList","answer_list","answer","urlBaseTSV","_process$env","REACT_APP_CANCER_PRODUCTS_INFO","REACT_APP_SSN_QUESTION","REACT_APP_CLIENTID_TSV","REACT_APP_CLIENTSECRET_TSV","WebServicesTSV","SurchargePercentage","_ref","person","myHeaders","Headers","append","Feet","Inch","Weight","status","_x2","PeopleAge","_ref3","_callee4","body","requestOptions","_context4","_ref4","_callee3","_context3","_x4","_x3","PersonProductInfo","_ref5","_callee6","personInfo","_context6","_ref6","_callee5","_context5","_x6","_x5","ApplicationSales","_ref7","_callee8","application","_context8","_ref8","_callee7","_context7","_x8","_x7","PolicyTotals","_ref9","_callee10","idTSVProduct","mainInsuredPerson","productsInfo","productRequest","questionSSN","_iterator","_step","product","_context10","jsonExchangeTSV","getCurrentProductQuestions","quesiton","dob","dateOfBirth","sex","gender","ssn","value_answer","_createForOfIteratorHelper","s","n","done","id_tsv","coverageType","productType","firstdiag","firstDiag","t0","e","f","finish","_ref10","_callee9","_context9","_x11","_x9","_x10","SalesForce","_ref11","_callee12","contactInfo","_context12","_ref12","_callee11","_context11","_x13","_x12","OverallLoadStatus","_callee14","_context14","_ref14","_callee13","_context13","_x14","PolicyLoadStatus","_callee16","_context16","_ref16","_callee15","_context15","_x15","InsuranceAplicationServices","AddInsuranceApp","tokenService","urlBase","CategoryServices","GetCategories","list","ExistsRiskInCategory","idCategory","existsRiskInCategory","ButtonTSV","btnClick","bind","_assertThisInitialized","function","onClick","colorbBtn","productButton","text","customClass","width","height","fillRule","clipRule","xmlns","fill","viewBox","d","cx","cy","r","transform","LocalStorageTokenServices","CreateDateExpirationToken","responseToken","sent","RefreshDateExpirationToken","ValidateToken","ModalContact","handleContactSaleConfirm","contactValidation","firstName","name","lastName","surname","email","phoneNumber","phone","message","comments","addContactInfo","info","webServicesTSV","firstSurname","IdJSONProcess","setState","showMessage","clearData","productValidate","productMessage","nameValidate","nameMessage","surnameValidate","surnameMessage","emailValidate","emailMessage","phoneValidate","phoneMessage","commentsValidate","commentsMessage","infoSendedMessage","hidden","class","localStorageTokenServices","categoryServices","products","loading","listCategory","refresh","prevProps","prevState","reset","_this2","loadCategories","parseInt","fieldName","nameVal","surnameVal","emailVal","phoneVal","commentsVal","match","_defineProperty","_jsxs2","_this3","id","tabIndex","role","stopPropagation","_Fragment","style","htmlFor","onKeyPress","preventDefault","maxLength","autoComplete","placeholder","onChange","event","validateUserField","target","handleSaleSelectChange","defaultValue","map","h","i","rows","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Footer","handleHover","display","querySelector","overflow","addEventListener","onLeave","path","window","open","LoadingPage","JSONRider","riders","saving_amount","jsonRider","savingAmount","_setRiders","rider","faceAmountText","Number","faceAmount","categoryName","CategoryCard","imageUrl","des","options","categoryCardFunction","description","img","substring","lastIndexOf","categoryFunction","title","isJSONinitialized","getCurrentSerie","id_series","initializeJSON","addPersonToInsuredPersons","primary_insured","setSerie","buttonText","CategoryList","helpSticky","getElementById","helpChat","hiddenHelpSticky","categories","category","image","ProcedureServices","GetOperators","NumericalRangeCardServices","SetPropertiesBeforeRender","fieldConfig","rangeOpValues","minValue","maxVal","optionValues","element","option","option2","sort","a","b","GetPreviousAnswerFromLocalStorage","idCurrentCategory","validRangeOne","errorMessageRangeOne","valueRangeOne","step","idQuestionClass","valueAnswerProduct","getQuestionOfProductQuestionsByIdTSV","idTSVField","valid","disabled","IsCurrentCategory","GetLastAnswerSaved","localStorageAnswer","chosenAnswerOption","id_answer","HandleInputChange","field","minVal","CheckValidity","replaceAll","required","test","min","toFixed","max","indexOf","NextStep","questionNumber","totalFields","checkValidityResponse","idAnswerOption","GetIdOptionRangeValue","SaveAnswer","GetCorrectAnswerOption","age","_step3","numericalValue","numericalAge","ageMin","ageMax","err","_step4","_iterator2","_step5","_iterator3","currentCategory","lastAnswer","idMainQuestion","getQuestionOfProductQuestionsById","getSubQuestionOfProductQuestionsById","getQuestionOfRiskQuestionsById","type","existQuestionOfProductQuestions","lastQuestion","removeQuestionOfProductQuestions","addQuestionToProductQuestion","base_question_risk","existQuestionOfRiskQuestions","removeQuestionOfRiskQuestions","addRiskQuestionToRiskQuestions","ParameterService","GetAllParameterById","idParameter","Promise","resolve","reject","tokenServices","SelectedProductListServices","GetSelectedProductRequestObject","request","questions","jsonQuestion","questionTsv","idQuestion","idAnswer","valueAnswer","mainMatrix","questionList","GetMatrixSubQuestions","GetMultipleChoiseAnswer","insuredPersonsArray","getCurrentInsuredPersons","getRateTable","_loop","rate","insured","indexToUpdate","findIndex","table","modifyPersonfInsuredPersons","_step2","date_Of_birth","relationship","last_name","ProcessInsuredPersonsApproved","insuredPersonsApproved","insuredPersonsTSV","primaryInsured","ToInsuredPersonsTSVFormat","_iterator4","answersList","answersListTSV","_iterator5","answerValue","subQuestionList","_step6","_iterator6","questionText","questionType","baseQuestion","question_type","question_base","_step7","_iterator7","answerTSV","idInsuredPerson","Array","isArray","answerValueList","_step8","_iterator8","IsVisibleScore","idScore","show","parameterService","toUpperCase","genderQuestion","MatrixCardServices","SaveMatrixQuestionInLocalStorage","maxtrixQuestion","subQuestions","isBaseQuestionRisk","mainQuestion","subQuestionsArray","insuredCounter","questionArray","counter","_ret","_lastQuestion","mainMatriz","base","setInsuredPersons","serviceResponseDate","answerOption","_valueAnswer","_insuredPerson","_valueAnswer2","_insuredPerson2","_valueAnswer3","_insuredPerson3","answerOptions","_insuredPerson4","answerListArray","_i","_answerOptions","_answerOption","_answerOption2","_insuredPerson5","_insuredPerson6","_valueAnswer4","GetTSVDate","errorInComponent","GetCorrectDateRange","responseDate","toJSON","_toConsumableArray","v","toLowerCase","numericalRangeCardServices","delegateYield","t1","t2","actualCateory","selectedProductlistServices","_GetTSVDate","date","actualDate","actualDateJson","dateOfBirthJson","responseService","ageCalculationStrategy","effectiveDate","lastBirthday","nearestBirthday","_getJSONQuestionsMatrix","_questions","_getApprovedPersonJSONMatrix","_questionsMainMatrix","_selectedProduct","id_product_age","getJSONQuestionsMatrix","getCurrentSelectedProduct","id_product","id_product_tsv","insured_persons_approved","new_answer_list","new_answer","_getAgeProduct","dateInsured","idProductAge","productID","setSelectedProduct","lastAnswers","newChildQuestions","childQuestions","child","answerObject","uniqueChildCopy","childCopyMulti","multiValue","label","childCopyOtherTypes","isCurrentCategory","lastAnswerSaved","emptyAnswers","answertList","numberOfAnswers","questionsAnswers","SetAnswersByType","questionsBase","answers","oldChildren","newchild","newChildren","childTemp","newValue","oldChild","Procedure","procedureService","webServiceTSV","matrixCardServices","_callWS","currentField","fieldsProduct","listProcedures","procedure","operators","idProduct","idExecuteProcedure","getPoliciesCancer","getAge","getProductType","getSurchargePercentage","getPolicies","calculateAgeAmount","calculateAmountSum","loadData","operator","_unused","_getAnswersMatrix","answersOperators","q","answerOperator","_getAge","_response","createBody","processAnswer","_getPoliciesCancer","none","ch","getMainMatrix","selected","productInfo","fdc","fdcValue","benefitRiders","benefitFirstDiagnostic","first_diagnostic","firstDiagnostic","Set","_calculateAmountSum","sum","idAmount1","idAmount2","amoutPolice","amountSolicitude","amount1","amount2","_getPolicies","zl","compareProduct","productId","_getProductType","isK","isA","_getSurchargePercentage","totalInsurer","feet","inch","weight","surcharge","ratedInsurer","newchildNotFound","ratedNotFount","_surcharge","getAnswersMatrix","prepareMatrizQuestion","setRatedTable","_x16","_x17","_x18","stepField","processHidedQuestionMulti","processHidedQuestion","answerListJSON","value_answer_list","productQuestion","_prepareMatrizQuestionBase","baseQuestions","baseQuesionAnswers","getBaseAnswer","_x19","_x20","_x21","_x22","_prepareMatrizQuestion","childrens","_x23","_x24","mainMatrizbaseQuestions","questionBase","idInsurer","subQuestionsBase","_calculateAgeAmount","approvedPerson","amount","_age","sub","getApprovedPersonJSONMatrix","prepareMatrizQuestionBase","getAgeProduct","_x25","_x26","_x27","_loadData","surchar","answer_list_surchar","new_answer_surchar","insurer","questionL","_x28","_x29","HeaderStepper","_Component","controls","fields","QuestionServices","GetQuestionByIdCategory","GetQuestionByIdCategoryAndIdProduct","GetAllSubQuestionsByIdMainQuestion","GetDataFields","main_questions","main_questions_temp","main_question","questionsChildren","Object","assign","GetRiskDataFields","isRisk","ProductServices","GetSelectedProducts","selectedProducts","JSONProcessFileServices","AddJSONProcessFile","jsonProcess","REACT_APP_IDTSVCATEGORY_LIFE","REACT_APP_IDTSVCATEGORY_HEALTH","REACT_APP_PAYMENT_MODE","REACT_APP_COUPLE","REACT_APP_CHILD","REACT_APP_COUP","REACT_APP_DAD","SelectedRiderListService","IsCurrentProduct","id_tsv_product","SendApplicationSale","JSONLocalStorage","getJSONTSV","CreateJSONProcessFile","file","_SavePaymentLocalstorage","localPayment","paymentProduct","getPaymentOfProductPayment","paymentMod","paymentType","methodKey","modeIntervals","payment_type","payment_method_key","policy_payment_mode","policy_payment_mode_intervals","setPaymentOfProductPayment","paymentLocalStorage","modifyRiderBasicPlan","riderCategory","selectCategory","getCurrentRiders","addRiderToRiders","sameValue","isActive","selectedInsuredCategoryPlanCodePrefix","selectedSpecDescription","changeField","modifyRiderOfRiders","setApplicationDataOfProductPayment","setDetailsOfProductPayment","_SetRiders","setRiders","isNew","riderCategories","selectedInsuredCategory","isSelected","isMultilple","performSolveTypeName","GetCategory","GetRiderCategories","dateString","hoy","fechaNacimiento","edad","getFullYear","diferenciaMeses","getMonth","getDate","idSerieTSV","members","structure","getCurrentRisk","member","charAt","id_tsv_risk","basicInsured","IsEnabled","IsSelected","GenderShortForm","RiskKey","DateOfBirth","getEdad","rating","ratedYears","flatExtraYears","flatExtra","Primary","additionalInsured","relation","spouse","productJson","insured_persons_denied","productRider","ModalProductDescription","closeModalDescription","colorbBtnImage","handleProductCard","ProductCard","previousProduct","insuredPersonsDenied","setRisks","handleProductNameInfo","selectedRiderListService","InitializeJSONRider","handleRiskQuestions","idTSVCategory","goRiders","handleInsuredModalClick","showModal","handleInsuredModalDescriptionClick","showModalDescription","closeModal","conditionalRender","page","_this$state","score","renderModal","average","_this$state2","insuredApproved","handleDateFormat","insuredDenied","_componentDidMount","showSocore","_showSocore","userEnteredDateISO","parts","day","point","cutPoints","cutDescription","REACT_APP_FREEDOM_TERM_10_YEARS","REACT_APP_FREEDOM_TERM_15_YEARS","REACT_APP_ID_LIFE","REACT_APP_FREEDOM_TERM_20_YEARS","REACT_APP_FREEDOM_TERM_30_YEARS","REACT_APP_FREEDOM_TERM","SelectedProductsList","existsProduct","listTerms","subProduct","productTerm","filteredProduct","obj","some","obj2","productTermList","handleGetFieldsRisk","productServices","selectedProductListServices","nextProp","selectProduct","productsResponse","setTimeout","handleErrorInComponent","_this$props","parentRef","deleted","ref","YesNoQuestionCardServices","formValid","isValid","errorMessage","valueChecked","rules","ModalInfo","onClose","modalOptions","differentIcon","YesNoQuestionCard","nextStep","yesNoQuestionServices","funtionHandleSetProps","validInput","handleInputChange","optionNo","optionYes","stepBack","indexNext","setValueAnswerd","_this$props2","isInputMatix","descriptionYes","descriptionNo","checked","Card","Body","Row","Col","MultipleChoiseCardServices","selectedCheckboxes","selectedOption","CheckBoxValidity","SelectValidity","MultipleChoiceValueChecked","objectOption","notSure","selectedOptions","notSureValue","responseValueCheck","MultipleChoiceCard","setOptionsForSelect","optionsToIterate","optionsSelect","optionSelect","multipleChoiseCardServices","handleChangeInput","action","setAnswers","setMatrizAnswers","_this$props3","Select","components","CrossIcon","IndicatorSeparator","closeMenuOnSelect","isMulti","classNamePrefix","maxLengthField","LongAnswerCardServices","slice","minLength","pattern","LongAnswerCard","longAnswerCardServices","disabledInput","rx","ry","DateCardServices","daysDiff","numerOfDays","year","dateGreaterThanCurrent","formatDate","GetCurrentDateInFormat","month","join","datefromUserTimeStamp","nowTimeStamp","microSecondsDiff","Math","abs","round","currentDate","DateCard","dateCardServices","_componentDidUpdate","NumericalRangeCard","setProperties","responseSetProperties","_this$props$fieldConf","UniqueSelectionCardServices","UniqueSelectionCard","uniqueSelectionCardServices","Field","classes","now","touched","CardField","Title","Text","md","MatrixCard","newIdexNext","childelement","current","oldChildQuestions","mainchildQuestions","renderBase","hideButton","mainMatrizLength","childElement","createRef","currentMatriz","checkMainMatriz","setValuesUI","LoadAnswersLocalStorage","loadAswers","initialProps","setRefs","childre","_checkMainMatriz","_mainchildQuestions","_setValuesUI","quesitonsBase","allChildrens","getAnswerBase","addBaseQuestion","_getAnswerBase","_addBaseQuestion","resultQuestions","AddBaseQuestions","indexA","removeClick","sm","addClick","CardType","totalQuestions","handleSetProps","handleClickBack","handleClickNext","divType","allQuest","back","REACT_APP_URL_API_TSV_QUOTE","RatesServiceTSV","QuoteRiders","Login","REACT_APP_BASIC_PLAN","REACT_APP_ID_TSV_AMOUNT","REACT_APP_MAX_TEST","SliderCardService","valueCurrent","maxValue","errorMessageRange","validRange","valueRange","valueMin","isLaboratoryTest","valueTemp","amountNumber","SaveRiderCategories","REACT_APP_LABORATORY_TEST","REACT_APP_WILLING_QUESTION","REACT_APP_NO","SliderCard","loadDataRider","isChange","loadRiderCategory","valueAmount","handleClickSlider","_this$props$sliderTyp","sliderType","minFaceAmountText","maxFaceAmountText","sliderCardService","getAmountText","handleValidRange","handleChangeBonus","_this$props$sliderTyp2","handleBlurBonus","showField","nextRef","currentValueRef","valueLaboratory","getQuestionOfRiskQuestionsByIdTSV","getInsuranceAmount","getNumberFormat","maxFaceAmountSlider","trunc","onBlur","validationMessageIsVisible","validationMessage","premium","getFaceAmountText","SelectedRider","getValueRider","initialization","change","messageRange","isRange","isBasicPlan","getOptions","planCodePrefix","premiumAmount","maxPremium","minPremium","newOptions","idProductJSON","SelectedRiderMultiple","handleInputChangeInsured","valueOptions","handleInputChangeOptions","insuredCategory","prefix","optionsInsured","FieldRider","sliderTypeMultiple","faceAmountSliderIsVisible","faceAmountSliderStep","isOptional","maxFaceAmount_Slider","minFaceAmountSlider","minFaceAmount_Slider","availableSpecs","youngestChildRequirement","faceAmountSpecification","faceAmountOptions","insuredCategories","RiderCardService","HandleInputQuantityChange","isActiveCategory","requestRider","RiderCard","activateSupplement","changeCategoryName","riderCardService","riderDetails","helpTip","getPremium","PaymentDetails","initializePayment","idPayment","SavePaymentLocalstorage","GetPaymentOfProductPayment","refreshTypeData","refreshData","loadDataPayment","idParameterType","paymentsTypes","getDataLocalStorage","GetPayment","valuePayment","selectedIndex","handledRider","changePaymentType","SelectedRisksServices","getSelectedRisksRequestObjectTest","getSelectedRisksRequestObject","idSelectedProduct","riskQuestionTSV","IdAnswerOptionRisk","baseQuestionRisk","RiskServices","GetSelectedRisks","SaveCalculatedRisksInLocalStorage","selectedRisks","selectedRisksTSV","selectedRisk","idRisk","idTSVRisk","setInsuredRisks","REACT_APP_PAYMENT_TYPE","REACT_APP_LIST_ID_PRODUCT","REACT_APP_URL_TSV_REQUEST","SelectedRiderList","loadRidersCategory","familyInfo","listRider","basicPlan","temRisk","listRiderTem","resultLogin","resultQuote","illustration","policy","premiumTotal","GetFamilyMember","GetRiderSelectLocalStorage","getNumber","SetRiders","FamilyInfo","ratesServiceTSV","illustrationEmail","policyDetails","totalPremium","minimumPremium","requiredRiderCategoriesInfo","SaveDetailsAndApplicationData","noRiskError","getPolicyTotals","premiumData","GetPrimaryInsured","benefitMaximunFaceAmount","totalAmount","refreshType","handleLoadRiderChange","isValidRange","isValidRider","applicationSent","JSONprocessFileCreate","insuranceApplication","applicationSaved","emptyList","success","idJSONProcessFile","insuranceApplicationServices","idTSVApplication","send","urlRedirect","hideInDirectSale","handleProduct","UpdateSelectedProduct","selectedRisksServices","riskServices","opcionesTitle","isTerms","riderListFunction","handleClickBackRider","risksResponse","productError","isSlider","hasMultipleSpecs","hasSolveTypes","changeOptionsTitle","href","rel","SelectedRiderSavingService","HandleInputChangeS4","valueReal","GetCurrentDetails","getCurrentDetailsOfProductPayment","sections","getCurrentSavingAmount","valueInitial","valueEntry","currentValue","guaranteedValue","setSavingAmount","primary","EnteredPremiumText","REACT_APP_SECTION_HIDE_SAVINGS","REACT_APP_SHOW_SAVINGS_SECTION","SelectedSavingProjectionS4","values","detail","targetPremium","selectedRiderSavingService","GetRiderRequestS4","entries","items","retirementAge","setValues","disclaimer","entry","indexEntry","item","indexItem","indexItemEntry","ReactHTMLTableToExcel","filename","sheet","REACT_APP_MINIMUM_PREMIUM_Monthy","REACT_APP_DISCLAIMER_PARAM_ID","REACT_APP_MAX_SUM_IRA","REACT_APP_MAX_SUM_ANUALIDAD","REACT_APP_IDTSVPRODUCT_IRA","REACT_APP_IDTSVPRODUCT_ANUALIDAD","REACT_APP_IDPARAMETER_MONTHLY","REACT_APP_MINIMUM_RETIREMENT_AGE","REACT_APP_INITIAL_DEPOSIT_DESCRIPTION","SelectedRiderS4","REACT_APP_AGE_RETIRO_DESCRIPTION","isUpdateValue","isUpdateEntry","showValues","disableButon","valuesConsult","showProjections","projections","proyections","showProyections","hideProjections","SetSavingAmount","parameterServices","premiumMonthly","valueInitialDeposite","errorMessageInitial","validInitial","errorMessageInitialEntry","errorMessageRetirementAge","validPremiumMonthly","validEntry","validInitialDeposite","validCurrentValue","validRetirementAge","validReguaranteedValue","errorMessageSum","disclaimers","currentDisclaimer","GetCurrentSavingAmounts4","keys","initial_deposit","current_value","guaranteed_value","refreshValues","errorMessagePremiumMonthly","errorMessageEntry","validateAmountSum","ValInitial","ValEntry","total","totalFormat","responseValue","handleChangeInitial","SelectedRiderListS4","idTSVProductDescription","proyectionsUI","getValues","vaule1","value2","relevo","getvalues","SelectedSavingProjection","GetRiderRequest","REACT_APP_MINIMUM_INITIAL_DEPOSIT","REACT_APP_ADITIONAL_DEPOSIT_DESCRIPTION","SelectedRiderSaving","GetCurrentSavingAmount","additional_deposit","responseEntry","handleChangeEntry","REACT_APP_IDTSVCATEGORY_SAVING","REACT_APP_ID_TEST","REACT_APP_SELECT_PRODUCT","REACT_APP_IDTSVCATEGORY_UL","StepperForm","fetchServices","responseOverall","responsePolicy","getFields","questionServices","fieldsRiskProduct","fieldsRisk","refreshStepper","selectProductTSV","isRider","checkDifferentSteps","backToSelectProduct","stepper","setNext","_this$state$selectPro","scrollTo","currentProductName","productQuestionNumber","errorInFields","questionBodyWithError","getFetchServices","_getFetchServices","Stepper","_handleSetProps","updatedFields","_this$state$selectPro2","updatedField","resultApi","getNextField","callWS","getStepSelectProduct","compareSecuence","nextField","nextF","backSecuence","nextNumber","nextfield","removeLocalStorageQuestion","fieldsQuestions","questionsToRemove","question_number","nextQuestionNumber","questionToRemove","_this4","_this$state3","percentageClass","_this$state4","onSubmit","LandingPage","fetchData","animation","slideIndex","updateCount","previous","_getDataCategories","getDataCategories","slider2","slickGoTo","slider","slickNext","slickPrev","alt","nextAnimation","Slider","dots","infinite","speed","slidesToShow","slidesToScroll","tabindex","PrevArrow","c","responsive","breakpoint","settings","initialSlide","NextArrow","Terms","el","Privacy","Home","changeCategory","landing","paddingBottom","terms","privacy","_changeCategory","categorys","cat","goPage","_goPage","App","ReactDOM","render","BrowserRouter","Switch","Route","component","exact","module","exports","_extends","source","prototype","hasOwnProperty","matches","Element","closest","selector","WinEvent","inType","params","Event","createCustomEvent","eventName","CustomEvent","polyfill","msMatchesSelector","webkitMatchesSelector","documentElement","contains","parentElement","parentNode","nodeType","createEvent","initEvent","Boolean","bubbles","cancelable","originPreventDefault","evt","initCustomEvent","defineProperty","get","MILLISECONDS_MULTIPLIER","ClassName","ACTIVE","LINEAR","BLOCK","NONE","FADE","VERTICAL","transitionEndEvent","customProperty","stepperNode","indexStep","_steps","classList","_stepsContents","showEvent","from","_currentIndex","dispatchEvent","activeStep","activeContent","content","defaultPrevented","remove","showStep","showContent","stepList","trigger","selectors","setAttribute","add","currentTrigger","removeAttribute","contentList","toIndex","shownEvent","complete","removeEventListener","duration","getTransitionDurationFromElement","emulateTransitionEnd","transitionDuration","getComputedStyle","parseFloat","called","emulatedDuration","listener","detectAnimation","buildClickStepLinearListener","buildClickStepNonLinearListener","steps","stepIndex","DEFAULT_OPTIONS","linear","_options","_element","querySelectorAll","hasAttribute","getAttribute","_setLinkListeners","writable","_proto","_clickStepLinearListener","_clickStepNonLinearListener","previousStep","stepNumber","_this5","tempIndex","_this6","destroy","_this7","factory"],"mappings":"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","file":"static/js/main.2040526a.chunk.js","sourcesContent":["import './Header.css';\r\nimport React from 'react';\r\nimport { Container, Navbar, } from 'react-bootstrap';\r\nimport { Link } from 'react-router-dom';\r\n\r\nexport class Header extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n ({ ...location, pathname: \"/compra\" })}>\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n}","import './Assistant.css';\r\nimport React from 'react';\r\nexport class Assistant extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n btnClick() {\r\n window.open('https://prod-tsv-use-chatbotiframe-webapp.azurewebsites.net/?chatId=jl5ERWI-iG4.wMCJwDXP7dKZ_soBRZnW_mFnPr_Oo7Ban5_EOnX0xaA', '_blank',\r\n \"width=320, height=480, left=500, top=130\");\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n );\r\n }\r\n\r\n}","import CryptoJS from \"crypto-js\";\r\nconst urlBase = process.env.REACT_APP_URL_API_TSV;\r\nconst referer = process.env.REACT_APP_REFERER\r\nexport class TokenServices {\r\n\r\n\r\n /** \r\n * \r\n * This method validates the expiration of the user's token \r\n * \r\n */\r\n ValidateToken() {\r\n let dateExpitationLocal = new Date().getTime() / 1000;\r\n const token = this.DecryptToken();\r\n let data = '';\r\n if (token !== \"\") {\r\n data = JSON.parse(atob(token.split('.')[1]));\r\n let dateExpitationToken = new Date(data.exp).getTime();\r\n if (dateExpitationLocal >= dateExpitationToken) {\r\n document.cookie = 'tsv=; expires=Thu, 01-Jan-1970 00:00:01 GMT;';\r\n return false;\r\n }else {\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Encrypts the user's token and saves it in a cookie named tsv.\r\n * @param {string} token The token string.\r\n */\r\n EncryptToken = (token) => {\r\n const tokenEncrypt = CryptoJS.AES.encrypt(JSON.stringify(token), 'gasfgasjfgasñodf').toString();\r\n document.cookie = `tsv=${tokenEncrypt}`;\r\n }\r\n\r\n /**\r\n * Decrypt the user's token saved in a cookie with name tsv.\r\n * @return {string} token The decrypted token string.\r\n */\r\n DecryptToken = () => {\r\n let cookie = document.cookie.split(\";\").filter((x) => (x.split(\"=\")[0]).trim() === 'tsv') || '';\r\n let token = \"\";\r\n if (cookie.length > 0) {\r\n token = document.cookie.split(\";\").filter((x) => (x && x.split(\"=\") && (x.split(\"=\")[0]).trim() === 'tsv'))[0].split(\"=\")[1].trim() || '';\r\n }\r\n const bytes = CryptoJS.AES.decrypt(token, 'gasfgasjfgasñodf');\r\n const originalText = bytes.toString(CryptoJS.enc.Utf8);\r\n const tokendeCrypt = originalText.replace(/['\"]+/g, '');\r\n return tokendeCrypt;\r\n }\r\n /**\r\n * Gets the public token from the api.\r\n * @return {Promise} promise The promise from the api.\r\n */\r\n GetPublicToken = async () => {\r\n const result = { statusResponse: false, data: null, error: null }\r\n await fetch(`${urlBase}Security/GetPublicToken`, {\r\n method: 'GET',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Referer': `${referer}`\r\n }\r\n }).then(async response => {\r\n if (response.ok) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi);\r\n })\r\n .catch(error => console.log(error));\r\n return result;\r\n }\r\n}\r\n","\r\nexport class JSONExchangeTSV {\r\n\r\n /**\r\n * This function initializes the json structure in the local storage.\r\n */\r\n initializeJSON() {\r\n let jsonBase = {\r\n insured_persons: [],\r\n serie: {},\r\n product_questions: [],\r\n selected_product: {},\r\n risk: { risk_questions: [], insured_risk: [] },\r\n product_payment: { payment: {}, details: {}, applicationData: {} },\r\n rated_table: [],\r\n\r\n };\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonBase));\r\n\r\n }\r\n\r\n /**\r\n * Determinates if the json in local storage exists.\r\n * @return {Boolean} True if json is iniatilized , false if not.\r\n */\r\n isJSONinitialized() {\r\n return localStorage.getItem(\"JSONTSV\") ? true : false;\r\n }\r\n\r\n /**\r\n * Gets the actual json of the local storage.\r\n * @return {String} The json structure with data.\r\n */\r\n getJSONTSV() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n return jsonTsv;\r\n }\r\n\r\n /**\r\n * Sets the insured persons of the json in the local storage.\r\n * @param {Object} insuredPersons The insured persons array.\r\n */\r\n setInsuredPersons(insuredPersons) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n jsonTsv.insured_persons = insuredPersons;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n\r\n }\r\n /**\r\n * Sets the insured rated table of the json in the local storage.\r\n * @param {Object} ratedTable The insured ratedTable array.\r\n */\r\n setRatedTable(ratedTable) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n jsonTsv.rated_table = ratedTable;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n\r\n }\r\n /**\r\n * Gets the insured rate table of the json in the local storage.\r\n * @param {Object} rateTable The insured rateTable array.\r\n */\r\n getRateTable() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let rateTable = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n\r\n if (jsonTsv.rated_table) {\r\n rateTable = jsonTsv.rated_table;\r\n }\r\n return rateTable;\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Gets the current insured persons array of the json of the local storage.\r\n * @return {Array} The insured persons object.\r\n */\r\n getCurrentInsuredPersons() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let insuredPersons = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.insured_persons) {\r\n insuredPersons = jsonTsv.insured_persons;\r\n }\r\n return insuredPersons;\r\n }\r\n\r\n /**\r\n * Removes the current insured persons array of the json in the local storage.\r\n */\r\n removeCurrentInsuredPersons() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.insured_persons) {\r\n jsonTsv.insured_persons = {};\r\n }\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Modify a insured person of the array of insured persons in the local storage.\r\n * @param {Object} insuredPerson The insured person object.\r\n */\r\n modifyPersonfInsuredPersons(insuredPerson) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let insuredPersons = [];\r\n if (insuredPerson !== undefined) {\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.insured_persons) {\r\n insuredPersons = jsonTsv.insured_persons;\r\n\r\n for (let index = 0; index < insuredPersons.length; index++) {\r\n if (insuredPersons[index].id_insured === insuredPerson.id_insured || insuredPersons[index].id_insured === insuredPerson.idInsured) {\r\n if (index > -1) {\r\n insuredPersons.splice(index, 1, insuredPerson);\r\n }\r\n\r\n }\r\n }\r\n jsonTsv.insured_persons = insuredPersons;\r\n }\r\n }\r\n\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Removes a insured person of the array of insured persons in the local storage.\r\n * @param {Object} insuredPerson The insured person object.\r\n */\r\n removePersonfInsuredPersons(insuredPerson) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let insuredPersons = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.insured_persons) {\r\n insuredPersons = jsonTsv.insured_persons;\r\n\r\n for (let index = 0; index < insuredPersons.length; index++) {\r\n if (btoa(JSON.stringify(insuredPersons[index])) === (btoa(JSON.stringify(insuredPerson)))) {\r\n if (index > -1) {\r\n insuredPersons.splice(index, 1);\r\n }\r\n\r\n }\r\n }\r\n jsonTsv.insured_persons = insuredPersons;\r\n }\r\n }\r\n\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Adds a insured person of the array of insured persons in the local storage.\r\n * @param {Object} insuredPerson The insured person object.\r\n */\r\n addPersonToInsuredPersons(insuredPerson) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let insuredPersons = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.insured_persons) {\r\n insuredPersons = jsonTsv.insured_persons;\r\n }\r\n insuredPersons.push(insuredPerson);\r\n jsonTsv.insured_persons = insuredPersons;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Sets the serie of the json in the local storage.\r\n * @param {Object} serie The serie object.\r\n */\r\n setSerie(serie) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n jsonTsv.serie = serie;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n\r\n }\r\n\r\n /**\r\n * Gets the current serie of the json of the local storage.\r\n * @return {Object} serie The serie object.\r\n */\r\n getCurrentSerie() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let serie = {};\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.serie) {\r\n serie = jsonTsv.serie;\r\n }\r\n return serie;\r\n }\r\n\r\n /**\r\n * Removes the current serie of the json in the local storage.\r\n */\r\n removeCurrentSerie() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.serie) {\r\n jsonTsv.serie = {};\r\n }\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Set the product questions of the json in the local storage.\r\n * @param {Array} productQuestions The product question array.\r\n */\r\n setProductQuestions(productQuestions) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n jsonTsv.product_questions = productQuestions;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n\r\n }\r\n\r\n /**\r\n * Get the current serie of the json in the local storage.\r\n * @return {Array} productsQuestions The product questions array.\r\n */\r\n getCurrentProductQuestions() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let productsQuestions = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.product_questions) {\r\n productsQuestions = jsonTsv.product_questions;\r\n }\r\n return productsQuestions;\r\n }\r\n\r\n /**\r\n * Removes the current product questions of the json in the local storage.\r\n */\r\n removeCurrentProductQuestions() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.product_questions) {\r\n jsonTsv.product_questions = [];\r\n }\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Determinates if a question exist in the array of product questions.\r\n * @param {Object} question The question object.\r\n * @return {Boolean} True if exists, if not then returns false.\r\n */\r\n existQuestionOfProductQuestions(question) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let productQuestions = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.product_questions) {\r\n productQuestions = jsonTsv.product_questions;\r\n for (let index = 0; index < productQuestions.length; index++) {\r\n if (productQuestions[index].id_question === question.id_question) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n /**\r\n * Gets a main matriz question of product questions.\r\n * @return {Object} The question object if existe, if not then returns false.\r\n */\r\n getMainMatrix() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let productQuestions = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.product_questions) {\r\n productQuestions = jsonTsv.product_questions;\r\n for (let index = 0; index < productQuestions.length; index++) {\r\n if (productQuestions[index].main_matrix === true) {\r\n return productQuestions[index];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets a question of product questions by id.\r\n * @param {Object} question The question object with id.\r\n * @return {Object} The question object if existe, if not then returns false.\r\n */\r\n getQuestionOfProductQuestionsById(question) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let productQuestions = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.product_questions) {\r\n productQuestions = jsonTsv.product_questions;\r\n for (let index = 0; index < productQuestions.length; index++) {\r\n if (productQuestions[index].id_question === question.id_question) {\r\n return productQuestions[index];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n /**\r\n * Gets a sub question of the main question matrix of the product questions by id.\r\n * @param {Object} question The question object with id.\r\n * @return {Object} The question object if existe, if not then returns null.\r\n */\r\n getSubQuestionOfProductQuestionsById(question) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let productQuestions = [];\r\n let foundQuestion;\r\n let subQuestions;\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.product_questions) {\r\n productQuestions = jsonTsv.product_questions;\r\n for (let index = 0; index < productQuestions.length; index++) {\r\n if (productQuestions[index].question_list) {\r\n subQuestions = productQuestions[index].question_list;\r\n subQuestions.forEach(subQuestion => {\r\n if (subQuestion.id_question === question.id_question) {\r\n foundQuestion = subQuestion;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return foundQuestion;\r\n }\r\n\r\n /**\r\n * Removes a question of the array of product questions in the local storage.\r\n * @param {Object} question The question object.\r\n */\r\n removeQuestionOfProductQuestions(question) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let productQuestions = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.product_questions) {\r\n productQuestions = jsonTsv.product_questions;\r\n\r\n for (let index = 0; index < productQuestions.length; index++) {\r\n if (btoa(JSON.stringify(productQuestions[index])) === (btoa(JSON.stringify(question)))) {\r\n if (index > -1) {\r\n productQuestions.splice(index, 1);\r\n }\r\n\r\n }\r\n }\r\n jsonTsv.product_questions = productQuestions;\r\n }\r\n }\r\n\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Adds a question in the array of product questions in the local storage.\r\n * @param {Object} question The question object.\r\n */\r\n addQuestionToProductQuestion(question) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let productsQuestion = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.product_questions) {\r\n productsQuestion = jsonTsv.product_questions;\r\n }\r\n productsQuestion.push(question);\r\n jsonTsv.product_questions = productsQuestion;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Sets the selected product in the local storage.\r\n * @param {Object} selectedProduct The product object.\r\n */\r\n setSelectedProduct(selectedProduct) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n jsonTsv.selected_product = selectedProduct;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n\r\n }\r\n\r\n /**\r\n * Gets the selected product of the local storage.\r\n * @return {Object} The selected product of the json.\r\n */\r\n getCurrentSelectedProduct() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let selectedProduct = {};\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.selected_product) {\r\n selectedProduct = jsonTsv.selected_product;\r\n }\r\n return selectedProduct;\r\n }\r\n\r\n /**\r\n * Removes the current product of the json in the local storage.\r\n */\r\n removeCurrentSelectedProduct() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.selected_product) {\r\n jsonTsv.selected_product = {};\r\n }\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Sets the risk general structure in the local storage.\r\n * @param {Object} risk The risk object.\r\n */\r\n setRisks(risks) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n jsonTsv.risk = risks;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n /**\r\n * Sets the risk question in the local storage.\r\n * @param {Object} risk The risk object.\r\n */\r\n setRiskQuestion(risk) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n jsonTsv.risk.risk_questions = risk;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n\r\n }\r\n\r\n /**\r\n * Determinates if a risk question exist in the array of risk questions.\r\n * @param {Object} question The question object.\r\n * @return {Boolean} True if exists, if not then returns false.\r\n */\r\n existQuestionOfRiskQuestions(question) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let riskQuesitons = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.risk.risk_questions) {\r\n riskQuesitons = jsonTsv.risk.risk_questions;\r\n for (let index = 0; index < riskQuesitons.length; index++) {\r\n if (riskQuesitons[index].id_question === question.id_question) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets a risk question of product questions by id.\r\n * @param {Object} question The question object with id.\r\n * @return {Object} The question object if existe, if not then returns false.\r\n */\r\n getQuestionOfRiskQuestionsById(question) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let riskQuestions = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.risk.risk_questions) {\r\n riskQuestions = jsonTsv.risk.risk_questions;\r\n for (let index = 0; index < riskQuestions.length; index++) {\r\n if (riskQuestions[index].id_question === question.id_question) {\r\n return riskQuestions[index];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n /**\r\n * Adds a risk question in the array of product questions in the local storage.\r\n * @param {Object} riskQuestion The question object.\r\n */\r\n addRiskQuestionToRiskQuestions(riskQuestion) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let riskQuestions = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.risk.risk_questions) {\r\n riskQuestions = jsonTsv.risk.risk_questions;\r\n }\r\n riskQuestions.push(riskQuestion);\r\n jsonTsv.risk.risk_questions = riskQuestions;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Removes a risk question of the array of risk questions in the local storage.\r\n * @param {Object} question The question object.\r\n */\r\n removeQuestionOfRiskQuestions(question) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let riskQuestions = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.risk.risk_questions) {\r\n riskQuestions = jsonTsv.risk.risk_questions;\r\n\r\n for (let index = 0; index < riskQuestions.length; index++) {\r\n if (btoa(JSON.stringify(riskQuestions[index])) === (btoa(JSON.stringify(question)))) {\r\n if (index > -1) {\r\n riskQuestions.splice(index, 1);\r\n }\r\n\r\n }\r\n }\r\n jsonTsv.risk.risk_questions = riskQuestions;\r\n }\r\n }\r\n\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Adds a insured risk to he insured risks array in the local storage.\r\n * @param {Object} insuredRisk The insured risk object.\r\n */\r\n addInsuredRiskToRisk(insuredRisk) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let insuredRisks = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.risk) {\r\n if (jsonTsv.risk.insured_risk) {\r\n insuredRisks = jsonTsv.risk.insured_risk;\r\n }\r\n }\r\n\r\n insuredRisks.push(insuredRisk);\r\n jsonTsv.risk.insured_risk = insuredRisks;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Removes a insured risk of the array of insured risks in the local storage.\r\n * @param {Object} question The question object.\r\n */\r\n removeInsuredRiskOfRisk(insuredRisk) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let insuredRisks = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.risk) {\r\n if (jsonTsv.risk.insured_risk) {\r\n insuredRisks = jsonTsv.risk.insured_risk;\r\n }\r\n\r\n for (let index = 0; index < insuredRisks.length; index++) {\r\n if (btoa(JSON.stringify(insuredRisks[index])) === (btoa(JSON.stringify(insuredRisk)))) {\r\n if (index > -1) {\r\n insuredRisks.splice(index, 1);\r\n }\r\n\r\n }\r\n }\r\n jsonTsv.risk.insured_risk = insuredRisks;\r\n }\r\n }\r\n\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Sets the insured risks in the local storage.\r\n * @param {Object} risk The risk object.\r\n */\r\n setInsuredRisks(insuredRisks) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n jsonTsv.risk.insured_risk = insuredRisks;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n\r\n }\r\n\r\n /**\r\n * Gets the insured risks array of the local storage.\r\n * @return {Object} The current insured risk of the json.\r\n */\r\n getCurrentRisk() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let risk = {};\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.risk) {\r\n risk = jsonTsv.risk;\r\n }\r\n return risk;\r\n }\r\n /**\r\n * Removes the insured risks array in the local storage.\r\n */\r\n removeCurrentRisk() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.risk) {\r\n jsonTsv.risk = { risk_questions: {}, insured_risk: [] };\r\n }\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Sets the product payment in the local storage.\r\n * @param {Object} productPayment The product payment object.\r\n */\r\n setProductPayment(productPayment) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n jsonTsv.product_payment = productPayment;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n\r\n }\r\n\r\n /**\r\n * Gets the product payment of the local storage.\r\n * @return {Object} The selected product of the json.\r\n */\r\n getProductPayment() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let productPayment = {};\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.product_payment) {\r\n productPayment = jsonTsv.product_payment;\r\n }\r\n return productPayment;\r\n }\r\n\r\n /**\r\n * Removes the current product payment of the json in the local storage.\r\n */\r\n removeProductPayment() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.product_payment) {\r\n jsonTsv.product_payment = { payment: {}, details: {}, applicationData: {} };\r\n }\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Sets the product payment in the local storage.\r\n * @param {Object} productPayment The product payment object.\r\n */\r\n setPaymentOfProductPayment(productPayment) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n jsonTsv.product_payment.payment = productPayment;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n\r\n }\r\n\r\n /**\r\n * Gets the payment object in the product payment of the local storage.\r\n * @return {Object} The payment of the product payment of the json.\r\n */\r\n getPaymentOfProductPayment() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let productPayment = {};\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.product_payment.payment) {\r\n productPayment = jsonTsv.product_payment.payment;\r\n }\r\n return productPayment;\r\n }\r\n\r\n /**\r\n * Removes the payment object in the product payment of the local storage.\r\n * @return {Object} The payment of the product payment of the json.\r\n */\r\n removePaymentOfProductPayment() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.product_payment.payment) {\r\n jsonTsv.product_payment.payment = {};\r\n }\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Sets the details array of the product payment in the local storage.\r\n * @param {Array} details The rider payment array.\r\n */\r\n setDetailsOfProductPayment(details) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n jsonTsv.product_payment.details = details;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n\r\n }\r\n\r\n /**\r\n * Gets the details array of the product payment in the local storage.\r\n * @returns {Array} details The rider payment array.\r\n */\r\n getCurrentDetailsOfProductPayment() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let details = {};\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.product_payment.details) {\r\n details = jsonTsv.product_payment.details;\r\n }\r\n return details;\r\n }\r\n\r\n /**\r\n * Removes the details array of the product payment in the local storage.\r\n */\r\n removeCurrentDetailsOfProductPayment() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.product_payment.details) {\r\n jsonTsv.product_payment.details = {};\r\n }\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n\r\n /**\r\n * Sets the application data array of the product payment in the local storage.\r\n * @param {Array} applicationData The endorsement array.\r\n */\r\n setApplicationDataOfProductPayment(applicationData) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n jsonTsv.product_payment.applicationData = applicationData;\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n\r\n }\r\n\r\n /**\r\n * Gets the applicationData object of the product payment in the local storage.\r\n * @returns {Array} applicationData The applicationData object.\r\n */\r\n getCurrentApplicationDataOfPayment() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let applicationData = {};\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.product_payment.applicationData) {\r\n applicationData = jsonTsv.product_payment.applicationData;\r\n }\r\n return applicationData;\r\n }\r\n\r\n /**\r\n * Removes the application data object of the product payment in the local storage.\r\n */\r\n removeCurrentApplicationDataOfPayment() {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.product_payment.applicationData) {\r\n jsonTsv.product_payment.applicationData = {};\r\n }\r\n localStorage.setItem(\"JSONTSV\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Gets a question of product questions by idTSV.\r\n * @param {Object} id_tsv_field The idTSV.\r\n * @return {Object} The question object if existe, if not then returns false.\r\n */\r\n getQuestionOfProductQuestionsByIdTSV(id_tsv_field) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let productQuestions = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.product_questions) {\r\n productQuestions = jsonTsv.product_questions;\r\n for (let index = 0; index < productQuestions.length; index++) {\r\n if (productQuestions[index].id_tsv_field === id_tsv_field) {\r\n return productQuestions[index];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets a question of product risks by idTSV.\r\n * @param {Object} id_tsv_field The idTSV.\r\n * @return {Object} The question object if existe, if not then returns false.\r\n */\r\n getQuestionOfRiskQuestionsByIdTSV(id_tsv_field, question) {\r\n let jsonTsv = localStorage.getItem(\"JSONTSV\");\r\n let riskQuestions = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.risk.risk_questions) {\r\n riskQuestions = jsonTsv.risk.risk_questions;\r\n for (let index = 0; index < riskQuestions.length; index++) {\r\n if (riskQuestions[index].question_text.includes(id_tsv_field)) {\r\n let riskAnswer = riskQuestions[index].question_list != null ? riskQuestions[index].question_list : [];\r\n for (let risk = 0; risk < riskAnswer.length; risk++) {\r\n if (riskAnswer[risk].question_text.includes(question)) {\r\n let answerList = riskAnswer[risk].answer_list;\r\n for (let answer = 0; answer < answerList.length; answer++) {\r\n if (answerList[answer].id_insured == 1) {\r\n return answerList[answer];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}","import { JSONExchangeTSV } from \"./JSONExchangeTSV\";\r\n\r\nconst urlBaseTSV = process.env.REACT_APP_URL_API_TSV_PORTAL;\r\nconst urlBaseTSVSALES = process.env.REACT_APP_URL_API_TSV_PORTAL_SALES;\r\nconst { REACT_APP_CANCER_PRODUCTS_INFO, REACT_APP_SSN_QUESTION, \r\n REACT_APP_CLIENTID_TSV, REACT_APP_CLIENTSECRET_TSV } = process.env\r\nexport class WebServicesTSV {\r\n\r\n constructor() {\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n }\r\n\r\n // Weight / height ratio classification service with respect to defined tables (BMI).\r\n // In the insurer parameter always send TSV.\r\n SurchargePercentage = async (person) => {\r\n let myHeaders = new Headers();\r\n myHeaders.append(\"Accept\", \"*/*\");\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"clientId\", REACT_APP_CLIENTID_TSV);\r\n myHeaders.append(\"clientSecret\", REACT_APP_CLIENTSECRET_TSV);\r\n const result = { statusResponse: false, data: null, error: null };\r\n await fetch(`${urlBaseTSV}Underwriting/surchargePercentage?Feet=${person.Feet}&Inch=${person.Inch}&Weight=${person.Weight}&Insurer=tsv`, {\r\n method: 'GET',\r\n headers: myHeaders,\r\n }).then(async response => {\r\n if (response.ok) {\r\n result.statusResponse = true;\r\n await response.json().then(resultapi => result.data = resultapi);\r\n }\r\n else if (response.status === 404) {\r\n result.statusResponse = 404;\r\n }\r\n }).catch(error => console.log(error));\r\n return result;\r\n }\r\n\r\n // Service for determining the user's age based on the date of birth and\r\n // Service for determining the user's age based on the date of birth and product ..\r\n // - Respond with 2 ages: closest and the completed years.\r\n // - Optionally receive the product, calculate the date regarding it and indicate which one should be used. This applies to risk questions.\r\n PeopleAge = async (person) => {\r\n const result = { statusResponse: false, data: null, error: null };\r\n let myHeaders = new Headers();\r\n myHeaders.append(\"Accept\", \"*/*\");\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"clientId\", REACT_APP_CLIENTID_TSV);\r\n myHeaders.append(\"clientSecret\", REACT_APP_CLIENTSECRET_TSV);\r\n\r\n let body = JSON.stringify(person);\r\n let requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: body,\r\n };\r\n await fetch(`${urlBaseTSV}People/age`, requestOptions)\r\n .then(async response => {\r\n if (response.ok) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi);\r\n })\r\n .catch(error => console.log('error', error));\r\n return result;\r\n }\r\n // Service that determines if the user is a TSV customer and what products they have (cancer policies).\r\n // Use the last 4 digits of the social security number or the full number.\r\n // returns a list of active products that the client has associated with. If you are not a TSV customer, it returns empty.\r\n PersonProductInfo = async (personInfo) => {\r\n const result = { statusResponse: false, data: null, error: null };\r\n let myHeaders = new Headers();\r\n myHeaders.append(\"Accept\", \"*/*\");\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"clientId\", REACT_APP_CLIENTID_TSV);\r\n myHeaders.append(\"clientSecret\", REACT_APP_CLIENTSECRET_TSV);\r\n\r\n let body = JSON.stringify(personInfo);\r\n let requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: body\r\n };\r\n await fetch(`${urlBaseTSV}People/insured/productinfo`, requestOptions)\r\n .then(async response => {\r\n if (response.ok || response.status === 404) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi);\r\n })\r\n .catch(error =>\r\n console.log('error', error)\r\n );\r\n return result;\r\n }\r\n\r\n // Service that sends the json from the local storage to TSV to create a new insurance application.\r\n // Use the json from the local storage converted to string.\r\n // Return true if the appplication is correct.\r\n ApplicationSales = async (application) => {\r\n const result = { statusResponse: false, data: null, error: null };\r\n let myHeaders = new Headers();\r\n myHeaders.append(\"Accept\", \"*/*\");\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"clientId\", REACT_APP_CLIENTID_TSV);\r\n myHeaders.append(\"clientSecret\", REACT_APP_CLIENTSECRET_TSV);\r\n\r\n let body = JSON.stringify(application);\r\n let requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: body\r\n };\r\n await fetch(`${urlBaseTSV}ApplicationSales/create`, requestOptions)\r\n .then(async response => {\r\n if (response.ok || response.status === 404) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi);\r\n })\r\n .catch(error =>\r\n console.log('error', error)\r\n );\r\n return result;\r\n }\r\n\r\n // Service that gets the policy totals of a product that the customer has with TSV.\r\n // Use the the customer and product information.\r\n // The main insured person to request products.\r\n // Return the aggregate total of policies.\r\n PolicyTotals = async (idTSVProduct, mainInsuredPerson) => {\r\n const result = { statusResponse: false, data: null, error: null };\r\n\r\n //process and create the request object needed by the service\r\n let productsInfo = JSON.parse(REACT_APP_CANCER_PRODUCTS_INFO);\r\n let productRequest = {\r\n 'ssn': null,\r\n 'dob': null,\r\n 'sex': null,\r\n 'productType': null,\r\n 'firstdiag': null,\r\n 'coverageType': null,\r\n 'status': 'A'\r\n }\r\n // get the ssn from the question of the local storage\r\n let questionSSN = this.jsonExchangeTSV.getCurrentProductQuestions();\r\n questionSSN = questionSSN.filter(quesiton => quesiton.question_text.includes(REACT_APP_SSN_QUESTION));\r\n\r\n productRequest.dob = mainInsuredPerson.dateOfBirth;\r\n productRequest.sex = mainInsuredPerson.gender === 'Masculino' ? 'M'\r\n : mainInsuredPerson.gender === 'Femenino' ? 'F' : null;\r\n productRequest.ssn = questionSSN[0] ? questionSSN[0].value_answer ?\r\n questionSSN[0].value_answer : null : null;\r\n\r\n\r\n for (const product of productsInfo) {\r\n\r\n if (product.id_tsv === idTSVProduct) {\r\n productRequest.coverageType = product.coverageType;\r\n productRequest.productType = product.productType;\r\n productRequest.firstdiag = product.firstDiag;\r\n break;\r\n }\r\n }\r\n\r\n let myHeaders = new Headers();\r\n myHeaders.append(\"Accept\", \"*/*\");\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"clientId\", REACT_APP_CLIENTID_TSV);\r\n myHeaders.append(\"clientSecret\", REACT_APP_CLIENTSECRET_TSV);\r\n let body = JSON.stringify(productRequest);\r\n let requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: body\r\n };\r\n await fetch(`${urlBaseTSV}Policy/Totals`, requestOptions)\r\n .then(async response => {\r\n if (response.ok || response.status === 404) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi);\r\n })\r\n .catch(error =>\r\n console.log('error', error)\r\n );\r\n return result;\r\n }\r\n\r\n\r\n /**\r\n * Service to save the user/customer contact information \r\n * @param {*} contactInfo, user contact information that will be send \r\n * @returns 200code/true if user contact information was save \r\n */\r\n SalesForce = async (contactInfo) => {\r\n const result = { statusResponse: false, data: null, error: null };\r\n let myHeaders = new Headers();\r\n myHeaders.append(\"Accept\", \"*/*\");\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"clientId\", REACT_APP_CLIENTID_TSV);\r\n myHeaders.append(\"clientSecret\", REACT_APP_CLIENTSECRET_TSV);\r\n\r\n let body = JSON.stringify(contactInfo);\r\n let requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: body\r\n };\r\n await fetch(`${urlBaseTSVSALES}send`, requestOptions)\r\n .then(async response => {\r\n if (response.ok) { result.statusResponse = true; };\r\n })\r\n .catch(error =>\r\n console.log('error', error)\r\n );\r\n return result;\r\n }\r\n\r\n /** \r\n * Service that verifies if TSV services are above.\r\n * @returnsReturns the service information \r\n */\r\n OverallLoadStatus = async () => {\r\n const result = { statusResponse: false, data: null, error: null };\r\n let myHeaders = new Headers();\r\n myHeaders.append(\"Accept\", \"*/*\");\r\n myHeaders.append(\"clientId\", REACT_APP_CLIENTID_TSV);\r\n myHeaders.append(\"clientSecret\", REACT_APP_CLIENTSECRET_TSV);\r\n let requestOptions = { method: 'GET', headers: myHeaders };\r\n\r\n await fetch(`${urlBaseTSV}Configuration/DataWarehouseOverallLoadStatus`, requestOptions)\r\n .then(async response => {\r\n if (response.ok) {\r\n result.statusResponse = true;\r\n await response.json().then(resultapi => result.data = resultapi);\r\n };\r\n }).catch(error => console.log('error', error));\r\n return result;\r\n }\r\n\r\n /** \r\n * Service that verifies if TSV services policy are above.\r\n * @returns Returns the service information \r\n */\r\n PolicyLoadStatus = async () => {\r\n const result = { statusResponse: false, data: null, error: null };\r\n let myHeaders = new Headers();\r\n myHeaders.append(\"Accept\", \"*/*\");\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"clientId\", REACT_APP_CLIENTID_TSV);\r\n myHeaders.append(\"clientSecret\", REACT_APP_CLIENTSECRET_TSV);\r\n let requestOptions = { method: 'GET', headers: myHeaders };\r\n await fetch(`${urlBaseTSV}Configuration/DataWarehousePolicyLoadStatus`, requestOptions)\r\n .then(async response => {\r\n if (response.ok) {\r\n result.statusResponse = true;\r\n await response.json().then(resultapi => result.data = resultapi);\r\n };\r\n }).catch(error =>\r\n console.log('error', error));\r\n return result;\r\n }\r\n}\r\n","import { TokenServices } from \"./TokenServices\";\r\n\r\nconst urlBase = process.env.REACT_APP_URL_API_TSV;\r\n\r\nexport class InsuranceAplicationServices {\r\n constructor() {\r\n this.tokenService = new TokenServices();\r\n }\r\n\r\n /*This method is used to add a new insurance aplication , receives the user information and \r\n sends it to the api */\r\n AddInsuranceApp = async (contactInfo, token) => {\r\n const result = { statusResponse: false, data: null, error: null }\r\n await fetch(`${urlBase}InsuranceAplication/Add`, {\r\n method: 'POST',\r\n body: JSON.stringify(contactInfo),\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${token}`\r\n }\r\n }).then(async response => {\r\n if (response.ok) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi);\r\n })\r\n .catch(error => console.log(error));\r\n return result;\r\n }\r\n}","const urlBase = process.env.REACT_APP_URL_API_TSV;\r\n\r\nexport class CategoryServices {\r\n \r\n /**\r\n * Gets the categories from the api.\r\n * @param {token} string The token to authenticate in the api.\r\n * @return {Promise} promise The promise from the api.\r\n */\r\n GetCategories = async (token) => {\r\n const result = { statusResponse: false, data: null, error: null }\r\n await fetch(`${urlBase}Category/GetAll`, {\r\n method: 'POST',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${token}`\r\n }\r\n }).then(async response => {\r\n if (response.ok) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi.list);\r\n })\r\n .catch(error => console.log(error));\r\n return result;\r\n }\r\n\r\n /**\r\n * Checks if the category has risk questions in the api.\r\n * @param {token} string The token to authenticate in the api.\r\n * @param {idCategory} Object The id category needed for the api.\r\n * @return {Promise} promise The promise from the api.\r\n */\r\n ExistsRiskInCategory = async (token, idCategory) => {\r\n const result = { statusResponse: false, data: null, error: null }\r\n await fetch(`${urlBase}Category/ExistsRiskInCategory`, {\r\n method: 'POST',\r\n body: JSON.stringify(idCategory),\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${token}`\r\n }\r\n }).then(async response => {\r\n if (response.ok) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi.existsRiskInCategory);\r\n })\r\n .catch(error => console.log(error));\r\n return result;\r\n }\r\n\r\n}\r\n\r\n","import './ButtonTSV.css';\r\nimport React from 'react';\r\n\r\nexport class ButtonTSV extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.btnClick = this.btnClick.bind(this);\r\n\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n btnClick() {\r\n if (this.props.function) {\r\n this.props.function();\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {this.props.customClass === 'plus' ?\r\n \r\n \r\n \r\n : this.props.customClass === 'white' ?\r\n \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n }\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}","import { TokenServices } from \"./TokenServices\";\r\n\r\n\r\nexport class LocalStorageTokenServices {\r\n\r\n constructor() {\r\n this.tokenService = new TokenServices();\r\n }\r\n /**\r\n * Get the experidation date information in the local storage.\r\n */\r\n CreateDateExpirationToken = async () => {\r\n const responseToken = await this.tokenService.GetPublicToken();\r\n if (responseToken.statusResponse) {\r\n this.tokenService.EncryptToken(responseToken.data);\r\n //localStorage.setItem('dateExpirationToken', new Date());\r\n }\r\n\r\n return responseToken;\r\n }\r\n /**\r\n * Refresh the experidation date information in the local storage.\r\n */\r\n RefreshDateExpirationToken = async () => {\r\n //let dateCookie = new Date(localStorage.getItem('dateExpirationToken'));\r\n if (!this.tokenService.ValidateToken()) {\r\n await this.CreateDateExpirationToken();\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n","import React from \"react\";\r\nimport './ModalContact.css';\r\nimport { TokenServices } from '../../Services/TokenServices';\r\nimport { WebServicesTSV } from '../../Services/WebServicesTSV';\r\nimport { InsuranceAplicationServices } from '../../Services/InsuranceApplicationServices';\r\nimport { CategoryServices } from '../../Services/CategoryServices';\r\nimport { ButtonTSV } from '../ButtonTSV';\r\nimport { LocalStorageTokenServices } from '../../Services/LocalStorageTokenServices';\r\n\r\n\r\nexport class ModalContact extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tokenService = new TokenServices();\r\n this.localStorageTokenServices = new LocalStorageTokenServices();\r\n this.webServicesTSV = new WebServicesTSV();\r\n this.InsuranceAplicationServices = new InsuranceAplicationServices();\r\n this.categoryServices = new CategoryServices();\r\n this.state = {\r\n products: [],\r\n loading: false,\r\n name: \"\", surname: \"\", email: \"\", phone: \"\", product: 0, comments: \"\",\r\n nameValidate: true, nameMessage: \"\",\r\n surnameValidate: true, surnameMessage: \"\",\r\n emailValidate: true, emailMessage: \"\",\r\n phoneValidate: true, phoneMessage: \"\",\r\n productValidate: true, productMessage: \"\",\r\n commentsValidate: true, commentsMessage: \"\",\r\n listCategory: [],\r\n showMessage: false,\r\n error: false,\r\n refresh: false\r\n\r\n };\r\n }\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.reset && this.state.refresh) {\r\n this.setState({\r\n showMessage: false,\r\n error: false,\r\n refresh: false\r\n })\r\n }\r\n if (prevState.showMessage !== this.state.showMessage && !this.state.refresh) {\r\n this.setState({\r\n refresh: true\r\n })\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const loadCategories = async () => {\r\n try {\r\n await this.localStorageTokenServices.RefreshDateExpirationToken();\r\n const token = this.tokenService.DecryptToken();\r\n const response = await this.categoryServices.GetCategories(token);\r\n if (response.statusResponse)\r\n this.setState({\r\n listCategory: response.data\r\n })\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n };\r\n loadCategories().catch(null);\r\n }\r\n\r\n /**\r\n * this method handle the new product value selected by user \r\n * @param {number} value, value that will save \r\n */\r\n handleSaleSelectChange(value) {\r\n if (parseInt(value, 10) > 0) {\r\n this.setState({\r\n product: value,\r\n productValidate: true, productMessage: ''\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * this method checks if new value for the input is ok \r\n * @param {*} fieldName, fieldname of the input that did change \r\n * @param {*} value, new value of the input\r\n */\r\n validateUserField(fieldName, value) {\r\n let nameVal = this.state.nameValidate;\r\n let nameMessage = '';\r\n let surnameVal = this.state.surnameValidate;\r\n let surnameMessage = '';\r\n let emailVal = this.state.emailValidate;\r\n let emailMessage = '';\r\n let phoneVal = this.state.phoneValidate;\r\n let phoneMessage = '';\r\n let commentsVal = this.state.commentsValidate;\r\n let commentsMessage = '';\r\n switch (fieldName) {\r\n case \"name\":\r\n if (value.length > 50) {\r\n nameMessage = 'La cantidad digitada de caracteres no debe ser mayor que 50.';\r\n nameVal = false;\r\n break;\r\n }\r\n if (value.trim() == \"\") {\r\n nameMessage = 'El nombre es requerido.';\r\n nameVal = false;\r\n break;\r\n }\r\n nameVal = true;\r\n break;\r\n case \"surname\":\r\n if (value.length > 30) {\r\n surnameMessage = 'La cantidad digitada de caracteres no debe ser mayor que 30.';\r\n surnameVal = false;\r\n break;\r\n }\r\n if (value.trim() == \"\") {\r\n surnameMessage = 'El primer apellido es requerido.';\r\n surnameVal = false;\r\n break;\r\n }\r\n surnameVal = true;\r\n break;\r\n case \"email\":\r\n if (value.length > 255) {\r\n emailMessage = 'La cantidad digitada de caracteres no debe ser mayor que 255.';\r\n emailVal = false;\r\n break;\r\n }\r\n if (value.trim() === \"\") {\r\n emailMessage = 'El correo electrónico es requerido.';\r\n emailVal = false;\r\n break;\r\n }\r\n if (!value.match(/^([\\w.%+-]+)@([\\w-]+\\.)+([\\w]{2,})$/i)) {\r\n emailMessage = 'El correo electrónico no es valido.';\r\n emailVal = false;\r\n break;\r\n }\r\n emailVal = true;\r\n break;\r\n case \"phone\":\r\n if (value.length > 10) {\r\n phoneMessage = 'La cantidad digitada de caracteres no debe ser mayor que 10.';\r\n phoneVal = false;\r\n break;\r\n }\r\n if (value.trim() == \"\") {\r\n phoneMessage = 'El número de teléfono es requerido.';\r\n phoneVal = false;\r\n break;\r\n }\r\n if (!value.match(/^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/g)) {\r\n phoneMessage = 'El número teléfonico no es valido.';\r\n phoneVal = false;\r\n break;\r\n }\r\n phoneVal = true;\r\n break;\r\n case \"comments\":\r\n if (value.length > 500) {\r\n commentsMessage = 'La cantidad digitada de caracteres no debe ser mayor que 500.';\r\n commentsVal = false;\r\n break;\r\n }\r\n if (value.trim() == \"\") {\r\n commentsMessage = 'El comentario es requerido.';\r\n commentsVal = false;\r\n break;\r\n }\r\n commentsVal = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n this.setState({\r\n nameValidate: nameVal, nameMessage: nameMessage,\r\n surnameValidate: surnameVal, surnameMessage: surnameMessage,\r\n emailValidate: emailVal, emailMessage: emailMessage,\r\n phoneValidate: phoneVal, phoneMessage: phoneMessage,\r\n commentsValidate: commentsVal, commentsMessage: commentsMessage,\r\n [fieldName]: value\r\n });\r\n }\r\n\r\n /**\r\n * this method clear agent form data\r\n */\r\n clearData() {\r\n this.setState({\r\n name: \"\", surname: \"\", email: \"\", phone: \"\", product: 0, comments: \"\",\r\n nameValidate: true, nameMessage: \"\",\r\n phoneValidate: true, phoneMessage: \"\",\r\n surnameValidate: true, surnameMessage: \"\",\r\n emailValidate: true, emailMessage: \"\",\r\n productValidate: true, productMessage: \"\",\r\n commentsValidate: true, commentsMessage: \"\"\r\n });\r\n }\r\n\r\n /**\r\n * this method handle submit click of the contact form and calls TSV service\r\n */\r\n handleContactSaleConfirm = () => {\r\n if (this.contactValidation()) {\r\n const token = this.tokenService.DecryptToken();\r\n const contactInfo =\r\n {\r\n firstName: this.state.name,\r\n lastName: this.state.surname,\r\n email: this.state.email,\r\n phoneNumber: this.state.phone,\r\n product: this.state.product.toString(),\r\n message: this.state.comments\r\n };\r\n const addContactInfo = async () => {\r\n try {\r\n const responseTSV = await this.webServicesTSV.SalesForce(contactInfo);\r\n if (responseTSV.statusResponse) {\r\n const info = {\r\n name: contactInfo.firstName,\r\n firstSurname: contactInfo.lastName,\r\n email: contactInfo.email,\r\n phone: contactInfo.phoneNumber,\r\n idCategory: contactInfo.product * 1,\r\n comments: contactInfo.message,\r\n IdJSONProcess: null\r\n }\r\n const responseSave = await this.InsuranceAplicationServices.AddInsuranceApp(info, token);\r\n if (responseSave.statusResponse) {\r\n this.setState({\r\n showMessage: true,\r\n error: false\r\n })\r\n this.clearData();\r\n } else {\r\n this.setState({\r\n showMessage: true,\r\n error: true\r\n })\r\n }\r\n } else {\r\n this.setState({\r\n showMessage: true,\r\n error: true\r\n })\r\n }\r\n } catch (err) {\r\n this.setState({\r\n showMessage: true,\r\n error: true\r\n })\r\n console.error(err);\r\n }\r\n };\r\n addContactInfo().catch(null);\r\n }\r\n this.clearData();\r\n }\r\n\r\n /**\r\n * this method checks the value of each form input\r\n * @returns true if all form inputs are correctly completed otherwise false\r\n */\r\n contactValidation = () => {\r\n if (!this.state.name.trim() == \"\" && this.state.name.length <= 50 && this.state.product > 0\r\n && !this.state.surname.trim() == \"\" && this.state.surname.length <= 30 && this.state.email.length <= 255\r\n && !this.state.email.trim() == \"\" && !this.state.phone.trim() == \"\" && !this.state.comments.trim() == \"\") {\r\n return true;\r\n }\r\n if (this.state.product <= 0) {\r\n this.setState({\r\n productValidate: false, productMessage: 'El producto es requerido.'\r\n });\r\n }\r\n if (this.state.name.length > 50) {\r\n this.setState({\r\n nameValidate: false, nameMessage: 'La cantidad digitada de caracteres no debe ser mayor que 50.'\r\n });\r\n }\r\n if (this.state.name.trim() == \"\") {\r\n this.setState({\r\n nameValidate: false, nameMessage: 'El nombre es requerido.'\r\n });\r\n }\r\n if (this.state.surname.length > 30) {\r\n this.setState({\r\n surnameValidate: false, surnameMessage: 'La cantidad digitada de caracteres no debe ser mayor que 30.'\r\n });\r\n }\r\n if (this.state.surname.trim() == \"\") {\r\n this.setState({\r\n surnameValidate: false, surnameMessage: 'El primer apellido es requerido.'\r\n });\r\n }\r\n if (this.state.email.length > 255) {\r\n this.setState({\r\n emailValidate: false, emailMessage: 'La cantidad digitada de caracteres no debe ser mayor que 255.'\r\n });\r\n }\r\n if (this.state.email.trim() == \"\") {\r\n this.setState({\r\n emailValidate: false, emailMessage: 'El correo electrónico es requerido.'\r\n });\r\n }\r\n\r\n if (this.state.phone.length > 10) {\r\n this.setState({\r\n phoneValidate: false, phoneMessage: 'La cantidad digitada de caracteres no debe ser mayor que 10.'\r\n });\r\n }\r\n if (this.state.phone.trim() == \"\") {\r\n this.setState({\r\n phoneValidate: false, phoneMessage: 'El teléfono es requerido.'\r\n });\r\n }\r\n\r\n\r\n if (this.state.comments.length > 500) {\r\n this.setState({\r\n commentsValidate: false, commentsMessage: 'La cantidad digitada de caracteres no debe ser mayor que 500.'\r\n });\r\n }\r\n if (this.state.comments.trim() == \"\") {\r\n this.setState({\r\n commentsValidate: false, commentsMessage: 'El comentario u observación es requerido.'\r\n });\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * this method contains the html code of message that will be show after send the user information to web service\r\n * @returns html code of result message \r\n */\r\n infoSendedMessage = () => {\r\n return (\r\n
\r\n \r\n
\r\n

{this.state.error ? \"Lo sentimos\" : \"¡Gracias!\"}

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

\r\n {this.state.error ? \"En este momento no podemos continuar con la solicitud. Por favor intente más tarde.\" :\r\n \"Gracias por ponerte en contacto con Triple-S Vida, muy pronto uno de nuestros representantes estará dando respuesta a tu solicitud.\"}\r\n

\r\n\r\n
\r\n
\r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n
{\r\n // do not close modal if anything inside modal content is clicked\r\n e.stopPropagation();\r\n }}>\r\n
\r\n {!this.state.showMessage ? <>\r\n
\r\n
Estoy indeciso, prefiero ser conectado directamente
\r\n
\r\n Completa tú información para comunicarnos contigo y orientarte\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n { e.key === 'Enter' && e.preventDefault(); }}\r\n name=\"name\"\r\n id=\"name\"\r\n value={this.state.name}\r\n maxLength=\"50\"\r\n autoComplete='off'\r\n placeholder='Nombre'\r\n onChange={(event) => this.validateUserField(event.target.name, event.target.value)}\r\n />\r\n
\r\n {!this.state.nameValidate &&\r\n \r\n {this.state.nameMessage}\r\n \r\n }\r\n\r\n
\r\n
\r\n
\r\n \r\n { e.key === 'Enter' && e.preventDefault(); }}\r\n name=\"surname\"\r\n id=\"surname\"\r\n placeholder='Apellido'\r\n value={this.state.surname}\r\n maxLength=\"30\"\r\n autoComplete='off'\r\n onChange={(event) => this.validateUserField(event.target.name, event.target.value)}\r\n className={`form-control modal-contact__input ${(!this.state.surnameValidate) ? (' is-invalid-input') : ('')}`}\r\n />\r\n
\r\n {!this.state.surnameValidate &&\r\n \r\n {this.state.surnameMessage}\r\n \r\n\r\n }\r\n
\r\n
\r\n
\r\n \r\n { e.key === 'Enter' && e.preventDefault(); }}\r\n name=\"phone\"\r\n id=\"phone\"\r\n placeholder='Teléfono'\r\n autoComplete='off'\r\n value={this.state.phone}\r\n onChange={(event) => this.validateUserField(event.target.name, event.target.value)}\r\n maxLength=\"10\"\r\n className={`form-control modal-contact__input ${(!this.state.phoneValidate) ? (' is-invalid-input') : ('')}`} />\r\n
\r\n {!this.state.phoneValidate &&\r\n \r\n {this.state.phoneMessage}\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n { e.key === 'Enter' && e.preventDefault(); }}\r\n name=\"email\"\r\n id=\"email\"\r\n placeholder='Email'\r\n autoComplete='off'\r\n value={this.state.email}\r\n onChange={(event) => this.validateUserField(event.target.name, event.target.value)}\r\n maxLength=\"255\"\r\n className={`form-control modal-contact__input ${(!this.state.emailValidate) ? (' is-invalid-input') : ('')}`} />\r\n
\r\n {!this.state.emailValidate &&\r\n \r\n {this.state.emailMessage}\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n this.handleSaleSelectChange(event.target.value)}>\r\n \r\n {\r\n this.state.listCategory &&\r\n this.state.listCategory.map((h, i) =>\r\n ())\r\n }\r\n \r\n
\r\n {!this.state.productValidate &&\r\n \r\n {this.state.productMessage}\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n { e.key === 'Enter' && e.preventDefault(); }}\r\n name=\"comments\"\r\n id=\"comments\"\r\n autoComplete='off'\r\n value={this.state.comments}\r\n maxLength=\"500\"\r\n rows='2' wrap=\"soft\"\r\n placeholder=\"Comentarios\"\r\n onChange={(event) => this.validateUserField(event.target.name, event.target.value)}\r\n className={`form-control modal-contact__input ${(!this.state.commentsValidate) ? (' is-invalid-input') : ('')}`}\r\n />\r\n
\r\n {!this.state.commentsValidate &&\r\n \r\n {this.state.commentsMessage}\r\n \r\n }\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n : this.infoSendedMessage()}\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n )\r\n }\r\n\r\n}\r\nexport default ModalContact;","import './Footer.css';\r\nimport React from 'react';\r\nimport { ModalContact } from '../ModalContact';\r\nimport { Link } from 'react-router-dom';\r\n\r\n\r\nexport class Footer extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n display: 'none',\r\n reset: false\r\n }\r\n }\r\n onLeave(event) {\r\n if (event.path[0].className !== 'help-sticky__text') {\r\n this.setState({ display: 'none', reset: true });\r\n let body = document.querySelector(\"body\");\r\n body.style.overflow = 'visible';\r\n }\r\n }\r\n handleHover = (e) => {\r\n this.setState({ display: 'block', reset: false });\r\n let body = document.querySelector(\"body\");\r\n body.style.overflow = 'hidden';\r\n body.addEventListener('click', (event) => this.onLeave(event));\r\n }\r\n btnClick() {\r\n window.open('https://www.chatbase.co/chatbot-iframe/ltrrRWVGLiyxvJIf2Z9Ox', '_blank',\r\n \"width=320, height=480, left=500, top=130\");\r\n }\r\n componentDidMount() {\r\n }\r\n render() {\r\n const { display } = this.state;\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n\r\n}","import './LoadingPage.css';\r\nimport React from 'react';\r\n\r\nexport class LoadingPage extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount(){\r\n }\r\n\r\n render(){\r\n return (\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n}","\r\nexport class JSONRider {\r\n\r\n /**\r\n * This function initializes the json structure in the local storage.\r\n */\r\n initializeJSON() {\r\n let jsonBase = {\r\n selected_product: {}, \r\n riders: [], \r\n saving_amount: {}\r\n };\r\n localStorage.setItem(\"JSONRider\", JSON.stringify(jsonBase));\r\n\r\n }\r\n\r\n /**\r\n * Determinates if the json in local storage exists.\r\n * @return {Boolean} True if json is iniatilized , false if not.\r\n */\r\n isJSONinitialized() {\r\n return localStorage.getItem(\"JSONRider\") ? true : false;\r\n }\r\n\r\n /**\r\n * Gets the actual json of the local storage.\r\n * @return {String} The json structure with data.\r\n */\r\n getJSONRider() {\r\n let jsonRider = localStorage.getItem(\"JSONRider\");\r\n return jsonRider;\r\n }\r\n\r\n\r\n /**\r\n * Sets the selected product in the local storage.\r\n * @param {Object} selectedProduct The product object.\r\n */\r\n setSelectedProduct(selectedProduct) {\r\n let jsonRider = localStorage.getItem(\"JSONRider\");\r\n if (jsonRider) {\r\n jsonRider = JSON.parse(jsonRider);\r\n }\r\n jsonRider.selected_product = selectedProduct;\r\n localStorage.setItem(\"JSONRider\", JSON.stringify(jsonRider));\r\n\r\n }\r\n\r\n /**\r\n * Gets the selected product of the local storage.\r\n * @return {Object} The selected product of the json.\r\n */\r\n getCurrentSelectedProduct() {\r\n let jsonRider = localStorage.getItem(\"JSONRider\");\r\n let selectedProduct = {};\r\n if (jsonRider) {\r\n jsonRider = JSON.parse(jsonRider);\r\n }\r\n if (jsonRider.selected_product) {\r\n selectedProduct = jsonRider.selected_product;\r\n }\r\n return selectedProduct;\r\n }\r\n\r\n /**\r\n * Removes the current product of the json in the local storage.\r\n */\r\n removeCurrentSelectedProduct() {\r\n let jsonRider = localStorage.getItem(\"JSONRider\");\r\n if (jsonRider) {\r\n jsonRider = JSON.parse(jsonRider);\r\n }\r\n if (jsonRider.selected_product) {\r\n jsonRider.selected_product = {};\r\n }\r\n localStorage.setItem(\"JSONRider\", JSON.stringify(jsonRider));\r\n }\r\n\r\n /**\r\n * Sets the savingAmount of the json in the local storage.\r\n * @param {Object} savingAmount The savingAmount array.\r\n */\r\n setSavingAmount(savingAmount) {\r\n let jsonRider = localStorage.getItem(\"JSONRider\");\r\n if (jsonRider) {\r\n jsonRider = JSON.parse(jsonRider);\r\n }\r\n jsonRider.saving_amount = savingAmount;\r\n localStorage.setItem(\"JSONRider\", JSON.stringify(jsonRider));\r\n\r\n }\r\n\r\n /**\r\n * Gets the current saving amount of the json of the local storage.\r\n * @return {Array} The saving amount object.\r\n */\r\n getCurrentSavingAmount() {\r\n let jsonRider = localStorage.getItem(\"JSONRider\");\r\n let savingAmount = {};\r\n if (jsonRider) {\r\n jsonRider = JSON.parse(jsonRider);\r\n }\r\n if (jsonRider.saving_amount) {\r\n savingAmount = jsonRider.saving_amount;\r\n }\r\n return savingAmount;\r\n }\r\n\r\n /**\r\n * Removes the current saving amount of the json in the local storage.\r\n */\r\n removeCurrentSavingAmount() {\r\n let jsonRider = localStorage.getItem(\"JSONRider\");\r\n if (jsonRider) {\r\n jsonRider = JSON.parse(jsonRider);\r\n }\r\n if (jsonRider.saving_amount) {\r\n jsonRider.saving_amount = {};\r\n }\r\n localStorage.setItem(\"JSONRider\", JSON.stringify(jsonRider));\r\n }\r\n\r\n\r\n /**\r\n * Sets the riders of the json in the local storage.\r\n * @param {Object} riders The riders array.\r\n */\r\n async setRiders(riders) {\r\n let jsonTsv = localStorage.getItem(\"JSONRider\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n jsonTsv.riders = riders;\r\n localStorage.setItem(\"JSONRider\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Gets the current riders array of the json of the local storage.\r\n * @return {Array} The riders object.\r\n */\r\n getCurrentRiders() {\r\n let jsonTsv = localStorage.getItem(\"JSONRider\");\r\n let riders = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n \r\n if (jsonTsv != null && jsonTsv.riders) {\r\n riders = jsonTsv.riders;\r\n }\r\n return riders;\r\n }\r\n\r\n /**\r\n * Removes the current riders array of the json in the local storage.\r\n */\r\n removeCurrentRiders() {\r\n let jsonTsv = localStorage.getItem(\"JSONRider\");\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv.riders) {\r\n jsonTsv.riders = {};\r\n }\r\n localStorage.setItem(\"JSONRider\", JSON.stringify(jsonTsv));\r\n }\r\n /**\r\n * Modify a rider basic plan in the local storage.\r\n * @param {Object} rider The rider object.\r\n */\r\n modifyRiderBasicPlan(rider) {\r\n let jsonTsv = localStorage.getItem(\"JSONRider\");\r\n let riders = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.riders) {\r\n riders = jsonTsv.riders;\r\n riders[0].faceAmountText = Number(rider.faceAmount);\r\n jsonTsv.riders = riders;\r\n }\r\n }\r\n localStorage.setItem(\"JSONRider\", JSON.stringify(jsonTsv));\r\n}\r\n /**\r\n * Modify a rider of the array of riders in the local storage.\r\n * @param {Object} rider The rider object.\r\n */\r\n modifyRiderOfRiders(rider) {\r\n let jsonTsv = localStorage.getItem(\"JSONRider\");\r\n let riders = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.riders) {\r\n riders = jsonTsv.riders;\r\n\r\n for (let index = 0; index < riders.length; index++) {\r\n if (riders[index].categoryName === rider.categoryName) {\r\n if (index > -1) {\r\n riders.splice(index, 1, rider);\r\n }\r\n\r\n }\r\n }\r\n jsonTsv.riders = riders;\r\n }\r\n }\r\n\r\n localStorage.setItem(\"JSONRider\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Removes a rider of the array of riders in the local storage.\r\n * @param {Object} rider The rider object.\r\n */\r\n removeRiderOfRiders(rider) {\r\n let jsonTsv = localStorage.getItem(\"JSONRider\");\r\n let riders = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n if (jsonTsv.riders) {\r\n riders = jsonTsv.riders;\r\n\r\n for (let index = 0; index < riders.length; index++) {\r\n if (btoa(JSON.stringify(riders[index])) === (btoa(JSON.stringify(rider)))) {\r\n if (index > -1) {\r\n riders.splice(index, 1);\r\n }\r\n }\r\n }\r\n jsonTsv.riders = riders;\r\n }\r\n }\r\n localStorage.setItem(\"JSONRider\", JSON.stringify(jsonTsv));\r\n }\r\n\r\n /**\r\n * Adds a rider of the array of riders in the local storage.\r\n * @param {Object} rider The rider object.\r\n */\r\n addRiderToRiders(rider) {\r\n let jsonTsv = localStorage.getItem(\"JSONRider\");\r\n let riders = [];\r\n if (jsonTsv) {\r\n jsonTsv = JSON.parse(jsonTsv);\r\n }\r\n if (jsonTsv != null &&jsonTsv.riders) {\r\n riders = jsonTsv.riders;\r\n }else {\r\n jsonTsv = {\r\n \"selected_product\": {\r\n \"id_tsv_product\": \"\",\r\n \"isNew\": true\r\n },\r\n \"riders\": [\r\n \r\n ],\r\n \"saving_amount\": {\r\n \"initial_deposit\": \"\",\r\n \"additional_deposit\": \"\"\r\n }\r\n } \r\n }\r\n riders.push(rider);\r\n jsonTsv.riders = riders;\r\n localStorage.setItem(\"JSONRider\", JSON.stringify(jsonTsv));\r\n }\r\n}","import './CategoryCard.css';\r\nimport React from 'react';\r\nimport { ButtonTSV } from '../ButtonTSV';\r\nimport { JSONExchangeTSV } from '../../Services/JSONExchangeTSV';\r\nimport { JSONRider } from '../../Services/JSONRider';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst SAVING_CATEGORY = process.env.REACT_APP_SAVING_CATEGORY;\r\nconst REACT_APP_DEFAULT_IMAGE = process.env.REACT_APP_DEFAULT_IMAGE;\r\n\r\n\r\nexport class CategoryCard extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.jsonRider = new JSONRider();\r\n this.state = { imageUrl: '', des: '', options: '' };\r\n this.categoryCardFunction = this.categoryCardFunction.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let des = this.props.description;\r\n let options = 'Opciones';\r\n this.setState({\r\n imageUrl: this.props.img, des: des.substring(0, des.lastIndexOf(options)) == '' ? des : des.substring(0, des.lastIndexOf(options)),\r\n options: des.lastIndexOf(options) == -1 ? '' : des.substring(des.lastIndexOf(options), des.length)\r\n })\r\n\r\n\r\n\r\n }\r\n\r\n categoryCardFunction() {\r\n if (this.props.categoryFunction) {\r\n this.props.categoryFunction(this.props.idCategory);\r\n let serie = {\r\n 'id_series': `${this.props.idCategory}`,\r\n 'name': `${this.props.title}`\r\n };\r\n if (this.jsonExchangeTSV.isJSONinitialized()) {\r\n if (this.jsonExchangeTSV.getCurrentSerie().id_series != serie.id_series) {\r\n this.jsonExchangeTSV.initializeJSON();\r\n this.jsonExchangeTSV.addPersonToInsuredPersons({ id_insured: 1, primary_insured: true });\r\n this.jsonExchangeTSV.setSerie(serie);\r\n this.jsonRider.initializeJSON();\r\n }\r\n } else {\r\n this.jsonExchangeTSV.initializeJSON();\r\n this.jsonExchangeTSV.addPersonToInsuredPersons({ id_insured: 1, primary_insured: true });\r\n this.jsonExchangeTSV.setSerie(serie);\r\n }\r\n }\r\n }\r\n onError() {\r\n this.setState({\r\n imageUrl: REACT_APP_DEFAULT_IMAGE\r\n })\r\n }\r\n render() {\r\n return (\r\n
  • \r\n
    \r\n
    \r\n

    16 ? 'title last-of-type' : 'title'}>{this.props.title}

    \r\n
    \r\n

    {this.state.des}

    \r\n {this.state.options.length > 0 ?

    {this.state.options}

    : null }\r\n \r\n
    \r\n \r\n
    \r\n\r\n
  • \r\n );\r\n }\r\n}\r\nexport default CategoryCard;","import React from 'react';\r\nimport CategoryCard from './CategoryCard';\r\nconst life = process.env.REACT_APP_ID_LIFE;\r\nconst saving = process.env.REACT_APP_SAVING_CATEGORY;\r\nconst health = process.env.REACT_APP_HEALTH_CATEGORY;\r\nexport class CategoryList extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n\r\n }\r\n hiddenHelpSticky(){\r\n let helpSticky = document.getElementById(\"div-help-sticky\");\r\n let helpChat = document.getElementById(\"div-help-chat\");\r\n\r\n if(helpSticky !== null){\r\n helpSticky.style.display = \"none\";\r\n helpChat.style.display = \"block\";\r\n }\r\n }\r\n render() { \r\n this.hiddenHelpSticky();\r\n return (\r\n\r\n <>\r\n {this.props.categories.map((category) => {\r\n return (\r\n \r\n )\r\n return null;\r\n }\r\n )\r\n }\r\n \r\n )\r\n }\r\n}","import './Welcome.css';\r\nimport React from 'react';\r\nimport { CategoryList } from '../../components/CategoryCard/CategoryList';\r\nimport { LocalStorageTokenServices } from '../../Services/LocalStorageTokenServices';\r\nimport { TokenServices } from '../../Services/TokenServices';\r\nimport { CategoryServices } from '../../Services/CategoryServices';\r\n\r\nexport class Welcome extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.categoryServices = new CategoryServices();\r\n this.localStorageTokenServices = new LocalStorageTokenServices();\r\n this.tokenService = new TokenServices();\r\n this.state = {\r\n data: []\r\n }\r\n };\r\n\r\n fetchData = async () => {\r\n const token = this.tokenService.DecryptToken();\r\n const response = await this.categoryServices.GetCategories(token);\r\n if (response.statusResponse)\r\n this.setState({\r\n data: response.data\r\n })\r\n }\r\n\r\n async getDataCategories() {\r\n await this.localStorageTokenServices.RefreshDateExpirationToken();\r\n await this.fetchData();\r\n }\r\n \r\n componentDidMount() {\r\n this.getDataCategories()\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}","import { TokenServices } from \"./TokenServices\";\r\n\r\nconst urlBase = process.env.REACT_APP_URL_API_TSV;\r\n\r\nexport class ProcedureServices {\r\n\r\n constructor() {\r\n this.tokenService = new TokenServices();\r\n }\r\n\r\n /**\r\n * Gets the operators for the question from the api.\r\n * @param {Object} question The question object.\r\n * @return {Promise} promise The promise from the api.\r\n */\r\n GetOperators = async (question) => {\r\n const result = { statusResponse: false, data: null, error: null }\r\n let myHeaders = new Headers();\r\n myHeaders.append(\"Accept\", \"application/json\");\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"Authorization\", `Bearer ${this.tokenService.DecryptToken()}`);\r\n\r\n let body = JSON.stringify(question);\r\n\r\n let requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: body\r\n };\r\n await fetch(`${urlBase}QuestionProcedure/GetProcedureByIdQuestion`, requestOptions)\r\n .then(async response => {\r\n if (response.ok) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi);\r\n })\r\n .catch(error => console.log('error', error));\r\n return result;\r\n }\r\n}\r\n\r\n","import { JSONExchangeTSV } from \"./JSONExchangeTSV\";\r\nconst selectProductQuestion = process.env.REACT_APP_SELECT_PRODUCT;\r\n\r\nexport class NumericalRangeCardServices {\r\n\r\n constructor() {\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n\r\n }\r\n /**\r\n * Set properties and values needed before the component is rendered.\r\n * @param {Object} fieldConfig The question of the current component.\r\n * @return {Object} The properies object needed by the component.\r\n */\r\n SetPropertiesBeforeRender = (fieldConfig) => {\r\n let rangeOpValues = [];\r\n let response = {\r\n minValue: null,\r\n maxVal: null,\r\n optionValues: null\r\n }\r\n if (fieldConfig.options !== null && fieldConfig.options.length > 0) {\r\n fieldConfig.options.forEach(element => {\r\n rangeOpValues.push(element.option * 1); //convert to number\r\n rangeOpValues.push(element.option2 * 1); // convert to number \r\n });\r\n rangeOpValues.sort(function (a, b) {\r\n return a - b;\r\n });\r\n response.minValue = rangeOpValues[0];\r\n response.maxVal = rangeOpValues[rangeOpValues.length - 1];\r\n response.optionValues = fieldConfig.options\r\n\r\n return response;\r\n }\r\n }\r\n /**\r\n * Gets the previous question with his answer from local storage, answered by the user.\r\n * @param {Number} idCurrentCategory The numerical id of the current category.\r\n * @param {Object} fieldConfig The question of the current component.\r\n * @return {Object} The question with his answer object if exist, if not then returns false.\r\n */\r\n GetPreviousAnswerFromLocalStorage = (idCurrentCategory, fieldConfig) => {\r\n let response = {\r\n validRangeOne: null,\r\n errorMessageRangeOne: null,\r\n valueRangeOne: null,\r\n fieldConfig: null,\r\n step: null\r\n }\r\n if(fieldConfig.idQuestionClass == '3'){\r\n let valueAnswerProduct = this.jsonExchangeTSV.getQuestionOfProductQuestionsByIdTSV(fieldConfig.idTSVField);\r\n if(valueAnswerProduct !== null && valueAnswerProduct !== undefined){\r\n fieldConfig.value = valueAnswerProduct.value_answer;\r\n let step = fieldConfig.options[0].step;\r\n fieldConfig.valid = true;\r\n fieldConfig.disabled = true;\r\n response.validRangeOne = true;\r\n response.errorMessageRangeOne = '';\r\n response.valueRangeOne = fieldConfig.value;\r\n response.step = step;\r\n response.fieldConfig = fieldConfig;\r\n return response;\r\n }else{\r\n return response;\r\n }\r\n }else\r\n if (this.IsCurrentCategory(idCurrentCategory)) {\r\n if (this.GetLastAnswerSaved(fieldConfig) != null) {\r\n let localStorageAnswer = this.GetLastAnswerSaved(fieldConfig);\r\n fieldConfig.value = localStorageAnswer.value_answer;\r\n let chosenAnswerOption = fieldConfig.options.filter(option => option.id === Number(localStorageAnswer.id_answer));\r\n let step = chosenAnswerOption[0] ? chosenAnswerOption[0].step : 0;\r\n fieldConfig.valid = true;\r\n\r\n response.validRangeOne = true;\r\n response.errorMessageRangeOne = '';\r\n response.valueRangeOne = fieldConfig.value;\r\n response.step = step;\r\n response.fieldConfig = fieldConfig;\r\n\r\n return response;\r\n }\r\n return false;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Handles a change on a input a valid if this change is correct.\r\n * @param {Object} event The event when the input change.\r\n * @param {Object} field The question object used in the component.\r\n * @param {Boolean} validRangeOne The boolean value if the first number input is valid.\r\n * @param {Number} minVal The minimum value for the input.\r\n * @param {Number} maxVal The maximum value for the input.\r\n * @return {Object} The response object to set props and state in the component.\r\n */\r\n HandleInputChange = (event, field, validRangeOne, minVal, maxVal) => {\r\n field.value = event.target.value;\r\n const response = this.CheckValidity(field, validRangeOne, minVal, maxVal);\r\n return response;\r\n }\r\n\r\n /**\r\n * Validates if the value of the input is correct.\r\n * @param {Object} field The question object used in the component.\r\n * @param {Boolean} validRangeOne The boolean value if the first number input is valid.\r\n * @param {Number} minVal The minimum value for the input.\r\n * @param {Number} maxVal The maximum value for the input.\r\n * @return {Object} The response object to set props and state in the component.\r\n */\r\n CheckValidity = (field, validRangeOne, minVal, maxVal) => {\r\n const pattern = /^[0-9\\b]+$/;\r\n let errorMessageRangeOne = \"\";\r\n let response = {\r\n valueRangeOne: null,\r\n errorMessageRangeOne: null,\r\n validRangeOne: null,\r\n fieldConfig: null\r\n\r\n };\r\n let value = field.value !== null ? field.value.replaceAll(',', '') : ''; // value without format to do validation\r\n if (value.trim() == '' && field.required) {\r\n errorMessageRangeOne = '*Campo es requerido.';\r\n validRangeOne = false;\r\n } else if (!field.required && value.trim() == '') {\r\n validRangeOne = true;\r\n\r\n }\r\n else if (!value.trim() == '' && !pattern.test(value)) {\r\n errorMessageRangeOne = '*Este campo solo permite valores númericos enteros.';\r\n validRangeOne = false;\r\n }\r\n else {\r\n if (!value.trim() == '' && Number(value) >= 0) {\r\n if (Number(value) < minVal || Number(value) > maxVal) {\r\n let min = Number(minVal).toFixed(1).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n let max = Number(maxVal).toFixed(1).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n errorMessageRangeOne = `*El valor debe estar entre ${min.substring(0, min.indexOf('.'))} y \r\n ${max.substring(0, max.indexOf('.'))}`;\r\n validRangeOne = false;\r\n\r\n //format value\r\n value = (value * 1).toFixed(1).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n value = value.toString().substring(0, value.indexOf('.'))\r\n\r\n } else {\r\n if (Number(value) >= minVal && Number(value) <= maxVal) {\r\n errorMessageRangeOne = '';\r\n validRangeOne = true;\r\n //format value\r\n value = Number(value).toFixed(1).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n value = value.toString().substring(0, value.indexOf('.'))\r\n }\r\n }\r\n } else {\r\n errorMessageRangeOne = `*El valor debe ser mayor o igual a 0.`;\r\n validRangeOne = false;\r\n }\r\n }\r\n field.valid = validRangeOne;\r\n field.value = value\r\n\r\n response.errorMessageRangeOne = errorMessageRangeOne;\r\n response.validRangeOne = validRangeOne;\r\n response.valueRangeOne = value;\r\n response.fieldConfig = field;\r\n return response;\r\n }\r\n /**\r\n * Validates if the input is correct to go to the next question and save it in the local storage.\r\n * @param {Boolean} validRangeOne The boolean value if the first number input is valid.\r\n * @param {Object} fieldConfig The question of the current component.\r\n * @param {Array} optionValues The possible options values for the answer of the user.\r\n * @param {Number} minVal The minimum value for the input.\r\n * @param {Number} maxVal The maximum value for the input.\r\n * @return {Object} The response object to set props and state in the component.\r\n */\r\n NextStep = (validRangeOne, fieldConfig, optionValues, minVal, maxVal) => {\r\n let step = 0;\r\n let response = {\r\n validRangeOne: null,\r\n step: null,\r\n fieldConfig: null\r\n }\r\n if (!fieldConfig.required && fieldConfig.value.trim() === '') {\r\n response.validRangeOne = true;\r\n let step = fieldConfig.questionNumber + 1;\r\n if (step === fieldConfig.totalFields) {\r\n step = 0;\r\n response.step = step;\r\n } else {\r\n response.step = step;\r\n }\r\n response.fieldConfig = fieldConfig;\r\n\r\n return response;\r\n }\r\n const checkValidityResponse = this.CheckValidity(fieldConfig, validRangeOne, minVal, maxVal);\r\n if (checkValidityResponse.validRangeOne) {\r\n fieldConfig.valid = true;\r\n let idAnswerOption = this.GetIdOptionRangeValue(optionValues, fieldConfig.value);\r\n let chosenAnswerOption = fieldConfig.options.filter(option => option.id === Number(idAnswerOption));\r\n step = chosenAnswerOption[0] ? chosenAnswerOption[0].step : 0;\r\n this.SaveAnswer(fieldConfig, idAnswerOption);\r\n response.validRangeOne = validRangeOne;\r\n response.step = step;\r\n response.fieldConfig = fieldConfig;\r\n\r\n return response;\r\n } else {\r\n fieldConfig.valid = false;\r\n response = this.CheckValidity(fieldConfig, checkValidityResponse.validRangeOne, minVal, maxVal);\r\n return response;\r\n }\r\n }\r\n SaveAnswer(fieldConfig, idAnswerOption) {\r\n let question = {\r\n \"id_question\": `${fieldConfig.id}`,\r\n \"question_type\": `${fieldConfig.type}`,\r\n \"question_text\": `${fieldConfig.body}`,\r\n \"id_answer\": `${idAnswerOption}`,\r\n \"value_answer\": `${fieldConfig.value}`,\r\n \"id_tsv_field\": `${fieldConfig.idTSVField}`,\r\n \"question_number\": fieldConfig.questionNumber\r\n }\r\n if (Number(fieldConfig.idQuestionClass) == selectProductQuestion) {\r\n if (!this.jsonExchangeTSV.existQuestionOfProductQuestions(question)) {\r\n this.jsonExchangeTSV.addQuestionToProductQuestion(question);\r\n } else {\r\n let lastQuestion = this.jsonExchangeTSV.getQuestionOfProductQuestionsById(question);\r\n this.jsonExchangeTSV.removeQuestionOfProductQuestions(lastQuestion);\r\n this.jsonExchangeTSV.addQuestionToProductQuestion(question);\r\n }\r\n } else {\r\n\r\n question.base_question_risk = false;\r\n if (!this.jsonExchangeTSV.existQuestionOfRiskQuestions(question)) {\r\n this.jsonExchangeTSV.addRiskQuestionToRiskQuestions(question);\r\n } else {\r\n let lastQuestion = this.jsonExchangeTSV.getQuestionOfRiskQuestionsById(question);\r\n this.jsonExchangeTSV.removeQuestionOfRiskQuestions(lastQuestion);\r\n this.jsonExchangeTSV.addRiskQuestionToRiskQuestions(question);\r\n }\r\n }\r\n }\r\n GetCorrectAnswerOption = (value, options, age, risk) => {\r\n if (risk !== undefined && risk) {\r\n const numericalValue = value !== null ? value.toString().replaceAll(',', '') : '';\r\n const numericalAge = age !== null ? Number(age) : null;\r\n for (const option of options) {\r\n if (numericalValue >= Number(option.option) && numericalValue <= Number(option.option2)) {\r\n if (numericalAge >= option.ageMin && numericalAge <= option.ageMax) {\r\n return option;\r\n }\r\n }\r\n }\r\n return null;\r\n } else {\r\n const numericalValue = value !== null ? value.toString().replaceAll(',', '') : '';\r\n for (const option of options) {\r\n if (numericalValue >= Number(option.option) && numericalValue <= Number(option.option2)) {\r\n return option;\r\n }\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the id of the option value according to the answer of the object.\r\n * @param {Array} optionValues The array of possible answer options\r\n * @param {Object} value The possible options values for the answer of the user.\r\n * @return {number} The id of the answer option.\r\n */\r\n GetIdOptionRangeValue = (optionValues, value) => {\r\n let numericalValue = parseInt(value.replaceAll(',', ''));\r\n if (optionValues != null && optionValues.length > 0) {\r\n for (const element of optionValues) {\r\n if (numericalValue >= parseInt(element.option) && numericalValue <= parseInt(element.option2)) {\r\n return element.id;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Validates if the category chosen by the user is the same of the local storage.\r\n * @param {Number} isCurrentCategory A numerical id of the category\r\n * @return {Boolean} True if it is the current category.\r\n */\r\n IsCurrentCategory = (idCurrentCategory) => {\r\n let currentCategory = this.jsonExchangeTSV.getCurrentSerie();\r\n if (parseInt(currentCategory.id_series) === idCurrentCategory) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets the last answer saved for a question in the local storage.\r\n * @param {Object} fieldConfig The question of the current component.\r\n * @return {Boolean} True if it is the current category.\r\n */\r\n GetLastAnswerSaved = (fieldConfig) => {\r\n let question = { id_question: fieldConfig.id };\r\n let lastAnswer = {};\r\n if (Number(fieldConfig.idQuestionClass) == selectProductQuestion) {\r\n if (fieldConfig.idMainQuestion === '') {\r\n lastAnswer = this.jsonExchangeTSV.getQuestionOfProductQuestionsById(question);\r\n } else {\r\n lastAnswer = this.jsonExchangeTSV.getSubQuestionOfProductQuestionsById(question);\r\n }\r\n\r\n } else {\r\n lastAnswer = this.jsonExchangeTSV.getQuestionOfRiskQuestionsById(question);\r\n }\r\n if (!lastAnswer) {\r\n return null;\r\n }\r\n if (lastAnswer.value_answer) {\r\n return lastAnswer;\r\n } else if (lastAnswer.answer_list) {\r\n return lastAnswer.answer_list[0] ? lastAnswer.answer_list[0] : null;\r\n }\r\n return null;\r\n }\r\n}","import { TokenServices } from \"./TokenServices\";\r\n\r\nconst REACT_APP_URL_API_TSV = process.env.REACT_APP_URL_API_TSV;\r\n\r\nexport class ParameterService {\r\n constructor() {\r\n this.tokenServices = new TokenServices();\r\n this.token = this.tokenServices.DecryptToken();\r\n }\r\n\r\n /** \r\n * This method is for loading parameters values by id parameter\r\n * @param { Object } idParameter - The id of the parameters values to consult \r\n * @return { Promise } promise with list of object with parameters values by id parameter\r\n */\r\n GetAllParameterById = (idParameter) => {\r\n let myHeaders = new Headers();\r\n myHeaders.append(\"Accept\", \"application/json\");\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"Authorization\", `Bearer ${this.token}`);\r\n\r\n let requestOptions = {\r\n method: 'POST',\r\n headers: myHeaders,\r\n body: JSON.stringify(idParameter)\r\n };\r\n\r\n return new Promise(function (resolve, reject) {\r\n const result = { statusResponse: false, data: null, error: null }\r\n fetch(`${REACT_APP_URL_API_TSV}ParameterValue/GetAllByParameterId`, requestOptions)\r\n .then(response => {\r\n if (response.ok) { result.statusResponse = true; }\r\n response.json().then(resultapi => {\r\n result.data = resultapi.list != null ? resultapi.list : [];\r\n resolve(result);\r\n })\r\n }).catch(error => {\r\n result.error = error; reject(result);\r\n })\r\n });\r\n }\r\n}","import { JSONExchangeTSV } from \"./JSONExchangeTSV\";\r\nimport { ParameterService } from \"./ParameterService\";\r\n\r\nexport class SelectedProductListServices {\r\n\r\n constructor() {\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.parameterService = new ParameterService();\r\n }\r\n\r\n /**\r\n * Gets the questions and answers from local storage and set th request object needed by the api.\r\n * @return {Object} The object request needed in the api.\r\n */\r\n GetSelectedProductRequestObject = () => {\r\n let request = {\r\n idCategory: null,\r\n questions: null,\r\n insuredPersons: []\r\n };\r\n let questions = [];\r\n let jsonQuestions = this.jsonExchangeTSV.getCurrentProductQuestions();\r\n jsonQuestions.forEach(jsonQuestion => {\r\n let questionTsv = {\r\n idQuestion: null,\r\n idAnswer: null,\r\n valueAnswer: null,\r\n mainMatrix: null,\r\n questionList: null,\r\n answerList: null\r\n }\r\n questionTsv.idQuestion = Number(jsonQuestion.id_question);\r\n questionTsv.idAnswer = jsonQuestion.id_answer ? Number(jsonQuestion.id_answer) : null;\r\n questionTsv.valueAnswer = jsonQuestion.value_answer;\r\n if (jsonQuestion.main_matrix === null) {\r\n questionTsv.mainMatrix = null;\r\n } else {\r\n questionTsv.mainMatrix = jsonQuestion.main_matrix;\r\n }\r\n questionTsv.questionList = jsonQuestion.question_list ?\r\n this.GetMatrixSubQuestions(jsonQuestion.question_list) : null;\r\n\r\n questionTsv.answerList = jsonQuestion.answer_list ?\r\n this.GetMultipleChoiseAnswer(jsonQuestion.answer_list) : null;\r\n\r\n questions.push(questionTsv);\r\n });\r\n request.questions = questions;\r\n request.idCategory = Number(this.jsonExchangeTSV.getCurrentSerie().id_series);\r\n let insuredPersonsArray = [];\r\n insuredPersonsArray = this.jsonExchangeTSV.getCurrentInsuredPersons();\r\n let rateTable = this.jsonExchangeTSV.getRateTable();\r\n if (rateTable.length > 0) {\r\n for (const rate of rateTable) {\r\n if (rate.id_insured) {\r\n let insuredPerson =\r\n insuredPersonsArray.filter(insured => insured.id_insured == rate.id_insured);\r\n if (insuredPerson[0]) {\r\n let indexToUpdate = insuredPersonsArray.findIndex\r\n (insured => insured.id_insured === insuredPerson[0].id_insured);\r\n insuredPerson[0] = {\r\n ...insuredPerson[0], 'rated_table':\r\n rate.table ? rate.table : null\r\n };\r\n insuredPersonsArray[indexToUpdate] = { ...insuredPerson[0] };\r\n this.jsonExchangeTSV.modifyPersonfInsuredPersons(insuredPerson[0]);\r\n }\r\n }\r\n }\r\n }\r\n for (const insuredPerson of insuredPersonsArray) {\r\n request.insuredPersons.push({\r\n 'idInsured': insuredPerson.id_insured,\r\n 'primaryInsured': insuredPerson.primary_insured,\r\n 'dateOfBirth': insuredPerson.date_Of_birth ? insuredPerson.date_Of_birth : null,\r\n 'relationship': insuredPerson.relationship ? insuredPerson.relationship : null,\r\n 'age': insuredPerson.age ? insuredPerson.age : null,\r\n 'gender': insuredPerson.gender ? insuredPerson.gender : null,\r\n 'name': insuredPerson.name ? insuredPerson.name : null,\r\n 'lastName': insuredPerson.last_name ? insuredPerson.last_name : null,\r\n 'ratedTable': insuredPerson.rated_table ? insuredPerson.rated_table : null\r\n\r\n })\r\n };\r\n return request;\r\n }\r\n\r\n /**\r\n * Process the insured persons approved form the selection of product process from the api in the format of tsv local storage.\r\n * @return {Array} The array needed in the local storage.\r\n */\r\n ProcessInsuredPersonsApproved = (insuredPersonsApproved) => {\r\n let insuredPersonsTSV = [];\r\n for (const insuredPerson of insuredPersonsApproved) {\r\n insuredPersonsTSV.push({\r\n 'id_insured': insuredPerson.idInsured,\r\n 'primary_insured': insuredPerson.primaryInsured,\r\n 'date_Of_birth': insuredPerson.dateOfBirth ? insuredPerson.dateOfBirth : null,\r\n 'relationship': insuredPerson.relationship ? insuredPerson.relationship : null,\r\n 'age': insuredPerson.age ? insuredPerson.age : null,\r\n 'gender': insuredPerson.gender ? insuredPerson.gender : null,\r\n 'name': insuredPerson.name ? insuredPerson.name : null,\r\n 'last_name': insuredPerson.lastName ? insuredPerson.lastName : null,\r\n 'rated_table': insuredPerson.ratedTable ? insuredPerson.ratedTable : null\r\n\r\n })\r\n };\r\n return insuredPersonsTSV;\r\n }\r\n\r\n /**\r\n * Change the insured persons format to the format needed by the TSV API .\r\n * @return {Array} The array transformed\r\n */\r\n ToInsuredPersonsTSVFormat = (insuredPersonsApproved) => {\r\n let insuredPersonsTSV = [];\r\n for (const insuredPerson of insuredPersonsApproved) {\r\n insuredPersonsTSV.push({\r\n 'idInsured': insuredPerson.id_insured,\r\n 'primaryInsured': insuredPerson.primary_insured,\r\n 'dateOfBirth': insuredPerson.date_Of_birth ? insuredPerson.date_Of_birth : null,\r\n 'relationship': insuredPerson.relationship ? insuredPerson.relationship : null,\r\n 'age': insuredPerson.age ? insuredPerson.age : null,\r\n 'gender': insuredPerson.gender ? insuredPerson.gender : null,\r\n 'name': insuredPerson.name ? insuredPerson.name : null,\r\n 'lastName': insuredPerson.last_name ? insuredPerson.last_name : null,\r\n 'ratedTable': insuredPerson.rated_table ? insuredPerson.rated_table : null\r\n\r\n })\r\n };\r\n return insuredPersonsTSV;\r\n }\r\n\r\n /**\r\n * Gets the answers of a multiple choise question in the format of the api\r\n * @return {Object} The array of questions and asnwers needed in the api.\r\n */\r\n GetMultipleChoiseAnswer = (answersList) => {\r\n let answersListTSV = [];\r\n for (const answerValue of answersList[0]) {\r\n let answer = {\r\n idAnswer: answerValue.id_answer ? Number(answerValue.id_answer) : null,\r\n valueAnswer: answerValue.value_answer,\r\n }\r\n answersListTSV.push(answer);\r\n }\r\n return answersListTSV;\r\n\r\n }\r\n\r\n /**\r\n * Gets the questions and answers of a matrix in the format of the api\r\n * @return {Object} The array of questions and asnwers needed in the api.\r\n */\r\n GetMatrixSubQuestions = (subQuestionList) => {\r\n let questionList = [];\r\n for (const subQuestion of subQuestionList) {\r\n let question = {\r\n idQuestion: null, questionText: null, questionType: null,\r\n baseQuestion: null, answerList: null\r\n };\r\n question.idQuestion = subQuestion.id_question ? Number(subQuestion.id_question)\r\n : null;\r\n question.questionType = subQuestion.question_type\r\n ? Number(subQuestion.question_type) : null;\r\n\r\n question.questionText = subQuestion.question_text;\r\n\r\n question.baseQuestion = subQuestion.question_base;\r\n\r\n for (const answer of subQuestion.answer_list) {\r\n let answerTSV = { idAnswer: null, valueAnswer: null, idInsuredPerson: null };\r\n if (Array.isArray(answer)) {\r\n if (answer.length > 0) {\r\n if (!question.answerList) {\r\n question.answerList = [];\r\n }\r\n if (!answerTSV.answerValueList) {\r\n answerTSV.answerValueList = [];\r\n }\r\n for (const answerValue of answer) {\r\n answerTSV.answerValueList.push({\r\n idAnswer: answerValue.id_answer ? Number(answerValue.id_answer) : null,\r\n valueAnswer: answerValue.value_answer,\r\n idInsuredPerson: answerValue.id_insured\r\n })\r\n }\r\n question.answerList.push(answerTSV);\r\n }\r\n\r\n } else {\r\n if (!question.answerList) {\r\n question.answerList = [];\r\n }\r\n answerTSV.idAnswer = answer.id_answer ? Number(answer.id_answer) : null;\r\n answerTSV.valueAnswer = answer.value_answer;\r\n answerTSV.idInsuredPerson = answer.id_insured;\r\n question.answerList.push(answerTSV);\r\n }\r\n\r\n }\r\n questionList.push(question);\r\n }\r\n\r\n return questionList;\r\n }\r\n /**\r\n * Function you get if you show the score of the products\r\n * @param {*} idScore score parameter id \r\n * @returns true or false of show score \r\n */\r\n IsVisibleScore = async (idScore) => {\r\n const idParameter = { \"idParameterValue\": Number(idScore) };\r\n let show = false; \r\n await this.parameterService.GetAllParameterById(idParameter).then(async result => {\r\n if (result.statusResponse) {\r\n if (result.data[0] != undefined) {\r\n let value = result.data[0].value;\r\n show = value.toUpperCase() === 'SI' ? true : false;\r\n }\r\n }\r\n });\r\n return show;\r\n }\r\n}","import { JSONExchangeTSV } from \"./JSONExchangeTSV\";\r\nimport { NumericalRangeCardServices } from \"./NumericalRangeCardServices\";\r\nimport { WebServicesTSV } from \"./WebServicesTSV\";\r\nimport { SelectedProductListServices } from \"./SelectedProductListServices\";\r\n\r\n\r\nconst longAnswer = process.env.REACT_APP_LONG_ANSWER;\r\nconst date = process.env.REACT_APP_DATE;\r\nconst date_calculation = process.env.REACT_APP_DATE_CALCULATION;\r\nconst yes_no = process.env.REACT_APP_YES_NO;\r\nconst multiple_choise = process.env.REACT_APP_MULTICHOICE;\r\nconst numerical_range = process.env.REACT_APP_RANGE;\r\nconst uniqueSelection = process.env.REACT_APP_UNIQUE_SELECTION;\r\nconst genderQuestion = process.env.REACT_APP_GENDER_QUESTION;\r\nconst selectProductQuestion = process.env.REACT_APP_SELECT_PRODUCT;\r\nconst selected_risk = process.env.REACT_APP_SELECT_RISK;\r\nconst list_product_age = process.env.REACT_APP_LIST_AGE_PRODUCT;\r\nconst nameQuestion = process.env.REACT_APP_NAME_QUESTION;\r\nconst lastNameQuestion = process.env.REACT_APP_LAST_NAME_QUESTION;\r\nexport class MatrixCardServices {\r\n\r\n constructor() {\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.webServicesTSV = new WebServicesTSV();\r\n this.numericalRangeCardServices = new NumericalRangeCardServices();\r\n this.selectedProductlistServices = new SelectedProductListServices();\r\n\r\n\r\n }\r\n\r\n /**\r\n * Save the matrix questions in the local storage.\r\n * @param {Object} maxtrixQuestion The main question object.\r\n * @param {Array} subQuestions The array of sub questions.\r\n */\r\n SaveMatrixQuestionInLocalStorage = async (maxtrixQuestion, subQuestions, isBaseQuestionRisk) => {\r\n let mainQuestion = {\r\n \"id_question\": `${maxtrixQuestion.id}`,\r\n \"question_type\": `${maxtrixQuestion.type}`,\r\n \"question_text\": `${maxtrixQuestion.body}`,\r\n \"id_tsv_field\": `${maxtrixQuestion.idTSVField}`,\r\n \"main_matrix\": maxtrixQuestion.mainMatriz,\r\n \"question_number\": maxtrixQuestion.questionNumber,\r\n \"question_list\": []\r\n };\r\n if (maxtrixQuestion.idQuestionClass === selected_risk) {\r\n mainQuestion.base_question_risk = isBaseQuestionRisk !== undefined ? isBaseQuestionRisk ? true : false : false;\r\n }\r\n let subQuestionsArray = [];\r\n //first create all the sub questions\r\n subQuestions[0].children.forEach(question => {\r\n let subQuestion = {\r\n \"id_question\": `${question.id}`,\r\n \"question_type\": `${question.type}`,\r\n \"question_text\": `${question.body}`,\r\n \"id_tsv_field\": `${question.idTSVField}`,\r\n \"question_base\": question.base,\r\n \"answer_list\": []\r\n };\r\n subQuestionsArray.push(subQuestion);\r\n });\r\n let insuredPersons = [];\r\n if (maxtrixQuestion.mainMatriz) {\r\n subQuestions.forEach((question, index) => {\r\n let insuredPerson = {};\r\n if (index == 0) {\r\n insuredPerson = { 'id_insured': index + 1, 'primary_insured': true }\r\n } else {\r\n insuredPerson = { 'id_insured': index + 1, 'primary_insured': false }\r\n }\r\n insuredPersons.push(insuredPerson);\r\n });\r\n this.jsonExchangeTSV.setInsuredPersons(insuredPersons);\r\n } else {\r\n insuredPersons = this.jsonExchangeTSV.getCurrentInsuredPersons();\r\n }\r\n //then asign answers values for each question, for each secondary insured person\r\n let insuredCounter = 1;\r\n for (const questionArray of subQuestions) {\r\n let counter = 0;\r\n let children = questionArray.children;\r\n for (const question of children) {\r\n if (subQuestionsArray[counter].id_question === question.id) {\r\n if (question.options.length > 0) {\r\n if (question.type === date) {\r\n let valueAnswer = { 'id': 0, 'text': '' };\r\n if (question.options) {\r\n if (question.options[0]) {\r\n valueAnswer.text = question.value;\r\n }\r\n }\r\n let insuredPerson = insuredPersons.filter(insuredPerson => insuredPerson.id_insured === insuredCounter);\r\n subQuestionsArray[counter].answer_list.push({\r\n \"id_answer\": `${valueAnswer.id}`,\r\n \"value_answer\": `${valueAnswer.text}`,\r\n \"id_insured\": insuredPerson[0] ? insuredPerson[0].id_insured : null\r\n })\r\n } else if (question.type === date_calculation) {\r\n if (question.value !== '') {\r\n let serviceResponseDate = await this.GetTSVDate(question.value);\r\n if (!serviceResponseDate.errorInComponent) {\r\n let answerOption = this.GetCorrectDateRange(serviceResponseDate.responseDate, question.options);\r\n let valueAnswer = { 'id': 0, 'text': '' };\r\n valueAnswer.text = `${question.value}`;\r\n valueAnswer.id = `${answerOption.id}`;\r\n let insuredPerson = insuredPersons.filter(insuredPerson => insuredPerson.id_insured === insuredCounter);\r\n if (insuredPerson[0]) {\r\n insuredPerson[0] = {\r\n ...insuredPerson[0],\r\n 'date_Of_birth': new Date(valueAnswer.text).toJSON(),\r\n 'age': serviceResponseDate.responseDate\r\n };\r\n }\r\n this.jsonExchangeTSV.modifyPersonfInsuredPersons(insuredPerson[0]);\r\n insuredPersons = [...this.jsonExchangeTSV.getCurrentInsuredPersons()];\r\n insuredPerson = insuredPersons.filter(insuredPerson => insuredPerson.id_insured === insuredCounter);\r\n subQuestionsArray[counter].answer_list.push({\r\n \"id_answer\":\r\n `${valueAnswer.id}`, \"value_answer\": `${valueAnswer.text}`,\r\n \"id_insured\": insuredPerson[0] ? insuredPerson[0].id_insured : null\r\n });\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n else if (question.type == longAnswer) {\r\n let valueAnswer = { 'id': 0, 'text': '' };\r\n if (question.options) {\r\n if (question.options[0]) {\r\n valueAnswer.id = question.options[0].id\r\n valueAnswer.text = question.value;\r\n }\r\n }\r\n let insuredPerson = insuredPersons.filter(insuredPerson => insuredPerson.id_insured === insuredCounter);\r\n if (question.body === nameQuestion) {\r\n if (insuredPerson[0]) {\r\n insuredPerson[0] = {\r\n ...insuredPerson[0],\r\n 'name': valueAnswer.text\r\n };\r\n }\r\n }\r\n if (question.body === lastNameQuestion) {\r\n if (insuredPerson[0]) {\r\n insuredPerson[0] = {\r\n ...insuredPerson[0],\r\n 'last_name': valueAnswer.text\r\n };\r\n }\r\n }\r\n this.jsonExchangeTSV.modifyPersonfInsuredPersons(insuredPerson[0]);\r\n insuredPersons = [...this.jsonExchangeTSV.getCurrentInsuredPersons()];\r\n subQuestionsArray[counter].answer_list.push({\r\n \"id_answer\": `${valueAnswer.id}`,\r\n \"value_answer\": `${valueAnswer.text}`,\r\n \"id_insured\": insuredPerson[0] ? insuredPerson[0].id_insured : null\r\n });\r\n } else if (question.type === yes_no) {\r\n if (question.value !== '-1' && question.value !== '') {\r\n let valueAnswer = question.options.filter(option => option.text.toLowerCase() === question.value.toLowerCase());\r\n let insuredPerson = insuredPersons.filter(insuredPerson =>\r\n insuredPerson.id_insured === insuredCounter);\r\n subQuestionsArray[counter].answer_list.push(\r\n {\r\n \"id_answer\": `${valueAnswer[0].id}`,\r\n \"value_answer\": `${valueAnswer[0].text}`,\r\n \"id_insured\": insuredPerson[0] ? insuredPerson[0].id_insured : null\r\n })\r\n }\r\n\r\n } else if (question.type === multiple_choise) {\r\n let answerOptions = [];\r\n for (const value of question.value) {\r\n for (const option of question.options) {\r\n if (Number(value.value) === option.id) {\r\n answerOptions.push({ ...option });\r\n }\r\n }\r\n }\r\n let insuredPerson = insuredPersons.filter(insuredPerson =>\r\n insuredPerson.id_insured === insuredCounter);\r\n\r\n let answerListArray = [];\r\n for (const answerOption of answerOptions) {\r\n answerListArray.push(\r\n {\r\n \"id_answer\": `${answerOption.id}`,\r\n \"value_answer\": `${answerOption.text}`,\r\n \"id_insured\": insuredPerson[0] ? insuredPerson[0].id_insured : null\r\n });\r\n }\r\n subQuestionsArray[counter].answer_list.push(answerListArray);\r\n\r\n } else if (question.type === numerical_range) {\r\n if (question.value !== '-1' && question.value !== '') {\r\n let answerOption = {};\r\n answerOption = this.numericalRangeCardServices\r\n .GetCorrectAnswerOption(question.value, question.options, question.age, question.risk);\r\n let insuredPerson = insuredPersons.filter(insuredPerson =>\r\n insuredPerson.id_insured === insuredCounter);\r\n subQuestionsArray[counter].answer_list.push(\r\n {\r\n \"id_answer\": `${answerOption.id}`,\r\n \"value_answer\": `${question.value}`,\r\n \"id_insured\": insuredPerson[0] ? insuredPerson[0].id_insured : null\r\n });\r\n }\r\n }\r\n else {\r\n if (question.value !== '') {\r\n let insuredPerson = insuredPersons.filter(insuredPerson =>\r\n insuredPerson.id_insured === insuredCounter);\r\n let valueAnswer = question.options.filter(option => option.id === Number(question.value));\r\n if (insuredPerson[0] && question.type === uniqueSelection && question.body !== genderQuestion) {\r\n insuredPerson[0] = { ...insuredPerson[0], 'relationship': valueAnswer[0].text };\r\n this.jsonExchangeTSV.modifyPersonfInsuredPersons(insuredPerson[0]);\r\n insuredPersons = [...this.jsonExchangeTSV.getCurrentInsuredPersons()];\r\n insuredPerson = insuredPersons.filter(insuredPerson => insuredPerson.id_insured === insuredCounter);\r\n } else if (insuredPerson[0] && question.type === uniqueSelection && question.body === genderQuestion) {\r\n insuredPerson[0] = { ...insuredPerson[0], 'gender': valueAnswer[0].text };\r\n this.jsonExchangeTSV.modifyPersonfInsuredPersons(insuredPerson[0]);\r\n insuredPersons = [...this.jsonExchangeTSV.getCurrentInsuredPersons()];\r\n insuredPerson = insuredPersons.filter(insuredPerson => insuredPerson.id_insured === insuredCounter);\r\n }\r\n subQuestionsArray[counter].answer_list.push(\r\n {\r\n \"id_answer\": `${valueAnswer[0].id}`,\r\n \"value_answer\": `${valueAnswer[0].text}`,\r\n \"id_insured\": insuredPerson[0] ? insuredPerson[0].id_insured : null\r\n });\r\n }\r\n }\r\n } else {\r\n subQuestionsArray[counter].answer_list.push({ \"value_answer\": `${question.value}` })\r\n\r\n }\r\n }\r\n counter++;\r\n }\r\n insuredCounter++;\r\n\r\n }\r\n mainQuestion.question_list = subQuestionsArray;\r\n\r\n if (Number(maxtrixQuestion.idQuestionClass) == selectProductQuestion) {\r\n if (!this.jsonExchangeTSV.existQuestionOfProductQuestions(mainQuestion)) {\r\n this.jsonExchangeTSV.addQuestionToProductQuestion(mainQuestion);\r\n } else {\r\n let lastQuestion = this.jsonExchangeTSV.getQuestionOfProductQuestionsById(mainQuestion);\r\n this.jsonExchangeTSV.removeQuestionOfProductQuestions(lastQuestion);\r\n this.jsonExchangeTSV.addQuestionToProductQuestion(mainQuestion);\r\n }\r\n } else {\r\n if (!this.jsonExchangeTSV.existQuestionOfRiskQuestions(mainQuestion)) {\r\n this.jsonExchangeTSV.addRiskQuestionToRiskQuestions(mainQuestion);\r\n } else {\r\n let lastQuestion = this.jsonExchangeTSV.getQuestionOfRiskQuestionsById(mainQuestion);\r\n this.jsonExchangeTSV.removeQuestionOfRiskQuestions(lastQuestion);\r\n this.jsonExchangeTSV.addRiskQuestionToRiskQuestions(mainQuestion);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Validates if the category chosen by the user is the same of the local storage.\r\n * @param {Number} isCurrentCategory A numerical id of the category\r\n * @return {Boolean} True if it is the current category.\r\n */\r\n IsCurrentCategory = (idCurrentCategory) => {\r\n let actualCateory = this.jsonExchangeTSV.getCurrentSerie();\r\n if (Number(actualCateory.id_series) === idCurrentCategory) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Gets the last answer saved for a question in the local storage.\r\n * @param {Object} fieldConfig The question of the current component.\r\n * @return {Array} True if it is the current category.\r\n */\r\n GetLastAnswerSaved = (fieldConfig) => {\r\n let question = { id_question: fieldConfig.id };\r\n if (Number(fieldConfig.idQuestionClass) == selectProductQuestion) {\r\n let lastAnswer = this.jsonExchangeTSV.getQuestionOfProductQuestionsById(question);\r\n if (lastAnswer.question_list) {\r\n return lastAnswer.question_list;\r\n }\r\n } else {\r\n let lastAnswer = this.jsonExchangeTSV.getQuestionOfRiskQuestionsById(question);\r\n if (lastAnswer.question_list) {\r\n return lastAnswer.question_list;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the valid date according to TSV Date service.\r\n * @param {Date} date The date picked by the user.\r\n * @return {Promise} The promise with de correct date from TSV.\r\n */\r\n async GetTSVDate(date) {\r\n let loading = true;\r\n let errorInComponent = false;\r\n let actualDate = new Date();\r\n let actualDateJson = JSON.stringify(actualDate);\r\n let dateOfBirth = new Date(date);\r\n let dateOfBirthJson = JSON.stringify(dateOfBirth);\r\n let person = { dateOfBirth: JSON.parse(dateOfBirthJson), effectiveDate: JSON.parse(actualDateJson) };\r\n let responseService = await this.webServicesTSV.PeopleAge(person);\r\n let responseDate = null;\r\n if (responseService.statusResponse) {\r\n loading = false;\r\n let ageCalculationStrategy = responseService.data.data.ageCalculationStrategy;\r\n if (ageCalculationStrategy === 'ActualAge') {\r\n responseDate = responseService.data.data.lastBirthday;\r\n } else if (ageCalculationStrategy === 'NearestAge') {\r\n responseDate = responseService.data.data.nearestBirthday;\r\n }\r\n } else {\r\n loading = false;\r\n errorInComponent = true;\r\n }\r\n let response = { errorInComponent: errorInComponent, loading: loading, responseDate: responseDate };\r\n return response;\r\n }\r\n\r\n /**\r\n * Gets the answer option according to the tsv date from the web service\r\n * @param {Number} age The age of the user.\r\n * @param {Array} options The answer options array.\r\n * @return {Object} The answer option object.\r\n */\r\n GetCorrectDateRange(age, options) {\r\n let answerOption = { 'id': 0 };\r\n options.forEach(option => {\r\n if (Number(age) >= Number(option.option) && Number(age) <= Number(option.option2)) {\r\n answerOption = option;\r\n }\r\n });\r\n return answerOption;\r\n }\r\n /**\r\n * takes the values ​​of the answers of main Matriz\r\n */\r\n async getJSONQuestionsMatrix() {\r\n let _questions = this.jsonExchangeTSV.getCurrentProductQuestions();\r\n let result = [];\r\n if (_questions !== null && _questions !== []) {\r\n _questions.forEach(element => {\r\n if (element.main_matrix) {\r\n result.push(element.question_list);\r\n }\r\n });\r\n }\r\n return result;\r\n }\r\n /**\r\n * takes the values of the approved insured from the main matrix\r\n */\r\n async getApprovedPersonJSONMatrix() {\r\n let _questionsMainMatrix = await this.getJSONQuestionsMatrix();\r\n let _selectedProduct = this.jsonExchangeTSV.getCurrentSelectedProduct();\r\n const list = JSON.parse(list_product_age);\r\n let id_product_age = list.filter(product => product.id_product === _selectedProduct.id_product)[0].id_product_tsv;\r\n let result = [];\r\n if (_questionsMainMatrix !== null && _questionsMainMatrix !== []\r\n && _selectedProduct !== null && _selectedProduct !== []) {\r\n let insuredPersons = _selectedProduct.insured_persons_approved;\r\n _questionsMainMatrix[0].filter(question => {\r\n let answer_list = question.answer_list;\r\n let new_answer_list = [];\r\n insuredPersons.forEach(insured => {\r\n let new_answer = answer_list.filter(answer => answer.id_insured === insured.idInsured);\r\n if (new_answer !== null) {\r\n new_answer[0].age = insured.age;\r\n new_answer[0].id_product_age = id_product_age;\r\n new_answer[0].dateOfBirth = insured.dateOfBirth;\r\n new_answer[0].idInsured = insured.idInsured;\r\n\r\n new_answer_list.push(new_answer[0]);\r\n }\r\n question.answer_list = new_answer_list;\r\n });\r\n });\r\n result = _questionsMainMatrix;\r\n }\r\n return result;\r\n }\r\n /**\r\n * recalculate the age according to the selected product and set the values in the local storage\r\n * @param {*} dateInsured insured date of birth\r\n * @param {*} idProductAge product id for tsv date calculation service\r\n * @param {*} idInsured identifier of the insured in the matrix\r\n * @returns the age corresponding to the tsv service response\r\n */\r\n async getAgeProduct(dateInsured, idProductAge, idInsured) {\r\n let date = dateInsured;\r\n let age = null;\r\n let id_product_age = idProductAge;\r\n let actualDate = new Date();\r\n let actualDateJson = JSON.stringify(actualDate);\r\n let dateOfBirth = new Date(date);\r\n let dateOfBirthJson = JSON.stringify(dateOfBirth);\r\n let person = { dateOfBirth: JSON.parse(dateOfBirthJson), effectiveDate: JSON.parse(actualDateJson), productID: Number(id_product_age) };\r\n let responseService = await this.webServicesTSV.PeopleAge(person);\r\n let responseDate = null;\r\n if (responseService.statusResponse) {\r\n let ageCalculationStrategy = responseService.data.data.ageCalculationStrategy;\r\n if (ageCalculationStrategy === 'ActualAge') {\r\n responseDate = responseService.data.data.lastBirthday;\r\n } else if (ageCalculationStrategy === 'NearestAge') {\r\n responseDate = responseService.data.data.nearestBirthday;\r\n }\r\n age = responseDate;\r\n }\r\n let _selectedProduct = this.jsonExchangeTSV.getCurrentSelectedProduct();\r\n let insuredPersonsApproved = this.selectedProductlistServices.ProcessInsuredPersonsApproved(_selectedProduct.insured_persons_approved);\r\n insuredPersonsApproved.filter(person => person.id_insured === idInsured)[0].age = age;\r\n this.jsonExchangeTSV.modifyPersonfInsuredPersons(insuredPersonsApproved.filter(person => person.id_insured === idInsured)[0]);\r\n _selectedProduct.insured_persons_approved = this.selectedProductlistServices.ToInsuredPersonsTSVFormat(insuredPersonsApproved);\r\n this.jsonExchangeTSV.setSelectedProduct(_selectedProduct);\r\n return age;\r\n }\r\n /**\r\n * Sets all the sub questions from the local storage by the type of card in the matrix.\r\n */\r\n SetAnswersByType(lastAnswers, questions, newChildQuestions) {\r\n let childQuestions = questions[0];\r\n lastAnswers.forEach(question => {\r\n childQuestions.children.forEach(child => {\r\n if (child.id === question.id_question) {\r\n let counter = 0;\r\n if (question.answer_list.length > 0) {\r\n question.answer_list.forEach(answer => {\r\n switch (child.type) {\r\n case uniqueSelection:\r\n let answerObject = child.options.filter(option => option.text === answer.value_answer);\r\n let uniqueChildCopy = { ...child };\r\n if (answerObject[0]) {\r\n let value = `${answerObject[0].id}`;\r\n uniqueChildCopy.value = value;\r\n uniqueChildCopy.valid = true;\r\n }\r\n newChildQuestions[counter].children.push(uniqueChildCopy);\r\n break;\r\n case multiple_choise:\r\n let childCopyMulti = { ...child };\r\n let valueAnswers = answer;\r\n let multiValue = [];\r\n valueAnswers.forEach(answer => {\r\n let option = { value: `${answer.id_answer}`, label: `${answer.value_answer}` };\r\n multiValue.push(option);\r\n });\r\n childCopyMulti.value = multiValue;\r\n childCopyMulti.valid = true;\r\n newChildQuestions[counter].children.push(childCopyMulti);\r\n break;\r\n default:\r\n let value = answer.value_answer;\r\n let childCopyOtherTypes = { ...child };\r\n childCopyOtherTypes.value = value;\r\n childCopyOtherTypes.valid = true;\r\n newChildQuestions[counter].children.push(childCopyOtherTypes);\r\n break;\r\n }\r\n counter++;\r\n })\r\n } else {\r\n for (let index = 0; index < newChildQuestions.length; index++) {\r\n let value = '';\r\n let childCopyOtherTypes = { ...child };\r\n childCopyOtherTypes.value = value;\r\n childCopyOtherTypes.valid = true;\r\n newChildQuestions[index].children.push(childCopyOtherTypes);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n })\r\n })\r\n return newChildQuestions;\r\n }\r\n /**\r\n * Creates and render all the sub questions of the main question from the local storage.\r\n */\r\n LoadAnswersLocalStorage(questions, idCurrentCategory, fieldConfig) {\r\n const result = { isCurrentCategory: false, questions: null, error: null }\r\n result.isCurrentCategory = this.IsCurrentCategory(idCurrentCategory);\r\n if (result.isCurrentCategory) {\r\n let lastAnswerSaved = this.GetLastAnswerSaved(fieldConfig);\r\n if (lastAnswerSaved != null) {\r\n let emptyAnswers = lastAnswerSaved.filter(answer => answer.answer_list.length === 0);\r\n if (lastAnswerSaved.length === emptyAnswers.length) {\r\n result.questions = null;\r\n return result;\r\n } else {\r\n //lastAnswerSaved = lastAnswerSaved.filter(answer => answer.answer_list.length > 0);\r\n\r\n }\r\n let newChildQuestions = [];\r\n let answertList = lastAnswerSaved.filter(answer => answer.answer_list.length > 0)[0] ?\r\n lastAnswerSaved.filter(answer => answer.answer_list.length > 0)[0] : null;\r\n newChildQuestions = [answertList.answer_list.length];\r\n let counter = 0;\r\n answertList.answer_list.forEach(numberOfAnswers => {\r\n newChildQuestions[counter] = { children: [] }\r\n counter++;\r\n });\r\n let questionsAnswers = this.SetAnswersByType(lastAnswerSaved, questions, newChildQuestions);\r\n result.questions = questionsAnswers;\r\n }\r\n }\r\n return result;\r\n }\r\n /**\r\n * renders the base questions of the main matrix with the number of insured inserted\r\n * @param {*} questionsBase object with the base questions of the main matrix\r\n * @param {*} answers array with the answers of the base questions of the main matrix\r\n */\r\n AddBaseQuestions(newChildQuestions, questionsBase, answers, oldChildren) {\r\n let children = [];\r\n questionsBase.forEach((question) => {\r\n const newchild = { ...newChildQuestions.children[0] };\r\n newchild.body = question.question_text;\r\n newchild.type = question.question_type;\r\n newchild.id = question.id_question;\r\n newchild.idTSVField = question.id_tsv_field;\r\n newchild.base = question.question_base;\r\n newchild.options = [{ id: questionsBase[0].answer_list[0].id_answer, option: questionsBase[0].answer_list[0].text }];\r\n newchild.valid = true;\r\n newchild.disabled = true;\r\n children.push(newchild);\r\n });\r\n let newChildren = [];\r\n children.map((childTemp, index) => {\r\n const newValue = { ...childTemp };\r\n let answer = answers[index];\r\n newValue.value = answer;\r\n newChildren.push(newValue);\r\n });\r\n if (oldChildren === null) {\r\n oldChildren = [];\r\n newChildQuestions.children.forEach(child => {\r\n const oldChild = { ...child };\r\n oldChildren.push(oldChild);\r\n });\r\n }\r\n newChildQuestions.children = oldChildren;\r\n newChildren = newChildren.concat(newChildQuestions.children);\r\n newChildQuestions.children = newChildren;\r\n return newChildQuestions;\r\n }\r\n\r\n}","import React from 'react';\r\nimport { WebServicesTSV } from './WebServicesTSV';\r\nimport { JSONExchangeTSV } from './JSONExchangeTSV';\r\nimport { ProcedureServices } from './ProcedureServices';\r\nimport { MatrixCardServices } from './MatrixCardServices';\r\n\r\nconst productinfo = process.env.REACT_APP_PRODUCTINFO;\r\nconst list_productinfo = process.env.REACT_APP_LIST_PRODUCTINFO;\r\nconst age_amount = process.env.REACT_APP_AGE_AMOUNT;\r\nconst age = process.env.REACT_APP_AGE;\r\nconst product_type = process.env.REACT_APP_PRODUCT_TYPE;\r\nconst surcharge_percentage = process.env.REACT_APP_SURCHARGE_PERCENTAGE;\r\nconst matrix = process.env.REACT_APP_MATRIX;\r\nconst amount_sum = process.env.REACT_APP_AMOUNT_SUM;\r\nconst multichocice = process.env.REACT_APP_MULTICHOICE;\r\nconst load_data = process.env.REACT_APP_LOAD_DATA;\r\n\r\n\r\nexport class Procedure {\r\n constructor() {\r\n this.procedureService = new ProcedureServices();\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.webServiceTSV = new WebServicesTSV();\r\n this.matrixCardServices = new MatrixCardServices();\r\n }\r\n /**\r\n * calls the WS sw TSV according to the one assigned to each question\r\n * @param {*} fieldConfig object with the question attributes\r\n * @returns WS response object\r\n */\r\n async callWS(fieldConfig, currentField, fieldsProduct) {\r\n let response = { statusResponse: true, data: null, error: null }\r\n let body = null;\r\n if (fieldConfig.idProduct !== undefined && fieldConfig.idProduct !== '') {\r\n body = {\r\n idQuestion: Number(fieldConfig.id),\r\n idProduct: Number(fieldConfig.idProduct),\r\n idCategory: Number(fieldConfig.idCategory)\r\n\r\n }\r\n\r\n } else {\r\n body = {\r\n idQuestion: Number(fieldConfig.id),\r\n idCategory: Number(fieldConfig.idCategory),\r\n }\r\n }\r\n response = await this.procedureService.GetOperators(body);\r\n if (response.statusResponse && response.data.listProcedures.length > 0) {\r\n let listProcedures = response.data.listProcedures;\r\n let procedure = listProcedures[0].idExecuteProcedure;\r\n let operators = listProcedures[0].operators;\r\n let result = null;\r\n switch (procedure) {\r\n case (Number(productinfo)):\r\n result = await this.getPoliciesCancer(operators, fieldConfig);\r\n return result;\r\n case (Number(age)):\r\n result = await this.getAge(operators, fieldConfig);\r\n return result;\r\n case (Number(product_type)):\r\n result = await this.getProductType(operators, fieldConfig);\r\n return result;\r\n case (Number(surcharge_percentage)):\r\n result = await this.getSurchargePercentage(operators, fieldConfig, currentField);\r\n return result;\r\n case (Number(list_productinfo)):\r\n result = await this.getPolicies(operators, fieldConfig);\r\n return result;\r\n case (Number(age_amount)):\r\n result = await this.calculateAgeAmount(operators, fieldConfig, fieldsProduct);\r\n return result;\r\n case (Number(amount_sum)):\r\n result = await this.calculateAmountSum(operators, fieldConfig);\r\n return result;\r\n case (Number(load_data)):\r\n result = await this.loadData(operators, fieldConfig, currentField, fieldsProduct);\r\n return result;\r\n default:\r\n return response;\r\n }\r\n }\r\n response.data = null;\r\n return response;\r\n }\r\n /**\r\n * creates the body for the TSV according to the operators that correspond to the question\r\n * @param {*} operators array with the identifiers of the questions to process\r\n * @returns object with request body\r\n */\r\n createBody(operators, question_list) {\r\n let product_questions = question_list !== undefined ? question_list: this.jsonExchangeTSV.getCurrentProductQuestions();\r\n try {\r\n let body = {};\r\n if(question_list !== undefined){\r\n let product_questions = this.jsonExchangeTSV.getCurrentProductQuestions();;\r\n operators.forEach(element => {\r\n let question = product_questions.filter(question => question.id_question === element.idQuestion);\r\n if(question.length > 0){\r\n let value_answer = question[0].value_answer;\r\n body[element.operator] = value_answer;\r\n }\r\n });\r\n product_questions = question_list;\r\n operators.forEach(element => {\r\n let question = product_questions.filter(question => question.id_question === element.idQuestion);\r\n if(question.length > 0){\r\n let value_answer = question[0].answer_list[0].value_answer;\r\n value_answer = element.operator === 'dob' ? new Date(value_answer).toJSON() : value_answer;\r\n value_answer = value_answer === \"Femenino\" ? \"F\" : value_answer === \"Masculino\" ? \"M\" : value_answer;\r\n body[element.operator] = value_answer;\r\n }\r\n });\r\n }else{\r\n operators.forEach(element => {\r\n let question = product_questions.filter(question => question.id_question === element.idQuestion);\r\n if(question.length > 0){\r\n let value_answer = question[0].value_answer;\r\n value_answer = element.operator === 'dob' ? new Date(value_answer).toJSON() : value_answer;\r\n value_answer = value_answer === \"Femenino\" ? \"F\" : value_answer === \"Masculino\" ? \"M\" : value_answer;\r\n body[element.operator] = value_answer;\r\n }\r\n });\r\n }\r\n return body;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n /**\r\n * get the responses from the fields with the assigned operators\r\n * @param {*} operators array with the identifiers of the fields in which to look for the response value\r\n * @param {*} currentField current array to search for field identifiers\r\n * @returns array with the response value for each of the fields\r\n */\r\n async getAnswersMatrix(operators, currentField) {\r\n currentField.id_question = currentField.id;\r\n let questions = null;\r\n if (currentField.idProduct !== undefined && currentField.idProduct !== '') {\r\n questions = this.jsonExchangeTSV.getQuestionOfRiskQuestionsById(currentField);\r\n } else {\r\n questions = this.jsonExchangeTSV.getQuestionOfProductQuestionsById(currentField);\r\n }\r\n let answersOperators = [];\r\n operators.forEach(element => {\r\n let question_list = questions.question_list;\r\n let question = question_list.filter(q => q.id_question === element.idQuestion);\r\n if (question.length > 0) {\r\n let answerOperator = {};\r\n answerOperator.element = element.operator;\r\n answerOperator.answers = question;\r\n answersOperators.push(answerOperator)\r\n }\r\n });\r\n return answersOperators;\r\n }\r\n /**\r\n * Call the WS of TSV that calculates the age according to the date of birth\r\n * @param {*} operators array with the identifiers of the questions to process\r\n * @returns WS response object\r\n */\r\n async getAge(operators, fieldConfig) {\r\n let response = { statusResponse: true, data: null, error: null }\r\n let body = this.createBody(operators);\r\n let responseDate = null;\r\n if (body !== null) {\r\n let response = await this.webServiceTSV.PeopleAge(body);\r\n if (response.statusResponse) {\r\n let ageCalculationStrategy = response.data.data.ageCalculationStrategy;\r\n if (ageCalculationStrategy === 'ActualAge') {\r\n responseDate = response.data.data.lastBirthday;\r\n } else if (ageCalculationStrategy === 'NearestAge') {\r\n responseDate = response.data.data.nearestBirthday;\r\n }\r\n }\r\n }\r\n response.data = responseDate;\r\n return this.processAnswer(fieldConfig, response);\r\n }\r\n /**\r\n * Obtains the policies of the insured \r\n * @param {*} operators array with the identifiers of the questions to process\r\n * @returns WS response object\r\n */\r\n async getPoliciesCancer(operators, fieldConfig) {\r\n let response = { statusResponse: true, data: null, error: null }\r\n let mainMatrix = this.jsonExchangeTSV.getMainMatrix();\r\n let question_list = mainMatrix.question_list;\r\n let body = this.createBody(operators, question_list);\r\n fieldConfig.value = [];\r\n const none = fieldConfig.options.filter(selected => selected.option === 'Ninguno');\r\n const ch = fieldConfig.options.filter(selected => selected.option === 'CH');\r\n\r\n let answerValue = '';\r\n if (body !== null) {\r\n response = await this.webServiceTSV.PersonProductInfo(body);\r\n if (response.statusResponse && response.data.data !== null) {\r\n let products = response.data.data;\r\n products.productInfo.forEach(product => {\r\n let fdc = false;\r\n let fdcValue = '';\r\n product.benefitRiders.forEach(element => {\r\n if (element.benefitFirstDiagnostic === 'FDC' && product.productType == 'C' && product.coverageType == 'H' ) {\r\n fdc = true;\r\n fdcValue = 'FDC';\r\n } else if (element.benefitFirstDiagnostic === 'FDH' && product.productType == 'V' && product.coverageType == 'H' ) {\r\n fdc = true;\r\n fdcValue = 'FDH';\r\n }\r\n });\r\n let first_diagnostic = fdc ? fdcValue : '';\r\n let idProduct = `${product.productType}${product.coverageType}${first_diagnostic}`;\r\n fieldConfig.options.forEach(option => {\r\n answerValue = option.text == idProduct ? option.id.toString() : '';\r\n if(idProduct.includes('CH') && product.firstDiagnostic === ''){\r\n if (ch !== undefined && ch !== null) {\r\n fieldConfig.value.push(ch[0].id.toString());\r\n }\r\n }\r\n if (answerValue !== '') {\r\n fieldConfig.value.push(answerValue);\r\n }\r\n });\r\n\r\n });\r\n }\r\n }\r\n fieldConfig.value = [...new Set(fieldConfig.value)];\r\n if (fieldConfig.value.length === 0) {\r\n if (none !== undefined && none !== null) {\r\n fieldConfig.value.push(none[0].id.toString());\r\n }\r\n }\r\n response.data = fieldConfig.value;\r\n return this.processAnswer(fieldConfig, response);\r\n }\r\n /**\r\n * Obtains the policies of the insured and adds the value of FDC with the new policy requested\r\n * @param {*} operators array with the identifiers of the questions to process\r\n * @returns WS response object\r\n */\r\n async calculateAmountSum(operators, fieldConfig) {\r\n let response = { statusResponse: true, data: null, error: null }\r\n let sum = 0;\r\n operators[0].id_question = operators[0].idQuestion;\r\n operators[1].id_question = operators[1].idQuestion;\r\n let idAmount1 = operators[0];\r\n let idAmount2 = operators[1];\r\n let amoutPolice = await this.jsonExchangeTSV.getQuestionOfProductQuestionsById(idAmount1);\r\n let amountSolicitude = await this.jsonExchangeTSV.getQuestionOfProductQuestionsById(idAmount2);\r\n if (amoutPolice !== null && amountSolicitude !== null) {\r\n let amount1 = amoutPolice.value_answer.replace(\",\", \"\");\r\n let amount2 = amountSolicitude.value_answer.replace(\",\", \"\");\r\n sum += Number(amount1) + Number(amount2);\r\n }\r\n response.data = sum > 50000 ? 'Si' : 'No';\r\n return this.processAnswer(fieldConfig, response);\r\n }\r\n /**\r\n * Obtains the policies of the insured \r\n * @param {*} operators array with the identifiers of the questions to process\r\n * @returns WS response object\r\n */\r\n async getPolicies(operators, fieldConfig) {\r\n let response = { statusResponse: true, data: null, error: null }\r\n let body = this.createBody(operators);\r\n let answerValue = '';\r\n fieldConfig.value = [];\r\n const zl = fieldConfig.options.filter(selected => selected.option === 'ZL');\r\n const none = fieldConfig.options.filter(selected => selected.option === 'Ninguno');\r\n\r\n if (body !== null) {\r\n response = await this.webServiceTSV.PersonProductInfo(body);\r\n if (response.statusResponse && response.data.data !== null) {\r\n let products = response.data.data;\r\n products.productInfo.forEach(product => {\r\n if (product.coverageType === 'L') {\r\n fieldConfig.options.forEach(option => {\r\n let compareProduct = `${product.productType}L`;\r\n answerValue = option.text == compareProduct ? option.id.toString() : '';\r\n if (product.productId === '98ART') {\r\n if (zl !== undefined && zl !== null) {\r\n answerValue = zl[0].id.toString();\r\n }\r\n }\r\n if (answerValue !== '') {\r\n fieldConfig.value.push(answerValue);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n fieldConfig.value = [...new Set(fieldConfig.value)];\r\n if (fieldConfig.value.length === 0) {\r\n if (none !== undefined && none !== null) {\r\n fieldConfig.value.push(none[0].id.toString());\r\n }\r\n }\r\n response.data = fieldConfig.value;\r\n return this.processAnswer(fieldConfig, response);\r\n }\r\n\r\n\r\n /**\r\n * Obtains the policies of the insured and check if have a policy by calling WS TSV\r\n * @param {*} operators array with the identifiers of the questions to process\r\n * @returns WS response object\r\n */\r\n async getProductType(operators, fieldConfig) {\r\n let response = { statusResponse: true, data: null, error: null }\r\n let body = this.createBody(operators);\r\n let isK = false;\r\n let isA = false;\r\n if (body !== null) {\r\n response = await this.webServiceTSV.PersonProductInfo(body);\r\n if (response.statusResponse && response.data.data !== null) {\r\n let products = response.data.data;\r\n products.productInfo.forEach(product => {\r\n if (product.productType === 'K') {\r\n isK = true\r\n }\r\n if (product.productType === 'A') {\r\n isA = true\r\n }\r\n });\r\n }\r\n }\r\n response.data = (isA && isK) ? 'Ambos' : isA ? 'A' : isK ? 'K' : 'Ninguno';\r\n return this.processAnswer(fieldConfig, response);\r\n }\r\n /**\r\n * Obtains the Surcharge Percentage of the insured \r\n * @param {*} operators array with the identifiers of the questions to process\r\n * @returns WS response object\r\n */\r\n async getSurchargePercentage(operators, fieldConfig, currentField) {\r\n let response = { statusResponse: true, data: null, error: null }\r\n let body = { Feet: 0, Inch: 0, Weight: 0 };\r\n if (fieldConfig.type === matrix) {\r\n let answersOperators = await this.getAnswersMatrix(operators, currentField);\r\n let totalInsurer = answersOperators[0].answers[0].answer_list.length;\r\n let subQuestions = await this.prepareMatrizQuestion(fieldConfig, totalInsurer);\r\n let status = true;\r\n let ratedTable = [];\r\n for (let index = 0; index < totalInsurer; index++) {\r\n let feet = answersOperators.filter(a => a.element === 'Feet')[0].answers[0].answer_list;\r\n let inch = answersOperators.filter(a => a.element === 'Inch')[0].answers[0].answer_list\r\n let weight = answersOperators.filter(a => a.element === 'Weight')[0].answers[0].answer_list;\r\n body.Feet = feet[index].value_answer;\r\n body.Inch = inch[index].value_answer;\r\n body.Weight = weight[index].value_answer;\r\n response = await this.webServiceTSV.SurchargePercentage(body);\r\n if (response.statusResponse && response.data !== null) {\r\n let surcharge = Number(response.data.data) - 1;\r\n let rated = surcharge / 0.25;\r\n let ratedInsurer = { \"table\": rated, \"id_insured\": index + 1 };\r\n ratedTable.push(ratedInsurer);\r\n response.data = surcharge;\r\n const newchild = { ...subQuestions[index].children[0] };\r\n newchild.value = surcharge;\r\n subQuestions[index].children[0] = newchild;\r\n } else if (response.statusResponse === 404) {\r\n const newchildNotFound = { ...subQuestions[index].children[0] };\r\n newchildNotFound.value = 3;\r\n let ratedNotFound = 3 / 0.25;\r\n let ratedNotFount = { \"table\": ratedNotFound, \"id_insured\": index + 1 };\r\n ratedTable.push(ratedNotFount);\r\n subQuestions[index].children[0] = newchildNotFound;\r\n } else {\r\n status = false;\r\n }\r\n }\r\n if (status) {\r\n this.matrixCardServices.SaveMatrixQuestionInLocalStorage(fieldConfig, subQuestions);\r\n this.jsonExchangeTSV.setRatedTable(ratedTable);\r\n } else {\r\n ratedTable = [];\r\n this.jsonExchangeTSV.setRatedTable(ratedTable);\r\n }\r\n response.statusResponse = status;\r\n response.data = fieldConfig.options.step;\r\n return response;\r\n } else {\r\n body = this.createBody(operators, fieldConfig);\r\n if (body !== null) {\r\n response = await this.webServiceTSV.SurchargePercentage(body);\r\n if (response.statusResponse && response.data.data !== null) {\r\n let surcharge = Number(response.data.data) - 1;\r\n response.data = surcharge;\r\n return this.processAnswer(fieldConfig, response);\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * save the answers in the localstorage\r\n * @param {*} fieldConfig object with the properties of the question \r\n * @param {*} response object with the response status of the process\r\n * @returns the pass to the next question according to the given answer value\r\n */\r\n processAnswer(fieldConfig, response) {\r\n if (response.statusResponse && response.data !== null) {\r\n fieldConfig.value = response.data;\r\n let answerValue = fieldConfig.type === multichocice ? this.processHidedQuestionMulti(fieldConfig) : this.processHidedQuestion(fieldConfig);\r\n let stepField = answerValue[0].step;\r\n response.data = stepField;\r\n response.error = false;\r\n return response;\r\n }\r\n return response;\r\n }\r\n /**\r\n * Process hidden questions multichoice type and assign an answer value\r\n * @param {*} fieldConfig Contains the attributes of a question\r\n * @returns The value for the answer\r\n */\r\n processHidedQuestionMulti(fieldConfig) {\r\n let answerValue = [];\r\n fieldConfig.value.forEach(value => {\r\n answerValue.push(fieldConfig.options.filter(option => option.id === parseInt(value))[0]);\r\n });\r\n let answerListJSON = [];\r\n let value_answer_list = [];\r\n let insuredPersons = this.jsonExchangeTSV.getCurrentInsuredPersons();\r\n answerValue.forEach(answerValue => {\r\n\r\n value_answer_list.push({\r\n 'id_answer': `${answerValue.id}`, 'value_answer': `${answerValue.text}`,\r\n 'idInsuredPerson': insuredPersons[0] ? insuredPersons[0].idInsuredPerson : null\r\n });\r\n });\r\n answerListJSON.push(value_answer_list);\r\n let productQuestion = {\r\n \"id_question\": `${fieldConfig.id}`,\r\n \"question_type\": `${fieldConfig.type}`,\r\n \"question_text\": `${fieldConfig.body}`,\r\n \"id_tsv_field\": `${fieldConfig.idTSVField}`,\r\n \"question_number\": fieldConfig.questionNumber,\r\n \"answer_list\": answerListJSON\r\n };\r\n if (!this.jsonExchangeTSV.existQuestionOfProductQuestions(productQuestion)) {\r\n this.jsonExchangeTSV.addQuestionToProductQuestion(productQuestion);\r\n } else {\r\n let lastQuestion = this.jsonExchangeTSV.getQuestionOfProductQuestionsById(productQuestion);\r\n this.jsonExchangeTSV.removeQuestionOfProductQuestions(lastQuestion);\r\n this.jsonExchangeTSV.addQuestionToProductQuestion(productQuestion);\r\n }\r\n return answerValue;\r\n }\r\n /**\r\n * Process hidden questions and assign an answer value\r\n * @param {*} fieldConfig Contains the attributes of a question\r\n * @returns The value for the answer\r\n */\r\n processHidedQuestion(fieldConfig) {\r\n let answerValue = fieldConfig.options.filter(option => option.text === fieldConfig.value);\r\n let productQuestion = {\r\n \"id_question\": `${fieldConfig.id}`,\r\n \"question_type\": `${fieldConfig.type}`,\r\n \"question_text\": `${fieldConfig.body}`,\r\n \"id_answer\": `${answerValue[0].id}`,\r\n \"value_answer\": `${fieldConfig.value}`,\r\n \"id_tsv_field\": `${fieldConfig.idTSVField}`,\r\n \"question_number\": fieldConfig.questionNumber\r\n\r\n }\r\n if (!this.jsonExchangeTSV.existQuestionOfProductQuestions(productQuestion)) {\r\n this.jsonExchangeTSV.addQuestionToProductQuestion(productQuestion);\r\n } else {\r\n let lastQuestion = this.jsonExchangeTSV.getQuestionOfProductQuestionsById(productQuestion);\r\n this.jsonExchangeTSV.removeQuestionOfProductQuestions(lastQuestion);\r\n this.jsonExchangeTSV.addQuestionToProductQuestion(productQuestion);\r\n }\r\n return answerValue;\r\n }\r\n /**\r\n * get the answers of the base questions to apply them in the hidden questions and save the data in the local storageget the answers of the base questions \r\n * to apply them in the hidden questions and save the data in the local storage\r\n * @param {*} fieldConfig product selection question list\r\n * @param {*} totalInsurer total insured\r\n * @param {*} baseQuestions base questions of the main matrix\r\n * @param {*} fieldsProduct list of select product question\r\n * @returns object with the base questions and their answers\r\n */\r\n async prepareMatrizQuestionBase(fieldConfig, totalInsurer, baseQuestions, fieldsProduct) {\r\n let question = fieldConfig.questions[0].children[0];\r\n let baseQuesionAnswers = this.getBaseAnswer(baseQuestions, fieldsProduct, totalInsurer);\r\n for (let index = 0; index < totalInsurer; index++) {\r\n baseQuesionAnswers[index].children.push(question);\r\n }\r\n return baseQuesionAnswers;\r\n }\r\n /**\r\n * create the answer for each person in the matrix\r\n * @param {*} fieldConfig object with the properties of the question \r\n * @param {*} totalInsurer number of people who are applying for insurance, are taken from the main matrix\r\n * @returns array of responses for each person in the matrix\r\n */\r\n async prepareMatrizQuestion(fieldConfig, totalInsurer) {\r\n let question = fieldConfig.questions[0].children[0];\r\n let subQuestions = [];\r\n for (let index = 0; index < totalInsurer; index++) {\r\n let childrens = { children: [] };\r\n childrens.children.push(question);\r\n subQuestions.push(childrens);\r\n }\r\n return subQuestions;\r\n }\r\n\r\n /**\r\n * get the answers of the base questions to apply them in the hidden questions and save the data in the local storageget the answers of the base questions \r\n * to apply them in the hidden questions and save the data in the local storage\r\n * @param {*} baseQuestions base questions of the main matrix\r\n * @param {*} fieldsProduct product selection question list\r\n * @param {*} totalInsurer total insured\r\n * @returns object with the base questions and their answers\r\n */\r\n getBaseAnswer(baseQuestions, fieldsProduct, totalInsurer) {\r\n if (baseQuestions !== undefined && baseQuestions.length > 0) {\r\n let mainMatrix = fieldsProduct.filter(q => q.mainMatriz === true)[0];\r\n let mainMatrizbaseQuestions = mainMatrix.questions[0].children.filter(child => child.base === true);\r\n let answers = [];\r\n baseQuestions.forEach(questionBase => {\r\n let id = questionBase.id_question;\r\n for (let index = 0; index < totalInsurer; index++) {\r\n answers.push({ idInsurer: index, id_question: id, value: questionBase.answer_list[index].value_answer })\r\n }\r\n });\r\n let subQuestionsBase = [];\r\n for (let index = 0; index < totalInsurer; index++) {\r\n let childrens = { children: [] };\r\n mainMatrizbaseQuestions.forEach(element => {\r\n let newchild = { ...element };\r\n let answer = answers.filter(q => q.idInsurer === index && newchild.id == q.id_question)[0];\r\n newchild.value = answer.value;\r\n childrens.children.push(newchild);\r\n });\r\n subQuestionsBase.push(childrens);\r\n }\r\n return subQuestionsBase;\r\n }\r\n }\r\n /**\r\n * Take the question of the amount to request with the age of \r\n * each one of the insured only to know in which range of options it \r\n * @param {*} operators array with the identifiers of the questions to process\r\n * @param {*} fieldConfig object with the properties of the question \r\n * @param {*} fieldsProduct list with product selection type questions\r\n * @returns an object with the status of the process, and go to the next question\r\n */\r\n async calculateAgeAmount(operators, fieldConfig, fieldsProduct) {\r\n let response = { statusResponse: true, data: null, error: null }\r\n try {\r\n let approvedPerson = await this.matrixCardServices.getApprovedPersonJSONMatrix();\r\n let baseQuestions = approvedPerson[0].filter(question => question.question_base === true);\r\n let totalInsurer = approvedPerson[0][0].answer_list.length;\r\n let answer_list = approvedPerson[0][0].answer_list;\r\n operators[0].id_question = operators[0].idQuestion;\r\n let amount = await this.jsonExchangeTSV.getQuestionOfRiskQuestionsById(operators[0]);\r\n let subQuestions = await this.prepareMatrizQuestionBase(fieldConfig, totalInsurer, baseQuestions, fieldsProduct);\r\n let id = fieldConfig.questions[0].children[0].id;\r\n for (let index = 0; index < totalInsurer; index++) {\r\n let dateOfBirth = answer_list[index].dateOfBirth;\r\n let idProductAge = answer_list[index].id_product_age;\r\n let idInsured = answer_list[index].idInsured;\r\n let age = await this.matrixCardServices.getAgeProduct(dateOfBirth, idProductAge, idInsured);\r\n let sub = subQuestions[index].children.filter(sub => sub.id === id)[0];\r\n if (sub !== undefined) {\r\n sub.value = amount.value_answer;\r\n sub.age = age;\r\n sub.risk = true;\r\n }\r\n }\r\n this.matrixCardServices.SaveMatrixQuestionInLocalStorage(fieldConfig, subQuestions, true);\r\n response.statusResponse = true;\r\n response.data = fieldConfig.options.step;\r\n return response;\r\n } catch {\r\n response.statusResponse = false;\r\n response.data = null;\r\n }\r\n return response;\r\n }\r\n /**\r\n * takes the response of the product selection percentage surcharge and assigns it to the risk selection, \r\n * only with the data of the selected insured\r\n * @param {*} operators array with the identifiers of the questions to process\r\n * @param {*} fieldConfig object with the properties of the question \r\n * @returns pass the question\r\n */\r\n async loadData(operators, fieldConfig) {\r\n let response = { statusResponse: true, data: null, error: null }\r\n try {\r\n let approvedPerson = await this.matrixCardServices.getApprovedPersonJSONMatrix();\r\n operators[0].id_question = operators[0].idQuestion;\r\n let surchar = await this.jsonExchangeTSV.getQuestionOfProductQuestionsById(operators[0]);\r\n let question_list = surchar.question_list;\r\n let answer_list = approvedPerson[0][0].answer_list;\r\n question_list.forEach(question => {\r\n let answer_list_surchar = question.answer_list;\r\n let new_answer_surchar = [];\r\n answer_list.forEach(answer => {\r\n let id_insured = answer.id_insured;\r\n let insurer = answer_list_surchar.filter(a => a.id_insured === id_insured);\r\n if (insurer !== undefined && insurer.length > 0) {\r\n new_answer_surchar.push(insurer[0]);\r\n }\r\n });\r\n question.answer_list = new_answer_surchar;\r\n });\r\n let children = fieldConfig.questions[0].children;\r\n children.forEach(child => {\r\n let body = child.body;\r\n question_list.forEach(questionL => {\r\n let question_text = questionL.question_text;\r\n if (question_text == body) {\r\n questionL.id_question = child.id;\r\n let answersL = questionL.answer_list;\r\n answersL.forEach(a => {\r\n a.id_answer = child.options[0].id;\r\n });\r\n }\r\n });\r\n });\r\n surchar.question_list = question_list;\r\n surchar.base_question_risk = false;\r\n surchar.id_question = fieldConfig.id;\r\n this.jsonExchangeTSV.removeQuestionOfRiskQuestions(surchar);\r\n this.jsonExchangeTSV.addRiskQuestionToRiskQuestions(surchar);\r\n response.statusResponse = true;\r\n response.data = fieldConfig.options.step;\r\n return response;\r\n } catch {\r\n response.statusResponse = false;\r\n response.data = null;\r\n }\r\n return response;\r\n }\r\n}","import React, { Component } from 'react';\r\nimport './HeaderStepper.css';\r\n\r\nexport class HeaderStepper extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n }\r\n }\r\n componentDidMount() {\r\n \r\n }\r\n render() {\r\n const controls = this.props.fields;\r\n return (<>\r\n {\r\n controls.map((fields, index) => {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n })\r\n }\r\n )\r\n }\r\n}","import { TokenServices } from \"./TokenServices\";\r\n\r\nconst urlBase = process.env.REACT_APP_URL_API_TSV;\r\nconst matrix = process.env.REACT_APP_MATRIX;\r\nconst mainMatrix = process.env.REACT_APP_MAIN_MATRIX;\r\nconst classSelectProduct = process.env.REACT_APP_SELECT_PRODUCT;\r\nconst classSelectRisk = process.env.REACT_APP_SELECT_RISK;\r\n\r\nexport class QuestionServices {\r\n constructor() {\r\n this.tokenServices = new TokenServices();\r\n this.token = this.tokenServices.DecryptToken();\r\n }\r\n /**\r\n * Gets the question of a category from the api.\r\n * @param {number} idCategory The numerical id of the category.\r\n * @return {Promise} promise The promise from the api.\r\n */\r\n GetQuestionByIdCategory = async (idCategory) => {\r\n const result = { statusResponse: false, data: null, error: null }\r\n await fetch(`${urlBase}Question/GetJsonField`, {\r\n method: 'POST',\r\n body: JSON.stringify(idCategory),\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${this.token}`\r\n }\r\n }).then(async response => {\r\n if (response.ok) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi.list);\r\n })\r\n .catch(error =>\r\n\r\n console.log(error)\r\n\r\n );\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets the question of a category and a product from the api.\r\n * @param {number} idCategory The numerical id of the category.\r\n * @param {number} idProduct The numerical id of the product.\r\n * @return {Promise} promise The promise from the api.\r\n */\r\n GetQuestionByIdCategoryAndIdProduct = async (idCategory, idProduct) => {\r\n const result = { statusResponse: false, data: null, error: null }\r\n await fetch(`${urlBase}Question/GetJsonRiskField`, {\r\n method: 'POST',\r\n body: JSON.stringify({ 'idCategory': idCategory, 'idProduct': idProduct }),\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${this.token}`\r\n }\r\n }).then(async response => {\r\n if (response.ok) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi.list);\r\n })\r\n .catch(error =>\r\n\r\n console.log(error)\r\n\r\n );\r\n return result;\r\n }\r\n /**\r\n * Gets the sub quesitons of a main question from the api.\r\n * @param {number} idMainQuestion The numerical id of the main question.\r\n * @return {Promise} promise The promise from the api.\r\n */\r\n GetAllSubQuestionsByIdMainQuestion = async (idMainQuestion) => {\r\n const result = { statusResponse: false, data: null, error: null }\r\n await fetch(`${urlBase}Question/GetAllSubQuestionsByIdMainQuestion`, {\r\n method: 'POST',\r\n body: JSON.stringify(idMainQuestion),\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + this.token\r\n }\r\n }).then(async response => {\r\n if (response.ok) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi.list);\r\n })\r\n .catch(error => console.log(error));\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets the quesitons for the selection of product of the category from the api.\r\n * @param {number} idCategory The numerical id of the category.\r\n * @return {Promise} promise The promise from the api.\r\n */\r\n GetDataFields = async (idCategory) => {\r\n let response = await this.GetQuestionByIdCategory(idCategory);\r\n let idMainQuestion = '';\r\n const result = { statusResponse: response.statusResponse, fields: null }\r\n if (response.statusResponse) {\r\n result.fields = response.data;\r\n try {\r\n let main_questions = result.fields;\r\n let main_questions_temp = result.fields;\r\n main_questions_temp.forEach(main_question => {\r\n main_question.questions = [];\r\n if (main_question.type === matrix || main_question.type === mainMatrix) {\r\n idMainQuestion = main_question.id;\r\n main_questions_temp.forEach((question) => {\r\n if (idMainQuestion === question.idMainQuestion) {\r\n main_question.questions.push(question);\r\n main_question.options = question.options[0];\r\n }\r\n });\r\n let questionsChildren = [{ children: main_question.questions }];\r\n main_question.questions = Object.assign(questionsChildren);\r\n main_question.mainMatriz = main_question.type === mainMatrix;\r\n }\r\n });\r\n\r\n let questions = main_questions;\r\n main_questions_temp.forEach(main_question => {\r\n if (main_question.idMainQuestion !== '') {\r\n questions = questions.filter(question => question.idMainQuestion !== main_question.idMainQuestion);\r\n }\r\n });\r\n\r\n questions.push({\r\n \"type\": 'Seleccion Producto', \"key\": questions.length, \"back\": '',\r\n process: false, \"questionNumber\": questions.length + 1, \"step\": questions.length + 2,\r\n idQuestionClass: classSelectProduct\r\n })\r\n result.fields = questions;\r\n } catch (error) {\r\n result.statusResponse = false;\r\n }\r\n return result;\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets the quesitons for the selection of risk of the category and the product from the api.\r\n * @param {number} idProduct The numerical id of the product.\r\n * @param {number} idCategory The numerical id of the category.\r\n\r\n * @return {Promise} promise The promise from the api.\r\n */\r\n GetRiskDataFields = async (idProduct,idCategory) => {\r\n let response = await this.GetQuestionByIdCategoryAndIdProduct(idCategory, idProduct);\r\n let idMainQuestion = '';\r\n const result = { statusResponse: response.statusResponse, fields: null }\r\n if (response.statusResponse) {\r\n result.fields = response.data;\r\n try {\r\n let main_questions = result.fields;\r\n let main_questions_temp = result.fields;\r\n main_questions_temp.forEach(main_question => {\r\n main_question.questions = [];\r\n if (main_question.type === matrix || main_question.type === mainMatrix) {\r\n idMainQuestion = main_question.id;\r\n main_questions_temp.forEach((question) => {\r\n if (idMainQuestion === question.idMainQuestion) {\r\n main_question.questions.push(question);\r\n main_question.options = question.options[0];\r\n }\r\n });\r\n let questionsChildren = [{ children: main_question.questions }];\r\n questionsChildren.isRisk = true;\r\n main_question.questions = Object.assign(questionsChildren);\r\n main_question.mainMatriz = main_question.type === mainMatrix;\r\n }\r\n });\r\n\r\n let questions = main_questions;\r\n main_questions_temp.forEach(main_question => {\r\n if (main_question.idMainQuestion !== '') {\r\n questions = questions.filter(question => question.idMainQuestion !== main_question.idMainQuestion);\r\n\r\n }\r\n });\r\n\r\n questions.push({\r\n \"type\": 'Seleccion Riesgo', \"key\": questions.length, \"back\": '',\r\n process: false, \"questionNumber\": questions.length + 1, \"step\": questions.length + 2,\r\n idQuestionClass: classSelectRisk\r\n })\r\n result.fields = questions;\r\n } catch (error) {\r\n result.statusResponse = false;\r\n }\r\n return result;\r\n }\r\n return result;\r\n }\r\n\r\n}\r\n\r\n\r\n","import { TokenServices } from \"./TokenServices\";\r\nconst urlBase = process.env.REACT_APP_URL_API_TSV;\r\n\r\nexport class ProductServices {\r\n\r\n constructor(){\r\n this.tokenService = new TokenServices();\r\n }\r\n /**\r\n * Determinates the selected products for a client.\r\n * @param {Object} request The request of questions and answers.\r\n * @return {Promise} A promise from the api.\r\n */\r\n GetSelectedProducts = async (request) => {\r\n const result = { statusResponse: false, data: null, error: null }\r\n await fetch(`${urlBase}Product/CalculatedSelectedProducts`, {\r\n method: 'POST',\r\n body: JSON.stringify(request),\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${this.tokenService.DecryptToken()}`\r\n }\r\n }).then(async response => {\r\n if (response.ok) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi.selectedProducts);\r\n }).catch(error => console.log(error));\r\n return result;\r\n }\r\n}","import { TokenServices } from \"./TokenServices\";\r\n\r\nconst urlBase = process.env.REACT_APP_URL_API_TSV;\r\n\r\nexport class JSONProcessFileServices {\r\n\r\n constructor() {\r\n this.tokenService = new TokenServices();\r\n }\r\n\r\n /**\r\n * Adds a new JSONN process File in the API.\r\n * @param {Object} jsonProcess The json object.\r\n * @return {Promise} The response from the API.\r\n */\r\n AddJSONProcessFile = async (jsonProcess) => {\r\n const result = { statusResponse: false, data: null, error: null }\r\n const token = this.tokenService.DecryptToken();\r\n await fetch(`${urlBase}JSONProcess/Add`, {\r\n method: 'POST',\r\n body: JSON.stringify(jsonProcess),\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${token}`\r\n }\r\n }).then(async response => {\r\n if (response.ok) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi);\r\n })\r\n .catch(error => console.log(error));\r\n return result;\r\n }\r\n}","import { JSONExchangeTSV } from './JSONExchangeTSV';\r\nimport { JSONProcessFileServices } from './JSONProcessFileServices';\r\nimport { JSONRider } from './JSONRider';\r\nimport { WebServicesTSV } from './WebServicesTSV';\r\n\r\nconst { REACT_APP_IDTSVCATEGORY_LIFE, REACT_APP_IDTSVCATEGORY_HEALTH, REACT_APP_PAYMENT_MODE,\r\n REACT_APP_COUPLE, REACT_APP_CHILD, REACT_APP_COUP, REACT_APP_DAD } = process.env;\r\n\r\nexport class SelectedRiderListService {\r\n\r\n constructor() {\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.jsonRider = new JSONRider();\r\n this.webServicesTSV = new WebServicesTSV();\r\n this.JSONProcessFileServices = new JSONProcessFileServices();\r\n\r\n }\r\n\r\n /**\r\n * Save payment method information to local storage\r\n * @param {Object} payment payment method to be saved in the localstorage\r\n * @param {Number} type type of payment method or payment frequency\r\n */\r\n async SavePaymentLocalstorage(payment, type) {\r\n let localPayment = this.jsonExchangeTSV.getPaymentOfProductPayment();\r\n let paymentProduct = {\r\n \"policy_payment_mode\": payment.paymentMod,\r\n \"payment_type\": payment.paymentType,\r\n \"payment_method_key\": payment.methodKey,\r\n \"policy_payment_mode_intervals\": payment.modeIntervals\r\n };\r\n\r\n if (localPayment) {\r\n if (type === REACT_APP_PAYMENT_MODE) {\r\n paymentProduct.payment_type = localPayment.payment_type;\r\n paymentProduct.payment_method_key = localPayment.payment_method_key;\r\n\r\n } else {\r\n paymentProduct.policy_payment_mode = localPayment.policy_payment_mode;\r\n paymentProduct.policy_payment_mode_intervals = localPayment.policy_payment_mode_intervals\r\n }\r\n }\r\n this.jsonExchangeTSV.setPaymentOfProductPayment(paymentProduct);\r\n }\r\n\r\n\r\n /**\r\n * Get the payment method saved in localstorage, if not found, save it\r\n * @param {Object} payment payment method to be saved to local storage\r\n * @return {Object} payment method found in local storage\r\n */\r\n GetPaymentOfProductPayment(payment) {\r\n let localPayment = this.jsonExchangeTSV.getPaymentOfProductPayment();\r\n if (localPayment.policy_payment_mode == undefined) {\r\n localPayment = payment;\r\n }\r\n return localPayment;\r\n }\r\n\r\n /**\r\n * Get the payment method saved in localstorage, if not found, save it\r\n * @return {Object} payment method found in local storage\r\n */\r\n GetPayment() {\r\n let paymentLocalStorage = this.jsonExchangeTSV.getPaymentOfProductPayment();\r\n let payment = {};\r\n if (paymentLocalStorage.payment_method_key != undefined) {\r\n payment.methodKey = paymentLocalStorage.payment_method_key;\r\n payment.modeIntervals = paymentLocalStorage.policy_payment_mode_intervals;\r\n }\r\n return payment;\r\n }\r\n /**\r\n * Modify a rider of the array of riders in the local storage.\r\n * @param {Object} rider The rider object.\r\n */\r\n modifyRiderBasicPlan(rider) {\r\n this.jsonRider.modifyRiderBasicPlan(rider);\r\n }\r\n\r\n /**\r\n * Add or remove the selected rider from the list depending on the action\r\n * @param {String} riderCategory name of the selected rider\r\n * @return {Array} New list of selected riders\r\n */\r\n GetRiderCategories(riderCategory) {\r\n let selectCategory = this.jsonRider.getCurrentRiders();\r\n if (selectCategory.length === 0) {\r\n this.jsonRider.addRiderToRiders(riderCategory);\r\n } else {\r\n const sameValue = selectCategory.filter(rider => rider.categoryName === riderCategory.categoryName);\r\n if (sameValue[0]) {\r\n if (!riderCategory.isActive) {\r\n sameValue[0].isActive = false;\r\n this.jsonRider.modifyRiderOfRiders(sameValue[0]);\r\n } else {\r\n sameValue[0].isActive = true;\r\n sameValue[0].selectedInsuredCategoryPlanCodePrefix = riderCategory.selectedInsuredCategoryPlanCodePrefix === sameValue[0].selectedInsuredCategoryPlanCodePrefix ?\r\n sameValue[0].selectedInsuredCategoryPlanCodePrefix : riderCategory.selectedInsuredCategoryPlanCodePrefix;\r\n\r\n sameValue[0].faceAmountText = sameValue[0].faceAmountText === riderCategory.faceAmountText ? sameValue[0].faceAmountText : riderCategory.faceAmountText;\r\n sameValue[0].selectedSpecDescription = riderCategory.selectedSpecDescription === sameValue[0].selectedSpecDescription ?\r\n sameValue[0].selectedSpecDescription : riderCategory.selectedSpecDescription;\r\n\r\n sameValue[0].changeField = riderCategory.changeField === sameValue[0].changeField ? sameValue[0].changeField : riderCategory.changeField;\r\n this.jsonRider.modifyRiderOfRiders(sameValue[0]);\r\n }\r\n } else {\r\n this.jsonRider.addRiderToRiders(riderCategory);\r\n }\r\n }\r\n return this.jsonRider.getCurrentRiders();\r\n }\r\n\r\n /**\r\n * Save information of riders and endorsements to local storage\r\n * @param {Object} riders rider data to save\r\n * @param {Object} endorsements endorsements data to save\r\n */\r\n SaveDetailsAndApplicationData(details, applicationData) {\r\n this.jsonExchangeTSV.setApplicationDataOfProductPayment(applicationData);\r\n this.jsonExchangeTSV.setDetailsOfProductPayment(details);\r\n }\r\n\r\n /**\r\n * Get the riders found in the localstorage\r\n * @return {Array} List of riders saved in the localstorage\r\n */\r\n GetRiderSelectLocalStorage() {\r\n return this.jsonRider.getCurrentRiders();\r\n }\r\n /**\r\n * SET the riders found in the localstorage\r\n * @return {Array} SET List of riders saved in the localstorage\r\n */\r\n async SetRiders(riders) {\r\n return await this.jsonRider.setRiders(riders);\r\n }\r\n\r\n /**\r\n * Validates if the product chosen by the user is the same of the local storage.\r\n * @param {Number} idTSVProduct A numerical id of the product\r\n * @return {Boolean} True if it is the current product.\r\n */\r\n IsCurrentProduct = (idTSVProduct) => {\r\n let currentProduct = this.jsonRider.getCurrentSelectedProduct();\r\n if (currentProduct.id_tsv_product === idTSVProduct) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Initialize the rider JSON that is stored in the localstorage\r\n */\r\n InitializeJSONRider(idTSVProduct) {\r\n let product = { 'id_tsv_product': `${idTSVProduct}`, isNew: false };\r\n if (this.jsonRider.isJSONinitialized()) {\r\n if (!this.IsCurrentProduct(idTSVProduct)) {\r\n this.jsonRider.initializeJSON();\r\n product.isNew = true;\r\n this.jsonRider.setSelectedProduct(product);\r\n } else {\r\n product.isNew = false;\r\n this.jsonRider.setSelectedProduct(product);\r\n }\r\n } else {\r\n this.jsonRider.initializeJSON();\r\n product.isNew = true;\r\n this.jsonRider.setSelectedProduct(product);\r\n }\r\n }\r\n\r\n /**\r\n * Check if the category exists in the list of selected rider\r\n * @param {String} categoryName Name of the category to search in the list of riders\r\n * @param {Array} riderCategories Selected riders list\r\n * @return {Object} rider information \r\n */\r\n GetCategory(categoryName, riderCategories) {\r\n const sameValue = riderCategories.filter(rider => rider.categoryName === categoryName);\r\n if (sameValue[0]) {\r\n return sameValue[0];\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Create the structure of the riders to send to the api\r\n * @param {Object} request Selected rider data\r\n * @return {Object} Structure of the riders to send to the TSV api\r\n */\r\n SaveRiderCategories(request) {\r\n let { categoryName, type, value, selectedInsuredCategory, isSelected, changeField } = request;\r\n let riderCategories = this.jsonRider.getCurrentRiders();\r\n\r\n let riderCategory =\r\n {\r\n \"categoryName\": categoryName,\r\n \"isActive\": true,\r\n \"selectedInsuredCategoryPlanCodePrefix\": selectedInsuredCategory,\r\n \"faceAmountText\": null,\r\n \"selectedSpecDescription\": null,\r\n \"performSolveTypeName\": null,\r\n \"changeField\": changeField\r\n };\r\n let isMultilple = isSelected != undefined ? isSelected : '';\r\n\r\n if (type != null) {\r\n\r\n if (type === 'insuredCategories' || type === 'multiple') {\r\n riderCategory.selectedInsuredCategoryPlanCodePrefix = type === 'insuredCategories' ? value :\r\n type === 'multiple' ? selectedInsuredCategory : null;\r\n }\r\n\r\n if (isMultilple !== 'select') {\r\n riderCategory.faceAmountText = (type === 'faceAmountOptions' || type === 'slider' ||\r\n type === 'multiple' || isMultilple === 'sliderSelected') ? value : null;\r\n }\r\n\r\n if (isMultilple !== 'sliderSelected') {\r\n riderCategory.selectedSpecDescription = type === 'availableSpecs' || isMultilple === 'select' ? value : null;\r\n }\r\n riderCategory.performSolveTypeName = null;\r\n\r\n if (this.GetCategory(categoryName, riderCategories)) {\r\n let rider = this.GetCategory(categoryName, riderCategories);\r\n riderCategory.selectedInsuredCategoryPlanCodePrefix = rider.selectedInsuredCategoryPlanCodePrefix === riderCategory.selectedInsuredCategoryPlanCodePrefix ?\r\n rider.selectedInsuredCategoryPlanCodePrefix : riderCategory.selectedInsuredCategoryPlanCodePrefix;\r\n\r\n if (isMultilple !== 'select') {\r\n riderCategory.faceAmountText = riderCategory.faceAmountText === rider.faceAmountText ?\r\n rider.faceAmountText : riderCategory.faceAmountText;\r\n } else {\r\n riderCategory.faceAmountText = rider.faceAmountText;\r\n }\r\n if (isMultilple !== 'sliderSelected') {\r\n riderCategory.selectedSpecDescription = rider.selectedSpecDescription === riderCategory.selectedSpecDescription ?\r\n rider.selectedSpecDescription : riderCategory.selectedSpecDescription;\r\n } else {\r\n riderCategory.selectedSpecDescription = rider.selectedSpecDescription;\r\n }\r\n }\r\n }\r\n riderCategory.isActive = true;\r\n this.GetRiderCategories(riderCategory);\r\n return riderCategory;\r\n }\r\n getEdad(dateString) {\r\n let hoy = new Date()\r\n let fechaNacimiento = new Date(dateString)\r\n let edad = hoy.getFullYear() - fechaNacimiento.getFullYear()\r\n let diferenciaMeses = hoy.getMonth() - fechaNacimiento.getMonth()\r\n if (\r\n diferenciaMeses < 0 ||\r\n (diferenciaMeses === 0 && hoy.getDate() < fechaNacimiento.getDate())\r\n ) {\r\n edad--\r\n }\r\n return edad\r\n }\r\n /**\r\n * This method create an array using the information filled in the main matrix \r\n * @returns an array with the information of each person that will be insuranced\r\n */\r\n GetFamilyMember(idSerieTSV, idTSVProduct) {\r\n let insured = this.jsonExchangeTSV.getCurrentSelectedProduct();\r\n let members = insured.insured_persons_approved != undefined ? insured.insured_persons_approved : [];\r\n let structure = {};\r\n structure.additionalInsured = [];\r\n let insuredRisk = this.jsonExchangeTSV.getCurrentRisk().insured_risk;\r\n\r\n members.map((member, index) => {\r\n let gender = member.gender !== null ? member.gender.charAt(0) : null;\r\n let risk = \"N\";\r\n\r\n if (insuredRisk != undefined) {\r\n if (insuredRisk.length > 0) {\r\n risk = insuredRisk[index] != undefined ? insuredRisk[index].id_tsv_risk : \"N\";\r\n }\r\n }\r\n\r\n let basicInsured = {\r\n IsEnabled: true, IsSelected: true, GenderShortForm: gender,\r\n RiskKey: risk,\r\n DateOfBirth: member.dateOfBirth,\r\n age: this.getEdad(member.dateOfBirth)\r\n };\r\n\r\n if (member.primaryInsured) {\r\n if (idSerieTSV === REACT_APP_IDTSVCATEGORY_LIFE) {\r\n basicInsured.rating = {\r\n ratedTable: member.ratedTable != null ? member.ratedTable : 0,\r\n ratedYears: 0,\r\n flatExtraYears: 0,\r\n flatExtra: 0\r\n };\r\n }\r\n structure.Primary = basicInsured;\r\n } else {\r\n if (idSerieTSV === REACT_APP_IDTSVCATEGORY_LIFE) {\r\n basicInsured.rating = {\r\n ratedTable: member.ratedTable != null ? member.ratedTable : 0,\r\n ratedYears: 0,\r\n flatExtraYears: 0,\r\n flatExtra: 0\r\n };\r\n structure.additionalInsured.push(basicInsured);\r\n }\r\n if (idSerieTSV === REACT_APP_IDTSVCATEGORY_HEALTH) {\r\n let relation = member.relationship;\r\n\r\n if (idTSVProduct != null) {\r\n\r\n if (idTSVProduct.includes(REACT_APP_COUP)) {\r\n structure.spouse = basicInsured;\r\n } else {\r\n if (idTSVProduct.includes(REACT_APP_DAD)) {\r\n structure.child = basicInsured;\r\n } else {\r\n if (relation.includes(REACT_APP_CHILD)) {\r\n structure.child = basicInsured;\r\n } else {\r\n if (relation.includes(REACT_APP_COUPLE)) {\r\n structure.spouse = basicInsured;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n return structure;\r\n }\r\n\r\n\r\n /**\r\n * Check if the selected product is the same as the one in the localstorage\r\n * @return {Boolean} True if it is the product.\r\n */\r\n IsNewProduct() {\r\n let response = this.jsonRider.getCurrentSelectedProduct();\r\n return response.isNew != undefined ? response.isNew : true;\r\n }\r\n\r\n /**\r\n * Sends a new application of insurance to TSV server.\r\n * @return {Promise} The response of TSV server.\r\n */\r\n SendApplicationSale = async () => {\r\n let JSONLocalStorage = this.jsonExchangeTSV.getJSONTSV();\r\n let request = { data: JSONLocalStorage };\r\n let responseService =\r\n await this.webServicesTSV.ApplicationSales(request);\r\n if (responseService.statusResponse) {\r\n return responseService.data;\r\n } else {\r\n return false;\r\n }\r\n }\r\n /**\r\n * Creates a new JSV process file in the API.\r\n * @return {Promise} The response of the API.\r\n */\r\n CreateJSONProcessFile = async () => {\r\n let JSONLocalStorage = this.jsonExchangeTSV.getJSONTSV();\r\n let request = { file: JSONLocalStorage };\r\n let responseService =\r\n await this.JSONProcessFileServices.AddJSONProcessFile(request);\r\n if (responseService.statusResponse) {\r\n return responseService.data;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Add or remove the selected rider from the list depending on the action\r\n * @param {String} categoryName category name of the selected rider\r\n */\r\n UpdateRiderFaceAmount(categoryName, faceAmount) {\r\n let selectCategory = this.jsonRider.getCurrentRiders();\r\n if (selectCategory.length > 0) {\r\n const sameValue = selectCategory.filter(rider => rider.categoryName === categoryName);\r\n if (sameValue[0]) {\r\n sameValue[0].faceAmountText = faceAmount;\r\n this.jsonRider.modifyRiderOfRiders(sameValue[0]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Update product information on local storage.\r\n * @param {Object} product product information\r\n */\r\n UpdateSelectedProduct(product) {\r\n let productJson = this.jsonExchangeTSV.getCurrentSelectedProduct();\r\n\r\n let selectedProduct = {\r\n id_product: `${product.idProduct}`, name: product.name,\r\n id_tsv_product: product.idTSVProduct ? product.idTSVProduct : null,\r\n insured_persons_approved: productJson.insured_persons_approved,\r\n insured_persons_denied: productJson.insured_persons_denied\r\n };\r\n this.jsonExchangeTSV.setSelectedProduct(selectedProduct);\r\n let productRider = { 'id_tsv_product': `${product.idTSVProduct}`, isNew: true };\r\n this.jsonRider.setSelectedProduct(productRider);\r\n }\r\n\r\n /**\r\n * This method obtains the information of the main insured. \r\n * @returns an object with the information of primary insured\r\n */\r\n GetPrimaryInsured() {\r\n let insured = this.jsonExchangeTSV.getCurrentSelectedProduct();\r\n let members = insured.insured_persons_approved != undefined ? insured.insured_persons_approved : [];\r\n let primaryInsured = {};\r\n members.map((member) => {\r\n if (member.primaryInsured) {\r\n primaryInsured = member;\r\n }\r\n });\r\n return primaryInsured;\r\n }\r\n\r\n}","import React from \"react\";\r\nimport './ProductCard.css';\r\nimport { ButtonTSV } from \"../ButtonTSV\";\r\n\r\n\r\nexport class ModalProductDescription extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {this.props.title}
    \r\n \r\n
    \r\n
    \r\n

    \r\n {this.props.description}\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n\r\n}\r\nexport default ModalProductDescription;\r\n","import React from \"react\";\r\nimport { CategoryServices } from \"../../Services/CategoryServices\";\r\nimport { JSONExchangeTSV } from \"../../Services/JSONExchangeTSV\";\r\nimport { SelectedProductListServices } from \"../../Services/SelectedProductListServices\";\r\nimport { TokenServices } from \"../../Services/TokenServices\";\r\nimport { ButtonTSV } from \"../ButtonTSV\";\r\nimport './ProductCard.css';\r\nimport { SelectedRiderListService } from \"../../Services/SelectedRiderListService\";\r\nimport { ModalProductDescription } from './ModalProductDescription';\r\n\r\nconst saving = process.env.REACT_APP_IDTSVCATEGORY_SAVING;\r\n\r\nconst showScore = process.env.REACT_APP_SHOW_SCORE;\r\n\r\nexport class ProductCard extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.state = { showModal: false, showModalDescription: false, insuredPersonsApproved: [], insuredPersonsDenied: [] };\r\n this.selectedProductlistServices = new SelectedProductListServices();\r\n this.categoryServices = new CategoryServices();\r\n this.tokenService = new TokenServices();\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n this.state = {\r\n score: false\r\n };\r\n\r\n }\r\n\r\n async componentDidMount() {\r\n await this.showSocore();\r\n\r\n }\r\n async showSocore() {\r\n let score = await this.selectedProductlistServices.IsVisibleScore(showScore);\r\n this.setState({ score: score });\r\n }\r\n /**\r\n * \r\n * @param {*} dateOfBirth string with the date of birth of the insured\r\n * @returns date format dd / mm / yyy\r\n */\r\n handleDateFormat(dateOfBirth) {\r\n let userEnteredDateISO = '';\r\n if (dateOfBirth != null) {\r\n const parts = dateOfBirth.split(\"-\");\r\n const day = parts[2].split('T')[0]\r\n userEnteredDateISO = `${day}/${parts[1]}/${parts[0]}`;\r\n }\r\n return userEnteredDateISO;\r\n }\r\n handleProductCard = async () => {\r\n const { product } = this.props;\r\n let selectedProduct = {\r\n id_product: `${product.idProduct}`, name: product.name,\r\n id_tsv_product: product.idTSVProduct ? product.idTSVProduct : null,\r\n insured_persons_approved: product.insuredPersonsApproved,\r\n insured_persons_denied: product.insuredPersonsDenied\r\n };\r\n let previousProduct = this.jsonExchangeTSV.getCurrentSelectedProduct();\r\n if (Number(previousProduct.id_product) !== Number(selectedProduct.id_product)) {\r\n this.jsonExchangeTSV.setRisks({ risk_questions: [], insured_risk: [] });\r\n }\r\n this.jsonExchangeTSV.setSelectedProduct(selectedProduct);\r\n this.props.handleProductNameInfo(selectedProduct.name);\r\n let idCategory = { idCategory: Number(this.jsonExchangeTSV.getCurrentSerie().id_series) };\r\n const token = this.tokenService.DecryptToken();\r\n const response = await this.categoryServices.ExistsRiskInCategory(token, idCategory);\r\n if (response.statusResponse) {\r\n if (response.data) {\r\n this.selectedRiderListService.InitializeJSONRider(product.idTSVProduct ? product.idTSVProduct : null);\r\n this.props.handleRiskQuestions(this.props.idProduct, product.idTSVProduct, product.idTSVCategory);\r\n } else {\r\n this.selectedRiderListService.InitializeJSONRider(product.idTSVProduct ? product.idTSVProduct : null);\r\n this.props.goRiders(product.idTSVProduct, product.idTSVCategory);\r\n }\r\n } else {\r\n this.selectedRiderListService.InitializeJSONRider(product.idTSVProduct ? product.idTSVProduct : null);\r\n this.props.goRiders(product.idTSVProduct, product.idTSVCategory);\r\n\r\n }\r\n let helpSticky = document.getElementById(\"div-help-sticky\");\r\n let helpChat = document.getElementById(\"div-help-chat\");\r\n helpSticky.style.display = \"none\";\r\n helpChat.style.display = \"block\";\r\n\r\n\r\n }\r\n\r\n handleInsuredModalClick = () => {\r\n const { product } = this.props;\r\n this.setState({\r\n insuredPersonsApproved: product.insuredPersonsApproved,\r\n insuredPersonsDenied: product.insuredPersonsDenied, showModal: true\r\n });\r\n }\r\n handleInsuredModalDescriptionClick = () => {\r\n const { product } = this.props;\r\n this.setState({\r\n insuredPersonsApproved: product.insuredPersonsApproved,\r\n insuredPersonsDenied: product.insuredPersonsDenied, showModal: false, showModalDescription: true\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Close the modal with de information of each answer option.\r\n */\r\n closeModal = () => {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n closeModalDescription = () => {\r\n this.setState({ showModalDescription: false });\r\n }\r\n cutDescription(description) {\r\n return description.length > 295 ? description.substring(0, 295) : description;\r\n }\r\n cutPoints(point) {\r\n point = point += '';\r\n return point.substring(0, 3);\r\n }\r\n conditionalRender = () => {\r\n let page = '';\r\n const { showModal, showModalDescription, score } = this.state;\r\n switch (true) {\r\n case showModal:\r\n page = this.renderModal();\r\n break;\r\n case showModalDescription:\r\n page = ;\r\n break;\r\n default:\r\n return <>;\r\n }\r\n return <>{page};\r\n }\r\n\r\n renderModal = () => {\r\n const { insuredPersonsApproved, insuredPersonsDenied } = this.state;\r\n return (\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    {this.props.title}
    \r\n \r\n
    \r\n
    \r\n
    Personas cubiertas por la póliza
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {insuredPersonsApproved.map((insuredApproved) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n }\r\n \r\n
    \r\n

    Nombre

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

    Parentesco

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

    Fecha de Nacimiento

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

    Género

    \r\n
    \r\n
    {insuredApproved.name} {insuredApproved.lastName}{insuredApproved.relationship}{this.handleDateFormat(insuredApproved.dateOfBirth)}{insuredApproved.gender}
    \r\n {\r\n insuredPersonsDenied.length > 0 ?\r\n <>\r\n
    *Personas no cubiertas por la póliza
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {insuredPersonsDenied.map((insuredDenied) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n }\r\n \r\n
    \r\n

    Nombre

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

    Parentesco

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

    Fecha de Nacimiento

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

    Género

    \r\n
    \r\n
    {insuredDenied.name} {insuredDenied.lastName}{insuredDenied.relationship}{this.handleDateFormat(insuredDenied.dateOfBirth)}{insuredDenied.gender}
    \r\n
    *Esta(s) persona(s) pueden ser elegibles para una póliza individual o para otro producto.
    \r\n \r\n :\r\n null//
    Todas las personas son elegibles para la póliza.
    \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n

    \r\n {this.props.title}\r\n {this.state.score ? \r\n

    \r\n {this.cutPoints(this.props.average)}\r\n

    score

    \r\n

    \r\n \r\n : null}\r\n \r\n

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

    \r\n \r\n

    {this.cutDescription(this.props.description)}\r\n {this.props.description.length > 295 ?\r\n \r\n \r\n \r\n : null\r\n }

    \r\n \r\n

    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n {this.props.idTSVCategory !== saving ?\r\n
    \r\n \r\n
    \r\n : null\r\n }\r\n
    \r\n
    \r\n {\r\n this.conditionalRender()\r\n }\r\n
    \r\n\r\n \r\n )\r\n }\r\n\r\n\r\n\r\n}\r\nexport default ProductCard;\r\n","import React from \"react\";\r\nimport { LoadingPage } from \"../../pages/LoadingPage\";\r\nimport { ProductServices } from \"../../Services/ProductServices\";\r\nimport { SelectedProductListServices } from \"../../Services/SelectedProductListServices\";\r\nimport { ProductCard } from \"../ProductCard/ProductCard\";\r\nimport './SelectedProductsList.css';\r\n\r\nconst { REACT_APP_FREEDOM_TERM_10_YEARS, REACT_APP_FREEDOM_TERM_15_YEARS, REACT_APP_ID_LIFE,\r\n REACT_APP_FREEDOM_TERM_20_YEARS, REACT_APP_FREEDOM_TERM_30_YEARS, REACT_APP_FREEDOM_TERM } = process.env;\r\n\r\nexport class SelectedProductsList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.productServices = new ProductServices();\r\n this.selectedProductListServices = new SelectedProductListServices();\r\n this.state = {\r\n products: [],\r\n loading: false,\r\n filteredProduct: [],\r\n productTermList: []\r\n };\r\n }\r\n componentDidMount() {\r\n let helpSticky = document.getElementById(\"div-help-sticky\");\r\n let helpChat = document.getElementById(\"div-help-chat\");\r\n helpChat.style.display = \"none\";\r\n helpSticky.style.display = \"block\";\r\n }\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.nextProp !== this.props.nextProp) {\r\n if (this.props.selectProduct) {\r\n let request = this.selectedProductListServices.GetSelectedProductRequestObject();\r\n this.setState({ loading: true });\r\n this.productServices.GetSelectedProducts(request).then(result => {\r\n if (result.statusResponse) {\r\n let productsResponse = result.data;\r\n this.existsProduct(productsResponse);\r\n if (REACT_APP_ID_LIFE == request.idCategory) {\r\n this.setState({ products: this.state.filteredProduct });\r\n } else {\r\n this.setState({ products: productsResponse });\r\n }\r\n setTimeout(() => this.setState({ loading: false }), 2000);\r\n if (productsResponse.length == 0) {\r\n let noProductsMessage = 'Lo sentimos, en esta categoría no es posible ofrecerte alguno de nuestros productos. Te invitamos a conocer nuestras opciones en otras categorías.';\r\n return this.props.handleErrorInComponent(true, noProductsMessage);\r\n }\r\n } else {\r\n this.setState({ loading: false });\r\n this.props.handleErrorInComponent(true);\r\n }\r\n });\r\n let helpChat = document.getElementById(\"div-help-chat\");\r\n helpChat.style.display = \"none\";\r\n let helpSticky = document.getElementById(\"div-help-sticky\");\r\n helpSticky.style.display = \"block\";\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Function that adds term products to the list and updates it \r\n * @param {Array} products List of products to select\r\n */\r\n existsProduct = (products) => {\r\n let listTerms = [];\r\n let subProduct = [];\r\n\r\n products.map((product) => {\r\n if (REACT_APP_FREEDOM_TERM_10_YEARS == product.idProduct || REACT_APP_FREEDOM_TERM_15_YEARS == product.idProduct ||\r\n REACT_APP_FREEDOM_TERM_20_YEARS == product.idProduct || REACT_APP_FREEDOM_TERM_30_YEARS == product.idProduct ||\r\n REACT_APP_FREEDOM_TERM == product.idProduct) {\r\n let productTerm = { idTSVProduct: product.idTSVProduct, name: product.name, idProduct: product.idProduct };\r\n listTerms.push(productTerm);\r\n }\r\n if (REACT_APP_FREEDOM_TERM_30_YEARS == product.idProduct) {\r\n subProduct = [];\r\n let productTerm = { idTSVProduct: product.idTSVProduct, name: product.name, idProduct: product.idProduct };\r\n subProduct.push(productTerm)\r\n } else if (REACT_APP_FREEDOM_TERM_20_YEARS == product.idProduct) {\r\n subProduct = [];\r\n let productTerm = { idTSVProduct: product.idTSVProduct, name: product.name, idProduct: product.idProduct };\r\n subProduct.push(productTerm)\r\n } else if (REACT_APP_FREEDOM_TERM_15_YEARS == product.idProduct) {\r\n subProduct = [];\r\n let productTerm = { idTSVProduct: product.idTSVProduct, name: product.name, idProduct: product.idProduct };\r\n subProduct.push(productTerm)\r\n } else if (REACT_APP_FREEDOM_TERM_10_YEARS == product.idProduct) {\r\n subProduct = [];\r\n let productTerm = { idTSVProduct: product.idTSVProduct, name: product.name, idProduct: product.idProduct };\r\n subProduct.push(productTerm)\r\n }\r\n if (REACT_APP_FREEDOM_TERM == product.idProduct) {\r\n let productTerm = { idTSVProduct: product.idTSVProduct, name: product.name, idProduct: product.idProduct };\r\n subProduct.push(productTerm)\r\n }\r\n });\r\n let filteredProduct = [];\r\n filteredProduct = products.filter(function (obj) {\r\n return !listTerms.some(function (obj2) {\r\n return obj.idTSVProduct === obj2.idTSVProduct;\r\n });\r\n });\r\n let termProducts = [];\r\n termProducts = products.filter(function (obj) {\r\n return subProduct.some(function (obj2) {\r\n return obj.idTSVProduct === obj2.idTSVProduct;\r\n });\r\n });\r\n termProducts.map((product) => {\r\n filteredProduct.push(product)\r\n });\r\n\r\n this.setState({ productTermList: listTerms, filteredProduct: filteredProduct });\r\n }\r\n\r\n handleRiskQuestions = (idProduct, idTSVProduct, idTSVCategory) => {\r\n let listTerms = this.state.productTermList;\r\n this.props.handleGetFieldsRisk(idProduct, idTSVProduct, idTSVCategory, listTerms);\r\n }\r\n render() {\r\n const { parentRef, goRiders } = this.props;\r\n const { products, loading } = this.state;\r\n if (loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n else if (products.length > 0) {\r\n return (\r\n <>\r\n
    \r\n

    \r\n Estas son las recomendaciones que tenemos para ti.\r\n

    \r\n

    \r\n Escoge la que más se ajuste a tus necesidades:\r\n

    \r\n
    \r\n
    \r\n {products.map((product) => {\r\n if (!product.deleted)\r\n return (\r\n )\r\n return null;\r\n })\r\n }\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n \r\n )\r\n } else return (<>)\r\n\r\n\r\n }\r\n}\r\nexport default SelectedProductsList;","import { JSONExchangeTSV } from \"./JSONExchangeTSV\";\r\n\r\nexport class YesNoQuestionCardServices {\r\n\r\n constructor() {\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n\r\n }\r\n\r\n /**\r\n * Gets the previous question with his answer from local storage, answered by the user.\r\n * @param {Number} idCurrentCategory The numerical id of the current category.\r\n * @param {Object} fieldConfig The question of the current component.\r\n * @return {Object} The question with his answer object if exist, if not then returns false.\r\n */\r\n GetPreviousAnswerFromLocalStorage = (idCurrentCategory, fieldConfig) => {\r\n let response = {\r\n formValid: null,\r\n step: null,\r\n next: null,\r\n value: null,\r\n isValid: null,\r\n field: null,\r\n errorMessage: null\r\n };\r\n let valueChecked = null;\r\n if (this.IsCurrentCategory(idCurrentCategory)) {\r\n if (this.GetLastAnswerSaved(fieldConfig) != null) {\r\n valueChecked = this.GetLastAnswerSaved(fieldConfig) === 'Si' ? true : false;\r\n fieldConfig.value = this.GetLastAnswerSaved(fieldConfig);\r\n fieldConfig.valid = true;\r\n let step = fieldConfig.options[0].step;\r\n response.errorMessage = '';\r\n response.valid = true;\r\n response.value = fieldConfig.value;\r\n response.valueChecked = valueChecked;\r\n response.step = step;\r\n response.field = fieldConfig;\r\n\r\n return response;\r\n }\r\n return false;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Handles a change on a input a valid if this change is correct.\r\n * @param {Object} event The event when the input change.\r\n * @param {field} field The question object used in the component.\r\n * @return {Object} The response object to set props and state in the component.\r\n */\r\n HandleInputChange = (event, field) => {\r\n field.value = event.target.value;\r\n const response = this.CheckValidity(field);\r\n return response;\r\n }\r\n\r\n /**\r\n * Validates if the value of the input is correct.\r\n * @param {field} field The question object used in the component.\r\n * @return {Object} The response object to set props and state in the component.\r\n */\r\n CheckValidity = (field) => {\r\n let rules = field;\r\n const value = field.value;\r\n let isValid = true;\r\n let valueChecked = null;\r\n let errorMessage = \"\";\r\n if (rules.required && (value !== '-1' || value.trim() !== '')) {\r\n isValid = true;\r\n } else if (!rules.required) {\r\n isValid = true;\r\n\r\n }\r\n if (isValid) {\r\n valueChecked = value === 'Si' ? true : false;\r\n }\r\n field.valid = isValid;\r\n\r\n let response = {\r\n errorMessage: errorMessage,\r\n isValid: isValid,\r\n value: value,\r\n valueChecked: valueChecked\r\n }\r\n return response;\r\n }\r\n\r\n /**\r\n * Validates if the input is correct to go to the next question and save it in the local storage.\r\n * @param {Boolean} valid A boolean value to handle if the question status is correct to go forward.\r\n * @param {fieldConfig} fieldConfig The question object used in the component.\r\n * @return {Object} The response object to set props and state in the component.\r\n */\r\n NextStep = (valid, fieldConfig) => {\r\n let response = {\r\n valid: null,\r\n formValid: null,\r\n step: null,\r\n next: null,\r\n field: null,\r\n isValid: null\r\n }\r\n let step = 0;\r\n if (!valid) {\r\n response.isValid = false;\r\n return response;\r\n } else {\r\n if (fieldConfig.value === '' || fieldConfig.value === '-1') {\r\n response.valid = valid;\r\n let step = fieldConfig.questionNumber + 1;\r\n if (step === fieldConfig.totalFields) {\r\n step = 0;\r\n response.step = step;\r\n } else {\r\n response.step = step;\r\n }\r\n response.next = true;\r\n response.field = fieldConfig\r\n response.isValid = true;\r\n\r\n return response;\r\n }\r\n let answerValue = [{ \"id\": 0 }];\r\n if (fieldConfig.options) {\r\n if (fieldConfig.options.length > 0) {\r\n answerValue = fieldConfig.options.filter(option => option.text === fieldConfig.value);\r\n }\r\n }\r\n step = answerValue[0].step;\r\n let productQuestion = {\r\n \"id_question\": `${fieldConfig.id}`,\r\n \"question_type\": `${fieldConfig.type}`,\r\n \"question_text\": `${fieldConfig.body}`,\r\n \"id_answer\": `${answerValue[0].id}`,\r\n \"value_answer\": `${fieldConfig.value}`,\r\n \"id_tsv_field\": `${fieldConfig.idTSVField}`,\r\n \"question_number\": fieldConfig.questionNumber\r\n }\r\n if (!this.jsonExchangeTSV.existQuestionOfProductQuestions(productQuestion)) {\r\n this.jsonExchangeTSV.addQuestionToProductQuestion(productQuestion);\r\n } else {\r\n let lastQuestion = this.jsonExchangeTSV.getQuestionOfProductQuestionsById(productQuestion);\r\n this.jsonExchangeTSV.removeQuestionOfProductQuestions(lastQuestion);\r\n this.jsonExchangeTSV.addQuestionToProductQuestion(productQuestion);\r\n }\r\n }\r\n response.valid = valid;\r\n response.step = step;\r\n response.next = true;\r\n response.field = fieldConfig\r\n response.isValid = true;\r\n\r\n return response;\r\n\r\n }\r\n\r\n /**\r\n * Validates if the category chosen by the user is the same of the local storage.\r\n * @param {Number} isCurrentCategory A numerical id of the category\r\n * @return {Boolean} True if it is the current category.\r\n */\r\n IsCurrentCategory = (idCurrentCategory) => {\r\n let currentCategory = this.jsonExchangeTSV.getCurrentSerie();\r\n if (parseInt(currentCategory.id_series) === idCurrentCategory) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets the last answer saved for a question in the local storage.\r\n * @param {Object} fieldConfig The question of the current component.\r\n * @return {Boolean} True if it is the current category.\r\n */\r\n GetLastAnswerSaved = (fieldConfig) => {\r\n let question = { id_question: fieldConfig.id };\r\n let lastAnswer = {};\r\n if (fieldConfig.idMainQuestion === '') {\r\n lastAnswer = this.jsonExchangeTSV.getQuestionOfProductQuestionsById(question);\r\n } else {\r\n lastAnswer = this.jsonExchangeTSV.getSubQuestionOfProductQuestionsById(question);\r\n }\r\n if (!lastAnswer) {\r\n return null;\r\n }\r\n if (lastAnswer.value_answer) {\r\n if (lastAnswer.value_answer === 'Si') {\r\n return 'Si';\r\n } else if (lastAnswer.value_answer === 'No') {\r\n return 'No';\r\n }\r\n } else if (lastAnswer.answer_list) {\r\n let idAnswer = null;\r\n lastAnswer.answer_list.forEach(answerOption => {\r\n idAnswer = answerOption.value_answer;\r\n });\r\n return idAnswer;\r\n }\r\n return null;\r\n }\r\n}","import './ModalInfo.css';\r\nimport React from \"react\";\r\n\r\nexport class ModalInfo extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n onClose = () => {\r\n this.props.closeModal();\r\n }\r\n render() {\r\n const { modalOptions } = this.props;\r\n if (!modalOptions.show) {\r\n return null;\r\n } else {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {typeof modalOptions.differentIcon != \"undefined\" && modalOptions.differentIcon ?\r\n \r\n \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n }\r\n
    \r\n
    \r\n
    {modalOptions.title}
    \r\n \r\n
    \r\n
    \r\n

    {modalOptions.description}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n}\r\nexport default ModalInfo;","import './YesNoQuestionCard.css';\r\nimport React from 'react';\r\nimport { Card, Col, Row } from 'react-bootstrap';\r\nimport { YesNoQuestionCardServices } from '../../Services/YesNoQuestionCardServices';\r\nimport { ModalInfo } from '../ModalInfo';\r\n\r\nexport class YesNoQuestionCard extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.yesNoQuestionServices = new YesNoQuestionCardServices();\r\n this.state = {\r\n valueChecked: null,\r\n optionNo: {},\r\n optionYes: {},\r\n errorMessage: null,\r\n valid: false,\r\n validInput: true,\r\n value: '-1',\r\n stepBack: 0,\r\n modalOptions: { show: false, title: '', description: '' },\r\n };\r\n }\r\n\r\n /**\r\n * Verifies that the nextProp property has changed, when its value is true it takes the identifier of the current component and calls nextStep to verify that the question was answered correctly.\r\n */\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.nextProp !== this.props.nextProp) {\r\n if (this.props.nextProp && this.props.indexNext === this.props.index) {\r\n this.nextStep();\r\n } else if (this.props.nextProp && this.props.fieldConfig.idMainQuestion !== '') {\r\n if (this.props.indexNext.includes(this.props.index)) {\r\n this.nextStep();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Checks if the answer of the question is stored in the local storage if so the component is rendered with that answer \r\n */\r\n componentDidMount() {\r\n const { fieldConfig, idCurrentCategory } = this.props;\r\n fieldConfig.idMainQuestion === '' ? this.setValueAnswerd(fieldConfig, idCurrentCategory) :\r\n this.setState({\r\n valid: fieldConfig.valid, value: fieldConfig.value, valueChecked: fieldConfig.value === 'Si' ? true : fieldConfig.value === 'No' ? false : null\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Take the answer of the question saved in the localstorage according to the component ID\r\n * @param {*} fieldConfig object with component attributes\r\n * @param {*} idCurrentCategory idCurrentCategory id of the current category\r\n */\r\n\r\n setValueAnswerd(fieldConfig, idCurrentCategory) {\r\n const response =\r\n this.yesNoQuestionServices.GetPreviousAnswerFromLocalStorage(idCurrentCategory, fieldConfig);\r\n if (response) {\r\n this.setState({\r\n errorMessage: response.errorMessage, valid: response.valid, validInput: response.valid,\r\n value: response.value, valueChecked: response.valueChecked\r\n });\r\n this.props.funtionHandleSetProps(true, response.step, false, response.field);\r\n }\r\n }\r\n /**\r\n * Validates if the input is correct to go to the next question and save it in the local storage.\r\n */\r\n nextStep = () => {\r\n const { valid } = this.state;\r\n const { fieldConfig } = this.props;\r\n let response = null;\r\n if (fieldConfig.value === '' && !fieldConfig.required) {\r\n response = this.yesNoQuestionServices.NextStep(true, fieldConfig);\r\n } else {\r\n response = this.yesNoQuestionServices.NextStep(valid, fieldConfig);\r\n }\r\n if (!response.isValid) {\r\n this.setState({ errorMessage: '*Debe seleccionar una opción', validInput: response.isValid });\r\n this.props.funtionHandleSetProps(response.isValid, 0, true, fieldConfig);\r\n } else {\r\n this.props.funtionHandleSetProps(response.isValid, response.step, response.next, response.field);\r\n }\r\n }\r\n\r\n /**\r\n * Handles a change on a input a valid if this change is correct.\r\n */\r\n handleInputChange = (event, field) => {\r\n const response = this.yesNoQuestionServices.HandleInputChange(event, field);\r\n this.setState({\r\n errorMessage: response.errorMessage, valid: response.isValid, validInput: response.isValid,\r\n value: response.value, valueChecked: response.valueChecked\r\n });\r\n this.props.funtionHandleSetProps(response.isValid, false, 0);\r\n }\r\n /**\r\n * Renders a modal with de information of each answer option.\r\n */\r\n showModal(title, description) {\r\n let modalOptions = { show: true, title: title, description: description };\r\n this.setState({ modalOptions: modalOptions });\r\n }\r\n\r\n /**\r\n * Close the modal with de information of each answer option.\r\n */\r\n closeModal = () => {\r\n let modalOptions = { show: false };\r\n this.setState({\r\n modalOptions: modalOptions\r\n });\r\n };\r\n\r\n render() {\r\n const { optionNo, optionYes, valueChecked, valid, validInput, errorMessage, modalOptions } = this.state;\r\n const { fieldConfig, options } = this.props;\r\n let isInputMatix = fieldConfig.idMainQuestion !== '';\r\n let descriptionYes = fieldConfig.options[0].description ? fieldConfig.options[0].description : false;\r\n let descriptionNo = fieldConfig.options[1].description ? fieldConfig.options[1].description : false;\r\n return (\r\n isInputMatix ?\r\n <>\r\n
    \r\n\r\n
    \r\n this.handleInputChange(event, this.props.fieldConfig)}\r\n name={optionYes.id}\r\n id={optionYes.id} />\r\n \r\n
    \r\n this.showModal('SI', descriptionYes)}>\r\n \r\n this.showModal('', descriptionYes)} />\r\n \r\n \r\n \r\n
    \r\n this.handleInputChange(event, this.props.fieldConfig)}\r\n name={optionNo.id}\r\n id={optionNo.id}\r\n />\r\n \r\n
    \r\n this.showModal('NO', descriptionNo)}\r\n style={{ display: descriptionNo === '' || descriptionNo === null || descriptionNo === undefined ? 'none' : 'block' }}>\r\n \r\n this.showModal('', descriptionNo)} />\r\n \r\n \r\n \r\n {modalOptions.show ?\r\n :\r\n null}\r\n
    \r\n
    \r\n {!validInput && {errorMessage}}\r\n
    \r\n\r\n \r\n :\r\n <>\r\n
    \r\n \r\n \r\n \r\n
    \r\n this.handleInputChange(event, this.props.fieldConfig)}\r\n name={optionYes.id}\r\n id={optionYes.id} />\r\n \r\n
    \r\n this.showModal('SI', descriptionYes)}>\r\n \r\n this.showModal('', descriptionYes)} />\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n this.handleInputChange(event, this.props.fieldConfig)}\r\n name={optionNo.id}\r\n id={optionNo.id}\r\n />\r\n \r\n
    \r\n this.showModal('NO', descriptionNo)}>\r\n \r\n this.showModal('', descriptionNo)} />\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {modalOptions.show ?\r\n :\r\n null}\r\n\r\n
    \r\n
    \r\n {!validInput && {errorMessage}}\r\n
    \r\n\r\n \r\n );\r\n }\r\n}","import { JSONExchangeTSV } from \"./JSONExchangeTSV\";\r\n\r\nexport class MultipleChoiseCardServices {\r\n\r\n constructor() {\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n\r\n }\r\n\r\n /**\r\n * Gets the previous question with his answer from local storage, answered by the user.\r\n * @param {Number} idCurrentCategory The numerical id of the current category.\r\n * @param {Object} fieldConfig The question of the current component.\r\n * @param {Array} options the options of the select element..\r\n * @param {Array} selectedCheckboxes The selected elements by the user.\r\n * @return {Object} The question with his answer object if exist, if not then returns false.\r\n */\r\n GetPreviousAnswerFromLocalStorage = (idCurrentCategory, fieldConfig, options, selectedCheckboxes) => {\r\n fieldConfig.value = [];\r\n if (this.IsCurrentCategory(idCurrentCategory)) {\r\n if (this.GetLastAnswerSaved(fieldConfig) != null) {\r\n fieldConfig.value = this.GetLastAnswerSaved(fieldConfig);\r\n options.forEach(option => {\r\n fieldConfig.value.forEach(answerList => {\r\n answerList.forEach(value => {\r\n if (parseInt(value.id_answer) === option.id) {\r\n selectedCheckboxes.push(value.id_answer);\r\n }\r\n });\r\n });\r\n\r\n });\r\n fieldConfig.value = [...selectedCheckboxes];\r\n let step = fieldConfig.options[0].step;\r\n\r\n const response = {\r\n selectedCheckboxes: selectedCheckboxes,\r\n errorMessage: '',\r\n valid: true,\r\n value: fieldConfig.value,\r\n fieldConfig: fieldConfig,\r\n step: step\r\n };\r\n\r\n return response;\r\n }\r\n return false;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Handles a change on a input a valid if this change is correct.\r\n * @param {Object} event The event when the input change.\r\n * @param {field} field The question object used in the component.\r\n * @param {Array} selectedCheckboxes The selected elements by the user.\r\n * @return {Object} The response object to set props and state in the component.\r\n */\r\n HandleInputChange = (event, fieldConfig, selectedCheckboxes) => {\r\n const response = this.CheckValidity(event, fieldConfig, selectedCheckboxes);\r\n return response;\r\n }\r\n\r\n /**\r\n * Validates if the value of the input is correct.\r\n * @param {fieldConfig} fieldConfig The question object used in the component.\r\n * @param {Array} selectedCheckboxes The selected elements by the user.\r\n * @param {Object} selectedOption The selected option by the user.\r\n * @return {Object} The response object to set props and state in the component.\r\n */\r\n CheckValidity = (selectedOption, fieldConfig, selectedCheckboxes) => {\r\n let response = fieldConfig.idMainQuestion === '' ? this.CheckBoxValidity(selectedOption, selectedCheckboxes, fieldConfig) :\r\n this.SelectValidity(selectedOption, fieldConfig);\r\n\r\n return response;\r\n }\r\n\r\n /**\r\n * Validates if the value of the option checked is correct in multiple choise in matrix\r\n * @param {fieldConfig} fieldConfig The question object used in the component.\r\n * @param {Object} selectedOption The selected option by the user.\r\n * @return {Object} The response object to set props and state in the component.\r\n */\r\n SelectValidity(selectedOption, fieldConfig) {\r\n let rules = fieldConfig;\r\n let value = selectedOption;\r\n let isValid = false;\r\n let errorMessage = \"\";\r\n if (rules.required && value.length === 0) {\r\n isValid = false;\r\n value = \"\";\r\n errorMessage = '*Debe seleccionar al menos una de las opciones';\r\n }\r\n else if (!rules.required && value.length === 0) {\r\n isValid = true;\r\n } else {\r\n isValid = true;\r\n }\r\n fieldConfig.valid = isValid;\r\n fieldConfig.value = value;\r\n let response = {\r\n errorMessage: errorMessage,\r\n value: value,\r\n isValid: isValid\r\n };\r\n return response;\r\n\r\n }\r\n /**\r\n * Validates if the value of the option checked is correct in multiple choise without matrix\r\n * @param {fieldConfig} fieldConfig The question object used in the component.\r\n * @param {Array} selectedCheckboxes The selected elements by the user.\r\n * @param {Object} selectedOption The selected option by the user.\r\n * @return {Object} The response object to set props and state in the component.\r\n */\r\n CheckBoxValidity(selectedOption, selectedCheckboxes, fieldConfig) {\r\n let rules = fieldConfig;\r\n let value = selectedOption;\r\n let isValid = false;\r\n let errorMessage = \"\";\r\n const responseValueCheck = this.MultipleChoiceValueChecked(value, fieldConfig, selectedCheckboxes);\r\n selectedCheckboxes = responseValueCheck.selectedCheckboxes;\r\n \r\n \r\n if (rules.required && selectedCheckboxes.length === 0) {\r\n isValid = false;\r\n value = \"\";\r\n errorMessage = '*Debe seleccionar al menos una de las opciones';\r\n } else if (!rules.required && selectedCheckboxes.length === 0) {\r\n isValid = true;\r\n }\r\n else {\r\n isValid = true;\r\n }\r\n fieldConfig.valid = isValid;\r\n let response = {\r\n errorMessage: errorMessage,\r\n value: value,\r\n isValid: isValid,\r\n selectedCheckboxes: responseValueCheck.selectedCheckboxes\r\n };\r\n return response;\r\n }\r\n\r\n /**\r\n * Validates if the value of the input is valid in the list of selected options.\r\n * @param {fieldConfig} fieldConfig The question object used in the component.\r\n * @param {Array} selectedCheckboxes The selected elements by the user.\r\n * @param {Object} value The selected option by the user.\r\n * @return {Object} The response object to set props and state in the component.\r\n */\r\n MultipleChoiceValueChecked = (value, fieldConfig, selectedCheckboxes) => {\r\n let objectOption = fieldConfig.options.filter(selected => selected.id === Number(value))[0];\r\n let notSure = fieldConfig.options.filter(selected => selected.option === 'No estoy seguro');\r\n if (Array.isArray(value)) {\r\n let selectedOptions = [];\r\n value.forEach(option => {\r\n selectedOptions.push({ \"id\": option.value });\r\n });\r\n selectedCheckboxes = selectedOptions;\r\n fieldConfig.value = selectedOptions;\r\n } else {\r\n if (selectedCheckboxes.length === 0) {\r\n selectedCheckboxes.push(value);\r\n fieldConfig.value.push(value);\r\n\r\n } else {\r\n const sameValue = selectedCheckboxes.filter(selected => selected === value);\r\n if (sameValue[0]) {\r\n let indexOf = selectedCheckboxes.indexOf(sameValue[0]);\r\n selectedCheckboxes.splice(indexOf, 1);\r\n fieldConfig.value.splice(indexOf, 1);\r\n objectOption = null;\r\n notSure = null;\r\n } else {\r\n selectedCheckboxes.push(value);\r\n fieldConfig.value.push(value);\r\n }\r\n }\r\n selectedCheckboxes = selectedCheckboxes;\r\n }\r\n\r\n let response = {\r\n fieldConfig: fieldConfig,\r\n selectedCheckboxes: selectedCheckboxes\r\n };\r\n if(objectOption !== null && objectOption.option === 'No estoy seguro'){\r\n selectedCheckboxes = []; \r\n selectedCheckboxes.push(objectOption.id.toString());\r\n fieldConfig.value = selectedCheckboxes;\r\n response = {\r\n fieldConfig: fieldConfig,\r\n selectedCheckboxes: selectedCheckboxes\r\n };\r\n }else if(notSure !== undefined && notSure !== null && notSure.length > 0){\r\n \r\n const notSureValue = selectedCheckboxes.filter(selected => selected === notSure[0].id.toString());\r\n if (notSureValue[0]) {\r\n let indexOf = selectedCheckboxes.indexOf(notSureValue[0]);\r\n selectedCheckboxes.splice(indexOf, 1);\r\n fieldConfig.value.splice(indexOf, 1);\r\n response = {\r\n fieldConfig: fieldConfig,\r\n selectedCheckboxes: selectedCheckboxes\r\n };\r\n } \r\n }\r\n\r\n return response;\r\n }\r\n\r\n /**\r\n * Validates if the input is correct to go to the next question and save it in the local storage.\r\n * @param {Boolean} valid A boolean value to handle if the question status is correct to go forward.\r\n * @param {Object} fieldConfig The question of the current component.\r\n * @return {Object} The response object to set props and state in the component.\r\n */\r\n NextStep = (valid, fieldConfig) => {\r\n let step = 0;\r\n let response = {\r\n valid: null,\r\n step: null,\r\n fieldConfig: null,\r\n isValid: null,\r\n next: null\r\n };\r\n if (!valid) {\r\n response.isValid = false;\r\n return response;\r\n } else if (fieldConfig.value === '' || fieldConfig.value.length === 0 ) {\r\n response.valid = valid;\r\n let step = fieldConfig.questionNumber + 1;\r\n if (step === fieldConfig.totalFields) {\r\n step = 0;\r\n response.step = step;\r\n } else {\r\n response.step = step;\r\n }\r\n response.next = true;\r\n response.fieldConfig = fieldConfig\r\n response.isValid = true;\r\n\r\n return response;\r\n }\r\n else {\r\n let answerValue = [];\r\n fieldConfig.value.forEach(value => {\r\n answerValue.push(fieldConfig.options.filter(option => option.id === parseInt(value))[0]);\r\n });\r\n step = answerValue[0].step;\r\n let answerListJSON = [];\r\n let value_answer_list = [];\r\n let insuredPersons = this.jsonExchangeTSV.getCurrentInsuredPersons();\r\n answerValue.forEach(answerValue => {\r\n\r\n value_answer_list.push({\r\n 'id_answer': `${answerValue.id}`, 'value_answer': `${answerValue.text}`,\r\n 'idInsuredPerson': insuredPersons[0] ? insuredPersons[0].idInsuredPerson : null\r\n });\r\n });\r\n answerListJSON.push(value_answer_list);\r\n\r\n let productQuestion = {\r\n \"id_question\": `${fieldConfig.id}`,\r\n \"question_type\": `${fieldConfig.type}`,\r\n \"question_text\": `${fieldConfig.body}`,\r\n \"id_tsv_field\": `${fieldConfig.idTSVField}`,\r\n \"question_number\": fieldConfig.questionNumber,\r\n \"answer_list\": answerListJSON\r\n };\r\n if (!this.jsonExchangeTSV.existQuestionOfProductQuestions(productQuestion)) {\r\n this.jsonExchangeTSV.addQuestionToProductQuestion(productQuestion);\r\n } else {\r\n let lastQuestion = this.jsonExchangeTSV.getQuestionOfProductQuestionsById(productQuestion);\r\n this.jsonExchangeTSV.removeQuestionOfProductQuestions(lastQuestion);\r\n this.jsonExchangeTSV.addQuestionToProductQuestion(productQuestion);\r\n }\r\n response.valid = valid;\r\n response.step = step;\r\n response.next = true;\r\n response.fieldConfig = fieldConfig;\r\n response.isValid = true;\r\n\r\n return response;\r\n }\r\n }\r\n\r\n /**\r\n * Validates if the category chosen by the user is the same of the local storage.\r\n * @param {Number} isCurrentCategory A numerical id of the category\r\n * @return {Boolean} True if it is the current category.\r\n */\r\n IsCurrentCategory = (idCurrentCategory) => {\r\n let actualCateory = this.jsonExchangeTSV.getCurrentSerie();\r\n if (parseInt(actualCateory.id_series) === idCurrentCategory) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets the last answer saved for a question in the local storage.\r\n * @param {Object} fieldConfig The question of the current component.\r\n * @return {Boolean} True if it is the current category.\r\n */\r\n GetLastAnswerSaved = (fieldConfig) => {\r\n let question = { id_question: fieldConfig.id };\r\n let lastAnswer = this.jsonExchangeTSV.getQuestionOfProductQuestionsById(question);\r\n if (lastAnswer.answer_list) {\r\n return lastAnswer.answer_list;\r\n }\r\n return null;\r\n }\r\n}","import './MultipleChoiceCard.css';\r\nimport React from 'react';\r\nimport Select from 'react-select';\r\nimport { MultipleChoiseCardServices } from '../../Services/MultipleChoiseCardServices';\r\nimport { ModalInfo } from '../ModalInfo';\r\n\r\nexport class MultipleChoiceCard extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.multipleChoiseCardServices = new MultipleChoiseCardServices();\r\n this.state = {\r\n selectedOption: this.props.selectedOption || \"\",\r\n options: this.props.options,\r\n action: '',\r\n title: '',\r\n description: '',\r\n selectedCheckboxes: [],\r\n errorMessage: null,\r\n valid: false,\r\n validInput: true,\r\n value: null,\r\n optionsSelect: [],\r\n answers: [],\r\n modalOptions: { show: false, title: '', description: '' },\r\n };\r\n }\r\n\r\n /**\r\n * Verifies that the nextProp property has changed, when its value is true it takes the identifier of the current component and calls nextStep to verify that the question was answered correctly.\r\n */\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.nextProp !== this.props.nextProp) {\r\n if (this.props.nextProp && this.props.indexNext === this.props.index) {\r\n this.nextStep();\r\n } else if (this.props.nextProp && this.props.fieldConfig.idMainQuestion !== '') {\r\n if (this.props.indexNext.includes(this.props.index)) {\r\n this.nextStep();\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n *select the select options saved in the matrix\r\n */\r\n setOptionsForSelect = () => {\r\n const { options, fieldConfig } = this.props;\r\n let optionsToIterate = [...options];\r\n let optionsSelect = [];\r\n optionsToIterate.forEach(option => {\r\n let optionSelect = { value: `${option.id}`, label: `${option.text}` };\r\n optionsSelect.push(optionSelect);\r\n });\r\n this.setState({ optionsSelect: optionsSelect, value: fieldConfig.value });\r\n this.props.funtionHandleSetProps(true, 0, false, fieldConfig);\r\n\r\n }\r\n\r\n /**\r\n * Checks if the answer of the question is stored in the local storage if so the component is rendered with that answer \r\n */\r\n componentDidMount() {\r\n const { fieldConfig } = this.props;\r\n fieldConfig.idMainQuestion === '' ? this.setAnswers() : this.setMatrizAnswers();\r\n }\r\n\r\n /** \r\n * call the method setOptionsForSelect to set the options that were saved in the localstorage\r\n */\r\n setMatrizAnswers() {\r\n this.setOptionsForSelect();\r\n\r\n }\r\n setAnswers() {\r\n const { fieldConfig, idCurrentCategory } = this.props;\r\n const { options, selectedCheckboxes } = this.state;\r\n const response = this.multipleChoiseCardServices.GetPreviousAnswerFromLocalStorage(idCurrentCategory, fieldConfig,\r\n options, selectedCheckboxes);\r\n if (response) {\r\n this.setState({ selectedCheckboxes: response.selectedCheckboxes });\r\n this.setState({ errorMessage: response.selectedCheckboxes, valid: response.valid, value: response.value });\r\n this.props.funtionHandleSetProps(true, response.step, false, response.fieldConfig);\r\n }\r\n }\r\n\r\n /**\r\n * Validates if the input is correct to go to the next question and save it in the local storage.\r\n */\r\n nextStep = () => {\r\n const { valid } = this.state;\r\n const { fieldConfig } = this.props;\r\n let response = null;\r\n if (fieldConfig.value.length === 0 && !fieldConfig.required) {\r\n response = this.multipleChoiseCardServices.NextStep(true, fieldConfig);\r\n } else {\r\n response = this.multipleChoiseCardServices.NextStep(valid, fieldConfig);\r\n }\r\n if (!response.isValid) {\r\n \r\n this.state.errorMessage = '*Debe seleccionar al menos una de las opciones';\r\n this.props.funtionHandleSetProps(response.isValid, 0, true, fieldConfig);\r\n this.setState({validInput: response.isValid});\r\n\r\n } else {\r\n this.props.funtionHandleSetProps(response.valid, response.step, response.next, response.fieldConfig);\r\n }\r\n }\r\n\r\n /**\r\n * Handles a change on a input a valid if this change is correct.\r\n */\r\n handleChangeInput = (event) => {\r\n let { fieldConfig } = this.props;\r\n const { selectedCheckboxes } = this.state;\r\n let response = null;\r\n //select\r\n if (event[0] != undefined) {\r\n response = this.multipleChoiseCardServices.HandleInputChange(event, fieldConfig, selectedCheckboxes);\r\n this.setState({\r\n errorMessage: response.errorMessage, valid: response.isValid, validInput: response.isValid, value: response.value,\r\n selectedCheckboxes: response.selectedCheckboxes\r\n });\r\n this.props.funtionHandleSetProps(response.isValid, false);\r\n } else if (event.target) {\r\n //checkbox\r\n response = this.multipleChoiseCardServices.HandleInputChange(event.target.value, fieldConfig, selectedCheckboxes);\r\n this.setState({\r\n errorMessage: response.errorMessage, valid: response.isValid, value: response.value,\r\n selectedCheckboxes: response.selectedCheckboxes\r\n });\r\n this.props.funtionHandleSetProps(response.isValid, false);\r\n } else {\r\n this.setState({\r\n errorMessage: '*Debe seleccionar al menos una de las opciones', valid: false, value: [], validInput: false,\r\n selectedCheckboxes: []\r\n });\r\n fieldConfig.valid = false;\r\n fieldConfig.value = '';\r\n this.props.funtionHandleSetProps(false, false);\r\n }\r\n }\r\n\r\n /**\r\n * Renders a modal with de information of each answer option.\r\n */\r\n showModal(title, description) {\r\n let modalOptions = { show: true, title: title, description: description };\r\n this.setState({ modalOptions: modalOptions });\r\n }\r\n\r\n /**\r\n * Close the modal with de information of each answer option.\r\n */\r\n closeModal = () => {\r\n let modalOptions = { show: false };\r\n this.setState({\r\n modalOptions: modalOptions\r\n });\r\n };\r\n\r\n render() {\r\n const { selectedCheckboxes, valid, validInput, errorMessage, optionsSelect, value, modalOptions } = this.state;\r\n const { options, fieldConfig } = this.props;\r\n return (\r\n fieldConfig.idMainQuestion === '' ?\r\n <>\r\n
    \r\n {options.map(option => (\r\n
    \r\n
    \r\n this.handleChangeInput(event)}\r\n value={option.id} checked={selectedCheckboxes.includes(option.id.toString())} />\r\n
    \r\n \r\n
    this.showModal(option.text, option.description)}\r\n style={{ display: option.description === '' || option.description === null ? 'none' : 'block' }}>\r\n \r\n this.showModal(option.text, option.description)}/>\r\n \r\n \r\n
    \r\n
    \r\n ))}\r\n
    \r\n {!valid && {errorMessage}}\r\n
    \r\n
    \r\n {modalOptions.show ?\r\n :\r\n null}\r\n \r\n :\r\n
    \r\n this.handleInputChange(event)}\r\n value={fieldConfig.value || '-1'}>\r\n \r\n {options.map(option => (\r\n \r\n ))}\r\n \r\n
    \r\n \r\n
    \r\n {!validInput && {errorMessage}}\r\n
    \r\n \r\n );\r\n }\r\n\r\n}","import React from 'react';\r\nimport { YesNoQuestionCard } from '../../components/YesNoQuestionCard';\r\nimport { MultipleChoiceCard } from '../MultipleChoiceCard';\r\nimport { LongAnswerCard } from '../LongAnswerCard';\r\nimport { DateCard } from '../DateCard';\r\nimport { NumericalRangeCard } from '../NumericalRangeCard';\r\nimport { UniqueSelectionCard } from '../UniqueSelectionCard';\r\nimport { HiddenQuestion } from '../CardType';\r\n\r\nconst uniqueSelection = process.env.REACT_APP_UNIQUE_SELECTION;\r\nconst longAnswer = process.env.REACT_APP_LONG_ANSWER;\r\nconst yesNo = process.env.REACT_APP_YES_NO;\r\nconst range = process.env.REACT_APP_RANGE;\r\nconst multichoice = process.env.REACT_APP_MULTICHOICE;\r\nconst date = process.env.REACT_APP_DATE;\r\nconst date_calculation = process.env.REACT_APP_DATE_CALCULATION;\r\n\r\nexport class Field extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n classes: ['field'],\r\n now: new Date(),\r\n errorMessage: null\r\n };\r\n }\r\n componentDidMount() {\r\n const { fieldConfig } = this.props;\r\n const { classes } = this.state;\r\n if (fieldConfig.touched && !fieldConfig.valid) {\r\n classes.push('invalid');\r\n }\r\n }\r\n render() {\r\n const { funtionHandleSetProps, handleErrorInComponent, nextProp, indexNext, parentRef, index, idCurrentCategory, fieldConfig } = this.props;\r\n const { classes } = this.state;\r\n let element = null;\r\n switch (fieldConfig.type) {\r\n case (yesNo):\r\n element = (\r\n \r\n );\r\n break;\r\n case (multichoice):\r\n element = (\r\n \r\n );\r\n break;\r\n case (longAnswer):\r\n element = (\r\n \r\n );\r\n break;\r\n case (date):\r\n element = (\r\n \r\n );\r\n break;\r\n case (date_calculation):\r\n element = (\r\n \r\n );\r\n break;\r\n case (uniqueSelection):\r\n element = (\r\n \r\n );\r\n break;\r\n case (range):\r\n element = (\r\n
    \r\n \r\n
    \r\n );\r\n break;\r\n default:\r\n element = null;\r\n break;\r\n }\r\n return (\r\n
    \r\n {element}\r\n
    \r\n )\r\n }\r\n\r\n}","import './CardField.css';\r\nimport React from 'react';\r\nimport { Card, Col, Row } from 'react-bootstrap';\r\nimport { Field } from '../Field';\r\n\r\nexport class CardField extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n\r\n }\r\n\r\n\r\n render() {\r\n const { fieldConfig, nextProp, indexNext, funtionHandleSetProps, handleErrorInComponent, parentRef, index, idCurrentCategory } = this.props;\r\n return (\r\n <>\r\n \r\n \r\n \r\n {fieldConfig.title}\r\n \r\n \r\n {fieldConfig.body}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n );\r\n }\r\n}\r\nexport default CardField;\r\n","import './MatrixCard.css';\r\nimport React from 'react';\r\nimport { Card, Col, Row } from 'react-bootstrap';\r\nimport { Field } from '../Field';\r\nimport { MatrixCardServices } from '../../Services/MatrixCardServices';\r\nimport { LoadingPage } from '../../pages/LoadingPage';\r\nimport { ButtonTSV } from '../ButtonTSV';\r\n\r\nexport class MatrixCard extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.matrixCardServices = new MatrixCardServices();\r\n this.state = {\r\n childQuestions: [],\r\n mainchildQuestions: [],\r\n valid: true,\r\n renderBase: false,\r\n title: '',\r\n oldChildQuestions: [],\r\n loading: false,\r\n indexNext: [],\r\n answers: [],\r\n nextProp: false,\r\n hideButton: false,\r\n mainMatriz: true,\r\n mainMatrizLength: 0\r\n };\r\n this.childElement = React.createRef();\r\n }\r\n\r\n /**\r\n * Verifies that the nextProp property has changed, when its value is true it takes the identifier of the current component and calls nextStep to verify that the question was answered correctly.\r\n */\r\n async componentDidUpdate(prevProps) {\r\n if (prevProps.nextProp !== this.props.nextProp) {\r\n if (this.props.nextProp && this.props.indexNext === this.props.index) {\r\n await this.nextStep();\r\n } else {\r\n if (!this.props.fieldConfig.mainMatriz && this.props.currentMatriz === this.props.index && !this.state.renderBase) {\r\n await this.checkMainMatriz();\r\n await this.setValuesUI();\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Creates and render all the sub questions of the main question from the local storage.\r\n */\r\n componentDidMount() {\r\n const { questions, idCurrentCategory, fieldConfig } = this.props;\r\n const result = this.matrixCardServices.LoadAnswersLocalStorage(questions, idCurrentCategory, fieldConfig);\r\n result.isCurrentCategory ? result.questions != null ? this.loadAswers(result.questions) : this.initialProps() : this.setRefs();\r\n }\r\n /**\r\n * \r\n * @param {*} questions object with questions with the answers saved in the localstorage\r\n */\r\n loadAswers(questions) {\r\n questions.forEach(field => {\r\n field.children.forEach(child => {\r\n child.ref = React.createRef();\r\n });\r\n });\r\n this.setState(prevState => ({ childQuestions: prevState.childQuestions.concat(questions), oldChildQuestions: prevState.childQuestions.concat(questions) }));\r\n }\r\n /**\r\n * Initial the properties of questions and old questions\r\n */\r\n initialProps() {\r\n this.setState({ childQuestions: this.props.questions, oldChildQuestions: this.props.question });\r\n this.setRefs();\r\n }\r\n /**\r\n * Creates a a react reference to each sub question according to their component: yes/no , long answer and others.\r\n */\r\n setRefs() {\r\n const childQuestions = this.props.questions;\r\n childQuestions.map((field) => {\r\n field.children.map((child) => {\r\n child.ref = React.createRef();\r\n child.value = '';\r\n child.valid = child.required ? false : true;\r\n })\r\n })\r\n this.setState({ childQuestions: childQuestions });\r\n }\r\n /**\r\n * Validates if the input is correct to go to the next question and save it in the local storage.\r\n */\r\n nextStep = async () => {\r\n //this.setState({ loading: true });\r\n let { childQuestions } = this.state;\r\n let newIdexNext = [];\r\n let isValid = true;\r\n let step = 0;\r\n const { fieldConfig } = this.props;\r\n for (const field of childQuestions) {\r\n const children = field.children;\r\n for (const child of children) {\r\n const childelement = child.ref.current;\r\n if (!child.valid) {\r\n isValid = false;\r\n if (childelement !== null) {\r\n newIdexNext.push(childelement.props.index);\r\n }\r\n }\r\n }\r\n }\r\n this.setState({ nextProp: true, indexNext: newIdexNext, valid: isValid });\r\n if (isValid) {\r\n const response = await this.matrixCardServices.SaveMatrixQuestionInLocalStorage(fieldConfig, childQuestions);\r\n if (!response) {\r\n // setTimeout(() => this.setState({ loading: false }), 2000);\r\n this.props.handleErrorInComponent(response.errorInComponent);\r\n } else {\r\n this.setState({ oldChildQuestions: childQuestions });\r\n }\r\n\r\n }\r\n step = fieldConfig.options.step;\r\n // this.setState({ loading: false });\r\n this.props.funtionHandleSetProps(isValid, step, true, fieldConfig);\r\n }\r\n\r\n setOldChild(childQuestions) {\r\n let childQuestionsCopy = childQuestions;\r\n let oldChildQuestions = childQuestionsCopy;\r\n childQuestionsCopy.forEach((question, index) => {\r\n let childre = question.children.filter(child => child.base === false);\r\n oldChildQuestions[index].children = childre;\r\n\r\n });\r\n this.setState({ oldChildQuestions: oldChildQuestions });\r\n }\r\n /**\r\n * verifies that the main matrix has already been answered and takes the values ​​of the answers\r\n */\r\n async checkMainMatriz() {\r\n if (!this.props.fieldConfig.mainMatriz) {\r\n if (this.props.fieldConfig.idProduct !== '') {\r\n let mainchildQuestions = await this.matrixCardServices.getApprovedPersonJSONMatrix();\r\n this.setState({ mainchildQuestions: mainchildQuestions, mainMatriz: false })\r\n } else {\r\n let mainchildQuestions = await this.matrixCardServices.getJSONQuestionsMatrix();\r\n this.setState({ mainchildQuestions: mainchildQuestions, mainMatriz: false })\r\n }\r\n }\r\n }\r\n /**\r\n * takes the value of the responses from the main matrix and assigns them to the fields of the following matrices as the data corresponds\r\n */\r\n async setValuesUI() {\r\n const { mainchildQuestions, oldChildQuestions } = this.state;\r\n this.state.childQuestions = [];\r\n let quesitonsBase = mainchildQuestions[0].filter(question => question.question_base === true);\r\n for (let index = 0; index < quesitonsBase[0].answer_list.length; index++) {\r\n let answers = await this.getAnswerBase(quesitonsBase, index);\r\n let allChildrens = oldChildQuestions !== undefined ? oldChildQuestions[index] !== undefined ? oldChildQuestions[index].children : null : null;\r\n let childrens = allChildrens !== null ? allChildrens.filter(children => children.base === false) : null;\r\n await this.addBaseQuestion(quesitonsBase, answers, childrens);\r\n }\r\n }\r\n /**\r\n * returns the answers of a base question\r\n * @param {*} quesitonsBase object with the base questions of the main matrix\r\n * @param {*} index index indicating the question to which you should search for the answers\r\n * @returns \r\n */\r\n async getAnswerBase(quesitonsBase, index) {\r\n let answers = [];\r\n quesitonsBase.forEach(baseQuestion => {\r\n answers.push(baseQuestion.answer_list[index].value_answer);\r\n });\r\n return answers;\r\n }\r\n /**\r\n * Adds a new insured person and his data to the questions and answers array.\r\n */\r\n addClick() {\r\n const { questions } = this.props;\r\n const newChildQuestions = { ...questions[0] };\r\n let children = [];\r\n newChildQuestions.children.map((child) => {\r\n const newchild = { ...child };\r\n newchild.ref = React.createRef();\r\n newchild.value = '';\r\n newchild.valid = false;\r\n children.push(newchild);\r\n });\r\n newChildQuestions.children = children;\r\n this.setState(prevState => ({ childQuestions: prevState.childQuestions.concat(newChildQuestions), nextProp: false, valid: true }));\r\n }\r\n /**\r\n * renders the base questions of the main matrix with the number of insured inserted\r\n * @param {*} questionsBase object with the base questions of the main matrix\r\n * @param {*} answers array with the answers of the base questions of the main matrix\r\n */\r\n async addBaseQuestion(questionsBase, answers, oldChildren) {\r\n const { questions } = this.props;\r\n const newChildQuestions = { ...questions[0] };\r\n let resultQuestions = await this.matrixCardServices.AddBaseQuestions(newChildQuestions, questionsBase, answers, oldChildren)\r\n resultQuestions.children.map((child) => {\r\n child.ref = React.createRef();\r\n })\r\n this.setState(prevState => ({ childQuestions: prevState.childQuestions.concat(resultQuestions), nextProp: false, renderBase: true }));\r\n }\r\n /**\r\n * Removes a new insured person and his data to the questions and answers array.\r\n */\r\n removeClick(i) {\r\n let childQuestions = [...this.state.childQuestions];\r\n childQuestions.splice(i, 1);\r\n this.setState({ childQuestions });\r\n }\r\n render() {\r\n const { fieldConfig, funtionHandleSetProps, idCurrentCategory } = this.props;\r\n const { loading, childQuestions, indexNext } = this.state;\r\n let { nextProp } = this.state;\r\n if (loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n {fieldConfig.title}\r\n \r\n \r\n {fieldConfig.body}\r\n \r\n {childQuestions.map((fields, indexA) =>\r\n
    \r\n
    \r\n \r\n {this.props.fieldConfig.mainMatriz ?\r\n <>\r\n {indexA === 0 ?
    \r\n
    \r\n Asegurado Principal\r\n
    \r\n
    :
    \r\n
    \r\n Asegurado Adicional\r\n
    \r\n
    }\r\n \r\n : null\r\n }\r\n \r\n {indexA > 0 && this.props.fieldConfig.mainMatriz ?\r\n \r\n \r\n : null\r\n }\r\n \r\n {fields.children.map((field, index) =>\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n}\r\nexport default MatrixCard;\r\n","import React from \"react\";\r\nimport './CardType.css';\r\nimport SelectedProductsList from '../SelectedProductsList/SelectedProductsList';\r\nimport { Card } from 'react-bootstrap';\r\nimport { CardField } from '../../components/CardField';\r\nimport { MatrixCard } from '../MatrixCard';\r\nimport { ButtonTSV } from '../ButtonTSV';\r\nimport { Link } from \"react-router-dom\";\r\n\r\n\r\nconst matrix = process.env.REACT_APP_MATRIX;\r\nconst mainMatrix = process.env.REACT_APP_MAIN_MATRIX;\r\nconst selectProductClass = process.env.REACT_APP_SELECT_PRODUCT;\r\n\r\nexport class CardType extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n };\r\n }\r\n componentDidMount() {\r\n }\r\n render() {\r\n const { field, index, nextProp, totalQuestions, indexNext, handleErrorInComponent,\r\n handleSetProps, selectProduct, step, fields, idCategory, handleClickBack,\r\n handleClickNext, handleGetFieldsRisk } = this.props;\r\n\r\n let divType = null;\r\n let helpSticky = document.getElementById(\"div-help-sticky\");\r\n let helpChat = document.getElementById(\"div-help-chat\");\r\n helpChat.style.display = \"block\";\r\n switch (field.type) {\r\n case matrix:\r\n case mainMatrix:\r\n helpSticky.style.display = \"none\";\r\n divType = \r\n break;\r\n case 'Seleccion Producto':\r\n divType = \r\n break;\r\n default:\r\n helpSticky.style.display = \"none\";\r\n divType = \r\n break;\r\n }\r\n return (\r\n
    \r\n
    \r\n {\r\n divType\r\n }\r\n
    \r\n
    \r\n
    \r\n {step < totalQuestions ?\r\n
    \r\n \r\n
    \r\n : field.idProduct !== '' && step === totalQuestions && !selectProduct ?\r\n handleClickNext(field)} xmlns=\"http://www.w3.org/2000/svg\" width=\"55\" height=\"55\" className=\"ml-5 mt-3 svg-next bi bi-arrow-right-circle-fill\" viewBox=\"0 0 16 16\">\r\n \r\n \r\n : null\r\n }\r\n {index >= 1 || field.idProduct !== '' ?\r\n
    handleClickBack(selectProduct ? 1 : field.back)}>\r\n \r\n \r\n \r\n
    \r\n : null\r\n }\r\n {index == 0 && Number(field.idQuestionClass) === Number(selectProductClass) ?\r\n ({ ...location, pathname: \"/compra\" })}>\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n : null\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\nexport default CardType;\r\n","const REACT_APP_URL_API_TSV_QUOTE = process.env.REACT_APP_URL_API_TSV_QUOTE;\r\nconst { REACT_APP_CLIENTID_TSV, REACT_APP_CLIENTSECRET_TSV } = process.env\r\n\r\nexport class RatesServiceTSV {\r\n constructor() {\r\n }\r\n\r\n /**\r\n * Method in charge of consulting the amount of the premium and supplements to the api tsv\r\n * @param {Object} riders Information on products, supplements and family group\r\n * @return {Promise} promise The promise from the api.\r\n */\r\n QuoteRiders = async (riders, token) => {\r\n let myHeaders = new Headers();\r\n myHeaders.append(\"Accept\", \"*/*\");\r\n myHeaders.append(\"Content-Type\", \"application/json\");\r\n myHeaders.append(\"Authorization\", `Bearer ${token}`);\r\n myHeaders.append(\"clientId\", REACT_APP_CLIENTID_TSV);\r\n myHeaders.append(\"clientSecret\", REACT_APP_CLIENTSECRET_TSV);\r\n let body = JSON.stringify(riders);\r\n\r\n const result = { statusResponse: false, data: null, error: null }\r\n\r\n await fetch(`${REACT_APP_URL_API_TSV_QUOTE}QuoteRates`, {\r\n method: 'POST',\r\n body: body,\r\n headers: myHeaders\r\n }).then(async response => {\r\n if (response.status == 500) {\r\n result.error = true;\r\n }\r\n if (response.ok) {\r\n result.statusResponse = true;\r\n await response.json().then(resultapi => result.data = resultapi);\r\n }\r\n }).catch(error => {\r\n result.error = error;\r\n })\r\n return result;\r\n }\r\n\r\n /**\r\n * Method in charge of obtaining the access token to the tsv api\r\n * @return {Promise} promise The promise from the api.\r\n */\r\n Login = async () => {\r\n const result = { statusResponse: false, data: null, error: null }\r\n await fetch(`${REACT_APP_URL_API_TSV_QUOTE}Login`, {\r\n method: 'POST',\r\n Headers: {\r\n 'Accept': \"*/*\",\r\n 'Content-Type': 'application/json',\r\n 'clientId': REACT_APP_CLIENTID_TSV,\r\n 'clientSecret': REACT_APP_CLIENTSECRET_TSV\r\n }\r\n }).then(async response => {\r\n if (response.ok) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi);\r\n }).catch(error => console.log(error));\r\n return result;\r\n }\r\n}","import { JSONExchangeTSV } from './JSONExchangeTSV';\r\nimport { SelectedRiderListService } from './SelectedRiderListService';\r\n\r\nconst { REACT_APP_FREEDOM_TERM_10_YEARS, REACT_APP_FREEDOM_TERM_15_YEARS, REACT_APP_BASIC_PLAN,\r\n REACT_APP_FREEDOM_TERM_20_YEARS, REACT_APP_FREEDOM_TERM_30_YEARS, REACT_APP_FREEDOM_TERM,\r\n REACT_APP_ID_TSV_AMOUNT, REACT_APP_MAX_TEST } = process.env;\r\n\r\nexport class SliderCardService {\r\n\r\n constructor() {\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n }\r\n\r\n /**\r\n * Replace text to a numeric value.\r\n * @param {String} value The value used in the component.\r\n * @return {Number} The numeric value.\r\n */\r\n getAmountText(value) {\r\n let response = value.replace(\"Max: $\", \"\").replace(\"Min: $\", \"\");\r\n let newValue = response.replace(\",\", \"\");\r\n return newValue\r\n }\r\n\r\n /**\r\n * Validates if the value of the input is correct.\r\n * @param {Number} valueCurrent The value used in the component.\r\n * @param {Number} minValue The minimum value for the input.\r\n * @param {Number} maxValue The maximum value for the input.\r\n * @return {Object} The response object to set props and state in the component.\r\n */\r\n HandleInputChange = (valueCurrent, minValue, maxValue) => {\r\n const pattern = /^[0-9\\b]+$/;\r\n let errorMessageRange = \"\";\r\n let validRange = true;\r\n\r\n let response = {\r\n valueRange: null,\r\n errorMessageRange: null,\r\n validRange: null\r\n };\r\n\r\n let value = valueCurrent !== null ? valueCurrent.replaceAll(',', '') : '';\r\n maxValue = maxValue !== null ? maxValue.replaceAll(',', '') : '';\r\n if (value.trim() == '') {\r\n errorMessageRange = '*Campo es requerido.';\r\n validRange = false;\r\n }\r\n else if (!value.trim() == '' && !pattern.test(value)) {\r\n errorMessageRange = '*Este campo solo permite valores númericos enteros.';\r\n validRange = false;\r\n }\r\n else {\r\n if (!value.trim() == '' && Number(value) >= 0) {\r\n if (Number(value) < minValue || Number(value) > maxValue) {\r\n let min = Number(minValue).toFixed(1).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n let max = Number(maxValue).toFixed(1).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n errorMessageRange = `*El monto del seguro debe estar entre $${min.substring(0, min.indexOf('.'))} y \r\n $${max.substring(0, max.indexOf('.'))}`;\r\n validRange = false;\r\n value = (value * 1).toFixed(1).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n value = value.toString().substring(0, value.indexOf('.'))\r\n\r\n } else {\r\n if (Number(value) >= minValue && Number(value) <= maxValue) {\r\n errorMessageRange = '';\r\n validRange = true;\r\n value = Number(value).toFixed(1).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n value = value.toString().substring(0, value.indexOf('.'))\r\n }\r\n }\r\n } else {\r\n errorMessageRange = `*El valor debe ser mayor o igual que 0.`;\r\n validRange = false;\r\n }\r\n }\r\n response.errorMessageRange = errorMessageRange;\r\n response.validRange = validRange;\r\n response.valueRange = value;\r\n return response;\r\n }\r\n\r\n /**\r\n * Function that obtains the amount of insurance that was entered in the selection of products.\r\n */\r\n getInsuranceAmount(value, categoryName,\r\n type, selectedInsuredCategory, valueMin, changeField, isLaboratoryTest) {\r\n let valueTemp = value;\r\n let idProduct = Number(this.jsonExchangeTSV.getCurrentSelectedProduct().id_product);\r\n let isSelected = type === 'sliderMultiple' ? 'sliderSelected' : '';\r\n \r\n if (categoryName == REACT_APP_BASIC_PLAN) {\r\n if (REACT_APP_FREEDOM_TERM_10_YEARS == idProduct || REACT_APP_FREEDOM_TERM_15_YEARS == idProduct ||\r\n REACT_APP_FREEDOM_TERM_20_YEARS == idProduct || REACT_APP_FREEDOM_TERM_30_YEARS == idProduct ||\r\n REACT_APP_FREEDOM_TERM == idProduct) {\r\n \r\n if (!isLaboratoryTest) {\r\n let amount = this.jsonExchangeTSV.getQuestionOfProductQuestionsByIdTSV(REACT_APP_ID_TSV_AMOUNT);\r\n if (amount) {\r\n let amountNumber = amount.value_answer.replaceAll(\",\", \"\");\r\n valueTemp = Number(amountNumber) >= Number(valueMin) ?\r\n amountNumber : valueMin;\r\n\r\n let request = {\r\n categoryName: categoryName, type: type, value: valueTemp, selectedInsuredCategory: selectedInsuredCategory,\r\n isSelected: isSelected, changeField: changeField\r\n };\r\n this.selectedRiderListService.SaveRiderCategories(request);\r\n }\r\n } else {\r\n valueTemp = REACT_APP_MAX_TEST;\r\n }\r\n }\r\n }\r\n return valueTemp;\r\n }\r\n}","import React from \"react\";\r\nimport './SliderCard.css';\r\nimport { Col, Row } from \"react-bootstrap\";\r\nimport { SelectedRiderListService } from '../../Services/SelectedRiderListService';\r\nimport { JSONRider } from '../../Services/JSONRider';\r\nimport { SliderCardService } from '../../Services/SliderCardService';\r\nimport { JSONExchangeTSV } from \"../../Services/JSONExchangeTSV\";\r\n\r\nconst { REACT_APP_BASIC_PLAN, REACT_APP_LABORATORY_TEST, REACT_APP_WILLING_QUESTION,\r\n REACT_APP_NO, REACT_APP_MAX_TEST } = process.env;\r\n\r\nexport class SliderCard extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n this.jsonRider = new JSONRider();\r\n this.sliderCardService = new SliderCardService();\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.state = {\r\n valueAmount: this.props.sliderType.faceAmount,\r\n showField: false,\r\n selectedInsuredCategory: this.props.selectedInsuredCategory,\r\n refresh: false,\r\n id: this.props.id, changeField: true,\r\n validRange: true, errorMessageRange: '',\r\n isLaboratoryTest: false\r\n };\r\n this.nextRef = React.createRef();\r\n this.currentValueRef = React.createRef();\r\n }\r\n\r\n /**\r\n * Method that loads the selected riders and updates which section to render\r\n */\r\n componentDidMount() {\r\n let { categoryName, type } = this.props;\r\n let { selectedInsuredCategory } = this.state;\r\n let riderCategory = this.jsonRider.getCurrentRiders();\r\n let valueAmount = this.props.sliderType.faceAmount;\r\n let { minFaceAmountText } = this.props.sliderType\r\n let minVal = this.sliderCardService.getAmountText(minFaceAmountText);\r\n let changeField = this.state.changeField;\r\n let isLaboratoryTest = false;\r\n\r\n let valueLaboratory = this.jsonExchangeTSV.\r\n getQuestionOfRiskQuestionsByIdTSV(REACT_APP_LABORATORY_TEST, REACT_APP_WILLING_QUESTION);\r\n if (valueLaboratory != null) {\r\n if (valueLaboratory.value_answer == REACT_APP_NO) {\r\n isLaboratoryTest = valueLaboratory.value_answer == REACT_APP_NO ? true : false;\r\n }\r\n }\r\n\r\n const sameValue = riderCategory.filter(rider => rider.categoryName === categoryName);\r\n if (sameValue[0]) {\r\n let value = valueAmount != sameValue[0].faceAmountText ?\r\n valueAmount : sameValue[0].faceAmountText;\r\n changeField = sameValue[0].changeField;\r\n let valueTemp = value;\r\n if (changeField && categoryName == REACT_APP_BASIC_PLAN) {\r\n value = this.sliderCardService.getInsuranceAmount(value, categoryName,\r\n type, selectedInsuredCategory, minVal, false, isLaboratoryTest);\r\n if (valueTemp != value) {\r\n this.loadDataRider(value, true);\r\n }\r\n }\r\n value = this.getNumberFormat(value);\r\n this.setState({ valueAmount: value, refresh: true, changeField: false });\r\n changeField = false;\r\n if (this.props.type == 'sliderMultiple' && sameValue[0].faceAmountText == null) {\r\n this.loadDataRider(value, true);\r\n } else {\r\n if (changeField && categoryName == REACT_APP_BASIC_PLAN) {\r\n this.loadDataRider(value);\r\n }\r\n }\r\n } else {\r\n let amount = this.props.sliderType.faceAmount;\r\n if (changeField && categoryName == REACT_APP_BASIC_PLAN) {\r\n amount = this.sliderCardService.getInsuranceAmount(amount, categoryName,\r\n type, selectedInsuredCategory, minVal, false, isLaboratoryTest);\r\n\r\n if (this.props.sliderType.faceAmount != amount) {\r\n this.loadDataRider(amount, true);\r\n }\r\n }\r\n amount = this.getNumberFormat(amount);\r\n this.setState({ valueAmount: amount, refresh: false, changeField: false });\r\n this.loadDataRider(amount);\r\n }\r\n this.setState({\r\n showField: this.props.sliderType.maxFaceAmountSlider > 1 ? true : false,\r\n isLaboratoryTest: isLaboratoryTest\r\n });\r\n }\r\n\r\n /**\r\n * Function generates quantity format.\r\n * @param {number} value value to convert\r\n */\r\n getNumberFormat(value) {\r\n value = Number(value).toFixed(1).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n value = value.toString().substring(0, value.indexOf('.'));\r\n return value;\r\n }\r\n\r\n /**\r\n * Function that obtains the amount of the selected riders \r\n * @returns {number} selected rider value \r\n */\r\n getFaceAmountText() {\r\n let amount = this.props.sliderType.faceAmountText;\r\n let faceAmount = this.props.sliderType.faceAmount;\r\n if (amount != null) {\r\n if (Number(faceAmount) > 1) {\r\n return `$${amount}`;\r\n }\r\n return '';\r\n }\r\n }\r\n\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n }\r\n\r\n /**\r\n * Function that updates the value of the selected rider and adds it to the list of selected categories.\r\n * @param {Int} faceAmount selected amount from slider\r\n */\r\n loadDataRider = (faceAmount, isChange) => {\r\n let { categoryName, type } = this.props;\r\n let { selectedInsuredCategory, changeField } = this.state;\r\n let isSelected = type === 'sliderMultiple' ? 'sliderSelected' : '';\r\n faceAmount = faceAmount.toString().replaceAll(\",\", \"\");\r\n\r\n let request = {\r\n categoryName: categoryName, type: type, value: faceAmount, selectedInsuredCategory: selectedInsuredCategory, isSelected: isSelected,\r\n changeField: changeField\r\n };\r\n\r\n this.selectedRiderListService.SaveRiderCategories(request);\r\n if (isChange) {\r\n this.props.loadRiderCategory();\r\n }\r\n }\r\n\r\n /**\r\n * Function that updates the value of the selected rider and adds it to the list of selected categories.\r\n * @param {Event} event change value of slider field\r\n */\r\n handleInputChange = (event) => {\r\n let faceAmount = event.target.value;\r\n this.setState({\r\n valueAmount: faceAmount\r\n });\r\n }\r\n /**\r\n * Function that adds it to the list of selected categories.\r\n */\r\n handleClickSlider = () => {\r\n let faceAmount = this.state.valueAmount;\r\n let isLaboratoryTest = this.state.isLaboratoryTest;\r\n let { minFaceAmountText, maxFaceAmountText } = this.props.sliderType;\r\n let minVal = this.sliderCardService.getAmountText(minFaceAmountText);\r\n let maxVal = isLaboratoryTest != true ? this.sliderCardService.getAmountText(maxFaceAmountText) :\r\n REACT_APP_MAX_TEST;\r\n const response = this.sliderCardService.HandleInputChange(faceAmount, minVal, maxVal);\r\n let { validRange, errorMessageRange } = response;\r\n this.setState({ validRange: validRange, errorMessageRange: errorMessageRange });\r\n this.props.handleValidRange(validRange);\r\n\r\n if (validRange) {\r\n this.loadDataRider(faceAmount, true);\r\n }\r\n }\r\n /**\r\n * @param {number} value, value that will receive currency format\r\n * @returns the value in currency format\r\n */\r\n getAmountForSlider(value) {\r\n value = Math.trunc(value);\r\n return `$${value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")}`;\r\n }\r\n\r\n\r\n\r\n /**\r\n * Function that controls the event of the insurance amount field. \r\n * @param {Event} event text input event\r\n */\r\n handleChangeBonus = (event) => {\r\n let { minFaceAmountText, maxFaceAmountText } = this.props.sliderType;\r\n let isLaboratoryTest = this.state.isLaboratoryTest;\r\n\r\n let maxVal = isLaboratoryTest != true ? this.sliderCardService.getAmountText(maxFaceAmountText) :\r\n this.sliderCardService.getAmountText(REACT_APP_MAX_TEST);\r\n\r\n let minVal = this.sliderCardService.getAmountText(minFaceAmountText);\r\n\r\n const response = this.sliderCardService.HandleInputChange(event.target.value, minVal, maxVal);\r\n let { validRange, errorMessageRange, valueRange } = response;\r\n this.setState({\r\n validRange: validRange, errorMessageRange: errorMessageRange, valueAmount: valueRange\r\n });\r\n this.props.handleValidRange(validRange);\r\n }\r\n\r\n /**\r\n * Function that sends the amount of the selected insurance to the service.\r\n */\r\n handleBlurBonus = () => {\r\n if (this.state.validRange) {\r\n let faceAmount = this.state.valueAmount;\r\n this.loadDataRider(faceAmount, true);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n {this.state.showField &&\r\n \r\n \r\n
    \r\n this.handleChangeBonus(event)}\r\n onBlur={this.handleBlurBonus}\r\n value={this.state.valueAmount}\r\n required={true}\r\n placeholder={'Monto del Seguro'}\r\n className={this.state.validRange ? ('form-control custom-input') : ('form-control is-invalid is-invalid-border custom-input')}\r\n />\r\n
    \r\n {!this.state.validRange ?\r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n {!this.state.validRange ?\r\n
    \r\n {this.state.errorMessageRange} \r\n
    \r\n : null\r\n }\r\n {this.props.sliderType.validationMessageIsVisible &&\r\n
    \r\n {this.props.sliderType.validationMessage}\r\n
    \r\n }\r\n \r\n \r\n
    \r\n

    SubTotal: {this.props.premium}

    \r\n

    {this.props.premium}

    \r\n
    \r\n \r\n
    \r\n }\r\n {!this.state.showField &&\r\n (\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n

    SubTotal: {this.props.premium}

    \r\n

    {this.props.premium}

    \r\n
    \r\n \r\n
    \r\n )\r\n }\r\n \r\n )\r\n }\r\n}\r\nexport default SliderCard;","import React from 'react';\r\nimport './SelectedRider';\r\nimport { Col, Row } from \"react-bootstrap\";\r\nimport { SelectedRiderListService } from '../../Services/SelectedRiderListService';\r\nimport './SelectedRider.css';\r\nimport { JSONRider } from '../../Services/JSONRider';\r\nimport { JSONExchangeTSV } from \"../../Services/JSONExchangeTSV\";\r\n\r\nconst { REACT_APP_LIST_ID_PRODUCT } = process.env;\r\n\r\nexport class SelectedRider extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n this.jsonRider = new JSONRider();\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.state = {\r\n value: 0,\r\n selectedInsuredCategory: this.props.selectedInsuredCategory,\r\n options: this.props.options,\r\n messageRange: '', isRange: true,\r\n isBasicPlan: this.props.isBasicPlan != undefined ? this.props.isBasicPlan : false\r\n };\r\n }\r\n\r\n /**\r\n * Method that loads selected options and updates which section to render\r\n */\r\n componentDidMount() {\r\n let { categoryName, type } = this.props;\r\n let riderCategory = this.jsonRider.getCurrentRiders();\r\n let { faceAmountText, selectedInsuredCategory } = '';\r\n\r\n const sameValue = riderCategory.filter(rider => rider.categoryName === categoryName);\r\n\r\n if (sameValue[0]) {\r\n let value = this.getValueRider();\r\n selectedInsuredCategory = sameValue[0].selectedInsuredCategoryPlanCodePrefix === this.props.selectedInsuredCategory ?\r\n sameValue[0].selectedInsuredCategoryPlanCodePrefix : this.props.selectedInsuredCategory;\r\n\r\n if (type === 'sliderMultiple' || type === 'availableSpecs') {\r\n faceAmountText = (value !== sameValue[0].selectedSpecDescription && sameValue[0].selectedSpecDescription != null) ?\r\n sameValue[0].selectedSpecDescription : value;\r\n } else {\r\n if (type === 'insuredCategories') {\r\n faceAmountText = sameValue[0].selectedInsuredCategoryPlanCodePrefix != value ?\r\n sameValue[0].selectedInsuredCategoryPlanCodePrefix : value;\r\n } else {\r\n faceAmountText = value !== sameValue[0].faceAmountText ? sameValue[0].faceAmountText : value;\r\n }\r\n }\r\n this.setState({ value: faceAmountText, selectedInsuredCategory: selectedInsuredCategory });\r\n } else {\r\n this.loadDataRider();\r\n }\r\n }\r\n\r\n /**\r\n * gets the respective value of the field of type selection.\r\n */\r\n getValueRider() {\r\n let options = this.getOptions();\r\n let isRange = this.state.isRange;\r\n let messageRange = '';\r\n\r\n if (this.props.options[0].display != undefined) {\r\n if (options.length == 0) {\r\n options.push({ 'display': '', 'value': '0' });\r\n isRange = false;\r\n messageRange = 'El monto permitido para este producto ha sobrepasado el límite';\r\n this.props.handleValidRange(false);\r\n }\r\n }\r\n\r\n this.setState({ options: options, isRange: isRange, messageRange: messageRange });\r\n return options[0].display != undefined ? options[0].value :\r\n options[0].name != undefined ? options[0].planCodePrefix :\r\n options[0].description != undefined ? options[0].description : null;\r\n }\r\n\r\n /**\r\n * Function that gets options from the supplement.\r\n */\r\n getOptions() {\r\n let { premiumAmount } = this.props;\r\n let maxPremium = premiumAmount != undefined ? premiumAmount.maxPremium : 0;\r\n let premium = premiumAmount != undefined ? premiumAmount.premium : 0;\r\n let minPremium = 0;\r\n let newOptions = this.props.options;\r\n\r\n if (Number(premium) > 0) {\r\n let premiumAmount = Number(maxPremium - premium);\r\n let idProductJSON = Number(this.jsonExchangeTSV.getCurrentSelectedProduct().id_product);\r\n const list = JSON.parse(REACT_APP_LIST_ID_PRODUCT);\r\n\r\n let product = list.filter(product => Number(product.id_product) === idProductJSON)[0];\r\n\r\n if (this.props.options[0].display != undefined) {\r\n if (product != null && this.state.isBasicPlan) {\r\n newOptions = [];\r\n this.state.options.map((option, index) => {\r\n if (index == 0) {\r\n minPremium = Number(option.value);\r\n }\r\n if (Number(option.value) <= premiumAmount && minPremium <= Number(option.value)) {\r\n newOptions.push(option);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n return newOptions;\r\n }\r\n\r\n /**\r\n * Function that updates the value of the selected rider and adds it to the list of selected categories.\r\n */\r\n loadDataRider = () => {\r\n let value = this.getValueRider();\r\n this.initialization(value);\r\n }\r\n\r\n /**\r\n * Function that updates the value of the selected rider and adds it to the list of selected categories.\r\n * @param {Int} value quantity selected in selection field\r\n */\r\n initialization = (value, change) => {\r\n let { categoryName, type } = this.props;\r\n let { selectedInsuredCategory } = this.state;\r\n this.setState({ value: value });\r\n let isSelected = type === 'sliderMultiple' ? 'select' : '';\r\n let request = { categoryName: categoryName, type: type, value: value, selectedInsuredCategory: selectedInsuredCategory, isSelected: isSelected };\r\n let rider = this.selectedRiderListService.SaveRiderCategories(request);\r\n if (change) {\r\n this.props.loadRiderCategory();\r\n }\r\n }\r\n\r\n /**\r\n * Function that updates the value of the selected rider and adds it to the list of selected categories.\r\n * @param {Event} event change value of selection field\r\n */\r\n handleInputChange = (event) => {\r\n let value = event.target.value\r\n this.initialization(value, true);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n {!this.state.isRange &&\r\n {this.state.messageRange} \r\n }\r\n
    \r\n \r\n \r\n
    \r\n

    SubTotal: {this.props.premium}

    \r\n

    {this.props.premium}

    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React from 'react';\r\nimport './SelectedRider';\r\nimport { Col, Row } from \"react-bootstrap\";\r\nimport { SelectedRiderListService } from '../../Services/SelectedRiderListService';\r\nimport './SelectedRider.css';\r\nimport { JSONRider } from '../../Services/JSONRider';\r\n\r\nexport class SelectedRiderMultiple extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n this.jsonRider = new JSONRider();\r\n this.state = {\r\n valueOptions: 0,\r\n selectedInsuredCategory: this.props.selectedInsuredCategory\r\n };\r\n }\r\n\r\n /**\r\n * Method that loads selected options and updates which section to render\r\n */\r\n componentDidMount() {\r\n let { categoryName, type, options, selectedInsuredCategory } = this.props;\r\n let riderCategory = this.jsonRider.getCurrentRiders();\r\n let { faceAmountText, insuredCategory } = '';\r\n let value = options[0].display != undefined ? options[0].value : null;\r\n\r\n const sameValue = riderCategory.filter(rider => rider.categoryName === categoryName);\r\n\r\n if (sameValue[0]) {\r\n let prefix = sameValue[0].selectedInsuredCategoryPlanCodePrefix;\r\n insuredCategory = prefix === selectedInsuredCategory ? prefix : selectedInsuredCategory;\r\n\r\n faceAmountText = value !== sameValue[0].faceAmountText ? sameValue[0].faceAmountText : value;\r\n this.setState({ valueOptions: faceAmountText, selectedInsuredCategory: insuredCategory });\r\n\r\n } else {\r\n this.initialization(value, selectedInsuredCategory);\r\n }\r\n }\r\n\r\n /**\r\n * Function that updates the value of the selected rider and adds it to the list of selected categories.\r\n * @param {Int} value quantity selected in selection field\r\n */\r\n initialization = (value, selectedInsuredCategory, isChange) => {\r\n let { categoryName } = this.props;\r\n let type = \"multiple\";\r\n let request = { categoryName: categoryName, type: type, value: value, selectedInsuredCategory: selectedInsuredCategory };\r\n let rider = this.selectedRiderListService.SaveRiderCategories(request);\r\n if (isChange) {\r\n this.props.loadRiderCategory();\r\n }\r\n }\r\n\r\n /**\r\n * Function that updates the value of the selected rider and adds it to the list of selected categories.\r\n * @param {Event} event change value of selection field\r\n */\r\n handleInputChangeInsured = (event) => {\r\n let value = event.target.value\r\n this.setState({ selectedInsuredCategory: value });\r\n this.initialization(this.state.valueOptions, value, true);\r\n }\r\n\r\n /**\r\n * Function that updates the value of the selected rider and adds it to the list of selected categories.\r\n * @param {Event} event change value of selection field\r\n */\r\n handleInputChangeOptions = (event) => {\r\n let value = event.target.value\r\n this.setState({ valueOptions: value });\r\n this.initialization(value, this.state.selectedInsuredCategory, true);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n

    SubTotal: {this.props.premium}

    \r\n

    {this.props.premium}

    \r\n
    \r\n \r\n
    \r\n )\r\n }\r\n}","import React from 'react';\r\nimport { SliderCard } from '../../components/SliderCard';\r\nimport { SelectedRider, SelectedRiderMultiple } from '../SelectedRider';\r\n\r\nexport class FieldRider extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n componentDidMount() {\r\n }\r\n render() {\r\n const { type, rider, id, premium, premiumAmount, isBasicPlan } = this.props;\r\n\r\n let element = null;\r\n\r\n switch (type) {\r\n\r\n case ('sliderMultiple'):\r\n let sliderTypeMultiple = {\r\n faceAmount: rider.faceAmount, faceAmountText: rider.faceAmountText,\r\n faceAmountSliderIsVisible: rider.faceAmountSliderIsVisible, faceAmountSliderStep: rider.faceAmountSliderStep,\r\n isOptional: rider.isOptional, maxFaceAmountText: rider.maxFaceAmountText, maxFaceAmountSlider: rider.maxFaceAmount_Slider,\r\n minFaceAmountText: rider.minFaceAmountText, minFaceAmountSlider: rider.minFaceAmount_Slider,\r\n validationMessage: rider.validationMessage,\r\n validationMessageIsVisible: rider.validationMessageIsVisible, isValid: rider.isValid\r\n };\r\n element = (\r\n <>\r\n {this.props.show !== undefined && this.props.show ? null :\r\n \r\n }\r\n \r\n\r\n \r\n );\r\n break;\r\n case ('slider'):\r\n let sliderType = {\r\n faceAmount: rider.faceAmount, faceAmountText: rider.faceAmountText,\r\n faceAmountSliderIsVisible: rider.faceAmountSliderIsVisible, faceAmountSliderStep: rider.faceAmountSliderStep,\r\n isOptional: rider.isOptional, maxFaceAmountText: rider.maxFaceAmountText, maxFaceAmountSlider: rider.maxFaceAmount_Slider,\r\n minFaceAmountText: rider.minFaceAmountText, minFaceAmountSlider: rider.minFaceAmount_Slider,\r\n validationMessage: rider.validationMessage,\r\n validationMessageIsVisible: rider.validationMessageIsVisible, isValid: rider.isValid\r\n };\r\n\r\n element = (\r\n \r\n );\r\n break;\r\n case ('optionsSelect'):\r\n element = (\r\n \r\n );\r\n break;\r\n case ('categoriesSelect'):\r\n element = (\r\n \r\n );\r\n break;\r\n case ('selectMultiple'):\r\n element = (\r\n <>\r\n < SelectedRiderMultiple\r\n optionsInsured={rider.insuredCategories}\r\n key={rider.categoryName}\r\n loadRiderCategory={this.props.loadRiderCategory}\r\n categoryName={rider.categoryName}\r\n type={'selectMultiple'}\r\n selectedInsuredCategory={rider.selectedInsuredCategory.planCodePrefix}\r\n options={rider.faceAmountSpecification.faceAmountOptions}\r\n premiumAmount={premiumAmount} isBasicPlan={isBasicPlan}\r\n handleValidRange={this.props.handleValidRange}\r\n premium={premium} />\r\n \r\n );\r\n break;\r\n case ('specsSelect'):\r\n element = (\r\n <>\r\n \r\n \r\n );\r\n break;\r\n default:\r\n element = null;\r\n break;\r\n }\r\n return (\r\n
    \r\n {element}\r\n
    \r\n )\r\n }\r\n\r\n}","import { SelectedRiderListService } from './SelectedRiderListService';\r\nimport { JSONRider } from './JSONRider';\r\n\r\nexport class RiderCardService {\r\n\r\n constructor() {\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n this.jsonRider = new JSONRider();\r\n }\r\n\r\n /**\r\n * Add the selected riders to the list of already selected riders.\r\n * @param {Object} request selected riders to add to the list\r\n * @return {Object} The response object to set props and state in the component.\r\n */\r\n HandleInputQuantityChange = (request) => {\r\n let response = {\r\n selectedCheckboxes: [],\r\n isActive: false,\r\n rider: {}\r\n }\r\n let value = request.event.target.value === undefined ? '' : request.event.target.value;\r\n let selectCategory = request.selectedCheckboxes;\r\n let isActiveCategory = request.isActive;\r\n\r\n if (selectCategory.length === 0) {\r\n selectCategory.push(value);\r\n isActiveCategory = true;\r\n } else {\r\n const sameValue = selectCategory.filter(selected => selected === value);\r\n if (sameValue[0]) {\r\n let indexOf = selectCategory.indexOf(sameValue[0]);\r\n selectCategory.splice(indexOf, 1);\r\n isActiveCategory = false;\r\n } else {\r\n selectCategory.push(value);\r\n isActiveCategory = true;\r\n }\r\n }\r\n let riderCategory = this.jsonRider.getCurrentRiders();\r\n\r\n let rider = null;\r\n if (request.type === null) {\r\n let requestRider = {\r\n categoryName: value, type: request.type, value: null,\r\n selectedInsuredCategory: request.planCodePrefix\r\n };\r\n rider = this.selectedRiderListService.SaveRiderCategories(requestRider);\r\n } else {\r\n rider = this.selectedRiderListService.GetCategory(value, riderCategory);\r\n if (rider != null) {\r\n if (!isActiveCategory) {\r\n rider.isActive = false;\r\n } else {\r\n rider.isActive = true;\r\n }\r\n this.selectedRiderListService.GetRiderCategories(rider);\r\n }\r\n }\r\n\r\n if (rider == null) {\r\n let requestRider = {\r\n categoryName: value, type: request.type, value: null,\r\n selectedInsuredCategory: request.planCodePrefix\r\n };\r\n rider = this.selectedRiderListService.SaveRiderCategories(requestRider);\r\n }\r\n\r\n response.selectedCheckboxes = selectCategory;\r\n response.isActive = isActiveCategory;\r\n response.rider = rider;\r\n\r\n return response;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport './RiderCard.css';\r\nimport { FieldRider } from '../FieldRider';\r\nimport { RiderCardService } from '../../Services/RiderCardService';\r\nimport { JSONRider } from '../../Services/JSONRider';\r\nimport { SelectedRiderListService } from '../../Services/SelectedRiderListService';\r\nimport { ModalInfo } from '../ModalInfo';\r\n\r\nconst { REACT_APP_IDTSVCATEGORY_LIFE, REACT_APP_BASIC_PLAN } = process.env;\r\n\r\nexport class RiderCard extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.riderCardService = new RiderCardService();\r\n this.jsonRider = new JSONRider();\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n this.state = {\r\n selectedCheckboxes: [],\r\n isActive: this.props.categoryName === REACT_APP_BASIC_PLAN ? true : this.props.rider.isActive,\r\n isOptional: this.props.categoryName === REACT_APP_BASIC_PLAN ? false : this.props.rider.isOptional,\r\n riderDetails: this.props.riderDetails, premium: null,\r\n isBasicPlan: this.props.categoryName === REACT_APP_BASIC_PLAN ? true : false,\r\n description: this.props.rider.helpTip != \"\",\r\n modalOptions: { show: false, title: '', description: '' }\r\n };\r\n }\r\n\r\n /**\r\n * Function that obtains the amount of the premium of the selected supplement.\r\n */\r\n getPremium() {\r\n let { riderDetails } = this.state;\r\n if (riderDetails.table != undefined) {\r\n riderDetails.table.map((rider, index) => {\r\n let categoryName = this.props.categoryName.includes(rider[1]);\r\n if (index > 0 && categoryName) {\r\n this.setState({ premium: rider[3] != undefined ? rider[3] : null });\r\n }\r\n });\r\n }\r\n }\r\n /**\r\n * Check if the rider is stored in local storage if it is, \r\n * the component is rendered with that rider\r\n */\r\n componentDidMount() {\r\n let selectedCheckboxes = this.state.selectedCheckboxes;\r\n let { categoryName } = this.props;\r\n let riderCategory = this.jsonRider.getCurrentRiders();\r\n this.getPremium();\r\n riderCategory.forEach(rider => {\r\n if (rider.isActive) {\r\n selectedCheckboxes.push(rider.categoryName);\r\n }\r\n });\r\n const sameValue = riderCategory.filter(rider => rider.categoryName === categoryName);\r\n if (sameValue[0]) {\r\n if (sameValue[0].isActive) {\r\n if(sameValue[0].faceAmountText == null){\r\n this.activateSupplement(); \r\n }\r\n this.setState({ isActive: true });\r\n\r\n } else {\r\n this.setState({ isActive: false });\r\n }\r\n } else {\r\n if (this.state.isActive) {\r\n selectedCheckboxes.push(categoryName);\r\n this.activateSupplement();\r\n }\r\n }\r\n this.setState({ selectedCheckboxes: selectedCheckboxes });\r\n }\r\n\r\n /**\r\n * Handle select active supplement\r\n */\r\n activateSupplement = () => {\r\n let { categoryName, type, rider } = this.props;\r\n let requestRider = {\r\n categoryName: categoryName, type: type, value: rider.faceAmount,\r\n selectedInsuredCategory: rider.selectedInsuredCategory.planCodePrefix\r\n };\r\n this.selectedRiderListService.SaveRiderCategories(requestRider);\r\n \r\n //this.props.loadRiderCategory();\r\n }\r\n\r\n /**\r\n * Handles the change in an entry and updates the value of the selected rider\r\n * @param {Event} event change value of check field\r\n */\r\n changeCategoryName = (event) => {\r\n let request = {\r\n event: event,\r\n selectedCheckboxes: this.state.selectedCheckboxes,\r\n isActive: this.state.isActive,\r\n type: this.props.type,\r\n planCodePrefix: this.props.rider.selectedInsuredCategory.planCodePrefix\r\n };\r\n let response = this.riderCardService.HandleInputQuantityChange(request);\r\n this.setState({\r\n selectedCheckboxes: response.selectedCheckboxes,\r\n isActive: response.isActive\r\n });\r\n\r\n if (response.rider != null) {\r\n this.props.loadRiderCategory();\r\n }\r\n }\r\n\r\n /**\r\n * Renders a modal with de information of each answer option.\r\n */\r\n showModal(title, description) {\r\n let modalOptions = { show: true, title: title, description: description };\r\n this.setState({ modalOptions: modalOptions });\r\n }\r\n\r\n /**\r\n * Close the modal with de information of each answer option.\r\n */\r\n closeModal = () => {\r\n let modalOptions = { show: false };\r\n this.setState({\r\n modalOptions: modalOptions\r\n });\r\n };\r\n render() {\r\n const { idTSVCategory, categoryName } = this.props;\r\n const { modalOptions } = this.state;\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.state.isActive &&\r\n (\r\n \r\n )\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n {modalOptions.show ?\r\n :\r\n null}\r\n \r\n )\r\n }\r\n}\r\nexport default RiderCard;","import React from \"react\";\r\nimport { LoadingPage } from \"../../pages/LoadingPage\";\r\nimport { Card } from \"react-bootstrap\";\r\nimport { SelectedRiderListService } from \"../../Services/SelectedRiderListService\";\r\nimport { ParameterService } from \"../../Services/ParameterService\";\r\nimport './SelectedRiderList.css';\r\n\r\nconst { REACT_APP_PAYMENT_MODE } = process.env;\r\n\r\nexport class PaymentDetails extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n this.parameterService = new ParameterService();\r\n this.state = {\r\n loading: true,\r\n value: 0,\r\n paymentsTypes: [],\r\n refresh: false,\r\n payment: { paymentMod: null, modeIntervals: null, paymentType: null, methodKey: null }\r\n };\r\n }\r\n\r\n /**\r\n * Function that initializes the payment method.\r\n * @param {String} text Description of the payment method\r\n * @param {String} value Payment method value\r\n */\r\n initializePayment = async (text, value) => {\r\n let paymentType = this.state.payment;\r\n\r\n if (this.props.idPayment === REACT_APP_PAYMENT_MODE) {\r\n paymentType.paymentMod = text;\r\n paymentType.modeIntervals = value;\r\n } else {\r\n paymentType.paymentType = text;\r\n paymentType.methodKey = value;\r\n }\r\n await this.selectedRiderListService.SavePaymentLocalstorage(paymentType, this.props.idPayment);\r\n let response = this.selectedRiderListService.GetPaymentOfProductPayment(paymentType);\r\n this.setState({ payment: response, loading: false });\r\n\r\n if (this.props.refreshTypeData) {\r\n this.props.refreshTypeData();\r\n } else {\r\n this.props.refreshData();\r\n }\r\n }\r\n\r\n /**\r\n * This method is used to load the payment type.\r\n */\r\n loadDataPayment = () => {\r\n const idParameterType = { \"idParameterValue\": Number(this.props.idPayment) };\r\n this.parameterService.GetAllParameterById(idParameterType).then(result => {\r\n let refresh = !this.state.refresh;\r\n if (result.statusResponse) {\r\n this.setState({ paymentsTypes: result.data, loading: false, refresh: refresh });\r\n }\r\n }).catch(error => {\r\n if (error.error != null) {\r\n console.log(\"Ha ocurrido un error al cargar los métodos de pago\", error);\r\n this.props.handleErrorInComponent(true);\r\n }\r\n this.setState({ loading: false });\r\n });\r\n }\r\n\r\n /**\r\n * This method upload the payment method information\r\n */\r\n componentDidMount() {\r\n this.loadDataPayment();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevState.refresh !== this.state.refresh) {\r\n this.getDataLocalStorage();\r\n }\r\n }\r\n\r\n /**\r\n * Function that obtains the payment data saved in the localstorage \r\n */\r\n getDataLocalStorage = () => {\r\n let { paymentsTypes } = this.state;\r\n let response = this.selectedRiderListService.GetPayment();\r\n if (response.modeIntervals != undefined) {\r\n let valuePayment = this.props.idPayment === REACT_APP_PAYMENT_MODE ? response.modeIntervals : response.methodKey;\r\n this.setState({ value: valuePayment, loading: false });\r\n\r\n if (this.props.refreshTypeData) {\r\n this.props.refreshTypeData();\r\n } else {\r\n this.props.refreshData();\r\n }\r\n } else {\r\n let data = paymentsTypes != null && paymentsTypes.length > 0 ? paymentsTypes : null;\r\n this.initializePayment(data != null ? data[0].name : null, data != null ? data[0].value : null);\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Function that changes the payment typr that has been selected.\r\n * @param {Event} event change value of selection field\r\n */\r\n changePaymentType(event) {\r\n let text = event.target.options[event.target.selectedIndex].text;\r\n let value = event.target.value;\r\n this.initializePayment(text, value);\r\n this.setState({ value: value });\r\n if (this.props.handledRider) {\r\n this.props.handledRider();\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return (\r\n
    \r\n );\r\n } else {\r\n return (<>\r\n \r\n {this.props.text}\r\n \r\n
    \r\n this.changePaymentType(event)}\r\n value={this.state.value} >\r\n \r\n {this.state.paymentsTypes.map((paymentType, key) =>\r\n \r\n )}\r\n \r\n
    \r\n )\r\n }\r\n }\r\n}\r\nexport default PaymentDetails;","import { JSONExchangeTSV } from \"./JSONExchangeTSV\";\r\n\r\nexport class SelectedRisksServices {\r\n\r\n constructor() {\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n }\r\n\r\n \r\n /**\r\n * Gets the risk questions and answers from local storage and set th request object needed by the api.\r\n * @return {Object} The object request needed in the api.\r\n */\r\n getSelectedRisksRequestObjectTest = () => {\r\n let request = {\r\n \"idSelectedProduct\": 30,\r\n \"riskQuestions\": [\r\n {\r\n \"idQuestion\": 375,\r\n \"IdAnswerOptionRisk\": 52,\r\n \"valueAnswer\": \"50,000\",\r\n \"baseQuestionRisk\": false,\r\n \"subQuestionList\": null\r\n },\r\n {\r\n \"idQuestion\": 376,\r\n \"IdAnswerOptionRisk\": null,\r\n \"baseQuestionRisk\": true,\r\n \"subQuestionList\": [\r\n {\r\n \"idQuestion\": 181,\r\n \"questionText\": \"Nombre\",\r\n \"questionType\": 2,\r\n \"baseQuestion\": true,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 517,\r\n \"valueAnswer\": \"a\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 182,\r\n \"questionText\": \"Apellido Paterno\",\r\n \"questionType\": 2,\r\n \"baseQuestion\": true,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 518,\r\n \"valueAnswer\": \"a\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 384,\r\n \"questionText\": \"Monto deseado\",\r\n \"questionType\": 10,\r\n \"baseQuestion\": false,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 57,\r\n \"valueAnswer\": \"70,000\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 377,\r\n \"IdAnswerOptionRisk\": null,\r\n \"baseQuestionRisk\": false,\r\n \"subQuestionList\": [\r\n {\r\n \"idQuestion\": 181,\r\n \"questionText\": \"Nombre\",\r\n \"questionType\": 2,\r\n \"baseQuestion\": true,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 517,\r\n \"valueAnswer\": \"a\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 182,\r\n \"questionText\": \"Apellido Paterno\",\r\n \"questionType\": 2,\r\n \"baseQuestion\": true,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 517,\r\n \"valueAnswer\": \"a\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 385,\r\n \"questionText\": \"¿Ha usado?\",\r\n \"questionType\": 3,\r\n \"baseQuestion\": false,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 68,\r\n \"valueAnswer\": \"No\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 378,\r\n \"IdAnswerOptionRisk\": null,\r\n \"baseQuestionRisk\": false,\r\n \"subQuestionList\": [\r\n {\r\n \"idQuestion\": 181,\r\n \"questionText\": \"Nombre\",\r\n \"questionType\": 2,\r\n \"baseQuestion\": true,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 517,\r\n \"valueAnswer\": \"a\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 182,\r\n \"questionText\": \"Apellido Paterno\",\r\n \"questionType\": 2,\r\n \"baseQuestion\": true,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 517,\r\n \"valueAnswer\": \"a\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 386,\r\n \"questionText\": \"¿Está tomando?\",\r\n \"questionType\": 3,\r\n \"baseQuestion\": false,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 71,\r\n \"valueAnswer\": \"No\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 379,\r\n \"IdAnswerOptionRisk\": null,\r\n \"baseQuestionRisk\": false,\r\n \"subQuestionList\": [\r\n {\r\n \"idQuestion\": 181,\r\n \"questionText\": \"Nombre\",\r\n \"questionType\": 2,\r\n \"baseQuestion\": true,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 517,\r\n \"valueAnswer\": \"a\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 182,\r\n \"questionText\": \"Apellido Paterno\",\r\n \"questionType\": 2,\r\n \"baseQuestion\": true,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 517,\r\n \"valueAnswer\": \"a\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 387,\r\n \"questionText\": \"¿Practica?\",\r\n \"questionType\": 3,\r\n \"baseQuestion\": false,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 73,\r\n \"valueAnswer\": \"No\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 388,\r\n \"IdAnswerOptionRisk\": null,\r\n \"baseQuestionRisk\": false,\r\n \"subQuestionList\": [\r\n {\r\n \"idQuestion\": 389,\r\n \"questionText\": \"¿Cuál es su valor de recargo?\",\r\n \"questionType\": 10,\r\n \"baseQuestion\": false,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 78,\r\n \"valueAnswer\": \"0.5\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 390,\r\n \"IdAnswerOptionRisk\": null,\r\n \"baseQuestionRisk\": false,\r\n \"subQuestionList\": [\r\n {\r\n \"idQuestion\": 181,\r\n \"questionText\": \"Nombre\",\r\n \"questionType\": 2,\r\n \"baseQuestion\": true,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 517,\r\n \"valueAnswer\": \"a\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 182,\r\n \"questionText\": \"Apellido Paterno\",\r\n \"questionType\": 2,\r\n \"baseQuestion\": true,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 517,\r\n \"valueAnswer\": \"a\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n },\r\n {\r\n \"idQuestion\": 391,\r\n \"questionText\": \"¿Está dispuesto?\",\r\n \"questionType\": 3,\r\n \"baseQuestion\": false,\r\n \"answerList\": [\r\n {\r\n \"idAnswer\": 81,\r\n \"valueAnswer\": \"No\",\r\n \"idInsuredPerson\": 1\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ],\r\n \"insuredPersons\": [\r\n {\r\n \"idInsured\": 1,\r\n \"primaryInsured\": true,\r\n \"dateOfBirth\": \"1992-09-10T00:00:00Z\",\r\n \"relationship\": \"Yo\",\r\n \"age\": 30,\r\n \"name\": \"a\"\r\n }\r\n ]\r\n }\r\n return request;\r\n }\r\n /**\r\n * Gets the risk questions and answers from local storage and set th request object needed by the api.\r\n * @return {Object} The object request needed in the api.\r\n */\r\n getSelectedRisksRequestObject = () => {\r\n let request = {\r\n idSelectedProduct: null,\r\n riskQuestions: null,\r\n insuredPersons: []\r\n };\r\n \r\n let riskQuestions = [];\r\n let jsonRiskQuestions = this.jsonExchangeTSV.getCurrentRisk().risk_questions;\r\n\r\n jsonRiskQuestions.forEach(riskQuestion => {\r\n let riskQuestionTSV = {\r\n idQuestion: null,\r\n IdAnswerOptionRisk: null,\r\n valueAnswer: null,\r\n baseQuestionRisk: null,\r\n subQuestionList: null,\r\n }\r\n riskQuestionTSV.idQuestion = Number(riskQuestion.id_question);\r\n riskQuestionTSV.IdAnswerOptionRisk = riskQuestion.id_answer ? Number(riskQuestion.id_answer) : null;\r\n riskQuestionTSV.valueAnswer = riskQuestion.value_answer;\r\n if (riskQuestion.base_question_risk === null) {\r\n riskQuestionTSV.baseQuestionRisk = null;\r\n } else {\r\n riskQuestionTSV.baseQuestionRisk = riskQuestion.base_question_risk;\r\n }\r\n riskQuestionTSV.subQuestionList = riskQuestion.question_list ?\r\n this.GetMatrixSubQuestions(riskQuestion.question_list) : null;\r\n\r\n riskQuestions.push(riskQuestionTSV);\r\n\r\n });\r\n request.riskQuestions = riskQuestions;\r\n request.idSelectedProduct = Number(this.jsonExchangeTSV.getCurrentSelectedProduct().id_product);\r\n let insuredPersonsArray = this.jsonExchangeTSV.getCurrentInsuredPersons();\r\n for (const insuredPerson of insuredPersonsArray) {\r\n request.insuredPersons.push({\r\n 'idInsured': insuredPerson.id_insured ? insuredPerson.id_insured : insuredPerson.idInsured\r\n ? insuredPerson.idInsured : null,\r\n 'primaryInsured': insuredPerson.primary_insured != undefined ? insuredPerson.primary_insured :\r\n insuredPerson.primaryInsured != undefined ? insuredPerson.primaryInsured : null,\r\n 'dateOfBirth': insuredPerson.date_Of_birth ? insuredPerson.date_Of_birth :\r\n insuredPerson.dateOfBirth ? insuredPerson.dateOfBirth : null,\r\n 'relationship': insuredPerson.relationship ? insuredPerson.relationship : null,\r\n 'age': insuredPerson.age ? insuredPerson.age : null,\r\n 'name': insuredPerson.name ? insuredPerson.name : null\r\n })\r\n };\r\n return request;\r\n }\r\n /**\r\n * Gets the questions and answers of a risk matrix in the format of the api\r\n * @return {Object} The array of questions and asnwers needed in the api.\r\n */\r\n GetMatrixSubQuestions = (subQuestionList) => {\r\n let questionList = [];\r\n for (const subQuestion of subQuestionList) {\r\n let question = {\r\n idQuestion: null, questionText: null, questionType: null,\r\n baseQuestion: null, answerList: null\r\n };\r\n question.idQuestion = subQuestion.id_question ? Number(subQuestion.id_question)\r\n : null;\r\n question.questionType = subQuestion.question_type\r\n ? Number(subQuestion.question_type) : null;\r\n\r\n question.questionText = subQuestion.question_text;\r\n\r\n question.baseQuestion = subQuestion.question_base;\r\n\r\n\r\n for (const answer of subQuestion.answer_list) {\r\n let answerTSV = { idAnswer: null, valueAnswer: null, idInsuredPerson: null };\r\n if (Array.isArray(answer)) {\r\n if (!question.answerList) {\r\n question.answerList = [];\r\n }\r\n if (!answerTSV.answerValueList) {\r\n answerTSV.answerValueList = [];\r\n }\r\n for (const answerValue of answer) {\r\n answerTSV.answerValueList.push({\r\n idAnswer: answerValue.id_answer ? Number(answerValue.id_answer) : null,\r\n valueAnswer: answerValue.value_answer,\r\n idInsuredPerson: answerValue.id_insured\r\n })\r\n }\r\n question.answerList.push(answerTSV);\r\n } else {\r\n if (!question.answerList) {\r\n question.answerList = [];\r\n }\r\n answerTSV.idAnswer = answer.id_answer ? Number(answer.id_answer) : null;\r\n answerTSV.valueAnswer = answer.value_answer;\r\n answerTSV.idInsuredPerson = answer.id_insured;\r\n question.answerList.push(answerTSV);\r\n }\r\n\r\n }\r\n questionList.push(question);\r\n }\r\n\r\n return questionList;\r\n }\r\n}","import { JSONExchangeTSV } from \"./JSONExchangeTSV\";\r\nimport { TokenServices } from \"./TokenServices\";\r\nconst urlBase = process.env.REACT_APP_URL_API_TSV;\r\n\r\nexport class RiskServices {\r\n\r\n constructor() {\r\n this.tokenService = new TokenServices();\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n }\r\n /**\r\n * Determinates the selected risk for a client.\r\n * @param {Object} request The request of questions and answers.\r\n * @return {Promise} A promise from the api.\r\n */\r\n GetSelectedRisks = async (request) => {\r\n const result = { statusResponse: false, data: null, error: null }\r\n await fetch(`${urlBase}Risk/CalculatedSelectedrisks`, {\r\n method: 'POST',\r\n body: JSON.stringify(request),\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${this.tokenService.DecryptToken()}`\r\n }\r\n }).then(async response => {\r\n if (response.ok) { result.statusResponse = true; }\r\n await response.json().then(resultapi => result.data = resultapi);\r\n }).catch(error => console.log(error));\r\n return result;\r\n }\r\n\r\n /**\r\n * Process and save the selected risk from the api in the local storage.\r\n * @param {Array} selectedRisks The selected risks from the api.\r\n */\r\n SaveCalculatedRisksInLocalStorage = (selectedRisks) => {\r\n \r\n let selectedRisksTSV = [];\r\n for (const selectedRisk of selectedRisks) {\r\n selectedRisksTSV.push(\r\n {\r\n 'id_risk': selectedRisk.risk.idRisk ? selectedRisk.risk.idRisk : null,\r\n 'risk_name': selectedRisk.risk.name ? selectedRisk.risk.name : null,\r\n 'id_tsv_risk': selectedRisk.risk.idTSVRisk ? selectedRisk.risk.idTSVRisk : null,\r\n 'id_insured': selectedRisk.insuredPerson.idInsured ?\r\n selectedRisk.insuredPerson.idInsured : null\r\n }\r\n )\r\n };\r\n this.jsonExchangeTSV.setInsuredRisks(selectedRisksTSV);\r\n\r\n }\r\n}","import React from \"react\";\r\nimport { LoadingPage } from \"../../pages/LoadingPage\";\r\nimport { Col, Row, Card } from \"react-bootstrap\";\r\nimport { SelectedRiderListService } from \"../../Services/SelectedRiderListService\";\r\nimport { RatesServiceTSV } from \"../../Services/RatesServiceTSV\";\r\nimport { RiderCard } from \"../RiderCard\";\r\nimport { PaymentDetails } from \"./PaymentDetails\";\r\nimport './SelectedRiderList.css';\r\nimport { SelectedRisksServices } from \"../../Services/SelectedRisksServices\";\r\nimport { RiskServices } from \"../../Services/RiskServices\";\r\nimport { JSONExchangeTSV } from \"../../Services/JSONExchangeTSV\";\r\nimport { InsuranceAplicationServices } from \"../../Services/InsuranceApplicationServices\";\r\nimport { TokenServices } from \"../../Services/TokenServices\";\r\nimport { SelectedProductListServices } from \"../../Services/SelectedProductListServices\";\r\nimport { WebServicesTSV } from \"../../Services/WebServicesTSV\";\r\n\r\nconst { REACT_APP_PAYMENT_TYPE, REACT_APP_PAYMENT_MODE, REACT_APP_IDTSVCATEGORY_LIFE,\r\n REACT_APP_IDTSVCATEGORY_HEALTH, REACT_APP_ID_LIFE, REACT_APP_FREEDOM_TERM_10_YEARS,REACT_APP_ID_TSV_AMOUNT,\r\n REACT_APP_FREEDOM_TERM_15_YEARS, REACT_APP_FREEDOM_TERM_20_YEARS, REACT_APP_FREEDOM_TERM_30_YEARS, REACT_APP_FREEDOM_TERM,\r\n REACT_APP_LIST_ID_PRODUCT, REACT_APP_SSN_QUESTION, REACT_APP_BASIC_PLAN, REACT_APP_URL_TSV_REQUEST } = process.env;\r\n\r\nexport class SelectedRiderList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n this.ratesServiceTSV = new RatesServiceTSV();\r\n this.selectedRisksServices = new SelectedRisksServices();\r\n this.riskServices = new RiskServices();\r\n this.insuranceApplicationServices = new InsuranceAplicationServices();\r\n this.selectedProductlistServices = new SelectedProductListServices();\r\n this.tokenService = new TokenServices();\r\n this.webServicesTSV = new WebServicesTSV();\r\n const familyInfo = this.selectedRiderListService.GetFamilyMember(this.props.idTSVCategory, this.props.idTSVProduct);\r\n let Primary = familyInfo.Primary;\r\n this.state = {\r\n send: false,\r\n urlRedirect: `${REACT_APP_URL_TSV_REQUEST}`,\r\n riders: { minimumPremium: \"\", requiredRiderCategoriesInfo: [], details: {}, applicationData: {} },\r\n loading: true,\r\n refresh: false,\r\n temRisk: Primary.RiskKey,\r\n opcionesTitle: \"Opciones\",\r\n noRiskError: false,\r\n emptyList: null,\r\n idTSVCategory: this.props.idTSVCategory,\r\n productTermList: [],\r\n idTSVProduct: this.props.idTSVProduct,\r\n isTerms: false, isValidRange: true,\r\n riderDetails: [], premium: 0,\r\n premiumAmount: { idProduct: '', maxPremium: 0, premium: 0 }\r\n };\r\n this.riderListFunction = this.riderListFunction.bind(this);\r\n };\r\n\r\n /**\r\n * Function to return to the previous screen.\r\n */\r\n riderListFunction() {\r\n if (this.props.handleClickBackRider) {\r\n this.props.handleClickBackRider();\r\n }\r\n }\r\n getNumber(value) {\r\n let newValue = value.replace(\",\", \"\");\r\n return newValue;\r\n }\r\n /**\r\n * This method is used to load the rider.\r\n */\r\n loadRidersCategory = async (idTSVProduct) => {\r\n try {\r\n let amount = 0;\r\n const familyInfo = this.selectedRiderListService.GetFamilyMember(this.props.idTSVCategory, this.state.idTSVProduct);\r\n let payment = this.selectedRiderListService.GetPayment();\r\n let Primary = familyInfo.Primary;\r\n let listRider = this.selectedRiderListService.GetRiderSelectLocalStorage();\r\n /* if (listRider.length == 0) {\r\n let basicPlan = { \r\n \"categoryName\": REACT_APP_BASIC_PLAN, \r\n \"isActive\": true }\r\n listRider.push(basicPlan);\r\n }\r\n ;*/\r\n let basicPlan ={};\r\n if(this.props.idTSVCategory == REACT_APP_IDTSVCATEGORY_LIFE){\r\n amount = this.jsonExchangeTSV.getQuestionOfProductQuestionsByIdTSV(REACT_APP_ID_TSV_AMOUNT);\r\n if(listRider.length == 0){\r\n basicPlan = { \r\n \"categoryName\": REACT_APP_BASIC_PLAN, \r\n \"isActive\": true,\r\n \"faceAmount\": this.getNumber(amount.value_answer),\r\n \"faceAmountText\": amount.value_answer };\r\n }\r\n }else{\r\n basicPlan = { \r\n \"categoryName\": REACT_APP_BASIC_PLAN, \r\n \"isActive\": true };\r\n }\r\n if (listRider.length == 0) {\r\n listRider.push(basicPlan);\r\n }else{\r\n if(this.props.idTSVCategory == REACT_APP_IDTSVCATEGORY_LIFE){\r\n /* listRider[0]=basicPlan;\r\n this.selectedRiderListService\r\n .modifyRiderBasicPlan(basicPlan);*/\r\n if (Number(this.getNumber(amount.value_answer)) >= 200001) {\r\n let temRisk = Number(listRider[0].faceAmountText) < 200001 ? 'N' : Primary.RiskKey;\r\n if(temRisk !== this.state.temRisk){\r\n let listRiderTem = [];\r\n listRiderTem.push(listRider[0]);\r\n await this.selectedRiderListService.SetRiders(listRiderTem);\r\n listRider = listRiderTem;\r\n } \r\n \r\n Primary.RiskKey = temRisk;\r\n this.setState({temRisk, listRider: listRider});\r\n } \r\n \r\n }\r\n }\r\n let rider = {\r\n \"ProductInfo\": {\r\n \"ProductKey\": idTSVProduct != undefined ? idTSVProduct : this.state.idTSVProduct,\r\n \"PaymentMethodKey\": payment.methodKey === undefined ? \"E\" : payment.methodKey,\r\n \"PaymentModePayments\": payment.modeIntervals === undefined ? 12 : payment.modeIntervals,\r\n \"DeathBenefitCode\": null,\r\n \"FetchDetails\": true,\r\n \"riderCategories\": listRider != null ? listRider : []\r\n },\r\n \"FamilyInfo\": {\r\n \"SeriesAccessCode\": this.props.idTSVCategory,\r\n \"EffectiveDateOverride\": null,\r\n Primary\r\n }\r\n };\r\n\r\n if (this.props.idTSVCategory == REACT_APP_IDTSVCATEGORY_HEALTH) {\r\n let spouse = familyInfo.spouse;\r\n let child = familyInfo.child;\r\n if (spouse !== undefined) {\r\n rider.FamilyInfo.spouse = spouse;\r\n }\r\n if (child !== undefined) {\r\n rider.FamilyInfo.child = child;\r\n }\r\n }\r\n\r\n if (this.props.idTSVCategory == REACT_APP_IDTSVCATEGORY_LIFE) {\r\n let additionalInsured = familyInfo.additionalInsured;\r\n if (additionalInsured !== undefined) {\r\n rider.FamilyInfo.additionalInsured = additionalInsured;\r\n }\r\n };\r\n\r\n const resultLogin = await this.ratesServiceTSV.Login();\r\n if (resultLogin.statusResponse) {\r\n const resultQuote = await this.ratesServiceTSV.QuoteRiders(rider, resultLogin.data.token);\r\n if (resultQuote.statusResponse) {\r\n let data = resultQuote.data;\r\n let applicationData = data.applicationData;\r\n let riderDetails = applicationData.riders != undefined ? applicationData.riders : [];\r\n\r\n let details = data.details;\r\n let illustration = details != undefined ? details.illustrationEmail : details;\r\n let policy = illustration != undefined ? illustration.policyDetails : illustration;\r\n let premiumTotal = policy == undefined ? 0 :\r\n policy.totalPremium != undefined ? policy.totalPremium : 0;\r\n\r\n this.setState({\r\n loading: false, riderDetails: riderDetails, premium: premiumTotal,\r\n riders: {\r\n minimumPremium: data.minimumPremium,\r\n requiredRiderCategoriesInfo: data.requiredRiderCategoriesInfo,\r\n details: data.details !== undefined ? data.details : null,\r\n applicationData: data.applicationData != undefined ? data.applicationData : null\r\n }\r\n });\r\n this.selectedRiderListService\r\n .SaveDetailsAndApplicationData(this.state.riders.details, this.state.riders.applicationData);\r\n } else {\r\n if (resultQuote.error) {\r\n this.props.handleErrorInComponent(true);\r\n }\r\n this.setState({ loading: false });\r\n }\r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n } catch (err) {\r\n this.setState({ loading: false, noRiskError: true });\r\n console.error(err);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * This method upload the information of the riders \r\n */\r\n componentDidMount() {\r\n if (Number(this.jsonExchangeTSV.getCurrentSerie().id_series) === Number(REACT_APP_ID_LIFE)) {\r\n let idProduct = Number(this.jsonExchangeTSV.getCurrentSelectedProduct().id_product);\r\n\r\n if (Number(REACT_APP_FREEDOM_TERM_10_YEARS) == idProduct || Number(REACT_APP_FREEDOM_TERM_15_YEARS) == idProduct ||\r\n Number(REACT_APP_FREEDOM_TERM_20_YEARS) == idProduct || Number(REACT_APP_FREEDOM_TERM_30_YEARS) == idProduct ||\r\n Number(REACT_APP_FREEDOM_TERM) == idProduct) {\r\n\r\n this.setState({ productTermList: this.props.productTermList, isTerms: true });\r\n } else {\r\n this.setState({ isTerms: false });\r\n }\r\n\r\n let request = this.selectedRisksServices.getSelectedRisksRequestObject();\r\n this.setState({ loading: true });\r\n this.riskServices.GetSelectedRisks(request).then(result => {\r\n if (result.statusResponse) {\r\n let risksResponse = result.data;\r\n setTimeout(() => this.setState({ loading: false }), 2000);\r\n if (risksResponse.productError) {\r\n this.setState({ noRiskError: true })\r\n } else {\r\n this.riskServices.SaveCalculatedRisksInLocalStorage(risksResponse.selectedRisks);\r\n }\r\n } else {\r\n this.setState({ loading: false });\r\n this.props.handleErrorInComponent(true);\r\n }\r\n });\r\n \r\n } else {\r\n this.setState({ loading: true });\r\n this.getPolicyTotals();\r\n }\r\n }\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevState.refresh !== this.state.refresh &&\r\n prevState.refreshType !== this.state.refreshType) {\r\n this.setState({ loading: prevState.loading });\r\n this.loadRidersCategory();\r\n }\r\n }\r\n\r\n /**\r\n * Function that obtains the detail of the amount of the policy of the selected product\r\n */\r\n getPolicyTotals = async () => {\r\n let { idTSVProduct } = this.state;\r\n let idProductJSON = Number(this.jsonExchangeTSV.getCurrentSelectedProduct().id_product);\r\n const list = JSON.parse(REACT_APP_LIST_ID_PRODUCT);\r\n\r\n let product = list.filter(product => Number(product.id_product) === idProductJSON)[0];\r\n let questionSSN = this.jsonExchangeTSV.getCurrentProductQuestions();\r\n questionSSN = questionSSN.filter(quesiton => quesiton.question_text.includes(REACT_APP_SSN_QUESTION));\r\n let ssn = questionSSN[0] ? questionSSN[0].value_answer ? questionSSN[0].value_answer : null : null;\r\n let policy = {};\r\n\r\n if (product != undefined && ssn != null) {\r\n let insuredPerson = this.selectedRiderListService.GetPrimaryInsured();\r\n policy = await this.webServicesTSV.PolicyTotals(idTSVProduct, insuredPerson);\r\n if (policy.statusResponse) {\r\n let premiumData = policy.data.data;\r\n this.setState({\r\n premiumAmount: {\r\n idProduct: idTSVProduct,\r\n maxPremium: premiumData.benefitMaximunFaceAmount,\r\n premium: premiumData.totalAmount\r\n }, loading: false\r\n });\r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n return policy\r\n }\r\n\r\n /**\r\n * Method that updates the list of riders\r\n */\r\n refreshData = () => {\r\n let refresh = !this.state.refresh;\r\n this.setState({ refresh: refresh });\r\n }\r\n\r\n /**\r\n * Method that updates the list of riders\r\n */\r\n refreshTypeData = () => {\r\n let refreshType = !this.state.refreshType;\r\n let refresh = !this.state.refresh;\r\n this.setState({ refreshType: refreshType, refresh: refresh });\r\n }\r\n\r\n /**\r\n * This method upload the rider method information\r\n */\r\n handleLoadRiderChange = () => {\r\n\r\n this.setState({ loading: true });\r\n this.loadRidersCategory();\r\n }\r\n\r\n /**\r\n * Function that updates the amount of insurance you have entered.\r\n */\r\n handleValidRange = (isValidRange) => {\r\n this.setState({ isValidRange: isValidRange });\r\n }\r\n\r\n /**\r\n * Process the call to pass to the next component\r\n */\r\n handleClickNext = async () => {\r\n this.setState({ loading: true });\r\n let listRider = this.selectedRiderListService.GetRiderSelectLocalStorage(this.props.idTSVProduct);\r\n let isValid = true;\r\n let isValidRider = this.state.riders.minimumPremium == 'Inválida' ? false : true;\r\n\r\n if (this.state.isValidRange && isValidRider) {\r\n if (listRider != null && listRider.length > 0) {\r\n this.setState({ emptyList: null });\r\n isValid = true;\r\n let applicationSent = await this.selectedRiderListService.SendApplicationSale();\r\n if (applicationSent) {\r\n let currentCategory = this.jsonExchangeTSV.getCurrentSerie();\r\n if (applicationSent.success) {\r\n let JSONprocessFileCreate = await this.selectedRiderListService.CreateJSONProcessFile();\r\n if (!JSONprocessFileCreate) {\r\n this.props.handleErrorInComponent(true);\r\n } else {\r\n const token = this.tokenService.DecryptToken();\r\n let insuranceApplication = {\r\n 'idTSVApplication': applicationSent.data,\r\n 'name': 'N/A',\r\n 'firstSurname': 'N/A',\r\n 'email': 'N/A',\r\n 'phone': 'N/A',\r\n 'comments': 'N/A',\r\n 'idCategory': currentCategory.id_series ? Number(currentCategory.id_series) : null,\r\n 'idJSONProcess': JSONprocessFileCreate.idJSONProcessFile ? JSONprocessFileCreate.idJSONProcessFile : null\r\n };\r\n let applicationSaved = await this.insuranceApplicationServices.AddInsuranceApp\r\n (insuranceApplication, token);\r\n\r\n if (!applicationSaved || !applicationSaved.statusResponse) {\r\n this.props.handleErrorInComponent(true);\r\n\r\n } else {\r\n let selectedProduct = this.jsonExchangeTSV.getCurrentSelectedProduct();\r\n this.jsonExchangeTSV.setInsuredPersons(this.selectedProductlistServices.\r\n ProcessInsuredPersonsApproved(\r\n selectedProduct.insured_persons_approved));\r\n window.open(`${REACT_APP_URL_TSV_REQUEST}${insuranceApplication.idTSVApplication}`, '_blank');\r\n this.setState({ loading: false, send: true, urlRedirect: `${REACT_APP_URL_TSV_REQUEST}${insuranceApplication.idTSVApplication}` });\r\n }\r\n }\r\n\r\n } else {\r\n this.props.handleErrorInComponent(true);\r\n\r\n }\r\n } else {\r\n this.props.handleErrorInComponent(true);\r\n }\r\n } else {\r\n isValid = false;\r\n this.setState({ emptyList: \"*Debe seleccionar al menos un suplemento\" });\r\n }\r\n\r\n this.state.riders.requiredRiderCategoriesInfo.map((rider) => {\r\n if (!rider.hideInDirectSale) {\r\n if (rider.validationMessageIsVisible) {\r\n isValid = false;\r\n }\r\n }\r\n });\r\n if (isValid) {\r\n this.props.handleClickNext();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Function that updates the selected product and updates it in the localstorage\r\n * @param {*} event select field event \r\n */\r\n handleProduct = (event) => {\r\n let value = event.target.value;\r\n let product = this.state.productTermList.filter(product => product.idTSVProduct == value)[0];\r\n this.setState({ idTSVProduct: value });\r\n this.props.handleProductNameInfo(product.name);\r\n this.selectedRiderListService.UpdateSelectedProduct(product);\r\n this.setState({ loading: true });\r\n this.loadRidersCategory(value);\r\n }\r\n render() {\r\n const { riders, loading, noRiskError, idTSVCategory, isTerms, send, urlRedirect } = this.state;\r\n if (loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (!loading && noRiskError) {\r\n return (\r\n

    \r\n Lo sentimos, en esta categoría no es posible ofrecerle alguno de\r\n nuestros productos. Lo invitamos a valorar nuestras opciones en\r\n otras categorías.\r\n

    \r\n )\r\n } else {\r\n return (<>\r\n
    \r\n\r\n

    \r\n Selecciona las cubiertas que deseas agregar a tu seguro:\r\n

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isTerms ?\r\n \r\n \r\n {'Producto'}\r\n \r\n
    \r\n \r\n
    \r\n \r\n : null\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {'Cubiertas'}

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

    {this.state.opcionesTitle}

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

    {'Prima'}

    \r\n
    \r\n
    \r\n
    \r\n {riders.requiredRiderCategoriesInfo.map((rider, index) => {\r\n if (!rider.hideInDirectSale) {\r\n let maxSlider = rider.maxFaceAmount_Slider != null ? Number(rider.maxFaceAmount_Slider) : 0;\r\n let isSlider = maxSlider > 1 ? true : false;\r\n let type = rider.faceAmountSpecification.faceAmountOptions != null &&\r\n (rider.insuredCategories != null && rider.insuredCategories.length > 1) ?\r\n 'selectMultiple' :\r\n (rider.hasMultipleSpecs === true && rider.faceAmountSliderIsVisible === true && isSlider) ?\r\n 'sliderMultiple' :\r\n rider.faceAmountSpecification.faceAmountOptions != null ? 'optionsSelect' :\r\n rider.insuredCategories.length > 1 ? 'categoriesSelect' :\r\n rider.hasMultipleSpecs === true ? 'specsSelect' :\r\n rider.hasSolveTypes == true ? 'solverType' : 'slider';\r\n //rider.categoryName === REACT_APP_BASIC_PLAN && rider.faceAmount < this.getNumber(amount) ? rider.faceAmountText = amount : rider.faceAmountText = rider.faceAmountText;\r\n //rider.categoryName === REACT_APP_BASIC_PLAN && rider.faceAmount < this.getNumber(amount) ? rider.faceAmount = this.getNumber(amount) : rider.faceAmount = rider.faceAmount;\r\n \r\n rider.categoryName === REACT_APP_BASIC_PLAN ? rider.minFaceAmountText = \"Min: $15,000\" : rider.minFaceAmountText = rider.minFaceAmountText;\r\n rider.categoryName === REACT_APP_BASIC_PLAN ? rider.minFaceAmount_Slider = \"15000\" : rider.minFaceAmount_Slider = rider.minFaceAmount_Slider;\r\n \r\n let ref = React.createRef();\r\n return (\r\n \r\n )\r\n }\r\n }\r\n )}\r\n
    \r\n
    \r\n {this.state.emptyList != null &&\r\n {this.state.emptyList} \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Monto de la prima mensual:

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

    {riders.minimumPremium}

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

    \r\n {riders.minimumPremium == 'Inválida' ? '0' : this.state.premium}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    this.riderListFunction()}>\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n\r\n \r\n\r\n
    \r\n
    \r\n {send ?\r\n \r\n : null}\r\n
    \r\n \r\n )\r\n }\r\n }\r\n}\r\nexport default SelectedRiderList;","import { JSONExchangeTSV } from './JSONExchangeTSV';\r\nimport { JSONProcessFileServices } from './JSONProcessFileServices';\r\nimport { JSONRider } from './JSONRider';\r\nimport { SelectedRiderListService } from './SelectedRiderListService';\r\nimport { WebServicesTSV } from './WebServicesTSV';\r\n\r\nexport class SelectedRiderSavingService {\r\n\r\n constructor() {\r\n this.jsonRider = new JSONRider();\r\n this.webServicesTSV = new WebServicesTSV();\r\n this.JSONProcessFileServices = new JSONProcessFileServices();\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n }\r\n /**\r\n * Method that obtains the data stored in the local storage of the saving rider\r\n * @return {Object} rider data \r\n */\r\n GetCurrentSavingAmount() {\r\n let response = [];\r\n let currentProduct = this.jsonRider.getCurrentSelectedProduct();\r\n \r\n if (!currentProduct.isNew) {\r\n response = this.jsonRider.getCurrentSavingAmount();\r\n return response;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Method that obtains the data stored in the local storage of the saving rider\r\n * @return {Object} rider data \r\n */\r\n GetCurrentSavingAmounts4() {\r\n let response = [];\r\n let currentProduct = this.jsonRider.getCurrentSelectedProduct();\r\n \r\n if (currentProduct) {\r\n response = this.jsonRider.getCurrentSavingAmount();\r\n return response;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Sets the savingAmount of the json in the local storage.\r\n * @param {Object} savingAmount The savingAmount array.\r\n */\r\n SetSavingAmount(valueInitial, valueEntry, currentValue, guaranteedValue ) {\r\n let savingAmount = { 'initial_deposit': valueInitial, 'additional_deposit': valueEntry, 'age': valueEntry, \r\n 'current_value': currentValue, 'guaranteed_value': guaranteedValue };\r\n this.jsonRider.setSavingAmount(savingAmount);\r\n }\r\n\r\n /**\r\n * Function that obtains the structure in json format to send to the TSV api\r\n * @param {Object} request savings rider application information\r\n * @returns {Object} request in json format \r\n */\r\n GetRiderRequest(request) {\r\n let primary = this.selectedRiderListService.GetFamilyMember(request.idTSVCategory).Primary;\r\n let rider = {\r\n \"ProductInfo\": {\r\n \"ProductKey\": request.idTSVProduct,\r\n \"PaymentMethodKey\": request.methodKey,\r\n \"PaymentModePayments\": request.modeIntervals,\r\n \"DeathBenefitCode\": null,\r\n \"FetchDetails\": true,\r\n \"EnteredInitialLumpSumText\": request.value,\r\n \"Deposit\": {\r\n \"TransactionPayments\": [\r\n {\r\n \"StartYear\": null,\r\n \"EndYear\": null,\r\n \"Amount\": request.amount\r\n }\r\n ]\r\n }\r\n },\r\n \"FamilyInfo\": {\r\n \"SeriesAccessCode\": request.idTSVCategory,\r\n \"EffectiveDateOverride\": null,\r\n primary\r\n }\r\n };\r\n return rider;\r\n }\r\n /**\r\n * Function that obtains the structure in json format to send to the TSV api\r\n * @param {Object} request savings rider application information\r\n * @returns {Object} request in json format \r\n */\r\n GetRiderRequestS4(request, listRider, temRisk) {\r\n let primary = this.selectedRiderListService.GetFamilyMember(request.idTSVCategory).Primary;\r\n primary.RiskKey = temRisk !== undefined? temRisk : primary.RiskKey;\r\n let rider = {\r\n \"ProductInfo\": {\r\n \"ProductKey\": request.idTSVProduct,\r\n \"PaymentMethodKey\": request.methodKey,\r\n \"PaymentModePayments\": request.modeIntervals,\r\n \"DeathBenefitCode\": \"A\",\r\n \"FetchDetails\": true,\r\n \"EnteredInitialLumpSumText\": request.value,\r\n \"EnteredPremiumText\":request.EnteredPremiumText,\r\n \"riderCategories\": listRider\r\n },\r\n \"FamilyInfo\": {\r\n \"SeriesAccessCode\": request.idTSVCategory,\r\n \"EffectiveDateOverride\": null,\r\n primary\r\n }\r\n };\r\n return rider;\r\n }\r\n /**\r\n * Function that obtains the structure in json format to send to the TSV api\r\n * @param {Object} request savings rider application information\r\n * @returns {Object} request in json format \r\n */\r\n GetRiderRequest(request) {\r\n let primary = this.selectedRiderListService.GetFamilyMember(request.idTSVCategory).Primary;\r\n let rider = {\r\n \"ProductInfo\": {\r\n \"ProductKey\": request.idTSVProduct,\r\n \"PaymentMethodKey\": request.methodKey,\r\n \"PaymentModePayments\": request.modeIntervals,\r\n \"DeathBenefitCode\": \"A\",\r\n \"FetchDetails\": true,\r\n \"EnteredInitialLumpSumText\": request.value,\r\n \"Deposit\": {\r\n \"TransactionPayments\": [\r\n {\r\n \"StartYear\": null,\r\n \"EndYear\": null,\r\n \"Amount\": request.amount\r\n }\r\n ]\r\n }\r\n },\r\n \"FamilyInfo\": {\r\n \"SeriesAccessCode\": request.idTSVCategory,\r\n \"EffectiveDateOverride\": null,\r\n primary\r\n }\r\n };\r\n return rider;\r\n }\r\n /**\r\n * Function that performs the validations of the numeric type field\r\n * @param {String} valueReal value of the amount deposited in the savings deposit\r\n * @param {Number} minValue minimum value for the savings deposit amount\r\n * @returns {Object} The response object to set state in the component.\r\n */\r\n HandleInputChangeS4 = (valueReal, minValue, id) => {\r\n const pattern = /^[0-9\\b]+$/;\r\n let request = {\r\n valid: true,\r\n message: null,\r\n value: valueReal!= undefined ? valueReal.replaceAll(',', ''): ''\r\n };\r\n\r\n if (request.value.trim() == '') {\r\n if(id == 'retirementAge'){\r\n request.message = '*Campo es requerido.';\r\n request.valid = false;\r\n } \r\n }\r\n else if (!request.value.trim() == '' && !pattern.test(request.value)) {\r\n request.message = '*Este campo solo permite valores númericos enteros.';\r\n request.valid = false;\r\n } else {\r\n if (!request.value.trim() == '' && pattern.test(request.value) && minValue != null) {\r\n if (Number(request.value) < minValue) {\r\n if(id == 'retirementAge'){\r\n request.message = `*La edad debe ser mayor o igual que ${minValue}.`;\r\n request.valid = false; \r\n }else{\r\n request.message = `*El monto debe ser mayor o igual que $${minValue}.`;\r\n request.valid = false; \r\n\r\n }\r\n } else {\r\n if (Number(request.value) >= 0) {\r\n request.valid = true;\r\n request.value = (request.value * 1).toFixed(1).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n request.value = request.value.toString().substring(0, request.value.indexOf('.'));\r\n }\r\n }\r\n } else {\r\n if (!request.value.trim() == '' && pattern.test(request.value)) {\r\n if (Number(request.value) >= 0) {\r\n request.valid = true;\r\n request.value = (request.value * 1).toFixed(1).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n request.value = request.value.toString().substring(0, request.value.indexOf('.'));\r\n }\r\n }\r\n }\r\n }\r\n\r\n return request;\r\n}\r\n /**\r\n * Function that performs the validations of the numeric type field\r\n * @param {String} valueReal value of the amount deposited in the savings deposit\r\n * @param {Number} minValue minimum value for the savings deposit amount\r\n * @returns {Object} The response object to set state in the component.\r\n */\r\n HandleInputChange = (valueReal, minValue, id) => {\r\n const pattern = /^[0-9\\b]+$/;\r\n let request = {\r\n valid: true,\r\n message: null,\r\n value: valueReal.replaceAll(',', '')\r\n };\r\n\r\n if (request.value.trim() == '') {\r\n request.message = '*Campo es requerido.';\r\n request.valid = false;\r\n }\r\n else if (!request.value.trim() == '' && !pattern.test(request.value)) {\r\n request.message = '*Este campo solo permite valores númericos enteros.';\r\n request.valid = false;\r\n } else {\r\n if (!request.value.trim() == '' && pattern.test(request.value) && minValue != null) {\r\n if (Number(request.value) < minValue) {\r\n if(id == 'retirementAge'){\r\n request.message = `*La edad debe ser mayor o igual que ${minValue}.`;\r\n request.valid = false; \r\n }else{\r\n request.message = `*El monto debe ser mayor o igual que $${minValue}.`;\r\n request.valid = false; \r\n\r\n }\r\n } else {\r\n if (Number(request.value) >= 0) {\r\n request.valid = true;\r\n request.value = (request.value * 1).toFixed(1).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n request.value = request.value.toString().substring(0, request.value.indexOf('.'));\r\n }\r\n }\r\n } else {\r\n if (!request.value.trim() == '' && pattern.test(request.value)) {\r\n if (Number(request.value) >= 0) {\r\n request.valid = true;\r\n request.value = (request.value * 1).toFixed(1).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n request.value = request.value.toString().substring(0, request.value.indexOf('.'));\r\n }\r\n }\r\n }\r\n }\r\n\r\n return request;\r\n }\r\n\r\n /**\r\n * Sends a new application of insurance to TSV server.\r\n * @return {Promise} The response of TSV server.\r\n */\r\n SendApplicationSale = async () => {\r\n let JSONLocalStorage = this.jsonExchangeTSV.getJSONTSV();\r\n let request = { data: JSONLocalStorage };\r\n let responseService =\r\n await this.webServicesTSV.ApplicationSales(request);\r\n if (responseService.statusResponse) {\r\n return responseService.data;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new JSV process file in the API.\r\n * @return {Promise} The response of the API.\r\n */\r\n CreateJSONProcessFile = async () => {\r\n let JSONLocalStorage = this.jsonExchangeTSV.getJSONTSV();\r\n let request = { file: JSONLocalStorage };\r\n let responseService =\r\n await this.JSONProcessFileServices.AddJSONProcessFile(request);\r\n if (responseService.statusResponse) {\r\n return responseService.data;\r\n } else {\r\n return false;\r\n }\r\n }\r\n /**\r\n * Get the rider detail from the localstorage \r\n * @returns {Array} Rider detail.\r\n */\r\n GetCurrentDetails = () => {\r\n let details = this.jsonExchangeTSV.getCurrentDetailsOfProductPayment();\r\n let sections = details.illustrationEmail != undefined ?\r\n details.illustrationEmail.policyDetails.sections : [];\r\n\r\n return sections;\r\n }\r\n}","import React from \"react\";\r\nimport { LoadingPage } from \"../../pages/LoadingPage\";\r\nimport './SelectedRiderS4Style.css';\r\nimport { SelectedRiderSavingService } from \"../../Services/SelectedRiderSavingService\";\r\nimport { RatesServiceTSV } from \"../../Services/RatesServiceTSV\";\r\nimport { SelectedRiderListService } from \"../../Services/SelectedRiderListService\";\r\nimport ReactHTMLTableToExcel from 'react-html-table-to-excel';\r\nconst { REACT_APP_SECTION_HIDE_SAVINGS, REACT_APP_SHOW_SAVINGS_SECTION } = process.env;\r\n\r\nexport class SelectedSavingProjectionS4 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.selectedRiderSavingService = new SelectedRiderSavingService();\r\n this.ratesServiceTSV = new RatesServiceTSV();\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n this.state = {\r\n loading: false,\r\n riders: { details: {}, applicationData: {} }, details: [],\r\n value: this.props.value,\r\n values: null,\r\n valueEntry: this.props.valueEntry\r\n }\r\n }\r\n\r\n /**\r\n * This method is used to load the rider.\r\n */\r\n loadRidersCategory = async () => {\r\n let { idTSVProduct, listRider, temRisk } = this.props;\r\n let values = null;\r\n let request = {\r\n idTSVProduct: idTSVProduct,\r\n methodKey: \"E\",\r\n modeIntervals: \"12\",\r\n value: this.props.value,\r\n idTSVCategory: idTSVProduct == 'Freedom UL - Ind' ? \"S4\" : 'S2',\r\n EnteredPremiumText: this.props.targetPremium,\r\n\r\n };\r\n if(listRider.length == 0 ){\r\n listRider = this.selectedRiderListService.GetRiderSelectLocalStorage();\r\n }\r\n let rider = this.selectedRiderSavingService.GetRiderRequestS4(request, listRider, temRisk);\r\n\r\n \r\n const resultLogin = await this.ratesServiceTSV.Login();\r\n if (resultLogin.statusResponse) {\r\n const resultQuote = await this.ratesServiceTSV.QuoteRiders(rider, resultLogin.data.token);\r\n if (resultQuote.statusResponse) {\r\n let data = resultQuote.data;\r\n let detail = data.details.illustrationEmail != undefined ? data.details.illustrationEmail.policyDetails.sections : [];\r\n let details = data.details != undefined ? data.details : null;\r\n let application = data.applicationData != undefined ? data.applicationData : null;\r\n this.selectedRiderListService.SaveDetailsAndApplicationData(details, application);\r\n\r\n if (detail !== null && detail.length > 0 && !this.props.show) {\r\n values = detail[2].entries.filter(obj => {\r\n return obj.items[1] == this.props.retirementAge;\r\n });\r\n this.props.setValues(values);\r\n }\r\n this.setState({\r\n riders: { details: details, applicationData: application },\r\n values: values,\r\n details: detail, loading: false\r\n });\r\n } else {\r\n if (resultQuote.error) {\r\n this.props.handleErrorInComponent(true);\r\n }\r\n this.setState({ loading: false })\r\n }\r\n }\r\n }\r\n /**\r\n * This method upload the detail the rider\r\n */\r\n componentDidMount() {\r\n this.setState({ loading: true });\r\n this.loadRidersCategory();\r\n }\r\n\r\n render() {\r\n const { loading, details } = this.state;\r\n const { disclaimer } = this.props;\r\n if (loading) {\r\n return (\r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n
    \r\n {details && details.length > 0 ?
    \r\n

    \r\n Proyección de Beneficio por Muerte y Valores en Efectivo\r\n

    \r\n\r\n Tabla de proyección de depósitos y valores\r\n\r\n {details.map((detail) => (\r\n detail.title != REACT_APP_SECTION_HIDE_SAVINGS ?\r\n <>\r\n
    \r\n <>\r\n {detail.title === REACT_APP_SHOW_SAVINGS_SECTION ?\r\n\r\n \r\n {detail.entries.map((entry, indexEntry) => (\r\n\r\n indexEntry === 0 ?\r\n \r\n {entry.items.map((item, indexItem) => (\r\n item !== 'Año' ?\r\n \r\n : null\r\n ))}\r\n :\r\n \r\n \r\n { entry.items.map((item, indexItemEntry) => (\r\n \r\n indexItemEntry >0 ?\r\n \r\n \r\n \r\n : null\r\n ))}\r\n \r\n ))}\r\n
    \r\n

    {item}

    \r\n
    7 ? '' : indexItemEntry > 1 && indexItemEntry < 6 && this.props.idTSVProduct !== 'Freedom Whole Life - Ind' ? 'colum-table-rider': 'colum-table-rider2'} ${indexItemEntry >2 && indexItemEntry < 6 && this.props.idTSVProduct !== 'Freedom Whole Life - Ind' ? 'color-tr' : 'color-tr-white'}`} key={indexItemEntry} >{item}
    \r\n : null\r\n }\r\n \r\n
    \r\n :\r\n null\r\n ))}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n

    {disclaimer}

    \r\n
    \r\n
    :

    No se obtuvieron resultados

    }\r\n\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n }\r\n}\r\nexport default SelectedSavingProjectionS4;","import React from \"react\";\r\nimport { LoadingPage } from \"../../pages/LoadingPage\";\r\nimport { Card } from \"react-bootstrap\";\r\nimport { SelectedRiderSavingService } from \"../../Services/SelectedRiderSavingService\";\r\nimport './SelectedRiderS4Style.css';\r\nimport { ButtonTSV } from '../ButtonTSV';\r\nimport { InsuranceAplicationServices } from \"../../Services/InsuranceApplicationServices\";\r\nimport { TokenServices } from \"../../Services/TokenServices\";\r\nimport { JSONExchangeTSV } from \"../../Services/JSONExchangeTSV\";\r\nimport { SelectedProductListServices } from \"../../Services/SelectedProductListServices\";\r\nimport { ParameterService } from \"../../Services/ParameterService\";\r\nimport { SelectedRiderListService } from \"../../Services/SelectedRiderListService\";\r\nimport { SelectedSavingProjectionS4 } from \"./SelectedSavingProjectionS4\";\r\nimport { RatesServiceTSV } from \"../../Services/RatesServiceTSV\";\r\nimport { ModalInfo } from '../ModalInfo';\r\nconst { REACT_APP_MINIMUM_PREMIUM_Monthy,\r\n REACT_APP_DISCLAIMER_PARAM_ID, REACT_APP_MAX_SUM_IRA, REACT_APP_MAX_SUM_ANUALIDAD, REACT_APP_IDTSVPRODUCT_IRA,\r\n REACT_APP_IDTSVPRODUCT_ANUALIDAD, REACT_APP_IDPARAMETER_MONTHLY, REACT_APP_INITIAL_DEPOSIT_DESCRIPTION,\r\n REACT_APP_MINIMUM_RETIREMENT_AGE, REACT_APP_URL_TSV_REQUEST, REACT_APP_AGE_RETIRO_DESCRIPTION } = process.env;\r\n\r\nexport class SelectedRiderS4 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.ratesServiceTSV = new RatesServiceTSV();\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n this.selectedRiderSavingService = new SelectedRiderSavingService();\r\n this.insuranceApplicationServices = new InsuranceAplicationServices();\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.selectedProductlistServices = new SelectedProductListServices();\r\n this.parameterServices = new ParameterService();\r\n this.tokenService = new TokenServices();\r\n this.state = {\r\n send: false,\r\n valuesConsult: null,\r\n listRider: this.props.listRider,\r\n temRisk: this.props.temRisk,\r\n disableButon: false,\r\n urlRedirect: `${REACT_APP_URL_TSV_REQUEST}`,\r\n loading: false, value: '', premiumMonthly: this.props.minimumPremium, valueInitialDeposite: '', currentValue: '', valueEntry: '', retirementAge: '', guaranteedValue: '', errorMessageInitial: '', validInitial: true,\r\n errorMessageInitialEntry: '', errorMessageRetirementAge: '',\r\n validPremiumMonthly: true, validEntry: true, validInitialDeposite: true, validCurrentValue: true, validRetirementAge: true, validReguaranteedValue: true, refresh: false, refreshType: false, projections: false,\r\n isUpdateValue: true, isUpdateEntry: true, errorMessage: '', disclaimer: '',\r\n errorMessageSum: '',\r\n values: null,\r\n modalOptions: { show: false, title: '', description: '', differentIcon: true },\r\n idTSVProduct: this.props.idTSVProduct,\r\n };\r\n this.riderListFunction = this.riderListFunction.bind(this);\r\n }\r\n\r\n /**\r\n * Function to return to the previous screen.\r\n */\r\n riderListFunction() {\r\n if (this.props.handleClickBackRider) {\r\n this.props.handleClickBackRider();\r\n }\r\n }\r\n\r\n /**\r\n * This method upload the payment method information\r\n */\r\n componentDidUpdate(prevProps, prevState) {\r\n }\r\n\r\n /**\r\n * This method upload the payment method information\r\n */\r\n async componentDidMount() {\r\n let response = this.selectedRiderSavingService.GetCurrentSavingAmounts4();\r\n if (Object.keys(response).length !== 0) {\r\n this.setState({\r\n value: response.initial_deposit, retirementAge: response.age, currentValue: response.current_value, guaranteedValue: response.guaranteed_value,\r\n valuesConsult: [response.current_value, response.guaranteed_value]\r\n });\r\n }\r\n let disclaimers = await this.parameterServices.GetAllParameterById(\r\n { 'idParameterValue': Number(REACT_APP_DISCLAIMER_PARAM_ID) });\r\n if (disclaimers.data.length > 0) {\r\n let selectedProduct = this.jsonExchangeTSV.getCurrentSelectedProduct();\r\n let currentDisclaimer = disclaimers.data.filter(disclaimer => Number(disclaimer.name)\r\n == Number(selectedProduct.id_product));\r\n if (currentDisclaimer[0]) {\r\n this.setState({ disclaimer: currentDisclaimer[0].value });\r\n }\r\n }\r\n if (this.props.refreshValues) {\r\n if (this.state.valuesConsult != null) {\r\n this.showValues();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Function to update the status of the payment method.\r\n */\r\n refreshData = () => {\r\n let refresh = !this.state.refresh;\r\n this.setState({ refresh: refresh });\r\n }\r\n\r\n /**\r\n * Function to update the status of the payment frequency.\r\n */\r\n refreshTypeData = () => {\r\n let refreshType = !this.state.refreshType;\r\n let refresh = !this.state.refresh;\r\n this.setState({ refreshType: refreshType, refresh: refresh });\r\n }\r\n\r\n /**\r\n * Function that changes the payment type that has been selected.\r\n * @param {Event} event change value of selection field\r\n */\r\n handleChangeInitial(event, age) {\r\n if (event.target.id === 'value') {\r\n let response = this.selectedRiderSavingService\r\n .HandleInputChangeS4(event.target.value, 0, event.target.id);\r\n let { value, message, valid } = response;\r\n this.setState({ value: value, errorMessageInitial: message, validInitial: valid, isUpdateValue: false, currentValue: '', guaranteedValue: '' });\r\n this.selectedRiderSavingService.SetSavingAmount(value, this.state.retirementAge, '', '');\r\n this.props.showProyections(null, false);\r\n this.hideProjections();\r\n } else if (event.target.id === 'premiumMonthly') {\r\n let response = this.selectedRiderSavingService\r\n .HandleInputChangeS4(event.target.value, Number(REACT_APP_MINIMUM_PREMIUM_Monthy));\r\n let { premiumMonthly, message, valid } = response;\r\n this.setState({ premiumMonthly: premiumMonthly, errorMessagePremiumMonthly: message, validPremiumMonthly: valid, isUpdateValue: false });\r\n\r\n }\r\n else if (event.target.id === 'retirementAge') {\r\n let response = this.selectedRiderSavingService\r\n .HandleInputChangeS4(event.target.value, Number(age), event.target.id);\r\n let { value, message, valid } = response;\r\n this.setState({ currentValue: '', guaranteedValue: '', retirementAge: value, errorMessageRetirementAge: message, validRetirementAge: valid, isUpdateValue: false });\r\n this.selectedRiderSavingService.SetSavingAmount(this.state.value, value, '', '');\r\n this.hideProjections();\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Function that changes the payment type that has been selected.\r\n * @param {Event} event change value of selection field\r\n */\r\n handleChangeEntry(event) {\r\n if (event.target.id === 'valueEntry') {\r\n let response = this.selectedRiderSavingService.HandleInputChangeS4(event.target.value, null);\r\n let { value, message, valid } = response;\r\n this.setState({ valueEntry: value, errorMessageEntry: message, validEntry: valid, isUpdateEntry: false });\r\n\r\n if (valid) {\r\n this.selectedRiderSavingService.SetSavingAmount(this.state.value, value);\r\n this.validateAmountSum(this.state.value, value);\r\n }\r\n }\r\n }\r\n\r\n validateAmountSum(ValInitial, ValEntry) {\r\n let payment = this.selectedRiderListService.GetPayment();\r\n if (Number(payment.modeIntervals) === Number(REACT_APP_IDPARAMETER_MONTHLY)) {\r\n\r\n let idProduct = this.props.idTSVProduct;\r\n let errorMessage = '';\r\n let max = 0;\r\n\r\n let initialValue = ValInitial !== '' && ValInitial ? ValInitial.replaceAll(',', '') * 1 : 0;\r\n let aditionalValue = ValEntry !== '' && ValEntry ? ValEntry.replaceAll(',', '') * 12 : 0;\r\n let total = initialValue + aditionalValue;\r\n\r\n\r\n let totalFormat = this.selectedRiderSavingService.HandleInputChangeS4(total.toString(), Number(total));\r\n\r\n if (idProduct === REACT_APP_IDTSVPRODUCT_IRA) {\r\n max = Number(REACT_APP_MAX_SUM_IRA);\r\n errorMessage = 'Para el producto de IRA el monto anual del depósito inicial junto al depósito adicional no puede sobrepasar un total de $5.000. Actualmente está solicitando $';\r\n }\r\n\r\n if (idProduct == REACT_APP_IDTSVPRODUCT_ANUALIDAD) {\r\n max = Number(REACT_APP_MAX_SUM_ANUALIDAD);\r\n errorMessage = 'Para el producto de Anualidad el monto anual del depósito inicial junto al depósito adicional no puede sobrepasar un total de $500.000. Actualmente está solicitando $';\r\n }\r\n\r\n if (Number(total) > max) {\r\n this.setState({\r\n validInitial: false,\r\n validEntry: false,\r\n errorMessageSum: `${errorMessage}${totalFormat.value}`\r\n })\r\n } else {\r\n this.setState({\r\n validInitial: true,\r\n validEntry: true,\r\n errorMessageSum: ''\r\n })\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n /**\r\n * Process the call to pass to the next component\r\n */\r\n handleClickNext = async () => {\r\n this.setState({ loading: true });\r\n if (this.isValid()) {\r\n if (this.state.isUpdateValue && this.state.isUpdateEntry) {\r\n this.props.handleClickNext();\r\n let applicationSent = await this.selectedRiderSavingService.SendApplicationSale();\r\n if (applicationSent) {\r\n let currentCategory = this.jsonExchangeTSV.getCurrentSerie();\r\n if (applicationSent.success) {\r\n let JSONprocessFileCreate = await this.selectedRiderSavingService.CreateJSONProcessFile();\r\n if (!JSONprocessFileCreate) {\r\n this.props.handleErrorInComponent(true);\r\n } else {\r\n const token = this.tokenService.DecryptToken();\r\n let insuranceApplication = {\r\n 'idTSVApplication': applicationSent.data,\r\n 'name': 'N/A',\r\n 'firstSurname': 'N/A',\r\n 'email': 'N/A',\r\n 'phone': 'N/A',\r\n 'comments': 'N/A',\r\n 'idCategory': currentCategory.id_series ? Number(currentCategory.id_series) : null,\r\n 'idJSONProcess': JSONprocessFileCreate.idJSONProcessFile ? JSONprocessFileCreate.idJSONProcessFile : null\r\n };\r\n let applicationSaved = await this.insuranceApplicationServices.AddInsuranceApp\r\n (insuranceApplication, token);\r\n\r\n if (!applicationSaved || !applicationSaved.statusResponse) {\r\n this.props.handleErrorInComponent(true);\r\n\r\n } else {\r\n let selectedProduct = this.jsonExchangeTSV.getCurrentSelectedProduct();\r\n this.jsonExchangeTSV.setInsuredPersons(this.selectedProductlistServices.\r\n ProcessInsuredPersonsApproved(\r\n selectedProduct.insured_persons_approved));\r\n window.open(`${REACT_APP_URL_TSV_REQUEST}${insuranceApplication.idTSVApplication}`, '_blank');\r\n this.setState({ loading: false, send: true, urlRedirect: `${REACT_APP_URL_TSV_REQUEST}${insuranceApplication.idTSVApplication}` });\r\n }\r\n }\r\n } else {\r\n this.props.handleErrorInComponent(true);\r\n }\r\n } else {\r\n this.props.handleErrorInComponent(true);\r\n }\r\n } else {\r\n let errorMessage = \"*Para completar la solicitud debe primero VER PROYECCIONES\";\r\n this.setState({ errorMessage: errorMessage });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Renders a modal with de information of each answer option.\r\n */\r\n showModal(title, description) {\r\n let modalOptions = { show: true, title: title, description: description, differentIcon: true };\r\n this.setState({ modalOptions: modalOptions });\r\n }\r\n\r\n /**\r\n * Close the modal with de information of each answer option.\r\n */\r\n closeModal = () => {\r\n let modalOptions = { show: false };\r\n this.setState({\r\n modalOptions: modalOptions\r\n });\r\n };\r\n\r\n\r\n\r\n /**\r\n * Function that validates that the entered values are correct\r\n */\r\n isValid() {\r\n if (!this.state.validEntry || !this.state.validInitial) {\r\n return false\r\n }\r\n let { retirementAge } = this.state;\r\n let responseValue = this.selectedRiderSavingService.HandleInputChangeS4(retirementAge, Number(REACT_APP_MINIMUM_RETIREMENT_AGE), 'retirementAge');\r\n\r\n this.setState({ retirementAge: responseValue.value, errorMessageRetirementAge: responseValue.message, validRetirementAge: responseValue.valid });\r\n\r\n if (responseValue.valid) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Show and update the values\r\n */\r\n showValues = async () => {\r\n let { idTSVProduct, listRider, temRisk } = this.state;\r\n if (this.isValid()) {\r\n this.setState({ disableButon: true })\r\n let values = null;\r\n let request = {\r\n idTSVProduct: idTSVProduct,\r\n methodKey: \"E\",\r\n modeIntervals: \"12\",\r\n value: this.state.value,\r\n idTSVCategory: idTSVProduct == 'Freedom UL - Ind' ? \"S4\" : 'S2',\r\n EnteredPremiumText: this.getAmountText(this.props.targetPremium),\r\n };\r\n if(listRider.length == 0 ){\r\n listRider = this.selectedRiderListService.GetRiderSelectLocalStorage();\r\n }\r\n let rider = this.selectedRiderSavingService.GetRiderRequestS4(request, listRider, temRisk);\r\n const resultLogin = await this.ratesServiceTSV.Login();\r\n if (resultLogin.statusResponse) {\r\n const resultQuote = await this.ratesServiceTSV.QuoteRiders(rider, resultLogin.data.token);\r\n if (resultQuote.statusResponse) {\r\n let data = resultQuote.data;\r\n let detail = data.details.illustrationEmail != undefined ? data.details.illustrationEmail.policyDetails.sections : [];\r\n let details = data.details != undefined ? data.details : null;\r\n let application = data.applicationData != undefined ? data.applicationData : null;\r\n this.selectedRiderListService.SaveDetailsAndApplicationData(details, application);\r\n if (detail !== null && detail.length > 0) {\r\n values = detail[2].entries.filter(obj => {\r\n return obj.items[1] == this.state.retirementAge;\r\n });\r\n this.setValues(values);\r\n this.setState({ loading: false, disableButon: false, valuesConsult: values })\r\n }\r\n } else {\r\n if (resultQuote.error) {\r\n this.props.handleErrorInComponent(true);\r\n }\r\n this.setState({ loading: false })\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Show and update the projections table\r\n */\r\n showProjections = () => {\r\n let {temRisk} = this.state;\r\n this.setState({ projections: true, isUpdateEntry: true, isUpdateValue: true, errorMessage: '' });\r\n let proyections = ;\r\n\r\n this.props.showProyections(proyections, true);\r\n\r\n }\r\n getAmountText(value) {\r\n let response = value.replace(\"$\", \"\")\r\n let newValue = response.replace(\",\", \"\");\r\n return newValue;\r\n }\r\n /**\r\n * Hide the projection table \r\n */\r\n hideProjections = () => {\r\n this.setState({ projections: false });\r\n this.props.showProyections(null, false);\r\n }\r\n /**\r\n * Set guaranteedValue and currentValue value\r\n */\r\n setValues = (values) => {\r\n if (values.length > 0) {\r\n this.setState({ guaranteedValue: values[0].items[4], currentValue: values[0].items[7] });\r\n this.selectedRiderSavingService.SetSavingAmount(this.state.value, this.state.retirementAge,\r\n values[0].items[7], values[0].items[4]);\r\n }\r\n\r\n }\r\n\r\n render() {\r\n const { loading, disclaimer, modalOptions, send, urlRedirect, disableButon } = this.state;\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n\r\n {this.props.idTSVProduct !== 'Freedom Whole Life - Ind' ?\r\n \r\n

    \r\n Proyección de Valores en Efectivo a Edad de Retiro\r\n

    \r\n \r\n
    \r\n
    \r\n \r\n {'Depósito Inicial'}\r\n \r\n this.handleChangeInitial(event)}\r\n value={this.state.value}\r\n id=\"value\"\r\n className={this.state.validInitial ? ('form-control custom-input input-rider') : ('form-control is-invalid is-invalid-border custom-input')}\r\n required={true}\r\n />\r\n \r\n this.showModal('Depósito Inicial', 'Monto del depósito en efectivo que el asegurado puede realizar al solicitar el seguro y que devengará intereses junto a las demás primas que se cobren mensualmente. El asegurado podrá realizar aportes adicionales cuando lo desee')}\r\n style={this.state.validInitial ? { display: 'block' } : { display: 'none' }}>\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n {!this.state.validInitial ?\r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n
    \r\n {!this.state.validInitial &&\r\n {this.state.errorMessageInitial} \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {'Edad de Retiro'}\r\n \r\n this.handleChangeInitial(event, this.props.age)}\r\n value={this.state.retirementAge}\r\n required={true}\r\n className={this.state.validRetirementAge ? ('form-control custom-input input-rider') : ('form-control is-invalid is-invalid-border custom-input')}\r\n />\r\n \r\n this.showModal('Edad de Retiro', 'Edad a la cual se desean realizar las proyecciones para el retiro de los valores acumulados. No guarda relación con la edad de retiro del Seguro Social; podrán ser iguales, pero no es necesario')}\r\n style={this.state.validRetirementAge ? { display: 'block' } : { display: 'none' }}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {!this.state.validRetirementAge ?\r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n
    \r\n {!this.state.validRetirementAge &&\r\n {this.state.errorMessageRetirementAge} \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n : null\r\n }\r\n {modalOptions.show ?\r\n :\r\n null}\r\n
    \r\n {this.props.idTSVProduct !== 'Freedom Whole Life - Ind' ?\r\n
    \r\n \r\n
    \r\n : null\r\n }\r\n
    \r\n \r\n
    \r\n\r\n {send ?\r\n \r\n : null}\r\n
    \r\n\r\n
    \r\n\r\n )\r\n }\r\n}\r\nexport default SelectedRiderS4;","import React from \"react\";\r\nimport { LoadingPage } from \"../../pages/LoadingPage\";\r\nimport { Col, Row, Card } from \"react-bootstrap\";\r\nimport { SelectedRiderListService } from \"../../Services/SelectedRiderListService\";\r\nimport { RatesServiceTSV } from \"../../Services/RatesServiceTSV\";\r\nimport { RiderCard } from \"../RiderCard\";\r\nimport './SelectedRiderList.css';\r\nimport { SelectedRisksServices } from \"../../Services/SelectedRisksServices\";\r\nimport { RiskServices } from \"../../Services/RiskServices\";\r\nimport { JSONExchangeTSV } from \"../../Services/JSONExchangeTSV\";\r\nimport { InsuranceAplicationServices } from \"../../Services/InsuranceApplicationServices\";\r\nimport { TokenServices } from \"../../Services/TokenServices\";\r\nimport { SelectedProductListServices } from \"../../Services/SelectedProductListServices\";\r\nimport { WebServicesTSV } from \"../../Services/WebServicesTSV\";\r\nimport { SelectedRiderS4 } from \"./SelectedRiderS4\";\r\nimport { PaymentDetails } from \"../SelectedRiderList/PaymentDetails\";\r\nimport { ModalInfo } from '../ModalInfo';\r\nconst { REACT_APP_PAYMENT_TYPE, REACT_APP_IDTSVCATEGORY_LIFE,\r\n REACT_APP_IDTSVCATEGORY_HEALTH, REACT_APP_ID_LIFE,\r\n REACT_APP_ID_TSV_AMOUNT,\r\n REACT_APP_LIST_ID_PRODUCT, REACT_APP_SSN_QUESTION, REACT_APP_URL_TSV_REQUEST, REACT_APP_BASIC_PLAN } = process.env;\r\n\r\nexport class SelectedRiderListS4 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n this.ratesServiceTSV = new RatesServiceTSV();\r\n this.selectedRisksServices = new SelectedRisksServices();\r\n this.riskServices = new RiskServices();\r\n this.insuranceApplicationServices = new InsuranceAplicationServices();\r\n this.selectedProductlistServices = new SelectedProductListServices();\r\n this.tokenService = new TokenServices();\r\n this.webServicesTSV = new WebServicesTSV();\r\n const familyInfo = this.selectedRiderListService.GetFamilyMember(this.props.idTSVCategory, this.props.idTSVProduct);\r\n let Primary = familyInfo.Primary;\r\n this.state = {\r\n send: false,\r\n refreshValues: false,\r\n proyections: false,\r\n relevo: '',\r\n age: '',\r\n idTSVProductDescription: 'Freedom Whole Life Plan',\r\n listRider: [],\r\n amount: '',\r\n proyectionsUI: null,\r\n urlRedirect: `${REACT_APP_URL_TSV_REQUEST}`,\r\n riders: { minimumPremium: \"\", targetPremium: \"\", requiredRiderCategoriesInfo: [], details: {}, applicationData: {} },\r\n loading: true,\r\n refresh: false,\r\n currentValue: '',\r\n temRisk: Primary.RiskKey,\r\n guaranteedValue: '',\r\n opcionesTitle: \"Monto de Seguro\",\r\n noRiskError: false,\r\n emptyList: null,\r\n idTSVCategory: this.props.idTSVCategory,\r\n productTermList: [],\r\n idTSVProduct: this.props.idTSVProduct,\r\n isTerms: false, isValidRange: true,\r\n riderDetails: [], premium: 0,\r\n premiumAmount: { idProduct: '', maxPremium: 0, premium: 0 },\r\n modalOptions: { show: false, title: '', description: '', differentIcon: true },\r\n };\r\n this.riderListFunction = this.riderListFunction.bind(this);\r\n };\r\n\r\n /**\r\n * Function to return to the previous screen.\r\n */\r\n riderListFunction() {\r\n if (this.props.handleClickBackRider) {\r\n this.props.handleClickBackRider();\r\n }\r\n }\r\n setAge(age) {\r\n this.setState({ age: age });\r\n }\r\n\r\n /**\r\n * This method is used to load the rider.\r\n */\r\n loadRidersCategory = async (idTSVProduct, idTSVProductDescription) => {\r\n try {\r\n \r\n const familyInfo = this.selectedRiderListService.GetFamilyMember(this.props.idTSVCategory, this.state.idTSVProduct);\r\n let Primary = familyInfo.Primary;\r\n let listRider = this.selectedRiderListService.GetRiderSelectLocalStorage();\r\n if (listRider.length == 0) {\r\n let basicPlan = {\r\n \"categoryName\": REACT_APP_BASIC_PLAN, \"isActive\": true,\r\n \"faceAmount\": this.getNumber(this.state.amount),\r\n \"faceAmountText\": this.state.amount,\r\n };\r\n listRider.push(basicPlan);\r\n } else {\r\n if (Number(this.getNumber(this.state.amount)) >= 200001) {\r\n let temRisk = Number(listRider[0].faceAmountText) < 200001 ? 'N' : Primary.RiskKey;\r\n if(temRisk !== this.state.temRisk){\r\n let listRiderTem = [];\r\n listRiderTem.push(listRider[0]);\r\n this.selectedRiderListService.SetRiders(listRiderTem);\r\n listRider = listRiderTem;\r\n } \r\n \r\n Primary.RiskKey = temRisk;\r\n this.setState({temRisk});\r\n }\r\n }\r\n let rider = {};\r\n if (idTSVProduct == 'Freedom UL - Ind') {\r\n rider = {\r\n \"ProductInfo\": {\r\n \"ProductKey\": idTSVProduct != undefined ? idTSVProduct : this.state.idTSVProduct,\r\n \"PaymentMethodKey\": \"E\",\r\n \"PaymentModePayments\": 12,\r\n \"DeathBenefitCode\": \"A\",\r\n \"FetchDetails\": true,\r\n \"IncreasePercent\": 30,\r\n \"riderCategories\": listRider != null ? listRider : []\r\n },\r\n \"FamilyInfo\": {\r\n \"SeriesAccessCode\": 'S4',\r\n \"EffectiveDateOverride\": null,\r\n Primary\r\n }\r\n };\r\n } else {\r\n if (idTSVProductDescription !== undefined) {\r\n listRider[0].selectedSpecDescription = idTSVProductDescription;\r\n }\r\n rider = {\r\n \"ProductInfo\": {\r\n \"ProductKey\": idTSVProduct != undefined ? idTSVProduct : this.state.idTSVProduct,\r\n \"PaymentMethodKey\": \"E\",\r\n \"PaymentModePayments\": 12,\r\n \"FetchDetails\": true,\r\n \"IncreasePercent\": 30,\r\n \"riderCategories\": listRider != null ? listRider : []\r\n },\r\n \"FamilyInfo\": {\r\n \"SeriesAccessCode\": 'S2',\r\n \"EffectiveDateOverride\": null,\r\n Primary\r\n }\r\n };\r\n }\r\n\r\n\r\n\r\n if (this.props.idTSVCategory == REACT_APP_IDTSVCATEGORY_HEALTH) {\r\n let spouse = familyInfo.spouse;\r\n let child = familyInfo.child;\r\n if (spouse !== undefined) {\r\n rider.FamilyInfo.spouse = spouse;\r\n }\r\n if (child !== undefined) {\r\n rider.FamilyInfo.child = child;\r\n }\r\n }\r\n\r\n if (this.props.idTSVCategory == REACT_APP_IDTSVCATEGORY_LIFE) {\r\n let additionalInsured = familyInfo.additionalInsured;\r\n if (additionalInsured !== undefined) {\r\n rider.FamilyInfo.additionalInsured = additionalInsured;\r\n }\r\n };\r\n\r\n const resultLogin = await this.ratesServiceTSV.Login();\r\n\r\n if (resultLogin.statusResponse) {\r\n const resultQuote = await this.ratesServiceTSV.QuoteRiders(rider, resultLogin.data.token);\r\n if (resultQuote.statusResponse) {\r\n let data = resultQuote.data;\r\n let applicationData = data.applicationData;\r\n let riderDetails = applicationData.riders != undefined ? applicationData.riders : [];\r\n\r\n let details = data.details;\r\n let illustration = details != undefined ? details.illustrationEmail : details;\r\n let policy = illustration != undefined ? illustration.policyDetails : illustration;\r\n let premiumTotal = policy == undefined ? 0 :\r\n policy.totalPremium != undefined ? policy.totalPremium : 0;\r\n\r\n this.setState({\r\n loading: false, riderDetails: riderDetails, premium: premiumTotal,\r\n age: Primary.age,\r\n listRider: listRider,\r\n riders: {\r\n minimumPremium: data.minimumPremium,\r\n targetPremium: data.targetPremium,\r\n requiredRiderCategoriesInfo: data.requiredRiderCategoriesInfo,\r\n details: data.details !== undefined ? data.details : null,\r\n applicationData: data.applicationData != undefined ? data.applicationData : null\r\n }\r\n });\r\n listRider.forEach(r => {\r\n if (r.faceAmountText == '' || r.faceAmountText == null) {\r\n this.setState({ loading: true, listRider: listRider });\r\n this.loadRidersCategory(idTSVProduct, idTSVProductDescription);\r\n }\r\n });\r\n this.selectedRiderListService\r\n .SaveDetailsAndApplicationData(this.state.riders.details, this.state.riders.applicationData);\r\n \r\n } else {\r\n if (resultQuote.error) {\r\n this.props.handleErrorInComponent(true);\r\n }\r\n this.setState({ loading: false });\r\n }\r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n } catch (err) {\r\n this.setState({ loading: false, noRiskError: true });\r\n console.error(err);\r\n }\r\n\r\n }\r\n\r\n\r\n /**\r\n * This method upload the information of the riders \r\n */\r\n componentDidMount() {\r\n let { idTSVProduct } = this.state;\r\n let amount = this.jsonExchangeTSV.getQuestionOfProductQuestionsByIdTSV(REACT_APP_ID_TSV_AMOUNT);\r\n if (Number(this.jsonExchangeTSV.getCurrentSerie().id_series) === Number(REACT_APP_ID_LIFE)) {\r\n let idProduct = Number(this.jsonExchangeTSV.getCurrentSelectedProduct().id_product);\r\n let request = this.selectedRisksServices.getSelectedRisksRequestObject();\r\n this.setState({ loading: true, amount: amount.value_answer });\r\n this.riskServices.GetSelectedRisks(request).then(result => {\r\n if (result.statusResponse) {\r\n let risksResponse = result.data;\r\n setTimeout(() => this.setState({ loading: false }), 2000);\r\n if (risksResponse.productError) {\r\n this.setState({ noRiskError: true })\r\n } else {\r\n this.riskServices.SaveCalculatedRisksInLocalStorage(risksResponse.selectedRisks);\r\n this.loadRidersCategory(idTSVProduct);\r\n\r\n }\r\n } else {\r\n this.setState({ loading: false });\r\n this.props.handleErrorInComponent(true);\r\n }\r\n });\r\n } else {\r\n this.setState({ loading: true });\r\n this.getPolicyTotals();\r\n }\r\n }\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevState.refresh !== this.state.refresh &&\r\n prevState.refreshType !== this.state.refreshType) {\r\n this.setState({ loading: prevState.loading });\r\n this.loadRidersCategory(this.state.idTSVProduct);\r\n }\r\n }\r\n\r\n /**\r\n * Function that obtains the detail of the amount of the policy of the selected product\r\n */\r\n getPolicyTotals = async () => {\r\n let { idTSVProduct } = this.state;\r\n let idProductJSON = Number(this.jsonExchangeTSV.getCurrentSelectedProduct().id_product);\r\n //let idProductJSON = Number(30);\r\n const list = JSON.parse(REACT_APP_LIST_ID_PRODUCT);\r\n\r\n let product = list.filter(product => Number(product.id_product) === idProductJSON)[0];\r\n let questionSSN = this.jsonExchangeTSV.getCurrentProductQuestions();\r\n questionSSN = questionSSN.filter(quesiton => quesiton.question_text.includes(REACT_APP_SSN_QUESTION));\r\n let ssn = questionSSN[0] ? questionSSN[0].value_answer ? questionSSN[0].value_answer : null : null;\r\n let policy = {};\r\n\r\n if (product != undefined && ssn != null) {\r\n let insuredPerson = this.selectedRiderListService.GetPrimaryInsured();\r\n policy = await this.webServicesTSV.PolicyTotals(idTSVProduct, insuredPerson);\r\n if (policy.statusResponse) {\r\n let premiumData = policy.data.data;\r\n this.setState({\r\n premiumAmount: {\r\n idProduct: idTSVProduct,\r\n maxPremium: premiumData.benefitMaximunFaceAmount,\r\n premium: premiumData.totalAmount\r\n }, loading: false\r\n });\r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n return policy\r\n }\r\n\r\n /**\r\n * Method that updates the list of riders\r\n */\r\n refreshData = () => {\r\n let refresh = !this.state.refresh;\r\n this.setState({ refresh: refresh });\r\n }\r\n\r\n /**\r\n * Method that updates the list of riders\r\n */\r\n refreshTypeData = () => {\r\n let refreshType = !this.state.refreshType;\r\n let refresh = !this.state.refresh;\r\n this.setState({ refreshType: refreshType, refresh: refresh });\r\n }\r\n\r\n /**\r\n * This method upload the rider method information\r\n */\r\n handleLoadRiderChange = () => {\r\n let { idTSVProduct, idTSVProductDescription } = this.state;\r\n if (idTSVProduct == 'Freedom Whole Life - Ind') {\r\n this.loadRidersCategory(idTSVProduct, idTSVProductDescription);\r\n\r\n } else {\r\n this.loadRidersCategory(idTSVProduct);\r\n }\r\n this.setState({ loading: true});\r\n this.showProyections(null, false);\r\n }\r\n\r\n /**\r\n * Function that updates the amount of insurance you have entered.\r\n */\r\n handleValidRange = (isValidRange) => {\r\n this.setState({ isValidRange: isValidRange });\r\n }\r\n\r\n /**\r\n * Process the call to pass to the next component\r\n */\r\n handleClickNext = async () => {\r\n this.setState({ loading: true });\r\n let listRider = this.selectedRiderListService.GetRiderSelectLocalStorage(this.props.idTSVProduct);\r\n let isValid = true;\r\n //let isValidRider = this.state.riders.minimumPremium == 'Inválida' ? false : true;\r\n let isValidRider = this.state.riders.minimumPremium == 'Inválida' ? false : true;\r\n if (this.state.isValidRange && isValidRider) {\r\n if (listRider != null && listRider.length > 0) {\r\n this.setState({ emptyList: null });\r\n isValid = true;\r\n let applicationSent = await this.selectedRiderListService.SendApplicationSale();\r\n if (applicationSent) {\r\n let currentCategory = this.jsonExchangeTSV.getCurrentSerie();\r\n if (applicationSent.success) {\r\n let JSONprocessFileCreate = await this.selectedRiderListService.CreateJSONProcessFile();\r\n if (!JSONprocessFileCreate) {\r\n this.props.handleErrorInComponent(true);\r\n } else {\r\n const token = this.tokenService.DecryptToken();\r\n let insuranceApplication = {\r\n 'idTSVApplication': applicationSent.data,\r\n 'name': 'N/A',\r\n 'firstSurname': 'N/A',\r\n 'email': 'N/A',\r\n 'phone': 'N/A',\r\n 'comments': 'N/A',\r\n 'idCategory': currentCategory.id_series ? Number(currentCategory.id_series) : null,\r\n 'idJSONProcess': JSONprocessFileCreate.idJSONProcessFile ? JSONprocessFileCreate.idJSONProcessFile : null\r\n };\r\n let applicationSaved = await this.insuranceApplicationServices.AddInsuranceApp\r\n (insuranceApplication, token);\r\n\r\n if (!applicationSaved || !applicationSaved.statusResponse) {\r\n this.props.handleErrorInComponent(true);\r\n\r\n } else {\r\n let selectedProduct = this.jsonExchangeTSV.getCurrentSelectedProduct();\r\n this.jsonExchangeTSV.setInsuredPersons(this.selectedProductlistServices.\r\n ProcessInsuredPersonsApproved(\r\n selectedProduct.insured_persons_approved));\r\n window.open(`${REACT_APP_URL_TSV_REQUEST}${insuranceApplication.idTSVApplication}`, '_blank');\r\n this.setState({ loading: false, send: true, urlRedirect: `${REACT_APP_URL_TSV_REQUEST}${insuranceApplication.idTSVApplication}` });\r\n }\r\n }\r\n\r\n } else {\r\n this.props.handleErrorInComponent(true);\r\n\r\n }\r\n } else {\r\n this.props.handleErrorInComponent(true);\r\n }\r\n } else {\r\n isValid = false;\r\n this.setState({ emptyList: \"*Debe seleccionar al menos un suplemento\" });\r\n }\r\n\r\n this.state.riders.requiredRiderCategoriesInfo.map((rider) => {\r\n if (!rider.hideInDirectSale) {\r\n if (rider.validationMessageIsVisible) {\r\n isValid = false;\r\n }\r\n }\r\n });\r\n if (isValid) {\r\n this.props.handleClickNext();\r\n }\r\n }\r\n }\r\n /**\r\n* Renders a modal with de information of each answer option.\r\n*/\r\n showModal(title, description) {\r\n let modalOptions = { show: true, title: title, description: description, differentIcon: true };\r\n this.setState({ modalOptions: modalOptions });\r\n }\r\n\r\n /**\r\n * Close the modal with de information of each answer option.\r\n */\r\n closeModal = () => {\r\n let modalOptions = { show: false };\r\n this.setState({\r\n modalOptions: modalOptions\r\n });\r\n };\r\n\r\n showProyections = (proyectionsUI, show) => {\r\n this.setState({ proyections: show, proyectionsUI: proyectionsUI });\r\n }\r\n getValues = (vaule1, value2) => {\r\n this.setState({ currentValue: vaule1, guaranteedValue: value2 });\r\n }\r\n getNumber(value) {\r\n let newValue = value.replace(\",\", \"\");\r\n return newValue;\r\n }\r\n /**\r\n * Replace text to a numeric value.\r\n * @param {String} value The value used in the component.\r\n * @return {Number} The numeric value.\r\n */\r\n getAmountText(value) {\r\n let response = value.replace(\"Max: $\", \"\").replace(\"Min: $\", \"\");\r\n let newValue = response.replace(\",\", \"\");\r\n return newValue;\r\n }\r\n /**\r\n * Function that updates the selected product and updates it in the localstorage\r\n * @param {*} event select field event \r\n */\r\n handleProduct = (event) => {\r\n let value = event.target.value;\r\n this.setState({ idTSVProductDescription: value });\r\n this.setState({ loading: true });\r\n this.loadRidersCategory(this.state.idTSVProduct, value);\r\n this.showProyections(null, false);\r\n }\r\n render() {\r\n let { riders, listRider, idTSVProduct, temRisk, loading, age, refreshValues, noRiskError, modalOptions, idTSVCategory, isTerms, send, urlRedirect, amount } = this.state;\r\n if (loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (!loading && noRiskError) {\r\n return (\r\n

    \r\n Lo sentimos, en esta categoría no es posible ofrecerle alguno de\r\n nuestros productos. Lo invitamos a valorar nuestras opciones en\r\n otras categorías.\r\n

    \r\n )\r\n } else {\r\n\r\n return (<>\r\n\r\n
    \r\n\r\n

    \r\n Aportaciones y Valores Acumulados Deseados:\r\n

    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n {this.state.idTSVProduct == 'Freedom Whole Life - Ind' ?\r\n
    \r\n \r\n {'Años a Pagar Prima'}\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n : null\r\n\r\n }\r\n
    \r\n
    \r\n {modalOptions.show ?\r\n :\r\n null}\r\n
    \r\n {this.state.errorMessage != '' &&\r\n {this.state.errorMessage} \r\n }\r\n
    \r\n\r\n
    \r\n {this.state.errorMessageSum != '' &&\r\n {this.state.errorMessageSum} \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {'Cubiertas'}

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

    {this.state.opcionesTitle}

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

    {'Prima'}

    \r\n
    \r\n
    \r\n
    \r\n {\r\n\r\n riders.requiredRiderCategoriesInfo.map((rider, index) => {\r\n if (!rider.hideInDirectSale) {\r\n let maxSlider = rider.maxFaceAmount_Slider != null ? Number(rider.maxFaceAmount_Slider) : 0;\r\n let isSlider = maxSlider > 1 ? true : false;\r\n let type = rider.faceAmountSpecification.faceAmountOptions != null &&\r\n (rider.insuredCategories != null && rider.insuredCategories.length > 1) ?\r\n 'selectMultiple' :\r\n (rider.hasMultipleSpecs === true && rider.faceAmountSliderIsVisible === true && isSlider) ?\r\n 'sliderMultiple' :\r\n rider.faceAmountSpecification.faceAmountOptions != null ? 'optionsSelect' :\r\n rider.insuredCategories.length > 1 ? 'categoriesSelect' :\r\n rider.hasMultipleSpecs === true ? 'specsSelect' :\r\n rider.hasSolveTypes == true ? 'solverType' : 'slider';\r\n\r\n let minVal = this.getAmountText(rider.minFaceAmountText);\r\n //rider.categoryName === REACT_APP_BASIC_PLAN && rider.faceAmount < this.getNumber(amount) ? rider.faceAmountText = amount : rider.faceAmountText = rider.faceAmountText;\r\n //rider.categoryName === REACT_APP_BASIC_PLAN && rider.faceAmount < this.getNumber(amount) ? rider.faceAmount = this.getNumber(amount) : rider.faceAmount = rider.faceAmount;\r\n\r\n rider.categoryName === REACT_APP_BASIC_PLAN ? rider.minFaceAmountText = \"Min: $15,000\" : rider.minFaceAmountText = rider.minFaceAmountText;\r\n rider.categoryName === REACT_APP_BASIC_PLAN ? rider.minFaceAmount_Slider = \"15000\" : rider.minFaceAmount_Slider = rider.minFaceAmount_Slider;\r\n\r\n if(rider.categoryName === 'Relevo Pago Prima'){\r\n listRider = this.selectedRiderListService.GetRiderSelectLocalStorage();\r\n listRider.forEach(r => {\r\n if (r.categoryName == \"Relevo Pago Prima\") {\r\n if (rider.faceAmount < this.getNumber(minVal)) {\r\n r.faceAmountText = minVal;\r\n this.selectedRiderListService.SetRiders(listRider);\r\n }\r\n }\r\n });\r\n }\r\n rider.categoryName === 'Relevo Pago Prima' && rider.faceAmount < this.getNumber(minVal) ? rider.faceAmount = this.getNumber(minVal) : rider.faceAmount = rider.faceAmount;\r\n rider.categoryName === 'Relevo Pago Prima' && rider.faceAmountText < this.getNumber(minVal) ? rider.faceAmountText = minVal : rider.faceAmountText = rider.faceAmountText;\r\n \r\n let ref = React.createRef();\r\n return (\r\n \r\n )\r\n }\r\n }\r\n )}\r\n
    \r\n
    \r\n {this.state.emptyList != null &&\r\n {this.state.emptyList} \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Prima Mensual:

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

    {riders.minimumPremium}

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

    \r\n {riders.minimumPremium == 'Inválida' ? '0' : riders.minimumPremium}

    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n {this.state.proyections ? this.state.proyectionsUI : null}\r\n\r\n
    \r\n\r\n
    this.riderListFunction()}>\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {send ?\r\n \r\n : null}\r\n
    \r\n \r\n )\r\n }\r\n }\r\n}\r\nexport default SelectedRiderListS4;","import React from \"react\";\r\nimport { LoadingPage } from \"../../pages/LoadingPage\";\r\nimport './SelectedRiderSaving.css';\r\nimport { SelectedRiderSavingService } from \"../../Services/SelectedRiderSavingService\";\r\nimport { RatesServiceTSV } from \"../../Services/RatesServiceTSV\";\r\nimport { SelectedRiderListService } from \"../../Services/SelectedRiderListService\";\r\nimport { ButtonTSV } from '../ButtonTSV';\r\nimport ReactHTMLTableToExcel from 'react-html-table-to-excel';\r\nconst { REACT_APP_SECTION_HIDE_SAVINGS, REACT_APP_SHOW_SAVINGS_SECTION } = process.env;\r\n\r\nexport class SelectedSavingProjection extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.selectedRiderSavingService = new SelectedRiderSavingService();\r\n this.ratesServiceTSV = new RatesServiceTSV();\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n this.state = {\r\n loading: false,\r\n riders: { details: {}, applicationData: {} }, details: [],\r\n value: this.props.value,\r\n valueEntry: this.props.valueEntry\r\n }\r\n }\r\n\r\n /**\r\n * This method is used to load the rider.\r\n */\r\n loadRidersCategory = async () => {\r\n let payment = this.selectedRiderListService.GetPayment();\r\n let request = {\r\n idTSVProduct: this.props.idTSVProduct,\r\n methodKey: payment.methodKey,\r\n modeIntervals: payment.modeIntervals,\r\n value: this.state.value != \"\" ? this.state.value : null,\r\n amount: this.state.valueEntry != \"\" ? this.state.valueEntry : null,\r\n idTSVCategory: this.props.idTSVCategory\r\n };\r\n\r\n let rider = this.selectedRiderSavingService.GetRiderRequest(request);\r\n\r\n const resultLogin = await this.ratesServiceTSV.Login();\r\n if (resultLogin.statusResponse) {\r\n const resultQuote = await this.ratesServiceTSV.QuoteRiders(rider, resultLogin.data.token);\r\n if (resultQuote.statusResponse) {\r\n let data = resultQuote.data;\r\n let detail = data.details.illustrationEmail != undefined ? data.details.illustrationEmail.policyDetails.sections : [];\r\n let details = data.details != undefined ? data.details : null;\r\n let application = data.applicationData != undefined ? data.applicationData : null;\r\n this.selectedRiderListService.SaveDetailsAndApplicationData(details, application);\r\n\r\n this.setState({\r\n riders: { details: details, applicationData: application },\r\n details: detail, loading: false\r\n });\r\n } else {\r\n if (resultQuote.error) {\r\n this.props.handleErrorInComponent(true);\r\n }\r\n this.setState({ loading: false })\r\n }\r\n }\r\n }\r\n exportProjections() {\r\n\r\n\r\n }\r\n /**\r\n * This method upload the detail the rider\r\n */\r\n componentDidMount() {\r\n this.setState({ loading: true });\r\n this.loadRidersCategory();\r\n }\r\n\r\n render() {\r\n const { loading, details } = this.state;\r\n const { disclaimer } = this.props;\r\n let header = details[1] != undefined ? details[1].entries[0].items : [];\r\n if (loading) {\r\n return (\r\n
    \r\n );\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    \r\n Proyecciones\r\n

    \r\n
    \r\n {details.map((detail, index) => (\r\n\r\n detail.title != REACT_APP_SECTION_HIDE_SAVINGS ?\r\n <> {index === 0 ?\r\n
    \r\n\r\n Información General\r\n
    : null\r\n } {index != 2 ?\r\n
    \r\n {index != 2 ?\r\n
    \r\n {detail.title}\r\n
    \r\n : null\r\n }\r\n <>\r\n {detail.title === REACT_APP_SHOW_SAVINGS_SECTION ?\r\n null\r\n :
    \r\n {detail.entries.map((entry, index) => (\r\n \r\n {entry.items.map((item, indexItem) => (\r\n {item}\r\n ))}\r\n \r\n ))}\r\n
    \r\n }\r\n \r\n {index === 0 ?\r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n : null\r\n }\r\n
    \r\n : null\r\n }\r\n :\r\n null\r\n ))}\r\n
    \r\n Tabla de proyección de depósitos y valores\r\n\r\n {details.map((detail) => (\r\n detail.title != REACT_APP_SECTION_HIDE_SAVINGS ?\r\n <>\r\n
    \r\n <>\r\n {detail.title === REACT_APP_SHOW_SAVINGS_SECTION ?\r\n\r\n \r\n {detail.entries.map((entry, indexEntry) => (\r\n\r\n indexEntry === 0 ?\r\n \r\n {entry.items.map((item, indexItem) => (\r\n \r\n ))}\r\n :\r\n \r\n {entry.items.map((item, indexItemEntry) => (\r\n \r\n ))}\r\n \r\n ))}\r\n
    \r\n

    {item}

    \r\n\r\n
    7 ? '' : 'colum-table-rider'}`} key={indexItemEntry} >{item}
    \r\n : null\r\n }\r\n \r\n
    \r\n :\r\n null\r\n ))}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n

    {disclaimer}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\nexport default SelectedSavingProjection;","import React from \"react\";\r\nimport { LoadingPage } from \"../../pages/LoadingPage\";\r\nimport { Card } from \"react-bootstrap\";\r\nimport { SelectedRiderSavingService } from \"../../Services/SelectedRiderSavingService\";\r\nimport './SelectedRiderSaving.css';\r\nimport { PaymentDetails } from \"../SelectedRiderList/PaymentDetails\";\r\nimport { ButtonTSV } from '../ButtonTSV';\r\nimport { InsuranceAplicationServices } from \"../../Services/InsuranceApplicationServices\";\r\nimport { TokenServices } from \"../../Services/TokenServices\";\r\nimport { JSONExchangeTSV } from \"../../Services/JSONExchangeTSV\";\r\nimport { SelectedSavingProjection } from \"./SelectedSavingProjection\";\r\nimport { SelectedProductListServices } from \"../../Services/SelectedProductListServices\";\r\nimport { ParameterService } from \"../../Services/ParameterService\";\r\nimport { SelectedRiderListService } from \"../../Services/SelectedRiderListService\";\r\nimport { ModalInfo } from '../ModalInfo';\r\n\r\nconst { REACT_APP_PAYMENT_TYPE, REACT_APP_PAYMENT_MODE, REACT_APP_MINIMUM_INITIAL_DEPOSIT,\r\n REACT_APP_DISCLAIMER_PARAM_ID, REACT_APP_MAX_SUM_IRA, REACT_APP_MAX_SUM_ANUALIDAD, REACT_APP_IDTSVPRODUCT_IRA,\r\n REACT_APP_IDTSVPRODUCT_ANUALIDAD, REACT_APP_IDPARAMETER_MONTHLY, REACT_APP_INITIAL_DEPOSIT_DESCRIPTION,\r\n REACT_APP_ADITIONAL_DEPOSIT_DESCRIPTION,REACT_APP_URL_TSV_REQUEST } = process.env;\r\n\r\nexport class SelectedRiderSaving extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.selectedRiderListService = new SelectedRiderListService();\r\n this.selectedRiderSavingService = new SelectedRiderSavingService();\r\n this.insuranceApplicationServices = new InsuranceAplicationServices();\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.selectedProductlistServices = new SelectedProductListServices();\r\n this.parameterServices = new ParameterService();\r\n this.tokenService = new TokenServices();\r\n this.state = {\r\n send: false,\r\n urlRedirect: `${REACT_APP_URL_TSV_REQUEST}`,\r\n loading: false, value: '', valueEntry: '', errorMessageInitial: '', validInitial: true,\r\n errorMessageInitialEntry: '', validEntry: true, refresh: false, refreshType: false, projections: false,\r\n isUpdateValue: true, isUpdateEntry: true, errorMessage: '', disclaimer: '',\r\n errorMessageSum: '',\r\n modalOptions: { show: false, title: '', description: '', differentIcon: true },\r\n };\r\n this.riderListFunction = this.riderListFunction.bind(this);\r\n }\r\n\r\n /**\r\n * Function to return to the previous screen.\r\n */\r\n riderListFunction() {\r\n if (this.props.handleClickBackRider) {\r\n this.props.handleClickBackRider();\r\n }\r\n }\r\n\r\n /**\r\n * This method upload the payment method information\r\n */\r\n componentDidUpdate(prevProps, prevState) {\r\n }\r\n\r\n /**\r\n * This method upload the payment method information\r\n */\r\n async componentDidMount() {\r\n let response = this.selectedRiderSavingService.GetCurrentSavingAmount();\r\n\r\n if (response) {\r\n this.setState({ value: response.initial_deposit, valueEntry: response.additional_deposit });\r\n } else {\r\n this.selectedRiderSavingService.SetSavingAmount(this.state.value, this.state.valueEntry);\r\n }\r\n let disclaimers = await this.parameterServices.GetAllParameterById(\r\n { 'idParameterValue': Number(REACT_APP_DISCLAIMER_PARAM_ID) });\r\n if (disclaimers.data.length > 0) {\r\n let selectedProduct = this.jsonExchangeTSV.getCurrentSelectedProduct();\r\n let currentDisclaimer = disclaimers.data.filter(disclaimer => Number(disclaimer.name)\r\n == Number(selectedProduct.id_product));\r\n if (currentDisclaimer[0]) {\r\n this.setState({ disclaimer: currentDisclaimer[0].value });\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Function to update the status of the payment method.\r\n */\r\n refreshData = () => {\r\n let refresh = !this.state.refresh;\r\n this.setState({ refresh: refresh });\r\n }\r\n\r\n /**\r\n * Function to update the status of the payment frequency.\r\n */\r\n refreshTypeData = () => {\r\n let refreshType = !this.state.refreshType;\r\n let refresh = !this.state.refresh;\r\n this.setState({ refreshType: refreshType, refresh: refresh });\r\n }\r\n\r\n /**\r\n * Function that changes the payment type that has been selected.\r\n * @param {Event} event change value of selection field\r\n */\r\n handleChangeInitial(event) {\r\n let response = this.selectedRiderSavingService\r\n .HandleInputChange(event.target.value, Number(REACT_APP_MINIMUM_INITIAL_DEPOSIT));\r\n let { value, message, valid } = response;\r\n this.setState({ value: value, errorMessageInitial: message, validInitial: valid, isUpdateValue: false });\r\n\r\n if (response.valid) {\r\n this.selectedRiderSavingService.SetSavingAmount(response.value, this.state.valueEntry);\r\n this.validateAmountSum(value, this.state.valueEntry);\r\n }\r\n }\r\n\r\n /**\r\n * Function that changes the payment type that has been selected.\r\n * @param {Event} event change value of selection field\r\n */\r\n handleChangeEntry(event) {\r\n let response = this.selectedRiderSavingService.HandleInputChange(event.target.value, null);\r\n let { value, message, valid } = response;\r\n this.setState({ valueEntry: value, errorMessageEntry: message, validEntry: valid, isUpdateEntry: false });\r\n\r\n if (valid) {\r\n this.selectedRiderSavingService.SetSavingAmount(this.state.value, value);\r\n this.validateAmountSum(this.state.value, value);\r\n }\r\n\r\n\r\n }\r\n\r\n validateAmountSum(ValInitial, ValEntry) {\r\n let payment = this.selectedRiderListService.GetPayment();\r\n if (Number(payment.modeIntervals) === Number(REACT_APP_IDPARAMETER_MONTHLY)) {\r\n\r\n let idProduct = this.props.idTSVProduct;\r\n let errorMessage = '';\r\n let max = 0;\r\n\r\n let initialValue = ValInitial !== '' && ValInitial ? ValInitial.replaceAll(',', '') * 1 : 0;\r\n let aditionalValue = ValEntry !== '' && ValEntry ? ValEntry.replaceAll(',', '') * 12 : 0;\r\n let total = initialValue + aditionalValue;\r\n\r\n\r\n let totalFormat = this.selectedRiderSavingService.HandleInputChange(total.toString(), Number(total));\r\n\r\n if (idProduct === REACT_APP_IDTSVPRODUCT_IRA) {\r\n max = Number(REACT_APP_MAX_SUM_IRA);\r\n errorMessage = 'Para el producto de IRA el monto anual del depósito inicial junto al depósito adicional no puede sobrepasar un total de $5.000. Actualmente está solicitando $';\r\n }\r\n\r\n if (idProduct == REACT_APP_IDTSVPRODUCT_ANUALIDAD) {\r\n max = Number(REACT_APP_MAX_SUM_ANUALIDAD);\r\n errorMessage = 'Para el producto de Anualidad el monto anual del depósito inicial junto al depósito adicional no puede sobrepasar un total de $500.000. Actualmente está solicitando $';\r\n }\r\n\r\n if (Number(total) > max) {\r\n this.setState({\r\n validInitial: false,\r\n validEntry: false,\r\n errorMessageSum: `${errorMessage}${totalFormat.value}`\r\n })\r\n } else {\r\n this.setState({\r\n validInitial: true,\r\n validEntry: true,\r\n errorMessageSum: ''\r\n })\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n /**\r\n * Process the call to pass to the next component\r\n */\r\n handleClickNext = async () => {\r\n this.setState({ loading: true });\r\n if (this.isValid()) {\r\n if (this.state.isUpdateValue && this.state.isUpdateEntry) {\r\n this.props.handleClickNext();\r\n let applicationSent = await this.selectedRiderSavingService.SendApplicationSale();\r\n if (applicationSent) {\r\n let currentCategory = this.jsonExchangeTSV.getCurrentSerie();\r\n if (applicationSent.success) {\r\n let JSONprocessFileCreate = await this.selectedRiderSavingService.CreateJSONProcessFile();\r\n if (!JSONprocessFileCreate) {\r\n this.props.handleErrorInComponent(true);\r\n } else {\r\n const token = this.tokenService.DecryptToken();\r\n let insuranceApplication = {\r\n 'idTSVApplication': applicationSent.data,\r\n 'name': 'N/A',\r\n 'firstSurname': 'N/A',\r\n 'email': 'N/A',\r\n 'phone': 'N/A',\r\n 'comments': 'N/A',\r\n 'idCategory': currentCategory.id_series ? Number(currentCategory.id_series) : null,\r\n 'idJSONProcess': JSONprocessFileCreate.idJSONProcessFile ? JSONprocessFileCreate.idJSONProcessFile : null\r\n };\r\n let applicationSaved = await this.insuranceApplicationServices.AddInsuranceApp\r\n (insuranceApplication, token);\r\n\r\n if (!applicationSaved || !applicationSaved.statusResponse) {\r\n this.props.handleErrorInComponent(true);\r\n\r\n } else {\r\n let selectedProduct = this.jsonExchangeTSV.getCurrentSelectedProduct();\r\n this.jsonExchangeTSV.setInsuredPersons(this.selectedProductlistServices.\r\n ProcessInsuredPersonsApproved(\r\n selectedProduct.insured_persons_approved));\r\n window.open(`${REACT_APP_URL_TSV_REQUEST}${insuranceApplication.idTSVApplication}`, '_blank');\r\n this.setState({ loading: false, send: true, urlRedirect: `${REACT_APP_URL_TSV_REQUEST}${insuranceApplication.idTSVApplication}` }); \r\n }\r\n }\r\n } else {\r\n this.props.handleErrorInComponent(true);\r\n }\r\n } else {\r\n this.props.handleErrorInComponent(true);\r\n }\r\n } else {\r\n let errorMessage = \"*Para completar la solicitud debe primero VER PROYECCIONES\";\r\n this.setState({ errorMessage: errorMessage });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Renders a modal with de information of each answer option.\r\n */\r\n showModal(title, description) {\r\n let modalOptions = { show: true, title: title, description: description, differentIcon: true };\r\n this.setState({ modalOptions: modalOptions });\r\n }\r\n\r\n /**\r\n * Close the modal with de information of each answer option.\r\n */\r\n closeModal = () => {\r\n let modalOptions = { show: false };\r\n this.setState({\r\n modalOptions: modalOptions\r\n });\r\n };\r\n\r\n\r\n\r\n /**\r\n * Function that validates that the entered values are correct\r\n */\r\n isValid() {\r\n if (!this.state.validEntry || !this.state.validInitial) {\r\n return false\r\n }\r\n\r\n let { value, valueEntry } = this.state;\r\n let responseValue = this.selectedRiderSavingService.HandleInputChange(value, Number(REACT_APP_MINIMUM_INITIAL_DEPOSIT));\r\n this.setState({ value: responseValue.value, errorMessageInitial: responseValue.message, validInitial: responseValue.valid });\r\n\r\n let responseEntry = this.selectedRiderSavingService.HandleInputChange(valueEntry, null);\r\n this.setState({ valueEntry: responseEntry.value, errorMessageEntry: responseEntry.message, validEntry: responseEntry.valid });\r\n\r\n if (responseValue.valid && responseEntry.valid) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Show and update the projections table\r\n */\r\n showProjections = () => {\r\n if (this.isValid()) {\r\n this.setState({ projections: true, isUpdateEntry: true, isUpdateValue: true, errorMessage: '' });\r\n }\r\n }\r\n\r\n /**\r\n * Hide the projection table \r\n */\r\n hideProjections = () => {\r\n this.setState({ projections: false });\r\n }\r\n\r\n render() {\r\n const { loading, disclaimer, modalOptions, send, urlRedirect } = this.state;\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n\r\n
    \r\n

    \r\n Ingresa la información para ver tu proyección de ahorro:\r\n

    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {'Depósito Inicial'}\r\n \r\n this.handleChangeInitial(event)}\r\n value={this.state.value}\r\n className={this.state.validInitial ? ('form-control custom-input input-rider') : ('form-control is-invalid is-invalid-border custom-input')}\r\n required={true}\r\n />\r\n \r\n this.showModal('Depósito Inicial', REACT_APP_INITIAL_DEPOSIT_DESCRIPTION)}\r\n style={this.state.validInitial ? { display: 'block' } : { display: 'none' }}>\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n {!this.state.validInitial ?\r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n
    \r\n {!this.state.validInitial &&\r\n {this.state.errorMessageInitial} \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {'Depósito Adicional'}\r\n \r\n this.handleChangeEntry(event)}\r\n value={this.state.valueEntry}\r\n required={true}\r\n className={this.state.validEntry ? ('form-control custom-input') : ('form-control is-invalid is-invalid-border custom-input')}\r\n />\r\n \r\n this.showModal('Depósito Adicional', REACT_APP_ADITIONAL_DEPOSIT_DESCRIPTION)}\r\n style={this.state.validEntry ? { display: 'block' } : { display: 'none' }}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {!this.state.validEntry ?\r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n
    \r\n {!this.state.validEntry &&\r\n {this.state.errorMessageEntry} \r\n }\r\n
    \r\n
    \r\n
    \r\n {modalOptions.show ?\r\n :\r\n null}\r\n
    \r\n {this.state.errorMessage != '' &&\r\n {this.state.errorMessage} \r\n }\r\n
    \r\n\r\n
    \r\n {this.state.errorMessageSum != '' &&\r\n {this.state.errorMessageSum} \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    this.riderListFunction()}>\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {send ?\r\n \r\n : null}\r\n
    \r\n {this.state.projections ?\r\n : null\r\n }\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n )\r\n }\r\n}\r\nexport default SelectedRiderSaving;","import React, { Component } from 'react';\r\nimport { Procedure } from '../../Services/Procedure';\r\nimport './StepperForm.css';\r\nimport { HeaderStepper } from '../../components/HeaderStepper';\r\nimport Stepper from '../../../bootstrap/bs-stepper';\r\nimport { LoadingPage } from '../../pages/LoadingPage';\r\nimport { JSONExchangeTSV } from '../../Services/JSONExchangeTSV';\r\nimport { QuestionServices } from '../../Services/QuestionServices';\r\nimport { CardType } from '../CardType';\r\nimport { SelectedRiderList } from '../../components/SelectedRiderList';\r\nimport { SelectedRiderListS4 } from '../../components/SelectedRiderS4';\r\n\r\nimport { SelectedRiderSaving } from \"../../components/SelectedRiderSaving\";\r\nimport { ButtonTSV } from '../ButtonTSV';\r\nimport { WebServicesTSV } from '../../Services/WebServicesTSV'\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst matrix = process.env.REACT_APP_MATRIX;\r\nconst mainMatrix = process.env.REACT_APP_MAIN_MATRIX;\r\nconst { REACT_APP_IDTSVCATEGORY_SAVING, REACT_APP_ID_LIFE, REACT_APP_ID_TEST,\r\n REACT_APP_SELECT_PRODUCT, REACT_APP_IDTSVCATEGORY_HEALTH,REACT_APP_IDTSVCATEGORY_LIFE, REACT_APP_IDTSVCATEGORY_UL } = process.env;\r\n\r\nexport class StepperForm extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.questionServices = new QuestionServices();\r\n this.procedure = new Procedure();\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.webServicesTSV = new WebServicesTSV();\r\n this.state = {\r\n stepper: null,\r\n step: 1,\r\n totalQuestions: 0,\r\n fields: [{}],\r\n fieldsRisk: [{}],\r\n fieldsProduct: [{}],\r\n stepField: 1,\r\n stepBack: 1,\r\n formValid: false,\r\n error: false,\r\n errorInFields: false,\r\n questionBodyWithError: '',\r\n errorMessage: '',\r\n loading: true,\r\n nextProp: false,\r\n selectProduct: false,\r\n refreshStepper: false,\r\n indexNext: 0,\r\n productQuestionNumber: 0,\r\n mainMatrix: [{}],\r\n isRider: false,\r\n currentProductName: '',\r\n selectProductTSV: { idTSVProduct: 0, idTSVCategory: 0, productTermList: [] }\r\n }\r\n this.handleSetProps = this.handleSetProps.bind(this);\r\n this.handleErrorInComponent = this.handleErrorInComponent.bind(this);\r\n this.handleProductNameInfo = this.handleProductNameInfo.bind(this);\r\n this.goRiders = this.goRiders.bind(this);\r\n\r\n }\r\n /**\r\n * get the questions for the stepper\r\n */\r\n componentDidMount() {\r\n this.getFetchServices();\r\n }\r\n\r\n /**\r\n * Changes the error state in case a TSV service is down\r\n */\r\n fetchServices = async () => {\r\n let responseOverall = await this.webServicesTSV.OverallLoadStatus();\r\n let responsePolicy = await this.webServicesTSV.PolicyLoadStatus();\r\n\r\n if (responseOverall.statusResponse && responsePolicy.statusResponse) {\r\n if (!responseOverall.data.data || !responsePolicy.data.data) {\r\n this.setState({ error: true, loading: false });\r\n } else {\r\n this.setState({ loading: false });\r\n this.getFields();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Changes the error state in case a TSV service is down\r\n */\r\n async getFetchServices() {\r\n this.setState({ loading: true });\r\n await this.fetchServices();\r\n }\r\n\r\n /**\r\n * if refreshStepper is true you must restart the stepper with the set of risk questions\r\n * @param {*} prevProps previous value of properties\r\n * @param {*} prevState previous value of state\r\n */\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevState.refreshStepper !== this.state.refreshStepper) {\r\n let stepper = new Stepper(document.querySelector('#stepper1'));\r\n let selectProduct = this.state.step === this.state.productQuestionNumber;\r\n this.setState({ stepper: stepper, selectProduct: selectProduct }, function next() {\r\n let step = this.state.step === 0 ? 1 : this.state.step;\r\n this.setNext(step);\r\n });\r\n }\r\n }\r\n /**\r\n * Get the questions according to the category id and create the stepper\r\n */\r\n getFields() {\r\n this.questionServices.GetDataFields({ \"idCategory\": this.props.idCategory }).then(result => {\r\n if (result.statusResponse) {\r\n let errorInFields = false;\r\n let fields = result.fields;\r\n let questionBodyWithError = '';\r\n fields.map((field, index) => {\r\n if (field.options) {\r\n if (field.options.length === 0) {\r\n errorInFields = true;\r\n questionBodyWithError = field.body;\r\n }\r\n }\r\n field.ref = React.createRef();\r\n field.value = '';\r\n field.index = index;\r\n field.idCategory = this.props.idCategory;\r\n field.totalFields = fields.length;\r\n });\r\n this.setState({ questionBodyWithError: questionBodyWithError, errorInFields: errorInFields, fields: fields, totalQuestions: fields.length, fieldsProduct: fields, loading: false, error: false });\r\n if (!errorInFields) {\r\n let stepper = new Stepper(document.querySelector('#stepper1'));\r\n this.setState({ stepper: stepper });\r\n }\r\n } else {\r\n this.setState({ loading: false, error: true });\r\n }\r\n });\r\n\r\n }\r\n /**\r\n * Get the risk questions according to the product id \r\n */\r\n handleGetFieldsRisk = async (idProduct, idTSVProduct, idTSVCategory, productTermList) => {\r\n if (Number(this.props.idCategory) === Number(REACT_APP_ID_LIFE) || Number(this.props.idCategory) === Number(REACT_APP_ID_TEST)) {\r\n this.questionServices.GetRiskDataFields(idProduct, this.props.idCategory).then(result => {\r\n if (result.statusResponse) {\r\n let fieldsRiskProduct = result.fields;\r\n fieldsRiskProduct.map((field, index) => {\r\n field.ref = React.createRef();\r\n field.value = ''\r\n field.index = index\r\n field.back = index\r\n field.idCategory = this.props.idCategory\r\n });\r\n let totalQuestions = fieldsRiskProduct.length;\r\n this.setState({\r\n fields: fieldsRiskProduct, fieldsRisk: fieldsRiskProduct, step: 0, indexNext: 0, refreshStepper: true,\r\n totalQuestions: totalQuestions, selectProductTSV: { idTSVProduct: idTSVProduct, idTSVCategory: idTSVCategory, productTermList: productTermList }, nextProp: !this.state.nextProp\r\n });\r\n } else {\r\n this.setState({ loading: false, error: true });\r\n }\r\n\r\n });\r\n } else {\r\n this.setState({ isRider: true, selectProduct: false, selectProductTSV: { idTSVProduct: idTSVProduct, idTSVCategory: idTSVCategory } });\r\n }\r\n\r\n }\r\n /**\r\n * set the error variable according to the result of the WS tsv\r\n * @param {*} error boolean with value true or false\r\n */\r\n handleErrorInComponent(error, errorMessage) {\r\n if (errorMessage) {\r\n this.setState({ error: error, errorMessage: errorMessage });\r\n } else {\r\n this.setState({ error: error });\r\n\r\n }\r\n }\r\n\r\n /**\r\n * If next and formValid are true, determine if the question requires hidden processing, and update the current question with the value of the previous question for the back pass\r\n * @param {*} formValid Determines if the question is answered, if the question has an answer value formValid is true\r\n * @param {*} stepField Value of the next question\r\n * @param {*} next Boolean that determines whether to pass or the next question\r\n * @param {*} field Current question object\r\n */\r\n async handleSetProps(formValid, stepField, next, field) {\r\n this.setState({\r\n formValid: formValid, next: next, stepField: stepField\r\n })\r\n let back = 0;\r\n let totalQuestions = this.state.totalQuestions;\r\n let updatedFields = [...this.state.fields];\r\n let fieldsProduct = [...this.state.fieldsProduct];\r\n let { idTSVCategory, idTSVProduct } = this.state.selectProductTSV;\r\n this.state.formValid = formValid;\r\n if (next) {\r\n if (formValid) {\r\n if (stepField !== 0 && stepField !== undefined) {\r\n if (stepField <= totalQuestions) {\r\n let updatedField = this.getNextField(stepField);\r\n let selectProduct = false;\r\n if (updatedField[0].hidden) {\r\n let resultApi = await this.procedure.callWS(updatedField[0], field, fieldsProduct);\r\n if (resultApi.statusResponse && resultApi.data !== null) {\r\n if (updatedField[0].idProduct == '') {\r\n selectProduct = resultApi.data === 0;\r\n stepField = resultApi.data !== 0 ? resultApi.data : this.getStepSelectProduct(field.questionNumber);\r\n } else {\r\n stepField = resultApi.data;\r\n if (resultApi.data === 0) {\r\n selectProduct = false;\r\n stepField = totalQuestions;\r\n this.goRiders(idTSVProduct, idTSVCategory);\r\n }\r\n }\r\n updatedField = this.getNextField(stepField);\r\n } else {\r\n this.setState({ error: true });\r\n }\r\n }\r\n back = field.questionNumber;\r\n if (updatedField[0].back !== undefined) {\r\n updatedField[0].back = back;\r\n if (field.type === mainMatrix) {\r\n let childMatriz = updatedFields.filter(question => question.type === matrix);\r\n childMatriz.forEach(element => {\r\n element.ref.current.state.renderBase = false;\r\n });\r\n }\r\n updatedFields.splice(updatedField[0].index, 1, updatedField[0]);\r\n this.setState({ fields: updatedFields, selectProduct: selectProduct });\r\n this.compareSecuence(back, stepField, field);\r\n }\r\n }\r\n } else {\r\n if (field.idProduct !== '') {\r\n this.goRiders(idTSVProduct, idTSVCategory);\r\n } else {\r\n stepField = this.getStepSelectProduct(field.questionNumber);\r\n }\r\n }\r\n }\r\n this.setNext(stepField);\r\n\r\n }\r\n }\r\n /**\r\n * Get the object of the following question\r\n * @param {*} stepField next question number\r\n * @returns object of the following question\r\n */\r\n getNextField(stepField) {\r\n let updatedFields = [...this.state.fields];\r\n let nextField = updatedFields.filter(nextF => nextF.questionNumber === stepField);\r\n let updatedField = { ...nextField };\r\n return updatedField;\r\n }\r\n /**\r\n * Get the step where the product selection is located\r\n * @param {*} questionNumber number of the previous question to return from product selection\r\n * @returns the step where the product selection is located\r\n */\r\n getStepSelectProduct(questionNumber) {\r\n let updatedFields = [...this.state.fields];\r\n let nextField = updatedFields.filter(nextF => nextF.type === 'Seleccion Producto');\r\n let updatedField = { ...nextField };\r\n updatedField[0].back = questionNumber;\r\n let stepField = updatedField[0].questionNumber;\r\n updatedFields.splice(updatedField[0].index, 1, updatedField[0]);\r\n this.setState({ fields: updatedFields, selectProduct: true, productQuestionNumber: stepField });\r\n return stepField;\r\n }\r\n /**\r\n * Determine if the questions are in sequence (1,2,3,4 ...)\r\n * If not, delete the questions previously saved in the local storage that do not follow the sequence\r\n * @param {*} back Number of the previous question\r\n * @param {*} next Next question number\r\n * @param {*} field The current field\r\n */\r\n compareSecuence(back, next, field) {\r\n let backSecuence = Number(back + 1);\r\n let nextNumber = Number(next);\r\n if (backSecuence !== nextNumber) {\r\n let fields = [...this.state.fields];\r\n for (let index = backSecuence; index < nextNumber - 1; index++) {\r\n let field = fields.filter(field => field.questionNumber === index);\r\n let nextfield = fields.filter(field => field.questionNumber === backSecuence);\r\n if (field[0] && !nextfield[0].hidden) {\r\n let product_questions = this.jsonExchangeTSV.getCurrentProductQuestions();\r\n let removeLocalStorageQuestion = product_questions.filter(question => question.id_question === field[0].id);\r\n if (removeLocalStorageQuestion.length > 0) {\r\n this.jsonExchangeTSV.removeQuestionOfProductQuestions(removeLocalStorageQuestion[0]);\r\n }\r\n }\r\n\r\n }\r\n }\r\n // only in no matrix questions\r\n let fieldsQuestions = [...this.state.fields];\r\n if (Array.isArray(field.options) && Number(field.idQuestionClass) === Number(REACT_APP_SELECT_PRODUCT)) {\r\n if (this.checkDifferentSteps(field)) {\r\n let product_questions = this.jsonExchangeTSV.getCurrentProductQuestions();\r\n let questionsToRemove = product_questions.filter\r\n (question => question.question_number > field.questionNumber);\r\n let nextQuestionNumber = field.questionNumber + 1;\r\n let nextfield = fieldsQuestions.filter(field => field.questionNumber === nextQuestionNumber);\r\n let isNextFieldHidden = nextfield[0] ? nextfield[0].hidden : null;\r\n if (isNextFieldHidden) {\r\n questionsToRemove = questionsToRemove.filter(question => question.question_number !== nextfield[0].questionNumber)\r\n }\r\n if (questionsToRemove.length > 0) {\r\n for (const questionToRemove of questionsToRemove) {\r\n this.jsonExchangeTSV.removeQuestionOfProductQuestions(questionToRemove);\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Checks if a question has different possible steps.\r\n * @param {Object} field the question.\r\n * @returns {Boolean} true if the question has different possible steps.\r\n */\r\n checkDifferentSteps = (field) => {\r\n let counter = 0;\r\n for (const option of field.options) {\r\n if (counter < field.options.length && option.step != field.options[counter + 1] && option.step !== 0) {\r\n return true;\r\n }\r\n counter++;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Returns to the previous question\r\n * @param {*} stepBack Previous step\r\n */\r\n handleClickBack = (stepBack) => {\r\n if (stepBack === 0) {\r\n this.backToSelectProduct();\r\n } else {\r\n this.setState({ step: stepBack, nextProp: false });\r\n this.state.stepper.to(stepBack);\r\n }\r\n }\r\n /**\r\n * reload the stepper with the product selection question \r\n */\r\n backToSelectProduct() {\r\n let { fieldsProduct, productQuestionNumber } = this.state;\r\n let totalQuestions = fieldsProduct.length;\r\n this.setState({\r\n fields: fieldsProduct, totalQuestions: totalQuestions, step: productQuestionNumber,\r\n refreshStepper: !this.state.refreshStepper, nextProp: !this.state.nextProp\r\n });\r\n }\r\n\r\n /**\r\n * Go to the next question\r\n * Only if the fields of the current question have been filled\r\n * @param {*} stepField Next question number\r\n */\r\n setNext = (stepField) => {\r\n const { formValid } = this.state;\r\n if (formValid) {\r\n this.setState({ stepField: stepField, step: stepField });\r\n this.state.stepper.to(stepField);\r\n } else {\r\n this.setState({ next: true });\r\n }\r\n this.setState({ nextProp: false });\r\n }\r\n\r\n onSubmit(e) {\r\n e.preventDefault()\r\n }\r\n\r\n /**\r\n * Process the call to pass to the next question, change the nextProp to true and the indexNext with the index of the component\r\n * @param {*} field Current question object\r\n */\r\n handleClickNext = (field) => {\r\n if (field != undefined) {\r\n const childelement = field.ref.current;\r\n this.setState({ nextProp: true, indexNext: childelement.props.index, selectProduct: false });\r\n if (this.state.step === this.state.totalQuestions && !this.state.selectProduct) {\r\n let { idTSVCategory, idTSVProduct } = this.state.selectProductTSV;\r\n this.goRiders(idTSVProduct, idTSVCategory);\r\n }\r\n try {\r\n window.scrollTo(0, 0);\r\n }\r\n catch{\r\n console.log('error scroll top');\r\n }\r\n }\r\n }\r\n /**\r\n * Updates the selected product information in the header of the page \r\n * @param {String} name The current product name\r\n */\r\n handleProductNameInfo = (name) => {\r\n this.setState({ currentProductName: `: ${name}` });\r\n }\r\n /**\r\n * set isRider to true to display the riders screen\r\n */\r\n goRiders = (idTSVProduct, idTSVCategory) => {\r\n let productTermList = this.state.selectProductTSV.productTermList;\r\n this.setState({\r\n isRider: true,\r\n selectProduct: false,\r\n selectProductTSV: { idTSVCategory: idTSVCategory, idTSVProduct: idTSVProduct, productTermList: productTermList }\r\n });\r\n }\r\n /**\r\n * function for step back riders, should be returned to stepper with product selection questions\r\n */\r\n handleClickBackRider = () => {\r\n let { fieldsProduct, productQuestionNumber } = this.state;\r\n this.setState({\r\n fields: fieldsProduct, totalQuestions: fieldsProduct.length, nextProp: true, isRider: false, selectProduct: true,\r\n step: productQuestionNumber, refreshStepper: !this.state.refreshStepper, selectProductTSV: { idTSVCategory: 0, idTSVProduct: 0 }\r\n });\r\n }\r\n render() {\r\n const controls = this.state.fields;\r\n let { totalQuestions, step, currentProductName } = this.state;\r\n const percentageClass = `${((step * 100) / totalQuestions)}%`;\r\n const { idCategory } = this.props;\r\n const { nextProp, indexNext, selectProduct, fields } = this.state;\r\n const currentCategory = this.jsonExchangeTSV.getCurrentSerie();\r\n if (this.state.loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n else if (this.state.error && this.state.errorMessage === '') {\r\n return (\r\n <>\r\n

    \r\n En este momento no podemos continuar con la solicitud. Por favor intente más tarde.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n ({ ...location, pathname: \"/compra\" })}>\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n else if (this.state.error && this.state.errorMessage !== '') {\r\n return (\r\n <>\r\n

    \r\n {this.state.errorMessage}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n ({ ...location, pathname: \"/compra\" })}>\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n );\r\n }\r\n else if (this.state.errorInFields) {\r\n return (\r\n <>\r\n

    \r\n La pregunta: {this.state.questionBodyWithError}, no tiene opciones de respuesta. Por favor contacte al administrador.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n ({ ...location, pathname: \"/compra\" })}>\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n else if (this.state.isRider) {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {currentCategory.name}{currentProductName}

    \r\n
    \r\n
    \r\n {this.state.selectProductTSV.idTSVCategory === REACT_APP_IDTSVCATEGORY_SAVING ?\r\n \r\n \r\n : this.state.selectProductTSV.idTSVCategory !== REACT_APP_IDTSVCATEGORY_UL ?\r\n \r\n \r\n : this.state.selectProductTSV.idTSVCategory === REACT_APP_IDTSVCATEGORY_UL ?\r\n \r\n : null\r\n }\r\n
    \r\n \r\n )\r\n } else {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    {currentCategory.name}{currentProductName}

    \r\n
    \r\n {\r\n controls.map((field, index) => {\r\n return (\r\n \r\n );\r\n\r\n })\r\n }\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n}","import './LandingPage.css';\r\n\r\nimport React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { CategoryList } from '../../components/CategoryCard/CategoryList';\r\nimport { LocalStorageTokenServices } from '../../Services/LocalStorageTokenServices';\r\nimport { TokenServices } from '../../Services/TokenServices';\r\nimport { CategoryServices } from '../../Services/CategoryServices';\r\nimport Slider from \"react-slick\";\r\nexport class LandingPage extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n step: 0, animation: 'entrade-left',\r\n slideIndex: 0,\r\n updateCount: 0,\r\n data: []\r\n };\r\n this.categoryServices = new CategoryServices();\r\n this.localStorageTokenServices = new LocalStorageTokenServices();\r\n this.tokenService = new TokenServices();\r\n this.next = this.next.bind(this);\r\n this.previous = this.previous.bind(this);\r\n }\r\n fetchData = async () => {\r\n const token = this.tokenService.DecryptToken();\r\n const response = await this.categoryServices.GetCategories(token);\r\n if (response.statusResponse)\r\n this.setState({\r\n data: response.data\r\n })\r\n }\r\n\r\n async getDataCategories() {\r\n await this.localStorageTokenServices.RefreshDateExpirationToken();\r\n await this.fetchData();\r\n }\r\n\r\n componentDidMount() {\r\n this.getDataCategories()\r\n }\r\n\r\n NextArrow(props) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n PrevArrow(props) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n nextAnimation(step) {\r\n this.slider2.slickGoTo(step);\r\n this.setState({\r\n step: step\r\n });\r\n }\r\n next() {\r\n this.slider.slickNext();\r\n }\r\n previous() {\r\n this.slider.slickPrev();\r\n }\r\n\r\n render() {\r\n const settings = {\r\n dots: false,\r\n infinite: true,\r\n speed: 500,\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n responsive: [\r\n {\r\n breakpoint: 1024,\r\n settings: {\r\n slidesToShow: 3,\r\n slidesToScroll: 3,\r\n infinite: true,\r\n dots: true\r\n }\r\n },\r\n {\r\n breakpoint: 600,\r\n settings: {\r\n slidesToShow: 2,\r\n slidesToScroll: 2,\r\n initialSlide: 2\r\n }\r\n },\r\n {\r\n breakpoint: 480,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1\r\n }\r\n }\r\n ]\r\n };\r\n const settings2 = {\r\n dots: false,\r\n infinite: true,\r\n speed: 500,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n\r\n };\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n

    Protegemos tu vida y a quienes son tu vida

    \r\n

    Encuentra los seguros para planificar tu futuro y cuidar a quienes más quieres.

    \r\n\r\n
    \r\n
    \r\n \"Personas\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n
    Adquiere soluciones para
    proteger lo que más valoras
    \r\n

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

    ¿Por qué somos la mejor opción para ti?

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

    Protege la estabilidad financiera de tu familia

    \r\n
    \r\n

    Descubre opciones para cuidar a los tuyos a corto plazo, con seguros de vida flexibles y según tu realidad.

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

    Prepárate en caso de cáncer o una enfermedad temida

    \r\n
    \r\n

    Obtén una póliza que te apoyará en lo que te recuperas con beneficios de salud y dinero para gastos diarios.

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

    Complementa tus ingresos durante el retiro

    \r\n
    \r\n

    Conoce los seguros de vida que te permiten ahorrar para tener más recuros durante tu jubilación

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
      \r\n
    • \r\n
      \r\n

      500,000+

      \r\n

      Clientes satisfechos

      \r\n
    • \r\n
    • \r\n
      \r\n

      700,000+

      \r\n

      Pólizas activas

      \r\n
    • \r\n
    • \r\n
      \r\n

      $77 millones

      \r\n

      Reclamaciones pagadas en 2021

      \r\n
    • \r\n
    • \r\n
      \r\n

      50+

      \r\n

      Años protegiendo vidas

      \r\n
    • \r\n
    • \r\n
      \r\n

      <10 días

      \r\n

      Tiempo promedio en pagar una reclamación

      \r\n
    • \r\n
    • \r\n
      \r\n

      26

      \r\n

      Oficinas de servicio alrededor de la isla

      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Adquiere tu seguro en 5 pasos

    \r\n
    \r\n this.nextAnimation(0)}>\r\n this.nextAnimation(1)}>\r\n this.nextAnimation(2)}>\r\n this.nextAnimation(3)}>\r\n this.nextAnimation(4)}>\r\n
    \r\n (this.slider2 = b)} {...settings2}>\r\n
    \r\n
      \r\n
    • \r\n
      \r\n

      Paso 1

      \r\n

      Tipo de Protección

      \r\n
      \r\n

      Selecciona el tipo de protección que deseas.

      \r\n
      \r\n \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n
      \r\n

      Paso 2

      \r\n

      ¿Para quién es la protección?

      \r\n
      \r\n

      Responde las preguntas básicas de quien deseas asegurar y condición actual de salud.\r\n Esto nos ayudará a identificar las opciones de protección que más te convienen, al\r\n mejor precio posible.

      \r\n
      \r\n \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n
      \r\n

      Paso 3

      \r\n

      Escoge el producto y beneficios adicionales

      \r\n
      \r\n

      Escoge la opción que más se adapte a tus necesidades y posibilidades. Dependiendo del\r\n producto seleccionado, podrás añadir beneficios adicionales para la más completa\r\n protección disponible. De ser necesario, y dependiendo del producto a escoger,\r\n deberás completar información médica para proveerte la mejor tarifa y beneficios\r\n posibles.

      \r\n
      \r\n \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n
      \r\n

      Paso 4

      \r\n

      Completa la solicitud de seguro

      \r\n
      \r\n

      Completar información personal y en caso de algunos productos, información e\r\n historial médico necesario para evaluar tu solicitud. (Para esta parte, recomendamos\r\n completar en una PC, o al menos una tableta con pantalla grande).

      \r\n
      \r\n \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n
      \r\n

      Paso 5

      \r\n

      Firma electrónicamente la solicitud

      \r\n
      \r\n

      Aceptar las condiciones requeridas y firmar electrónicamente la solicitud que te\r\n enviaremos por correo electrónico.

      \r\n
      \r\n

      Algunos productos tendrán cubierta inmediata, otros requieren de una evaluación de\r\n parte de nuestro personal, la cual podría tomar de 3 a 7 días.

      \r\n
      \r\n \r\n ({ ...location, pathname: \"/compra\" })}>\r\n \r\n \r\n\r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \"Adquirir\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n

    ¿Tienes preguntas?

    \r\n

    ¡Tenemos respuestas!

    \r\n
    \r\n
    \r\n {this.PrevArrow()}\r\n
    \r\n\r\n
    \r\n (this.slider = c)} {...settings}>\r\n
    \r\n
      \r\n
    • \r\n
      \r\n

      Pregunta 1

      \r\n

      No soy tecnológico. ¿Podré completar el proceso? ¿Alguien me puede ayudar?

      \r\n

      Con solo responder preguntas sencillas y claras, podemos identificar tus necesidades y\r\n posibilidades de asegurarte.

      \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n
      \r\n

      Pregunta 2

      \r\n

      No estoy muy bien de salud en este momento, ¿podré asegurarme?

      \r\n

      Nuestro proceso de compra identificará las mejores opciones que se adapten a tus\r\n necesidades. Tenemos cubiertas que no requieren pruebas médicas.

      \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n
      \r\n

      Pregunta 3

      \r\n

      Fui rechazado anteriormente por otra compañía... ¿qué opciones tengo?

      \r\n

      Nuestro seguro de vida te permite asegurarte aún cuando hayas sido rechazado\r\n anteriormente por otra aseguradora.

      \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n
      \r\n

      Pregunta 4

      \r\n

      ¿Me van a hacer preguntas sobre mi salud? ¿Es seguro?

      \r\n

      Dependiendo del tipo de producto, podríamos hacer preguntas sobre tu salud y hábitos de\r\n conducta de manera que podamos establecer el producto que más te convenga con las\r\n mejores tarifas y cubiertas adicionales posibles. Esta información es totalmente\r\n confidencial y la mantenemos con altos niveles de seguridad, según lo requerido por la\r\n industria.

      \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n
      \r\n

      Pregunta 5

      \r\n

      ¿Debo proveer información financiera como cuentas de banco o tarjeta de crédito? ¿Es\r\n seguro?

      \r\n

      Para comodidad y conveniencia de nuestros asegurados, nuestras cubiertas son cobradas\r\n mensualmente directamente de cuentas bancarias o tarjetas de crédito. Esta información\r\n es mantenida en nuestros sistemas de manera segura y confidencial, cumpliendo a\r\n cabalidad con las normas de la industria.

      \r\n
      \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n
      \r\n

      Pregunta 6

      \r\n

      ¿Qué seguros puedo cotizar y comprar en la página?

      \r\n

      De una manera simple y rápida, podrás cotizar y comprar seguros de vida entera y de\r\n término, pólizas funerales, seguros contra el cáncer, enfermedades temidas y accidentes\r\n así como abrir una IRA o anualidad para prepararte para el futuro.

      \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {this.NextArrow()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    Este sitio web utiliza cookies para mejorar su experiencia. Para conocer más sobre información que\r\n recopilamos, cómo la utilizamos, y sus opciones, haga referencia al Aviso de\r\n Privacidad de Sitios Web.\r\n
    \r\n Al oprimir el botón Aceptar, estará aceptando los términos y condiciones.\r\n

    \r\n
    \r\n ACEPTAR\r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nexport class Terms extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n

    ({ ...location, pathname: \"/compra\" })} className=\"go-home\">« Regresar al Inicio

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

    Términos de Uso

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

    Última modificación: 18 de junio de 2021

    \r\n

    Aceptación de los Términos de Uso

    \r\n

    Estos términos de uso son suscritos por y entre usted y Triple-S Management Corporation, Triple-S\r\n Salud, Inc., Triple-S Advantage, Inc., Triple-S Propiedad, Inc. y Triple-S Vida, Inc. (en conjunto,\r\n «Triple-S», «Compañía», «nosotros» o «nuestro/a[s]»). Los siguientes términos y\r\n condiciones, junto con todo documento que expresamente incorporan mediante referencia (en conjunto,\r\n «Términos de Uso»), rigen su acceso a los sitios web de Triple-S y su uso [management.grupotriples.com; salud.grupotriples.com;\r\n advantage.grupotriples.com; sssvital.com; propiedad.grupotriples.com; vida.grupotriples.com], incluido todo contenido,\r\n funcionalidad y servicios ofrecidos en ellos o a través de ellos (los «Sitios\r\n Web»), ya sea como invitado o como un usuario registrado.\r\n

    \r\n

    Lea los Términos de Uso con detenimiento antes de comenzar a usar cualquiera de los Sitios Web.\r\n Al usar los Sitios Web o al hacer clic en aceptar los Términos de Uso cuando se le da la\r\n opción, usted acepta y está de acuerdo con regirse y cumplir con estos Términos de Uso y nuestro\r\n ({ ...location, pathname: \"/compra/privacidad\" })}>Aviso de Privacidad de Sitios Web y el Aviso de Prácticas de Privacidad (según se define a\r\n continuación), incorporados en el presente documento como referencia. Si no desea\r\n aceptar estos Términos de Uso o el Aviso de Privacidad de Sitios Web, no debe acceder o usar\r\n nuestros Sitios Web.\r\n

    \r\n

    Al usar nuestros Sitios Web, usted declara y garantiza que es mayor de edad y puede ser parte de un\r\n contrato vinculante con la Compañía y cumplir con el requisito de elegibilidad anterior. Si no\r\n cumple con este requisito, no debe acceder o usar nuestros Sitios Web.

    \r\n
    \r\n

    Cambios a los Términos de Uso

    \r\n

    Es posible que revisemos y actualicemos estos Términos de Uso ocasionalmente y a nuestra discreción.\r\n Todos los cambios entrarán en vigencia inmediatamente después de ser publicados, y aplicarán a todos\r\n los accesos y usos de los Sitios Web a partir de ese momento. Sin embargo, todo cambio a las\r\n disposiciones de resolución de conflictos establecidas en la legislación aplicable y jurisdicción no aplicará a ninguna disputa\r\n sobre la que se haya notificado a las partes en o antes de la fecha en que se publicó el cambio en\r\n los Sitios Web.

    \r\n

    El uso continuo de los Sitios Web después de la publicación de los Términos de Uso revisados\r\n significa que usted acepta y se adhiere a estos cambios. Se espera que visite esta página cada vez\r\n que accede a este Sitio Web para que esté al tanto de cualquier cambio, ya que estos son\r\n vinculantes.

    \r\n
    \r\n

    Cómo acceder al Sitio Web y seguridad de la cuenta

    \r\n

    Nos reservamos el derecho de retirar o cambiar nuestros Sitios Web y cualquier servicio o material\r\n que proporcionamos en los Sitios Web, a nuestra discreción y sin previo aviso. No seremos\r\n responsables si, por cualquier razón, todos o parte de nuestros Sitios Web no están disponibles en\r\n algún momento o en algún período. Es posible que ocasionalmente restrinjamos el acceso de nuestros\r\n usuarios, incluidos nuestros usuarios registrados, a algunas partes de nuestro Sitio Web, o la\r\n totalidad de nuestros Sitios Web.

    \r\n

    Usted es responsable de:

    \r\n
      \r\n
    • Hacer todos los trámites necesarios para acceder a nuestros Sitios Web;
    • \r\n
    • Asegurarse de que todas las personas que accedan a los Sitios Web a través de su\r\n conexión de Internet estén al tanto de estos Términos de Uso y los cumplan.
    • \r\n
    \r\n

    Para acceder a los Sitios Web o a algunos recursos que ofrecen, es posible que se le solicite cierta\r\n información de registro u otra información. Es una condición del uso de los Sitios Web que toda la\r\n información que usted proporcione en los Sitios Web sea correcta, actual y completa. Usted acepta\r\n que toda información que proporciona para registrarse en nuestros Sitios Web o demás, incluidos,\r\n entre otros, a través del uso de cualquier función interactiva en los Sitios Web, está regida por\r\n nuestro Aviso de\r\n Privacidad de Sitios Web, y usted se adhiere a todas las medidas que tomamos con respecto a\r\n su información de conformidad con tal aviso.

    \r\n

    En algunos casos, la información que recopilamos sobre usted está sujeta a los requisitos de la Ley\r\n de Transferencia y Responsabilidad de Seguro Médico (HIPAA, por sus siglas en inglés) de 1996 y/o la\r\n Ley Gramm-Leach-Bliley (GLBA, por sus siglas en inglés), según enmendadas. Si usted es miembro de\r\n Triple-S y se registra para utilizar los servicios en línea del portal de miembros, esa información\r\n está sujeta a la HIPAA y/o a la GLBA. En esas circunstancias, aplicarán el Aviso de Prácticas de Privacidad de HIPAA de Triple-S\r\n Salud, Inc. y Triple-S Advantage, Inc. y el Aviso de Prácticas de Privacidad de la GLBA de\r\n Triple-S Vida, Inc. y Triple-S Propiedad, Inc. (en conjunto, «Aviso de Prácticas de\r\n Privacidad»). Al hacer clic para aceptar los términos de uso de nuestro Aviso de Privacidad de\r\n Sitios Web y el Aviso de Prácticas de Privacidad cuando esta opción esté disponible, usted acepta y se adhiere a sus términos.

    \r\n

    Si elige o se le proporciona un nombre de usuario, contraseña o cualquier otra información como parte de nuestros procedimientos de seguridad, usted debe tratar tal información como confidencial, y no debe divulgarla a ninguna otra persona o entidad. También reconoce que su cuenta es personal para usted y acepta no brindar a ninguna otra persona acceso a este Sitio Web o a secciones de este usando su nombre de usuario, contraseña u otra información de seguridad. Usted acepta notificarnos de inmediato sobre todo acceso o uso no autorizado de su nombre de usuario o contraseña o toda otra falla de seguridad. También acepta que se asegurará de salir de su cuenta cuando finalice cada sesión. Deberá tener especial cuidado cuando acceda a su cuenta desde una computadora pública o compartida para que otros no puedan ver o registrar su contraseña u otra información personal.

    \r\n

    Tenemos el derecho de desactivar cualquier nombre de usuario, contraseña u otro identificador, ya sea que usted lo haya escogido o que nosotros se lo hayamos provisto, en cualquier momento bajo nuestra total discreción por cualquier o ninguna razón, incluido si, en nuestra propia opinión, usted ha violado alguna disposición de estos Términos de Uso.

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

    Derechos de propiedad intelectual

    \r\n

    Nuestros Sitios Web y todo su contenido, características y funciones (incluidos, entre otros, toda la\r\n información, software, textos, exhibiciones, imágenes, video y audio, y el diseño, la selección y la\r\n disposición) son propiedad de la Compañía, sus licenciantes u otros proveedores de tal material, y están\r\n protegidos por los Estados Unidos y las leyes internacionales de derechos de autor, marcas comerciales,\r\n patentes, secretos comerciales u otras leyes de propiedad intelectual o de derechos de propiedad.

    \r\n

    Estos Términos de Uso le permiten utilizar los Sitios Web solo para uso personal y no comercial. No debe\r\n reproducir, distribuir, modificar, crear trabajos que derivan de ellos, exhibir públicamente, interpretar\r\n públicamente, volver a publicar, descargar, almacenar o transmitir ninguno de los materiales que se\r\n encuentran en nuestro Sitio Web, excepto lo siguiente:

    \r\n
      \r\n
    • Su computadora puede almacenar copias de tales materiales en la RAM de manera temporal\r\n como resultado de haber accedido y visualizado dichos materiales.
    • \r\n
    • Usted puede almacenar archivos que son guardados automáticamente por su navegador web para propósitos de\r\n ampliación de visualización.
    • \r\n
    • Usted puede imprimir o descargar una copia de una cantidad razonable de páginas del Sitio Web para su\r\n uso personal y no comercial, y no para la distribución, publicación o reproducción futuras.
    • \r\n
    • Si le proporcionamos aplicaciones de escritorio, móviles o demás para su descarga, puede descargar una\r\n única copia a su computadora o dispositivo móvil solo para su uso personal y no comercial, siempre y\r\n cuando acepte regirse por nuestro contrato de licencia de usuario final en relación con tales\r\n aplicaciones.ç
    • \r\n
    • Si proporcionamos funciones de redes sociales con cierto contenido, usted puede realizar\r\n acciones que tales funciones permitan.
    • \r\n
    \r\n

    Usted no debe:

    \r\n
      \r\n
    • Modificar copias de cualquier material de este sitio;
    • \r\n
    • Usar cualquier ilustración, fotografía, secuencias de audio o video, o gráficas por separado del texto\r\n que los acompaña;
    • \r\n
    • Eliminar o alterar cualquier aviso sobre derechos de autor, marcas comerciales u otros\r\n derechos de propiedad de las copias de los materiales de este sitio.
    • \r\n
    \r\n

    Usted no debe acceder o usar para fines comerciales ninguna parte de los Sitios Web u otros servicios o\r\n materiales disponibles a través de los Sitios Web.

    \r\n

    Si imprime, copia, modifica, descarga, utiliza o proporciona acceso a otra persona a cualquier parte de\r\n nuestros Sitios Web en incumplimiento con los Términos de Uso, su derecho a usar los Sitios Web se cancelará\r\n de inmediato y deberá, a nuestra elección, devolver o destruir toda copia de los materiales que usted haya\r\n hecho. Ningún derecho, título o interés en o a los Sitios Web ni ningún contenido en los Sitios Web se\r\n transfiere a usted, y la Compañía se reserva todos los derechos otorgados de manera implícita. Todo uso de\r\n nuestro Sitio Web que no está permitido explícitamente por estos Términos de Uso es una violación de estos\r\n Términos de Uso y pueden infringir las leyes sobre derechos de autor, marcas comerciales y demás.

    \r\n
    \r\n

    Marcas comerciales

    \r\n

    El nombre de la Compañía y todos los nombres relacionados, logotipos, nombres de productos y servicios,\r\n diseños y eslóganes son marcas comerciales de la Compañía o sus afiliadas o licenciantes. No debe usar tales\r\n marcas sin el permiso previo por escrito de la Compañía. Todos los demás nombres, logotipos, nombres de\r\n productos y servicios, diseños y eslóganes en nuestros Sitios Web son marcas comerciales de sus respectivos\r\n dueños.

    \r\n
    \r\n

    Usos prohibidos

    \r\n
      \r\n
    • Usted puede usar nuestros Sitios Web solo por motivos legales y en conformidad con estos\r\n Términos de Uso. Acepta no usar el Sitio Web:
    • \r\n
    • De ninguna manera que infrinja cualquier ley o reglamentación federal, estatal, local o internacional\r\n correspondiente (incluida, entre otras, toda ley relacionada con la exportación de datos o software\r\n desde y hacia los Estados Unidos u otros países);
    • \r\n
    • Para propósitos de explotación, daño o intentos de explotar o perjudicar a menores mediante su\r\n exposición a contenido inapropiado, solicitarles información personal identificable, y demás;
    • \r\n
    • Enviar, recibir a sabiendas, subir, descargar, usar o reusar todo material que no cumpla con las Normas de Contenido establecidas en estos Términos\r\n de Uso;
    • \r\n
    • Transmitir o procurar el envío de cualquier material de publicidad o promoción sin nuestro\r\n consentimiento previo por escrito, incluido cualquier «correo basura», «cadena de mensajes», «correo no\r\n deseado» o cualquier otra solicitud similar;
    • \r\n
    • Hacerse pasar o intentar hacerse pasar por la Compañía, un empleado de la Compañía, otro usuario u otra\r\n persona o entidad (incluido, entre otros, usar direcciones de correo electrónico o nombres de usuario\r\n asociados a lo anterior).
    • \r\n
    • Participar en cualquier otro comportamiento que restrinja o suspenda el uso o disfrute de\r\n nuestros Sitios Web a cualquier persona, o que pueda, según determinado por nosotros, perjudicar a la\r\n Compañía o a los usuarios de nuestros Sitios Web, o los responsabilice.
    • \r\n
    \r\n

    Además, usted acepta no:

    \r\n
      \r\n
    • Usar nuestros Sitios Web de cualquier forma que pueda desactivar, sobrecargar, perjudicar\r\n o afectar el sitio o interferir con el uso de nuestros Sitios Web por cualquier otra parte, incluida su\r\n capacidad de entablar actividades en tiempo real mediante nuestros Sitios Web;
    • \r\n
    • Usar cualquier robot, araña u otro dispositivo automático, proceso o medios para acceder a nuestros\r\n Sitios Web para cualquier propósito, incluido el monitoreo o la copia de cualquier material en nuestros\r\n Sitios web;
    • \r\n
    • Usar algún proceso manual para monitorear o copiar cualquier material del Sitio Web, o para cualquier\r\n otro propósito que no esté expresamente autorizado en estos Términos de Uso, sin nuestro consentimiento\r\n previo por escrito;
    • \r\n
    • Usar cualquier dispositivo, software o rutina que interfiera con el funcionamiento apropiado de nuestros\r\n Sitios Web;
    • \r\n
    • Introducir cualquier virus, troyano, gusano, bomba lógica u otro material que sea malicioso o\r\n tecnológicamente dañino;
    • \r\n
    • Intentar obtener acceso no autorizado a, interferir con, perjudicar o interrumpir alguna parte de\r\n nuestros Sitios Web, a el/los servidor(es) en donde están almacenados nuestros Sitios Web, o a cualquier\r\n servidor, computadora o base de datos conectados a nuestros Sitios Web;
    • \r\n
    • Atacar a nuestros Sitios Web mediante un ataque por denegación de servicios (DOS) o un ataque por\r\n negación de servicio distribuido (DDoS);
    • \r\n
    • O intentar interferir con el funcionamiento apropiado de nuestros Sitios Web.
    • \r\n
    \r\n
    \r\n

    Contribuciones de usuarios

    \r\n

    Nuestros Sitios Web pueden contener funciones interactivas (en conjunto, «Servicios Interactivos») que les\r\n permiten a nuestros usuarios publicar, entregar, divulgar o transmitir a otros usuarios u otras personas (en\r\n adelante, «publicar») contenido o materiales (en conjunto, «Contribuciones de Usuarios») en nuestros Sitios\r\n Web o a través de ellos, y/o en los perfiles de redes sociales de la Compañía.

    \r\n

    Todas las Contribuciones de Usuarios deben cumplir con las Normas de Contenido establecidas en estos Términos\r\n de Uso.

    \r\n

    Toda Contribución de Usuarios que usted publique a través de nuestros Sitios Web y/o los perfiles de redes\r\n sociales de nuestra Compañía, se considerarán no confidenciales y sin derecho de propiedad. Al proporcionar\r\n cualquier Contribución de Usuarios, usted otorga a la Compañía y a nuestras afiliadas y nuestros proveedores\r\n de servicios, y a cada uno de nuestros y sus respectivos licenciatarios, causahabientes y cesionarios, el\r\n derecho de usar, reproducir, modificar, interpretar, exhibir, distribuir y divulgar a terceros tal material\r\n por cualquier motivo.

    \r\n

    Usted declara y garantiza que:

    \r\n
      \r\n
    • Tiene o controla todos los derechos de las Contribuciones de Usuarios y tiene el derecho\r\n de otorgarnos la licencia mencionada anteriormente a nosotros y a nuestras afiliadas y nuestros\r\n proveedores de servicios, y a cada uno de sus y nuestros respectivos licenciatarios, causahabientes y\r\n cesionarios.
    • \r\n
    • Todas sus Contribuciones de Usuarios cumplen y cumplirán con estos Términos de Uso.
    • \r\n
    \r\n

    Usted entiende y acepta que es responsable de cualquier Contribución de Usuarios que publique o contribuya, y\r\n usted, y no la Compañía, es totalmente responsable de tal contenido, incluidos su legalidad, confiabilidad,\r\n exactitud y pertinencia.

    \r\n

    No somos responsables ante ningún tercero por el contenido o la exactitud de cualquier Contribución de\r\n Usuarios publicada por usted o por otro usuario en nuestros Sitios Web. Para obtener más información sobre\r\n las Contribuciones de Usuarios, consulte nuestro Aviso de Privacidad de Sitios Web.

    \r\n
    \r\n

    Monitoreo e implementación; terminación

    \r\n

    Tenemos el derecho de:

    \r\n
      \r\n
    • Eliminar o negarnos a publicar cualquier Contribución de Usuarios por cualquier o ningún\r\n motivo a nuestra discreción;
    • \r\n
    • Tomar cualquier medida con respecto a alguna Contribución de Usuarios que creemos necesaria o apropiada\r\n a nuestra discreción, incluido si creemos que tal Contribución de Usuarios viola los Términos de
    • \r\n
    • Uso, incluidas las Normas de Contenido, infringe cualquier derecho de propiedad intelectual u otro\r\n derecho de cualquier persona o entidad, amenaza la seguridad personal de los usuarios de nuestros Sitios\r\n
    • \r\n
    • Web o del público, o podría responsabilizar a la Compañía;
    • \r\n
    • Divulgar su identidad u otra información sobre usted a cualquier tercero que afirme que el material que\r\n usted publicó viola sus derechos, incluidos sus derechos de propiedad intelectual o su derecho a la\r\n privacidad;
    • \r\n
    • Tomar acciones legales apropiadas, incluidas, entre otras, referido a las autoridades de orden público,\r\n por cualquier uso ilegal o no autorizado de nuestros Sitios Web;
    • \r\n
    • Terminar o suspender su acceso a todos o parte de nuestros Sitios Web por cualquier o\r\n ningún motivo, incluido, entre otros, por alguna violación a estos Términos de Uso.
    • \r\n
    \r\n

    Sin limitar lo anterior, tenemos el derecho de cooperar completamente con cualquier autoridad de orden\r\n público u orden judicial que nos solicite o nos ordene divulgar la identidad u otra información de cualquier\r\n persona que publica algún material en nuestros Sitios Web o a través de ellos. USTED RENUNCIA Y LIBERA DE\r\n TODA RESPONSABILIDAD A LA COMPAÑÍA Y SUS AFILIADAS, LICENCIATARIOS Y PROVEEDORES DE SERVICIOS, DE TODO\r\n RECLAMO CAUSADO POR ALGUNA MEDIDA TOMADA POR LA COMPAÑÍA O POR CUALQUIERA DE LAS PARTES ANTERIORES DURANTE O\r\n COMO CONSECUENCIA DE INVESTIGACIONES POR LA COMPAÑÍA/DICHAS PARTES O LAS AUTORIDADES DEL ORDEN PÚBLICO.

    \r\n

    Sin embargo, no podemos y no nos comprometeremos a revisar todo el material antes de su publicación en\r\n nuestros Sitios Web, y no podemos garantizar la eliminación oportuna de material inaceptable después de su\r\n publicación. Por lo tanto, no asumimos ninguna responsabilidad por cualquier acción o inacción relacionada\r\n con las transmisiones, comunicaciones o contenido proporcionado por cualquier usuario o tercero. No somos\r\n responsables ante nadie por el desempeño o la falta de desempeño de las actividades descritas en esta\r\n sección.

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

    Normas de Contenido

    \r\n
    \r\n

    Estas Normas de Contenido aplican a todas las Contribuciones de Usuarios y al uso de los Servicios\r\n Interactivos. Las Contribuciones de Usuarios deben cumplir completamente con todas las leyes y\r\n reglamentaciones federales, estatales, locales e internacionales correspondientes. Sin limitar lo anterior,\r\n las Contribuciones de Usuarios no deben:

    \r\n
      \r\n
    • Contener ningún material que sea difamatorio, obsceno, indecente, abusivo, ofensivo,\r\n hostigador, violento, detestable, provocativo o inaceptable.
    • \r\n
    • Promover material que sea sexualmente explícito o pornográfico, violencia o discriminación por raza,\r\n sexo, religión, nacionalidad, discapacidad, orientación sexual o edad.
    • \r\n
    • Infringir alguna patente, marca comercial, secreto comercial u otra propiedad intelectual u otros\r\n derechos de cualquier otra persona.
    • \r\n
    • Violar los derechos legales (incluidos los derechos de publicidad y privacidad) de otros o contener\r\n algún material que podría dar lugar a cualquier responsabilidad civil o penal conforme a las leyes o\r\n reglamentaciones aplicables o que pueda estar en conflicto con estos Términos de Uso y nuestro Aviso de Privacidad de\r\n Sitios Web o Aviso de Prácticas de Privacidad.
    • \r\n
    • Ser capaz de engañar a cualquier persona.
    • \r\n
    • Promover cualquier actividad ilegal, o respaldar, promover o ayudar cualquier acto que sea ilegal.
    • \r\n
    • Provocar molestia, inconveniencia o ansiedad innecesaria o ser capaz de molestar, avergonzar, alarmar o\r\n enojar a cualquier persona.
    • \r\n
    • Hacerse pasar por alguna persona, o tergiversar su identidad o afiliación con alguna persona u\r\n organización.
    • \r\n
    • Involucrar actividades comerciales o ventas, como concursos, loterías y otras promociones de ventas,\r\n trueques o publicidad.
    • \r\n
    • Dar la impresión de que emanan de nosotros o que las respaldamos o cualquier otra persona o\r\n entidad, si no fuera el caso.
    • \r\n
    \r\n
    \r\n

    Violación de derechos de autor

    \r\n

    Si usted cree que alguna Contribución de Usuarios viola su derecho de autor comuníquese con el Oficial de\r\n Cumplimiento de Triple-S enviando un correo electrónico a Elizabeth.Rodriguez@sssvida.com. Es la política\r\n de la Compañía cancelar las cuentas de usuario de infractores reincidentes.

    \r\n
    \r\n

    Confianza en la información publicada

    \r\n

    La información presentada en nuestros Sitios Web y a través de ellos está disponible solamente para\r\n propósitos informativos generales. No garantizamos la exactitud, completitud o utilidad de esta información.\r\n Cualquier confianza que usted tenga en tal información es estrictamente bajo su propio riesgo. Renunciamos a\r\n toda responsabilidad que pueda surgir por cualquier confianza puesta en tales materiales por usted o\r\n cualquier otro visitante de nuestros Sitios Web, o por cualquier persona que pueda estar informado de tales\r\n contenidos. Por momentos, es posible que nuestros Sitios Web incluyan contenidos proporcionados por\r\n terceros. Todas las declaraciones y/u opiniones expresadas en estos materiales, y todos los artículos y\r\n respuestas a preguntas y otro contenido, que no sea el contenido proporcionado por la Compañía, son solo las\r\n opiniones y responsabilidad de la persona o entidad que proporciona esos materiales. Estos materiales no\r\n reflejan necesariamente la opinión de la Compañía. No somos responsables ante usted ni cualquier tercero por\r\n el contenido o la exactitud de todo material proporcionado por cualquier tercero.

    \r\n

    Productos y coberturas del seguro. Toda descripción de productos y cobertura del seguro proporcionada en\r\n nuestros Sitios Web son descripciones generales de las coberturas disponibles y no son una declaración de\r\n contrato. Para obtener la cobertura, debe enviar una solicitud, instrucción o pedido según requerido por\r\n Triple-S. Todas las solicitudes están sujetas a la aceptación de Triple-S y a su aprobación. Además, todas\r\n las políticas del seguro y/o planes de beneficios grupales están sujetos a sus propios términos y\r\n condiciones, exclusiones y limitaciones. Para obtener información completa sobre el seguro, la\r\n disponibilidad y los costos, contacte a un agente certificado o a un representante de ventas de Triple-S.\r\n

    \r\n
    \r\n

    Cambios en los Sitios Web

    \r\n

    Es posible que ocasionalmente actualicemos el contenido de nuestros Sitios Web, pero el contenido no está\r\n necesariamente completo o actualizado. Cualquiera de los materiales de nuestros Sitios Web puede estar\r\n desactualizado en algún momento y, excepto que las leyes y reglamentaciones aplicables lo requieran, no\r\n tenemos obligación de actualizar tales materiales.

    \r\n
    \r\n

    Información sobre usted y sus visitas a nuestros Sitios Web

    \r\n

    Toda la información que recopilamos en nuestros Sitios Web está sujeta a nuestros ({ ...location, pathname: \"/compra/privacidad\" })}>Aviso de Privacidad de Sitios Web y Aviso de Prácticas de Privacidad. Al usar nuestros Sitios Web o al hacer\r\n clic para aceptar o acordar con los Términos de Uso y el Aviso de Privacidad de Sitios Web y el Aviso de\r\n Prácticas de Privacidad, cuando esta opción esté disponible, usted consiente con todas las medidas que\r\n tomamos con respecto a su información en cumplimiento con tales avisos.

    \r\n
    \r\n

    Transacciones en línea y otros términos y condiciones

    \r\n

    Todas las compras y otras transacciones para la venta de bienes y/o servicios están regidas por nuestros\r\n Términos y Condiciones sobre las Ventas de Bienes y Servicios, que se incorporan en estos Términos de Uso.\r\n

    \r\n

    Los términos y las condiciones adicionales también pueden aplicar a secciones, servicios o características\r\n específicas del Sitio Web. Tales términos y condiciones adicionales se incorporan en estos Términos de Uso.\r\n

    \r\n
    \r\n

    Vinculación a nuestros Sitios Web y funciones de redes sociales

    \r\n

    Usted puede vincularse a las páginas de inicio de nuestros Sitios Web, siempre que lo haga en una forma que\r\n sea justa y legal y no dañe nuestra reputación o se aproveche de ella, pero no debe establecer un enlace de\r\n una manera que sugiera cualquier forma de asociación, aprobación o patrocinio de nuestra parte sin nuestro\r\n consentimiento expreso por escrito.

    \r\n

    Nuestros Sitios Web pueden proporcionar ciertas funciones de redes sociales que le permiten:

    \r\n
      \r\n
    • Vincular sitios web de usted o de terceros a ciertos contenidos en nuestros Sitios Web;\r\n
    • \r\n
    • Enviar correos electrónicos u otros comunicados con cierto contenido, o enlaces a ciertos contenidos, en\r\n nuestros Sitios Web;
    • \r\n
    • Provocar que secciones limitadas del contenido de nuestros Sitios Web se muestren o\r\n aparenten mostrarse en su sitio web o en el de ciertos terceros.
    • \r\n
    \r\n

    Usted podrá usar estas funciones solo como se provean por nosotros, solo en relación con el contenido con el\r\n que se muestran, y de acuerdo con los términos y condiciones adicionales que proveamos sobre dichas\r\n funciones. Sujeto a lo anterior, usted no debe:

    \r\n
      \r\n
    • Establecer un enlace de todo sitio web que no sea de su propiedad;
    • \r\n
    • Causar que nuestros Sitios Web o secciones sean exhibidos o parezcan serlo por cualquier otro sitio, por\r\n ejemplo, enmarcado («framing»), vinculación profunda, o vinculación en línea («hotlinking»);
    • \r\n
    • Realizar alguna acción con respecto a los materiales en nuestros Sitios Web que sea\r\n inconsistente con cualquiera de las disposiciones de estos Términos de Uso.
    • \r\n
    \r\n

    El/Los sitio(s) web desde donde se está vinculando o en donde usted pone cierto contenido a disposición\r\n debe(n) cumplir con todos los aspectos de las Normas de Contenido establecidas en estos Términos de Uso.

    \r\n

    Usted accede a cooperar con nosotros en cesar de manera inmediata el uso de cualquier enmarcado o vinculación\r\n sin autorización. Nos reservamos el derecho de retirar los permisos de vinculación sin previo aviso.

    \r\n

    Podremos desactivar todas o cualquier función de redes sociales y cualquier enlace en cualquier momento a\r\n nuestra discreción y sin notificación previa.

    \r\n
    \r\n

    Enlaces de nuestros Sitios Web

    \r\n

    Si nuestros Sitios Web contienen enlaces a otros sitios y recursos proporcionados por terceros, estos enlaces\r\n solo se otorgan para su conveniencia. Esto puede incluir enlaces dentro de anuncios, incluidos los banners\r\n publicitarios y enlaces patrocinados. No tenemos control sobre los contenidos de esos sitios o recursos, y\r\n no aceptamos ninguna responsabilidad por ellos o por cualquier daño o pérdida que pueda ocasionar usarlos.\r\n Si decide acceder a cualquier sitio web de terceros que en ocasiones están vinculados a nuestros Sitios Web,\r\n lo hace completamente bajo su propio riesgo y está sujeto a los términos y condiciones de uso de tales\r\n sitios web.

    \r\n
    \r\n

    Restricciones geográficas

    \r\n

    Nuestros Sitios Web y su propiedad están basados en el Estado Libre Asociado de Puerto Rico, Estados Unidos,\r\n y están destinados a los residentes de Puerto Rico. Como tal, no afirmamos que nuestros Sitios Web o\r\n cualquiera de sus contenidos son accesibles o apropiados fuera de los Estados Unidos. El acceso a nuestros\r\n Sitios Web por ciertas personas puede ser ilegal en ciertos países. Si accede a nuestros Sitios Web desde\r\n fuera de los Estados Unidos, lo hace por su propia iniciativa y es responsable de cumplir con las leyes\r\n locales.

    \r\n
    \r\n

    Descargo sobre garantías

    \r\n

    Usted comprende que no podemos garantizar ni garantizamos que los archivos disponibles para su descarga desde\r\n Internet o de nuestros Sitios Web estén libres de virus u otros códigos destructivos. Usted es responsable\r\n de implementar los procedimientos y verificaciones suficientes para satisfacer sus requisitos particulares\r\n en materia de protección de antivirus y la exactitud de la salida y entrada de datos, y de mantener un medio\r\n externo a nuestro sitio para toda reconstrucción de cualquier dato perdido. HASTA EL ALCANCE PERMITIDO POR\r\n LA LEY EN TODA SU EXTENSIÓN, NO SEREMOS RESPONSABLES DE NINGUNA PÉRDIDA O DAÑOS Y PERJUICIOS CAUSADOS POR UN\r\n ATAQUE DE DENEGACIÓN DE SERVICIO DISTRIBUIDO, VIRUS U OTRO MATERIAL TECNOLÓGICAMENTE DAÑINO QUE PUEDA\r\n INFECTAR SU COMPUTADORA, LOS PROGRAMAS DE INFORMÁTICA, LOS DATOS U OTRO MATERIAL DE PROPIEDAD DEBIDO AL USO\r\n DE NUESTROS SITIOS WEB O A CUALQUIER SERVICIO O PRODUCTO OBTENIDO EN NUESTROS SITIOS WEB, O DEBIDO A LA\r\n DESCARGA DE CUALQUIER MATERIAL PUBLICADO EN ÉL O EN CUALQUIER SITIO WEB VINCULADO A ESTE.

    \r\n

    EL USO DE NUESTROS SITIOS WEB, SU CONTENIDO Y CUALQUIER SERVICIO O PRODUCTO OBTENIDO A TRAVÉS DE NUESTROS\r\n SITIOS WEB ES BAJO SU PROPIO RIESGO. NUESTROS SITIOS WEB, SU CONTENIDO Y TODO SERVICIO O PRODUCTO OBTENIDO A\r\n TRAVÉS DE NUESTROS SITIOS WEB SE PROPORCIONAN «TAL COMO SON» Y «SEGÚN SE ENCUENTREN DISPONIBLES» SIN NINGUNA\r\n GARANTÍA DE CUALQUIER TIPO, YA SEA EXPLÍCITA O IMPLÍCITA. NI LA COMPAÑÍA NI CUALQUIER OTRA PERSONA ASOCIADA\r\n A LA COMPAÑÍA GARANTIZA O DECLARA EN FUNCIÓN DE LA COMPLETITUD, SEGURIDAD, FIABILIDAD, CALIDAD, EXACTITUD O\r\n DISPONIBILIDAD DE LOS SITIOS WEB. SIN LIMITAR LO ANTERIOR, NI LA COMPAÑÍA NI OTRA PERSONA ASOCIADA A LA\r\n COMPAÑÍA DECLARA NI GARANTIZA QUE NUESTROS SITIOS WEB, SU CONTENIDO O CUALQUIER SERVICIO O PRODUCTO OBTENIDO\r\n A TRAVÉS DE LOS SITIOS WEB SEAN EXACTOS, CONFIABLES, ININTERRUMPIDOS O NO TENGAN ERRORES, QUE LOS DEFECTOS\r\n SERÁN CORREGIDOS, QUE NUESTROS SITIOS O LOS SERVIDORES QUE LOS DISPONEN NO TENGAN VIRUS U OTROS COMPONENTES\r\n MALICIOSOS, O QUE NUESTROS SITIOS WEB O CUALQUIER SERVICIO O PRODUCTO OBTENIDO A TRAVÉS DE NUESTROS SITIOS\r\n WEB SATISFARÁN SUS NECESIDADES O EXPECTATIVAS.

    \r\n

    HASTA EL ALCANCE PERMITIDO POR LA LEY EN TODA SU EXTENSIÓN, LA COMPAÑÍA NIEGA TODA GARANTÍA DE CUALQUIER\r\n TIPO, YA SEA EXPLÍCITA O IMPLÍCITA, ESTATUTARIA O DEMÁS, INCLUIDA, ENTRE OTRAS, CUALQUIER GARANTÍA DE\r\n COMERCIALIZACIÓN, NO INCUMPLIMIENTO E IDONEIDAD PARA UN PROPÓSITO EN PARTICULAR.

    \r\n

    LO ANTERIOR NO AFECTA NINGUNA GARANTÍA QUE NO PUEDA EXCLUIRSE O LIMITARSE SEGÚN LA LEGISLACIÓN APLICABLE.

    \r\n
    \r\n

    Límite de responsabilidad

    \r\n

    HASTA EL ALCANCE PERMITIDO POR LA LEY EN TODA SU EXTENSIÓN, EN NINGUNA CIRCUNSTANCIA LA COMPAÑÍA, SUS\r\n AFILIADAS O SUS LICENCIANTES, PROVEEDORES DE SERVICIOS, EMPLEADOS, AGENTES, OFICIALES O DIRECTORES SERÁN\r\n RESPONSABLES POR DAÑOS Y PERJUICIOS DE CUALQUIER TIPO, BAJO NINGUNA TEORÍA LEGAL, QUE SURJAN DE O ESTÉN\r\n RELACIONADOS A SU USO O SU INCAPACIDAD DE USAR LOS SITIOS WEB, CUALQUIER SITIO WEB VINCULADO A ESTOS,\r\n CUALQUIER CONTENIDO EN LOS SITIOS WEB O EN TALES OTROS SITIOS WEB, INCLUIDOS DAÑOS Y PERJUICIOS DIRECTOS,\r\n INDIRECTOS, ESPECIALES, INCIDENTALES, CONSIGUIENTES O PUNITIVOS, INCLUIDOS, ENTRE OTROS, LESIÓN PERSONAL,\r\n DOLOR Y SUFRIMIENTO, AFLICCIÓN EMOCIONAL, PÉRDIDA DE INGRESOS, LUCRO CESANTE, PÉRDIDA DE OPORTUNIDADES DE\r\n NEGOCIO, PÉRDIDA DE USO, PÉRDIDA DE FONDO DE COMERCIO, PÉRDIDA DE DATOS, ACCIDENTES RELACIONADOS CON LA\r\n SEGURIDAD DE DATOS, Y SI SON CAUSADOS POR DAÑOS (INCLUIDA LA NEGLIGENCIA), INCUMPLIMIENTO CONTRACTUAL O\r\n DEMÁS, INCLUSO SI ES PREVISIBLE.

    \r\n

    SI ALGUNA SECCIÓN DEL LÍMITE DE LA RESPONSABILIDAD ANTERIOR SE DECLARA INVÁLIDA O INEXIGIBLE POR CUALQUIER\r\n RAZÓN, ENTONCES LA RESPONSABILIDAD COLECTIVA DE LA COMPAÑÍA Y SUS SUBSIDIARIAS Y AFILIADAS, Y SUS\r\n LICENCIANTES, PROVEEDORES DE SERVICIOS, EMPLEADOS, AGENTES, OFICIALES Y DIRECTORES, ANTE CUALQUIER PARTE\r\n (INDEPENDIENTEMENTE DE LA ACCIÓN LEGAL, YA SEA EN EL CONTRATO, POR DAÑOS Y PERJUICIOS O DE OTRO MODO) QUE\r\n EXCEDA LOS $100.00 O EL MONTO QUE USTED HA PAGADO A LA COMPAÑÍA POR LOS PRODUCTOS CORRESPONDIENTES O\r\n SERVICIOS EN LOS ÚLTIMOS DOCE (12) MESES EN DONDE LA RESPONSABILIDAD SURGIÓ.

    \r\n

    LO ANTERIOR NO AFECTA NINGUNA RESPONSABILIDAD QUE NO PUEDA EXCLUIRSE O LIMITARSE SEGÚN LA LEGISLACIÓN\r\n APLICABLE.

    \r\n
    \r\n

    Indemnización

    \r\n

    Usted acepta defender, indemnizar y eximir de responsabilidad a la Compañía, sus afiliadas, licenciantes y\r\n proveedores de servicios, y sus respectivos oficiales, directores, empleados, contratistas, agentes,\r\n licenciantes, proveedores, causahabientes y cesionarios ante cualquier reclamo, responsabilidad, daños y\r\n perjuicios, sentencias, indemnizaciones, pérdidas, costos, gastos u honorarios (incluidos los honorarios\r\n razonables del abogado) que ocurran por su violación a estos términos de uso o por su uso de nuestros Sitios\r\n Web, o se relacionen con esto, incluidos, entre otros, sus Contribuciones de Usuarios, cualquier uso del\r\n contenido, los servicios y los productos de los Sitios Web que no sean los autorizados expresamente en estos\r\n Términos de Uso, o el uso de cualquier información obtenida de nuestros Sitios Web.

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

    Legislación aplicable y jurisdicción

    \r\n

    Todo asunto relacionado con nuestros Sitios Web y estos Términos de Uso, y toda disputa o todo reclamo que\r\n surja o se relacione con ellos (en cada caso, incluidos las disputas o los reclamos no estipulados en el\r\n contrato), se rigen e interpretan en conformidad con las leyes internas del Estado Libre Asociado de Puerto\r\n Rico sin dar efecto a ninguna disposición o norma de elección o conflicto de leyes (ya sea en el Estado\r\n Libre Asociado de Puerto Rico o cualquier otra jurisdicción).

    \r\n

    Cualquier demanda, acción o proceso judicial que ocurra por estos Términos de Uso o nuestros Sitios Web, o se\r\n relacionen con ellos, se iniciará exclusivamente en los tribunales federales o en los tribunales del Estado\r\n Libre Asociado de Puerto Rico, aunque nos reservamos el derecho de demandarlo o tomar acciones legales en\r\n contra de usted por violación a estos Términos de Uso en su domicilio o en otro país pertinente. Usted\r\n renuncia a cualquiera y a todas las objeciones al ejercicio de la jurisdicción en usted por tales tribunales\r\n y competencia de tales tribunales.

    \r\n
    \r\n

    Arbitraje

    \r\n

    A discreción absoluta de la Compañía, es posible que se le solicite que presente cualquier disputa que ocurra\r\n por estos Términos de Uso o por el uso de sus Sitios Web, incluidas las disputas que ocurran por su\r\n interpretación, violación, invalidez, incumplimiento o terminación, al arbitraje final y vinculante según\r\n las Reglas de Arbitraje de la Asociación Americana de Arbitraje que aplican en las leyes del Estado Libre\r\n Asociado.

    \r\n
    \r\n

    Límite de tiempo para presentar reclamos

    \r\n

    CUALQUIER CAUSA DE ACCIÓN O RECLAMO QUE USTED PUEDA TENER O QUE SURJA DE ESTOS TÉRMINOS DE USO O LOS SITIOS\r\n WEB, O SE RELACIONEN CON ELLOS, DEBE INICIARSE DENTRO DE UN (1) AÑO DESPUÉS DE SURGIDA LA CAUSA DE ACCIÓN;\r\n DE LO CONTRARIO, TAL CAUSA DE ACCIÓN O RECLAMO QUEDARÁ PROHIBIDO DE FORMA PERMANENTE.

    \r\n
    \r\n

    Exención y divisibilidad

    \r\n

    Ninguna exención de la Compañía de algún término o condición establecido en estos Términos de Uso se\r\n considerará una exención en curso o adicional de tal término o condición o una exención de cualquier otro\r\n término o condición, y si la Compañía no afirma un derecho o disposición bajo estos Términos de Uso, no\r\n constituirá una exención de tal derecho o disposición.

    \r\n

    Si una corte u otro tribunal de jurisdicción competente declara inválida, ilegal o inexigible alguna\r\n disposición de estos Términos de Uso por cualquier razón, dicha disposición se deberá eliminar o limitar al\r\n mínimo su extensión para que las disposiciones restantes de los Términos de Uso sigan en plena vigencia.

    \r\n
    \r\n

    Integridad del acuerdo

    \r\n

    Los Términos de Uso, el ({ ...location, pathname: \"/compra/privacidad\" })}>Aviso de Privacidad de Sitios Web y\r\n otros documentos incorporados en el presente constituyen el único acuerdo íntegro entre usted y Triple-S en\r\n relación con sus Sitios Web y sustituye todos los entendidos, acuerdos, declaraciones y garantías, tanto\r\n escritos como verbales, anteriores y contemporáneos con respecto a los Sitios Web.

    \r\n
    \r\n

    Comentarios e inquietude

    \r\n

    Nuestros Sitios Web son operados por nuestra agencia digital y equipos internos. Todos los demás\r\n comentarios,\r\n observaciones, solicitudes de soporte técnico y otras comunicaciones relacionadas con los Sitios Web\r\n deben\r\n dirigirse a nuestro Departamento de Servicio al Cliente.

    \r\n

     

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

    ({ ...location, pathname: \"/compra\" })}> Regresar al Inicio

    \r\n
    \r\n
    \r\n\r\n );\r\n }\r\n\r\n}","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\n\r\nexport class Privacy extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount(){\r\n }\r\n\r\n render(){\r\n return (\r\n
    \r\n
    \r\n

    ({ ...location, pathname: \"/compra\" })} className=\"go-home\">« Regresar al Inicio

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

    Aviso de Privacidad de Sitios Web

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

    Última modificación: 15 de junio de 2021

    \r\n
    \r\n

    Introducción

    \r\n

    Triple-S Management Corporation, Triple-S Salud, Inc., Triple-S Advantage, Inc., Triple-S Propiedad,\r\n Inc. y Triple-S Vida, Inc. (en conjunto «Triple-S», la «Compañía»\r\n o «Nosotros») respetamos su privacidad y estamos comprometidos a salvaguardar la\r\n información personal que recibimos de usted cuando interactúa con cualquiera de las aplicaciones\r\n móviles, sitios web y servicios en línea de la Compañía.

    \r\n

    En algunos casos, la información que recopilamos sobre usted está sujeta a los requisitos de la Ley\r\n de Transferencia y Responsabilidad de Seguro Médico (HIPAA, por sus siglas en inglés) de 1996 y/o la\r\n Ley Gramm-Leach-Bliley (GLBA, por sus siglas en inglés), según enmendadas. Si usted es afiliado de\r\n Triple-S y se registra para utilizar los servicios en línea del portal de afiliados, esa información\r\n está sujeta a la HIPAA y/o a la GLBA. En esas circunstancias, aplicarán el Aviso de Prácticas de Privacidad de HIPAA de Triple-S Salud, Inc.\r\n y Triple-S Advantage, Inc. y el Aviso de Prácticas de Privacidad de la GLBA de\r\n Triple-S Vida, Inc. y Triple-S Propiedad, Inc. (en conjunto, «Aviso de Prácticas de\r\n Privacidad»).

    \r\n

    Este Aviso de Privacidad de Sitios Web describe los tipos de información que podemos recopilar de\r\n usted o que puede proporcionar cuando visita nuestros sitios web [management.grupotriples.com; salud.grupotriples.com; advantage.grupotriples.com; sssvital.com; propiedad.grupotriples.com; vida.grupotriples.com], (nuestros «Sitios Web») y\r\n nuestras prácticas para recopilar, usar, mantener, proteger y divulgar esa información. Si tiene\r\n preguntas sobre qué política se aplica en una situación determinada, comuníquese con el Oficial de\r\n Cumplimiento de Triple-S Vida a Elizabeth.Rodriguez@sssvida.com o llame al (787) 758-4888.

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

    Esta política se aplica a la información que recopilamos:

    \r\n
      \r\n
    • en este Sitio Web,
    • \r\n
    • en los mensajes electrónicos entre usted y este Sitio Web,
    • \r\n
    • cuando interactúa con nuestros anunciantes y aplicaciones en sitios web y servicios\r\n de terceros, si esas aplicaciones y anuncios incluyen enlaces a esta política.
    • \r\n
    \r\n
    \r\n\r\n

    No se aplica a la información recopilada:

    \r\n
      \r\n
    • a través de nosotros sin conexión, o
    • \r\n
    • mediante un tercero a través de cualquier aplicación o contenido, por ejemplo, una\r\n publicidad, que tenga un enlace o sea accesible desde los Sitios Web.
    • \r\n
    \r\n

    Lea este aviso de privacidad detenidamente para comprender nuestras políticas y prácticas con\r\n respecto a su información y cómo la administraremos. Al acceder o utilizar nuestros Sitios Web, o al\r\n hacer clic para aceptar los términos de uso de nuestro Aviso de Privacidad de Sitios Web y el Aviso de Prácticas de Privacidad cuando esta opción esté\r\n disponible, usted acepta y se adhiere a sus términos. Este Aviso de Privacidad de Sitios Web o el\r\n Aviso de Prácticas de Privacidad de la Compañía pueden cambiar de tiempo en tiempo (consulte\r\n «Enmiendas y actualizaciones»). Si continúa usando los Sitios Web de Triple-S o vuelve a aceptar el\r\n Aviso de Privacidad de Sitios Web y el Aviso de Prácticas de Privacidad después de la publicación de\r\n los términos revisados, se considera que los cambios fueron aceptados. Por lo tanto, consulte el\r\n Aviso de Privacidad de Sitios Web y/o el Aviso de Prácticas de Privacidad periódicamente para\r\n consultar las actualizaciones.

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

    Niños menores de 13 años

    \r\n

    Nuestros Sitios Web no están destinados a niños menores de trece (13) años. Ninguna persona menor de\r\n trece (13) años puede proporcionar información personal en los Sitios Web de Triple-S. No\r\n recopilamos deliberadamente información personal de niños menores de trece (13) años. Si es menor de\r\n trece (13) años, no utilice ni proporcione información personal en nuestros Sitios Web o mediante\r\n cualquiera de sus funciones, no se registre, no utilice ninguna de las funciones interactivas o de\r\n comentarios públicos de nuestros Sitios Web, ni nos proporcione información sobre usted, incluido su\r\n nombre, dirección, número de teléfono, dirección de correo electrónico o solicitudes de cubierta. Si\r\n descubrimos que hemos recopilado o recibido información personal de un niño menor de trece (13) años\r\n sin el consentimiento de los padres, procederemos a eliminar dicha información. Si cree que\r\n podríamos tener información sobre un niño menor de trece (13) años, comuníquese con el Oficial de\r\n Cumplimiento de Triple-S Vida a Elizabeth.Rodriguez@sssvida.com o llame al (787) 758-4888.

    \r\n

    Información que recopilamos sobre usted y cómo la recopilamos

    \r\n

    Recopilamos diferentes tipos de información sobre los usuarios de nuestros Sitios Web, incluida la\r\n información:

    \r\n
      \r\n
    • mediante la cual se le puede identificar personalmente como nombre, apellido,\r\n dirección de correo electrónico, número de teléfono, fecha de nacimiento [o cualquier otro\r\n identificador que sirva para contactarlo en línea o fuera de línea] («información personal»);\r\n y/o
    • \r\n
    • sobre su conexión de Internet, el equipo que utiliza para acceder a nuestros Sitios\r\n Web y los detalles de uso.
    • \r\n
    \r\n\r\n
    \r\n

    Recopilamos esta información:

    \r\n
      \r\n
    • directamente de usted cuando nos la proporcione.
    • \r\n
    • automáticamente mientras navega por los sitios. La información recopilada\r\n automáticamente puede incluir detalles de uso, direcciones IP, servidor doméstico,\r\n identificación de sesión, navegador, sistemas operativos e información recopilada a través de\r\n cookies, web beacons y otras tecnologías de seguimiento.
    • \r\n
    \r\n\r\n
    \r\n

    Información que usted nos proporciona

    \r\n

    La información que recopilamos en nuestros Sitios Web o a través de ellos puede incluir:

    \r\n
      \r\n
    • información que proporciona al llenar formularios en nuestro Sitio Web. Esto\r\n incluye la información proporcionada al momento de registrarse para usar nuestro Sitio Web,\r\n suscribirse a nuestro servicio, publicar material o solicitar más servicios.
    • \r\n
    • registros y copias de sus direcciones de correo electrónico si se comunica con nosotros.
    • \r\n
    • sus respuestas a encuestas o solicitudes de comentarios que podríamos pedirle que complete con\r\n fines de investigación.
    • \r\n
    • detalles de las transacciones que realice a través de nuestro Sitio Web y del cumplimiento de\r\n sus órdenes. Es posible que deba proporcionar información financiera antes de realizar una orden\r\n o un pago en cualquiera de sus pólizas de seguro de Triple-S a través de nuestro Sitio Web.
    • \r\n
    • sus consultas de búsqueda en el Sitio Web.
    • \r\n
    \r\n

    La única información personal que la Compañía obtiene sobre los usuarios individuales de sus Sitios\r\n Web es la que los usuarios proporcionan voluntariamente. En caso de que la Compañía pueda necesitar\r\n información personal adicional para proporcionar a los usuarios contenido personalizado o para\r\n informarles sobre nuevas funciones o servicios, se les solicitará explícitamente esa información.\r\n

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

    Descargo de responsabilidad de redes sociales

    \r\n

    También puede proporcionar información para que se publique o muestre (de aquí en adelante,\r\n «publicada») en las páginas de redes sociales de Triple-S mediante los enlaces a las cuentas de\r\n redes sociales de la Compañía publicados en cada uno de sus Sitios Web («Contribuciones de\r\n Usuarios»). Sus Contribuciones de Usuarios se publican y transmiten a otros bajo su propio riesgo.\r\n Aunque podemos limitar el acceso público a dichas páginas, puede establecer ciertas configuraciones\r\n de privacidad para tal información iniciando sesión en el perfil de su cuenta; tenga en cuenta que\r\n ninguna medida de seguridad es perfecta o impenetrable. Además, no podemos controlar las acciones de\r\n otros usuarios del Sitio Web con los que usted pueda decidir compartir sus Contribuciones de\r\n Usuarios. Por lo tanto, no podemos garantizar que sus Contribuciones de Usuarios no sean vistas por\r\n personas no autorizadas. Por último, todos los usuarios de aplicaciones de redes sociales deben\r\n cumplir con sus términos de servicio. Como tal, Triple-S no garantiza la exactitud, veracidad o\r\n integridad de la información contenida en dichas Contribuciones de Usuarios y no se responsabiliza\r\n por las Contribuciones de Usuarios publicadas en las cuentas de redes sociales de la Compañía.

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

    Información que obtenemos a través de tecnologías de recopilación automática de\r\n datos

    \r\n

    Mientras navega e interactúa en nuestros Sitios Web, podemos utilizar tecnologías de recopilación\r\n automática de datos para obtener cierta información sobre su equipo, las acciones de navegación y\r\n los patrones, que incluyen:

    \r\n
      \r\n
    • detalles de sus visitas a nuestros Sitios Web, incluidos los datos de tráfico y\r\n otros datos de comunicación y los recursos a los que accede y utiliza en el Sitio Web.
    • \r\n
    • información sobre su computadora y la conexión a Internet, incluida su dirección\r\n IP, el sistema operativo y el tipo de navegador.
    • \r\n
    \r\n

    Triple-S no utiliza estas tecnologías para recopilar información sobre sus actividades en línea a lo\r\n largo del tiempo y en sitios web de terceros u otros servicios en línea (seguimiento de\r\n comportamiento).

    \r\n

    La información que recopilamos automáticamente son datos estadísticos y no incluyen información\r\n personal, pero podríamos mantenerlos o asociarlos con la información personal que recopilamos de\r\n otras formas o que recibimos de terceros. Nos ayuda a optimizar nuestro Sitio Web y a ofrecer un\r\n servicio mejor y más personalizado, al permitirnos:

    \r\n
      \r\n
    • calcular el tamaño de nuestra audiencia y los patrones de uso.
    • \r\n
    • almacenar información sobre sus preferencias, lo que nos permite personalizar nuestro Sitio Web\r\n de acuerdo con sus intereses individuales.
    • \r\n
    • acelerar sus búsquedas.
    • \r\n
    • reconocerlo cuando regrese a nuestro Sitio Web.
    • \r\n
    \r\n

    Las tecnologías que utilizamos para la recopilación automática de esta información pueden incluir:\r\n

    \r\n
      \r\n
    • Cookies (o cookies del navegador). Las «cookies» son pequeños\r\n archivos de texto que un sitio web transfiere al disco duro o navegador del usuario del sitio\r\n web para añadir funcionalidad o para hacer un seguimiento del uso del sitio web. Nuestros Sitios\r\n Web utilizan cookies durante su sesión en línea para ofrecer contenido específico según sus\r\n intereses. Nuestras cookies permiten a Triple-S vincular el uso de los Sitios Web con la\r\n información que ha proporcionado de forma específica y consciente a través de nuestros Sitios\r\n Web. Usted puede negarse a aceptar las cookies del navegador al activar las configuraciones\r\n apropiadas en su navegador. Sin embargo, si selecciona esta configuración, es posible que no\r\n pueda acceder a algunas partes de nuestros Sitios Web. A menos de que haya ajustado las\r\n configuraciones de su navegador para que rechace las cookies, nuestro sistema usará cookies\r\n cuando su navegador acceda a nuestros Sitios Web.
    • \r\n
    • Cookies Flash. Ciertas funciones de nuestros Sitios Web pueden usar objetos\r\n almacenados localmente (o cookies Flash) para recopilar y almacenar información sobre sus\r\n preferencias y datos de navegación hacia, desde y en el interior de nuestro Sitio Web. Las\r\n cookies Flash no se administran con las mismas configuraciones del navegador que se utilizan\r\n para las cookies del navegador. Para obtener información sobre la administración de sus\r\n configuraciones de privacidad y seguridad para las cookies Flash, consulte «Opciones sobre cómo\r\n usamos y divulgamos su información».
    • \r\n
    • Web Beacons. Las páginas de nuestros Sitios Web y nuestros correos\r\n electrónicos pueden contener archivos electrónicos pequeños conocidos como web beacons (también\r\n conocidos como GIFS transparentes, etiquetas de píxel y GIFS de un solo píxel) que le permiten a\r\n la Compañía, por ejemplo, contar los usuarios que han visitado esas páginas o que han abierto un\r\n correo electrónico para otras estadísticas relacionadas con el sitio web (por ejemplo, registrar\r\n la popularidad de ciertos contenidos del sitio web y verificar la integridad del sistema y del\r\n servidor).
    • \r\n
    \r\n\r\n
    \r\n

    Cómo utilizamos su información

    \r\n

    Utilizamos la información que recopilamos sobre usted o que usted nos proporciona, incluida cualquier\r\n información personal:

    \r\n
      \r\n
    • para presentarle nuestros Sitios Web y sus contenidos.
    • \r\n
    • para proporcionarle información, productos o servicios que nos solicite o haya autorizado.
    • \r\n
    • para cumplir con cualquier otro propósito para el que usted la proporciona.
    • \r\n
    • ID de usuario y contraseñas para proporcionarle acceso a sus cuentas con la Compañía.
    • \r\n
    • para proporcionarle avisos sobre su cuenta/suscripción, incluidos los avisos de vencimiento y\r\n renovación.
    • \r\n
    • para cumplir con nuestras obligaciones y hacer valer nuestros derechos derivados de cualquier\r\n contrato que hayamos celebrado con usted, incluida la facturación y el cobro.
    • \r\n
    • para notificarle sobre cambios en nuestros Sitios Web o en cualquier producto o servicio que\r\n ofrecemos o proporcionamos a través de ellos.
    • \r\n
    • para permitirle participar en funciones interactivas en nuestros Sitios Web.
    • \r\n
    • para fines de investigación interna sobre las preferencias de nuestros usuarios y/o para mejorar\r\n nuestros productos, servicios y diseños de los sitios.
    • \r\n
    • para plantear y dar respuesta a cuestiones y consultas de todo tipo.
    • \r\n
    • de cualquier otro modo que podamos describir cuando proporcione la información.
    • \r\n
    • para cualquier otro fin, con su consentimiento.
    • \r\n
    \r\n

    Los usuarios también pueden solicitar la cancelación de la suscripción o la exclusión voluntaria de\r\n los correos electrónicos de marketing o publicidad de Triple-S mediante la opción «cancelar\r\n suscripción». Para más detalles, consulte «Opciones sobre cómo usamos y divulgamos su información».\r\n

    \r\n

    Cualquier información médica protegida o información financiera no pública enviada por los afiliados\r\n a través del portal de servicios al afiliado en línea de la Compañía se manejará de acuerdo con el\r\n Aviso de Prácticas de Privacidad de HIPAA y el Aviso de Prácticas de Privacidad de la GLBA, según\r\n corresponda. Como resultado, los derechos de exclusión voluntaria y/o de acceso de los usuarios\r\n pueden estar limitados.

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

    Enlaces externos

    \r\n

    A veces, nuestros Sitios Web pueden contener enlaces a otros Sitios Web de Internet. Les pedimos a\r\n todos nuestros socios, colaboradores y terceros que implementen políticas y prácticas que respeten\r\n la privacidad de nuestros usuarios. Sin embargo, Triple-S no es responsable de las prácticas de\r\n privacidad ni del contenido de dichos sitios web. Este Aviso de Privacidad de Sitios Web solo\r\n incluye el uso y la divulgación de la información que recopilamos de usted. En la medida en que\r\n divulgue su información personal a otras partes, ya sea que los enlaces estén o no en los Sitios Web\r\n de la Compañía, se pueden aplicar diferentes reglas para el uso o la divulgación de la información\r\n personal que usted revele. Debido a que la Compañía no controla los avisos de privacidad de\r\n terceros, usted está sujeto a las prácticas y costumbres de privacidad de dicho tercero. Le\r\n recomendamos que haga preguntas antes de revelar su información personal a otros.

    \r\n

    Divulgación de su información

    \r\n

    Podemos divulgar información agregada sobre nuestros usuarios e información que no identifica a\r\n ningún individuo sin restricciones.

    \r\n

    Podemos divulgar la información personal que recopilamos o que usted proporciona como se describe en\r\n esta política de privacidad:

    \r\n
      \r\n
    • a nuestras compañías subsidiarias y afiliadas.
    • \r\n
    • a contratistas, proveedores de servicios y otros terceros de los que nos valemos para apoyar\r\n nuestro negocio y que están obligados por contrato a mantener la confidencialidad de la\r\n información personal y a utilizarla solo para los fines para los que se la revelamos.
    • \r\n
    • a un comprador u otro sucesor en caso de fusión, desinversión, reestructuración, reorganización,\r\n disolución u otra venta o transferencia de algunos o todos los activos de Triple-S, ya sea como\r\n empresa en funcionamiento o como parte de una quiebra, liquidación o procedimiento similar, en\r\n el que la información personal que posee Triple-S de los usuarios de nuestro Sitio Web se\r\n encuentre entre los activos transferidos.
    • \r\n
    • a terceros para que le proporcionen sus productos o servicios si usted ha dado su consentimiento\r\n para estas divulgaciones. Por contrato, exigimos que tales terceros mantengan la\r\n confidencialidad de la información personal y la utilicen solo para los fines para los que se la\r\n divulgamos. Para más detalles, consulte «Opciones sobre cómo usamos y divulgamos su\r\n información».
    • \r\n
    • para cumplir el propósito para el que usted la proporciona.
    • \r\n
    • para cualquier otro propósito que divulguemos cuando nos proporciona la información.
    • \r\n
    • con su consentimiento.
    • \r\n
    \r\n

    CON EXCEPCIÓN DE LO EXPUESTO EN ESTE AVISO DE PRIVACIDAD DE SITIOS WEB, TRIPLE-S NO VENDE, PRESTA,\r\n ALQUILA NI DIVULGA DE NINGÚN MODO LA INFORMACIÓN PERSONAL A TERCEROS.

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

    Divulgaciones exigidas por ley

    \r\n

    También podemos divulgar su información personal:

    \r\n
      \r\n
    • para cumplir con cualquier orden judicial, ley o proceso legal, incluso para\r\n responder a cualquier solicitud gubernamental o regulatoria.
    • \r\n
    • para hacer cumplir o aplicar nuestros términos de uso y otros acuerdos, incluso para fines de\r\n facturación y cobro.
    • \r\n
    • si creemos que la divulgación es necesaria o apropiada para proteger los derechos,\r\n la propiedad o la seguridad de Triple-S, nuestros clientes u otros. Esto incluye el intercambio\r\n de información con otras compañías y organizaciones a efectos de protección contra el fraude.\r\n
    • \r\n
    \r\n\r\n
    \r\n

    Opciones sobre cómo usamos y divulgamos su información

    \r\n

    Nos esforzamos por ofrecerle opciones con respecto a la información personal que nos proporciona.\r\n Hemos creado mecanismos para proporcionarle el siguiente control sobre su información:

    \r\n
      \r\n
    • Tecnologías de seguimiento y publicidad. Puede configurar su\r\n navegador para que rechace todas las cookies o algunas de ellas, o para que le avise cuando se\r\n envíen cookies. Para saber cómo puede manejar la configuración de cookies Flash, visite la\r\n página de configuración de Flash Player en el sitio web de Adobe. Si deshabilita o rechaza las\r\n cookies, tenga en cuenta que es posible que no pueda acceder a algunas partes de este sitio o\r\n que no funcionen correctamente.
    • \r\n
    \r\n\r\n
    \r\n

    Acceso y corrección de su información

    \r\n

    Puede revisar y cambiar su información personal entrando en el Sitio Web correspondiente y visitando\r\n la página del perfil de su cuenta. No podemos borrar su información personal, a menos que también se\r\n borre su cuenta de usuario. Podemos rechazar una solicitud de cambio de información si consideramos\r\n que el cambio violaría cualquier ley o requerimiento legal o haría que la información fuera\r\n incorrecta.

    \r\n

    Si borra sus Contribuciones de Usuarios de las páginas de redes sociales de la Compañía, las copias\r\n de sus Contribuciones de Usuarios pueden permanecer visibles en páginas almacenadas en caché y\r\n archivadas o pueden haber sido copiadas o almacenadas por otros usuarios del Sitio Web. El acceso y\r\n el uso adecuados de la información proporcionada a través de los Sitios Web se rigen por nuestros\r\n términos de uso.

    \r\n

    Solicitantes de empleo

    \r\n

    Como parte de cualquier proceso de contratación, Triple-S recopila y procesa datos personales\r\n relacionados con los solicitantes de empleo. Triple-S se compromete a ser transparente en relación\r\n con la forma en que la Compañía recopila y utiliza esos datos y su dedicación para salvaguardar esa\r\n información como se describe en el Aviso de Privacidad para Solicitantes de Empleo.\r\n

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

    Seguridad de los datos

    \r\n

    Hemos implementado medidas diseñadas para proteger su información personal contra pérdidas\r\n accidentales y contra el acceso, el uso, la alteración y la divulgación no autorizados. Toda la\r\n información que nos proporciona se almacena en nuestros servidores seguros protegidos por\r\n cortafuegos. Todas las transacciones de pago se cifrarán mediante tecnología SSL o de conformidad\r\n con las normas de la industria para evitar la divulgación o exposición no autorizadas de la\r\n información de identificación personal.

    \r\n

    La seguridad de su información también depende de usted. Cuando le proporcionemos (o cuando usted\r\n haya elegido) una contraseña para acceder a determinadas partes de nuestros Sitios Web, usted es\r\n responsable de mantener la confidencialidad de esta contraseña. Le pedimos que no comparta su\r\n contraseña con nadie.

    \r\n

    Triple-S no realiza llamadas ni envía solicitudes por correo electrónico solicitando información\r\n sobre cuentas personales o tarjetas de crédito. Si recibe una llamada o un mensaje de correo\r\n electrónico que parece ser de Triple-S y le piden que proporcione su ID de correo electrónico,\r\n contraseña, número de Seguro Social u otra información personal, no responda ni conteste.

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

    Enmiendas y actualizaciones

    \r\n

    Nuestra práctica habitual es publicar cualquier cambio que hagamos en nuestro Aviso de Privacidad de\r\n Sitios Web en esta página con un aviso de que se ha actualizado en cada una de las páginas de inicio\r\n de los Sitios Web. Si realizamos cambios sustanciales en la forma en que tratamos la información\r\n personal de nuestros usuarios, se lo notificaremos por correo electrónico a la dirección de correo\r\n electrónico principal especificada en su cuenta, a través de un aviso en las páginas de inicio de\r\n los Sitios Web y/o solicitaremos que vuelva a aceptar los términos de nuestro Aviso de Privacidad de\r\n Sitios Web y del Aviso de Prácticas de Privacidad. Usted es responsable de asegurarse de que\r\n tengamos una dirección de correo electrónico activa, válida y actualizada, y de visitar\r\n periódicamente nuestros Sitios Web y este aviso de privacidad para verificar si hay cambios.

    \r\n

    Este Aviso de Privacidad de Sitios Web no pretende crear (ni crea) ningún derecho contractual u otros\r\n derechos legales en nombre de las partes.

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

    Información de contacto

    \r\n

    Para hacer preguntas o comentarios sobre este aviso de privacidad y nuestras prácticas de privacidad,\r\n comuníquese con el Oficial de Cumplimiento de Triple-S Vida a Elizabeth.Rodriguez@sssvida.com o llame al (787) 758-4888.

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

    ({ ...location, pathname: \"/compra\" })}> Regresar al Inicio

    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n}","import './Home.css';\r\nimport React from \"react\";\r\nimport { Container } from 'react-bootstrap';\r\nimport { Header } from '../../components/Header';\r\nimport { Assistant } from '../../components/Assistant';\r\nimport { Footer } from '../../components/Footer';\r\nimport { LoadingPage } from '../LoadingPage';\r\nimport { Welcome } from '../Welcome';\r\nimport { StepperForm } from '../../components/StepperForm';\r\nimport { TokenServices } from '../../Services/TokenServices';\r\nimport { CategoryServices } from '../../Services/CategoryServices';\r\nimport { JSONExchangeTSV } from '../../Services/JSONExchangeTSV';\r\nimport { LandingPage } from '../LandingPage';\r\nimport { Terms } from '../Terms/Terms';\r\nimport { Privacy } from '../Privacy';\r\nimport { SelectedRiderListS4 } from '../../components/SelectedRiderS4';\r\nimport {LocalStorageTokenServices} from \"../../Services/LocalStorageTokenServices\";\r\n\r\nconst life = process.env.REACT_APP_ID_LIFE;\r\nconst saving = process.env.REACT_APP_SAVING_CATEGORY;\r\nconst health = process.env.REACT_APP_HEALTH_CATEGORY;\r\n\r\nexport class Home extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n idCategory: 0,\r\n action: 'welcome',\r\n fields: []\r\n };\r\n this.tokenService = new TokenServices();\r\n this.categoryServices = new CategoryServices();\r\n this.jsonExchangeTSV = new JSONExchangeTSV();\r\n this.localStorageTokenServices = new LocalStorageTokenServices();\r\n }\r\n\r\n categoryFunction = async (idCategory) => {\r\n await this.localStorageTokenServices.RefreshDateExpirationToken();\r\n await this.changeCategory(idCategory);\r\n this.setState({ action: \"pageStepper\" });\r\n this.setState({ idCategory }, () =>\r\n this.conditionalRender()\r\n );\r\n\r\n }\r\n async changeCategory(idCategory) {\r\n const token = this.tokenService.DecryptToken();\r\n const response = await this.categoryServices.GetCategories(token);\r\n if (response.statusResponse) {\r\n let categorys = response.data;\r\n let category = categorys.filter(cat => cat.idCategory === idCategory);\r\n let serie = {\r\n 'id_series': `${category[0].idCategory}`,\r\n 'name': `${category[0].name}`,\r\n };\r\n if (this.jsonExchangeTSV.isJSONinitialized()) {\r\n if (this.jsonExchangeTSV.getCurrentSerie().id_series != serie.id_series) {\r\n await this.jsonExchangeTSV.initializeJSON();\r\n this.jsonExchangeTSV.addPersonToInsuredPersons({ id_insured: 1, primary_insured: true });\r\n this.jsonExchangeTSV.setSerie(serie);\r\n }\r\n } else {\r\n this.jsonExchangeTSV.initializeJSON();\r\n this.jsonExchangeTSV.addPersonToInsuredPersons({ id_insured: 1, primary_insured: true });\r\n this.jsonExchangeTSV.setSerie(serie);\r\n }\r\n\r\n }\r\n }\r\n conditionalRender = () => {\r\n let { action } = this.state;\r\n let page = null;\r\n if (window.location.pathname === '/compra') {\r\n action = 'landing'\r\n } else if (window.location.pathname === '/compra/terminos') {\r\n action = 'terms'\r\n } else if (window.location.pathname === '/compra/privacidad') {\r\n action = 'privacy'\r\n }\r\n else if (window.location.pathname === '/compra/riders') {\r\n action = 'riders'\r\n }\r\n let landing =
    \r\n
    ;\r\n let terms =
    \r\n
    ;\r\n let privacy =
    \r\n
    ;\r\n let riders =
    \r\n
    ;\r\n switch (action) {\r\n case 'landing':\r\n page = landing;\r\n break;\r\n case 'terms':\r\n page = terms;\r\n break; \r\n case 'privacy':\r\n page = privacy;\r\n break;\r\n case 'riders':\r\n page = riders;\r\n break;\r\n case 'pageStepper':\r\n page =\r\n
    \r\n \r\n \r\n \r\n
    ;\r\n break;\r\n default:\r\n page = landing;\r\n }\r\n return <>{page};\r\n }\r\n\r\n async componentDidMount() {\r\n setTimeout(() => this.setState({ loading: false, }), 2000);\r\n await this.goPage();\r\n\r\n }\r\n async goPage() {\r\n if (window.location.pathname === '/compra') {\r\n this.setState({ action: \"welcome\", idCategory: 0 });\r\n this.setState({ idCategory: 0 }, () =>\r\n this.conditionalRender()\r\n );\r\n } else if (window.location.pathname === '/compra/ahorro') {\r\n await this.categoryFunction(Number(saving));\r\n } else if (window.location.pathname === '/compra/vida') {\r\n await this.categoryFunction(Number(life));\r\n }\r\n else if (window.location.pathname === '/compra/salud') {\r\n await this.categoryFunction(Number(health));\r\n }\r\n else if (window.location.pathname === '/compra/riders') {\r\n await this.categoryFunction(Number(health));\r\n }\r\n }\r\n render() {\r\n if (this.state.loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n
    \r\n {this.conditionalRender()}\r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n}","import './App.css';\r\nimport React from 'react';\r\nimport '../bootstrap/dist/css/bootstrap.min.css'\r\nimport '../bootstrap/bs-stepper/dist/css/bs-stepper.min.css';\r\nimport { Home } from \"./pages/Home\";\r\n\r\n\r\nexport default class App extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount(){\r\n }\r\n\r\n render(){\r\n return (\r\n \r\n );\r\n }\r\n\r\n}","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport { BrowserRouter, Route, Switch } from 'react-router-dom';\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n,\r\n document.getElementById('root'));","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Stepper = factory());\n}(this, function () { 'use strict';\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n var matches = window.Element.prototype.matches;\n\n var closest = function closest(element, selector) {\n return element.closest(selector);\n };\n\n var WinEvent = function WinEvent(inType, params) {\n return new window.Event(inType, params);\n };\n\n var createCustomEvent = function createCustomEvent(eventName, params) {\n var cEvent = new window.CustomEvent(eventName, params);\n return cEvent;\n };\n /* istanbul ignore next */\n\n\n function polyfill() {\n if (!window.Element.prototype.matches) {\n matches = window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;\n }\n\n if (!window.Element.prototype.closest) {\n closest = function closest(element, selector) {\n if (!document.documentElement.contains(element)) {\n return null;\n }\n\n do {\n if (matches.call(element, selector)) {\n return element;\n }\n\n element = element.parentElement || element.parentNode;\n } while (element !== null && element.nodeType === 1);\n\n return null;\n };\n }\n\n if (!window.Event || typeof window.Event !== 'function') {\n WinEvent = function WinEvent(inType, params) {\n params = params || {};\n var e = document.createEvent('Event');\n e.initEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable));\n return e;\n };\n }\n\n if (typeof window.CustomEvent !== 'function') {\n var originPreventDefault = window.Event.prototype.preventDefault;\n\n createCustomEvent = function createCustomEvent(eventName, params) {\n var evt = document.createEvent('CustomEvent');\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: null\n };\n evt.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail);\n\n evt.preventDefault = function () {\n if (!this.cancelable) {\n return;\n }\n\n originPreventDefault.call(this);\n Object.defineProperty(this, 'defaultPrevented', {\n get: function get() {\n return true;\n }\n });\n };\n\n return evt;\n };\n }\n }\n\n polyfill();\n\n var MILLISECONDS_MULTIPLIER = 1000;\n var ClassName = {\n ACTIVE: 'active',\n LINEAR: 'linear',\n BLOCK: 'dstepper-block',\n NONE: 'dstepper-none',\n FADE: 'fade',\n VERTICAL: 'vertical'\n };\n var transitionEndEvent = 'transitionend';\n var customProperty = 'bsStepper';\n\n var show = function show(stepperNode, indexStep, options, done) {\n var stepper = stepperNode[customProperty];\n\n if (stepper._steps[indexStep].classList.contains(ClassName.ACTIVE) || stepper._stepsContents[indexStep].classList.contains(ClassName.ACTIVE)) {\n return;\n }\n\n var showEvent = createCustomEvent('show.bs-stepper', {\n cancelable: true,\n detail: {\n from: stepper._currentIndex,\n to: indexStep,\n indexStep: indexStep\n }\n });\n stepperNode.dispatchEvent(showEvent);\n var activeStep = stepper._steps.filter(function (step) {\n return step.classList.contains(ClassName.ACTIVE);\n });\n\n var activeContent = stepper._stepsContents.filter(function (content) {\n return content.classList.contains(ClassName.ACTIVE);\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n if (activeStep.length) {\n activeStep[0].classList.remove(ClassName.ACTIVE);\n }\n\n if (activeContent.length) {\n activeContent[0].classList.remove(ClassName.ACTIVE);\n\n if (!stepperNode.classList.contains(ClassName.VERTICAL) && !stepper.options.animation) {\n activeContent[0].classList.remove(ClassName.BLOCK);\n }\n }\n\n showStep(stepperNode, stepper._steps[indexStep], stepper._steps, options);\n showContent(stepperNode, stepper._stepsContents[indexStep], stepper._stepsContents, activeContent, done);\n };\n\n var showStep = function showStep(stepperNode, step, stepList, options) {\n stepList.forEach(function (step) {\n var trigger = step.querySelector(options.selectors.trigger);\n trigger.setAttribute('aria-selected', 'false'); // if stepper is in linear mode, set disabled attribute on the trigger\n\n if (stepperNode.classList.contains(ClassName.LINEAR)) {\n trigger.setAttribute('disabled', 'disabled');\n }\n });\n step.classList.add(ClassName.ACTIVE);\n var currentTrigger = step.querySelector(options.selectors.trigger);\n currentTrigger.setAttribute('aria-selected', 'true'); // if stepper is in linear mode, remove disabled attribute on current\n\n if (stepperNode.classList.contains(ClassName.LINEAR)) {\n currentTrigger.removeAttribute('disabled');\n }\n };\n\n var showContent = function showContent(stepperNode, content, contentList, activeContent, done) {\n var stepper = stepperNode[customProperty];\n var toIndex = contentList.indexOf(content);\n var shownEvent = createCustomEvent('shown.bs-stepper', {\n cancelable: true,\n detail: {\n from: stepper._currentIndex,\n to: toIndex,\n indexStep: toIndex\n }\n });\n\n function complete() {\n content.classList.add(ClassName.BLOCK);\n content.removeEventListener(transitionEndEvent, complete);\n stepperNode.dispatchEvent(shownEvent);\n done();\n }\n\n if (content.classList.contains(ClassName.FADE)) {\n content.classList.remove(ClassName.NONE);\n var duration = getTransitionDurationFromElement(content);\n content.addEventListener(transitionEndEvent, complete);\n\n if (activeContent.length) {\n activeContent[0].classList.add(ClassName.NONE);\n }\n\n content.classList.add(ClassName.ACTIVE);\n emulateTransitionEnd(content, duration);\n } else {\n content.classList.add(ClassName.ACTIVE);\n content.classList.add(ClassName.BLOCK);\n stepperNode.dispatchEvent(shownEvent);\n done();\n }\n };\n\n var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = window.getComputedStyle(element).transitionDuration;\n var floatTransitionDuration = parseFloat(transitionDuration); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER;\n };\n\n var emulateTransitionEnd = function emulateTransitionEnd(element, duration) {\n var called = false;\n var durationPadding = 5;\n var emulatedDuration = duration + durationPadding;\n\n function listener() {\n called = true;\n element.removeEventListener(transitionEndEvent, listener);\n }\n\n element.addEventListener(transitionEndEvent, listener);\n window.setTimeout(function () {\n if (!called) {\n element.dispatchEvent(WinEvent(transitionEndEvent));\n }\n\n element.removeEventListener(transitionEndEvent, listener);\n }, emulatedDuration);\n };\n\n var detectAnimation = function detectAnimation(contentList, options) {\n if (options.animation) {\n contentList.forEach(function (content) {\n content.classList.add(ClassName.FADE);\n content.classList.add(ClassName.NONE);\n });\n }\n };\n\n var buildClickStepLinearListener = function buildClickStepLinearListener() {\n return function clickStepLinearListener(event) {\n event.preventDefault();\n };\n };\n\n var buildClickStepNonLinearListener = function buildClickStepNonLinearListener(options) {\n return function clickStepNonLinearListener(event) {\n event.preventDefault();\n var step = closest(event.target, options.selectors.steps);\n var stepperNode = closest(step, options.selectors.stepper);\n var stepper = stepperNode[customProperty];\n\n var stepIndex = stepper._steps.indexOf(step);\n\n show(stepperNode, stepIndex, options, function () {\n stepper._currentIndex = stepIndex;\n });\n };\n };\n\n var DEFAULT_OPTIONS = {\n linear: true,\n animation: false,\n selectors: {\n steps: '.step',\n trigger: '.step-trigger',\n stepper: '.bs-stepper'\n }\n };\n\n var Stepper =\n /*#__PURE__*/\n function () {\n function Stepper(element, _options) {\n var _this = this;\n\n if (_options === void 0) {\n _options = {};\n }\n\n this._element = element;\n this._currentIndex = 0;\n this._stepsContents = [];\n this.options = _extends({}, DEFAULT_OPTIONS, {}, _options);\n\n this.options.selectors = _extends({}, DEFAULT_OPTIONS.selectors, {}, this.options.selectors);\n\n if (this.options.linear) {\n this._element.classList.add(ClassName.LINEAR);\n }\n\n this._steps = [].slice.call(this._element.querySelectorAll(this.options.selectors.steps));\n\n this._steps.filter(function (step) {\n return step.hasAttribute('data-target');\n }).forEach(function (step) {\n _this._stepsContents.push(_this._element.querySelector(step.getAttribute('data-target')));\n });\n\n detectAnimation(this._stepsContents, this.options);\n\n this._setLinkListeners();\n\n Object.defineProperty(this._element, customProperty, {\n value: this,\n writable: true\n });\n\n if (this._steps.length) {\n show(this._element, this._currentIndex, this.options, function () {});\n }\n } // Private\n\n\n var _proto = Stepper.prototype;\n\n _proto._setLinkListeners = function _setLinkListeners() {\n var _this2 = this;\n\n this._steps.forEach(function (step) {\n var trigger = step.querySelector(_this2.options.selectors.trigger);\n\n if (_this2.options.linear) {\n _this2._clickStepLinearListener = buildClickStepLinearListener(_this2.options);\n trigger.addEventListener('click', _this2._clickStepLinearListener);\n } else {\n _this2._clickStepNonLinearListener = buildClickStepNonLinearListener(_this2.options);\n trigger.addEventListener('click', _this2._clickStepNonLinearListener);\n }\n });\n } // Public\n ;\n\n _proto.next = function next() {\n var _this3 = this;\n\n var nextStep = this._currentIndex + 1 <= this._steps.length - 1 ? this._currentIndex + 1 : this._steps.length - 1;\n show(this._element, nextStep, this.options, function () {\n _this3._currentIndex = nextStep;\n });\n };\n\n _proto.previous = function previous() {\n var _this4 = this;\n\n var previousStep = this._currentIndex - 1 >= 0 ? this._currentIndex - 1 : 0;\n show(this._element, previousStep, this.options, function () {\n _this4._currentIndex = previousStep;\n });\n };\n\n _proto.to = function to(stepNumber) {\n var _this5 = this;\n\n var tempIndex = stepNumber - 1;\n var nextStep = tempIndex >= 0 && tempIndex < this._steps.length ? tempIndex : 0;\n show(this._element, nextStep, this.options, function () {\n _this5._currentIndex = nextStep;\n });\n };\n\n _proto.reset = function reset() {\n var _this6 = this;\n\n show(this._element, 0, this.options, function () {\n _this6._currentIndex = 0;\n });\n };\n\n _proto.destroy = function destroy() {\n var _this7 = this;\n\n this._steps.forEach(function (step) {\n var trigger = step.querySelector(_this7.options.selectors.trigger);\n\n if (_this7.options.linear) {\n trigger.removeEventListener('click', _this7._clickStepLinearListener);\n } else {\n trigger.removeEventListener('click', _this7._clickStepNonLinearListener);\n }\n });\n\n this._element[customProperty] = undefined;\n this._element = undefined;\n this._currentIndex = undefined;\n this._steps = undefined;\n this._stepsContents = undefined;\n this._clickStepLinearListener = undefined;\n this._clickStepNonLinearListener = undefined;\n };\n\n return Stepper;\n }();\n\n return Stepper;\n\n}));\n//# sourceMappingURL=bs-stepper.js.map\n"],"sourceRoot":""}