{"version":3,"sources":["actions/loading/setLoading.js","actions/userQuestionnaire/setUserQuestionnaireId.js","assets/questionnaire/Enums.js","assets/common/api/api.js","assets/questionnaire/Utils/questionComponentUtil.js","actions/userQuestionnaire/selectPage.js","assets/common/custom/history.js","assets/questionnaire/Utils/questionReferencesUtil.js","assets/questionnaire/containers/categoryConditionContainer.js","assets/localization/resources.js","actions/section/showOrHideSection.js","assets/questionnaire/handleStateFunctions/question.js","actions/section/deleteRepeat.js","assets/questionnaire/containers/sectionConditionsContainer.js","assets/questionnaire/validationRules/validationRules.js","actions/authentication/logout.js","actions/userQuestionnaire/setCompleted.js","actions/authentication/authenticate.js","actions/tempStorage/questionReferences/updateRef.js","assets/questionnaire/resources.js","actions/tempStorage/setEmailVerifyByCode.js","actions/userQuestionnaire/setHoneypot.js","actions/section/addRepeat.js","actions/question/modifyMultipleChoiceOption.js","actions/question/modifyMultipleChoiceAnswers.js","actions/question/modifyAnswers.js","actions/tempStorage/requiredItems/deleteRequiredItem.js","actions/userQuestionnaire/categories/onTextCategoriesChange.js","actions/userQuestionnaire/setQuestionnaireName.js","actions/study/changeWebSiteContentUploads.js","actions/study/deleteWebSiteContentUploads.js","actions/study/getWebSiteContentUploads.js","actions/userQuestionnaire/categories/resetTextCategories.js","actions/tempStorage/customErrorMsg/clearAllMessage.js","actions/tempStorage/customErrorMsg/addMessage.js","actions/userQuestionnaire/setCultureCode.js","actions/userQuestionnaire/setLastOpenedPageId.js","actions/userQuestionnaire/setCurrentDate.js","actions/userQuestionnaire/setCategoriesMap.js","actions/userQuestionnaire/setTextCategories.js","actions/userQuestionnaire/setNumericCategories.js","actions/userQuestionnaire/categories/setSectionsConditions.js","actions/userQuestionnaire/setRedirectUrl.js","actions/userQuestionnaire/setHighlightedPages.js","actions/userQuestionnaire/setZIndexCategories.js","actions/userQuestionnaire/setShowProgressBar.js","actions/tempStorage/setShouldModifyCategories.js","actions/userQuestionnaire/categories/onInitRepeatedSection.js","assets/questionnaire/validationRules/validationRulesUtil.js","actions/tempStorage/setFormVerificationCode.js","assets/questionnaire/Utils/pageNavUtil.js","actions/userQuestionnaire/completeQuestionnaire.js","assets/questionnaire/validationRules/customValidationRules.js","actions/tempStorage/invalidItems/addInvalidItem.js","actions/tempStorage/invalidItems/deleteInvalidItem.js","actions/userQuestionnaire/pageMenuNav.js","assets/questionnaire/containers/tempSelectPageCategoriesContainer.js","actions/userQuestionnaire/categories/initConditionalSection.js","actions/tempStorage/fetchCascadingDrugs.js","actions/tempStorage/invalidItems/addRequiredInvalidQuestions.js","actions/study/changeWebSiteContent.js","assets/common/emailValidator.js","assets/common/pwaUtil.js","actions/userQuestionnaire/categories/setTextCategoriesToDefaultValue.js","actions/userQuestionnaire/categories/modifyCascadingDrugCategoryValues.js","actions/userQuestionnaire/categories/removeCategoriesFromNotVisiblePages.js","actions/userQuestionnaire/categories/calculateSectionVisibility.js","actions/userQuestionnaire/categories/calculateVisibilityWithNotRelevantCategories.js","actions/question/addMCHighlightQuestion.js","actions/question/addInitHighlighQuestion.js","actions/section/initSectionData.js","actions/question/changeRepeats.js","actions/tempStorage/fetchCascadingLevels.js","actions/tempStorage/invalidItems/deleteMultipleInvalidOptions.js","actions/tempStorage/requiredItems/registerRequiredItem.js","actions/tempStorage/questionReferences/initRef.js","actions/question/getQuestionImageContent.js","components/content/loading.js","actions/form/getFormData.js","actions/questionnaires/getUserQuestionnaires.js","actions/questionnaires/subscribePushNotifications.js","actions/authentication/onCountdownFinish.js","actions/pages/getPageByName.js","actions/faq/getFaq.js","actions/faq/handleFaqDrop.js","actions/faq/changeFaqContent.js","actions/faq/deleteFaq.js","actions/faq/addNewFaq.js","actions/form/getFollowupData.js","serviceWorkerRegistration.js","assets/common/custom/customRouter.js","assets/common/custom/scrollToTopOnRouteChange.js","actions/study/getStudyData.js","components/app/index.js","reportWebVitals.js","reducers/studyReducer.js","reducers/authenticationReducer.js","reducers/userQuestionnaire/setUserQuestionnaireIdReducer.js","reducers/userQuestionnaire/pageMenuNavReducer.js","reducers/userQuestionnaire/selectPageReducer.js","reducers/userQuestionnaire/pageDesignReducer.js","reducers/userQuestionnaire/cultureCodeReducer.js","reducers/userQuestionnaire/lastOpenedPageReducer.js","reducers/userQuestionnaire/curentDateReducer.js","reducers/userQuestionnaire/categoriesMapReducer.js","assets/questionnaire/handleStateFunctions/textCategories.js","reducers/userQuestionnaire/textCategoriesReducer.js","assets/questionnaire/handleStateFunctions/numericCategories.js","reducers/userQuestionnaire/numericCategoriesReducer.js","assets/questionnaire/handleStateFunctions/sectionCategories.js","reducers/userQuestionnaire/sectionsConditionsReducer.js","reducers/userQuestionnaire/setCompletedReducer.js","reducers/userQuestionnaire/setRedirectUrlReducer.js","reducers/userQuestionnaire/previousMCAnswersReducer.js","reducers/userQuestionnaire/previousQuestionsReducer.js","reducers/userQuestionnaire/previousSectionsReducer.js","reducers/userQuestionnaire/questionReferencesReducer.js","reducers/userQuestionnaire/setQuestionnaireName.js","reducers/userQuestionnaire/highlightedPagesReducer.js","reducers/userQuestionnaire/honeypotReducer.js","reducers/userQuestionnaire/zIndexCategoriesReducer.js","reducers/userQuestionnaire/showProgressBarReducer.js","assets/questionnaire/handleStateFunctions/sectionRepeat.js","assets/questionnaire/handleStateFunctions/section.js","reducers/Section/handleSectionDataReducer.js","reducers/tempStorage/cascadingComponentReducer.js","reducers/tempStorage/invalidItemsReducer.js","reducers/tempStorage/requiredItemsReducer.js","reducers/tempStorage/shouldModifyCategoriesReducer.js","actions/tempStorage/customErrorMsg/deleteMessage.js","reducers/tempStorage/customErrorMessagesReducer.js","reducers/tempStorage/questionReferencesMapReducer.js","reducers/tempStorage/questionsImagesReducer.js","reducers/tempStorage/emailVerifyReducer.js","reducers/tempStorage/formVerificationReducer.js","reducers/faqReducer.js","reducers/toolboxReducer.js","reducers/storyReducer.js","reducers/index.js","reducers/questionnairesReducer.js","reducers/userQuestionnaire/index.js","reducers/tempStorage/index.js","reducers/loadingReducer.js","reducers/formReducer.js","reducers/pagesReducer.js","reducers/followupReducer.js","assets/common/api/setupInterceptors.js","index.js"],"names":["LOADING_PAGE","setLoading","status","type","payload","SET_USER_QUESTIONNAIRE_ID","setUserQuestionnaireId","id","PageNavigationENUM","Object","freeze","SAME","NEXT","BACK","DIRECT_TO_SPECIFIC_PAGE","SectionViewType","Normal","Matrix","PagedMatrix","GridQuestion","GridQuestionAnswerOptionType","RadioButtons","Checkboxes","LogicalOperator","Or","And","CategoryOperator","Equals","NotEquals","Became","Smaller","SmallerEquals","Bigger","BiggerEquals","BecameNot","NumericEquals","CategoryChangeValue","Increase","Decrease","QuestionContextVariableSrcENUM","QuestionText","HelpText","SummaryShowItemType","OnlyRelevantItems","OnlyArchivedItems","AllItems","TranslationKey","QuestionHelpText","ValidationRule","SectionTitle","AnswerOptionText","QuestionParameterValue","AnswersParameterValue","AddRepeatButtonText","DeleteRepeatButtonText","SummaryZeroElementsText","SummaryOptionColumnTitle","instance","axios","create","baseURL","withCredentials","getQuestionViewParameters","questionDTO","cultureCode","viewparams","QuestionView","Parameters","parameters","length","params","_","each","param","isEmpty","QuestionParameterValues","paramValue","first","translation","getComponentTranslationsText","Translations","Name","singleAnswerObject","SubQuestionName","AnswerValue","order","Order","undefined","singleBirthDayAnswerObject","IsConfirmButtonClick","getAnswerBySubQuestionName","answers","subQuestionName","find","defineDayMonthYear","answer","day","substring","month","year","selectedAnswerOption","options","selectedOptionId","option","ID","shouldArchiveRepeat","selectedOption","checked","exclusive","currentDate","questionAnswers","selectedOptionAnswers","shouldArchive","calulateArchived","selectedOptionsIds","keys","previousSelectedArchive","includes","x","ArchiveRepeatDateInPast","ArchiveRepeatWithIntegerRange","ArchiveRepeat","optionAnswers","checkDateInThePast","answerDate2","firstAnswer","secondAnswer","getAnswerOptionParameterValue","answerOptionParameters","key","translationKey","parameter","contextVariableReplace","question","questionRefMap","repeatNumber","parentRepeatNumber","sectionReferenceName","questionContextVariableSrcENUM","text","parseRererences","resolveValidationRuleValue","validationRuleValue","formatDateAnswer","answerDate","moment","isValid","format","getParentSectionId","section","parentSectionId","SectionDTO","ReferenceName","trim","ShowOnlyInNewRepeatSection","ShowOnlyInFollowUpRepeatSection","getRepeatedSection","parentSection","checkIfQuestionHasAnswers","every","value","some","checkIfCascadingQuesitonHasOtherAnswer","a","isOtherText","checkcheckIfCascadingQuesitonAllAnswersEmpty","fillCascadingEmptyAnswers","currentLevelNr","levels","filter","l","SortOrder","forEach","push","itemId","translations","translationResult","Key","Culture","TranslationText","getDescendantMCquestionsInSection","sectionComponents","mcQuestions","traverseComponentsExtractMcQuesitons","foundMcQuestions","c","QuestionDTO","QuestionType","q","s","SectionContentTemplate","Components","getHighlightedItemsToRemove","itemsToRemove","getHighlightedItems","currentSelectedOptionIsExclusive","optionIds","selectedOptions","Exclusive","convertToPlainText","str","match","join","FETCH_PAGE","selectPage","page","navigationDirection","dispatch","getState","resetSectionConditionsMap","userQuestionnaire","textCategories","numericCategories","setPageCategories","response","api","get","pageId","userQuestionnaireId","then","res","codeValidation","data","skip","nextPage","calulatePreviousPage","values","pageList","sectionsConditions","calulateNextPage","PageType","completeQuestionnaire","sortOrder","getFirstVisiblePage","selectedPage","chain","p","visible","minBy","getLastVisiblePage","maxBy","history","createBrowserHistory","_contextVariableREGEX","_sectionRepeatNrREGEX","_cascadingLinesREGEX","_datePreviousQuestionnaireREGEX","_datePreviousQuestionnaireReferenceREGEX","createReferenceMapForQuestion","repeatNr","parentRepeatNr","questionReferencesDictionary","questionText","questionHelpText","refs","map","refFromText","ref","trimReference","refFromHelpText","validationRules","AnswerOptions","getAnswerOptionValidationRuleReferenceAsValue","getValidationRuleWithReferenceAsValue","QuestionValidationRules","refFromValidationValueText","ValidationRuleValue","parentRepeatNum","objKey","references","r","refItem","referenceCollection","getUniqueFromDictionary","refCollectoinItem","RepeatNumber","ParentRepeatNumber","refKey","split","refCollection","qReferences","qRef","qRefs","refVal","calculateRef","replace","toString","mapKey","txtRpl","answersContainer","answersFound","Answers","cascadingLines","extractCascadingLines","formatAnswers","MultipleChoiceAnswers","formatAnswersMC","trimed","toLowerCase","digits","digitsArray","d","zIndexLine","parseInt","isNaN","isCascading","CascadingListAnswerValue","answerValue","orderBy","isObjectLike","optionText","firstText","secondText","lastText","updateOrInsertThenDispatch","questionReferencesMap","mapKeys","fullName","isExclusive","archived","existingRefAnswer","definePreviousAnswers","definePreviousOptionAnswers","UPDATE_QUESTION_REF_MAP","prevAnswer","Archived","transformedAnswers","prevAns","existingAnswers","optionObject","defineOptionObject","optionAnswer","AnswerText","optionValue","shouldHideAnswerOption","categoryCondtion","textCategoryResult","evaluateCondition","getSectionCategories","categories","operator","previousSectionsCategories","category","SectionSortOrder","sectionCategories","CategoryID","getNotRelevantCategories","sectionsConditionsStore","notVisiblePages","pickBy","SectionID","categoryCondition","categoryOperator","negate","evaluateEquals","evaluateBecame","evaluateBecameNot","evaluateBigger","evaluateBiggerEquals","evaluateSmaller","evaluateSmallerEquals","evaluateNumericEquals","matchFound","NumericValue","Value","isDefault","SetAsDefault","numericValue","evaluateConditions","sectionConditions","properties","evaluations","firstEvaluations","evaluation","categoryConditionEvaulations","reduce","result","condition","isFirstSet","evaluated","evaluateLogicalOperator","logicalOperator1","secondEvaluations","logicalOperator2","firstEvaluationsResult","secondEvaluationResult","secondCategoryConditionOperator","logicalOperator","evaluationResults","element","default_culture","resources","nl","en","de","fr","it","culture","resKey","Error","culture_res","console","warn","SHOW_OR_HIDE_SECTION","showOrHideSectionThunk","sectionId","repeatId","questionId","sections","tempStorage","previousQuestions","previousSections","storeData","requiredItems","calculateSectionsVisibility","showOrHideSection","parentRepeatId","followup","existingRepeats","repeats","ShowQuestionTypeAsAnswerOption","AnswerOptionParameters","answerOptionText","modifyAnswers","draftState","questions","modifyMultipleChoiceOption","archivedInCurrentQuestionnaire","omitedAnswers","omit","modifyMultipleChoiceAnswers","defineQuestionsInRepeat","number","component","sectionName","TargetSectionName","SummaryQuestionColumnDefinitions","column","Content","questionShortName","startsWith","previousQuestion","defaultSummaryQuestionObject","referenceName","EnclosingSectionName","ShortName","duplicateOptions","duplicated","DuplicateAnswerOptions","questionObject","defaultQuestionObject","DELETE_REPEAT","deleteRepeat","isArchived","SectionConditionsMap","registerCondition","showConditions","AnswerShowCondition","isArray","conditions","val","QuestionID","mcQuestionId","affectedSections","prop","sectionKey","calculateSectionVisibility","calculateSectionVisibilityWhileInit","sectionData","evaulationResults","last","evaluateAnswerStatement","Boolean","repeatable","showSection","hideSection","shouldDispatch","actionValue","MCquestions","textCategoryValues","ao","CategoryValues","catVal","resetTextCategories","answerFound","forIn","answerObj","optionId","Negate","validationRulesCommands","ruleValue","validationRulesReferences","additionalInfo","checkMimimumValueRule","checkMaximumValueRule","checkMimimumDecimalValueRule","checkMaximumDecimalValueRule","checkMaximumNumberOfCharactersRule","checkDateInTheFuture","checkDateInThePastOrToday","checkMaxDaysInTheFuture","checkMaxDaysInThePast","checkMinDaysInThePast","checkDateBeforeAnswerToOtherDateQuestion","checkDateAfterAnswerToOtherDateQuestion","checkValid11ProofNumber","checkEmailAddressRule","checkMinimumDaysValues","checkMaximumDaysValues","checkValidDutchPostalCodeRule","checkAgeValue","validDate","validDay","yearsOldNotValid","yearInFuture","yearMaxCharacters","validYear","validationRulesRangeCommands","answer1","answer2","checkFirstNumberSmallerOrEqualNumberSecondValue","checkFirstDateSmallerOrEqualDateSecondValue","validPassword","indexOf","correctedAnswer","correctedRuleValue","parseFloat","test","checkEmailAddress","domain","lastIndexOf","invalidEmailDomains","weighedSum","numbersOnly","i","len","j","currentDateObject","add","isSameOrBefore","subtract","isSameOrAfter","isBefore","isAfter","minDate","maxDate","date1","date2","isSame","trimReferenceValue","reference","referenceDate","diff","baseDate","answerObject","answerData","isEqual","LOGOUT","logout","localStorage","removeItem","SET_COMPLETED","setCompleted","completed","LOGIN_SUCCESS","LOGIN_FAILURE","authenticate","email","password","study","user","studyId","StudyId","post","responseData","message","Message","toast","error","User","JwtToken","LockoutEnable","LockoutSecondsRemaining","lockoutSecondsRemaining","setItem","JSON","stringify","catch","months","inviteFriend","ReceiverEmail","ReceiverName","SenderName","customBirthday","XYearsOld","ConfirmAge","healthSlider","HealthSliderBestHealth","HealthSliderLine1","HealthSliderLine2","HealthSliderLine3","HealthSliderLine4","HealthSliderWorstHealth","HealthSliderYouHealthToday","latency","cascadingQuestionPopUp","Title","Description","NoResults","Search","openQuestionCharactersLeft","CharactersRemaining","validationErrorMessage","QuestionRequiredMessage","BirthdayConfirmClicked","SendGridMailInvalid","SectionRequiredMesaage","ValidationSummaryMessage","FormVerificationCodeMissing","CodeIncorrect","EmailCodeVerifyMsgNotDelivered","fileUpload","DefaulDrugHeretMsg","AllowedTypesMsg","FileSizeMax","commonMessage","Day","Month","Year","DownloadQuestionnaire","DownloadQuestionnaireRF","ButtonNext","ButtonBack","ButtonFinish","ButtonSubmit","AdditionalCheck","DidntMatch","RefreshNote","ConfirmPassword","NewVerificatoinCodeSent","EnterEmailAddressAgain","EMAIL_VERIFY_BY_CODE","setEmailVerifyByCode","emailAddress","isSent","SET_HONEYPOT","setHoneypot","honeypot","ADD_REPEAT","addRepeat","MODIFY_MULTIPLE_CHOICE_OPTION","previousArchivedValue","qRefMap","questionReferences","MODIFY_MULTIPLE_CHOICE_ANSWERS","MODIFY_ANSWERS","DELETE_REQUIRED_ITEM","deleteRequiredItem","SET_PREVIOUS_SELECTED_CATEGORIES_TO_DEFAULT_VALUE","ADD_OPTION_CATEGORIES","SET_OPTION_CATEGORIES_TO_DEFAULT_VALUE","onTextCategoriesChange","sectionSortOrder","SET_QUESTIONNAIRE_NAME","setQuestionnaireName","name","CHANGE_WEBSITE_CONTENT_UPLOADS","changeWebSiteContentUploads","selectedFile","url","html","webContentType","deleted","webContentId","uuidv4","formData","FormData","append","encodeURI","config","headers","success","file","fileString","contentType","fileName","DELETE_WEBSITE_CONTENT_UPLOADS","deleteWebSiteContentUploads","SET_TOOLBOX_DATA","SET_STORY_DATA","getWebSiteContentUploads","RESET_TEXT_CATEGORIES","textCategoriesValues","categoriesValues","CLEAR_ALL_ERROR_MSGS","clearAllMessage","ADD_ERROR_MSG","addErrorMessage","SET_CULTURE_CODE","setCultureCode","SET_LAST_OPENED_PAGE_ID","setLastOpenedPageId","SET_CURRENT_DATE","setCurrentDate","date","SET_CATEGORIES_MAP","setCategoriesMap","categoriesMap","SET_TEXT_CATEGORIES","setTextCategories","SET_NUMERIC_CATEGORIES","setNumericCategories","SET_SECTIONS_CONDITIONS","setSectionsConditions","SET_REDIRECTURL","setRedirectUrl","SET_HIGHLIGHTED_PAGES","setHighlightedPages","highlightedPages","SET_ZINDEX_CATEGORIES","setZIndexCategories","zIndexCategories","SET_SHOW_PROGRESS_BAR","setShowProgressBar","showProgressBar","SET_SHOULD_MODIFY_CATEGORIES","setShouldModifyCategories","shouldModifyCategories","ON_INIT_REPEAT_SECTION","onInitRepeatSection","previousMCAnswers","validateAnswers","questionRules","isRangeItem","customRules","isZIndexQuestion","rules","union","regularRules","IsRangeRule","rule","validateAnswersByRule","IsCustom","ValidationMessage","replaceValidationRuleMessageReference","ValidationMessageTranslations","rangeRules","validationMessage","validateRangeAnswers","ValidZIndexFirstLevel","ValidationName","AdditionalInfo","getSpecificValidationRule","ruleName","calculateCharactersLeft","maxCharactersRule","validatePage","sectionsState","invalidData","validateRequiredItems","invalidBirthdayQuestion","validateCustomBirthdayQuestion","sectionState","item","questionType","InvalidAnswerOption","hasIntegerDecimalQuestionWithAnswerOptionsAnswers","hasQuestionAnswers","hasMultipleChoiceQuestionAnswers","isAnswerAnswered","validateMonth","AdditionalQuestionType","validateDay","validateOnlyFirstAnswer","isDate","isDateAnswered","isObject","invalidBirthdayQuestions","requiredBirthdayItems","replaceValidationRuleReferences","referenceMap","referenceAnswers","appliedValidationRules","refValue","validationRuleValueTrim","IsApplied","answerOptions","validationRulesWithReferences","AnswerOptionValidationRules","concat","validationRuleMessage","SET_FORM_VERIFICATION_CODE","SET_FORM_VERIFICATION_MSG","setFormVerificationCode","code","setFormVerificationMessage","msgType","msgTxt","getFirstThankYouPage","pageListValues","selectedPageOrder","regularPage","pageRedirect","postObj","UserQuestionnaireId","ErrorMessage","errorMessage","RedirectUrl","ValidDate","PreviousAnswerValue","ValidYear","ValidDay","YearsOldNotValid","YearMaxCharacters","YearShouldNotBeInFuture","ValidPassword","ADD_INVALID_ITEM","addInvalidItem","DELETE_INVALID_ITEM","deleteInvalidItem","FETCH_TOP_SECTIONS_LIST","fetch_top_section_list","datetime","lastPageOpenedId","redirectUrl","questionnaireName","topSections","topSectionsList","parse","thankYouPages","sortBy","lastVisitedPage","lastTopSectionVisitedID","pageToDisplay","pageTextCategories","pageNumericCategories","pageSortOrder","INIT_CONDITIONAL_SECTION","initConditionalSection","categoryShowCondition","secondCategoryShowCondition","isTopSection","FETCH_CASCADING_DRUGS","fetchCascadingDrugs","componentName","componentId","levelName","groupName","drugs","ADD_REQUIRED_INVALID_QUESTIONS","addRequiredInvalidQuestions","items","CHANGE_WEBSITE_CONTENT","changeWebSiteContent","webSiteContent","object","pwaA2hs","deferredPrompt","addBtn","document","querySelector","style","display","window","addEventListener","e","preventDefault","prompt","userChoice","choiceResult","arrayBufferToBase64","buffer","binary","bytes","Uint8Array","byteLength","String","fromCharCode","btoa","isPushSupported","navigator","grantPushPermission","onUserAction","appServerKey","flim_config","VAPIDpublicKey","Notification","requestPermission","callBack","reg","pushManager","getSubscription","sub","subscribe","userVisibleOnly","applicationServerKey","subscription","endpoint","p256dh","getKey","auth","serviceWorker","ready","registration","SET_TEXT_CATEGORIES_TO_DEFAULT_VALUE","setTextCategoriesToDefaultValue","MODIFY_CASCADING_DRUG_CATEGORY_VALUES","modifyCascadingDrugCategoryValues","previousAnswer","newAnswer","REMOVE_CATEGORIES_FROM_NOT_VISIBLE_PAGES","removeCategoriesFromNotVisiblePages","notRelevantCategories","CALCULATE_SECTION_VISIBILITY","changedTextCategories","changedNumericCategories","CALCULATE_VISIBILITY_WITH_NOT_RELEVANT_CATEGORIES","calculateVisibilityWithNotRelevantCategories","ADD_MC_HIGHLIGHT_QUESTION","addMCHighlighQuestion","ADD_INIT_HIGHLIGHT_QUESTION","addInitHighlighQuestion","INIT_SECTION_DATA","initSectionData","parentRepeatFollowup","sectionCondition","Repeated","UsePreviousAnswers","CHANGE_REPEATS","changeRepeats","FETCH_CASCADING_LEVELS","fetchCascadingLevels","DELETE_MULTIPLE_INVALID_OPTIONS","deleteMultipleInvalidOptions","REGISTER_REQUIRED_ITEM","registerRequiredItem","INIT_QUESTION_REF_MAP","initQuestionRef","GET_QUESTION_IMAGE_CONTENT","getQuestionImageContent","Loading","className","color","height","width","timeout","GET_FORM_DATA","getFormData","urlParameters","formName","form","FormName","Source","Invitation","CanceledStudyParticipationId","UnsubscribeUserId","AccessGranted","FormId","has","delete","search","GET_USER_QUESTIONNAIRES","getUserQuestionnaires","SUBSCRIBE_PUSH_NOTIFICATIONS","postAndDispatch","ShowPushNotificationPopup","subscribePushNotifications","allow","grantObj","ON_COUNT_DOWN_FINISH","onCountdownFinish","GET_PAGES_BY_NAME","getPageByName","GET_FAQ","getFaq","HANDLE_FAQ_DROP","handleFaqDrop","dragId","dropId","CHANGE_FAQ_CONTENT","changeFaqContent","faq","DELETE_FAQ","deleteFaq","faqId","ADD_NEW_FAQ","addNewFaq","GET_FOLLOWUP_DATA","getFollowupData","QuestionnaireId","isLocalhost","location","hostname","registerValidSW","swUrl","register","onupdatefound","installingWorker","installing","onstatechange","state","controller","log","onUpdate","onSuccess","CustomRouter","props","useState","action","setState","useLayoutEffect","listen","navigationType","ScrollToTopOnRouteChange","useEffect","unlisten","scrollTo","GET_STUDY_DATA","getStudyData","PregnantTheme","lazy","DefaultTheme","ReportFormsTheme","App","this","appStudyName","Suspense","fallback","studyName","switchThemes","position","autoClose","hideProgressBar","newestOnTop","rtl","draggable","pauseOnHover","Component","connect","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","initState","enableES5","produce","draft","websiteContentItem","WebSiteContent","getItem","initialState","loggedIn","pageTemplate","pageType","setCategoriesToDefaultValue","categoryValues","founded","CategoryValueID","DefaultCategoryValueID","splice","DefaultValue","textCategoriesHandleStateExport","add_categories","newItem","delete_categories","index","findIndex","set_options_categories_to_default_value","set_option_categories_to_default_value","set_not_relevant_categories_to_default_value","handleCategoryChange","catgoriesName","CategoryName","avalableZIndexCategories","totalCountCategoryName","currentCountCategoryName","archivedCountCategoryName","findCategoryInCurrentPage","sectionCategory","findSectionCategory","endsWith","toLower","changeCategoryNumericValue","changeValue","addOrUpdateCategory","shouldNotCheckPrevious","currentCategory","previousCategory","findCategoryInPreviousPages","createNewCategory","numericCategoriesExport","currentSectionCount","totalSectionCount","archivedSectionCount","update_category","set_repeat_archived","remove_repeat_archived","remove_added_numeric_categories","pull","archivedCategory","totalCategory","sectionToCalculate","times","InitialNumberOfRepeats","inx","NumericQuestionRepeatID","arhivedRepeats","numberOfRepeats","archivedRepeats","defineCondition","sectionCategoriesHandleState","add_category_condition","CategoryValue1","CategoryOperator1","Negate1","CategoryValue2","CategoryOperator2","Negate2","CategoryValue3","CategoryOperator3","Negate3","CategoryValue4","CategoryOperator4","Negate4","calculate_section_condition","categoryId","calculate_condition","categoryID","calculate_condition_not_relevant_categories","handleSectionCategories","defaultData","previousMCQuestionAnswers","correction","isAnswered","ComponentName","coding","CodeStandard","ShowAdditionalTextField","hasExclusive","sectionsToRemove","itemsToRemoveCorrection","y","difference","itemsToRemoveCoding","deletedCorrection","deletedCoding","defaultSectionRepeatObject","traverseComponents","sectionIds","addManualInitialRepeats","repeatsState","count","newRepeat","customID","repeatTransferCount","sectionRepeatHandleStateExport","addInitialRepeats","previousRepeats","repeat","archivedInCorrection","archivedPublished","update","stateSection","descendantSectionIds","changedRepeats","stateSectionDescendant","obj","changedRepeat","reCalculateOrder","deletedRepeatIds","omitedRepeatState","deletedDescendantRepeatIds","descendantRepeat","changeRepeatsWithMCQuestion","repeatsCount","handleRepeat","sectionHandleStateExport","parentRepeatID","changeState","show_or_hide","previousSection","sectionConditionsVisible","questionConditionVisibility","reduxStateStoreJson","handleSection","maxRepeat","findMaxRepeatNr","repetable","defineRepeatId","handleSectionRepeat","keyBy","newState","remove","DELETE_ERROR_MSG","splitKey","QuestionId","ContentType","dragBox","dropBox","dragBoxOrder","dropBoxOrder","draftFaq","faqOrder","Deleted","notDeleted","maxOrderItem","CultureId","WebContentType","CultureID","File","FileName","URL","rootReducer","combineReducers","studyReducer","faqReducer","authentication","questionnaires","setUserQuestionnaireIdReducer","cultureCodeReducer","lastOpenedPageIdReducer","pageMenuNavReducer","selectPageReducer","pageDesign","pageDesignReducer","currentDateReducer","categoriesMapReducer","textCategoriesReducer","numericCategoriesReducer","sectionsConditionsReducer","setCompletedReducer","setRedirectUrlReducer","previousMCAnswersReducer","previousQuestionsReducer","previousSectionsReducer","questionReferencesReducer","questionnaireNameReducer","highlightedPagesReducer","honeypotReducer","zIndexCategoriesReducer","showProggressBarReducer","handleSectionDataReducer","cascadingComponent","cascadingComponentReducer","invalidItems","invalidItemsReducer","requiredItemsReducer","shouldModifyCategoriesReducer","customErrorMsgs","customErrorMsgReducer","questionReferencesMapReducer","questionsImages","questionsImagesReducer","emailVerify","emailVerifyReducer","formVerification","formVerificationReducer","loading","CodeVerificationSent","pages","pageName","title","toolbox","toolboxReducer","story","storyReducer","setup","store","axiosInstance","interceptors","request","use","token","Authorization","er","isAxiosError","pathname","Promise","reject","middleware","thunk","createStore","composeWithDevTools","applyMiddleware","ReactDOM","render","getElementById","setupInterceptors","process","href","origin","fetch","unregister","reload","checkValidServiceWorker","serviceWorkerRegistration"],"mappings":"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","file":"static/js/main.dbd9c1f4.chunk.js","sourcesContent":["export const LOADING_PAGE = \"LOADING_PAGE\";\r\n\r\nexport function setLoading(status) {\r\n return {\r\n type: LOADING_PAGE,\r\n payload: status,\r\n };\r\n}\r\n","export const SET_USER_QUESTIONNAIRE_ID = \"SET_USER_QUESTIONNAIRE_ID\";\r\n\r\nexport function setUserQuestionnaireId(id){\r\n return {\r\n type: SET_USER_QUESTIONNAIRE_ID,\r\n payload: id\r\n }\r\n}","export const PageNavigationENUM = Object.freeze({\r\n SAME: 0,\r\n NEXT: 1,\r\n BACK: 2,\r\n DIRECT_TO_SPECIFIC_PAGE: 3,\r\n});\r\n\r\nexport const SectionViewType = Object.freeze({\r\n Normal: 0,\r\n Matrix: 1,\r\n PagedMatrix: 2,\r\n GridQuestion: 3,\r\n});\r\n\r\nexport const GridQuestionAnswerOptionType = Object.freeze({\r\n RadioButtons: 0,\r\n Checkboxes: 1,\r\n});\r\n\r\nexport const LogicalOperator = Object.freeze({\r\n Or: 0,\r\n And: 1,\r\n});\r\n\r\nexport const CategoryOperator = Object.freeze({\r\n Equals: 0,\r\n NotEquals: 7,\r\n Became: 1,\r\n Smaller: 2,\r\n SmallerEquals: 3,\r\n Bigger: 4,\r\n BiggerEquals: 5,\r\n BecameNot: 6,\r\n NumericEquals: 8,\r\n});\r\n\r\nexport const CategoryChangeValue = Object.freeze({\r\n Increase: 0,\r\n Decrease: 1,\r\n});\r\n\r\nexport const QuestionContextVariableSrcENUM = Object.freeze({\r\n QuestionText: 0,\r\n HelpText: 1,\r\n});\r\n\r\nexport const SummaryShowItemType = Object.freeze({\r\n OnlyRelevantItems: 0,\r\n OnlyArchivedItems: 1,\r\n AllItems: 2,\r\n});\r\n\r\nexport const TranslationKey = Object.freeze({\r\n QuestionText: \"QuestionText\",\r\n QuestionHelpText: \"QuestionHelpText\",\r\n ValidationRule: \"ValidationRule\",\r\n SectionTitle: \"SectionTitle\",\r\n AnswerOptionText: \"AnswerOptionText\",\r\n QuestionParameterValue: \"QuestionParameterValue\",\r\n AnswersParameterValue: \"AnswersParameterValue\",\r\n AddRepeatButtonText: \"AddRepeatButtonText\",\r\n DeleteRepeatButtonText: \"DeleteRepeatButtonText\",\r\n SummaryZeroElementsText: \"SummaryZeroElementsText\",\r\n SummaryOptionColumnTitle: \"SummaryOptionColumnTitle\",\r\n});\r\n","import axios from \"axios\";\r\n\r\nconst instance = axios.create({\r\n baseURL: \"/api\",\r\n withCredentials: true,\r\n});\r\n\r\nexport default instance;\r\n","import _ from \"lodash\";\r\nimport moment from \"moment\";\r\nimport { checkDateInThePast } from \"../validationRules/validationRules\";\r\nimport { QuestionContextVariableSrcENUM, TranslationKey } from \"../Enums\";\r\nimport { parseRererences } from \"./questionReferencesUtil\";\r\n\r\n// convert QuestionViewParameters from Array to Dictionary\r\nexport const getQuestionViewParameters = (questionDTO, cultureCode) => {\r\n var viewparams = [];\r\n\r\n if (questionDTO.QuestionView && questionDTO.QuestionView.Parameters) {\r\n var parameters = questionDTO.QuestionView.Parameters;\r\n\r\n if (parameters && parameters.length) {\r\n let params = {};\r\n\r\n _.each(parameters, (param) => {\r\n if (!_.isEmpty(param.QuestionParameterValues)) {\r\n var paramValue = _.first(param.QuestionParameterValues);\r\n\r\n let translation = getComponentTranslationsText(\r\n cultureCode,\r\n paramValue.Translations,\r\n TranslationKey.QuestionParameterValue\r\n );\r\n if (!_.isEmpty(translation)) params[param.Name] = translation;\r\n else params[param.Name] = \"\";\r\n }\r\n });\r\n\r\n viewparams[questionDTO.QuestionView.Name] = params;\r\n }\r\n }\r\n return viewparams;\r\n};\r\n\r\n/**\r\n *\r\n * @param {string} SubQuestionName sub question name of the answer i.e 'Text', 'Number', 'Date'\r\n * @param {string} AnswerValue\r\n * @param {int} order answer order\r\n */\r\nexport const singleAnswerObject = (SubQuestionName, AnswerValue, order) => {\r\n var answer = {\r\n SubQuestionName,\r\n AnswerValue,\r\n Order: order === undefined ? 1 : order,\r\n };\r\n return answer;\r\n};\r\n\r\n/**\r\n *\r\n * @param {string} SubQuestionName sub question name of the answer i.e 'Text', 'Number', 'Date'\r\n * @param {string} AnswerValue\r\n * @param {int} order answer order\r\n * @param {bool} IsConfirmButtonClick only available for custom birthday question\r\n */\r\nexport const singleBirthDayAnswerObject = (SubQuestionName, AnswerValue, order, IsConfirmButtonClick) => {\r\n var answer = {\r\n SubQuestionName,\r\n AnswerValue,\r\n IsConfirmButtonClick,\r\n Order: order === undefined ? 1 : order,\r\n };\r\n return answer;\r\n};\r\n\r\n/**\r\n *\r\n * @param {string} answers question answers list\r\n * @param {string} SubQuestionName sub question name of the answer i.e 'Text', 'Number', 'Date'\r\n */\r\nexport const getAnswerBySubQuestionName = (answers, subQuestionName) => {\r\n if (!answers) return null;\r\n return _.find(answers, {\r\n SubQuestionName: subQuestionName,\r\n });\r\n};\r\n\r\n/**\r\n *\r\n * @param {object} answers question answer\r\n */\r\nexport const defineDayMonthYear = (answer) => {\r\n if (answer && answer.length === 8) {\r\n return {\r\n day: answer.substring(6, 8),\r\n month: answer.substring(4, 6),\r\n year: answer.substring(0, 4),\r\n };\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n *\r\n * @param {array} options question answer options\r\n * @param {array} selectedOptionId selected answer option ID\r\n */\r\nexport const selectedAnswerOption = (options, selectedOptionId) => {\r\n return _.find(options, (option) => {\r\n return option.ID === selectedOptionId;\r\n });\r\n};\r\n/**\r\n *\r\n * @param {array} options question answer options\r\n * @param {object} selectedOption selected answer option\r\n * @param {bool} checked if selected option is checked (this property is only logical for checkbox input)\r\n * @param {array} selectedOptionAnswers answers provided for the selected answer option\r\n * @param {object} selectedOptionsIds selected answer options for the question\r\n */\r\nexport const shouldArchiveRepeat = (\r\n selectedOption,\r\n checked,\r\n exclusive,\r\n currentDate,\r\n options,\r\n questionAnswers,\r\n selectedOptionAnswers = []\r\n) => {\r\n let shouldArchive = calulateArchived(selectedOption, selectedOptionAnswers, currentDate);\r\n if (shouldArchive) return true;\r\n\r\n if (!exclusive && !checked) {\r\n let selectedOptionsIds = questionAnswers != null ? Object.keys(questionAnswers) : null;\r\n if (selectedOptionsIds) {\r\n let previousSelectedArchive = _.find(options, (option) => {\r\n return (\r\n selectedOptionsIds.includes(option.ID) &&\r\n option.ID !== selectedOption.ID &&\r\n calulateArchived(option, questionAnswers[option.ID].answers, currentDate)\r\n );\r\n });\r\n if (previousSelectedArchive) return true;\r\n }\r\n }\r\n\r\n if (\r\n _.find(options, (x) => {\r\n return x.ArchiveRepeatDateInPast || x.ArchiveRepeatWithIntegerRange || x.ArchiveRepeat;\r\n }) != null\r\n )\r\n return false;\r\n else return null;\r\n};\r\n\r\nconst calulateArchived = (option, optionAnswers, currentDate) => {\r\n if (option.ArchiveRepeat) return true;\r\n\r\n if (optionAnswers) {\r\n if (option.ArchiveRepeatDateInPast) {\r\n if (optionAnswers.length === 0) return true;\r\n\r\n if (optionAnswers.length === 1) {\r\n let answer = _.find(optionAnswers, { SubQuestionName: \"Text\" });\r\n if (\r\n !_.isEmpty(answer) &&\r\n !_.isEmpty(answer.AnswerValue) &&\r\n checkDateInThePast(optionAnswers[0].AnswerValue, currentDate)\r\n ) {\r\n return true;\r\n }\r\n\r\n let answerDate2 = _.find(optionAnswers, { SubQuestionName: \"Date2\" });\r\n if (\r\n !_.isEmpty(answerDate2) &&\r\n !_.isEmpty(answerDate2.AnswerValue) &&\r\n checkDateInThePast(answerDate2.AnswerValue, currentDate)\r\n ) {\r\n return true;\r\n }\r\n }\r\n\r\n if (\r\n optionAnswers.length > 1 &&\r\n _.isEmpty(optionAnswers[0].AnswerValue) &&\r\n _.isEmpty(optionAnswers[1].AnswerValue)\r\n )\r\n return true;\r\n\r\n if (\r\n optionAnswers.length > 1 &&\r\n !_.isEmpty(optionAnswers[1].AnswerValue) &&\r\n checkDateInThePast(optionAnswers[1].AnswerValue, currentDate)\r\n )\r\n return true;\r\n }\r\n if (option.ArchiveRepeatWithIntegerRange) {\r\n if (optionAnswers.length === 0) return true;\r\n if (\r\n optionAnswers.length > 1 &&\r\n _.isEmpty(optionAnswers[0].AnswerValue) &&\r\n _.isEmpty(optionAnswers[1].AnswerValue)\r\n )\r\n return true;\r\n\r\n if (optionAnswers.length > 1) {\r\n const firstAnswer = _.find(optionAnswers, {\r\n SubQuestionName: \"Number1\",\r\n });\r\n const secondAnswer = _.find(optionAnswers, {\r\n SubQuestionName: \"Number2\",\r\n });\r\n if (\r\n !_.isEmpty(firstAnswer) &&\r\n !_.isEmpty(secondAnswer) &&\r\n _.isEmpty(firstAnswer.AnswerValue) &&\r\n _.isEmpty(secondAnswer.AnswerValue)\r\n )\r\n return true;\r\n if (\r\n !_.isEmpty(firstAnswer) &&\r\n !_.isEmpty(secondAnswer) &&\r\n _.isEmpty(firstAnswer.AnswerValue) &&\r\n !_.isEmpty(secondAnswer.AnswerValue)\r\n )\r\n return true;\r\n }\r\n\r\n const secondAnswer = _.find(optionAnswers, {\r\n SubQuestionName: \"Number2\",\r\n });\r\n if (optionAnswers.length === 1 && !_.isEmpty(secondAnswer)) return true;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\n/**\r\n *\r\n * @param {array} answerOptionParameters answer option parameters\r\n * @param {string} key key to search specific answer option parameter\r\n */\r\nexport const getAnswerOptionParameterValue = (answerOptionParameters, key, cultureCode, translationKey) => {\r\n let parameter = _.find(answerOptionParameters, (parameter) => {\r\n return parameter.Name === key;\r\n });\r\n if (!_.isEmpty(parameter)) {\r\n return getComponentTranslationsText(cultureCode, parameter.Translations, translationKey);\r\n } else return null;\r\n};\r\n\r\nexport const contextVariableReplace = (\r\n question,\r\n questionRefMap,\r\n repeatNumber,\r\n parentRepeatNumber,\r\n sectionReferenceName,\r\n cultureCode,\r\n questionContextVariableSrcENUM\r\n) => {\r\n //var qFullName = `${questionDTO.EnclosingSectionName}.${questionDTO.ShortName}`.toLowerCase().trim();\r\n\r\n var text =\r\n questionContextVariableSrcENUM === QuestionContextVariableSrcENUM.QuestionText\r\n ? getComponentTranslationsText(cultureCode, question.Translations, TranslationKey.QuestionText)\r\n : getComponentTranslationsText(cultureCode, question.Translations, TranslationKey.QuestionHelpText);\r\n\r\n if (text) text = parseRererences(text, questionRefMap, repeatNumber, parentRepeatNumber, sectionReferenceName);\r\n\r\n return text;\r\n};\r\n\r\n/**\r\n * resolve reference define in the validation rule as validation rule value\r\n * @param {string} validationRuleValue validation rule value\r\n * @param {object} questionRefMap question reference map\r\n * @param {int} repeatNumber repeat number in which question belongs\r\n * @param {int} parentRepeatNumber parent repeat number in which question belongs\r\n * @param {string} sectionReferenceName section reference name in which question belongs\r\n */\r\nexport const resolveValidationRuleValue = (\r\n validationRuleValue,\r\n questionRefMap,\r\n repeatNumber,\r\n parentRepeatNumber,\r\n sectionReferenceName\r\n) => {\r\n if (validationRuleValue)\r\n validationRuleValue = parseRererences(\r\n validationRuleValue,\r\n questionRefMap,\r\n repeatNumber,\r\n parentRepeatNumber,\r\n sectionReferenceName\r\n );\r\n\r\n return validationRuleValue;\r\n};\r\n\r\n/**\r\n *\r\n * @param {string} answer answer that need to be format as date\r\n */\r\nexport const formatDateAnswer = (answer) => {\r\n const answerDate = moment(answer, \"YYYYMMDD\");\r\n if (answerDate.isValid()) {\r\n return answerDate.format(\"DD-MM-YYYY\");\r\n } else return answer;\r\n};\r\n\r\n/**\r\n * return parent section id if the current section has empty string as reference name and if section need to show follow up or new repeats\r\n * @param {object} section current section\r\n */\r\nexport const getParentSectionId = (section, parentSectionId) => {\r\n let sectionReferenceName =\r\n section != null && section.SectionDTO.ReferenceName != null ? section.SectionDTO.ReferenceName.trim() : null;\r\n return _.isEmpty(sectionReferenceName) &&\r\n (section.SectionDTO.ShowOnlyInNewRepeatSection || section.SectionDTO.ShowOnlyInFollowUpRepeatSection)\r\n ? parentSectionId\r\n : null;\r\n};\r\n/**\r\n * return parent section if the current section has empty string as reference name and if section need to show follow up or new repeats\r\n * @param {object} section current section\r\n * @param {object} parentSection parent section\r\n */\r\nexport const getRepeatedSection = (section, parentSection) => {\r\n let sectionReferenceName =\r\n section != null && section.SectionDTO.ReferenceName != null ? section.SectionDTO.ReferenceName.trim() : null;\r\n return _.isEmpty(sectionReferenceName) &&\r\n (section.SectionDTO.ShowOnlyInNewRepeatSection || section.SectionDTO.ShowOnlyInFollowUpRepeatSection)\r\n ? parentSection\r\n : section;\r\n};\r\n\r\n/**\r\n * return true if the array has at least one answer and AnswerValue is not null or empty string\r\n * @param {array} answers question answers\r\n */\r\nexport const checkIfQuestionHasAnswers = (answers) => {\r\n if (answers.length > 0 && _.every(answers, { AnswerValue: { value: \"\" } })) return false;\r\n\r\n if (answers.length > 0 && !_.some(answers, { AnswerValue: null }) && !_.some(answers, { AnswerValue: \"\" }))\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * return true if the array has at least one non empty answer for \"Other\" textbox\r\n * @param {array} answers question answers\r\n */\r\nexport const checkIfCascadingQuesitonHasOtherAnswer = (answers) => {\r\n return (\r\n answers.length > 0 &&\r\n _.some(answers, (a) => {\r\n return a.AnswerValue.value !== \"\" && a.AnswerValue.isOtherText === true;\r\n })\r\n );\r\n};\r\n\r\n/**\r\n * return true if all cascading answers are empty\r\n * @param {answers} answers question answers\r\n */\r\nexport const checkcheckIfCascadingQuesitonAllAnswersEmpty = (answers) => {\r\n let isEmpty;\r\n\r\n if (answers.length > 0) {\r\n isEmpty = _.every(answers, (a) => {\r\n return _.isEmpty(a.AnswerValue.value);\r\n });\r\n } else isEmpty = true;\r\n\r\n return isEmpty;\r\n};\r\n\r\nexport const fillCascadingEmptyAnswers = (currentLevelNr, levels, answers) => {\r\n var restLevels = _.filter(levels, (l) => l.SortOrder > currentLevelNr);\r\n\r\n restLevels.forEach((l) => {\r\n let subQuestionName = l.Name;\r\n let order = l.SortOrder + 1;\r\n let emptyAnswer = { itemId: null, value: \"\", isOtherText: false };\r\n\r\n answers.push(singleAnswerObject(subQuestionName, emptyAnswer, order)); //add emptyString for all unanswered levels\r\n });\r\n};\r\n\r\n/**\r\n * return translation for given culture code and key\r\n * @param {string} cultureCode culture code\r\n * @param {array} translations component translations\r\n * @param {enum(string)} key translation key\r\n */\r\nexport const getComponentTranslationsText = (cultureCode, translations, key) => {\r\n if (!translations) return \"\";\r\n if (translations.length === 0) return \"\";\r\n\r\n var translationResult = _.find(translations, (x) => {\r\n return x.Key === key && x.Culture === cultureCode;\r\n });\r\n\r\n if (!_.isEmpty(translationResult)) {\r\n return translationResult.TranslationText;\r\n } else {\r\n return \"\";\r\n }\r\n};\r\n\r\nexport const getDescendantMCquestionsInSection = (sectionComponents) => {\r\n let mcQuestions = [];\r\n traverseComponentsExtractMcQuesitons(sectionComponents, mcQuestions);\r\n return mcQuestions;\r\n};\r\n\r\nfunction traverseComponentsExtractMcQuesitons(sectionComponents, mcQuestions) {\r\n var foundMcQuestions = sectionComponents.filter(\r\n (c) => c.QuestionDTO != null && c.QuestionDTO.QuestionType === \"MultipleChoiceQuestion\"\r\n );\r\n\r\n _.forEach(foundMcQuestions, (q) => mcQuestions.push(q));\r\n\r\n var sections = sectionComponents.filter((c) => c.SectionDTO != null);\r\n sections.forEach((s) => {\r\n traverseComponentsExtractMcQuesitons(s.SectionDTO.SectionContentTemplate.Components, mcQuestions);\r\n });\r\n}\r\nexport const getHighlightedItemsToRemove = (section) => {\r\n let itemsToRemove = [];\r\n getHighlightedItems([section], itemsToRemove);\r\n return itemsToRemove;\r\n};\r\n\r\nfunction getHighlightedItems(sectionComponents, itemsToRemove) {\r\n var sections = sectionComponents.filter((c) => c.SectionDTO != null);\r\n sections.forEach((s) => {\r\n itemsToRemove.push(s.ID);\r\n getHighlightedItems(s.SectionDTO.SectionContentTemplate.Components, itemsToRemove);\r\n });\r\n}\r\n\r\nexport const currentSelectedOptionIsExclusive = (options, answers) => {\r\n let optionIds = answers ? Object.keys(answers) : [];\r\n let selectedOptions = _.filter(options, (option) => {\r\n return optionIds.includes(option.ID);\r\n });\r\n if (selectedOptions.length === 1 && selectedOptions[0].Exclusive) return true;\r\n return false;\r\n};\r\n\r\nexport const convertToPlainText = (str) => {\r\n const allowedCharactersRegex = /[a-zA-Z0-9 @.,!?+-=*&^%$#'\"()-_]/g;\r\n return str.match(allowedCharactersRegex)?.join(\"\") || \"\";\r\n\r\n // return str\r\n // .replace(/[\\uD83C-\\uDBFF\\uDC00-\\uDFFF\\u2600-\\u26FF\\u2700-\\u27BF\\uFE0F\\u1F900-\\u1F9FF\\u1F000-\\u1F02F]/g, \"\") // Remove emojis\r\n // .replace(/[\\u00A9\\u2122]/g, \"\"); // Remove special characters\r\n};\r\n","import api from \"../../assets/common/api/api\";\r\nimport { resetSectionConditionsMap } from \"../../assets/questionnaire/containers/sectionConditionsContainer\";\r\nimport { setPageCategories } from \"../../assets/questionnaire/containers/tempSelectPageCategoriesContainer\";\r\nimport { calulateNextPage, calulatePreviousPage } from \"../../assets/questionnaire/Utils/pageNavUtil\";\r\nimport { completeQuestionnaire } from \"./completeQuestionnaire\";\r\nimport { PageNavigationENUM } from \"../../assets/questionnaire/Enums\";\r\nimport _ from \"lodash\";\r\n\r\nexport const FETCH_PAGE = \"FETCH_PAGE\";\r\n\r\nexport const selectPage = (page, navigationDirection) => async (dispatch, getState) => {\r\n resetSectionConditionsMap();\r\n let { id, cultureCode, textCategories, numericCategories } = getState().userQuestionnaire;\r\n setPageCategories(textCategories, numericCategories, page.SortOrder);\r\n\r\n let response = {};\r\n await api\r\n .get(\"/Questionnaire/GetPageTemplate\", {\r\n params: {\r\n pageId: page.ID,\r\n userQuestionnaireId: id,\r\n cultureCode,\r\n },\r\n })\r\n .then((res) => {\r\n response = res;\r\n });\r\n\r\n let { codeValidation } = response.data;\r\n if (codeValidation && codeValidation.skip === true) {\r\n let nextPage;\r\n\r\n if (navigationDirection === PageNavigationENUM.BACK) {\r\n nextPage = calulatePreviousPage(\r\n Object.values(getState().userQuestionnaire.pageList),\r\n getState().userQuestionnaire.sectionsConditions,\r\n page.SortOrder\r\n );\r\n } else {\r\n nextPage = calulateNextPage(\r\n Object.values(getState().userQuestionnaire.pageList),\r\n getState().userQuestionnaire.sectionsConditions,\r\n page.SortOrder\r\n );\r\n }\r\n\r\n if (nextPage) {\r\n if (nextPage.PageType === 1 && page.PageType === 0) dispatch(completeQuestionnaire(nextPage));\r\n else {\r\n dispatch(selectPage(nextPage));\r\n }\r\n } else dispatch(completeQuestionnaire());\r\n } else {\r\n dispatch({ type: FETCH_PAGE, payload: { data: response.data, sortOrder: page.SortOrder } });\r\n }\r\n};\r\n\r\nexport const getFirstVisiblePage = (pageList, sectionsConditions, selectedPage) => {\r\n return _.chain(pageList)\r\n .values()\r\n .filter((p) => {\r\n return (\r\n p.PageType === 0 &&\r\n p.SortOrder <= selectedPage.sortOrder &&\r\n (!sectionsConditions[p.ID] || sectionsConditions[p.ID].visible)\r\n );\r\n })\r\n .minBy(\"SortOrder\")\r\n .value();\r\n};\r\n\r\nexport const getLastVisiblePage = (pageList, sectionsConditions, selectedPage) => {\r\n return _.chain(pageList)\r\n .values()\r\n .filter((p) => {\r\n return (\r\n p.PageType === 0 &&\r\n p.SortOrder >= selectedPage.sortOrder &&\r\n (!sectionsConditions[p.ID] || sectionsConditions[p.ID].visible)\r\n );\r\n })\r\n .maxBy(\"SortOrder\")\r\n .value();\r\n};\r\n","import { createBrowserHistory } from \"history\";\r\n\r\nconst history = createBrowserHistory();\r\n\r\nexport default history;\r\n","import _ from \"lodash\";\r\nimport { formatDateAnswer } from \"./questionComponentUtil\";\r\nimport { defineOptionObject } from \"../handleStateFunctions/question\";\r\nimport { UPDATE_QUESTION_REF_MAP } from \"../../../actions/tempStorage/questionReferences/updateRef\";\r\nimport { getValidationRuleWithReferenceAsValue, getAnswerOptionValidationRuleReferenceAsValue } from \"../validationRules/validationRulesUtil\";\r\nimport { TranslationKey } from \"../Enums\";\r\nimport { getComponentTranslationsText } from \"./questionComponentUtil\";\r\n\r\nexport const _contextVariableREGEX = /\\{\\{[$]{0,1}([a-z0-9-_ ]*?)\\.([a-z0-9-_,\\[\\] ]+?)\\}\\}/gi;\r\nexport const _sectionRepeatNrREGEX = /\\{\\{[a-z0-9-_ ]*?\\.RepeatNr\\}\\}/gi;\r\nexport const _cascadingLinesREGEX = /\\[[0-9, ]+\\]$/;\r\nexport const _datePreviousQuestionnaireREGEX = /\\participation\\.datepreviousquestionnaire/;\r\nexport const _datePreviousQuestionnaireReferenceREGEX = /\\{\\{Participation\\.DatePreviousQuestionnaire\\}\\}/;\r\n\r\nconst defaultQuestionRefCollection = (objKey) => {\r\n return { objKey, references: {} };\r\n};\r\n\r\nexport const createReferenceMapForQuestion = (question, repeatNr, parentRepeatNr, sectionReferenceName, questionReferencesDictionary, cultureCode) => {\r\n if (_.isEmpty(questionReferencesDictionary)) return;\r\n\r\n let questionText = getComponentTranslationsText(cultureCode, question.Translations, TranslationKey.QuestionText);\r\n let questionHelpText = getComponentTranslationsText(cultureCode, question.Translations, TranslationKey.QuestionHelpText);\r\n\r\n let refs = [];\r\n let map = null;\r\n\r\n if (questionText) {\r\n let refFromText = questionText.match(_contextVariableREGEX);\r\n if (refFromText) {\r\n refFromText.forEach((ref) => {\r\n var key = trimReference(ref);\r\n if (!_.includes(refs, key)) refs.push(key);\r\n });\r\n }\r\n }\r\n\r\n if (questionHelpText) {\r\n let refFromHelpText = questionHelpText.match(_contextVariableREGEX);\r\n if (refFromHelpText) {\r\n refFromHelpText.forEach((ref) => {\r\n var key = trimReference(ref);\r\n if (!_.includes(refs, key)) refs.push(key);\r\n });\r\n }\r\n }\r\n\r\n let validationRules = [];\r\n if (question.QuestionDTO.AnswerOptions.length > 0) validationRules = getAnswerOptionValidationRuleReferenceAsValue(question.QuestionDTO.AnswerOptions);\r\n else validationRules = getValidationRuleWithReferenceAsValue(question.QuestionDTO.QuestionValidationRules);\r\n\r\n if (validationRules.length > 0) {\r\n _.map(validationRules, (x) => {\r\n let refFromValidationValueText = x.ValidationRuleValue.match(_contextVariableREGEX);\r\n if (refFromValidationValueText) {\r\n refFromValidationValueText.forEach((ref) => {\r\n var key = trimReference(ref);\r\n if (!_.includes(refs, key)) refs.push(key);\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (!_.isEmpty(refs)) {\r\n let parentRepeatNum = parentRepeatNr == null ? \"null\" : parentRepeatNr;\r\n let key = `${question.ID}||${repeatNr}||${parentRepeatNum}`;\r\n map = defaultQuestionRefCollection(key);\r\n\r\n refs.forEach((r) => {\r\n let refItem;\r\n if (r.match(_datePreviousQuestionnaireREGEX) && r in questionReferencesDictionary) {\r\n refItem = _.first(questionReferencesDictionary[r]);\r\n } else {\r\n let referenceCollection = getUniqueFromDictionary(questionReferencesDictionary, r);\r\n\r\n if (!_.isEmpty(referenceCollection)) {\r\n refItem = _.find(referenceCollection, function (refCollectoinItem) {\r\n return refCollectoinItem.RepeatNumber === repeatNr && refCollectoinItem.ParentRepeatNumber === parentRepeatNr;\r\n });\r\n\r\n if (!refItem) {\r\n refItem = _.find(referenceCollection, function (refCollectoinItem) {\r\n return refCollectoinItem.RepeatNumber === parentRepeatNr && refCollectoinItem.ParentRepeatNumber === null;\r\n });\r\n }\r\n\r\n if (!refItem && (repeatNr > 0 || parentRepeatNr > 0) && referenceCollection.length == 1) {\r\n refItem = { ...referenceCollection[0], RepeatNumber: repeatNr, ParentRepeatNumber: parentRepeatNr };\r\n }\r\n }\r\n }\r\n\r\n map.references[r] = refItem ?? null;\r\n });\r\n }\r\n\r\n return map;\r\n};\r\n\r\nconst getUniqueFromDictionary = (questionReferencesDictionary, refKey) => {\r\n var keys = _.filter(Object.keys(questionReferencesDictionary), (key) => {\r\n var ref = key.split(\"||\")[0];\r\n return ref === refKey;\r\n });\r\n\r\n if (_.isEmpty(keys)) return null;\r\n\r\n let refCollection = [];\r\n\r\n _.forEach(keys, function (key) {\r\n var qReferences = questionReferencesDictionary[key];\r\n\r\n if (!_.isEmpty(qReferences)) {\r\n _.forEach(qReferences, (qRef) => {\r\n var found = _.find(refCollection, function (refCollectoinItem) {\r\n return refCollectoinItem.RepeatNumber === qRef.RepeatNumber && refCollectoinItem.ParentRepeatNumber === qRef.ParentRepeatNumber;\r\n });\r\n\r\n if (!found) refCollection.push(qRef);\r\n });\r\n }\r\n });\r\n\r\n return refCollection;\r\n};\r\n\r\nexport const parseRererences = (text, questionRefMap, repeatNumber, parentRepeatNumber, sectionReferenceName) => {\r\n let qRefs = text.match(_contextVariableREGEX);\r\n\r\n if (qRefs) {\r\n qRefs.forEach((ref) => {\r\n var refVal = calculateRef(ref, questionRefMap, repeatNumber, parentRepeatNumber, sectionReferenceName);\r\n text = text.replace(ref, refVal);\r\n });\r\n }\r\n\r\n return text;\r\n};\r\n\r\nconst calculateRef = (ref, questionRefMap, repeatNumber, parentRepeatNumber, sectionReferenceName) => {\r\n if (ref.match(_sectionRepeatNrREGEX)) return repeatNumber === 0 && parentRepeatNumber !== null ? parentRepeatNumber.toString() : repeatNumber.toString();\r\n\r\n let mapKey = trimReference(ref);\r\n let txtRpl = \"n/a\";\r\n\r\n if (questionRefMap && mapKey in questionRefMap) {\r\n var answersContainer = questionRefMap[mapKey];\r\n let answersFound = false;\r\n answersFound = answersContainer && answersContainer.RepeatNumber === repeatNumber && answersContainer.ParentRepeatNumber === parentRepeatNumber;\r\n\r\n //sectionReferenceName = sectionReferenceName != null ? sectionReferenceName.trim() : sectionReferenceName;\r\n if (!answersFound) answersFound = answersContainer && answersContainer.RepeatNumber === parentRepeatNumber && answersContainer.ParentRepeatNumber === null;\r\n\r\n if (answersContainer && ref.match(_datePreviousQuestionnaireReferenceREGEX)) answersFound = true;\r\n\r\n if (answersFound) {\r\n if (answersContainer.Answers) {\r\n let cascadingLines = extractCascadingLines(ref);\r\n txtRpl = formatAnswers(answersContainer.Answers, cascadingLines);\r\n } else if (answersContainer.MultipleChoiceAnswers) {\r\n txtRpl = formatAnswersMC(answersContainer.MultipleChoiceAnswers);\r\n }\r\n }\r\n }\r\n\r\n return txtRpl;\r\n};\r\n\r\nexport const trimReference = (str) => {\r\n let trimed = str.replace(\"{{\", \"\").replace(\"}}\", \"\");\r\n trimed = trimed.replace(_cascadingLinesREGEX, \"\");\r\n\r\n return trimed.trim().toLowerCase();\r\n};\r\n\r\nexport const extractCascadingLines = (ref) => {\r\n let trimed = ref.replace(\"{{\", \"\").replace(\"}}\", \"\");\r\n trimed = trimed.trim().toLowerCase();\r\n\r\n let match = trimed.match(_cascadingLinesREGEX);\r\n\r\n if (match && match.length) {\r\n let brackets = match[0];\r\n let digits = brackets.match(/\\d+/g);\r\n\r\n if (digits && digits.length) {\r\n let digitsArray = [];\r\n digits.forEach((d) => {\r\n var zIndexLine = parseInt(d, 10);\r\n if (!isNaN(zIndexLine) && zIndexLine > 0) digitsArray.push(zIndexLine);\r\n });\r\n\r\n return digitsArray;\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const formatAnswers = (answers, cascadingLines) => {\r\n let isCascading = _.some(answers, (x) => !_.isEmpty(x.CascadingListAnswerValue) || !_.isEmpty(x.AnswerValue.value));\r\n if (cascadingLines) answers = _.filter(answers, (x) => _.includes(cascadingLines, x.Order));\r\n\r\n let answer = \"\";\r\n\r\n if (isCascading) {\r\n if (answers.length === 1) {\r\n let answerValue = !_.isEmpty(answers[0].AnswerValue.value) ? answers[0].AnswerValue.value : answers[0].AnswerValue;\r\n answer = answer + ` ${answerValue}`;\r\n } else {\r\n _.orderBy(answers, \"Order\").forEach((a) => {\r\n let answerValue = _.isObjectLike(a.AnswerValue) ? a.AnswerValue.value : a.AnswerValue;\r\n answer = answer + `
${a.SubQuestionName}: ${answerValue}
`;\r\n });\r\n }\r\n } else {\r\n _.orderBy(answers, \"Order\").forEach((a) => {\r\n let answerValue = a.SubQuestionName.toLowerCase().includes(\"date\") ? formatDateAnswer(a.AnswerValue) : a.AnswerValue;\r\n answer = _.isEmpty(answer) ? answer + answerValue : \";\" + answer + answerValue;\r\n });\r\n }\r\n\r\n return answer;\r\n};\r\nexport const formatAnswersMC = (answers) => {\r\n let answer = \"\";\r\n _.orderBy(answers, \"order\").forEach((a) => {\r\n if (_.isEmpty(a.optionText)) {\r\n let firstAnswer = \"\";\r\n let secondAnswer = \"\";\r\n if (a.answers != null) {\r\n if (!_.isEmpty(a.answers[0])) {\r\n firstAnswer = a.answers[0].SubQuestionName.toLowerCase().includes(\"date\") ? formatDateAnswer(a.answers[0].AnswerValue) : a.answers[0].AnswerValue;\r\n }\r\n if (!_.isEmpty(a.answers[1])) {\r\n secondAnswer = a.answers[1].SubQuestionName.toLowerCase().includes(\"date\") ? formatDateAnswer(a.answers[1].AnswerValue) : a.answers[1].AnswerValue;\r\n }\r\n }\r\n let firstText = a.firstText ? a.firstText : \"\";\r\n let secondText = a.secondText ? a.secondText : \"\";\r\n let lastText = a.lastText ? a.lastText : \"\";\r\n\r\n answer = answer + `; ${firstText} ${firstAnswer} ${secondText} ${secondAnswer} ${lastText}`;\r\n } else answer = answer + `${a.optionText};`;\r\n });\r\n return answer;\r\n};\r\n\r\nexport const updateOrInsertThenDispatch = (dispatch, questionReferencesMap, mapKeys, repeatNumber, parentRepeatNumber, fullName, answers, cultureCode, option, checked, isExclusive, archived) => {\r\n _.forEach(mapKeys, function (key) {\r\n let qReferences = questionReferencesMap[key];\r\n\r\n if (key in questionReferencesMap) {\r\n let existingRefAnswer = _.find(qReferences, (qRef) => {\r\n return qRef != null && qRef.RepeatNumber === repeatNumber && qRef.ParentRepeatNumber === parentRepeatNumber;\r\n });\r\n\r\n if (_.isEmpty(existingRefAnswer)) {\r\n //if not found, try to find reference in level above -- IMPORTANT: will need to be changed when all paths of parentRepeatNrs will be added\r\n existingRefAnswer = _.find(qReferences, (qRef) => {\r\n return qRef != null && qRef.RepeatNumber === parentRepeatNumber;\r\n });\r\n }\r\n\r\n if (existingRefAnswer) {\r\n if (existingRefAnswer.Answers) {\r\n existingRefAnswer = { ...existingRefAnswer, Answers: definePreviousAnswers(answers) };\r\n } else if (existingRefAnswer.MultipleChoiceAnswers) {\r\n existingRefAnswer = {\r\n ...existingRefAnswer,\r\n MultipleChoiceAnswers: definePreviousOptionAnswers(option, checked, isExclusive, answers, existingRefAnswer.MultipleChoiceAnswers, cultureCode),\r\n };\r\n }\r\n\r\n questionReferencesMap[key] = _.map(qReferences, (x) => {\r\n if (x.RepeatNumber === repeatNumber && x.ParentRepeatNumber === parentRepeatNumber) x = existingRefAnswer;\r\n return x;\r\n });\r\n\r\n dispatch({\r\n type: UPDATE_QUESTION_REF_MAP,\r\n payload: {\r\n repeatNumber,\r\n parentRepeatNumber,\r\n fullName,\r\n prevAnswer: existingRefAnswer,\r\n },\r\n });\r\n } else {\r\n let prevAnswer = {};\r\n prevAnswer.RepeatNumber = repeatNumber;\r\n prevAnswer.ParentRepeatNumber = parentRepeatNumber;\r\n if (option) {\r\n prevAnswer.Archived = archived;\r\n prevAnswer.MultipleChoiceAnswers = definePreviousOptionAnswers(option, checked, isExclusive, answers, [], cultureCode);\r\n } else {\r\n prevAnswer.Answers = definePreviousAnswers(answers);\r\n }\r\n if (!questionReferencesMap[key]) questionReferencesMap[key] = [];\r\n questionReferencesMap[key].push(prevAnswer);\r\n\r\n dispatch({\r\n type: UPDATE_QUESTION_REF_MAP,\r\n payload: {\r\n repeatNumber,\r\n parentRepeatNumber,\r\n fullName,\r\n prevAnswer,\r\n },\r\n });\r\n }\r\n }\r\n });\r\n};\r\n\r\nconst definePreviousAnswers = (answers) => {\r\n let transformedAnswers = [];\r\n _.forEach(answers, (a) => {\r\n var prevAns = {};\r\n if (a.AnswerValue && typeof a.AnswerValue == \"object\") {\r\n prevAns.CascadingListAnswerValue = { ...a.AnswerValue };\r\n prevAns.SubQuestionName = a.SubQuestionName;\r\n prevAns.Order = a.Order;\r\n prevAns.AnswerValue = a.AnswerValue.value;\r\n } else prevAns = { ...a };\r\n transformedAnswers.push(prevAns);\r\n });\r\n return transformedAnswers;\r\n};\r\n\r\nconst definePreviousOptionAnswers = (option, checked, isExclusive, answers, existingAnswers, cultureCode) => {\r\n let transformedAnswers = [...existingAnswers];\r\n if (checked) {\r\n if (isExclusive) {\r\n transformedAnswers = [];\r\n }\r\n let optionObject = defineOptionObject(option, cultureCode);\r\n optionObject.answers = [...answers];\r\n transformedAnswers.push(optionObject);\r\n } else {\r\n transformedAnswers = _.filter(transformedAnswers, (optionAnswer) => {\r\n return optionAnswer.optionText !== option.AnswerText && optionAnswer.optionValue !== option.AnswerValue;\r\n });\r\n }\r\n return transformedAnswers;\r\n};\r\n","import _ from \"lodash\";\r\nimport { LogicalOperator, CategoryOperator } from \"../Enums\";\r\n\r\n/**\r\n * calulate anwer option condition based on previous set categories\r\n * @param {object} categoryCondtion answer option condition\r\n * @param {array} textCategories\r\n * @param {array} numericCategories\r\n */\r\nexport const shouldHideAnswerOption = (categoryCondtion, textCategories, numericCategories) => {\r\n if (!categoryCondtion) return false;\r\n\r\n let textCategoryResult = evaluateCondition(categoryCondtion, CategoryOperator.Equals, false, textCategories, null);\r\n if (!textCategoryResult)\r\n return evaluateCondition(categoryCondtion, CategoryOperator.NumericEquals, false, numericCategories, null);\r\n return textCategoryResult;\r\n};\r\n\r\n/**\r\n * Get categories set in previous pages with sort order smaller or equal to the current page sort order\r\n * @param {array} categories user questionnaire categories\r\n * @param {int} sortOrder page sort order\r\n * @param {int} operator operator for previous categories\r\n */\r\nexport const getSectionCategories = (categories, sortOrder, operator = null) => {\r\n let previousSectionsCategories = _.filter(categories, (category) => {\r\n if (operator === CategoryOperator.Smaller) return category.SectionSortOrder < sortOrder;\r\n else return category.SectionSortOrder <= sortOrder;\r\n });\r\n\r\n let sectionCategories = [];\r\n _.orderBy(previousSectionsCategories, \"SectionSortOrder\", \"desc\").forEach((category) => {\r\n if (!_.find(sectionCategories, [\"CategoryID\", category.CategoryID])) sectionCategories.push(category);\r\n });\r\n return sectionCategories;\r\n};\r\n/**\r\n * Get not relevant categories\r\n * @param {array} categories user questionnaire categories\r\n * @param {object} sectionsConditions sections conditions store\r\n */\r\nexport const getNotRelevantCategories = (categories, sectionsConditionsStore) => {\r\n let notVisiblePages = Object.keys(\r\n _.pickBy(sectionsConditionsStore, (value) => {\r\n if (value.visible === false) return value;\r\n })\r\n );\r\n\r\n return _.filter(categories, (category) => {\r\n return notVisiblePages.includes(category.SectionID);\r\n });\r\n};\r\n/**\r\n *\r\n * @param {object} categoryCondition condition to be evaluate\r\n * @param {int} categoryOperator condition operator\r\n * @param {bool} negate\r\n * @param {array} textCategories text categories for calulation\r\n * @param {array} numericCategories numeric categories for calculation\r\n */\r\nexport const evaluateCondition = (categoryCondition, categoryOperator, negate, textCategories, numericCategories) => {\r\n switch (categoryOperator) {\r\n case CategoryOperator.Equals:\r\n return evaluateEquals(categoryCondition, textCategories, negate);\r\n case CategoryOperator.NotEquals:\r\n return evaluateEquals(categoryCondition, textCategories, true);\r\n case CategoryOperator.Became:\r\n return evaluateBecame(categoryCondition, textCategories);\r\n case CategoryOperator.BecameNot:\r\n return evaluateBecameNot(categoryCondition, textCategories);\r\n case CategoryOperator.Bigger:\r\n return evaluateBigger(categoryCondition, numericCategories);\r\n case CategoryOperator.BiggerEquals:\r\n return evaluateBiggerEquals(categoryCondition, numericCategories);\r\n case CategoryOperator.Smaller:\r\n return evaluateSmaller(categoryCondition, numericCategories);\r\n case CategoryOperator.SmallerEquals:\r\n return evaluateSmallerEquals(categoryCondition, numericCategories);\r\n case CategoryOperator.NumericEquals:\r\n return evaluateNumericEquals(categoryCondition, textCategories);\r\n }\r\n return true;\r\n};\r\nconst evaluateNumericEquals = (categoryCondition, categories) => {\r\n let category = _.find(categories, (category) => {\r\n return category.CategoryID === categoryCondition.CategoryID;\r\n });\r\n\r\n let matchFound = false;\r\n if (category && category.NumericValue === categoryCondition.Value) {\r\n matchFound = true;\r\n }\r\n return matchFound;\r\n};\r\nconst evaluateEquals = (categoryCondition, categories, negate) => {\r\n let category = _.find(categories, (category) => {\r\n return category.CategoryID === categoryCondition.CategoryID;\r\n });\r\n if (!category && categoryCondition.isDefault) return true;\r\n\r\n let matchFound = false;\r\n if (category && category.Value === categoryCondition.Value) {\r\n matchFound = true;\r\n }\r\n if (negate) return !matchFound;\r\n return matchFound;\r\n};\r\n\r\nconst evaluateBecame = (categoryCondition, categories) => {\r\n let matchFound = _.some(categories, (category) => {\r\n return (\r\n category.SectionID != null &&\r\n category.CategoryID === categoryCondition.CategoryID &&\r\n category.Value === categoryCondition.Value\r\n );\r\n });\r\n\r\n return matchFound;\r\n};\r\n\r\nconst evaluateBecameNot = (categoryCondition, categories) => {\r\n let matchFound = _.some(categories, (category) => {\r\n return (\r\n category.SectionID != null &&\r\n category.CategoryID === categoryCondition.CategoryID &&\r\n category.Value !== categoryCondition.Value &&\r\n !category.SetAsDefault\r\n );\r\n });\r\n return matchFound;\r\n};\r\nconst evaluateBigger = (categoryCondition, categories) => {\r\n let category = _.find(categories, (category) => {\r\n return category.CategoryID === categoryCondition.CategoryID;\r\n });\r\n let numericValue = 0;\r\n if (category) numericValue = category.NumericValue;\r\n return numericValue > categoryCondition.Value;\r\n};\r\nconst evaluateBiggerEquals = (categoryCondition, categories) => {\r\n let category = _.find(categories, (category) => {\r\n return category.CategoryID === categoryCondition.CategoryID;\r\n });\r\n\r\n let numericValue = 0;\r\n if (category) numericValue = category.NumericValue;\r\n\r\n return numericValue >= categoryCondition.Value;\r\n};\r\nconst evaluateSmaller = (categoryCondition, categories) => {\r\n let category = _.find(categories, (category) => {\r\n return category.CategoryID === categoryCondition.CategoryID;\r\n });\r\n\r\n let numericValue = 0;\r\n if (category) numericValue = category.NumericValue;\r\n return numericValue < categoryCondition.Value;\r\n};\r\nconst evaluateSmallerEquals = (categoryCondition, categories) => {\r\n let category = _.find(categories, (category) => {\r\n return category.CategoryID === categoryCondition.CategoryID;\r\n });\r\n\r\n let numericValue = 0;\r\n if (category) numericValue = category.NumericValue;\r\n return numericValue <= categoryCondition.Value;\r\n};\r\n\r\n/**\r\n * Evaluate section visibility for all defined category conditions\r\n * @param {object} sectionConditions section conditions\r\n */\r\nexport const evaluateConditions = (sectionConditions) => {\r\n let properties = sectionConditions.properties;\r\n\r\n let evaluations = Object.values(sectionConditions.categories);\r\n let firstEvaluations = _.map(evaluations, (evaluation) => {\r\n let categoryConditionEvaulations = _.reduce(\r\n evaluation,\r\n (result, condition) => {\r\n if (condition.isFirstSet) {\r\n result.push(condition.evaluated);\r\n }\r\n return result;\r\n },\r\n []\r\n );\r\n return evaluateLogicalOperator(properties.logicalOperator1, categoryConditionEvaulations);\r\n });\r\n\r\n let secondEvaluations = _.map(evaluations, (evaluation) => {\r\n let categoryConditionEvaulations = _.reduce(\r\n evaluation,\r\n (result, condition) => {\r\n if (!condition.isFirstSet) {\r\n result.push(condition.evaluated);\r\n }\r\n return result;\r\n },\r\n []\r\n );\r\n if (_.isEmpty(categoryConditionEvaulations)) return null;\r\n return evaluateLogicalOperator(properties.logicalOperator2, categoryConditionEvaulations);\r\n });\r\n\r\n let firstEvaluationsResult = false;\r\n let secondEvaluationResult = false;\r\n\r\n if (firstEvaluations.length > 0) {\r\n firstEvaluationsResult = evaluateLogicalOperator(properties.logicalOperator1, firstEvaluations);\r\n }\r\n if (secondEvaluations.length > 0) {\r\n secondEvaluationResult = evaluateLogicalOperator(\r\n properties.logicalOperator2,\r\n _.filter(secondEvaluations, (x) => {\r\n return x != null;\r\n })\r\n );\r\n }\r\n\r\n if (\r\n properties.secondCategoryConditionOperator != null &&\r\n _.filter(secondEvaluations, (x) => {\r\n return x == null;\r\n }).length !== secondEvaluations.length\r\n )\r\n return evaluateLogicalOperator(properties.secondCategoryConditionOperator, [\r\n firstEvaluationsResult,\r\n secondEvaluationResult,\r\n ]);\r\n else return firstEvaluationsResult;\r\n};\r\n/**\r\n * Evaluate section visibility based on logical operator\r\n * @param {int} logicalOperator section conditions\r\n * @param {array} evaluationResults calulated section conditions results\r\n */\r\nexport const evaluateLogicalOperator = (logicalOperator, evaluationResults) => {\r\n if (logicalOperator === LogicalOperator.Or)\r\n return _.some(evaluationResults, (element) => {\r\n return element === true;\r\n });\r\n\r\n if (logicalOperator === LogicalOperator.And)\r\n return _.every(evaluationResults, (element) => {\r\n return element === true;\r\n });\r\n};\r\n","import nl from \"./nl-NL.json\";\r\nimport en from \"./en-GB.json\";\r\nimport de from \"./de-DE.json\";\r\nimport fr from \"./fr-FR.json\";\r\nimport it from \"./it-IT.json\";\r\n\r\nexport const default_culture = \"nl-NL\";\r\n\r\nconst resources = {\r\n \"nl-NL\": nl,\r\n \"en-GB\": en,\r\n \"de-DE\": de,\r\n \"fr-FR\": fr,\r\n \"it-IT\": it,\r\n};\r\n\r\nexport const res = (culture, resKey) => {\r\n if (!culture) throw new Error(\"no culture provided for localization\");\r\n if (!resKey) throw new Error(\"no resource key provided for localization\");\r\n if (!(culture in resources)) throw new Error(`\"no localization found for culture ${culture}\"`);\r\n\r\n let culture_res = resources[culture];\r\n if (resKey in culture_res) return culture_res[resKey];\r\n else {\r\n console.warn(`no resource found for culture ${culture} and key:${resKey}`);\r\n return \"\";\r\n }\r\n};\r\n","import { calculateSectionsVisibility } from \"../../assets/questionnaire/containers/sectionConditionsContainer\";\r\n\r\nexport const SHOW_OR_HIDE_SECTION = \"SHOW_OR_HIDE_SECTION\";\r\n//show/hide section action\r\nexport const showOrHideSectionThunk = (sectionId, repeatId, questionId) => (dispatch, getState) => {\r\n let { sections, tempStorage } = getState();\r\n let { selectedPage, previousQuestions, previousSections, sectionsConditions, cultureCode } =\r\n getState().userQuestionnaire;\r\n let storeData = {\r\n sections,\r\n requiredItems: tempStorage.requiredItems,\r\n selectedPage,\r\n previousQuestions,\r\n previousSections,\r\n sectionsConditions,\r\n cultureCode,\r\n };\r\n\r\n calculateSectionsVisibility(storeData, dispatch, sectionId, repeatId, questionId); //inside this, showOrHideSection action is dispatched\r\n};\r\n\r\nexport default function showOrHideSection({\r\n section,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n followup,\r\n visible,\r\n existingRepeats,\r\n selectedPage,\r\n previousQuestions,\r\n previousSections,\r\n sectionsConditions,\r\n cultureCode,\r\n}) {\r\n return {\r\n type: SHOW_OR_HIDE_SECTION,\r\n payload: {\r\n section,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n selectedPage,\r\n followup,\r\n visible,\r\n repeats: existingRepeats,\r\n previousQuestions,\r\n previousSections,\r\n sectionsConditions,\r\n cultureCode,\r\n },\r\n };\r\n}\r\n","import { TranslationKey } from \"../Enums\";\r\nimport { getAnswerOptionParameterValue, getComponentTranslationsText } from \"../Utils/questionComponentUtil\";\r\nimport { trimReference } from \"../Utils/questionReferencesUtil\";\r\nimport _ from \"lodash\";\r\n\r\nconst defaultQuestionObject = (\r\n component,\r\n referenceName,\r\n repeatNumber,\r\n parentRepeatNumber,\r\n previousQuestions,\r\n cultureCode\r\n) => {\r\n let previousQuestion = null;\r\n if (!_.isEmpty(previousQuestions)) {\r\n previousQuestion =\r\n previousQuestions[\r\n `${component.QuestionDTO.EnclosingSectionName}||${component.QuestionDTO.ShortName}||${repeatNumber}||${\r\n parentRepeatNumber == null ? 0 : parentRepeatNumber\r\n }`\r\n ];\r\n if (_.isEmpty(previousQuestion) && _.isEmpty(referenceName.trim()))\r\n previousQuestion =\r\n previousQuestions[\r\n `${component.QuestionDTO.EnclosingSectionName}||${component.QuestionDTO.ShortName}||${parentRepeatNumber}||0`\r\n ];\r\n }\r\n\r\n let answers = {};\r\n let duplicateOptions = null;\r\n\r\n if (!_.isEmpty(previousQuestion)) {\r\n if (previousQuestion.Answers != null) {\r\n answers = _.map(previousQuestion.Answers, (answer) => {\r\n if (answer.CascadingListAnswerValue != null)\r\n return {\r\n SubQuestionName: answer.SubQuestionName,\r\n AnswerValue: { ...answer.CascadingListAnswerValue },\r\n Order: answer.Order,\r\n };\r\n return answer;\r\n });\r\n }\r\n if (previousQuestion.MultipleChoiceAnswers != null) {\r\n for (let answer of previousQuestion.MultipleChoiceAnswers) {\r\n let option = _.find(component.QuestionDTO.AnswerOptions, (option) => {\r\n return option.AnswerValue === answer.optionValue && !answer.duplicated;\r\n });\r\n if (option == null && answer.duplicated) {\r\n option = _.find(previousQuestion.DuplicateAnswerOptions, (option) => {\r\n return option.AnswerValue === answer.optionValue && option.SortOrder === answer.order;\r\n });\r\n }\r\n if (option != null) {\r\n answers = { ...answers, [option.ID]: defineOptionObject(option, cultureCode) };\r\n if (!_.isEmpty(answer.answers)) answers[option.ID].answers = [...answer.answers];\r\n }\r\n }\r\n }\r\n\r\n if (previousQuestion.DuplicateAnswerOptions != null) {\r\n duplicateOptions = [...previousQuestion.DuplicateAnswerOptions];\r\n }\r\n }\r\n\r\n var questionObject = {\r\n id: component.ID,\r\n answers,\r\n };\r\n\r\n if (duplicateOptions != null) questionObject = { ...questionObject, duplicateOptions };\r\n return questionObject;\r\n};\r\n\r\nconst defaultHiddenQuestionObject = (id) => {\r\n return {\r\n id,\r\n answers: [],\r\n };\r\n};\r\n\r\nconst defaultSummaryQuestionObject = (component, previousQuestions) => {\r\n let sectionName = component.QuestionDTO.TargetSectionName;\r\n let answers = [];\r\n if (!_.isEmpty(previousQuestions)) {\r\n _.forEach(component.QuestionDTO.SummaryQuestionColumnDefinitions, (column) => {\r\n if (!_.isEmpty(column.Content)) {\r\n let questionShortName = trimReference(column.Content);\r\n let keys = _.filter(Object.keys(previousQuestions), (key) => {\r\n return _.startsWith(key, `${sectionName}||${questionShortName}||`);\r\n });\r\n for (let key of keys) {\r\n let previousQuestion = previousQuestions[key];\r\n if (!_.isEmpty(previousQuestion)) {\r\n answers = [...answers, previousQuestion];\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n return {\r\n id: component.ID,\r\n answers,\r\n };\r\n};\r\n\r\nexport const defineOptionObject = (option, cultureCode) => {\r\n if (option.ShowQuestionTypeAsAnswerOption) {\r\n let firstText = getAnswerOptionParameterValue(\r\n option.AnswerOptionParameters,\r\n \"First text\",\r\n cultureCode,\r\n TranslationKey.AnswersParameterValue\r\n );\r\n let lastText = getAnswerOptionParameterValue(\r\n option.AnswerOptionParameters,\r\n \"Last text\",\r\n cultureCode,\r\n TranslationKey.AnswersParameterValue\r\n );\r\n let secondText = getAnswerOptionParameterValue(\r\n option.AnswerOptionParameters,\r\n \"Second text\",\r\n cultureCode,\r\n TranslationKey.AnswersParameterValue\r\n );\r\n return {\r\n firstText: firstText ?? \"\",\r\n secondText: secondText ?? \"\",\r\n lastText: lastText ?? \"\",\r\n optionValue: option.AnswerValue,\r\n order: option.SortOrder,\r\n answers: [],\r\n };\r\n } else {\r\n let answerOptionText = getComponentTranslationsText(\r\n cultureCode,\r\n option.Translations,\r\n TranslationKey.AnswerOptionText\r\n );\r\n return {\r\n optionValue: option.AnswerValue,\r\n optionText: answerOptionText,\r\n order: option.SortOrder,\r\n answers: [],\r\n };\r\n }\r\n};\r\nexport function modifyAnswers(draftState, sectionId, repeatId, questionId, answers) {\r\n if (!draftState[sectionId])\r\n throw new Error(`handleStateFunctions.question.modifyAnswers: state for id:${sectionId} is missing`);\r\n\r\n if (!draftState[sectionId].repeats[repeatId])\r\n throw new Error(`handleStateFunctions.question.modifyAnswers: repeatsState for id:${repeatId} is missing`);\r\n\r\n if (!draftState[sectionId].repeats[repeatId].questions[questionId])\r\n throw new Error(`handleStateFunctions.question.modifyAnswers: questionState for id:${questionId} is missing`);\r\n\r\n draftState[sectionId].repeats[repeatId].questions[questionId].answers = answers;\r\n}\r\n\r\nexport function modifyMultipleChoiceOption(\r\n draftState,\r\n sectionId,\r\n repeatId,\r\n questionId,\r\n option,\r\n checked,\r\n isExclusive,\r\n archived,\r\n cultureCode,\r\n parentSectionId\r\n) {\r\n if (!draftState[sectionId])\r\n throw new Error(`handleStateFunctions.question.modifyAnswers: state for id:${sectionId} is missing`);\r\n\r\n if (!draftState[sectionId].repeats[repeatId])\r\n throw new Error(`handleStateFunctions.question.modifyAnswers: repeatsState for id:${repeatId} is missing`);\r\n\r\n if (!draftState[sectionId].repeats[repeatId].questions[questionId])\r\n throw new Error(`handleStateFunctions.question.modifyAnswers: questionState for id:${questionId} is missing`);\r\n\r\n if (archived != null) {\r\n draftState[sectionId].repeats[repeatId].archived = archived;\r\n draftState[sectionId].repeats[repeatId].archivedInCurrentQuestionnaire = true;\r\n if (parentSectionId) {\r\n draftState[parentSectionId].repeats[repeatId].archived = archived;\r\n draftState[parentSectionId].repeats[repeatId].archivedInCurrentQuestionnaire = true;\r\n }\r\n }\r\n\r\n if (checked) {\r\n if (isExclusive) {\r\n draftState[sectionId].repeats[repeatId].questions[questionId].answers = {\r\n [option.ID]: defineOptionObject(option, cultureCode),\r\n };\r\n } else {\r\n draftState[sectionId].repeats[repeatId].questions[questionId].answers[option.ID] = defineOptionObject(\r\n option,\r\n cultureCode\r\n );\r\n }\r\n } else {\r\n let omitedAnswers = _.omit(draftState[sectionId].repeats[repeatId].questions[questionId].answers, option.ID);\r\n draftState[sectionId].repeats[repeatId].questions[questionId].answers = omitedAnswers;\r\n }\r\n}\r\n\r\nexport function modifyMultipleChoiceAnswers(\r\n draftState,\r\n sectionId,\r\n repeatId,\r\n questionId,\r\n option,\r\n answers,\r\n isExclusive,\r\n archived,\r\n cultureCode,\r\n parentSectionId\r\n) {\r\n if (!draftState[sectionId])\r\n throw new Error(`handleStateFunctions.question.modifyMultipleChoiceAnswers: state for id:${sectionId} is missing`);\r\n\r\n if (!draftState[sectionId].repeats[repeatId])\r\n throw new Error(\r\n `handleStateFunctions.question.modifyMultipleChoiceAnswers: repeatsState for id:${repeatId} is missing`\r\n );\r\n\r\n if (!draftState[sectionId].repeats[repeatId].questions[questionId])\r\n throw new Error(\r\n `handleStateFunctions.question.modifyMultipleChoiceAnswers: questionState for id:${questionId} is missing`\r\n );\r\n\r\n if (!draftState[sectionId].repeats[repeatId].questions[questionId].answers[option.ID]) {\r\n modifyMultipleChoiceOption(\r\n draftState,\r\n sectionId,\r\n repeatId,\r\n questionId,\r\n option,\r\n true,\r\n isExclusive,\r\n archived,\r\n cultureCode,\r\n parentSectionId\r\n );\r\n }\r\n\r\n draftState[sectionId].repeats[repeatId].questions[questionId].answers[option.ID].answers = answers;\r\n\r\n if (archived != null) {\r\n draftState[sectionId].repeats[repeatId].archived = archived;\r\n draftState[sectionId].repeats[repeatId].archivedInCurrentQuestionnaire = true;\r\n if (parentSectionId) {\r\n draftState[parentSectionId].repeats[repeatId].archived = archived;\r\n draftState[parentSectionId].repeats[repeatId].archivedInCurrentQuestionnaire = true;\r\n }\r\n }\r\n}\r\n\r\nexport function defineQuestionsInRepeat(section, number, parentRepeatNumber, previousQuestions, cultureCode) {\r\n let questions = {};\r\n _.map(section.SectionDTO.SectionContentTemplate.Components, (component) => {\r\n if (component.QuestionDTO) {\r\n questions = {\r\n ...questions,\r\n [component.ID]:\r\n component.QuestionDTO.QuestionType === \"HiddenQuestion\"\r\n ? defaultHiddenQuestionObject(component.ID)\r\n : component.QuestionDTO.QuestionType === \"SummaryQuestion\"\r\n ? defaultSummaryQuestionObject(component, previousQuestions)\r\n : defaultQuestionObject(\r\n component,\r\n section.SectionDTO.ReferenceName,\r\n number,\r\n parentRepeatNumber,\r\n previousQuestions,\r\n cultureCode\r\n ),\r\n };\r\n }\r\n });\r\n return questions;\r\n}\r\n","export const DELETE_REPEAT = \"DELETE_REPEAT\";\r\n\r\nlet deleteRepeat = (section, repeatId) => (dispatch, getState) => {\r\n let isArchived = getState().sections[section.ID].repeats[repeatId].archived;\r\n let { selectedPage } = getState().userQuestionnaire;\r\n\r\n dispatch({\r\n type: DELETE_REPEAT,\r\n payload: { section, repeatId, isArchived, selectedPage },\r\n });\r\n};\r\n\r\nexport default deleteRepeat;\r\n","import _ from \"lodash\";\r\nimport { LogicalOperator } from \"../Enums\";\r\nimport showOrHideSection from \"../../../actions/section/showOrHideSection\";\r\nimport resetTextCategories from \"../../../actions/userQuestionnaire/categories/resetTextCategories\";\r\nimport { getDescendantMCquestionsInSection } from \"../Utils/questionComponentUtil\";\r\n\r\nexport let SectionConditionsMap = {};\r\n\r\nexport const resetSectionConditionsMap = () => {\r\n SectionConditionsMap = {};\r\n};\r\n\r\nexport const registerCondition = (section) => {\r\n let sectionId = section.ID;\r\n let showConditions = section.SectionDTO.AnswerShowCondition;\r\n\r\n if (!SectionConditionsMap[sectionId]) {\r\n if (!_.isEmpty(showConditions) && _.isArray(showConditions)) {\r\n var conditions = _.filter(showConditions, (val) => !_.isEmpty(val.QuestionID));\r\n\r\n if (!_.isEmpty(conditions)) SectionConditionsMap[sectionId] = { section, conditions };\r\n }\r\n }\r\n};\r\n\r\nexport const calculateSectionsVisibility = (storeData, dispatch, sectionId, repeatId, mcQuestionId) => {\r\n if (sectionId && repeatId && mcQuestionId) {\r\n let affectedSections = _.pickBy(SectionConditionsMap, (prop) =>\r\n _.some(prop.conditions, [\"QuestionID\", mcQuestionId])\r\n );\r\n\r\n if (!_.isEmpty(affectedSections)) {\r\n for (let sectionKey in affectedSections)\r\n calculateSectionVisibility(affectedSections[sectionKey], storeData, sectionId, repeatId, dispatch);\r\n }\r\n }\r\n};\r\n\r\nexport const calculateSectionVisibilityWhileInit = (storeData, sectionId, parentSectionId, repeatId) => {\r\n if (!SectionConditionsMap[sectionId]) return null;\r\n\r\n return calculateSectionVisibility(SectionConditionsMap[sectionId], storeData, parentSectionId, repeatId);\r\n};\r\n\r\nfunction calculateSectionVisibility(sectionData, storeData, sectionId, repeatId, dispatch = null) {\r\n let { sections, selectedPage, previousQuestions, previousSections, sectionsConditions, cultureCode } = storeData;\r\n let { section, conditions } = sectionData;\r\n let evaulationResults = [];\r\n let operator = _.last(conditions).LogicalOperator;\r\n\r\n _.map(conditions, (condition) => {\r\n if (\r\n sections[sectionId] &&\r\n sections[sectionId].repeats[repeatId] &&\r\n sections[sectionId].repeats[repeatId].questions[condition.QuestionID]\r\n ) {\r\n let answers = sections[sectionId].repeats[repeatId].questions[condition.QuestionID].answers;\r\n evaulationResults.push(evaluateAnswerStatement(answers, condition));\r\n }\r\n });\r\n\r\n let visible;\r\n if (operator === LogicalOperator.And) visible = _.every(evaulationResults, Boolean);\r\n else visible = _.some(evaulationResults, Boolean);\r\n\r\n let parentRepeatNumber = sections[sectionId].repeats[repeatId].repeatable\r\n ? sections[sectionId].repeats[repeatId].number\r\n : sections[sectionId].repeats[repeatId].parentRepeatId != null\r\n ? sections[sectionId].repeats[repeatId].parentRepeatNumber\r\n : null;\r\n\r\n let parentRepeatId = sections[sectionId].repeats[repeatId].repeatable\r\n ? repeatId\r\n : sections[sectionId].repeats[repeatId].parentRepeatId != null\r\n ? sections[sectionId].repeats[repeatId].parentRepeatId\r\n : null;\r\n let followup = parentRepeatId ? sections[sectionId].repeats[repeatId].followup : false;\r\n\r\n //specific for the sections with empty referenceName\r\n if (\r\n _.isEmpty(sectionData.section.SectionDTO.ReferenceName.trim()) &&\r\n sectionData.section.SectionDTO.ShowOnlyInFollowUpRepeatSection &&\r\n !sectionData.section.SectionDTO.ShowOnlyInNewRepeatSection\r\n )\r\n parentRepeatNumber = parentRepeatId ? sections[sectionId].repeats[repeatId].parentRepeatNumber : null;\r\n\r\n var existingRepeats = _.chain(sections[section.ID].repeats)\r\n .values()\r\n .filter((r) => {\r\n return r.parentRepeatId === parentRepeatId;\r\n })\r\n .value();\r\n\r\n let showSection = visible && _.isEmpty(existingRepeats);\r\n let hideSection = !visible && !_.isEmpty(existingRepeats);\r\n\r\n let shouldDispatch = showSection || hideSection;\r\n\r\n let actionValue = {\r\n section,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n followup,\r\n visible,\r\n existingRepeats,\r\n selectedPage,\r\n previousQuestions,\r\n previousSections,\r\n sectionsConditions,\r\n cultureCode,\r\n };\r\n\r\n if (hideSection && typeof dispatch == \"function\") {\r\n let MCquestions = getDescendantMCquestionsInSection(section.SectionDTO.SectionContentTemplate.Components);\r\n let textCategoryValues = [];\r\n\r\n _.forEach(MCquestions, (q) => {\r\n _.forEach(q.QuestionDTO.AnswerOptions, (ao) => {\r\n _.forEach(ao.CategoryValues, (catVal) => textCategoryValues.push(catVal));\r\n });\r\n });\r\n\r\n if (!_.isEmpty(textCategoryValues)) dispatch(resetTextCategories(textCategoryValues));\r\n }\r\n\r\n if (shouldDispatch && typeof dispatch == \"function\") {\r\n //if it is called by MC question\r\n dispatch(showOrHideSection(actionValue));\r\n return;\r\n }\r\n\r\n return actionValue;\r\n}\r\n\r\nfunction evaluateAnswerStatement(answers, condition) {\r\n let answerFound = false;\r\n _.forIn(answers, (answerObj, optionId) => {\r\n if (answerObj.optionValue === condition.AnswerValue) {\r\n answerFound = true;\r\n return false; //exit loop\r\n }\r\n });\r\n\r\n if (condition.Negate) return !answerFound;\r\n else return answerFound;\r\n}\r\n","import _ from \"lodash\";\r\nimport moment from \"moment\";\r\nimport { defineDayMonthYear } from \"../Utils/questionComponentUtil\";\r\nimport { trimReference, _contextVariableREGEX } from \"../Utils/questionReferencesUtil\";\r\nimport { checkEmailAddress } from \"../../common/emailValidator\";\r\n\r\nexport const validationRulesCommands = (key, ruleValue, answer, currentDate, validationRulesReferences, additionalInfo) => {\r\n const validationRules = {\r\n \"Minimum value\": () => checkMimimumValueRule(ruleValue, answer),\r\n \"Maximum value\": () => checkMaximumValueRule(ruleValue, answer),\r\n \"Minimum decimal value\": () => checkMimimumDecimalValueRule(ruleValue, answer),\r\n \"Maximum decimal value\": () => checkMaximumDecimalValueRule(ruleValue, answer),\r\n \"Maximum number of characters\": () => checkMaximumNumberOfCharactersRule(ruleValue, answer),\r\n \"Date in the future\": () => checkDateInTheFuture(answer, currentDate),\r\n \"Date in the past\": () => checkDateInThePast(answer, currentDate),\r\n \"Date in the past or today\": () => checkDateInThePastOrToday(answer, currentDate),\r\n \"Maximum days in future\": () => checkMaxDaysInTheFuture(ruleValue, answer, currentDate),\r\n \"Maximum days in the past\": () => checkMaxDaysInThePast(ruleValue, answer, currentDate),\r\n \"Minimum days in past\": () => checkMinDaysInThePast(ruleValue, answer, currentDate),\r\n \"Date before answer to other date question\": () => checkDateBeforeAnswerToOtherDateQuestion(validationRulesReferences, answer, ruleValue),\r\n \"Date after answer to other date question\": () => checkDateAfterAnswerToOtherDateQuestion(validationRulesReferences, answer, ruleValue),\r\n \"Valid 11-proof number\": () => checkValid11ProofNumber(answer),\r\n \"Valid email address\": () => checkEmailAddressRule(answer, additionalInfo),\r\n \"Minimum date value\": () => checkMinimumDaysValues(ruleValue, answer),\r\n \"Maximum date value\": () => checkMaximumDaysValues(ruleValue, answer),\r\n \"Valid Dutch Postal Code\": () => checkValidDutchPostalCodeRule(answer),\r\n \"Acceptable age\": () => checkAgeValue(ruleValue, answer),\r\n \"Valid Date\": () => validDate(answer),\r\n \"Valid Day\": () => validDay(answer),\r\n \"Years Old Not Valid\": () => yearsOldNotValid(ruleValue, answer),\r\n \"Year Should Not Be In Future\": () => yearInFuture(answer, currentDate),\r\n \"Year Max Characters\": () => yearMaxCharacters(answer),\r\n \"Valid Year\": () => validYear(answer),\r\n };\r\n\r\n if (!validationRules[key]) return true;\r\n return validationRules[key]();\r\n};\r\n\r\nexport const validationRulesRangeCommands = (key, answer1, answer2) => {\r\n const validationRules = {\r\n \"First number is smaller or equal to the second number\": () => checkFirstNumberSmallerOrEqualNumberSecondValue(answer1, answer2),\r\n \"First date is smaller or equal to the second date\": () => checkFirstDateSmallerOrEqualDateSecondValue(answer1, answer2),\r\n \"Valid Password\": () => validPassword(answer1, answer2),\r\n };\r\n if (!validationRules[key]) return true;\r\n return validationRules[key]();\r\n};\r\n\r\n/**\r\n *check if the answer is bigger or equal then the validation rule defined value\r\n * @param {string} ruleValue validation rule value (value to compare with)\r\n * @param {string} answer question answer\r\n */\r\nconst checkMimimumValueRule = (ruleValue, answer) => {\r\n return _.parseInt(answer) >= _.parseInt(ruleValue);\r\n};\r\n\r\n/**\r\n *check if the answer is smaller or equal then the validation rule defined value\r\n * @param {string} ruleValue validation rule value (value to compare with)\r\n * @param {string} answer question answer\r\n */\r\nconst checkMaximumValueRule = (ruleValue, answer) => {\r\n return _.parseInt(answer) <= _.parseInt(ruleValue);\r\n};\r\n\r\n/**\r\n *check if the answer is bigger or equal then the validation rule defined value\r\n * @param {string} ruleValue validation rule value (value to compare with)\r\n * @param {string} answer question answer\r\n */\r\nconst checkMimimumDecimalValueRule = (ruleValue, answer) => {\r\n if (answer.indexOf !== undefined && ruleValue) {\r\n var correctedAnswer = answer.indexOf(\",\") !== -1 ? answer.replace(\",\", \".\") : answer;\r\n var correctedRuleValue = ruleValue.indexOf(\",\") !== -1 ? ruleValue.replace(\",\", \".\") : ruleValue;\r\n\r\n return parseFloat(correctedAnswer) >= parseFloat(correctedRuleValue);\r\n }\r\n return true;\r\n};\r\n\r\n/**\r\n *check if the answer is smaller or equal then the validation rule defined value\r\n * @param {string} ruleValue validation rule value (value to compare with)\r\n * @param {string} answer question answer\r\n */\r\nconst checkMaximumDecimalValueRule = (ruleValue, answer) => {\r\n if (answer.indexOf !== undefined && ruleValue) {\r\n var correctedAnswer = answer.indexOf(\",\") !== -1 ? answer.replace(\",\", \".\") : answer;\r\n var correctedRuleValue = ruleValue.indexOf(\",\") !== -1 ? ruleValue.replace(\",\", \".\") : ruleValue;\r\n\r\n return parseFloat(correctedAnswer) <= parseFloat(correctedRuleValue);\r\n }\r\n return true;\r\n};\r\n\r\n/**\r\n *check if the answer length is smaller or equal then the validation rule defined value\r\n * @param {string} ruleValue validation rule value (value to compare with)\r\n * @param {string} answer question answer\r\n */\r\nconst checkMaximumNumberOfCharactersRule = (ruleValue, answer) => {\r\n return answer.length <= ruleValue;\r\n};\r\n\r\n/**\r\n *check if the answer is valid dutch postal code (regex)\r\n * @param {string} answer question answer\r\n */\r\nconst checkValidDutchPostalCodeRule = (answer) => {\r\n return /^[1-9][0-9]{3} ?(?!sa|sd|ss|SA|SD|SS)[A-Za-z]{2}$/.test(answer);\r\n};\r\n\r\n/**\r\n *check if the answer is valid email address (regex)\r\n * @param {string} answer question answer\r\n * @param {string} additionalInfo validation rule additional info\r\n */\r\nconst checkEmailAddressRule = (answer, additionalInfo) => {\r\n if (typeof answer === \"string\") answer = answer.trim();\r\n if (checkEmailAddress(answer)) {\r\n var domain = answer.substring(answer.lastIndexOf(\"@\") + 1);\r\n var invalidEmailDomains = additionalInfo != null ? additionalInfo.split(\";\") : null;\r\n\r\n if (invalidEmailDomains != null && invalidEmailDomains.indexOf(domain) === -1) return true;\r\n else return false;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n *check if the answer is valid 11-proof number (regex)\r\n * @param {string} answer question answer\r\n */\r\nconst checkValid11ProofNumber = (answer) => {\r\n const RITSNUMMER_CHAR_COUNT = 9;\r\n var weighedSum = 0;\r\n var numbersOnly = true;\r\n\r\n if (answer.length === RITSNUMMER_CHAR_COUNT) {\r\n for (var i = 0, len = answer.length; i < len; i++) {\r\n var number = _.parseInt(answer[i], 10);\r\n if (isNaN(number)) {\r\n numbersOnly = false;\r\n break;\r\n }\r\n var j = RITSNUMMER_CHAR_COUNT - i;\r\n if (i === answer.length - 1) j = -1;\r\n weighedSum += j * number;\r\n }\r\n }\r\n return answer.length === RITSNUMMER_CHAR_COUNT && numbersOnly && weighedSum > 0 && weighedSum % 11 === 0;\r\n};\r\n\r\n/**\r\n *check if the answer is bigger or equal max validation rule value days in the future\r\n * @param {string} ruleValue validation rule value (value to compare with)\r\n * @param {string} answer question answer\r\n * @param {string} currentDate application current date time\r\n */\r\nconst checkMaxDaysInTheFuture = (ruleValue, answer, currentDate) => {\r\n const answerDate = moment(answer, \"YYYYMMDD\");\r\n\r\n let currentDateObject = moment(currentDate, \"YYYYMMDD\").add(_.parseInt(ruleValue), \"days\");\r\n return answerDate.isSameOrBefore(currentDateObject);\r\n};\r\n\r\n/**\r\n *check if the answer is smaller or equal max validation rule value days in the future\r\n * @param {string} ruleValue validation rule value (value to compare with)\r\n * @param {string} answer question answer\r\n * @param {string} currentDate application current date time\r\n */\r\nconst checkMaxDaysInThePast = (ruleValue, answer, currentDate) => {\r\n const answerDate = moment(answer, \"YYYYMMDD\");\r\n\r\n let currentDateObject = moment(currentDate, \"YYYYMMDD\").subtract(_.parseInt(ruleValue), \"days\");\r\n return answerDate.isSameOrAfter(currentDateObject);\r\n};\r\n\r\n/**\r\n * check if minimum days in the past\r\n * @param {string} ruleValue validation rule value (value to compare with)\r\n * @param {string} answer question answer\r\n * @param {string} currentDate application current date time\r\n */\r\nconst checkMinDaysInThePast = (ruleValue, answer, currentDate) => {\r\n const answerDate = moment(answer, \"YYYYMMDD\");\r\n\r\n const currentDateObject = moment(currentDate, \"YYYYMMDD\").subtract(_.parseInt(ruleValue), \"days\");\r\n return answerDate.isSameOrBefore(currentDateObject);\r\n};\r\n\r\n/**\r\n *check if the answer is smaller or equal max validation rule value days in the future\r\n * @param {string} answer question answer\r\n * @param {string} currentDate application current date time\r\n */\r\nexport const checkDateInThePast = (answer, currentDate) => {\r\n const currentDateObject = moment(currentDate, \"YYYYMMDD\");\r\n const answerDate = moment(answer, \"YYYYMMDD\");\r\n\r\n return answerDate.isBefore(currentDateObject);\r\n};\r\n\r\n/**\r\n *check if the date is in the past (including today)\r\n * @param {string} answer question answer\r\n * @param {string} currentDate application current date time\r\n */\r\nconst checkDateInThePastOrToday = (answer, currentDate) => {\r\n const currentDateObject = moment(currentDate, \"YYYYMMDD\");\r\n const answerDate = moment(answer, \"YYYYMMDD\");\r\n\r\n return answerDate.isSameOrBefore(currentDateObject);\r\n};\r\n\r\n/**\r\n *check if the date is in the future\r\n * @param {string} answer question answer\r\n * @param {string} currentDate application current date time\r\n */\r\nconst checkDateInTheFuture = (answer, currentDate) => {\r\n const currentDateObject = moment(currentDate, \"YYYYMMDD\");\r\n const answerDate = moment(answer, \"YYYYMMDD\");\r\n\r\n return answerDate.isAfter(currentDateObject);\r\n};\r\n\r\n/**\r\n *check if the date bigger or equal then the minimum validation rule value\r\n * @param {string} ruleValue validation rule value (value to compare with)\r\n * @param {string} answer question answer\r\n */\r\nconst checkMinimumDaysValues = (ruleValue, answer) => {\r\n const minDate = ruleValue ? moment(ruleValue, \"YYYYMMDD\") : null;\r\n\r\n if (!minDate) return true;\r\n\r\n const answerDate = moment(answer, \"YYYYMMDD\");\r\n return answerDate.isSameOrAfter(minDate);\r\n};\r\n\r\n/**\r\n *check if the date smaller or equal then the minimum validation rule value\r\n * @param {string} ruleValue validation rule value (value to compare with)\r\n * @param {string} answer question answer\r\n */\r\nconst checkMaximumDaysValues = (ruleValue, answer) => {\r\n const maxDate = ruleValue ? moment(ruleValue, \"YYYYMMDD\") : null;\r\n\r\n if (!maxDate == null) return true;\r\n\r\n const answerDate = moment(answer, \"YYYYMMDD\");\r\n return answerDate.isSameOrBefore(maxDate);\r\n};\r\n\r\n/**\r\n *check if first number is smaller or equal then the second number\r\n * @param {string} answer1 first question range answer\r\n * @param {string} answer2 second question range answer\r\n */\r\nconst checkFirstNumberSmallerOrEqualNumberSecondValue = (answer1, answer2) => {\r\n if (!answer1 || !answer2) return true;\r\n return _.parseInt(answer1) <= _.parseInt(answer2);\r\n};\r\n\r\n/**\r\n *check if first date is smaller or equal then the second date\r\n * @param {string} answer1 first question range answer\r\n * @param {string} answer2 second question range answer\r\n */\r\nconst checkFirstDateSmallerOrEqualDateSecondValue = (answer1, answer2) => {\r\n if (!answer1 || !answer2) return true;\r\n const date1 = moment(answer1, \"YYYYMMDD\");\r\n const date2 = moment(answer2, \"YYYYMMDD\");\r\n return date1.isSame(date2) || date2.isAfter(date1);\r\n};\r\n\r\n/**\r\n *check if the answer is before answer form another date question\r\n * @param {string} validationRulesReferences answers from the reference define in the validation rule\r\n * @param {string} answer question answer\r\n * @param {string} ruleValue validationRuleValue\r\n */\r\nconst checkDateBeforeAnswerToOtherDateQuestion = (validationRulesReferences, answer, ruleValue) => {\r\n if (_.isEmpty(validationRulesReferences)) return true;\r\n\r\n if (ruleValue.match(_contextVariableREGEX)) {\r\n let trimReferenceValue = trimReference(ruleValue);\r\n let reference = _.find(validationRulesReferences, { reference: trimReferenceValue });\r\n if (_.isEmpty(reference) || _.isEmpty(reference.value)) return true;\r\n\r\n const referenceDate = reference.value ? moment(reference.value, \"DD-MM-YYYY\") : null;\r\n\r\n if (!referenceDate) return true;\r\n if (!referenceDate.isValid()) return true;\r\n\r\n const answerDate = moment(answer, \"YYYYMMDD\");\r\n return answerDate.isSameOrBefore(referenceDate);\r\n }\r\n return true;\r\n};\r\n\r\n/**\r\n *check if the answer is after answer form another date question\r\n * @param {string} referenceAnswer answers from the reference define in the validation rule\r\n * @param {string} answer question answer\r\n */\r\nconst checkDateAfterAnswerToOtherDateQuestion = (validationRulesReferences, answer, ruleValue) => {\r\n if (_.isEmpty(validationRulesReferences)) return true;\r\n\r\n if (ruleValue.match(_contextVariableREGEX)) {\r\n let trimReferenceValue = trimReference(ruleValue);\r\n let reference = _.find(validationRulesReferences, { reference: trimReferenceValue });\r\n if (_.isEmpty(reference) || _.isEmpty(reference.value)) return true;\r\n\r\n const referenceDate = reference.value ? moment(reference.value, \"DD-MM-YYYY\") : null;\r\n\r\n if (!referenceDate) return true;\r\n if (!referenceDate.isValid()) return true;\r\n\r\n const answerDate = moment(answer, \"YYYYMMDD\");\r\n return answerDate.isSameOrAfter(referenceDate);\r\n }\r\n return true;\r\n};\r\n\r\n/**\r\n *check if the answer -age is bigger or equal to the age defined in validation rule\r\n * @param {string} ruleValue validation rule value (value to compare with)\r\n * @param {string} answer question answer\r\n */\r\nconst checkAgeValue = (ruleValue, answer) => {\r\n const answerDate = moment(answer, \"YYYYMMDD\");\r\n return moment().diff(answerDate, \"years\") >= ruleValue;\r\n};\r\n\r\n/**\r\n *check if the answer is valid date\r\n * @param {string} answer question answer\r\n */\r\nexport const validDate = (answer) => {\r\n const answerDate = moment(answer, \"YYYYMMDD\", true);\r\n return answerDate.isValid();\r\n};\r\n/**\r\n *check if the answer is valid date\r\n * @param {string} answer question answer\r\n */\r\nconst validYear = (answer) => {\r\n const answerDate = defineDayMonthYear(answer);\r\n const baseDate = moment(\"19000101\", \"YYYYMMDD\");\r\n return answerDate && answerDate.year.length === 4 && parseInt(answerDate.year) >= baseDate.year();\r\n};\r\n\r\n/**\r\n *check if the answer contains day and day has 2 characters\r\n * @param {string} answer question answer\r\n */\r\nconst validDay = (answer) => {\r\n const answerObject = defineDayMonthYear(answer);\r\n return answerObject && answerObject.day.length === 2 && answerObject.day !== \"00\" && parseInt(answerObject.day) <= 31 && parseInt(answerObject.day) >= 1;\r\n};\r\n\r\n/**\r\n *check if the answer compare from todays is not bigger then the ruleValue\r\n (specific for custom birthday question)\r\n * @param {string} answer question answer\r\n */\r\nconst yearsOldNotValid = (ruleValue, answer) => {\r\n const answerDate = moment(answer, \"YYYYMMDD\");\r\n return answerDate.isValid() && moment().diff(answerDate, \"years\") < ruleValue;\r\n};\r\n\r\n/**\r\n *check if the answer is valid date and if date year is not bigger from \r\n the current application date year\r\n * @param {string} answer answer\r\n * @param {object} currentDate current application date\r\n */\r\nconst yearInFuture = (answer, currentDate) => {\r\n const answerData = answer ? moment(answer, \"YYYYMMDD\") : null;\r\n const currentDateObject = moment(currentDate, \"YYYYMMDD\");\r\n return answerData.isValid() && answerData.isBefore(currentDateObject);\r\n};\r\n\r\n/**\r\n *check if the answer contains year and year has 4 characters\r\n * @param {string} answer question answer\r\n */\r\nconst yearMaxCharacters = (answer) => {\r\n const answerObject = defineDayMonthYear(answer);\r\n return answerObject && answerObject.year.length === 4;\r\n};\r\n\r\n/**\r\n *check if password and confirm pasword are equals\r\n * @param {string} answer1 question answer\r\n * @param {string} answer2 question answer\r\n */\r\nconst validPassword = (answer1, answer2) => {\r\n if (_.isEmpty(answer1) || _.isEmpty(answer2)) return true;\r\n if (!_.isEmpty(answer1) && !_.isEmpty(answer2)) return _.isEqual(answer1, answer2);\r\n};\r\n","export const LOGOUT = \"LOGOUT\";\r\n\r\nexport default function logout() {\r\n localStorage.removeItem(\"token\");\r\n localStorage.removeItem(\"user\");\r\n return {\r\n type: LOGOUT,\r\n payload: \"\",\r\n };\r\n}\r\n","export const SET_COMPLETED = \"SET_COMPLETED\";\r\n\r\nexport default function setCompleted(completed) {\r\n return {\r\n type: SET_COMPLETED,\r\n payload: completed,\r\n };\r\n}","import api from \"../../assets/common/api/api\";\r\nimport _ from \"lodash\";\r\nimport { toast } from \"react-toastify\";\r\nimport { setLoading } from \"../loading/setLoading\";\r\nimport { res } from \"../../assets/localization/resources\";\r\n\r\nexport const LOGIN_SUCCESS = \"LOGIN_SUCCESS\";\r\nexport const LOGIN_FAILURE = \"LOGIN_FAILURE\";\r\n\r\nexport const authenticate = (email, password) => async (dispatch, getState) => {\r\n let { study } = getState();\r\n let user = { email, password, studyId: study.StudyId };\r\n setLoading(true);\r\n\r\n await api\r\n .post(\"/account/authenticate\", user)\r\n .then((response) => {\r\n if (response.status === 200) {\r\n setLoading(false);\r\n let responseData = response.data;\r\n if (_.isEmpty(responseData))\r\n return dispatch({ type: LOGIN_FAILURE, payload: { message: \"Error while authentication\" } });\r\n\r\n if (!_.isEmpty(response.data.Message)) {\r\n toast.error(res(study.Culture, response.data.Message));\r\n }\r\n\r\n //check the user and the jwt token\r\n if (!_.isEmpty(responseData.User)) {\r\n if (!_.isEmpty(responseData.JwtToken)) {\r\n localStorage.setItem(\"token\", JSON.stringify(responseData.JwtToken));\r\n localStorage.setItem(\"user\", JSON.stringify(responseData.User));\r\n dispatch({ type: LOGIN_SUCCESS, payload: response.data });\r\n } else if (responseData.User.LockoutEnable && responseData.User.LockoutSecondsRemaining > 0) {\r\n dispatch({\r\n type: LOGIN_FAILURE,\r\n payload: {\r\n message: \"lockedaccount\",\r\n lockoutSecondsRemaining: responseData.User.LockoutSecondsRemaining,\r\n },\r\n });\r\n }\r\n } else dispatch({ type: LOGIN_FAILURE, payload: { message: response.data.Message } });\r\n }\r\n })\r\n .catch((error) => {\r\n setLoading(false);\r\n toast.error(res(study.Culture, \"ErrorOcurred\"));\r\n dispatch({ type: LOGIN_FAILURE, payload: \"Error while authentication\" });\r\n });\r\n};\r\n","export const UPDATE_QUESTION_REF_MAP = \"UPDATE_QUESTION_REF_MAP\";\r\n","const monthNL = [\r\n { text: \"Januari\", value: \"01\" },\r\n { text: \"Februari\", value: \"02\" },\r\n { text: \"Maart\", value: \"03\" },\r\n { text: \"April\", value: \"04\" },\r\n { text: \"Mei\", value: \"05\" },\r\n { text: \"Juni\", value: \"06\" },\r\n { text: \"Juli\", value: \"07\" },\r\n { text: \"Augustus\", value: \"08\" },\r\n { text: \"September\", value: \"09\" },\r\n { text: \"Oktober\", value: \"10\" },\r\n { text: \"November\", value: \"11\" },\r\n { text: \"December\", value: \"12\" },\r\n];\r\n\r\nconst monthEN = [\r\n { text: \"January\", value: \"01\" },\r\n { text: \"February\", value: \"02\" },\r\n { text: \"March\", value: \"03\" },\r\n { text: \"April\", value: \"04\" },\r\n { text: \"May\", value: \"05\" },\r\n { text: \"June\", value: \"06\" },\r\n { text: \"July\", value: \"07\" },\r\n { text: \"August\", value: \"08\" },\r\n { text: \"September\", value: \"09\" },\r\n { text: \"October\", value: \"10\" },\r\n { text: \"November\", value: \"11\" },\r\n { text: \"December\", value: \"12\" },\r\n];\r\nconst monthIT = [\r\n { text: \"Gennaio\", value: \"01\" },\r\n { text: \"Febbraio\", value: \"02\" },\r\n { text: \"Marzo\", value: \"03\" },\r\n { text: \"Aprile\", value: \"04\" },\r\n { text: \"Maggio\", value: \"05\" },\r\n { text: \"Giugno\", value: \"06\" },\r\n { text: \"Luglio\", value: \"07\" },\r\n { text: \"Agosto\", value: \"08\" },\r\n { text: \"Settembre\", value: \"09\" },\r\n { text: \"Ottobre\", value: \"10\" },\r\n { text: \"Novembre\", value: \"11\" },\r\n { text: \"Dicembre\", value: \"12\" },\r\n];\r\n\r\nconst monthFR = [\r\n { text: \"Janvier \", value: \"01\" },\r\n { text: \"Février\", value: \"02\" },\r\n { text: \"Mars\", value: \"03\" },\r\n { text: \"Avril\", value: \"04\" },\r\n { text: \"Mai\", value: \"05\" },\r\n { text: \"Juin\", value: \"06\" },\r\n { text: \"Juillet\", value: \"07\" },\r\n { text: \"Août\", value: \"08\" },\r\n { text: \"Septembre\", value: \"09\" },\r\n { text: \"Octobre\", value: \"10\" },\r\n { text: \"Novembre\", value: \"11\" },\r\n { text: \"Décembre\", value: \"12\" },\r\n];\r\n\r\nconst monthDE = [\r\n { text: \"Januar\", value: \"01\" },\r\n { text: \"Februar\", value: \"02\" },\r\n { text: \"März\", value: \"03\" },\r\n { text: \"April\", value: \"04\" },\r\n { text: \"Mai\", value: \"05\" },\r\n { text: \"Juni\", value: \"06\" },\r\n { text: \"Juli\", value: \"07\" },\r\n { text: \"August\", value: \"08\" },\r\n { text: \"September\", value: \"09\" },\r\n { text: \"Oktober\", value: \"10\" },\r\n { text: \"November\", value: \"11\" },\r\n { text: \"Dezember\", value: \"12\" },\r\n];\r\n\r\nconst inviteFriendEN = {\r\n ReceiverEmail: \"Receiver Email\",\r\n ReceiverName: \"Receiver Name\",\r\n SenderName: \"Sender Name\",\r\n};\r\n\r\nconst inviteFriendNL = {\r\n ReceiverEmail: \"Email ontvanger\",\r\n ReceiverName: \"Naam ontvanger\",\r\n SenderName: \"Naam verzender\",\r\n};\r\n\r\nconst inviteFriendIT = {\r\n ReceiverEmail: \"E-mail del destinatario\",\r\n ReceiverName: \"Nome del destinatario\",\r\n SenderName: \"Nome del mittente\",\r\n};\r\n\r\nconst inviteFriendFR = {\r\n ReceiverEmail: \"e-mail du destinataire\",\r\n ReceiverName: \"Nom du destinataire\",\r\n SenderName: \"Nom de l'expéditeur\",\r\n};\r\n\r\nconst inviteFriendDE = {\r\n ReceiverEmail: \"E-Mail-Adresse Empfänger\",\r\n ReceiverName: \"Name des Empfängers\",\r\n SenderName: \"Name des Absenders\",\r\n};\r\n\r\nconst customBirthdayEN = {\r\n XYearsOld: \"Please confirm that you are {0} years old.\",\r\n ConfirmAge: \"Confirm Age\",\r\n};\r\n\r\nconst customBirthdayNL = {\r\n XYearsOld: \"Uw leeftijd is {0}.\",\r\n ConfirmAge: \"Leeftijd bevestigen\",\r\n};\r\n\r\nconst customBirthdayIT = {\r\n XYearsOld: \"Conferma che hai {0} anni.\",\r\n ConfirmAge: \"Conferma\",\r\n};\r\n\r\nconst customBirthdayFR = {\r\n XYearsOld: \"Merci de confirmer que vous avez {0} ans.\",\r\n ConfirmAge: \"Confirmer l'âge\",\r\n};\r\n\r\nconst customBirthdayDE = {\r\n XYearsOld: \"Bitte bestätigen, dass Sie {0} Jahre alt sind.\",\r\n ConfirmAge: \"Alter bestätigen\",\r\n};\r\n\r\nconst healthSliderEN = {\r\n HealthSliderBestHealth: \"The best health you can imagine\",\r\n HealthSliderLine1: \"

We would like to know how good or bad your health is TODAY.

\",\r\n HealthSliderLine2: \"

The scale is numbered from 0 to 100.

\",\r\n HealthSliderLine3:\r\n \"

100 means the best health you can imagine.
0 means the worst health you can imagine.

\",\r\n HealthSliderLine4: \"

Please click on the scale to indicate how your health is TODAY.

\",\r\n HealthSliderWorstHealth: \"The worst health you can image\",\r\n HealthSliderYouHealthToday: \"YOUR HEALTH TODAY\",\r\n};\r\n\r\nconst healthSliderNL = {\r\n HealthSliderBestHealth: \"De beste gezondheid die u zich kunt voorstellen\",\r\n HealthSliderLine1: \"

We willen weten hoe goed of slecht uw gezondheid VANDAAG is.

\",\r\n HealthSliderLine2: \"

Deze meetschaal loopt van 0 tot 100.

\",\r\n HealthSliderLine3:\r\n \"

100 staat voor de beste gezondheid die u zich kunt voorstellen.
0 staat voor de slechtste gezondheid die u zich kunt voorstellen.

\",\r\n HealthSliderLine4: \"

Klik op de meetschaal om aan te geven hoe uw gezondheid VANDAAG is.

\",\r\n HealthSliderWorstHealth: \"De slechtste gezondheid die u zich kunt voorstellen\",\r\n HealthSliderYouHealthToday: \"UW GEZONDHEID VANDAAG\",\r\n};\r\n\r\nconst healthSliderIT = {\r\n HealthSliderBestHealth: \"Il miglior stato di salute che tu possa immaginare.\",\r\n HealthSliderLine1: \"

Vorremmo sapere quanto è buona o cattiva la tua salute OGGI.

\",\r\n HealthSliderLine2: \"

La scala è numerata da 0 a 100.

\",\r\n HealthSliderLine3:\r\n \"

100 indica il miglior stato di salute che puoi immaginare.
0 indica il peggior stato di salute che puoi immaginare.

\",\r\n HealthSliderLine4: \"

fai clic su un punto della scala per indicare com'è il tuo stato di salute OGGI

\",\r\n HealthSliderWorstHealth:\r\n \"Il peggior stato di salute che tu possa immaginare. La peggior salute che tu possa immaginare\",\r\n HealthSliderYouHealthToday: \"LA TUA SALUTE OGGI\",\r\n};\r\n\r\nconst healthSliderFR = {\r\n HealthSliderBestHealth: \"Le meilleur état de santé que vous puissiez imaginer\",\r\n HealthSliderLine1: \"

Nous aimerions savoir à quel point votre état de santé est bon ou mauvais AUJOURD'HUI.

\",\r\n HealthSliderLine2: \"

L'échelle s'etend de 0 à 100.

\",\r\n HealthSliderLine3:\r\n \"

100 signifie le meilleur état de santé que vous puissiez imaginer.
0 signifie le pire état de santé que vous puissiez imaginer.

\",\r\n HealthSliderLine4: \"

Veuillez cliquer sur l'échelle pour indiquer votre état de santé AUJOURD'HUI.

\",\r\n HealthSliderWorstHealth: \"Le plus mauvais état de santé que vous puissiez imaginer\",\r\n HealthSliderYouHealthToday: \"VOTRE ETAT DE SANTE AUJOURD'HUI\",\r\n};\r\n\r\nconst healthSliderDE = {\r\n HealthSliderBestHealth: \"Die beste Gesundheit, die Sie sich vorstellen können\",\r\n HealthSliderLine1: \"

Wir würden gerne wissen, wie gut oder schlecht es Ihnen HEUTE geht.

\",\r\n HealthSliderLine2: \"

Die Skala reicht von 0 bis 100.

\",\r\n HealthSliderLine3:\r\n \"

100 bedeutet die beste Gesundheit, die Sie sich vorstellen können.
0 bedeutet die schlechteste Gesundheit, die Sie sich vorstellen können.

\",\r\n HealthSliderLine4: \"

Klicken Sie auf die Skala, um anzugeben, wie Ihr Gesundheitszustand HEUTE ist.

\",\r\n HealthSliderWorstHealth: \"Die schlechteste Gesundheit, die Sie sich vorstellen können\",\r\n HealthSliderYouHealthToday: \"IHRE GESUNDHEIT HEUTE\",\r\n};\r\n\r\nconst latencyEN = [\r\n { text: \"Seconds\", value: \"1\" },\r\n { text: \"Minutes\", value: \"2\" },\r\n { text: \"Hours\", value: \"3\" },\r\n { text: \"Days\", value: \"4\" },\r\n { text: \"Weeks\", value: \"5\" },\r\n { text: \"Months\", value: \"6\" },\r\n { text: \"Years\", value: \"7\" },\r\n];\r\n\r\nconst latencyNL = [\r\n { text: \"Seconden\", value: \"1\" },\r\n { text: \"Minuten\", value: \"2\" },\r\n { text: \"Uur\", value: \"3\" },\r\n { text: \"Dagen\", value: \"4\" },\r\n { text: \"Weken\", value: \"5\" },\r\n { text: \"Maanden\", value: \"6\" },\r\n { text: \"Jaren\", value: \"7\" },\r\n];\r\n\r\nconst latencyIT = [\r\n { text: \"Secondi\", value: \"1\" },\r\n { text: \"Minuti\", value: \"2\" },\r\n { text: \"Ore\", value: \"3\" },\r\n { text: \"Giorni\", value: \"4\" },\r\n { text: \"Settimane\", value: \"5\" },\r\n { text: \"Mesi\", value: \"6\" },\r\n { text: \"Anni\", value: \"7\" },\r\n];\r\n\r\nconst latencyFR = [\r\n { text: \"Secondes\", value: \"1\" },\r\n { text: \"Minutes\", value: \"2\" },\r\n { text: \"Heures\", value: \"3\" },\r\n { text: \"Jours\", value: \"4\" },\r\n { text: \"Semaines\", value: \"5\" },\r\n { text: \"Mois\", value: \"6\" },\r\n { text: \"Années\", value: \"7\" },\r\n];\r\n\r\nconst latencyDE = [\r\n { text: \"Sekunden\", value: \"1\" },\r\n { text: \"Minuten\", value: \"2\" },\r\n { text: \"Stunden\", value: \"3\" },\r\n { text: \"Tage\", value: \"4\" },\r\n { text: \"Wochen\", value: \"5\" },\r\n { text: \"Monate\", value: \"6\" },\r\n { text: \"Jahre\", value: \"7\" },\r\n];\r\n\r\nconst cascadingPopUpEN = {\r\n Title: \"Specify drug use\",\r\n Description:\r\n \"You can select the medicine below. As you start typing the name of the medicine, the choice narrows. If the medicine you have used is not listed, you can type the name.\",\r\n NoResults: \"No results found\",\r\n Search: \"Search\",\r\n};\r\nconst cascadingPopUpNL = {\r\n Title: \"Specificeer geneesmiddelgebruik\",\r\n Description:\r\n \"U kunt het geneesmiddel hieronder selecteren. Als u begint met typen van de naam van het geneesmiddel, wordt de keuze kleiner. Staat het geneesmiddel dat u gebruikt heeft er niet bij, dan kunt u de naam intypen en vervolgens op OK klikken.\",\r\n NoResults: \"Geen suggesties gevonden\",\r\n Search: \"Zoeken\",\r\n};\r\n\r\nconst cascadingPopUpIT = {\r\n Title: \"Indicare l'uso di farmaci\",\r\n Description:\r\n \"Puoi selezionare il nome del farmaco scorrendo il menù a tendina. Inizia a digitare il nome del farmaco per restringere la tua ricerca. Se il farmaco utilizzato non è presente nell'elenco, puoi inserirlo come testo libero.\",\r\n NoResults: \"Nessun risultato trovato\",\r\n Search: \"Cerca\",\r\n};\r\n\r\nconst cascadingPopUpFR = {\r\n Title: \"Préciser le traitement utilisé\",\r\n Description:\r\n \"Vous pouvez sélectionner le traitement ci-dessous. Lorsque vous commencez à saisir le nom du médicament, le choix se précise. Si le médicament que vous avez pris n'est pas dans la liste, vous pouvez le saisir.\",\r\n NoResults: \"Aucun résultat trouvé\",\r\n Search: \"Chercher\",\r\n};\r\n\r\nconst cascadingPopUpDE = {\r\n Title: \"Medikamenteneinnahme spezifizieren\",\r\n Description:\r\n \"Sie können das Medikament nachfolgend auswählen. Wenn Sie beginnen, den Namen des Medikaments einzugeben, wird die Auswahl kleiner. Wenn das Medikament, das Sie eingenommen haben, nicht dabei ist, können Sie den Namen eingeben.\",\r\n NoResults: \"Keine Resultate gefunden\",\r\n Search: \"Suchen\",\r\n};\r\n\r\nconst openQuestionCharactersLeftEN = {\r\n CharactersRemaining: \"You have {0} characters left\",\r\n};\r\nconst openQuestionCharactersLeftNL = {\r\n CharactersRemaining: \"U heeft nog {0} tekens over\",\r\n};\r\n\r\nconst openQuestionCharactersLeftIT = {\r\n CharactersRemaining: \"Hai {0} caratteri rimanenti\",\r\n};\r\n\r\nconst openQuestionCharactersLeftFR = {\r\n CharactersRemaining: \"Il reste {0} caractère(s)\",\r\n};\r\n\r\nconst openQuestionCharactersLeftDE = {\r\n CharactersRemaining: \"Sie haben noch {0} Zeichen übrig\",\r\n};\r\n\r\nconst fileUploadEN = {\r\n DefaulDrugHeretMsg: \"Drag your file (s) here or click to upload\",\r\n AllowedTypesMsg: \"Not all files are uploaded, the following files are accepted {0}\",\r\n FileSizeMax: \"File is too large, maximum allowed {0}.\",\r\n};\r\nconst fileUploadNL = {\r\n DefaulDrugHeretMsg: \"Versleep hier uw bestand(en) of klik om te uploaden\",\r\n AllowedTypesMsg:\r\n \"Een of meer bestanden worden niet ondersteund. Deze worden niet geupload als u verder gaat. Toegestaan: {0}\",\r\n FileSizeMax: \"Bestand is te groot, maximaal toegestaan {0}.\",\r\n};\r\n\r\nconst fileUploadIT = {\r\n DefaulDrugHeretMsg: \"Trascina qui i tuoi file o clicca per caricarli\",\r\n AllowedTypesMsg: \"Non tutti i file sono caricati, I seguenti file sono accettati: {0}\",\r\n FileSizeMax: \"Il file è troppo grande, dimensione massima consentita {0}.\",\r\n};\r\n\r\nconst fileUploadFR = {\r\n DefaulDrugHeretMsg: \"Faites glisser votre (vos) fichier(s) ou cliquer sur télécharger\",\r\n AllowedTypesMsg: \"Tous les fichiers ne sont pas téléchargés, les fichiers suivants sont acceptés {0}\",\r\n FileSizeMax: \"Le fichier est trop volumineux, la taille maximale autorisée est {0}.\",\r\n};\r\n\r\nconst fileUploadDE = {\r\n DefaulDrugHeretMsg: \"Ziehen Sie Ihre Datei(en) hierher oder klicken Sie zum Hochladen\",\r\n AllowedTypesMsg: \"Es wurden nicht alle Dateien hochgeladen, die folgenden Dateien wurden akzeptiert {0}\",\r\n FileSizeMax: \"Datei ist zu groß, maximal erlaubt {0}.\",\r\n};\r\n\r\nconst validationErrorMessageEN = {\r\n QuestionRequiredMessage: \"You have not yet answered this question.\",\r\n BirthdayConfirmClicked: \"You must confirm your age.\",\r\n SendGridMailInvalid: \"The email address may not be correct, please check it carefully.\",\r\n SectionRequiredMesaage: \"This section is mandatory.\",\r\n ValidationSummaryMessage: \"Not all fields are filled in correctly. Please see the messages.\",\r\n FormVerificationCodeMissing: \"You must enter Verification code\",\r\n CodeIncorrect: \"Code Incorrect.\",\r\n EmailCodeVerifyMsgNotDelivered:\r\n \"We have sent you the verification code but it may have been declined. Please check your email address and try again if you have not received the code.\",\r\n};\r\n\r\nconst validationErrorMessageNL = {\r\n QuestionRequiredMessage: \"U heeft deze vraag nog niet ingevuld.\",\r\n BirthdayConfirmClicked: \"U dient uw leeftijd te bevestigen.\",\r\n SendGridMailInvalid: \"Het emailadres is mogelijk niet correct, controleer deze alstublieft goed.\",\r\n SectionRequiredMesaage: \"Deze sectie is verplicht.\",\r\n ValidationSummaryMessage: \"Niet alle velden zijn correct ingevuld. Hierboven kunt u zien om welke velden het gaat.\",\r\n FormVerificationCodeMissing: \"Vul eerst de verificatiecode in\",\r\n CodeIncorrect: \"De verificatiecode is onjuist.\",\r\n EmailCodeVerifyMsgNotDelivered:\r\n \"Wij hebben de verificatie code naar je verzonden maar deze is mogelijk geweigerd. Controleer je e-mailadres en probeer het opnieuw als je de code niet hebt ontvangen.\",\r\n};\r\n\r\nconst validationErrorMessageIT = {\r\n QuestionRequiredMessage: \"Non hai ancora risposto a questa domanda.\",\r\n BirthdayConfirmClicked: \"Conferma la tua età.\",\r\n SendGridMailInvalid: \"L'indirizzo e-mail potrebbe non essere corretto, controllarlo attentamente.\",\r\n SectionRequiredMesaage: \"Questa sezione è obbligatoria.\",\r\n ValidationSummaryMessage:\r\n \"Almeno un campo non è stato compilato correttamente. Per favore ricontrolla che tutti i campi obbligatori siano stati compilati.\",\r\n FormVerificationCodeMissing: \"Devi inserire il codice di verifica\",\r\n CodeIncorrect: \"Codice errato.\",\r\n EmailCodeVerifyMsgNotDelivered:\r\n \"We have sent you the verification code but it may have been declined. Please check your email address and try again if you have not received the code.\",\r\n};\r\n\r\nconst validationErrorMessageFR = {\r\n QuestionRequiredMessage: \"Vous n'avez pas encore répondu à cette question.\",\r\n BirthdayConfirmClicked: \"Vous devez confirmer votre âge.\",\r\n SendGridMailInvalid: \"L'adresse e-mail n'est peut-être pas correcte, veuillez la vérifier attentivement.\",\r\n SectionRequiredMesaage: \"Cette section est obligatoire.\",\r\n ValidationSummaryMessage:\r\n \"Tous les champs ne sont pas renseignés correctement. Merci de lire les messages d'erreurs.\",\r\n FormVerificationCodeMissing: \"Vous devez entrer le code de vérification\",\r\n CodeIncorrect: \"Code incorrect.\",\r\n EmailCodeVerifyMsgNotDelivered:\r\n \"We have sent you the verification code but it may have been declined. Please check your email address and try again if you have not received the code.\",\r\n};\r\n\r\nconst validationErrorMessageDE = {\r\n QuestionRequiredMessage: \"Sie haben diese Frage noch nicht beantwortet.\",\r\n BirthdayConfirmClicked: \"Sie müssen Ihr Alter bestätigen.\",\r\n SendGridMailInvalid: \"Die E-Mail-Adresse ist möglicherweise nicht korrekt, bitte überprüfen Sie sie sorgfältig.\",\r\n SectionRequiredMesaage: \"Dieser Teil ist obligatorisch.\",\r\n ValidationSummaryMessage: \"Nicht alle Felder wurden korrekt ausgefüllt. Siehe Meldungen.\",\r\n FormVerificationCodeMissing: \"Sie müssen den Bestätigungscode eingeben\",\r\n CodeIncorrect: \"Code falsch.\",\r\n EmailCodeVerifyMsgNotDelivered:\r\n \"We have sent you the verification code but it may have been declined. Please check your email address and try again if you have not received the code.\",\r\n};\r\n\r\nconst commonMessageEN = {\r\n Day: \"Day\",\r\n Month: \"Month\",\r\n Year: \"Year\",\r\n DownloadQuestionnaire: \"Download questionnaire\",\r\n DownloadQuestionnaireRF: \"Download questionnaire\",\r\n ButtonNext: \"Next\",\r\n ButtonBack: \"Back\",\r\n ButtonFinish: \"Finish\",\r\n ButtonSubmit: \"Submit\",\r\n AdditionalCheck: \"As additional check please fill in the characters from the image\",\r\n DidntMatch: \"The characters did not match, please try again.\",\r\n RefreshNote: \"(Note: If you cannot read the numbers in the image, click on image to reload to generate a new one.)\",\r\n ConfirmPassword: \"Confirm password\",\r\n NewVerificatoinCodeSent: \"New code sent to your email address\",\r\n EnterEmailAddressAgain: \"Please enter your email address again\",\r\n};\r\n\r\nconst commonMessageNL = {\r\n Day: \"Dag\",\r\n Month: \"Maand\",\r\n Year: \"Jaar\",\r\n DownloadQuestionnaire: \"Download vragenlijst\",\r\n DownloadQuestionnaireRF: \"Download formulier\",\r\n ButtonNext: \"Volgende\",\r\n ButtonBack: \"Vorige\",\r\n ButtonFinish: \"Verzenden\",\r\n ButtonSubmit: \"Controleren\",\r\n AdditionalCheck: \"Neem als extra controle de tekens uit onderstaande afbeelding over\",\r\n DidntMatch: \"De tekens kwamen niet overeen. Probeer het alstublieft nogmaals.\",\r\n RefreshNote: \"(Opmerking: als u de cijfers niet kunt lezen klik dan op de afbeelding voor een nieuwe cijferreeks.)\",\r\n ConfirmPassword: \"Wachtwoord bevestigen\",\r\n NewVerificatoinCodeSent: \"Er is een nieuwe verificatiecode verzonden\",\r\n EnterEmailAddressAgain: \"Voer uw e-mailadres opnieuw in\",\r\n};\r\n\r\nconst commonMessageIT = {\r\n Day: \"Giorno\",\r\n Month: \"Mese\",\r\n Year: \"Anno\",\r\n DownloadQuestionnaire: \"Scarica il tuo questionario\",\r\n DownloadQuestionnaireRF: \"Scarica il tuo questionario\",\r\n ButtonNext: \"Avanti\",\r\n ButtonBack: \"Indietro\",\r\n ButtonFinish: \"Fine\",\r\n ButtonSubmit: \"Inviare\",\r\n AdditionalCheck: \"Come controllo aggiuntivo, inserire i caratteri presenti nell'immagine\",\r\n DidntMatch: \"I caratteri non corrispondono, riprovare.\",\r\n RefreshNote:\r\n \"(Nota: se non riesci a leggere i numeri nell'immagine, clicca sull'immagine per ricaricarla e generarne una nuova.)\",\r\n ConfirmPassword: \"Conferma password\",\r\n NewVerificatoinCodeSent: \"Nuovo codice inviato al tuo indirizzo email\",\r\n EnterEmailAddressAgain: \"Inserisci di nuovo il tuo indirizzo email\",\r\n};\r\n\r\nconst commonMessageFR = {\r\n Day: \"Jour\",\r\n Month: \"Mois\",\r\n Year: \"An\",\r\n DownloadQuestionnaire: \"Télécharger le questionnaire\",\r\n DownloadQuestionnaireRF: \"Télécharger le questionnaire\",\r\n ButtonNext: \"Suivant\",\r\n ButtonBack: \"Précédent\",\r\n ButtonFinish: \"Terminer\",\r\n ButtonSubmit: \"Envoyer\",\r\n AdditionalCheck: \"En complément, veuillez compléter les caractères de l'image\",\r\n DidntMatch: \"Les caractères ne correspondant pas, veuillez réessayer.\",\r\n RefreshNote:\r\n \"(Remarque: si vous ne pouvez pas lire les nombres dans l'image, cliquez sur l'image pour en générer une nouvelle.)\",\r\n ConfirmPassword: \"Confirmez le mot de passe\",\r\n NewVerificatoinCodeSent: \"Nouveau code envoyé à votre adresse e-mail\",\r\n EnterEmailAddressAgain: \"Veuillez saisir à nouveau votre adresse e-mail\",\r\n};\r\n\r\nconst commonMessageDE = {\r\n Day: \"Tag\",\r\n Month: \"Monat\",\r\n Year: \"Jahr\",\r\n DownloadQuestionnaire: \"Fragebogen herunterladen\",\r\n DownloadQuestionnaireRF: \"Fragebogen herunterladen\",\r\n ButtonNext: \"Weiter\",\r\n ButtonBack: \"Zurück\",\r\n ButtonFinish: \"Vervollständigen\",\r\n ButtonSubmit: \"Versenden\",\r\n AdditionalCheck: \"Bitte geben Sie die Zeichen aus dem Bild als zusätzliche Kontrolle ein\",\r\n DidntMatch: \"Die Zeichen stimmten nicht überein, bitte versuchen Sie es erneut.\",\r\n RefreshNote:\r\n \"(Hinweis: Wenn Sie die Zahlen im Bild nicht lesen können, klicken Sie auf „Bild neu laden“, um ein neues Bild zu erzeugen).\",\r\n ConfirmPassword: \"Passwort bestätigen\",\r\n NewVerificatoinCodeSent: \"Neuer Code an Ihre E-Mail-Adresse gesendet\",\r\n EnterEmailAddressAgain: \"Bitte geben Sie Ihre E-Mail-Adresse erneut ein\",\r\n};\r\n\r\nconst resources = {\r\n \"nl-NL\": {\r\n months: monthNL,\r\n inviteFriend: inviteFriendNL,\r\n customBirthday: customBirthdayNL,\r\n healthSlider: healthSliderNL,\r\n latency: latencyNL,\r\n cascadingQuestionPopUp: cascadingPopUpNL,\r\n openQuestionCharactersLeft: openQuestionCharactersLeftNL,\r\n validationErrorMessage: validationErrorMessageNL,\r\n fileUpload: fileUploadNL,\r\n commonMessage: commonMessageNL,\r\n },\r\n \"en-GB\": {\r\n months: monthEN,\r\n inviteFriend: inviteFriendEN,\r\n customBirthday: customBirthdayEN,\r\n healthSlider: healthSliderEN,\r\n latency: latencyEN,\r\n cascadingQuestionPopUp: cascadingPopUpEN,\r\n openQuestionCharactersLeft: openQuestionCharactersLeftEN,\r\n validationErrorMessage: validationErrorMessageEN,\r\n fileUpload: fileUploadEN,\r\n commonMessage: commonMessageEN,\r\n },\r\n \"it-IT\": {\r\n months: monthIT,\r\n inviteFriend: inviteFriendIT,\r\n customBirthday: customBirthdayIT,\r\n healthSlider: healthSliderIT,\r\n latency: latencyIT,\r\n cascadingQuestionPopUp: cascadingPopUpIT,\r\n openQuestionCharactersLeft: openQuestionCharactersLeftIT,\r\n validationErrorMessage: validationErrorMessageIT,\r\n fileUpload: fileUploadIT,\r\n commonMessage: commonMessageIT,\r\n },\r\n \"fr-FR\": {\r\n months: monthFR,\r\n inviteFriend: inviteFriendFR,\r\n customBirthday: customBirthdayFR,\r\n healthSlider: healthSliderFR,\r\n latency: latencyFR,\r\n cascadingQuestionPopUp: cascadingPopUpFR,\r\n openQuestionCharactersLeft: openQuestionCharactersLeftFR,\r\n validationErrorMessage: validationErrorMessageFR,\r\n fileUpload: fileUploadFR,\r\n commonMessage: commonMessageFR,\r\n },\r\n \"de-DE\": {\r\n months: monthDE,\r\n inviteFriend: inviteFriendDE,\r\n customBirthday: customBirthdayDE,\r\n healthSlider: healthSliderDE,\r\n latency: latencyDE,\r\n cascadingQuestionPopUp: cascadingPopUpDE,\r\n openQuestionCharactersLeft: openQuestionCharactersLeftDE,\r\n validationErrorMessage: validationErrorMessageDE,\r\n fileUpload: fileUploadDE,\r\n commonMessage: commonMessageDE,\r\n },\r\n};\r\n\r\nexport default resources;\r\n","export const EMAIL_VERIFY_BY_CODE = \"EMAIL_VERIFY_BY_CODE\";\r\n\r\nexport default function setEmailVerifyByCode(emailAddress, isSent) {\r\n return {\r\n type: EMAIL_VERIFY_BY_CODE,\r\n payload: { email: emailAddress, isSent },\r\n };\r\n}\r\n","export const SET_HONEYPOT = \"SET_HONEYPOT\";\r\n\r\nexport default function setHoneypot(honeypot) {\r\n return {\r\n type: SET_HONEYPOT,\r\n payload: honeypot,\r\n };\r\n}","export const ADD_REPEAT = \"ADD_REPEAT\";\r\n\r\nlet addRepeat = (section, parentRepeatId, parentRepeatNumber) => (dispatch, getState) => {\r\n let { selectedPage, previousQuestions, cultureCode } = getState().userQuestionnaire;\r\n\r\n dispatch({\r\n type: ADD_REPEAT,\r\n payload: { section, parentRepeatId, parentRepeatNumber, selectedPage, previousQuestions, cultureCode },\r\n });\r\n};\r\n\r\nexport default addRepeat;\r\n","import { updateOrInsertThenDispatch } from \"../../assets/questionnaire/Utils/questionReferencesUtil\";\r\nimport _ from \"lodash\";\r\nexport const MODIFY_MULTIPLE_CHOICE_OPTION = \"MODIFY_MULTIPLE_CHOICE_OPTION\";\r\n\r\nlet modifyMultipleChoiceOption =\r\n (\r\n section,\r\n repeatId,\r\n questionId,\r\n option,\r\n checked,\r\n isExclusive,\r\n archived,\r\n repeatNumber,\r\n parentRepeatNumber,\r\n fullName,\r\n parentSection\r\n ) =>\r\n (dispatch, getState) => {\r\n let { selectedPage, cultureCode } = getState().userQuestionnaire;\r\n let previousArchivedValue = getState().sections[section.ID].repeats[repeatId].archived;\r\n\r\n dispatch({\r\n type: MODIFY_MULTIPLE_CHOICE_OPTION,\r\n payload: {\r\n section,\r\n repeatId,\r\n questionId,\r\n option,\r\n checked,\r\n isExclusive,\r\n archived,\r\n cultureCode,\r\n selectedPage,\r\n previousArchivedValue,\r\n parentSection,\r\n },\r\n });\r\n\r\n let qRefMap = getState().userQuestionnaire.questionReferences;\r\n\r\n //check if need to dispatch update questionReference\r\n let keys = _.filter(Object.keys(qRefMap), (key) => {\r\n var ref = key.split(\"||\")[0];\r\n return ref === fullName;\r\n });\r\n\r\n if (!_.isEmpty(keys))\r\n updateOrInsertThenDispatch(\r\n dispatch,\r\n qRefMap,\r\n keys,\r\n repeatNumber,\r\n parentRepeatNumber,\r\n fullName,\r\n [],\r\n cultureCode,\r\n option,\r\n checked,\r\n isExclusive,\r\n archived\r\n );\r\n };\r\n\r\nexport default modifyMultipleChoiceOption;\r\n","import { updateOrInsertThenDispatch } from \"../../assets/questionnaire/Utils/questionReferencesUtil\";\r\nimport _ from \"lodash\";\r\nexport const MODIFY_MULTIPLE_CHOICE_ANSWERS = \"MODIFY_MULTIPLE_CHOICE_ANSWERS\";\r\n\r\nlet modifyMultipleChoiceAnswers =\r\n (\r\n section,\r\n repeatId,\r\n questionId,\r\n option,\r\n answers,\r\n isExclusive,\r\n archived,\r\n repeatNumber,\r\n parentRepeatNumber,\r\n fullName,\r\n parentSection\r\n ) =>\r\n (dispatch, getState) => {\r\n let { selectedPage, cultureCode } = getState().userQuestionnaire;\r\n let previousArchivedValue = getState().sections[section.ID].repeats[repeatId].archived;\r\n\r\n dispatch({\r\n type: MODIFY_MULTIPLE_CHOICE_ANSWERS,\r\n payload: {\r\n section,\r\n repeatId,\r\n questionId,\r\n option,\r\n answers,\r\n isExclusive,\r\n archived,\r\n cultureCode,\r\n selectedPage,\r\n previousArchivedValue,\r\n parentSection,\r\n },\r\n });\r\n\r\n let qRefMap = getState().userQuestionnaire.questionReferences;\r\n\r\n //check if need to dispatch update questionReference\r\n let keys = _.filter(Object.keys(qRefMap), (key) => {\r\n var ref = key.split(\"||\")[0];\r\n return ref === fullName;\r\n });\r\n\r\n if (!_.isEmpty(keys))\r\n updateOrInsertThenDispatch(\r\n dispatch,\r\n qRefMap,\r\n keys,\r\n repeatNumber,\r\n parentRepeatNumber,\r\n fullName,\r\n answers,\r\n cultureCode,\r\n option,\r\n true,\r\n isExclusive,\r\n archived\r\n );\r\n };\r\n\r\nexport default modifyMultipleChoiceAnswers;\r\n","import { updateOrInsertThenDispatch } from \"../../assets/questionnaire/Utils/questionReferencesUtil\";\r\nimport _ from \"lodash\";\r\nexport const MODIFY_ANSWERS = \"MODIFY_ANSWERS\";\r\n\r\nlet modifyAnswers =\r\n (sectionId, repeatId, question, answers, repeatNumber, parentRepeatNumber, fullName) => (dispatch, getState) => {\r\n let { selectedPage, cultureCode } = getState().userQuestionnaire;\r\n dispatch({\r\n type: MODIFY_ANSWERS,\r\n payload: { sectionId, repeatId, question, answers, parentRepeatNumber, selectedPage },\r\n });\r\n\r\n let qRefMap = getState().userQuestionnaire.questionReferences;\r\n\r\n //check if need to dispatch update questionReference\r\n let keys = _.filter(Object.keys(qRefMap), (key) => {\r\n var ref = key.split(\"||\")[0];\r\n return ref === fullName;\r\n });\r\n\r\n if (!_.isEmpty(keys))\r\n updateOrInsertThenDispatch(\r\n dispatch,\r\n qRefMap,\r\n keys,\r\n repeatNumber,\r\n parentRepeatNumber,\r\n fullName,\r\n answers,\r\n cultureCode\r\n );\r\n };\r\n\r\nexport default modifyAnswers;\r\n","export const DELETE_REQUIRED_ITEM = \"DELETE_REQUIRED_ITEM\";\r\n\r\nexport default function deleteRequiredItem(questionId, repeatId) {\r\n return {\r\n type: DELETE_REQUIRED_ITEM,\r\n payload: { questionId, repeatId },\r\n };\r\n}\r\n","export const SET_PREVIOUS_SELECTED_CATEGORIES_TO_DEFAULT_VALUE = \"SET_PREVIOUS_SELECTED_CATEGORIES_TO_DEFAULT_VALUE\";\r\nexport const ADD_OPTION_CATEGORIES = \"ADD_OPTION_CATEGORIES\";\r\nexport const SET_OPTION_CATEGORIES_TO_DEFAULT_VALUE = \"SET_OPTION_CATEGORIES_TO_DEFAULT_VALUE\";\r\n\r\nlet onTextCategoriesChange = (selectedOption, checked, options, answers, exclusive) => (dispatch, getState) => {\r\n let { selectedPage } = getState().userQuestionnaire;\r\n let sectionId = selectedPage.id;\r\n let sectionSortOrder = selectedPage.sortOrder;\r\n\r\n if (checked) {\r\n if (exclusive) {\r\n dispatch({\r\n type: SET_PREVIOUS_SELECTED_CATEGORIES_TO_DEFAULT_VALUE,\r\n payload: { selectedOption, sectionId, checked, options, answers, exclusive },\r\n });\r\n }\r\n dispatch({\r\n type: ADD_OPTION_CATEGORIES,\r\n payload: { selectedOption, sectionId, sectionSortOrder },\r\n });\r\n } else {\r\n dispatch({\r\n type: SET_OPTION_CATEGORIES_TO_DEFAULT_VALUE,\r\n payload: { selectedOption, sectionId },\r\n });\r\n }\r\n};\r\n\r\nexport default onTextCategoriesChange;\r\n","export const SET_QUESTIONNAIRE_NAME = \"SET_QUESTIONNAIRE_NAME\";\r\n\r\nexport default function setQuestionnaireName(name) {\r\n return {\r\n type: SET_QUESTIONNAIRE_NAME,\r\n payload: name,\r\n };\r\n}\r\n","import api from \"../../assets/common/api/api\";\r\nimport { toast } from \"react-toastify\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport { setLoading } from \"../loading/setLoading\";\r\n\r\nexport const CHANGE_WEBSITE_CONTENT_UPLOADS = \"CHANGE_WEBSITE_CONTENT_UPLOADS\";\r\n\r\nexport const changeWebSiteContentUploads =\r\n (id, selectedFile, name, order, url, html, webContentType, deleted) => async (dispatch, getState) => {\r\n let { study } = getState();\r\n setLoading(true);\r\n let webContentId = id != null ? id : uuidv4();\r\n const formData = new FormData();\r\n formData.append(\"selectedFile\", selectedFile);\r\n formData.append(\"id\", webContentId);\r\n formData.append(\"webContentType\", webContentType);\r\n formData.append(\"name\", name);\r\n formData.append(\"value\", encodeURI(html));\r\n formData.append(\"order\", order);\r\n formData.append(\"url\", url);\r\n formData.append(\"deleted\", deleted);\r\n formData.append(\"studyId\", study.StudyId);\r\n formData.append(\"culture\", study.Culture);\r\n const config = {\r\n headers: {\r\n \"content-type\": \"multipart/form-data\",\r\n },\r\n };\r\n await api\r\n .post(\"/study/ChangeWebSiteContentUplodas\", formData, config)\r\n .then((response) => {\r\n if (response.status === 200) {\r\n setLoading(false);\r\n if (response.data && response.data.success) {\r\n dispatch({\r\n type: CHANGE_WEBSITE_CONTENT_UPLOADS,\r\n payload: {\r\n id: webContentId,\r\n name: name,\r\n value: html,\r\n order: order,\r\n url: url,\r\n file: response.data.fileString,\r\n contentType: response.data.contentType,\r\n fileName: response.data.fileName,\r\n webContentType,\r\n culture: study.Culture,\r\n },\r\n });\r\n } else toast.error(\"Error while changing site content\");\r\n }\r\n })\r\n .catch((error) => {\r\n setLoading(false);\r\n toast.error(\"Error while changing site content\");\r\n });\r\n };\r\n","import api from \"../../assets/common/api/api\";\r\nimport { toast } from \"react-toastify\";\r\nimport { setLoading } from \"../loading/setLoading\";\r\n\r\nexport const DELETE_WEBSITE_CONTENT_UPLOADS = \"DELETE_WEBSITE_CONTENT_UPLOADS\";\r\n\r\nexport const deleteWebSiteContentUploads = (id, contentType) => async (dispatch, getState) => {\r\n setLoading(true);\r\n await api\r\n .post(`/study/DeleteWebSiteContentUplodas?id=${id}`)\r\n .then((response) => {\r\n if (response.status === 200) {\r\n setLoading(false);\r\n if (response.data && response.data.success) {\r\n dispatch({\r\n type: DELETE_WEBSITE_CONTENT_UPLOADS,\r\n payload: { id, contentType },\r\n });\r\n } else toast.error(\"Error while deleting site content\");\r\n }\r\n })\r\n .catch((error) => {\r\n setLoading(false);\r\n toast.error(\"Error while deleting site content\");\r\n });\r\n};\r\n","import api from \"../../assets/common/api/api\";\r\nimport { setLoading } from \"../loading/setLoading\";\r\nexport const SET_TOOLBOX_DATA = \"SET_TOOLBOX_DATA\";\r\nexport const SET_STORY_DATA = \"SET_STORY_DATA\";\r\n\r\nexport const getWebSiteContentUploads = (webContentType) => async (dispatch, getState) => {\r\n setLoading(true);\r\n await api\r\n .get(`/study/GetWebSiteContentUploads?webContentType=${webContentType}`)\r\n .then((response) => {\r\n setLoading(false);\r\n if (response.status === 200) {\r\n setLoading(false);\r\n if (webContentType == 5) {\r\n dispatch({ type: SET_TOOLBOX_DATA, payload: response.data });\r\n }\r\n if (webContentType == 6) {\r\n dispatch({ type: SET_STORY_DATA, payload: response.data });\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n setLoading(false);\r\n });\r\n};\r\n","export const RESET_TEXT_CATEGORIES = \"RESET_TEXT_CATEGORIES\";\r\n\r\nlet resetTextCategories = (textCategoriesValues) => (dispatch, getState) => {\r\n let { selectedPage } = getState().userQuestionnaire;\r\n\r\n dispatch({\r\n type: RESET_TEXT_CATEGORIES,\r\n payload: {\r\n categoriesValues: textCategoriesValues,\r\n selectedPage,\r\n },\r\n });\r\n};\r\n\r\nexport default resetTextCategories;\r\n","export const CLEAR_ALL_ERROR_MSGS = \"CLEAR_ALL_ERROR_MSGS\";\r\n\r\nexport default function clearAllMessage() {\r\n return {\r\n type: CLEAR_ALL_ERROR_MSGS,\r\n payload: { },\r\n };\r\n}","export const ADD_ERROR_MSG = \"ADD_ERROR_MSG\";\r\n\r\nexport default function addErrorMessage(key, message) {\r\n return {\r\n type: ADD_ERROR_MSG,\r\n payload: { key, message },\r\n };\r\n}\r\n","export const SET_CULTURE_CODE = \"SET_CULTURE_CODE\";\r\n\r\nexport default function setCultureCode(id){\r\n return {\r\n type: SET_CULTURE_CODE,\r\n payload: id\r\n }\r\n}","export const SET_LAST_OPENED_PAGE_ID = \"SET_LAST_OPENED_PAGE_ID\";\r\n\r\nexport default function setLastOpenedPageId(id){\r\n return {\r\n type: SET_LAST_OPENED_PAGE_ID,\r\n payload: id\r\n }\r\n}","export const SET_CURRENT_DATE = \"SET_CURRENT_DATE\";\r\n\r\nexport default function setCurrentDate(date) {\r\n return {\r\n type: SET_CURRENT_DATE,\r\n payload: date,\r\n };\r\n}\r\n","export const SET_CATEGORIES_MAP = \"SET_CATEGORIES_MAP\";\r\n\r\nexport default function setCategoriesMap(categoriesMap) {\r\n return {\r\n type: SET_CATEGORIES_MAP,\r\n payload: categoriesMap,\r\n };\r\n}\r\n","export const SET_TEXT_CATEGORIES = \"SET_TEXT_CATEGORIES\";\r\n\r\nexport default function setTextCategories(textCategories) {\r\n return {\r\n type: SET_TEXT_CATEGORIES,\r\n payload: textCategories,\r\n };\r\n}\r\n","export const SET_NUMERIC_CATEGORIES = \"SET_NUMERIC_CATEGORIES\";\r\n\r\nexport default function setNumericCategories(numericCategories) {\r\n return {\r\n type: SET_NUMERIC_CATEGORIES,\r\n payload: numericCategories,\r\n };\r\n}\r\n","export const SET_SECTIONS_CONDITIONS = \"SET_SECTIONS_CONDITIONS\";\r\n\r\nexport default function setSectionsConditions(sectionsConditions) {\r\n return {\r\n type: SET_SECTIONS_CONDITIONS,\r\n payload: sectionsConditions,\r\n };\r\n}\r\n","export const SET_REDIRECTURL = \"SET_REDIRECTURL\";\r\n\r\nexport default function setRedirectUrl(url) {\r\n return {\r\n type: SET_REDIRECTURL,\r\n payload: url,\r\n };\r\n}","export const SET_HIGHLIGHTED_PAGES = \"SET_HIGHLIGHTED_PAGES\";\r\n\r\nexport default function setHighlightedPages(highlightedPages) {\r\n return {\r\n type: SET_HIGHLIGHTED_PAGES,\r\n payload: highlightedPages,\r\n };\r\n}\r\n","export const SET_ZINDEX_CATEGORIES = \"SET_ZINDEX_CATEGORIES\";\r\n\r\nexport default function setZIndexCategories(zIndexCategories) {\r\n return {\r\n type: SET_ZINDEX_CATEGORIES,\r\n payload: zIndexCategories,\r\n };\r\n}\r\n","export const SET_SHOW_PROGRESS_BAR = \"SET_SHOW_PROGRESS_BAR\";\r\n\r\nexport default function setShowProgressBar(showProgressBar) {\r\n return {\r\n type: SET_SHOW_PROGRESS_BAR,\r\n payload: showProgressBar,\r\n };\r\n}\r\n","export const SET_SHOULD_MODIFY_CATEGORIES = \"SET_SHOULD_MODIFY_CATEGORIES\";\r\n\r\nexport default function setShouldModifyCategories(shouldModifyCategories) {\r\n return {\r\n type: SET_SHOULD_MODIFY_CATEGORIES,\r\n payload: shouldModifyCategories,\r\n };\r\n}\r\n","export const ON_INIT_REPEAT_SECTION = \"ON_INIT_REPEAT_SECTION\";\r\n\r\nlet onInitRepeatSection = (section) => (dispatch, getState) => {\r\n let { selectedPage, previousMCAnswers } = getState().userQuestionnaire;\r\n let repeats = getState().sections[section.ID].repeats;\r\n\r\n dispatch({\r\n type: ON_INIT_REPEAT_SECTION,\r\n payload: { section, selectedPage, repeats, previousMCAnswers },\r\n });\r\n};\r\n\r\nexport default onInitRepeatSection;\r\n","import _ from \"lodash\";\r\nimport { validationRulesCommands, validationRulesRangeCommands } from \"./validationRules\";\r\nimport { defineDayMonthYear, getComponentTranslationsText } from \"../Utils/questionComponentUtil\";\r\nimport resources from \"../resources\";\r\nimport { PageNavigationENUM, TranslationKey } from \"../Enums\";\r\nimport { resolveValidationRuleValue } from \"../Utils/questionComponentUtil\";\r\nimport { trimReference, _contextVariableREGEX } from \"../Utils/questionReferencesUtil\";\r\nimport { ValidZIndexFirstLevel } from \"./customValidationRules\";\r\n\r\n/**\r\n *validate question answer by question validation rules and custom rules if defined\r\n * @param {array} questionRules question answers\r\n * @param {string} answers question answers\r\n * @param {string} currentDate application current date (this date is set in admin panel)\r\n * @param {bool} isRangeItem is range question (integer or date range question)\r\n * @param {array} customRules question custom rules\r\n * @param {string} cultureCode\r\n * @param {string} validationRulesReferences reference answers if refenece is define in the validation rule\r\n * @param {bool} isZIndexQuestion is z-index question type\r\n */\r\nexport const validateAnswers = (\r\n questionRules,\r\n answers,\r\n currentDate,\r\n isRangeItem,\r\n customRules,\r\n cultureCode,\r\n validationRulesReferences,\r\n isZIndexQuestion\r\n) => {\r\n const rules = customRules ? _.union(customRules, questionRules) : questionRules;\r\n const regularRules = rules.filter((x) => {\r\n return !x.IsRangeRule;\r\n });\r\n\r\n for (let rule of regularRules) {\r\n if (!validateAnswersByRule(rule, answers, currentDate, validationRulesReferences))\r\n return rule.IsCustom\r\n ? rule.ValidationMessage[cultureCode]\r\n : replaceValidationRuleMessageReference(\r\n getComponentTranslationsText(\r\n cultureCode,\r\n rule.ValidationMessageTranslations,\r\n TranslationKey.ValidationRule\r\n ),\r\n validationRulesReferences\r\n );\r\n }\r\n\r\n //if the question is range question, then validation should be done on both answers\r\n if (isRangeItem && answers[0] && answers[1]) {\r\n var firstAnswer = _.find(answers, { Order: 1 });\r\n var secondAnswer = _.find(answers, { Order: 2 });\r\n const rangeRules = rules.filter((x) => {\r\n return x.IsRangeRule;\r\n });\r\n let validationMessage = validateRangeAnswers(rangeRules, firstAnswer, secondAnswer, cultureCode);\r\n if (validationMessage) return validationMessage;\r\n }\r\n\r\n if (isZIndexQuestion) {\r\n if (answers.length > 0) {\r\n const firstAnswer = _.find(answers, { Order: 1 });\r\n if (!firstAnswer) return ValidZIndexFirstLevel.ValidationMessage[cultureCode];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n *validate range answers by rules\r\n * @param {array} rules rules defined from admin panel\r\n * @param {object} answer1 first answer\r\n * @param {object} answer2 second answer\r\n */\r\nconst validateRangeAnswers = (rules, answer1, answer2, cultureCode) => {\r\n for (let rule of rules) {\r\n if (!validationRulesRangeCommands(rule.ValidationName, answer1.AnswerValue, answer2.AnswerValue))\r\n return rule.IsCustom\r\n ? rule.ValidationMessage[cultureCode]\r\n : getComponentTranslationsText(cultureCode, rule.ValidationMessageTranslations, TranslationKey.ValidationRule);\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n *validate answers by some rule\r\n * @param {array} rule validatioin rule\r\n * @param {array} answers answers\r\n * @param {string} currentDate application current date\r\n * @param {string} validationRulesReferences reference answers (if reference is define in validation rule)\r\n */\r\nconst validateAnswersByRule = (rule, answers, currentDate, validationRulesReferences) => {\r\n if (!rule) return null;\r\n\r\n for (let answer of answers) {\r\n let isValid = !_.isEmpty(answer.AnswerValue)\r\n ? validationRulesCommands(\r\n rule.ValidationName,\r\n rule.ValidationRuleValue,\r\n answer.AnswerValue,\r\n currentDate,\r\n validationRulesReferences,\r\n rule.AdditionalInfo\r\n )\r\n : true;\r\n if (!isValid) return false;\r\n }\r\n return true;\r\n};\r\n/**\r\n *get specific validation rule by name\r\n * @param {array} validationRules validation rules\r\n * @param {string} ruleName validation rule name\r\n */\r\nexport const getSpecificValidationRule = (validationRules, ruleName) => {\r\n return _.find(validationRules, (rule) => {\r\n return rule.ValidationName === ruleName;\r\n });\r\n};\r\n\r\n/**\r\n *\r\n * @param {object} maxCharactersRule validation rule\r\n * @param {string} answerValue answer value\r\n * @param {string} cultureCode culture code (user questionnaire language)\r\n */\r\nexport const calculateCharactersLeft = (maxCharactersRule, answerValue, cultureCode) => {\r\n if (maxCharactersRule) {\r\n const message = resources[cultureCode].openQuestionCharactersLeft.CharactersRemaining;\r\n return message.replace(\"{0}\", maxCharactersRule.ValidationRuleValue - answerValue.length);\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * validate page on save\r\n * @param {array} requiredItems required items\r\n * @param {object} navigationDirection\r\n * @param {object} sectionState state with the recorded answers\r\n * @param {string} cultureCode user questionnaire culture code\r\n */\r\nexport const validatePage = (requiredItems, navigationDirection, sectionsState, cultureCode) => {\r\n if (\r\n navigationDirection !== PageNavigationENUM.BACK &&\r\n navigationDirection !== PageNavigationENUM.DIRECT_TO_SPECIFIC_PAGE\r\n ) {\r\n let invalidData = validateRequiredItems(requiredItems, sectionsState);\r\n\r\n if (invalidData.length > 0)\r\n return { invalidData, message: resources[cultureCode].validationErrorMessage.QuestionRequiredMessage };\r\n }\r\n\r\n let invalidBirthdayQuestion = validateCustomBirthdayQuestion(requiredItems, sectionsState);\r\n if (invalidBirthdayQuestion.length > 0)\r\n return {\r\n invalidData: invalidBirthdayQuestion,\r\n message: resources[cultureCode].validationErrorMessage.BirthdayConfirmClicked,\r\n };\r\n return null;\r\n};\r\n\r\n/**\r\n * validate required items, checks if all required questions are answered\r\n * @param {array} requiredItems required items\r\n * @param {object} sectionState state with the recorded answers\r\n */\r\nconst validateRequiredItems = (requiredItems, sectionState) => {\r\n let invalidData = [];\r\n for (let item of requiredItems) {\r\n let answers = sectionState[item.sectionId].repeats[item.repeatId].questions[item.questionId].answers;\r\n if (_.isEmpty(answers)) {\r\n invalidData.push(item);\r\n continue;\r\n }\r\n\r\n if (!_.isArray(answers)) {\r\n if (!hasMultipleChoiceQuestionAnswers(answers, item.options)) invalidData.push(item);\r\n } else if (\r\n (item.questionType === \"IntegerQuestion\" || item.questionType === \"DecimalQuestion\") &&\r\n item.options &&\r\n item.options.length > 1 &&\r\n _.find(item.options, { InvalidAnswerOption: true }) != null\r\n ) {\r\n if (!hasIntegerDecimalQuestionWithAnswerOptionsAnswers(answers, item)) invalidData.push(item);\r\n } else {\r\n if (!hasQuestionAnswers(answers, !item.questionType.includes(\"Range\"), item.questionType.includes(\"Date\")))\r\n invalidData.push(item);\r\n }\r\n }\r\n return invalidData;\r\n};\r\n\r\nconst hasIntegerDecimalQuestionWithAnswerOptionsAnswers = (answers, item) => {\r\n if (answers.length === 1 || answers.length === 0) return false;\r\n\r\n let isFirstAnswerAnswered = isAnswerAnswered(\r\n _.find(answers, (answer) => {\r\n return answer.Order === 1;\r\n }),\r\n false,\r\n false,\r\n false\r\n );\r\n if (!isFirstAnswerAnswered) return false;\r\n\r\n let secondAnswer = _.find(answers, (answer) => {\r\n return answer.Order === 2;\r\n });\r\n\r\n if (_.isEmpty(secondAnswer)) return false;\r\n\r\n let answerOption = _.find(item.options, (option) => {\r\n return option.AnswerValue === secondAnswer.AnswerValue;\r\n });\r\n\r\n if (answerOption.InvalidAnswerOption) return false;\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * validate multiple choice question\r\n * @param {object} answers answered options\r\n * @param {array} option multiple choice answer option\r\n */\r\nconst hasMultipleChoiceQuestionAnswers = (answers, options) => {\r\n let optionIds = answers ? Object.keys(answers) : null;\r\n if (_.isEmpty(optionIds)) return false;\r\n\r\n let selectedOptions = _.filter(options, (option) => {\r\n return optionIds.includes(option.ID) && option.ShowQuestionTypeAsAnswerOption;\r\n });\r\n\r\n for (let option of selectedOptions) {\r\n let validateMonth = option.AdditionalQuestionType !== \"DateQuestionYearOnly\";\r\n let validateDay =\r\n option.AdditionalQuestionType !== \"DateQuestionYearOnly\" &&\r\n option.AdditionalQuestionType !== \"DateQuestionDropdown\";\r\n if (\r\n !hasQuestionAnswers(\r\n answers[option.ID].answers,\r\n !option.AdditionalQuestionType.includes(\"Range\") && option.AdditionalQuestionType !== \"Latency\",\r\n option.AdditionalQuestionType.includes(\"Date\"),\r\n validateDay,\r\n validateMonth\r\n )\r\n )\r\n return false;\r\n }\r\n return true;\r\n};\r\n/**\r\n * check if the item has answers\r\n * @param {array} answers item answers\r\n * @param {bool} validateOnlyFirstAnswer if the item is not range question, then only first answer should be check\r\n * @param {bool} isDate if the item is date type question\r\n * @param {bool} validateDay if the item is date type question and day part should be validate\r\n * @param {bool} validateMonth if the item is date type question and month part should be validate\r\n */\r\nconst hasQuestionAnswers = (answers, validateOnlyFirstAnswer, isDate, validateDay = true, validateMonth = true) => {\r\n if (validateOnlyFirstAnswer)\r\n return isAnswerAnswered(\r\n _.find(answers, (answer) => {\r\n return answer.Order === 1;\r\n }),\r\n isDate,\r\n validateDay,\r\n validateMonth\r\n );\r\n else {\r\n if (answers.length === 1 || answers.length === 0) return false;\r\n for (let answer of answers) {\r\n if (!isAnswerAnswered(answer, isDate, validateDay, validateMonth)) return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\n/**\r\n * check if the answer has value\r\n * @param {object} answer item answer\r\n * @param {bool} isDate if the item is date type question\r\n * @param {bool} validateDay if the item is date type question and day part should be validate\r\n * @param {bool} validateMonth if the item is date type question and month part should be validate\r\n */\r\nconst isAnswerAnswered = (answer, isDate, validateDay, validateMonth) => {\r\n if (_.isEmpty(answer)) return false;\r\n if (_.isEmpty(answer.AnswerValue)) return false;\r\n if (isDate && !isDateAnswered(answer.AnswerValue, validateDay, validateMonth)) return false;\r\n\r\n if (_.isObject(answer.AnswerValue)) {\r\n if (_.isEmpty(answer.AnswerValue.value)) return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * check if the date answer has value\r\n * @param {object} answer item answer\r\n * @param {bool} validateDay if the item is date type question and day part should be validate\r\n * @param {bool} validateMonth if the item is date type question and month part should be validate\r\n */\r\nconst isDateAnswered = (answerValue, validateDay, validateMonth) => {\r\n let answerObj = defineDayMonthYear(answerValue);\r\n if (!answerObj) return false;\r\n\r\n if (answerObj.year === \"0000\") return false;\r\n if (validateMonth && answerObj.month === \"00\") return false;\r\n if (validateDay && answerObj.day === \"00\") return false;\r\n return true;\r\n};\r\n\r\n/**\r\n * check if custom birthday question have confirm button click\r\n * @param {array} requiredItems required items (custom birthday question is always required question)\r\n * @param {object} sectionState state with the recorded answers\r\n */\r\nconst validateCustomBirthdayQuestion = (requiredItems, sectionState) => {\r\n let invalidBirthdayQuestions = [];\r\n let requiredBirthdayItems = _.filter(requiredItems, (item) => {\r\n return item.questionType === \"CustomBirthdayQuestion\";\r\n });\r\n if (requiredBirthdayItems.length > 0) {\r\n for (let item of requiredBirthdayItems) {\r\n let answers = sectionState[item.sectionId].repeats[item.repeatId].questions[item.questionId].answers;\r\n\r\n let answer = _.first(answers);\r\n if (answer && !answer.IsConfirmButtonClick) invalidBirthdayQuestions.push(item);\r\n }\r\n }\r\n return invalidBirthdayQuestions;\r\n};\r\n\r\n/**\r\n * replace validation rules that have references as validation rule value\r\n * @param {array} validationRules validation rule define for the item\r\n * @param {object} referenceMap item reference map\r\n * @param {int} repeatNumber repeat number\r\n * @param {int} parentRepeatNumber parent repeat number\r\n * @param {object} sectionReferenceName section reference name\r\n */\r\nexport const replaceValidationRuleReferences = (\r\n validationRules,\r\n referenceMap,\r\n repeatNumber,\r\n parentRepeatNumber,\r\n sectionReferenceName\r\n) => {\r\n let referenceAnswers = [];\r\n if (_.isEmpty(referenceMap)) return referenceAnswers;\r\n\r\n let appliedValidationRules = getValidationRuleWithReferenceAsValue(validationRules);\r\n if (appliedValidationRules.length > 0) {\r\n _.map(appliedValidationRules, (x) => {\r\n let refValue = resolveValidationRuleValue(\r\n x.ValidationRuleValue,\r\n referenceMap,\r\n repeatNumber,\r\n parentRepeatNumber,\r\n sectionReferenceName\r\n );\r\n if (x.ValidationRuleValue.match(_contextVariableREGEX)) {\r\n let validationRuleValueTrim = trimReference(x.ValidationRuleValue);\r\n if (!_.isEmpty(validationRuleValueTrim))\r\n referenceAnswers.push({ reference: validationRuleValueTrim, value: refValue });\r\n }\r\n });\r\n }\r\n return referenceAnswers;\r\n};\r\n\r\n/**\r\n * return applied validation rules with reference value as validation rule\r\n * @param {array} validationRules validation rule define for the item\r\n */\r\nexport const getValidationRuleWithReferenceAsValue = (validationRules) => {\r\n return _.filter(\r\n validationRules,\r\n (x) =>\r\n x.IsApplied &&\r\n (x.ValidationName === \"Date before answer to other date question\" ||\r\n x.ValidationName === \"Date after answer to other date question\")\r\n );\r\n};\r\n\r\n/**\r\n * return applied validation rules with reference value as validation rule to question answer options\r\n * @param {array} answerOptions question answer options\r\n */\r\nexport const getAnswerOptionValidationRuleReferenceAsValue = (answerOptions) => {\r\n let validationRulesWithReferences = [];\r\n _.forEach(answerOptions, (option) => {\r\n if (option.AnswerOptionValidationRules.length > 0) {\r\n let validationRules = _.filter(\r\n option.AnswerOptionValidationRules,\r\n (r) =>\r\n r.IsApplied &&\r\n (r.ValidationName === \"Date before answer to other date question\" ||\r\n r.ValidationName === \"Date after answer to other date question\")\r\n );\r\n if (validationRules.length > 0)\r\n validationRulesWithReferences = _.concat(validationRulesWithReferences, validationRules);\r\n }\r\n });\r\n return validationRulesWithReferences;\r\n};\r\n\r\n/**\r\n * return validation rule message with replaced context variables (if exists)\r\n * @param {string} validationRuleMessage validation rule error message\r\n */\r\nconst replaceValidationRuleMessageReference = (validationRuleMessage, validationRulesReferences) => {\r\n let qRefs = validationRuleMessage.match(_contextVariableREGEX);\r\n if (qRefs && !_.isEmpty(validationRulesReferences)) {\r\n let trimReferenceValue = trimReference(qRefs[0]);\r\n let reference = _.find(validationRulesReferences, { reference: trimReferenceValue });\r\n if (_.isEmpty(reference) || _.isEmpty(reference.value)) return validationRuleMessage;\r\n\r\n return validationRuleMessage.replace(qRefs[0], reference.value);\r\n } else return validationRuleMessage;\r\n};\r\n","export const SET_FORM_VERIFICATION_CODE = \"SET_FORM_VERIFICATION_CODE\";\r\nexport const SET_FORM_VERIFICATION_MSG = \"SET_FORM_VERIFICATION_MSG\";\r\n\r\nexport const setFormVerificationCode = (code) => {\r\n return {\r\n type: SET_FORM_VERIFICATION_CODE,\r\n payload: { code, message: null },\r\n };\r\n};\r\n\r\nexport const setFormVerificationMessage = (message, msgType) => {\r\n return {\r\n type: SET_FORM_VERIFICATION_MSG,\r\n payload: { msgTxt: message, msgType },\r\n };\r\n};\r\n","import _ from \"lodash\";\r\n\r\nexport const getFirstThankYouPage = (pageListValues, sectionsConditions) => {\r\n return _.chain(pageListValues)\r\n .values()\r\n .filter((p) => {\r\n return (!sectionsConditions[p.ID] || sectionsConditions[p.ID].visible) && p.PageType === 1;\r\n })\r\n .minBy(\"SortOrder\")\r\n .value();\r\n};\r\nexport const calulateNextPage = (pageListValues, sectionsConditions, selectedPageOrder) => {\r\n let regularPage = _.chain(pageListValues)\r\n .values()\r\n .filter((p) => {\r\n return (\r\n p.SortOrder > selectedPageOrder &&\r\n (!sectionsConditions[p.ID] || sectionsConditions[p.ID].visible) &&\r\n p.PageType === 0\r\n );\r\n })\r\n .minBy(\"SortOrder\")\r\n .value();\r\n if (_.isEmpty(regularPage)) {\r\n return getFirstThankYouPage(pageListValues, sectionsConditions);\r\n } else return regularPage;\r\n};\r\n\r\nexport const calulatePreviousPage = (pageListValues, sectionsConditions, selectedPageOrder) => {\r\n return _.chain(pageListValues)\r\n .values()\r\n .filter((p) => {\r\n return (\r\n p.SortOrder < selectedPageOrder &&\r\n (!sectionsConditions[p.ID] || sectionsConditions[p.ID].visible) &&\r\n p.PageType === 0\r\n );\r\n })\r\n .maxBy(\"SortOrder\")\r\n .value();\r\n};\r\n","import api from \"../../assets/common/api/api\";\r\nimport _ from \"lodash\";\r\n\r\nimport { selectPage } from \"./selectPage\";\r\nimport setCompleted from \"./setCompleted\";\r\nimport clearAllMessage from \"../tempStorage/customErrorMsg/clearAllMessage\";\r\nimport addErrorMessage from \"../tempStorage/customErrorMsg/addMessage\";\r\nimport { setLoading } from \"../loading/setLoading\";\r\nimport history from \"../../assets/common/custom/history\";\r\nimport { res } from \"../../assets/localization/resources\";\r\n\r\nexport const COMPLETE_QUESTIONNAIRE = \"COMPLETE_QUESTIONNAIRE\";\r\n\r\nexport const completeQuestionnaire = (pageRedirect) => async (dispatch, getState) => {\r\n let { id } = getState().userQuestionnaire;\r\n let study = getState().study;\r\n let postObj = {\r\n UserQuestionnaireId: id,\r\n };\r\n setLoading(true);\r\n await api\r\n .post(\"/Questionnaire/CompleteUserQuestionnaire\", postObj)\r\n .then((response) => {\r\n if (\r\n response.status === 200 &&\r\n (response.data.ErrorMessage === null ||\r\n response.data.ErrorMessage === undefined ||\r\n response.data.ErrorMessage === \"\")\r\n ) {\r\n dispatch(clearAllMessage());\r\n dispatch(setCompleted(true));\r\n dispatch(setLoading(false));\r\n if (pageRedirect) {\r\n dispatch(selectPage(pageRedirect));\r\n } else {\r\n history.push(!_.isEmpty(response.data.RedirectUrl) ? response.data.RedirectUrl : \"/\");\r\n }\r\n } else {\r\n dispatch(setLoading(false));\r\n let errorMessage = res(study.Culture, response.data.ErrorMessage);\r\n dispatch(addErrorMessage(\"ID_MSG_KEY\", _.isEmpty(errorMessage) ? response.data.ErrorMessage : errorMessage)); //TODO if are more messages add uniqui KEY for each message\r\n }\r\n })\r\n .catch((error) => {\r\n console.error(\"Action COMPLETE_QUESTIONNAIRE error: \", error);\r\n dispatch(setLoading(false));\r\n history.push(\"/pages/error\");\r\n });\r\n};\r\n","export const ValidDate = {\r\n ValidationName: \"Valid Date\",\r\n ValidationRuleValue: \"\",\r\n AdditionalInfo: \"\",\r\n IsCustom: true,\r\n PreviousAnswerValue: \"\",\r\n IsRangeRule: false,\r\n ValidationMessage: {\r\n \"nl-NL\": \"Geen geldige datum.\",\r\n \"en-GB\": \"Not valid date.\",\r\n \"it-IT\": \"Data non valida.\",\r\n \"fr-FR\": \"Date non valide.\",\r\n \"de-DE\": \"Nicht gültiges Datum.\",\r\n },\r\n};\r\n\r\nexport const ValidYear = {\r\n ValidationName: \"Valid Year\",\r\n ValidationRuleValue: \"\",\r\n AdditionalInfo: \"\",\r\n IsCustom: true,\r\n PreviousAnswerValue: \"\",\r\n IsRangeRule: false,\r\n ValidationMessage: {\r\n \"nl-NL\": \"Vul alstublieft een geldige datum in.\",\r\n \"en-GB\": \"Please enter valid date.\",\r\n \"it-IT\": \"Si prega di inserire una data valida.\",\r\n \"fr-FR\": \"Veuillez saisir une date valide.\",\r\n \"de-DE\": \"Bitte geben Sie ein gültiges Datum ein.\",\r\n },\r\n};\r\n\r\nexport const ValidDay = {\r\n ValidationName: \"Valid Day\",\r\n ValidationRuleValue: 2,\r\n AdditionalInfo: \"\",\r\n IsCustom: true,\r\n PreviousAnswerValue: \"\",\r\n IsRangeRule: false,\r\n ValidationMessage: {\r\n \"nl-NL\": \"Geen geldige dag.\",\r\n \"en-GB\": \"Not valid day.\",\r\n \"it-IT\": \"Giorno non valido.\",\r\n \"fr-FR\": \"Jour non valide.\",\r\n \"de-DE\": \"Nicht gültiger Tag.\",\r\n },\r\n};\r\n\r\nexport const YearsOldNotValid = {\r\n ValidationName: \"Years Old Not Valid\",\r\n ValidationRuleValue: 150,\r\n AdditionalInfo: \"\",\r\n IsCustom: true,\r\n PreviousAnswerValue: \"\",\r\n IsRangeRule: false,\r\n ValidationMessage: {\r\n \"nl-NL\": \"Jaar is niet geldig.\",\r\n \"en-GB\": \"Year is not valid.\",\r\n \"it-IT\": \"L'anno non è valido.\",\r\n \"fr-FR\": \"L'année n'est pas valide.\",\r\n \"de-DE\": \"Jahr ist nicht gültig.\",\r\n },\r\n};\r\n\r\nexport const YearMaxCharacters = {\r\n ValidationName: \"Year Max Characters\",\r\n ValidationRuleValue: 4,\r\n AdditionalInfo: \"\",\r\n IsCustom: true,\r\n PreviousAnswerValue: \"\",\r\n IsRangeRule: false,\r\n ValidationMessage: {\r\n \"nl-NL\": \"Jaar is niet geldig.\",\r\n \"en-GB\": \"Year is not valid.\",\r\n \"it-IT\": \"L'anno non è valido.\",\r\n \"fr-FR\": \"L'année n'est pas valide.\",\r\n \"de-DE\": \"Jahr ist nicht gültig.\",\r\n },\r\n};\r\n\r\nexport const YearShouldNotBeInFuture = {\r\n ValidationName: \"Year Should Not Be In Future\",\r\n ValidationRuleValue: \"\",\r\n AdditionalInfo: \"\",\r\n IsCustom: true,\r\n PreviousAnswerValue: \"\",\r\n IsRangeRule: false,\r\n ValidationMessage: {\r\n \"nl-NL\": \"Het jaar moet in het verleden zijn.\",\r\n \"en-GB\": \"Year must be in past.\",\r\n \"it-IT\": \"L'anno deve essere passato.\",\r\n \"fr-FR\": \"L'année doit être passée.\",\r\n \"de-DE\": \"Jahr muss in der Vergangenheit liegen.\",\r\n },\r\n};\r\n\r\nexport const ValidPassword = {\r\n ValidationName: \"Valid Password\",\r\n ValidationRuleValue: \"\",\r\n AdditionalInfo: \"\",\r\n IsCustom: true,\r\n PreviousAnswerValue: \"\",\r\n IsRangeRule: true,\r\n ValidationMessage: {\r\n \"nl-NL\": \"De wachtwoorden zijn niet gelijk aan elkaar.\",\r\n \"en-GB\": \"The passwords do not match.\",\r\n \"it-IT\": \"La password non coincide\",\r\n \"fr-FR\": \"Le mot de passe ne correspond pas\",\r\n \"de-DE\": \"Die Passwörter stimmen nicht überein.\",\r\n },\r\n};\r\nexport const ValidZIndexFirstLevel = {\r\n ValidationName: \"Valid ZIndex First Level\",\r\n ValidationRuleValue: \"\",\r\n AdditionalInfo: \"\",\r\n IsCustom: true,\r\n PreviousAnswerValue: \"\",\r\n IsRangeRule: false,\r\n ValidationMessage: {\r\n \"nl-NL\": \"De eerste vraag is verplicht.\",\r\n \"en-GB\": \"The first question is mandatory.\",\r\n \"it-IT\": \"La prima domanda è obbligatoria.\",\r\n \"fr-FR\": \"La première question est obligatoire.\",\r\n \"de-DE\": \"Die Passwörter stimmen nicht überein.\",\r\n },\r\n};\r\n","export const ADD_INVALID_ITEM = \"ADD_INVALID_ITEM\";\r\n\r\nexport default function addInvalidItem(questionId, repeatId, optionId, message) {\r\n return {\r\n type: ADD_INVALID_ITEM,\r\n payload: { questionId, repeatId, optionId, message },\r\n };\r\n}\r\n","export const DELETE_INVALID_ITEM = \"DELETE_INVALID_ITEM\";\r\n\r\nexport default function deleteInvalidItem(questionId, repeatId, optionId) {\r\n return {\r\n type: DELETE_INVALID_ITEM,\r\n payload: { questionId, repeatId, optionId },\r\n };\r\n}\r\n","import api from \"../../assets/common/api/api\";\r\nimport _ from \"lodash\";\r\nimport moment from \"moment\";\r\nimport { selectPage } from \"./selectPage\";\r\nimport setCultureCode from \"./setCultureCode\";\r\nimport setLastOpenedPageId from \"./setLastOpenedPageId\";\r\nimport setCurrentDate from \"./setCurrentDate\";\r\nimport setCategoriesMap from \"./setCategoriesMap\";\r\nimport setTextCategories from \"./setTextCategories\";\r\nimport setNumericCategories from \"./setNumericCategories\";\r\nimport setSectionsConditions from \"./categories/setSectionsConditions\";\r\nimport setCompleted from \"./setCompleted\";\r\nimport setRedirectUrl from \"./setRedirectUrl\";\r\nimport setQuestionnaireName from \"./setQuestionnaireName\";\r\nimport setHighlightedPages from \"./setHighlightedPages\";\r\nimport setHoneypot from \"./setHoneypot\";\r\nimport { setLoading } from \"../loading/setLoading\";\r\nimport history from \"../../assets/common/custom/history\";\r\nimport setZIndexCategories from \"./setZIndexCategories\";\r\nimport setShowProgressBar from \"./setShowProgressBar\";\r\nexport const FETCH_TOP_SECTIONS_LIST = \"FETCH_TOP_SECTIONS_LIST\";\r\n\r\nexport const fetch_top_section_list = (userQuestionnaireId) => async (dispatch, getState) => {\r\n let response = {};\r\n dispatch(setLoading(true));\r\n await api\r\n .get(\"/Questionnaire/GetMenuNav\", {\r\n params: {\r\n userQuestionnaireId,\r\n datetime: moment().format(),\r\n },\r\n })\r\n .then((res) => {\r\n response = res;\r\n });\r\n\r\n let {\r\n userQuestionnaire: {\r\n selectedPage,\r\n cultureCode,\r\n lastPageOpenedId,\r\n currentDate,\r\n categoriesMap,\r\n sectionsConditions,\r\n completed,\r\n redirectUrl,\r\n questionnaireName,\r\n highlightedPages,\r\n },\r\n } = getState();\r\n\r\n //first set the culture code in order to filter page translation by user questionnaire culture code\r\n if (cultureCode == null) dispatch(setCultureCode(response.data.cultureCode));\r\n\r\n dispatch(setTextCategories(response.data.textCategories));\r\n dispatch(setNumericCategories(response.data.numericCategories));\r\n dispatch(setShowProgressBar(response.data.showProgressBar));\r\n if (_.isEmpty(sectionsConditions)) dispatch(setSectionsConditions(response.data.sectionsConditions));\r\n\r\n dispatch({\r\n type: FETCH_TOP_SECTIONS_LIST,\r\n payload: response.data.topSections,\r\n });\r\n\r\n if (currentDate == null) dispatch(setCurrentDate(response.data.currentDate));\r\n if (categoriesMap == null) dispatch(setCategoriesMap(response.data.categoriesMap));\r\n if (completed == null) dispatch(setCompleted(response.data.completed));\r\n if (redirectUrl == null) dispatch(setRedirectUrl(response.data.redirectUrl));\r\n if (questionnaireName == null) dispatch(setQuestionnaireName(response.data.questionnaireName));\r\n if (_.isEmpty(highlightedPages)) dispatch(setHighlightedPages(response.data.highlightedPages));\r\n dispatch(setHoneypot(response.data.honeypot));\r\n dispatch(setZIndexCategories(response.data.zIndexCategories));\r\n\r\n if (selectedPage == null && response.data.topSections) {\r\n var topSectionsList = Object.values(JSON.parse(response.data.topSections));\r\n if (response.data.completed === true) {\r\n var thankYouPages = _.filter(topSectionsList, (val) => {\r\n return val.PageType === 1;\r\n });\r\n if (thankYouPages && thankYouPages.length > 0) dispatch(selectPage(_.sortBy(thankYouPages, \"SortOrder\")[0]));\r\n else history.push(response.data.redirectUrl === \"\" ? \"/\" : response.data.redirectUrl);\r\n }\r\n //if there is not selected page (initial opening of the questionnaire, select the first page)\r\n else {\r\n let lastVisitedPage = _.find(topSectionsList, {\r\n ID: response.data.lastTopSectionVisitedID,\r\n });\r\n let pageToDisplay = !_.isEmpty(lastVisitedPage) ? lastVisitedPage : _.sortBy(topSectionsList, \"SortOrder\")[0];\r\n dispatch(selectPage(pageToDisplay));\r\n }\r\n }\r\n if (lastPageOpenedId == null) dispatch(setLastOpenedPageId(response.data.lastPageOpenedId));\r\n\r\n dispatch(setLoading(false));\r\n};\r\n","import _ from \"lodash\";\r\nexport let pageTextCategories = [];\r\nexport let pageNumericCategories = [];\r\n\r\nexport const setPageCategories = (textCategories, numericCategories, pageSortOrder) => {\r\n pageTextCategories = [];\r\n _.orderBy(textCategories, \"SectionSortOrder\", \"desc\").forEach((category) => {\r\n if (\r\n !_.find(pageTextCategories, (x) => {\r\n return x.CategoryID === category.CategoryID;\r\n }) &&\r\n category.SectionSortOrder < pageSortOrder\r\n )\r\n pageTextCategories.push(category);\r\n });\r\n\r\n _.orderBy(numericCategories, \"SectionSortOrder\", \"desc\").forEach((category) => {\r\n pageNumericCategories = [];\r\n if (\r\n !_.find(pageNumericCategories, (x) => {\r\n return x.CategoryID === category.CategoryID;\r\n }) &&\r\n category.SectionSortOrder < pageSortOrder\r\n )\r\n pageNumericCategories.push(category);\r\n });\r\n};\r\n","export const INIT_CONDITIONAL_SECTION = \"INIT_CONDITIONAL_SECTION\";\r\n\r\nlet initConditionalSection = (\r\n sectionId,\r\n sortOrder,\r\n categoryShowCondition,\r\n secondCategoryShowCondition,\r\n secondCategoryConditionOperator,\r\n isTopSection\r\n) => (dispatch, getState) => {\r\n let { textCategories, numericCategories } = getState().userQuestionnaire;\r\n let pageSortOrder = !isTopSection ? getState().userQuestionnaire.selectedPage.sortOrder : sortOrder;\r\n\r\n dispatch({\r\n type: INIT_CONDITIONAL_SECTION,\r\n payload: {\r\n sectionId,\r\n pageSortOrder,\r\n categoryShowCondition,\r\n secondCategoryShowCondition,\r\n secondCategoryConditionOperator,\r\n textCategories,\r\n numericCategories,\r\n isTopSection,\r\n },\r\n });\r\n};\r\n\r\nexport default initConditionalSection;\r\n","import api from \"../../assets/common/api/api\";\r\n\r\nexport const FETCH_CASCADING_DRUGS = \"FETCH_CASCADING_DRUGS\";\r\n\r\nexport const fetchCascadingDrugs = (componentName, componentId, levelName, groupName) => async (dispatch, getState) => {\r\n const response = await api.get(\"/CascadingList/GetCascadingListItems\", {\r\n params: {\r\n componentId: componentId,\r\n levelName: encodeURI(levelName),\r\n groupName: encodeURI(groupName),\r\n },\r\n });\r\n\r\n dispatch({\r\n type: FETCH_CASCADING_DRUGS,\r\n payload: {\r\n componentName,\r\n groupName,\r\n drugs: response.data,\r\n },\r\n });\r\n};\r\n","export const ADD_REQUIRED_INVALID_QUESTIONS = \"ADD_REQUIRED_INVALID_QUESTIONS\";\r\n\r\nexport default function addRequiredInvalidQuestions(items, message) {\r\n return {\r\n type: ADD_REQUIRED_INVALID_QUESTIONS,\r\n payload: { items, message },\r\n };\r\n}\r\n","import api from \"../../assets/common/api/api\";\r\nimport { toast } from \"react-toastify\";\r\nimport { setLoading } from \"../loading/setLoading\";\r\n\r\nexport const CHANGE_WEBSITE_CONTENT = \"CHANGE_WEBSITE_CONTENT\";\r\n\r\nexport const changeWebSiteContent = (webSiteContent, value) => async (dispatch, getState) => {\r\n setLoading(true);\r\n let object = { ...webSiteContent, Value: value };\r\n await api\r\n .post(\"/study/ChangeWebSiteContent\", object)\r\n .then((response) => {\r\n if (response.status === 200) {\r\n setLoading(false);\r\n if (response.data) {\r\n dispatch({ type: CHANGE_WEBSITE_CONTENT, payload: object });\r\n } else toast.error(\"Error while changing site content\");\r\n }\r\n })\r\n .catch((error) => {\r\n setLoading(false);\r\n toast.error(\"Error while changing site content\");\r\n });\r\n};\r\n","/**\r\n *check if the email address is valid email address (regex)\r\n * @param {string} emailAddress question answer\r\n */\r\nexport const checkEmailAddress = (emailAddress) => {\r\n if (typeof emailAddress === \"string\") emailAddress = emailAddress.trim();\r\n\r\n if (\r\n /^[a-zA-Z0-9!#$%&'*+\\-/=?^_`{|}~()]+[a-zA-Z\\-0-9\\._!#$%&'*+-/=?^_`{|}~()]*@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(\r\n emailAddress\r\n )\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n","export const pwaA2hs = () => {\r\n let deferredPrompt;\r\n const addBtn = document.querySelector(\"#btn-homescreen\");\r\n addBtn.style.display = \"none\";\r\n\r\n window.addEventListener(\"beforeinstallprompt\", (e) => {\r\n e.preventDefault();\r\n deferredPrompt = e;\r\n addBtn.style.display = \"block\";\r\n });\r\n\r\n addBtn.addEventListener(\"click\", (e) => {\r\n addBtn.style.display = \"none\";\r\n deferredPrompt.prompt();\r\n deferredPrompt.userChoice.then((choiceResult) => {\r\n //choiceResult.outcome\r\n deferredPrompt = null;\r\n });\r\n });\r\n};\r\n\r\nfunction getRegister(callBack) {\r\n if (\"serviceWorker\" in navigator) {\r\n navigator.serviceWorker.ready.then((registration) => {\r\n callBack(registration);\r\n });\r\n }\r\n}\r\n\r\nfunction arrayBufferToBase64(buffer) {\r\n var binary = \"\";\r\n var bytes = new Uint8Array(buffer);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n return window.btoa(binary);\r\n}\r\n\r\nexport const isPushSupported = () =>\r\n \"Notification\" in window && \"serviceWorker\" in navigator && \"PushManager\" in window;\r\n\r\nexport const grantPushPermission = (onUserAction) => {\r\n if (isPushSupported()) {\r\n let appServerKey = window.flim_config.VAPIDpublicKey;\r\n Notification.requestPermission(function (status) {\r\n if (status === \"granted\") {\r\n getRegister((reg) => {\r\n if (reg != null) {\r\n reg.pushManager.getSubscription().then(function (sub) {\r\n if (sub === null) {\r\n reg.pushManager\r\n .subscribe({\r\n userVisibleOnly: true,\r\n applicationServerKey: appServerKey,\r\n })\r\n .then(function (sub) {\r\n var subscription = {\r\n endpoint: sub.endpoint,\r\n p256dh: arrayBufferToBase64(sub.getKey(\"p256dh\")),\r\n auth: arrayBufferToBase64(sub.getKey(\"auth\")),\r\n };\r\n onUserAction({ status, subscription });\r\n })\r\n .catch(function (e) {\r\n console.error(\"Unable to subscribe to push\", e);\r\n });\r\n } else {\r\n var subscription = {\r\n endpoint: sub.endpoint,\r\n p256dh: arrayBufferToBase64(sub.getKey(\"p256dh\")),\r\n auth: arrayBufferToBase64(sub.getKey(\"auth\")),\r\n };\r\n onUserAction({ status, subscription });\r\n }\r\n });\r\n }\r\n });\r\n } else onUserAction({ status, subscription: null });\r\n });\r\n }\r\n};\r\n","import setShouldModifyCategories from \"../../tempStorage/setShouldModifyCategories\";\r\n\r\nexport const SET_TEXT_CATEGORIES_TO_DEFAULT_VALUE = \"SET_TEXT_CATEGORIES_TO_DEFAULT_VALUE\";\r\n\r\nlet setTextCategoriesToDefaultValue = (options, answers) => (dispatch, getState) => {\r\n let { shouldModifyCategories } = getState().tempStorage;\r\n let sectionId = getState().userQuestionnaire.selectedPage.id;\r\n\r\n if (shouldModifyCategories) {\r\n dispatch({\r\n type: SET_TEXT_CATEGORIES_TO_DEFAULT_VALUE,\r\n payload: { sectionId, options, answers },\r\n });\r\n dispatch(setShouldModifyCategories(false));\r\n }\r\n};\r\n\r\nexport default setTextCategoriesToDefaultValue;\r\n","export const MODIFY_CASCADING_DRUG_CATEGORY_VALUES = \"MODIFY_CASCADING_DRUG_CATEGORY_VALUES\";\r\n\r\nlet modifyCascadingDrugCategoryValues = (previousAnswer, newAnswer) => (dispatch, getState) => {\r\n let { selectedPage, zIndexCategories } = getState().userQuestionnaire;\r\n\r\n dispatch({\r\n type: MODIFY_CASCADING_DRUG_CATEGORY_VALUES,\r\n payload: {\r\n previousAnswer,\r\n newAnswer,\r\n selectedPage,\r\n zIndexCategories,\r\n },\r\n });\r\n};\r\n\r\nexport default modifyCascadingDrugCategoryValues;\r\n","export const REMOVE_CATEGORIES_FROM_NOT_VISIBLE_PAGES = \"REMOVE_CATEGORIES_FROM_NOT_VISIBLE_PAGES\";\r\n\r\nlet removeCategoriesFromNotVisiblePages = (notRelevantCategories) => (dispatch, getState) => {\r\n dispatch({\r\n type: REMOVE_CATEGORIES_FROM_NOT_VISIBLE_PAGES,\r\n payload: { notRelevantCategories },\r\n });\r\n};\r\n\r\nexport default removeCategoriesFromNotVisiblePages;\r\n","import { getSectionCategories } from \"../../../assets/questionnaire/containers/categoryConditionContainer\";\r\n\r\nexport const CALCULATE_SECTION_VISIBILITY = \"CALCULATE_SECTION_VISIBILITY\";\r\n\r\nexport default function calculateSectionVisibility(sortOrder, categoriesMap, textCategories, numericCategories) {\r\n let changedTextCategories = getSectionCategories(textCategories, sortOrder);\r\n let changedNumericCategories = getSectionCategories(numericCategories, sortOrder);\r\n\r\n return {\r\n type: CALCULATE_SECTION_VISIBILITY,\r\n payload: { changedTextCategories, sortOrder, categoriesMap, changedNumericCategories },\r\n };\r\n}\r\n","export const CALCULATE_VISIBILITY_WITH_NOT_RELEVANT_CATEGORIES = \"CALCULATE_VISIBILITY_WITH_NOT_RELEVANT_CATEGORIES\";\r\n\r\nexport default function calculateVisibilityWithNotRelevantCategories(sortOrder, categoriesMap, notRelevantCategories) {\r\n return {\r\n type: CALCULATE_VISIBILITY_WITH_NOT_RELEVANT_CATEGORIES,\r\n payload: { notRelevantCategories, categoriesMap, sortOrder },\r\n };\r\n}\r\n","export const ADD_MC_HIGHLIGHT_QUESTION = \"ADD_MC_HIGHLIGHT_QUESTION\";\r\n\r\nlet addMCHighlighQuestion = (questionAnswers, question, sectionId, repeatId, parentRepeatNumber) => (\r\n dispatch,\r\n getState\r\n) => {\r\n let { selectedPage } = getState().userQuestionnaire;\r\n\r\n dispatch({\r\n type: ADD_MC_HIGHLIGHT_QUESTION,\r\n payload: { questionAnswers, question, sectionId, repeatId, selectedPage, parentRepeatNumber },\r\n });\r\n};\r\n\r\nexport default addMCHighlighQuestion;\r\n","export const ADD_INIT_HIGHLIGHT_QUESTION = \"ADD_INIT_HIGHLIGHT_QUESTION\";\r\n\r\nlet addInitHighlighQuestion = (sectionId, repeatId, question, answers, parentRepeatNumber) => (dispatch, getState) => {\r\n let { selectedPage } = getState().userQuestionnaire;\r\n\r\n dispatch({\r\n type: ADD_INIT_HIGHLIGHT_QUESTION,\r\n payload: { sectionId, repeatId, question, answers, parentRepeatNumber, selectedPage },\r\n });\r\n};\r\n\r\nexport default addInitHighlighQuestion;\r\n","import onInitRepeatSection from \"../userQuestionnaire/categories/onInitRepeatedSection\";\r\n\r\nexport const INIT_SECTION_DATA = \"INIT_SECTION_DATA\";\r\nlet initSectionData =\r\n (section, parentRepeatId, parentSectionId, parentRepeatNumber, parentRepeatFollowup) => (dispatch, getState) => {\r\n let { requiredItems } = getState().tempStorage;\r\n let sectionCondition = getState().userQuestionnaire.sectionsConditions[section.ID];\r\n let { previousMCAnswers, previousQuestions, previousSections, cultureCode } = getState().userQuestionnaire;\r\n dispatch({\r\n type: INIT_SECTION_DATA,\r\n payload: {\r\n section,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n parentRepeatFollowup,\r\n parentSectionId,\r\n requiredItems,\r\n sectionCondition,\r\n previousMCAnswers,\r\n previousSections,\r\n previousQuestions,\r\n cultureCode,\r\n },\r\n });\r\n\r\n if (section.SectionDTO.Repeated && !section.SectionDTO.UsePreviousAnswers) dispatch(onInitRepeatSection(section));\r\n };\r\n\r\nexport default initSectionData;\r\n","export const CHANGE_REPEATS = \"CHANGE_REPEATS\";\r\n\r\nexport default function changeRepeats(section, questionId, optionValue, repeatId, cultureCode) {\r\n return {\r\n type: CHANGE_REPEATS,\r\n payload: { section, questionId, optionValue, repeatId, cultureCode },\r\n };\r\n}\r\n","import api from \"../../assets/common/api/api\";\r\n\r\nexport const FETCH_CASCADING_LEVELS = \"FETCH_CASCADING_LEVELS\";\r\n\r\nexport const fetchCascadingLevels = (componentName) => async (dispatch, getState) => {\r\n const response = await api.get(\"/CascadingList/GetLevels\", {\r\n params: {\r\n componentName: encodeURI(componentName),\r\n },\r\n });\r\n\r\n if (response.data && response.data.length)\r\n dispatch({\r\n type: FETCH_CASCADING_LEVELS,\r\n payload: {\r\n componentName,\r\n levels: response.data,\r\n },\r\n });\r\n};\r\n","export const DELETE_MULTIPLE_INVALID_OPTIONS = \"DELETE_MULTIPLE_INVALID_OPTIONS\";\r\n\r\nexport default function deleteMultipleInvalidOptions(questionId, repeatId, options) {\r\n return {\r\n type: DELETE_MULTIPLE_INVALID_OPTIONS,\r\n payload: { questionId, repeatId, options },\r\n };\r\n}\r\n","export const REGISTER_REQUIRED_ITEM = \"REGISTER_REQUIRED_ITEM\";\r\n\r\nexport default function registerRequiredItem(item) {\r\n return {\r\n type: REGISTER_REQUIRED_ITEM,\r\n payload: { item },\r\n };\r\n}\r\n","import { createReferenceMapForQuestion } from \"../../../assets/questionnaire/Utils/questionReferencesUtil\";\r\n\r\nexport const INIT_QUESTION_REF_MAP = \"INIT_QUESTION_REF_MAP\";\r\n\r\nexport const initQuestionRef = (question, repeatNr, parentRepeatNr, sectionReferenceName) => (dispatch, getState) => {\r\n let questionReferencesDictionary = getState().userQuestionnaire.questionReferences;\r\n let cultureCode = getState().userQuestionnaire.cultureCode;\r\n var map = createReferenceMapForQuestion(\r\n question,\r\n repeatNr,\r\n parentRepeatNr,\r\n sectionReferenceName,\r\n questionReferencesDictionary,\r\n cultureCode\r\n );\r\n\r\n if (map) {\r\n dispatch({\r\n type: INIT_QUESTION_REF_MAP,\r\n payload: map,\r\n });\r\n }\r\n};\r\n","import api from \"../../assets/common/api/api\";\r\nimport { setLoading } from \"../loading/setLoading\";\r\nimport _ from \"lodash\";\r\n\r\nexport const GET_QUESTION_IMAGE_CONTENT = \"GET_QUESTION_IMAGE_CONTENT\";\r\n\r\nexport const getQuestionImageContent = (questionId) => async (dispatch, getState) => {\r\n setLoading(true);\r\n let { id } = getState().userQuestionnaire;\r\n await api\r\n .get(`/QuestionImage/GetQuestionImageContent?questionId=${questionId}&userQuestionnaireId=${id}`)\r\n .then((response) => {\r\n if (response.status === 200) {\r\n setLoading(false);\r\n let responseData = response.data;\r\n if (!_.isEmpty(responseData.Content)) {\r\n dispatch({ type: GET_QUESTION_IMAGE_CONTENT, payload: response.data });\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n setLoading(false);\r\n });\r\n};\r\n","import React from \"react\";\r\nimport Loader from \"react-loader-spinner\";\r\n\r\nconst Loading = ({ visible }) => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Loading;\r\n","import api from \"../../assets/common/api/api\";\r\nimport _ from \"lodash\";\r\nimport history from \"../../assets/common/custom/history\";\r\nimport { toast } from \"react-toastify\";\r\nimport { setLoading } from \"../loading/setLoading\";\r\nimport { res } from \"../../assets/localization/resources\";\r\n\r\nexport const GET_FORM_DATA = \"GET_FORM_DATA\";\r\n\r\nexport const getFormData = (urlParameters, formName) => async (dispatch, getState) => {\r\n let { study } = getState();\r\n\r\n let form = {\r\n FormName: formName,\r\n StudyId: study.StudyId,\r\n Culture: study.Culture,\r\n Value: urlParameters.get(\"value\"),\r\n Source: urlParameters.get(\"source\"),\r\n Invitation: urlParameters.get(\"invitation\"),\r\n CanceledStudyParticipationId: urlParameters.get(\"canceledStudyParticipationId\"),\r\n UnsubscribeUserId: urlParameters.get(\"unsubscribeId\"),\r\n };\r\n setLoading(true);\r\n await api\r\n .post(\"/form/form\", form)\r\n .then((response) => {\r\n if (response.status === 200) {\r\n setLoading(false);\r\n let responseData = response.data;\r\n if (_.isEmpty(responseData)) history.replace(\"/pages/error\");\r\n if (!responseData.AccessGranted) history.replace(\"/pages/accessdenied\");\r\n else if (!_.isEmpty(responseData.FormId)) {\r\n if (urlParameters.has(\"canceledStudyParticipationId\")) {\r\n urlParameters.delete(\"canceledStudyParticipationId\");\r\n history.replace({\r\n search: urlParameters.toString(),\r\n });\r\n }\r\n\r\n dispatch({ type: GET_FORM_DATA, payload: response.data });\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n setLoading(false);\r\n toast.error(res(study.Culture, \"ErrorOcurred\"));\r\n history.replace(\"/pages/error\");\r\n });\r\n};\r\n","import api from \"../../assets/common/api/api\";\r\nimport { setLoading } from \"../loading/setLoading\";\r\n\r\nexport const GET_USER_QUESTIONNAIRES = \"GET_USER_QUESTIONNAIRES\";\r\n\r\nlet getUserQuestionnaires = () => async (dispatch, getState) => {\r\n dispatch(setLoading(true));\r\n\r\n // {\r\n // params: {\r\n // componentId: componentId,\r\n // levelName: encodeURI(levelName),\r\n // groupId: groupId,\r\n // parentItemId: parentItemId,\r\n // },\r\n // }\r\n\r\n const response = await api.get(`/questionnaires/GetUserQuestionnaires`);\r\n if (response.status === 200) {\r\n dispatch(setLoading(false));\r\n dispatch({ type: GET_USER_QUESTIONNAIRES, payload: response.data });\r\n } else {\r\n dispatch(setLoading(false));\r\n }\r\n};\r\n\r\nexport default getUserQuestionnaires;\r\n","import api from \"../../assets/common/api/api\";\r\nimport { grantPushPermission } from \"../../assets/common/pwaUtil\";\r\n\r\nexport const SUBSCRIBE_PUSH_NOTIFICATIONS = \"SUBSCRIBE_PUSH_NOTIFICATIONS\";\r\n\r\nasync function postAndDispatch(dispatch, params) {\r\n let ShowPushNotificationPopup;\r\n\r\n await api\r\n .post(\"/questionnaires/AllowUserNotifications/\", null, {\r\n params: { ...params },\r\n })\r\n .then((response) => {\r\n ShowPushNotificationPopup = false;\r\n })\r\n .catch((error) => {\r\n ShowPushNotificationPopup = true;\r\n });\r\n\r\n dispatch({\r\n type: SUBSCRIBE_PUSH_NOTIFICATIONS,\r\n payload: { ShowPushNotificationPopup },\r\n });\r\n}\r\n\r\nexport const subscribePushNotifications = (allow) => async (dispatch, getState) => {\r\n let params = {\r\n allow,\r\n endpoint: \"\",\r\n p256dh: \"\",\r\n auth: \"\",\r\n };\r\n\r\n if (allow) {\r\n grantPushPermission(async (grantObj) => {\r\n switch (grantObj.status) {\r\n case \"granted\":\r\n await postAndDispatch(dispatch, { allow: true, ...grantObj.subscription });\r\n break;\r\n case \"default\":\r\n break;\r\n case \"denied\":\r\n await postAndDispatch(dispatch, { ...params, allow: false });\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n } else {\r\n await postAndDispatch(dispatch, { ...params, allow: false });\r\n }\r\n};\r\n","export const ON_COUNT_DOWN_FINISH = \"ON_COUNT_DOWN_FINISH\";\r\n\r\nexport function onCountdownFinish() {\r\n return {\r\n type: ON_COUNT_DOWN_FINISH,\r\n payload: {},\r\n };\r\n}\r\n","import api from \"../../assets/common/api/api\";\r\nimport _ from \"lodash\";\r\nimport history from \"../../assets/common/custom/history\";\r\nimport { setLoading } from \"../loading/setLoading\";\r\n\r\nexport const GET_PAGES_BY_NAME = \"GET_PAGES_BY_NAME\";\r\n\r\nexport const getPageByName = (name, studyId) => async (dispatch, getState) => {\r\n setLoading(true);\r\n if (_.isEmpty(name)) history.push(\"/NotFound\");\r\n\r\n await api\r\n .get(`/pages/page?studyId=${studyId}&pageName=${name}`)\r\n .then((response) => {\r\n setLoading(false);\r\n if (response.status === 200) {\r\n let responseData = response.data;\r\n if (_.isEmpty(responseData)) {\r\n history.push(\"/NotFound\");\r\n } else {\r\n dispatch({ type: GET_PAGES_BY_NAME, payload: response.data });\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n setLoading(false);\r\n history.push(\"/NotFound\");\r\n });\r\n};\r\n","import api from \"../../assets/common/api/api\";\r\nimport { toast } from \"react-toastify\";\r\nimport _ from \"lodash\";\r\nimport history from \"../../assets/common/custom/history\";\r\nimport { setLoading } from \"../loading/setLoading\";\r\nimport { res } from \"../../assets/localization/resources\";\r\n\r\nexport const GET_FAQ = \"GET_FAQ\";\r\n\r\nexport const getFaq = () => async (dispatch, getState) => {\r\n let { study } = getState();\r\n setLoading(true);\r\n\r\n await api\r\n .get(`/frequentlyaskedquestions/GetFrequentlyAskedQuestions?studyId=${study.StudyId}&cultureId=${study.Culture}`)\r\n .then((response) => {\r\n setLoading(false);\r\n if (response.status === 200) {\r\n let responseData = response.data;\r\n if (_.isEmpty(responseData)) {\r\n toast.error(res(study.Culture, \"FAQContentEmpty\"));\r\n } else {\r\n dispatch({ type: GET_FAQ, payload: response.data });\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n setLoading(false);\r\n toast.error(res(study.Culture, \"ErrorOcurred\"));\r\n history.push(\"/pages/error\");\r\n });\r\n};\r\n","export const HANDLE_FAQ_DROP = \"HANDLE_FAQ_DROP\";\r\n\r\nexport function handleFaqDrop(dragId, dropId) {\r\n return {\r\n type: HANDLE_FAQ_DROP,\r\n payload: { dragId, dropId },\r\n };\r\n}\r\n","export const CHANGE_FAQ_CONTENT = \"CHANGE_FAQ_CONTENT\";\r\n\r\nexport function changeFaqContent(faq, value, type) {\r\n return {\r\n type: CHANGE_FAQ_CONTENT,\r\n payload: { faq, value, type },\r\n };\r\n}\r\n","export const DELETE_FAQ = \"DELETE_FAQ\";\r\n\r\nexport function deleteFaq(faqId) {\r\n return {\r\n type: DELETE_FAQ,\r\n payload: { faqId },\r\n };\r\n}\r\n","export const ADD_NEW_FAQ = \"ADD_NEW_FAQ\";\r\n\r\nexport const addNewFaq = () => (dispatch, getState) => {\r\n let { study } = getState();\r\n dispatch({ type: ADD_NEW_FAQ, payload: { studyId: study.StudyId, culture: study.Culture } });\r\n};\r\n","import api from \"../../assets/common/api/api\";\r\nimport _ from \"lodash\";\r\nimport history from \"../../assets/common/custom/history\";\r\nimport { toast } from \"react-toastify\";\r\nimport { setLoading } from \"../loading/setLoading\";\r\nimport { res } from \"../../assets/localization/resources\";\r\n\r\nexport const GET_FOLLOWUP_DATA = \"GET_FOLLOWUP_DATA\";\r\n\r\nexport const getFollowupData = (urlParameters) => async (dispatch, getState) => {\r\n let { study } = getState();\r\n\r\n let form = {\r\n FormName: \"ReportForm\",\r\n StudyId: study.StudyId,\r\n Culture: study.Culture,\r\n QuestionnaireId: urlParameters.get(\"questionnaireId\"),\r\n };\r\n setLoading(true);\r\n await api\r\n .post(\"/followup/followup\", form)\r\n .then((response) => {\r\n if (response.status === 200) {\r\n setLoading(false);\r\n let responseData = response.data;\r\n if (_.isEmpty(responseData)) history.replace(\"/pages/error\");\r\n if (!responseData.AccessGranted) history.replace(\"/pages/accessdenied\");\r\n else dispatch({ type: GET_FOLLOWUP_DATA, payload: response.data });\r\n }\r\n })\r\n .catch((error) => {\r\n setLoading(false);\r\n toast.error(res(study.Culture, \"ErrorOcurred\"));\r\n history.replace(\"/pages/error\");\r\n });\r\n};\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://cra.link/PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === \"localhost\" ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === \"[::1]\" ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\r\n);\r\n\r\nexport function register(config) {\r\n //if ((process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator)) {\r\n if (\"serviceWorker\" in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener(\"load\", () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n \"This web app is being served cache-first by a service \" +\r\n \"worker. To learn more, visit https://cra.link/PWA\"\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === \"installed\") {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n \"New content is available and will be used when all \" +\r\n \"tabs for this page are closed. See https://cra.link/PWA.\"\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log(\"Content is cached for offline use.\");\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error(\"Error during service worker registration:\", error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { \"Service-Worker\": \"script\" },\r\n })\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get(\"content-type\");\r\n if (response.status === 404 || (contentType != null && contentType.indexOf(\"javascript\") === -1)) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\"No internet connection found. App is running in offline mode.\");\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if (\"serviceWorker\" in navigator) {\r\n navigator.serviceWorker.ready\r\n .then((registration) => {\r\n registration.unregister();\r\n })\r\n .catch((error) => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import { Router } from \"react-router-dom\";\r\nimport React, { useState, useLayoutEffect } from \"react\";\r\n\r\nconst CustomRouter = ({ history, ...props }) => {\r\n const [state, setState] = useState({\r\n action: history.action,\r\n location: history.location,\r\n });\r\n\r\n useLayoutEffect(() => history.listen(setState), [history]);\r\n\r\n return ;\r\n};\r\n\r\nexport default CustomRouter;\r\n","import { useEffect } from 'react';\r\n\r\nconst ScrollToTopOnRouteChange = ({history}) =>{\r\n useEffect(() => { \r\n const unlisten = history.listen(() => {\r\n window.scrollTo(0, 0); // Scroll to the top of the page\r\n });\r\n return () => {\r\n unlisten(); // Clean up the listener when the component unmounts\r\n };\r\n }, [history]);\r\n\r\n return null; // This component doesn't render anything\r\n}\r\n\r\nexport default ScrollToTopOnRouteChange;","import api from \"../../assets/common/api/api\";\r\nimport { setLoading } from \"../loading/setLoading\";\r\nexport const GET_STUDY_DATA = \"GET_STUDY_DATA\";\r\n\r\nlet getStudyData = () => async (dispatch, getState) => {\r\n setLoading(true);\r\n const response = await api.get(`/study/GetStudyData`);\r\n if (response.status === 200) {\r\n setLoading(false);\r\n dispatch({ type: GET_STUDY_DATA, payload: response.data });\r\n }\r\n};\r\n\r\nexport default getStudyData;\r\n","import React, { Component, lazy } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Helmet, HelmetProvider } from \"react-helmet-async\";\r\nimport { ToastContainer } from \"react-toastify\";\r\nimport \"react-toastify/dist/ReactToastify.css\";\r\n\r\nimport CustomRouter from \"../../assets/common/custom/customRouter\";\r\nimport history from \"../../assets/common/custom/history\";\r\nimport Loading from \"../content/loading\";\r\nimport ScrollToTopOnRouteChange from \"../../assets/common/custom/scrollToTopOnRouteChange\";\r\n\r\nimport getStudyData from \"../../actions/study/getStudyData\";\r\n\r\nconst PregnantTheme = lazy(() => import(\"./pregnantTheme\"));\r\nconst DefaultTheme = lazy(() => import(\"./defaultTheme\"));\r\nconst ReportFormsTheme = lazy(() => import(\"./reportFormsTheme\"));\r\n\r\nclass App extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n componentDidMount() {\r\n this.props.getStudyData();\r\n }\r\n\r\n switchThemes() {\r\n switch (window.flim_config.appStudyName) {\r\n case \"pregnant\": {\r\n return ;\r\n }\r\n case \"reportforms\": {\r\n return ;\r\n }\r\n default: {\r\n return ;\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.studyName}\r\n \r\n {this.switchThemes()}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\nconst mapStateToProps = (state) => {\r\n return {\r\n studyName: state.study.Name,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, { getStudyData })(App);\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import { enableES5, produce } from \"immer\";\r\nimport _ from \"lodash\";\r\nimport { GET_STUDY_DATA } from \"../actions/study/getStudyData\";\r\nimport { CHANGE_WEBSITE_CONTENT } from \"../actions/study/changeWebSiteContent\";\r\n\r\nimport { default_culture } from \"../assets/localization/resources\";\r\n\r\nconst initState = {\r\n Culture: default_culture,\r\n};\r\nenableES5();\r\nexport default produce((draft, action) => {\r\n switch (action.type) {\r\n case GET_STUDY_DATA: {\r\n return action.payload;\r\n }\r\n case CHANGE_WEBSITE_CONTENT: {\r\n let websiteContentItem = draft.WebSiteContent.find((x) => x.ID === action.payload.ID);\r\n\r\n if (!_.isEmpty(websiteContentItem)) {\r\n websiteContentItem.Value = action.payload.Value;\r\n }\r\n return;\r\n }\r\n\r\n default:\r\n return;\r\n }\r\n}, initState);\r\n","import { LOGIN_SUCCESS, LOGIN_FAILURE } from \"../actions/authentication/authenticate\";\r\nimport { LOGOUT } from \"../actions/authentication/logout\";\r\nimport { ON_COUNT_DOWN_FINISH } from \"../actions/authentication/onCountdownFinish\";\r\n\r\nlet user = JSON.parse(localStorage.getItem(\"user\"));\r\nconst initialState = user\r\n ? { loggedIn: true, user, message: \"\", lockoutSecondsRemaining: 0 }\r\n : { loggedIn: false, user: null, message: \"\", lockoutSecondsRemaining: 0 };\r\n\r\nexport function authentication(state = initialState, action) {\r\n switch (action.type) {\r\n case LOGIN_SUCCESS:\r\n return { ...state, message: \"success\", loggedIn: true, user: action.payload.User };\r\n case LOGOUT:\r\n case LOGIN_FAILURE: {\r\n let { message, lockoutSecondsRemaining } = action.payload;\r\n return {\r\n ...state,\r\n loggedIn: false,\r\n user: null,\r\n message: message ?? \"\",\r\n lockoutSecondsRemaining: lockoutSecondsRemaining ?? 0,\r\n };\r\n }\r\n\r\n case ON_COUNT_DOWN_FINISH: {\r\n return {\r\n ...state,\r\n message: \"\",\r\n lockoutSecondsRemaining: 0,\r\n };\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default function (state = null, action) {\r\n switch (action.type) {\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return action.payload;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { FETCH_TOP_SECTIONS_LIST } from \"../../actions/userQuestionnaire/pageMenuNav\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default (state = [], action) => {\r\n switch (action.type) {\r\n case FETCH_TOP_SECTIONS_LIST:\r\n return JSON.parse(action.payload);\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return [];\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { FETCH_PAGE } from \"../../actions/userQuestionnaire/selectPage\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_PAGE:\r\n return {\r\n id: action.payload.data.pageTemplate.ID,\r\n sortOrder: action.payload.sortOrder,\r\n pageType: action.payload.data.pageTemplate.SectionDTO.PageType,\r\n };\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { FETCH_PAGE } from \"../../actions/userQuestionnaire/selectPage\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_PAGE:\r\n return action.payload.data.pageTemplate;\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { SET_CULTURE_CODE } from \"../../actions/userQuestionnaire/setCultureCode\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default function (state = null, action) {\r\n switch (action.type) {\r\n case SET_CULTURE_CODE:\r\n return action.payload;\r\n case SET_USER_QUESTIONNAIRE_ID: {\r\n return null;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { SET_LAST_OPENED_PAGE_ID } from \"../../actions/userQuestionnaire/setLastOpenedPageId\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default function (state = null, action) {\r\n switch (action.type) {\r\n case SET_LAST_OPENED_PAGE_ID:\r\n return action.payload;\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { SET_CURRENT_DATE } from \"../../actions/userQuestionnaire/setCurrentDate\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default function (state = null, action) {\r\n switch (action.type) {\r\n case SET_CURRENT_DATE:\r\n return action.payload;\r\n case SET_USER_QUESTIONNAIRE_ID: {\r\n return null;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { SET_CATEGORIES_MAP } from \"../../actions/userQuestionnaire/setCategoriesMap\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default function (state = null, action) {\r\n switch (action.type) {\r\n case SET_CATEGORIES_MAP:\r\n return JSON.parse(action.payload);\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import _ from \"lodash\";\r\n\r\nconst setCategoriesToDefaultValue = (draftState, categoryValues, sectionId) => {\r\n _.forEach(categoryValues, (item) => {\r\n let founded = _.find(draftState, (x) => {\r\n return (\r\n x.CategoryID === item.CategoryID && x.CategoryValueID === item.CategoryValueID && x.SectionID === sectionId\r\n );\r\n });\r\n if (founded) {\r\n if (founded.CategoryValueID === item.DefaultCategoryValueID) draftState.splice(draftState.indexOf(founded), 1);\r\n else {\r\n founded.Value = item.DefaultValue;\r\n founded.CategoryValueID = item.DefaultCategoryValueID;\r\n founded.SetAsDefault = true;\r\n }\r\n }\r\n });\r\n};\r\n\r\nconst textCategoriesHandleStateExport = {\r\n add_categories: (draftState, categoryValues, sectionId, sectionSortOrder) => {\r\n _.forEach(categoryValues, (item) => {\r\n let founded = _.find(draftState, (x) => {\r\n return x.CategoryID === item.CategoryID && x.SectionID === sectionId;\r\n });\r\n if (!founded) {\r\n let newItem = { ...item };\r\n newItem[\"SectionID\"] = sectionId;\r\n newItem[\"SectionSortOrder\"] = sectionSortOrder;\r\n draftState.push(newItem);\r\n } else {\r\n founded.CategoryValueID = item.CategoryValueID;\r\n founded.Value = item.Value;\r\n founded.SetAsDefault = false;\r\n }\r\n });\r\n },\r\n delete_categories: (draftState, categoryValues, sectionId) => {\r\n _.forEach(categoryValues, (item) => {\r\n const index = draftState.findIndex((x) => x.CategoryID === item.CategoryID && x.SectionID === sectionId);\r\n if (index !== -1) draftState.splice(index, 1);\r\n });\r\n },\r\n set_options_categories_to_default_value: (draftState, options, answers, sectionId) => {\r\n let optionIds = answers ? Object.keys(answers) : null;\r\n _.forEach(options, (option) => {\r\n if (optionIds.includes(option.ID) && option.CategoryValues.length > 0) {\r\n setCategoriesToDefaultValue(draftState, option.CategoryValues, sectionId);\r\n }\r\n });\r\n },\r\n set_option_categories_to_default_value: (draftState, categoryValues, sectionId) => {\r\n setCategoriesToDefaultValue(draftState, categoryValues, sectionId);\r\n },\r\n set_not_relevant_categories_to_default_value: (draftState, notRelevantCategories) => {\r\n _.forEach(notRelevantCategories, (category) => {\r\n let founded = _.find(draftState, (x) => {\r\n return (\r\n x.CategoryID === category.CategoryID &&\r\n x.CategoryValueID === category.CategoryValueID &&\r\n x.SectionID === category.SectionID\r\n );\r\n });\r\n if (founded) {\r\n draftState.splice(draftState.indexOf(founded), 1);\r\n }\r\n });\r\n },\r\n};\r\n\r\nexport default textCategoriesHandleStateExport;\r\n","import _ from \"lodash\";\r\nimport { SET_TEXT_CATEGORIES } from \"../../actions/userQuestionnaire/setTextCategories\";\r\nimport {\r\n SET_PREVIOUS_SELECTED_CATEGORIES_TO_DEFAULT_VALUE,\r\n ADD_OPTION_CATEGORIES,\r\n SET_OPTION_CATEGORIES_TO_DEFAULT_VALUE,\r\n} from \"../../actions/userQuestionnaire/categories/onTextCategoriesChange\";\r\nimport { SET_TEXT_CATEGORIES_TO_DEFAULT_VALUE } from \"../../actions/userQuestionnaire/categories/setTextCategoriesToDefaultValue\";\r\nimport { MODIFY_CASCADING_DRUG_CATEGORY_VALUES } from \"../../actions/userQuestionnaire/categories/modifyCascadingDrugCategoryValues\";\r\nimport { REMOVE_CATEGORIES_FROM_NOT_VISIBLE_PAGES } from \"../../actions/userQuestionnaire/categories/removeCategoriesFromNotVisiblePages\";\r\nimport { RESET_TEXT_CATEGORIES } from \"../../actions/userQuestionnaire/categories/resetTextCategories\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nimport handleCategoryChange from \"../../assets/questionnaire/handleStateFunctions/textCategories\";\r\nimport { enableES5, produce } from \"immer\";\r\n\r\nconst initState = [];\r\nenableES5();\r\nexport default produce((draft, action) => {\r\n switch (action.type) {\r\n case SET_TEXT_CATEGORIES: {\r\n if (!action.payload) return [];\r\n return JSON.parse(action.payload);\r\n }\r\n case SET_PREVIOUS_SELECTED_CATEGORIES_TO_DEFAULT_VALUE: {\r\n let { sectionId, options, answers } = action.payload;\r\n handleCategoryChange.set_options_categories_to_default_value(draft, options, answers, sectionId);\r\n return;\r\n }\r\n case ADD_OPTION_CATEGORIES: {\r\n let { selectedOption, sectionId, sectionSortOrder } = action.payload;\r\n handleCategoryChange.add_categories(draft, selectedOption.CategoryValues, sectionId, sectionSortOrder);\r\n return;\r\n }\r\n\r\n case SET_OPTION_CATEGORIES_TO_DEFAULT_VALUE: {\r\n let { selectedOption, sectionId } = action.payload;\r\n\r\n handleCategoryChange.set_option_categories_to_default_value(draft, selectedOption.CategoryValues, sectionId);\r\n return;\r\n }\r\n case SET_TEXT_CATEGORIES_TO_DEFAULT_VALUE: {\r\n let { options, answers, sectionId } = action.payload;\r\n handleCategoryChange.set_options_categories_to_default_value(draft, options, answers, sectionId);\r\n\r\n return;\r\n }\r\n\r\n case MODIFY_CASCADING_DRUG_CATEGORY_VALUES: {\r\n let { previousAnswer, newAnswer, selectedPage, zIndexCategories } = action.payload;\r\n if (\r\n previousAnswer &&\r\n previousAnswer.AnswerValue.categoryValues &&\r\n previousAnswer.AnswerValue.categoryValues.length > 0\r\n ) {\r\n const catgoriesName = _.map(previousAnswer.AnswerValue.categoryValues, (category) => {\r\n return category.CategoryName;\r\n });\r\n const avalableZIndexCategories = _.filter(zIndexCategories, (category) => {\r\n return catgoriesName.includes(category.CategoryName);\r\n });\r\n\r\n handleCategoryChange.delete_categories(draft, avalableZIndexCategories, selectedPage.id);\r\n }\r\n if (newAnswer && newAnswer.categoryValues && newAnswer.categoryValues.length > 0) {\r\n const catgoriesName = _.map(newAnswer.categoryValues, (category) => {\r\n return category.CategoryName;\r\n });\r\n const avalableZIndexCategories = _.filter(zIndexCategories, (category) => {\r\n return catgoriesName.includes(category.CategoryName);\r\n });\r\n handleCategoryChange.add_categories(draft, avalableZIndexCategories, selectedPage.id, selectedPage.sortOrder);\r\n }\r\n\r\n return;\r\n }\r\n case REMOVE_CATEGORIES_FROM_NOT_VISIBLE_PAGES: {\r\n let { notRelevantCategories } = action.payload;\r\n handleCategoryChange.set_not_relevant_categories_to_default_value(draft, notRelevantCategories);\r\n return;\r\n }\r\n case RESET_TEXT_CATEGORIES: {\r\n let { categoriesValues, selectedPage } = action.payload;\r\n handleCategoryChange.set_option_categories_to_default_value(draft, categoriesValues, selectedPage.id);\r\n return;\r\n }\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return initState;\r\n }\r\n}, initState);\r\n","import _ from \"lodash\";\r\nimport { getSectionCategories } from \"../containers/categoryConditionContainer\";\r\nimport { CategoryChangeValue } from \"../Enums\";\r\n\r\nconst totalCountCategoryName = \".TotalRepeatCount\";\r\nconst currentCountCategoryName = \".CurrentRepeatCount\";\r\nconst archivedCountCategoryName = \".ArchivedRepeatCount\";\r\n\r\nconst findCategoryInPreviousPages = (numericCategories, sectionCategory, pageId) => {\r\n return _.find(numericCategories, (category) => {\r\n return category.CategoryID === sectionCategory.CategoryID && category.SectionID !== pageId;\r\n });\r\n};\r\nconst findCategoryInCurrentPage = (numericCategories, sectionCategory, pageId) => {\r\n return _.find(numericCategories, (category) => {\r\n return category.CategoryID === sectionCategory.CategoryID && category.SectionID === pageId;\r\n });\r\n};\r\nconst findSectionCategory = (categories, name) => {\r\n return _.find(categories, (category) => {\r\n return _.endsWith(_.toLower(category.CategoryName), _.toLower(name));\r\n });\r\n};\r\nconst changeCategoryNumericValue = (numericValue, changeValue) => {\r\n switch (changeValue) {\r\n case CategoryChangeValue.Increase:\r\n numericValue = numericValue + 1;\r\n break;\r\n case CategoryChangeValue.Decrease:\r\n numericValue = numericValue - 1;\r\n break;\r\n }\r\n return numericValue;\r\n};\r\nconst createNewCategory = (sectionCategory, sectionId, sectionSortOrder, numericValue) => {\r\n let category = { ...sectionCategory };\r\n category.NumericValue = numericValue;\r\n category[\"SectionID\"] = sectionId;\r\n category[\"SectionSortOrder\"] = sectionSortOrder;\r\n return category;\r\n};\r\n\r\nconst addOrUpdateCategory = (\r\n draftState,\r\n sectionCategory,\r\n pageId,\r\n pageSortOrder,\r\n changeValue,\r\n numericCategories,\r\n shouldNotCheckPrevious\r\n) => {\r\n let currentCategory = findCategoryInCurrentPage(numericCategories, sectionCategory, pageId);\r\n if (currentCategory) {\r\n currentCategory.NumericValue = changeCategoryNumericValue(currentCategory.NumericValue, changeValue);\r\n } else {\r\n let previousCategory = shouldNotCheckPrevious\r\n ? null\r\n : findCategoryInPreviousPages(numericCategories, sectionCategory, pageId);\r\n draftState.push(\r\n createNewCategory(\r\n sectionCategory,\r\n pageId,\r\n pageSortOrder,\r\n previousCategory\r\n ? changeCategoryNumericValue(previousCategory.NumericValue, changeValue)\r\n : changeCategoryNumericValue(0, changeValue)\r\n )\r\n );\r\n }\r\n};\r\n\r\nconst numericCategoriesExport = {\r\n add_categories: (draftState, sectionCategories, pageId, pageSortOrder, shouldNotCheckPrevious) => {\r\n let currentSectionCount = findSectionCategory(sectionCategories, currentCountCategoryName);\r\n let totalSectionCount = findSectionCategory(sectionCategories, totalCountCategoryName);\r\n let archivedSectionCount = findSectionCategory(sectionCategories, archivedCountCategoryName);\r\n\r\n let numericCategories = getSectionCategories(draftState, pageSortOrder);\r\n\r\n addOrUpdateCategory(\r\n draftState,\r\n currentSectionCount,\r\n pageId,\r\n pageSortOrder,\r\n CategoryChangeValue.Increase,\r\n numericCategories,\r\n shouldNotCheckPrevious\r\n );\r\n addOrUpdateCategory(\r\n draftState,\r\n totalSectionCount,\r\n pageId,\r\n pageSortOrder,\r\n CategoryChangeValue.Increase,\r\n numericCategories,\r\n shouldNotCheckPrevious\r\n );\r\n addOrUpdateCategory(\r\n draftState,\r\n archivedSectionCount,\r\n pageId,\r\n pageSortOrder,\r\n null,\r\n numericCategories,\r\n shouldNotCheckPrevious\r\n );\r\n },\r\n update_category: (draftState, sectionCategories, pageId, pageSortOrder, isArchived) => {\r\n let currentSectionCount = findSectionCategory(sectionCategories, currentCountCategoryName);\r\n let totalSectionCount = findSectionCategory(sectionCategories, totalCountCategoryName);\r\n let archivedSectionCount = findSectionCategory(sectionCategories, archivedCountCategoryName);\r\n\r\n let numericCategories = getSectionCategories(draftState, pageSortOrder);\r\n\r\n if (isArchived) {\r\n addOrUpdateCategory(\r\n draftState,\r\n archivedSectionCount,\r\n pageId,\r\n pageSortOrder,\r\n CategoryChangeValue.Decrease,\r\n numericCategories\r\n );\r\n } else {\r\n addOrUpdateCategory(\r\n draftState,\r\n currentSectionCount,\r\n pageId,\r\n pageSortOrder,\r\n CategoryChangeValue.Decrease,\r\n numericCategories\r\n );\r\n }\r\n\r\n addOrUpdateCategory(\r\n draftState,\r\n totalSectionCount,\r\n pageId,\r\n pageSortOrder,\r\n CategoryChangeValue.Decrease,\r\n numericCategories\r\n );\r\n },\r\n set_repeat_archived: (draftState, sectionCategories, pageId, pageSortOrder) => {\r\n let currentSectionCount = findSectionCategory(sectionCategories, currentCountCategoryName);\r\n let archivedSectionCount = findSectionCategory(sectionCategories, archivedCountCategoryName);\r\n let totalSectionCount = findSectionCategory(sectionCategories, totalCountCategoryName);\r\n\r\n if (currentSectionCount && archivedSectionCount && totalSectionCount) {\r\n let numericCategories = getSectionCategories(draftState, pageSortOrder);\r\n\r\n addOrUpdateCategory(\r\n draftState,\r\n archivedSectionCount,\r\n pageId,\r\n pageSortOrder,\r\n CategoryChangeValue.Increase,\r\n numericCategories\r\n );\r\n addOrUpdateCategory(\r\n draftState,\r\n currentSectionCount,\r\n pageId,\r\n pageSortOrder,\r\n CategoryChangeValue.Decrease,\r\n numericCategories\r\n );\r\n addOrUpdateCategory(draftState, totalSectionCount, pageId, pageSortOrder, null, numericCategories);\r\n }\r\n },\r\n remove_repeat_archived: (draftState, sectionCategories, pageId, pageSortOrder) => {\r\n let currentSectionCount = findSectionCategory(sectionCategories, currentCountCategoryName);\r\n let archivedSectionCount = findSectionCategory(sectionCategories, archivedCountCategoryName);\r\n let totalSectionCount = findSectionCategory(sectionCategories, totalCountCategoryName);\r\n\r\n if (currentSectionCount && archivedSectionCount && totalSectionCount) {\r\n let numericCategories = getSectionCategories(draftState, pageSortOrder);\r\n\r\n addOrUpdateCategory(\r\n draftState,\r\n archivedSectionCount,\r\n pageId,\r\n pageSortOrder,\r\n CategoryChangeValue.Decrease,\r\n numericCategories\r\n );\r\n addOrUpdateCategory(\r\n draftState,\r\n currentSectionCount,\r\n pageId,\r\n pageSortOrder,\r\n CategoryChangeValue.Increase,\r\n numericCategories\r\n );\r\n addOrUpdateCategory(draftState, totalSectionCount, pageId, pageSortOrder, null, numericCategories);\r\n }\r\n },\r\n remove_added_numeric_categories: (draftState, sectionCategories, pageId) => {\r\n let currentSectionCount = findSectionCategory(sectionCategories, currentCountCategoryName);\r\n let archivedSectionCount = findSectionCategory(sectionCategories, archivedCountCategoryName);\r\n let totalSectionCount = findSectionCategory(sectionCategories, totalCountCategoryName);\r\n\r\n if (currentSectionCount && archivedSectionCount && totalSectionCount) {\r\n let currentCategory = findCategoryInCurrentPage(draftState, currentSectionCount, pageId);\r\n if (currentCategory) _.pull(draftState, currentCategory);\r\n\r\n let archivedCategory = findCategoryInCurrentPage(draftState, archivedSectionCount, pageId);\r\n if (archivedCategory) _.pull(draftState, archivedCategory);\r\n\r\n let totalCategory = findCategoryInCurrentPage(draftState, totalSectionCount, pageId);\r\n if (totalCategory) _.pull(draftState, totalCategory);\r\n }\r\n },\r\n};\r\n\r\nexport default numericCategoriesExport;\r\n","import _ from \"lodash\";\r\nimport { enableES5, produce } from \"immer\";\r\n\r\nimport { SET_NUMERIC_CATEGORIES } from \"../../actions/userQuestionnaire/setNumericCategories\";\r\nimport { ADD_REPEAT } from \"../../actions/section/addRepeat\";\r\nimport { DELETE_REPEAT } from \"../../actions/section/deleteRepeat\";\r\nimport { MODIFY_MULTIPLE_CHOICE_OPTION } from \"../../actions/question/modifyMultipleChoiceOption\";\r\nimport { MODIFY_MULTIPLE_CHOICE_ANSWERS } from \"../../actions/question/modifyMultipleChoiceAnswers\";\r\nimport { SHOW_OR_HIDE_SECTION } from \"../../actions/section/showOrHideSection\";\r\nimport { ON_INIT_REPEAT_SECTION } from \"../../actions/userQuestionnaire/categories/onInitRepeatedSection\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nimport { getRepeatedSection } from \"../../assets/questionnaire/Utils/questionComponentUtil\";\r\nimport handleCategoryChange from \"../../assets/questionnaire/handleStateFunctions/numericCategories\";\r\n\r\nconst initState = [];\r\nenableES5();\r\nexport default produce((draft, action) => {\r\n switch (action.type) {\r\n case SET_NUMERIC_CATEGORIES: {\r\n if (!action.payload) return [];\r\n return JSON.parse(action.payload);\r\n }\r\n case ADD_REPEAT: {\r\n let { section, selectedPage } = action.payload;\r\n handleCategoryChange.add_categories(\r\n draft,\r\n section.SectionDTO.CategoryValues,\r\n selectedPage.id,\r\n selectedPage.sortOrder\r\n );\r\n return;\r\n }\r\n case DELETE_REPEAT: {\r\n let { section, isArchived, selectedPage } = action.payload;\r\n handleCategoryChange.update_category(\r\n draft,\r\n section.SectionDTO.CategoryValues,\r\n selectedPage.id,\r\n selectedPage.sortOrder,\r\n isArchived\r\n );\r\n return;\r\n }\r\n case MODIFY_MULTIPLE_CHOICE_OPTION:\r\n case MODIFY_MULTIPLE_CHOICE_ANSWERS: {\r\n let { section, archived, selectedPage, previousArchivedValue, parentSection } = action.payload;\r\n let sectionToCalculate = getRepeatedSection(section, parentSection);\r\n\r\n if (sectionToCalculate && sectionToCalculate.SectionDTO.Repeated) {\r\n if (!previousArchivedValue && archived == true)\r\n handleCategoryChange.set_repeat_archived(\r\n draft,\r\n sectionToCalculate.SectionDTO.CategoryValues,\r\n selectedPage.id,\r\n selectedPage.sortOrder\r\n );\r\n if (previousArchivedValue && archived == false) {\r\n handleCategoryChange.remove_repeat_archived(\r\n draft,\r\n sectionToCalculate.SectionDTO.CategoryValues,\r\n selectedPage.id,\r\n selectedPage.sortOrder\r\n );\r\n }\r\n }\r\n return;\r\n }\r\n case SHOW_OR_HIDE_SECTION: {\r\n let { section, selectedPage, visible } = action.payload;\r\n\r\n if (section.SectionDTO.Repeated) {\r\n if (!visible) {\r\n handleCategoryChange.remove_added_numeric_categories(\r\n draft,\r\n section.SectionDTO.CategoryValues,\r\n selectedPage.id\r\n );\r\n } else {\r\n let sectionCategory = _.find(draft, (category) => {\r\n return _.startsWith(category.CategoryName, section.ReferenceName) && category.SectionID == selectedPage.id;\r\n });\r\n if (!sectionCategory) {\r\n _.times(section.SectionDTO.InitialNumberOfRepeats, (inx) => {\r\n handleCategoryChange.add_categories(\r\n draft,\r\n section.SectionDTO.CategoryValues,\r\n selectedPage.id,\r\n selectedPage.sortOrder\r\n );\r\n });\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n case ON_INIT_REPEAT_SECTION: {\r\n let { section, selectedPage, repeats, previousMCAnswers } = action.payload;\r\n let sectionCategory = _.find(draft, (category) => {\r\n return (\r\n _.startsWith(_.toLower(category.CategoryName), _.toLower(section.SectionDTO.ReferenceName)) &&\r\n category.SectionID == selectedPage.id\r\n );\r\n });\r\n if (!_.isEmpty(repeats) && !sectionCategory) {\r\n let numberOfRepeats = Object.keys(repeats).length;\r\n if (section.SectionDTO.NumericQuestionRepeatID && !_.isEmpty(previousMCAnswers)) {\r\n let answer = previousMCAnswers[section.SectionDTO.NumericQuestionRepeatID];\r\n if (answer) numberOfRepeats = parseInt(answer);\r\n }\r\n //add numeric categories based on repeats\r\n _.times(numberOfRepeats, (inx) => {\r\n handleCategoryChange.add_categories(\r\n draft,\r\n section.SectionDTO.CategoryValues,\r\n selectedPage.id,\r\n selectedPage.sortOrder,\r\n section.SectionDTO.NumericQuestionRepeatID && !_.isEmpty(previousMCAnswers)\r\n );\r\n });\r\n\r\n //check how many repeats are arhived and set correct value to arhived numeric category\r\n let archivedRepeats = _.filter(Object.values(repeats), (x) => {\r\n return x.archived == true;\r\n });\r\n if (archivedRepeats.length > 0) {\r\n _.times(archivedRepeats.length, (inx) => {\r\n handleCategoryChange.set_repeat_archived(\r\n draft,\r\n section.SectionDTO.CategoryValues,\r\n selectedPage.id,\r\n selectedPage.sortOrder\r\n );\r\n });\r\n }\r\n } else if (!_.isEmpty(repeats) && section.SectionDTO.NumericQuestionRepeatID && !_.isEmpty(previousMCAnswers)) {\r\n let answer = previousMCAnswers[section.SectionDTO.NumericQuestionRepeatID];\r\n //check if some repeat is arhived, if yes then answers were added, do not change categories\r\n let arhivedRepeats = _.filter(repeats, (r) => {\r\n return r.archived == true;\r\n });\r\n\r\n if (answer && arhivedRepeats.length == 0) {\r\n handleCategoryChange.remove_added_numeric_categories(\r\n draft,\r\n section.SectionDTO.CategoryValues,\r\n selectedPage.id\r\n );\r\n let numberOfRepeats = parseInt(answer);\r\n _.times(numberOfRepeats, (inx) => {\r\n handleCategoryChange.add_categories(\r\n draft,\r\n section.SectionDTO.CategoryValues,\r\n selectedPage.id,\r\n selectedPage.sortOrder,\r\n true\r\n );\r\n });\r\n }\r\n } else if (\r\n !_.isEmpty(repeats) &&\r\n sectionCategory &&\r\n section.SectionDTO.InitialNumberOfRepeats > 0 &&\r\n section.SectionDTO.NumericQuestionRepeatID == null\r\n ) {\r\n let sectionCategories = _.filter(draft, (category) => {\r\n return (\r\n _.startsWith(_.toLower(category.CategoryName), _.toLower(section.SectionDTO.ReferenceName)) &&\r\n category.SectionID == selectedPage.id &&\r\n category.NumericValue == 0\r\n );\r\n });\r\n if (sectionCategories.length == 3) {\r\n _.times(section.SectionDTO.InitialNumberOfRepeats, (inx) => {\r\n handleCategoryChange.add_categories(\r\n draft,\r\n section.SectionDTO.CategoryValues,\r\n selectedPage.id,\r\n selectedPage.sortOrder,\r\n section.SectionDTO.NumericQuestionRepeatID && !_.isEmpty(previousMCAnswers)\r\n );\r\n });\r\n }\r\n }\r\n return;\r\n }\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return initState;\r\n }\r\n}, initState);\r\n","import _ from \"lodash\";\r\nimport { evaluateCondition, evaluateConditions } from \"../containers/categoryConditionContainer\";\r\n\r\nconst defineCondition = (\r\n draftState,\r\n sectionId,\r\n categoryCondition,\r\n categoryOperator,\r\n negate,\r\n isFirstSet,\r\n textCategories,\r\n numericCategories\r\n) => {\r\n if (!draftState[sectionId].categories[categoryCondition.CategoryID])\r\n draftState[sectionId].categories[categoryCondition.CategoryID] = [];\r\n\r\n draftState[sectionId].categories[categoryCondition.CategoryID].push({\r\n condition: { categoryOperator, categoryCondition, negate },\r\n isFirstSet,\r\n evaluated: evaluateCondition(categoryCondition, categoryOperator, negate, textCategories, numericCategories),\r\n });\r\n};\r\n\r\nconst sectionCategoriesHandleState = {\r\n add_category_condition: (draftState, sectionId, condition, isFirstSet, textCategories, numericCategories) => {\r\n if (!_.isEmpty(condition.CategoryValue1.Value)) {\r\n defineCondition(\r\n draftState,\r\n sectionId,\r\n condition.CategoryValue1,\r\n condition.CategoryOperator1,\r\n condition.Negate1,\r\n isFirstSet,\r\n textCategories,\r\n numericCategories\r\n );\r\n }\r\n\r\n if (!_.isEmpty(condition.CategoryValue2.Value)) {\r\n defineCondition(\r\n draftState,\r\n sectionId,\r\n condition.CategoryValue2,\r\n condition.CategoryOperator2,\r\n condition.Negate2,\r\n isFirstSet,\r\n textCategories,\r\n numericCategories\r\n );\r\n }\r\n\r\n if (!_.isEmpty(condition.CategoryValue3.Value)) {\r\n defineCondition(\r\n draftState,\r\n sectionId,\r\n condition.CategoryValue3,\r\n condition.CategoryOperator3,\r\n condition.Negate3,\r\n isFirstSet,\r\n textCategories,\r\n numericCategories\r\n );\r\n }\r\n if (!_.isEmpty(condition.CategoryValue4.Value)) {\r\n defineCondition(\r\n draftState,\r\n sectionId,\r\n condition.CategoryValue4,\r\n condition.CategoryOperator4,\r\n condition.Negate4,\r\n isFirstSet,\r\n textCategories,\r\n numericCategories\r\n );\r\n }\r\n },\r\n calculate_section_condition: (draftState, sectionId, textCategories, numericCategories) => {\r\n if (!_.isEmpty(draftState[sectionId].categories)) {\r\n _.forEach(Object.keys(draftState[sectionId].categories), (categoryId) => {\r\n for (let i = 0; i < draftState[sectionId].categories[categoryId].length; i++) {\r\n draftState[sectionId].categories[categoryId][i].evaluated = evaluateCondition(\r\n draftState[sectionId].categories[categoryId][i].condition.categoryCondition,\r\n draftState[sectionId].categories[categoryId][i].condition.categoryOperator,\r\n draftState[sectionId].categories[categoryId][i].condition.negate,\r\n textCategories,\r\n numericCategories\r\n );\r\n }\r\n });\r\n draftState[sectionId].visible = evaluateConditions(draftState[sectionId]);\r\n }\r\n },\r\n calculate_condition: (draftState, sections, sortOrder, categoryID, textCategories, numericCategories) => {\r\n for (let section of sections) {\r\n if (draftState[section]) {\r\n let sectionSortOrder = draftState[section].sortOrder;\r\n if (draftState[section] && sectionSortOrder > sortOrder && draftState[section].categories[categoryID]) {\r\n for (let i = 0; i < draftState[section].categories[categoryID].length; i++) {\r\n draftState[section].categories[categoryID][i].evaluated = evaluateCondition(\r\n draftState[section].categories[categoryID][i].condition.categoryCondition,\r\n draftState[section].categories[categoryID][i].condition.categoryOperator,\r\n draftState[section].categories[categoryID][i].condition.negate,\r\n textCategories,\r\n numericCategories\r\n );\r\n }\r\n\r\n draftState[section].visible = evaluateConditions(draftState[section]);\r\n }\r\n }\r\n }\r\n },\r\n calculate_condition_not_relevant_categories: (draftState, sections, sortOrder, categoryID) => {\r\n for (let section of sections) {\r\n if (draftState[section]) {\r\n let sectionSortOrder = draftState[section].sortOrder;\r\n if (draftState[section] && sectionSortOrder > sortOrder && draftState[section].categories[categoryID]) {\r\n for (let i = 0; i < draftState[section].categories[categoryID].length; i++) {\r\n draftState[section].categories[categoryID][i].evaluated = false;\r\n }\r\n\r\n draftState[section].visible = evaluateConditions(draftState[section]);\r\n }\r\n }\r\n }\r\n },\r\n};\r\n\r\nexport default sectionCategoriesHandleState;\r\n","import { enableES5, produce } from \"immer\";\r\nimport _ from \"lodash\";\r\n\r\nimport handleSectionCategories from \"../../assets/questionnaire/handleStateFunctions/sectionCategories\";\r\nimport {\r\n evaluateConditions,\r\n getSectionCategories,\r\n} from \"../../assets/questionnaire/containers/categoryConditionContainer\";\r\nimport { INIT_CONDITIONAL_SECTION } from \"../../actions/userQuestionnaire/categories/initConditionalSection\";\r\nimport { CALCULATE_SECTION_VISIBILITY } from \"../../actions/userQuestionnaire/categories/calculateSectionVisibility\";\r\nimport { SET_SECTIONS_CONDITIONS } from \"../../actions/userQuestionnaire/categories/setSectionsConditions\";\r\nimport { CALCULATE_VISIBILITY_WITH_NOT_RELEVANT_CATEGORIES } from \"../../actions/userQuestionnaire/categories/calculateVisibilityWithNotRelevantCategories\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\nimport { CategoryOperator } from \"../../assets/questionnaire/Enums\";\r\n\r\nconst initState = {};\r\nenableES5();\r\nconst defaultData = (sortOrder) => {\r\n return {\r\n categories: {},\r\n properties: {},\r\n visible: true,\r\n sortOrder,\r\n };\r\n};\r\n\r\nexport default produce((draft, action) => {\r\n switch (action.type) {\r\n case INIT_CONDITIONAL_SECTION: {\r\n let {\r\n sectionId,\r\n pageSortOrder,\r\n categoryShowCondition,\r\n secondCategoryShowCondition,\r\n secondCategoryConditionOperator,\r\n textCategories,\r\n numericCategories,\r\n isTopSection,\r\n } = action.payload;\r\n\r\n if (_.isEmpty(categoryShowCondition.CategoryValue1.Value)) {\r\n return;\r\n }\r\n\r\n if (draft[sectionId] && isTopSection) return;\r\n\r\n if (draft[sectionId] && !isTopSection) {\r\n handleSectionCategories.calculate_section_condition(\r\n draft,\r\n sectionId,\r\n getSectionCategories(textCategories, pageSortOrder, CategoryOperator.Smaller),\r\n getSectionCategories(numericCategories, pageSortOrder, CategoryOperator.Smaller)\r\n );\r\n return;\r\n }\r\n\r\n let changedTextCategories = getSectionCategories(textCategories, pageSortOrder);\r\n let changedNumericCategories = getSectionCategories(numericCategories, pageSortOrder);\r\n\r\n draft[sectionId] = defaultData(pageSortOrder);\r\n handleSectionCategories.add_category_condition(\r\n draft,\r\n sectionId,\r\n categoryShowCondition,\r\n true,\r\n changedTextCategories,\r\n changedNumericCategories\r\n );\r\n if (!_.isEmpty(secondCategoryShowCondition) && !_.isEmpty(secondCategoryShowCondition.CategoryValue1.Value)) {\r\n handleSectionCategories.add_category_condition(\r\n draft,\r\n sectionId,\r\n secondCategoryShowCondition,\r\n false,\r\n changedTextCategories,\r\n changedNumericCategories\r\n );\r\n }\r\n draft[sectionId].properties = {\r\n logicalOperator1: categoryShowCondition.LogicalOperator,\r\n logicalOperator2: secondCategoryShowCondition ? secondCategoryShowCondition.LogicalOperator : null,\r\n secondCategoryConditionOperator,\r\n };\r\n\r\n draft[sectionId].visible = evaluateConditions(draft[sectionId]);\r\n return;\r\n }\r\n case CALCULATE_SECTION_VISIBILITY: {\r\n let { changedTextCategories, sortOrder, categoriesMap, changedNumericCategories } = action.payload;\r\n for (let category of changedTextCategories) {\r\n if (categoriesMap[category.CategoryID]) {\r\n let sections = categoriesMap[category.CategoryID];\r\n handleSectionCategories.calculate_condition(\r\n draft,\r\n sections,\r\n sortOrder,\r\n category.CategoryID,\r\n changedTextCategories,\r\n changedNumericCategories\r\n );\r\n }\r\n }\r\n for (let category of changedNumericCategories) {\r\n if (categoriesMap[category.CategoryID]) {\r\n let sections = categoriesMap[category.CategoryID];\r\n handleSectionCategories.calculate_condition(\r\n draft,\r\n sections,\r\n sortOrder,\r\n category.CategoryID,\r\n changedTextCategories,\r\n changedNumericCategories\r\n );\r\n }\r\n }\r\n return;\r\n }\r\n case CALCULATE_VISIBILITY_WITH_NOT_RELEVANT_CATEGORIES: {\r\n let { notRelevantCategories, categoriesMap, sortOrder } = action.payload;\r\n for (let category of notRelevantCategories) {\r\n if (categoriesMap[category.CategoryID]) {\r\n let sections = categoriesMap[category.CategoryID];\r\n handleSectionCategories.calculate_condition_not_relevant_categories(\r\n draft,\r\n sections,\r\n sortOrder,\r\n category.CategoryID\r\n );\r\n }\r\n }\r\n return;\r\n }\r\n case SET_SECTIONS_CONDITIONS: {\r\n return JSON.parse(action.payload);\r\n }\r\n case SET_USER_QUESTIONNAIRE_ID: {\r\n return initState;\r\n }\r\n default:\r\n return;\r\n }\r\n}, initState);\r\n","import { SET_COMPLETED } from \"../../actions/userQuestionnaire/setCompleted\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default function (state = null, action) {\r\n switch (action.type) {\r\n case SET_COMPLETED:\r\n return action.payload;\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { SET_REDIRECTURL } from \"../../actions/userQuestionnaire/setRedirectUrl\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default function (state = null, action) {\r\n switch (action.type) {\r\n case SET_REDIRECTURL:\r\n return action.payload;\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { FETCH_PAGE } from \"../../actions/userQuestionnaire/selectPage\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_PAGE:\r\n return action.payload.data.previousMCQuestionAnswers;\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { FETCH_PAGE } from \"../../actions/userQuestionnaire/selectPage\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_PAGE:\r\n return action.payload.data.previousQuestions;\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { FETCH_PAGE } from \"../../actions/userQuestionnaire/selectPage\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_PAGE:\r\n return action.payload.data.previousSections;\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { FETCH_PAGE } from \"../../actions/userQuestionnaire/selectPage\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_PAGE:\r\n return action.payload.data.questionReferences;\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { SET_QUESTIONNAIRE_NAME } from \"../../actions/userQuestionnaire/setQuestionnaireName\";\r\n\r\nexport default function (state = null, action) {\r\n switch (action.type) {\r\n case SET_QUESTIONNAIRE_NAME:\r\n return action.payload;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import _ from \"lodash\";\r\nimport { enableES5, produce } from \"immer\";\r\n\r\nimport {\r\n checkIfQuestionHasAnswers,\r\n checkIfCascadingQuesitonHasOtherAnswer,\r\n checkcheckIfCascadingQuesitonAllAnswersEmpty,\r\n getHighlightedItemsToRemove,\r\n} from \"../../assets/questionnaire/Utils/questionComponentUtil\";\r\nimport { MODIFY_ANSWERS } from \"../../actions/question/modifyAnswers\";\r\nimport { ADD_MC_HIGHLIGHT_QUESTION } from \"../../actions/question/addMCHighlightQuestion\";\r\nimport { SET_HIGHLIGHTED_PAGES } from \"../../actions/userQuestionnaire/setHighlightedPages\";\r\nimport { SHOW_OR_HIDE_SECTION } from \"../../actions/section/showOrHideSection\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\nimport { ADD_INIT_HIGHLIGHT_QUESTION } from \"../../actions/question/addInitHighlighQuestion\";\r\nimport { DELETE_REPEAT } from \"../../actions/section/deleteRepeat\";\r\n\r\nconst initState = {};\r\nenableES5();\r\nexport default produce((draft, action) => {\r\n switch (action.type) {\r\n case SET_HIGHLIGHTED_PAGES: {\r\n if (!action.payload) return {};\r\n return JSON.parse(action.payload);\r\n }\r\n case ADD_INIT_HIGHLIGHT_QUESTION:\r\n case MODIFY_ANSWERS: {\r\n let { sectionId, repeatId, question, answers, parentRepeatNumber, selectedPage } = action.payload;\r\n let item = `${sectionId}-${parentRepeatNumber == null ? \"null\" : parentRepeatNumber}-${repeatId}-${question.ID}`;\r\n\r\n if (\r\n question.QuestionDTO.QuestionType === \"OpenQuestion\" ||\r\n question.QuestionDTO.QuestionType === \"FileUpload\" ||\r\n question.QuestionDTO.QuestionType === \"CascadingListQuestion\"\r\n ) {\r\n let founded = !draft[selectedPage.id]\r\n ? false\r\n : _.find(draft[selectedPage.id].correction, (x) => {\r\n return x == item;\r\n }) != null;\r\n\r\n let isAnswered = false;\r\n if (question.QuestionDTO.QuestionType !== \"CascadingListQuestion\") isAnswered = checkIfQuestionHasAnswers(answers);\r\n else {\r\n isAnswered = checkIfCascadingQuesitonHasOtherAnswer(answers);\r\n\r\n if (!isAnswered && question.QuestionDTO.ComponentName.toLowerCase().trim() === \"z-index\") {\r\n isAnswered = checkcheckIfCascadingQuesitonAllAnswersEmpty(answers);\r\n }\r\n }\r\n\r\n if (isAnswered && !founded) {\r\n if (!draft[selectedPage.id]) draft[selectedPage.id] = { correction: [], coding: [] };\r\n draft[selectedPage.id].correction.push(item);\r\n }\r\n if (founded && !isAnswered)\r\n draft[selectedPage.id].correction = _.filter(draft[selectedPage.id].correction, (x) => {\r\n return x != item;\r\n });\r\n }\r\n if (!_.isEmpty(question.QuestionDTO.CodeStandard.ID)) {\r\n let founded = !draft[selectedPage.id]\r\n ? false\r\n : _.find(draft[selectedPage.id].coding, (x) => {\r\n return x == item;\r\n }) != null;\r\n let isAnswered = checkIfQuestionHasAnswers(answers);\r\n if (isAnswered && !founded) {\r\n if (!draft[selectedPage.id]) draft[selectedPage.id] = { correction: [], coding: [] };\r\n draft[selectedPage.id].coding.push(item);\r\n }\r\n if (founded && !isAnswered)\r\n draft[selectedPage.id].coding = _.filter(draft[selectedPage.id].coding, (x) => {\r\n return x != item;\r\n });\r\n }\r\n return;\r\n }\r\n case ADD_MC_HIGHLIGHT_QUESTION: {\r\n let { question, questionAnswers, sectionId, repeatId, selectedPage, parentRepeatNumber } = action.payload;\r\n let item = `${sectionId}-${parentRepeatNumber == null ? \"null\" : parentRepeatNumber}-${repeatId}-${question.ID}`;\r\n let optionIds = questionAnswers ? Object.keys(questionAnswers) : null;\r\n\r\n let selectedOptions = _.filter(question.QuestionDTO.AnswerOptions, (x) => {\r\n return (\r\n ((x.ShowQuestionTypeAsAnswerOption && x.AdditionalQuestionType == \"OpenQuestion\") || x.ShowAdditionalTextField) &&\r\n optionIds.includes(x.ID) &&\r\n !x.Exclusive\r\n );\r\n });\r\n let founded = !draft[selectedPage.id]\r\n ? false\r\n : _.find(draft[selectedPage.id].correction, (x) => {\r\n return x == item;\r\n }) != null;\r\n\r\n if (!_.isEmpty(selectedOptions)) {\r\n if (!founded) {\r\n if (!draft[selectedPage.id]) draft[selectedPage.id] = { correction: [], coding: [] };\r\n draft[selectedPage.id].correction.push(item);\r\n }\r\n }\r\n if (founded && _.isEmpty(selectedOptions))\r\n draft[selectedPage.id].correction = _.filter(draft[selectedPage.id].correction, (x) => {\r\n return x != item;\r\n });\r\n\r\n if (!_.isEmpty(question.QuestionDTO.CodeStandard.ID)) {\r\n let founded = !draft[selectedPage.id]\r\n ? false\r\n : _.find(draft[selectedPage.id].coding, (x) => {\r\n return x == item;\r\n }) != null;\r\n\r\n let hasExclusive = _.find(question.QuestionDTO.AnswerOptions, (x) => x.Exclusive && optionIds.includes(x.ID)) != null;\r\n console.log(optionIds);\r\n\r\n if (!_.isEmpty(optionIds) && !hasExclusive) {\r\n if (!founded) {\r\n if (!draft[selectedPage.id]) draft[selectedPage.id] = { correction: [], coding: [] };\r\n draft[selectedPage.id].coding.push(item);\r\n }\r\n }\r\n if (founded && (_.isEmpty(optionIds) || hasExclusive))\r\n draft[selectedPage.id].coding = _.filter(draft[selectedPage.id].coding, (x) => {\r\n return x != item;\r\n });\r\n }\r\n return;\r\n }\r\n case SHOW_OR_HIDE_SECTION: {\r\n let { section, parentRepeatNumber, visible, selectedPage } = action.payload;\r\n //nested repeating todo if needed\r\n if (!visible) {\r\n //if section is hiding\r\n\r\n if (draft[selectedPage.id]) {\r\n let sectionsToRemove = getHighlightedItemsToRemove(section);\r\n _.forEach(sectionsToRemove, (x) => {\r\n let item = `${x}-${parentRepeatNumber == null ? \"null\" : parentRepeatNumber}`;\r\n let itemsToRemoveCorrection = _.filter(draft[selectedPage.id].correction, (y) => {\r\n return _.startsWith(y, item);\r\n });\r\n if (itemsToRemoveCorrection.length > 0) {\r\n draft[selectedPage.id].correction = _.difference(draft[selectedPage.id].correction, itemsToRemoveCorrection);\r\n }\r\n let itemsToRemoveCoding = _.filter(draft[selectedPage.id].coding, (y) => {\r\n return _.startsWith(y, item);\r\n });\r\n if (itemsToRemoveCoding.length > 0) draft[selectedPage.id].coding = _.difference(draft[selectedPage.id].coding, itemsToRemoveCoding);\r\n });\r\n }\r\n }\r\n return;\r\n }\r\n case DELETE_REPEAT: {\r\n let { repeatId, selectedPage } = action.payload;\r\n\r\n if (draft[selectedPage.id]) {\r\n let deletedCorrection = _.filter(draft[selectedPage.id].correction, (x) => {\r\n return _.includes(x, repeatId);\r\n });\r\n if (deletedCorrection.length > 0) {\r\n draft[selectedPage.id].correction = _.difference(draft[selectedPage.id].correction, deletedCorrection);\r\n }\r\n\r\n let deletedCoding = _.filter(draft[selectedPage.id].coding, (x) => {\r\n return _.includes(x, repeatId);\r\n });\r\n\r\n if (deletedCoding.length > 0) draft[selectedPage.id].coding = _.difference(draft[selectedPage.id].coding, deletedCoding);\r\n }\r\n return;\r\n }\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return initState;\r\n default:\r\n return;\r\n }\r\n}, initState);\r\n","import { SET_HONEYPOT } from \"../../actions/userQuestionnaire/setHoneypot\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default function (state = null, action) {\r\n switch (action.type) {\r\n case SET_HONEYPOT:\r\n return action.payload;\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { SET_ZINDEX_CATEGORIES } from \"../../actions/userQuestionnaire/setZIndexCategories\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default function (state = [], action) {\r\n switch (action.type) {\r\n case SET_ZINDEX_CATEGORIES:\r\n return action.payload;\r\n case SET_USER_QUESTIONNAIRE_ID: {\r\n return [];\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { SET_SHOW_PROGRESS_BAR } from \"../../actions/userQuestionnaire/setShowProgressBar\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default function (state = null, action) {\r\n switch (action.type) {\r\n case SET_SHOW_PROGRESS_BAR:\r\n return action.payload;\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return false;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { v4 as uuidv4 } from \"uuid\";\r\nimport _ from \"lodash\";\r\n\r\nimport { defineQuestionsInRepeat } from \"./question\";\r\n\r\nconst defaultSectionRepeatObject = (id) => {\r\n return {\r\n id,\r\n parentRepeatId: null,\r\n number: 0,\r\n repeatable: false,\r\n questions: {},\r\n };\r\n};\r\n\r\nconst sectionRepeatHandleStateExport = {\r\n add: (\r\n draftState,\r\n section,\r\n repeatId,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n number,\r\n repeatable,\r\n previousQuestions,\r\n followup,\r\n cultureCode\r\n ) => {\r\n let sectionId = section.ID;\r\n let sectionsState = draftState[sectionId];\r\n if (!sectionsState) throw new Error(`handleStateFunctions.sectionRepeat.add: state for id:${sectionId} is missing`);\r\n\r\n var repeatsState = sectionsState.repeats;\r\n\r\n if (!repeatsState[repeatId]) {\r\n let questions = defineQuestionsInRepeat(section, number, parentRepeatNumber, previousQuestions, cultureCode);\r\n\r\n let newRepeat = {\r\n ...defaultSectionRepeatObject(repeatId),\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n number,\r\n followup,\r\n repeatable,\r\n questions,\r\n };\r\n\r\n if (repeatable) {\r\n newRepeat = { ...newRepeat, customID: uuidv4(), repeatTransferCount: 1 };\r\n }\r\n\r\n draftState[sectionId].repeats[repeatId] = newRepeat;\r\n }\r\n },\r\n addInitialRepeats: (\r\n draftState,\r\n section,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n previousSections,\r\n previousQuestions,\r\n previousMCAnswers,\r\n followup,\r\n cultureCode\r\n ) => {\r\n let sectionId = section.ID;\r\n let sectionState = draftState[sectionId];\r\n if (!sectionState)\r\n throw new Error(`handleStateFunctions.sectionRepeat.addInitialRepeats: state for id:${sectionId} is missing`);\r\n\r\n let previousRepeats = previousSections ? previousSections[section.SectionDTO.ReferenceName] : null;\r\n if (section.SectionDTO.UsePreviousAnswers && !_.isEmpty(previousRepeats)) {\r\n let repeatable = true;\r\n let repeats = _.filter(previousRepeats, (repeat) => {\r\n return repeat.parentRepeatNumber === parentRepeatNumber;\r\n });\r\n for (let repeat of repeats) {\r\n let { number, archived, archivedInCorrection, archivedPublished } = repeat;\r\n let repeatId = uuidv4();\r\n let questions = defineQuestionsInRepeat(section, number, parentRepeatNumber, previousQuestions, cultureCode);\r\n\r\n let newRepeat = {\r\n ...defaultSectionRepeatObject(repeatId),\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n number,\r\n archived: archivedPublished && archivedInCorrection != null ? archivedInCorrection : archived,\r\n followup: true,\r\n repeatable,\r\n questions,\r\n customID: repeat.customID,\r\n repeatTransferCount: repeat.repeatTransferCount ? repeat.repeatTransferCount + 1 : 1,\r\n };\r\n draftState[sectionId].repeats[repeatId] = newRepeat;\r\n }\r\n } else {\r\n let repeatsState = sectionState.repeats;\r\n if (section.SectionDTO.NumericQuestionRepeatID && !_.isEmpty(previousMCAnswers)) {\r\n let answer = previousMCAnswers[section.SectionDTO.NumericQuestionRepeatID];\r\n if (answer) {\r\n draftState[sectionId].repeats = addManualInitialRepeats(\r\n section,\r\n repeatsState,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n parseInt(answer),\r\n followup,\r\n previousQuestions,\r\n cultureCode\r\n );\r\n draftState[sectionId].repeats = repeatsState;\r\n }\r\n } else {\r\n draftState[sectionId].repeats = addManualInitialRepeats(\r\n section,\r\n repeatsState,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n section.SectionDTO.InitialNumberOfRepeats,\r\n followup,\r\n previousQuestions,\r\n cultureCode\r\n );\r\n draftState[sectionId].repeats = repeatsState;\r\n }\r\n }\r\n },\r\n update: (state) => state, //not implemented\r\n delete: (draftState, sectionId, id, sectionComponents) => {\r\n var stateSection = draftState[sectionId];\r\n if (!stateSection)\r\n throw new Error(`handleStateFunctions.sectionRepeat.delete: state for id:${sectionId} is missing`);\r\n\r\n var descendantSectionIds = [];\r\n traverseComponents(sectionComponents, descendantSectionIds);\r\n\r\n if (!stateSection.repeats[id])\r\n throw new Error(`handleStateFunctions.sectionRepeat.delete: repeatsState for id:${id} is missing`);\r\n\r\n reCalculateOrder(draftState, stateSection, id, descendantSectionIds);\r\n\r\n let deletedRepeatIds = [id];\r\n let omitedRepeatState = _.omit(stateSection.repeats, id);\r\n\r\n _.each(descendantSectionIds, (sectionId) => {\r\n var stateSectionDescendant = draftState[sectionId];\r\n\r\n if (stateSectionDescendant) {\r\n var deletedDescendantRepeatIds = [];\r\n\r\n _.each(deletedRepeatIds, (repeatId) => {\r\n Object.values(stateSectionDescendant.repeats).forEach((descendantRepeat) => {\r\n if (descendantRepeat.parentRepeatId === repeatId || descendantRepeat.parentRepeatId == null)\r\n deletedDescendantRepeatIds.push(descendantRepeat.id);\r\n });\r\n });\r\n\r\n stateSectionDescendant.repeats = _.omit(stateSectionDescendant.repeats, deletedDescendantRepeatIds);\r\n\r\n //if there are no repeats, distroy the stateSectionDescendant\r\n if (_.isEmpty(stateSectionDescendant.repeats)) draftState = _.omit(draftState, sectionId);\r\n\r\n deletedRepeatIds = _.union(deletedRepeatIds, deletedDescendantRepeatIds);\r\n }\r\n });\r\n draftState[sectionId].repeats = omitedRepeatState;\r\n },\r\n};\r\n\r\nfunction traverseComponents(sectionComponents, sectionIds) {\r\n var sections = sectionComponents.filter((c) => c.SectionDTO != null);\r\n sections.forEach((s) => {\r\n sectionIds.push(s.ID);\r\n\r\n traverseComponents(s.SectionDTO.SectionContentTemplate.Components, sectionIds);\r\n });\r\n}\r\n\r\nexport function findMaxRepeatNr(state, sectionId, parentRepeatId) {\r\n var sectionState = state[sectionId];\r\n if (!sectionState)\r\n throw new Error(`handleStateFunctions.sectionRepeat.findMaxRepeatNr: state for id:${sectionId} is missing`);\r\n\r\n var maxRepeat = _.chain(sectionState.repeats)\r\n .values()\r\n .filter((item) => {\r\n return item.parentRepeatId === parentRepeatId;\r\n })\r\n .maxBy(\"number\")\r\n .value();\r\n return maxRepeat ? maxRepeat.number + 1 : 1;\r\n}\r\n\r\nexport function defineRepeatId(sectionId, parentRepeatId, repetable) {\r\n return repetable ? uuidv4() : parentRepeatId ? parentRepeatId : sectionId;\r\n}\r\n\r\nfunction reCalculateOrder(draftState, stateSection, repeatId, descendantSectionIds) {\r\n let repeat = stateSection.repeats[repeatId];\r\n const changedRepeats = [];\r\n _.chain(stateSection.repeats)\r\n .values()\r\n .filter((r) => {\r\n return r.parentRepeatId === repeat.parentRepeatId && r.number > repeat.number;\r\n })\r\n .each((r) => {\r\n --r.number;\r\n changedRepeats.push(r);\r\n })\r\n .value();\r\n\r\n _.each(descendantSectionIds, (sectionId) => {\r\n var stateSectionDescendant = draftState[sectionId];\r\n if (stateSectionDescendant) {\r\n _.chain(stateSectionDescendant.repeats)\r\n .values()\r\n .filter((r) => {\r\n return changedRepeats.some((obj) => obj[\"id\"] === r.parentRepeatId);\r\n })\r\n .each((r) => {\r\n const changedRepeat = _.find(changedRepeats, { id: r.parentRepeatId });\r\n if (changedRepeat) {\r\n r.parentRepeatNumber = changedRepeat.number;\r\n }\r\n })\r\n .value();\r\n }\r\n });\r\n}\r\nfunction addManualInitialRepeats(\r\n section,\r\n repeatsState,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n count,\r\n followup,\r\n previousQuestions,\r\n cultureCode\r\n) {\r\n _.times(count, (inx) => {\r\n let repeatId = uuidv4();\r\n let number = inx + 1;\r\n let questions = defineQuestionsInRepeat(section, number, parentRepeatNumber, previousQuestions, cultureCode);\r\n\r\n let newRepeat = {\r\n ...defaultSectionRepeatObject(repeatId),\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n number,\r\n followup,\r\n repeatable: true,\r\n questions,\r\n customID: uuidv4(),\r\n repeatTransferCount: 1,\r\n };\r\n\r\n repeatsState[repeatId] = newRepeat;\r\n });\r\n return repeatsState;\r\n}\r\n\r\nexport default sectionRepeatHandleStateExport;\r\n","import handleRepeat from \"./sectionRepeat\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport _ from \"lodash\";\r\n\r\n//handle state functions-section\r\nconst defaultSectionData = (id) => {\r\n return {\r\n id,\r\n changeState: \"Added\",\r\n repeats: {},\r\n };\r\n};\r\n\r\nconst sectionHandleStateExport = {\r\n add: (\r\n draftState,\r\n section,\r\n parentRepeatID,\r\n parentRepeatNumber,\r\n parentRepeatFollowup,\r\n sectionCondition,\r\n previousMCAnswers,\r\n previousSections,\r\n previousQuestions,\r\n cultureCode\r\n ) => {\r\n if (!draftState[section.ID]) {\r\n draftState[section.ID] = defaultSectionData(section.ID);\r\n }\r\n\r\n let visible = sectionCondition && sectionCondition.visible;\r\n\r\n let repeats = _.filter(draftState[section.ID].repeats, (x) => {\r\n return x.parentRepeatNumber === parentRepeatNumber;\r\n });\r\n\r\n if ((draftState[section.ID].changeState === \"Added\" || _.isEmpty(repeats)) && (visible || !sectionCondition)) {\r\n if (\r\n parentRepeatFollowup &&\r\n section.SectionDTO.ShowOnlyInNewRepeatSection &&\r\n !section.SectionDTO.ShowOnlyInFollowUpRepeatSection\r\n )\r\n return;\r\n\r\n if (\r\n !parentRepeatFollowup &&\r\n section.SectionDTO.ShowOnlyInFollowUpRepeatSection &&\r\n !section.SectionDTO.ShowOnlyInNewRepeatSection\r\n )\r\n return;\r\n\r\n let followup = parentRepeatFollowup && section.SectionDTO.ShowOnlyInFollowUpRepeatSection;\r\n\r\n if (!section.SectionDTO.Repeated) {\r\n let repeatId = parentRepeatID ? parentRepeatID : section.ID;\r\n handleRepeat.add(\r\n draftState,\r\n section,\r\n repeatId,\r\n parentRepeatID,\r\n parentRepeatNumber,\r\n 0,\r\n false,\r\n previousQuestions,\r\n followup,\r\n cultureCode\r\n );\r\n }\r\n\r\n if (section.SectionDTO.Repeated) {\r\n handleRepeat.addInitialRepeats(\r\n draftState,\r\n section,\r\n parentRepeatID,\r\n parentRepeatNumber,\r\n previousSections,\r\n previousQuestions,\r\n previousMCAnswers,\r\n followup,\r\n cultureCode\r\n );\r\n }\r\n }\r\n if (\r\n draftState[section.ID].repeats &&\r\n section.SectionDTO.NumericQuestionRepeatID &&\r\n !_.isEmpty(previousMCAnswers) &&\r\n (visible || !sectionCondition)\r\n )\r\n changeRepeatsWithMCQuestion(\r\n draftState,\r\n section,\r\n parentRepeatID,\r\n parentRepeatNumber,\r\n previousMCAnswers[section.SectionDTO.NumericQuestionRepeatID]\r\n );\r\n },\r\n show_or_hide: (\r\n draftState,\r\n section,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n followup,\r\n visible,\r\n repeats,\r\n previousSection,\r\n previousQuestions,\r\n sectionConditions,\r\n cultureCode\r\n ) => {\r\n let sectionConditionsVisible = sectionConditions && sectionConditions.visible;\r\n if (visible && (!sectionConditions || sectionConditionsVisible)) {\r\n //show - add initial if section has not repeats\r\n if (_.isEmpty(repeats)) {\r\n if (!section.SectionDTO.Repeated) {\r\n let repeatId = parentRepeatId ? parentRepeatId : section.ID;\r\n handleRepeat.add(\r\n draftState,\r\n section,\r\n repeatId,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n 0,\r\n false,\r\n previousQuestions,\r\n followup,\r\n cultureCode\r\n );\r\n }\r\n\r\n if (section.SectionDTO.Repeated) {\r\n handleRepeat.addInitialRepeats(\r\n draftState,\r\n section,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n previousSection,\r\n previousQuestions,\r\n null,\r\n followup,\r\n cultureCode\r\n );\r\n }\r\n }\r\n } else {\r\n //hide - delete repeats\r\n _.map(repeats, (r) => {\r\n handleRepeat.delete(draftState, section.ID, r.id, section.SectionDTO.SectionContentTemplate.Components);\r\n });\r\n }\r\n draftState[section.ID].questionConditionVisibility = visible;\r\n },\r\n};\r\n\r\nexport function changeRepeatsWithMCQuestion(\r\n draftState,\r\n section,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n answer,\r\n cultureCode\r\n) {\r\n if (_.isEmpty(answer)) return;\r\n\r\n let repeats = _.filter(Object.values(draftState[section.ID].repeats), (repeat) => {\r\n return repeat.parentRepeatId === parentRepeatId;\r\n });\r\n let repeatNumber = parseInt(answer);\r\n let repeatsCount = repeats.length;\r\n\r\n if (repeatsCount < repeatNumber) {\r\n for (let i = repeatsCount + 1; i <= repeatsCount + (repeatNumber - repeatsCount); i++)\r\n handleRepeat.add(draftState, section, uuidv4(), parentRepeatId, parentRepeatNumber, i, true, cultureCode);\r\n }\r\n\r\n if (repeatsCount > repeatNumber) {\r\n for (let i = repeatsCount; i > repeatNumber; i--) {\r\n let repeat = _.find(repeats, [\"number\", i]);\r\n handleRepeat.delete(draftState, section.ID, repeat.id, section.SectionDTO.SectionContentTemplate.Components);\r\n }\r\n }\r\n}\r\n\r\nexport default sectionHandleStateExport;\r\n","import { INIT_SECTION_DATA } from \"../../actions/section/initSectionData\";\r\nimport { ADD_REPEAT } from \"../../actions/section/addRepeat\";\r\nimport { DELETE_REPEAT } from \"../../actions/section/deleteRepeat\";\r\nimport { MODIFY_ANSWERS } from \"../../actions/question/modifyAnswers\";\r\nimport { FETCH_PAGE } from \"../../actions/userQuestionnaire/selectPage\";\r\nimport { MODIFY_MULTIPLE_CHOICE_ANSWERS } from \"../../actions/question/modifyMultipleChoiceAnswers\";\r\nimport { MODIFY_MULTIPLE_CHOICE_OPTION } from \"../../actions/question/modifyMultipleChoiceOption\";\r\nimport { SHOW_OR_HIDE_SECTION } from \"../../actions/section/showOrHideSection\";\r\nimport { CHANGE_REPEATS } from \"../../actions/question/changeRepeats\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\nimport { changeRepeatsWithMCQuestion } from \"../../assets/questionnaire/handleStateFunctions/section\";\r\nimport { getParentSectionId } from \"../../assets/questionnaire/Utils/questionComponentUtil\";\r\n\r\nimport handleSection from \"../../assets/questionnaire/handleStateFunctions/section\";\r\nimport handleSectionRepeat from \"../../assets/questionnaire/handleStateFunctions/sectionRepeat\";\r\nimport {\r\n modifyAnswers,\r\n modifyMultipleChoiceOption,\r\n modifyMultipleChoiceAnswers,\r\n} from \"../../assets/questionnaire/handleStateFunctions/question\";\r\nimport {\r\n registerCondition,\r\n calculateSectionVisibilityWhileInit,\r\n} from \"../../assets/questionnaire/containers/sectionConditionsContainer\";\r\n\r\nimport { findMaxRepeatNr, defineRepeatId } from \"../../assets/questionnaire/handleStateFunctions/sectionRepeat\";\r\nimport { enableES5, produce } from \"immer\";\r\nimport _ from \"lodash\";\r\n\r\nconst initState = {};\r\nenableES5();\r\n//sections reducers\r\nexport default produce((draft, action) => {\r\n switch (action.type) {\r\n case FETCH_PAGE: {\r\n return JSON.parse(action.payload.data.reduxStateStoreJson);\r\n }\r\n case INIT_SECTION_DATA: {\r\n let {\r\n section,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n parentRepeatFollowup,\r\n parentSectionId,\r\n requiredItems,\r\n sectionCondition,\r\n previousMCAnswers,\r\n previousSections,\r\n previousQuestions,\r\n cultureCode,\r\n } = action.payload;\r\n\r\n registerCondition(section);\r\n handleSection.add(\r\n draft,\r\n section,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n parentRepeatFollowup,\r\n sectionCondition,\r\n previousMCAnswers,\r\n previousSections,\r\n previousQuestions,\r\n cultureCode\r\n );\r\n\r\n //calculate visibility\r\n draft[section.ID].questionConditionVisibility = true;\r\n let repeatId = parentRepeatId ? parentRepeatId : parentSectionId; //the repeatId where the conditional answers belongs\r\n let storeData = { sections: draft, requiredItems };\r\n var actionValue = calculateSectionVisibilityWhileInit(storeData, section.ID, parentSectionId, repeatId);\r\n\r\n if (actionValue) {\r\n let { section, parentRepeatId, visible, existingRepeats, cultureCode } = actionValue;\r\n handleSection.show_or_hide(\r\n draft,\r\n section,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n parentRepeatFollowup,\r\n visible,\r\n existingRepeats,\r\n previousSections,\r\n previousQuestions,\r\n sectionCondition,\r\n cultureCode\r\n );\r\n }\r\n\r\n return;\r\n }\r\n case ADD_REPEAT: {\r\n let { section, parentRepeatId, parentRepeatNumber, previousQuestions, cultureCode } = action.payload;\r\n let repeatable = section.SectionDTO.Repeated;\r\n let number = findMaxRepeatNr(draft, section.ID, parentRepeatId);\r\n let repeatId = defineRepeatId(section.ID, parentRepeatId, repeatable);\r\n\r\n handleSectionRepeat.add(\r\n draft,\r\n section,\r\n repeatId,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n number,\r\n repeatable,\r\n previousQuestions,\r\n false,\r\n cultureCode\r\n );\r\n return;\r\n }\r\n case DELETE_REPEAT: {\r\n let section = action.payload.section;\r\n let repeatId = action.payload.repeatId;\r\n\r\n handleSectionRepeat.delete(draft, section.ID, repeatId, section.SectionDTO.SectionContentTemplate.Components);\r\n return;\r\n }\r\n case MODIFY_ANSWERS: {\r\n let { sectionId, repeatId, question, answers } = action.payload;\r\n modifyAnswers(draft, sectionId, repeatId, question.ID, answers);\r\n return;\r\n }\r\n case MODIFY_MULTIPLE_CHOICE_OPTION: {\r\n let { section, repeatId, questionId, option, checked, isExclusive, archived, parentSection, cultureCode } =\r\n action.payload;\r\n let parentSectionId = getParentSectionId(section, parentSection != null ? parentSection.ID : null);\r\n modifyMultipleChoiceOption(\r\n draft,\r\n section.ID,\r\n repeatId,\r\n questionId,\r\n option,\r\n checked,\r\n isExclusive,\r\n archived,\r\n cultureCode,\r\n parentSectionId\r\n );\r\n return;\r\n }\r\n case MODIFY_MULTIPLE_CHOICE_ANSWERS: {\r\n let { section, repeatId, questionId, option, answers, isExclusive, archived, parentSection, cultureCode } =\r\n action.payload;\r\n let parentSectionId = getParentSectionId(section, parentSection != null ? parentSection.ID : null);\r\n modifyMultipleChoiceAnswers(\r\n draft,\r\n section.ID,\r\n repeatId,\r\n questionId,\r\n option,\r\n answers,\r\n isExclusive,\r\n archived,\r\n cultureCode,\r\n parentSectionId\r\n );\r\n return;\r\n }\r\n case SHOW_OR_HIDE_SECTION: {\r\n let {\r\n section,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n followup,\r\n visible,\r\n repeats,\r\n previousQuestions,\r\n previousSections,\r\n sectionsConditions,\r\n cultureCode,\r\n } = action.payload;\r\n let previousSection = previousSections[section.SectionDTO.ReferenceName];\r\n let sectionConditions = sectionsConditions[section.ID];\r\n handleSection.show_or_hide(\r\n draft,\r\n section,\r\n parentRepeatId,\r\n parentRepeatNumber,\r\n followup,\r\n visible,\r\n repeats,\r\n previousSection,\r\n previousQuestions,\r\n sectionConditions,\r\n cultureCode\r\n );\r\n return;\r\n }\r\n case CHANGE_REPEATS: {\r\n let { section, questionId, optionValue, repeatId, cultureCode } = action.payload;\r\n let sections = _.filter(section.SectionDTO.SectionContentTemplate.Components, (item) => {\r\n return item.SectionDTO != null && item.SectionDTO.NumericQuestionRepeatID == questionId;\r\n });\r\n let repeat = draft[section.ID].repeats[repeatId];\r\n let parentRepeatId = repeat.repeatable ? repeatId : repeat.parentRepeatId != null ? repeat.parentRepeatId : null;\r\n let parentRepeatNumber = repeat.repetable\r\n ? repeat.number\r\n : repeat.parentRepeatId != null\r\n ? repeat.parentRepeatNumber\r\n : null;\r\n for (let sectionItem of sections) {\r\n changeRepeatsWithMCQuestion(draft, sectionItem, parentRepeatId, parentRepeatNumber, optionValue, cultureCode);\r\n }\r\n return;\r\n }\r\n case SET_USER_QUESTIONNAIRE_ID: {\r\n return initState;\r\n }\r\n default:\r\n return;\r\n }\r\n}, initState);\r\n","import { FETCH_CASCADING_LEVELS } from \"../../actions/tempStorage/fetchCascadingLevels\";\r\nimport { FETCH_CASCADING_DRUGS } from \"../../actions/tempStorage/fetchCascadingDrugs\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\nimport _ from \"lodash\";\r\n\r\nexport default function (state = {}, action) {\r\n switch (action.type) {\r\n case FETCH_CASCADING_LEVELS: //action.payload.levels\r\n return {\r\n ...state,\r\n [action.payload.componentName]: {\r\n ...state[action.payload.componentName],\r\n levels: action.payload.levels,\r\n },\r\n };\r\n case FETCH_CASCADING_DRUGS:\r\n return {\r\n ...state,\r\n [action.payload.componentName]: {\r\n ...state[action.payload.componentName],\r\n [action.payload.groupName]: _.keyBy(action.payload.drugs, \"AnswerValue\"),\r\n },\r\n };\r\n case SET_USER_QUESTIONNAIRE_ID: {\r\n return {};\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import _ from \"lodash\";\r\n\r\nimport { ADD_INVALID_ITEM } from \"../../actions/tempStorage/invalidItems/addInvalidItem\";\r\nimport { DELETE_INVALID_ITEM } from \"../../actions/tempStorage/invalidItems/deleteInvalidItem\";\r\nimport { DELETE_MULTIPLE_INVALID_OPTIONS } from \"../../actions/tempStorage/invalidItems/deleteMultipleInvalidOptions\";\r\nimport { ADD_REQUIRED_INVALID_QUESTIONS } from \"../../actions/tempStorage/invalidItems/addRequiredInvalidQuestions\";\r\nimport { FETCH_PAGE } from \"../../actions/userQuestionnaire/selectPage\";\r\nimport { DELETE_REQUIRED_ITEM } from \"../../actions/tempStorage/requiredItems/deleteRequiredItem\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default function (state = {}, action) {\r\n switch (action.type) {\r\n case ADD_INVALID_ITEM: {\r\n let { optionId, questionId, repeatId, message } = action.payload;\r\n let key = optionId ? `${optionId}-${questionId}-${repeatId}` : `${questionId}-${repeatId}`;\r\n return {\r\n ...state,\r\n [key]: message,\r\n };\r\n }\r\n case DELETE_INVALID_ITEM: {\r\n let { optionId, questionId, repeatId } = action.payload;\r\n let key = optionId ? `${optionId}-${questionId}-${repeatId}` : `${questionId}-${repeatId}`;\r\n if (state[key]) return _.omit(state, key);\r\n return state;\r\n }\r\n case DELETE_MULTIPLE_INVALID_OPTIONS: {\r\n let { options, questionId, repeatId } = action.payload;\r\n let keys = [];\r\n _.forEach(options, (option) => {\r\n let key = `${option.ID}-${questionId}-${repeatId}`;\r\n if (state[key]) keys.push(key);\r\n });\r\n if (keys) return _.omit(state, keys);\r\n return state;\r\n }\r\n case ADD_REQUIRED_INVALID_QUESTIONS: {\r\n let { items, message } = action.payload;\r\n let newState = { ...state };\r\n for (let item of items) {\r\n let key = `${item.questionId}-${item.repeatId}`;\r\n newState[key] = message;\r\n }\r\n return newState;\r\n }\r\n case FETCH_PAGE: {\r\n return {};\r\n }\r\n case DELETE_REQUIRED_ITEM: {\r\n let { questionId, repeatId } = action.payload;\r\n let key = `${questionId}-${repeatId}`;\r\n return _.omit(state, key);\r\n }\r\n case SET_USER_QUESTIONNAIRE_ID: {\r\n return {};\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import _ from \"lodash\";\r\nimport { REGISTER_REQUIRED_ITEM } from \"../../actions/tempStorage/requiredItems/registerRequiredItem\";\r\nimport { DELETE_REQUIRED_ITEM } from \"../../actions/tempStorage/requiredItems/deleteRequiredItem\";\r\nimport { FETCH_PAGE } from \"../../actions/userQuestionnaire/selectPage\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default function (state = [], action) {\r\n switch (action.type) {\r\n case REGISTER_REQUIRED_ITEM: {\r\n state.push(action.payload.item);\r\n return state;\r\n }\r\n case DELETE_REQUIRED_ITEM: {\r\n let { questionId, repeatId } = action.payload;\r\n _.remove(state, (question) => {\r\n return question.questionId == questionId && question.repeatId == repeatId;\r\n });\r\n return state;\r\n }\r\n case FETCH_PAGE: {\r\n return [];\r\n }\r\n case SET_USER_QUESTIONNAIRE_ID: {\r\n return {};\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { DELETE_REPEAT } from \"../../actions/section/deleteRepeat\";\r\nimport { SHOW_OR_HIDE_SECTION } from \"../../actions/section/showOrHideSection\";\r\nimport { SET_SHOULD_MODIFY_CATEGORIES } from \"../../actions/tempStorage/setShouldModifyCategories\";\r\nimport { FETCH_PAGE } from \"../../actions/userQuestionnaire/selectPage\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default function (state = false, action) {\r\n switch (action.type) {\r\n case SHOW_OR_HIDE_SECTION: {\r\n let { visible } = action.payload;\r\n return !visible;\r\n }\r\n case DELETE_REPEAT:\r\n return true;\r\n case SET_SHOULD_MODIFY_CATEGORIES:\r\n return action.payload;\r\n case FETCH_PAGE:\r\n return false;\r\n case SET_USER_QUESTIONNAIRE_ID:\r\n return {};\r\n default:\r\n return state;\r\n }\r\n}\r\n","export const DELETE_ERROR_MSG = \"DELETE_ERROR_MSG\";\r\n\r\nexport default function deleteErrorMessage(key) {\r\n return {\r\n type: DELETE_ERROR_MSG,\r\n payload: { key },\r\n };\r\n}\r\n","import _ from \"lodash\";\r\n\r\nimport { ADD_ERROR_MSG } from \"../../actions/tempStorage/customErrorMsg/addMessage\";\r\nimport { DELETE_ERROR_MSG } from \"../../actions/tempStorage/customErrorMsg/deleteMessage\";\r\nimport { CLEAR_ALL_ERROR_MSGS } from \"../../actions/tempStorage/customErrorMsg/clearAllMessage\";\r\nimport { FETCH_PAGE } from \"../../actions/userQuestionnaire/selectPage\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nexport default function (state = {}, action) {\r\n switch (action.type) {\r\n case ADD_ERROR_MSG: {\r\n let { key, message } = action.payload;\r\n return { ...state, [key]: message };\r\n }\r\n case DELETE_ERROR_MSG: {\r\n let { key } = action.payload;\r\n if (state[key]) return _.omit(state, key);\r\n return state;\r\n }\r\n case CLEAR_ALL_ERROR_MSGS: {\r\n return {};\r\n }\r\n case FETCH_PAGE: {\r\n return {};\r\n }\r\n case SET_USER_QUESTIONNAIRE_ID: {\r\n return {};\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import _ from \"lodash\";\r\nimport { enableES5, produce } from \"immer\";\r\n\r\nimport { INIT_QUESTION_REF_MAP } from \"../../actions/tempStorage/questionReferences/initRef\";\r\nimport { UPDATE_QUESTION_REF_MAP } from \"../../actions/tempStorage/questionReferences/updateRef\";\r\nimport { SET_USER_QUESTIONNAIRE_ID } from \"../../actions/userQuestionnaire/setUserQuestionnaireId\";\r\n\r\nconst initState = {};\r\nenableES5();\r\nexport default produce((draft, action) => {\r\n switch (action.type) {\r\n case INIT_QUESTION_REF_MAP: {\r\n let { objKey, references } = action.payload;\r\n draft[objKey] = references;\r\n return;\r\n }\r\n case UPDATE_QUESTION_REF_MAP: {\r\n let { repeatNumber, parentRepeatNumber, fullName, prevAnswer } = action.payload;\r\n let keys = _.filter(Object.keys(draft), (key) => {\r\n let parentRepeatNum = parentRepeatNumber == null ? \"null\" : parentRepeatNumber;\r\n let matches = _.includes(key, `||${repeatNumber}||${parentRepeatNum}`);\r\n if (matches) return true;\r\n\r\n let parentsFound = _.endsWith(key, `||${repeatNumber}`); //fix when the questions are not in same section\r\n return parentsFound;\r\n });\r\n for (let key of keys) {\r\n if (draft[key][fullName] === undefined) continue;\r\n\r\n if (prevAnswer) {\r\n draft[key][fullName] = prevAnswer;\r\n }\r\n }\r\n\r\n //special scenario to cover referencing question from non repeating section into repeating section\r\n //requested by Lareb\r\n if (repeatNumber == 0 && parentRepeatNumber == null) {\r\n for (let key of Object.keys(draft)) {\r\n if (draft[key][fullName] === undefined) continue;\r\n\r\n if (!_.endsWith(key, `||${repeatNumber}||${parentRepeatNumber}`)) {\r\n if (prevAnswer) {\r\n const splitKey = key.split(\"||\");\r\n draft[key][fullName] = { ...prevAnswer, RepeatNumber: parseInt(splitKey[1]), ParentRepeatNumber: splitKey[2] == \"null\" ? null : parseInt(splitKey[2]) };\r\n }\r\n }\r\n }\r\n }\r\n\r\n return;\r\n }\r\n case SET_USER_QUESTIONNAIRE_ID: {\r\n return initState;\r\n }\r\n default:\r\n return;\r\n }\r\n}, initState);\r\n","import _ from \"lodash\";\r\nimport { enableES5, produce } from \"immer\";\r\n\r\nimport { GET_QUESTION_IMAGE_CONTENT } from \"../../actions/question/getQuestionImageContent\";\r\n\r\nconst initState = {};\r\nenableES5();\r\nexport default produce((draft, action) => {\r\n switch (action.type) {\r\n case GET_QUESTION_IMAGE_CONTENT: {\r\n let { QuestionId, Content, ContentType } = action.payload;\r\n if (!draft[QuestionId]) draft[QuestionId] = { Content, ContentType };\r\n else {\r\n draft[QuestionId].Content = Content;\r\n draft[QuestionId].ContentType = ContentType;\r\n }\r\n return;\r\n }\r\n\r\n default:\r\n return;\r\n }\r\n}, initState);\r\n","import { EMAIL_VERIFY_BY_CODE } from \"../../actions/tempStorage/setEmailVerifyByCode\";\r\nimport { FETCH_PAGE } from \"../../actions/userQuestionnaire/selectPage\";\r\n\r\nexport default function (state = null, action) {\r\n switch (action.type) {\r\n case EMAIL_VERIFY_BY_CODE: {\r\n return action.payload.email;\r\n }\r\n case FETCH_PAGE: {\r\n let { codeValidation } = action.payload.data;\r\n if (codeValidation && codeValidation.email) return codeValidation.email;\r\n else return state;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import {\r\n SET_FORM_VERIFICATION_CODE,\r\n SET_FORM_VERIFICATION_MSG,\r\n} from \"../../actions/tempStorage/setFormVerificationCode\";\r\nimport { FETCH_PAGE } from \"../../actions/userQuestionnaire/selectPage\";\r\n\r\nexport default function (state = null, action) {\r\n switch (action.type) {\r\n case SET_FORM_VERIFICATION_CODE: {\r\n return action.payload;\r\n }\r\n case SET_FORM_VERIFICATION_MSG: {\r\n return { ...state, message: action.payload };\r\n }\r\n case FETCH_PAGE: {\r\n return null;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { enableES5, produce } from \"immer\";\r\nimport _ from \"lodash\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\n\r\nimport { GET_FAQ } from \"../actions/faq/getFaq\";\r\nimport { HANDLE_FAQ_DROP } from \"../actions/faq/handleFaqDrop\";\r\nimport { CHANGE_FAQ_CONTENT } from \"../actions/faq/changeFaqContent\";\r\nimport { DELETE_FAQ } from \"../actions/faq/deleteFaq\";\r\nimport { ADD_NEW_FAQ } from \"../actions/faq/addNewFaq\";\r\n\r\nconst initState = [];\r\nenableES5();\r\nexport default produce((draft, action) => {\r\n switch (action.type) {\r\n case GET_FAQ: {\r\n return action.payload;\r\n }\r\n case HANDLE_FAQ_DROP: {\r\n let { dragId, dropId } = action.payload;\r\n const dragBox = _.find(draft, (x) => {\r\n return x.ID == dragId;\r\n });\r\n const dropBox = _.find(draft, (x) => {\r\n return x.ID == dropId;\r\n });\r\n const dragBoxOrder = dragBox.Order;\r\n const dropBoxOrder = dropBox.Order;\r\n dragBox.Order = dropBoxOrder;\r\n dropBox.Order = dragBoxOrder;\r\n return;\r\n }\r\n case CHANGE_FAQ_CONTENT: {\r\n let { faq, value, type } = action.payload;\r\n let draftFaq = _.find(draft, (x) => {\r\n return x.ID == faq.ID;\r\n });\r\n if (draftFaq) {\r\n if (type == \"title\") draftFaq.Title = value;\r\n if (type == \"content\") draftFaq.Content = value;\r\n }\r\n return;\r\n }\r\n case DELETE_FAQ: {\r\n let { faqId } = action.payload;\r\n let draftFaq = _.find(draft, (x) => {\r\n return x.ID == faqId;\r\n });\r\n if (draftFaq) {\r\n let faqOrder = draftFaq.Order;\r\n _.map(draft, (x) => {\r\n if (x.Order > faqOrder) {\r\n x.Order = x.Order - 1;\r\n }\r\n });\r\n draftFaq.Deleted = true;\r\n }\r\n return;\r\n }\r\n case ADD_NEW_FAQ: {\r\n let { studyId, culture } = action.payload;\r\n let notDeleted = _.filter(draft, (x) => {\r\n return x.Deleted == null || x.Deleted == false;\r\n });\r\n let maxOrderItem = _.maxBy(notDeleted, \"Order\");\r\n let faq = {\r\n ID: uuidv4(),\r\n Title: \"What is Lorem Ipsum?\",\r\n Content: \"Lorem Ipsum is simply dummy text of the printing and typesetting industry.\",\r\n StudyId: studyId,\r\n CultureId: culture,\r\n Order: maxOrderItem ? maxOrderItem.Order + 1 : 1,\r\n };\r\n draft.push(faq);\r\n return;\r\n }\r\n default:\r\n return;\r\n }\r\n}, initState);\r\n","import { enableES5, produce } from \"immer\";\r\nimport _ from \"lodash\";\r\nimport { CHANGE_WEBSITE_CONTENT_UPLOADS } from \"../actions/study/changeWebSiteContentUploads\";\r\nimport { DELETE_WEBSITE_CONTENT_UPLOADS } from \"../actions/study/deleteWebSiteContentUploads\";\r\nimport { SET_TOOLBOX_DATA } from \"../actions/study/getWebSiteContentUploads\";\r\n\r\nconst initState = [];\r\nenableES5();\r\n\r\nexport default produce((draft, action) => {\r\n switch (action.type) {\r\n case SET_TOOLBOX_DATA: {\r\n return action.payload;\r\n }\r\n case CHANGE_WEBSITE_CONTENT_UPLOADS: {\r\n let { id, name, value, order, file, fileName, contentType, webContentType, culture, url } = action.payload;\r\n let websiteContentItem = null;\r\n if (webContentType == 5) {\r\n websiteContentItem = draft.find((x) => x.ID === id);\r\n if (websiteContentItem == null) {\r\n websiteContentItem = { ID: id, WebContentType: webContentType, CultureID: culture };\r\n draft.push(websiteContentItem);\r\n }\r\n\r\n if (!_.isEmpty(websiteContentItem)) {\r\n websiteContentItem.Name = name;\r\n websiteContentItem.Value = value;\r\n websiteContentItem.File = file;\r\n websiteContentItem.Order = order;\r\n websiteContentItem.FileName = fileName;\r\n websiteContentItem.ContentType = contentType;\r\n websiteContentItem.URL = url;\r\n }\r\n }\r\n\r\n return;\r\n }\r\n case DELETE_WEBSITE_CONTENT_UPLOADS: {\r\n let { id, contentType } = action.payload;\r\n if (contentType == 5) {\r\n const index = draft.findIndex((x) => x.ID === id);\r\n if (index !== -1) draft.splice(index, 1);\r\n }\r\n\r\n return;\r\n }\r\n\r\n default:\r\n return;\r\n }\r\n}, initState);\r\n","import { enableES5, produce } from \"immer\";\r\nimport _ from \"lodash\";\r\nimport { CHANGE_WEBSITE_CONTENT_UPLOADS } from \"../actions/study/changeWebSiteContentUploads\";\r\nimport { DELETE_WEBSITE_CONTENT_UPLOADS } from \"../actions/study/deleteWebSiteContentUploads\";\r\nimport { SET_STORY_DATA } from \"../actions/study/getWebSiteContentUploads\";\r\n\r\nconst initState = [];\r\nenableES5();\r\nexport default produce((draft, action) => {\r\n switch (action.type) {\r\n case SET_STORY_DATA: {\r\n return action.payload;\r\n }\r\n case CHANGE_WEBSITE_CONTENT_UPLOADS: {\r\n let { id, name, value, order, file, fileName, contentType, webContentType, culture, url } = action.payload;\r\n let websiteContentItem = null;\r\n\r\n if (webContentType == 6) {\r\n websiteContentItem = draft.find((x) => x.ID === id);\r\n if (websiteContentItem == null) {\r\n websiteContentItem = { ID: id, WebContentType: webContentType, CultureID: culture };\r\n draft.push(websiteContentItem);\r\n }\r\n if (!_.isEmpty(websiteContentItem)) {\r\n websiteContentItem.Name = name;\r\n websiteContentItem.Value = value;\r\n websiteContentItem.File = file;\r\n websiteContentItem.Order = order;\r\n websiteContentItem.FileName = fileName;\r\n websiteContentItem.ContentType = contentType;\r\n websiteContentItem.URL = url;\r\n }\r\n }\r\n\r\n return;\r\n }\r\n case DELETE_WEBSITE_CONTENT_UPLOADS: {\r\n let { id, contentType } = action.payload;\r\n\r\n if (contentType == 6) {\r\n const index = draft.findIndex((x) => x.ID === id);\r\n if (index !== -1) draft.splice(index, 1);\r\n }\r\n\r\n return;\r\n }\r\n\r\n default:\r\n return;\r\n }\r\n}, initState);\r\n","import { combineReducers } from \"redux\";\r\nimport studyReducer from \"./studyReducer\";\r\nimport { questionnaires } from \"./questionnairesReducer\";\r\nimport { authentication } from \"./authenticationReducer\";\r\nimport userQuestionnaireReducer from \"./userQuestionnaire\";\r\nimport handleSectionDataReducer from \"./Section/handleSectionDataReducer\";\r\nimport tempStorageReducer from \"./tempStorage\";\r\nimport loadingReducer from \"./loadingReducer\";\r\nimport { form } from \"./formReducer\";\r\nimport { pages } from \"./pagesReducer\";\r\nimport faqReducer from \"./faqReducer\";\r\nimport { followup } from \"./followupReducer\";\r\nimport toolboxReducer from \"./toolboxReducer\";\r\nimport storyReducer from \"./storyReducer\";\r\n\r\nconst rootReducer = combineReducers({\r\n study: studyReducer,\r\n faq: faqReducer,\r\n authentication,\r\n questionnaires,\r\n userQuestionnaire: userQuestionnaireReducer,\r\n sections: handleSectionDataReducer,\r\n tempStorage: tempStorageReducer,\r\n loading: loadingReducer,\r\n form,\r\n pages,\r\n followup,\r\n toolbox: toolboxReducer,\r\n story: storyReducer,\r\n});\r\n\r\nexport default rootReducer;\r\n","import { GET_USER_QUESTIONNAIRES } from \"../actions/questionnaires/getUserQuestionnaires\";\r\nimport { SUBSCRIBE_PUSH_NOTIFICATIONS } from \"../actions/questionnaires/subscribePushNotifications\";\r\nimport { LOGIN_FAILURE } from \"../actions/authentication/authenticate\";\r\nimport { LOGOUT } from \"../actions/authentication/logout\";\r\nexport function questionnaires(state = {}, action) {\r\n switch (action.type) {\r\n case GET_USER_QUESTIONNAIRES:\r\n return action.payload;\r\n case LOGOUT:\r\n case LOGIN_FAILURE:\r\n return {};\r\n case SUBSCRIBE_PUSH_NOTIFICATIONS:\r\n return { ...state, ShowPushNotificationPopup: action.payload.ShowPushNotificationPopup };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import setUserQuestionnaireIdReducer from \"./setUserQuestionnaireIdReducer\";\r\nimport pageMenuNavReducer from \"./pageMenuNavReducer\";\r\nimport selectPageReducer from \"./selectPageReducer\";\r\nimport pageDesignReducer from \"./pageDesignReducer\";\r\nimport cultureCodeReducer from \"./cultureCodeReducer\";\r\nimport lastOpenedPageIdReducer from \"./lastOpenedPageReducer\";\r\nimport currentDateReducer from \"./curentDateReducer\";\r\nimport categoriesMapReducer from \"./categoriesMapReducer\";\r\nimport textCategoriesReducer from \"./textCategoriesReducer\";\r\nimport numericCategoriesReducer from \"./numericCategoriesReducer\";\r\nimport sectionsConditionsReducer from \"./sectionsConditionsReducer\";\r\nimport setCompletedReducer from \"./setCompletedReducer\";\r\nimport setRedirectUrlReducer from \"./setRedirectUrlReducer\";\r\nimport previousMCAnswersReducer from \"./previousMCAnswersReducer\";\r\nimport previousQuestionsReducer from \"./previousQuestionsReducer\";\r\nimport previousSectionsReducer from \"./previousSectionsReducer\";\r\nimport questionReferencesReducer from \"./questionReferencesReducer\";\r\nimport questionnaireNameReducer from \"./setQuestionnaireName\";\r\nimport highlightedPagesReducer from \"./highlightedPagesReducer\";\r\nimport honeypotReducer from \"./honeypotReducer\";\r\nimport zIndexCategoriesReducer from \"./zIndexCategoriesReducer\";\r\nimport showProggressBarReducer from \"./showProgressBarReducer\";\r\n//export new object holder OR you can wrap these with combineReducers from 'redux';\r\n\r\nexport default (state = {}, action) => {\r\n return {\r\n id: setUserQuestionnaireIdReducer(state.id, action),\r\n cultureCode: cultureCodeReducer(state.cultureCode, action),\r\n lastPageOpenedId: lastOpenedPageIdReducer(state.lastPageOpenedId, action),\r\n pageList: pageMenuNavReducer(state.pageList, action),\r\n selectedPage: selectPageReducer(state.selectedPage, action),\r\n pageDesign: pageDesignReducer(state.pageDesign, action),\r\n currentDate: currentDateReducer(state.currentDate, action),\r\n categoriesMap: categoriesMapReducer(state.categoriesMap, action),\r\n textCategories: textCategoriesReducer(state.textCategories, action),\r\n numericCategories: numericCategoriesReducer(\r\n state.numericCategories,\r\n action\r\n ),\r\n sectionsConditions: sectionsConditionsReducer(\r\n state.sectionsConditions,\r\n action\r\n ),\r\n completed: setCompletedReducer(state.completed, action),\r\n redirectUrl: setRedirectUrlReducer(state.redirectUrl, action),\r\n previousMCAnswers: previousMCAnswersReducer(\r\n state.previousMCAnswers,\r\n action\r\n ),\r\n previousQuestions: previousQuestionsReducer(\r\n state.previousQuestions,\r\n action\r\n ),\r\n previousSections: previousSectionsReducer(state.previousSections, action),\r\n questionReferences: questionReferencesReducer(\r\n state.questionReferences,\r\n action\r\n ),\r\n questionnaireName: questionnaireNameReducer(\r\n state.questionnaireName,\r\n action\r\n ),\r\n highlightedPages: highlightedPagesReducer(state.highlightedPages, action),\r\n honeypot: honeypotReducer(state.honeypot, action),\r\n zIndexCategories: zIndexCategoriesReducer(state.zIndexCategories, action),\r\n showProgressBar: showProggressBarReducer(state.showProgressBar, action),\r\n };\r\n};\r\n","import cascadingComponentReducer from \"./cascadingComponentReducer\";\r\nimport invalidItemsReducer from \"./invalidItemsReducer\";\r\nimport requiredItemsReducer from \"./requiredItemsReducer\";\r\nimport shouldModifyCategoriesReducer from \"./shouldModifyCategoriesReducer\";\r\nimport customErrorMsgReducer from \"./customErrorMessagesReducer\";\r\nimport questionReferencesMapReducer from \"./questionReferencesMapReducer\";\r\nimport questionsImagesReducer from \"./questionsImagesReducer\";\r\nimport emailVerifyReducer from \"./emailVerifyReducer\";\r\nimport formVerificationReducer from \"./formVerificationReducer\";\r\n\r\nexport default (state = {}, action) => {\r\n return {\r\n cascadingComponent: cascadingComponentReducer(state.cascadingComponent, action),\r\n invalidItems: invalidItemsReducer(state.invalidItems, action),\r\n requiredItems: requiredItemsReducer(state.requiredItems, action),\r\n shouldModifyCategories: shouldModifyCategoriesReducer(state.shouldModifyCategories, action),\r\n customErrorMsgs: customErrorMsgReducer(state.customErrorMsgs, action),\r\n questionReferencesMap: questionReferencesMapReducer(state.questionReferencesMap, action),\r\n questionsImages: questionsImagesReducer(state.questionsImages, action),\r\n emailVerify: emailVerifyReducer(state.emailVerify, action),\r\n formVerification: formVerificationReducer(state.formVerification, action),\r\n };\r\n};\r\n","import { LOADING_PAGE } from \"../actions/loading/setLoading\";\r\n\r\nexport default function (state = null, action) {\r\n switch (action.type) {\r\n case LOADING_PAGE:\r\n return action.payload;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { GET_FORM_DATA } from \"../actions/form/getFormData\";\r\nimport { EMAIL_VERIFY_BY_CODE } from \"../actions/tempStorage/setEmailVerifyByCode\";\r\n\r\nexport function form(state = {}, action) {\r\n switch (action.type) {\r\n case GET_FORM_DATA:\r\n return action.payload;\r\n case EMAIL_VERIFY_BY_CODE: {\r\n return { ...state, CodeVerificationSent: action.payload.isSent };\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { GET_PAGES_BY_NAME } from \"../actions/pages/getPageByName\";\r\n\r\nexport function pages(state = {}, action) {\r\n switch (action.type) {\r\n case GET_PAGES_BY_NAME: {\r\n var { pageName, title, html } = action.payload;\r\n if (!state[pageName]) {\r\n return { ...state, [pageName]: { title, html } };\r\n }\r\n return;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { GET_FOLLOWUP_DATA } from \"../actions/form/getFollowupData\";\r\n\r\nexport function followup(state = {}, action) {\r\n switch (action.type) {\r\n case GET_FOLLOWUP_DATA:\r\n return action.payload;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import axios from \"axios\";\r\nimport axiosInstance from \"./api\";\r\nimport logout from \"../../../actions/authentication/logout\";\r\nimport history from \"../custom/history\";\r\n\r\nconst setup = (store) => {\r\n axiosInstance.interceptors.request.use((config) => {\r\n const token = JSON.parse(localStorage.getItem(\"token\"));\r\n if (token) config.headers.Authorization = `Bearer ${token}`;\r\n return config;\r\n });\r\n\r\n const { dispatch } = store;\r\n axiosInstance.interceptors.response.use(\r\n function (response) {\r\n return response;\r\n },\r\n function (er) {\r\n if (axios.isAxiosError(er)) {\r\n if (er.response) {\r\n if (er.response.status === 401 || er.response.status === 403) {\r\n if (window.location.pathname.includes(\"form\")) history.replace(\"/\");\r\n else {\r\n dispatch(logout());\r\n history.replace(\"/login\");\r\n }\r\n // <-- navigate\r\n } else history.replace(\"/pages/error\"); // <-- navigate to error page\r\n }\r\n }\r\n return Promise.reject(er);\r\n }\r\n );\r\n};\r\n\r\nexport default setup;\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport * as serviceWorkerRegistration from \"./serviceWorkerRegistration\";\r\nimport { Provider } from \"react-redux\";\r\nimport { createStore, applyMiddleware } from \"redux\";\r\nimport { composeWithDevTools } from \"redux-devtools-extension/developmentOnly\";\r\nimport thunk from \"redux-thunk\";\r\n\r\nimport App from \"./components/app\";\r\nimport reportWebVitals from \"./reportWebVitals\";\r\nimport rootReducer from \"./reducers\";\r\nimport setupInterceptors from \"./assets/common/api/setupInterceptors\";\r\n\r\nlet middleware = [thunk]; //add middlewares in this array\r\nconst store = createStore(rootReducer, composeWithDevTools(applyMiddleware(...middleware)));\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\nsetupInterceptors(store);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://cra.link/PWA\r\nserviceWorkerRegistration.register();\r\n"],"sourceRoot":""}