{"version":3,"sources":["img/left.svg","img/lock.svg","img/plus-light.svg","img/customize-dashboard.svg","img/filter.svg","img/bin.svg","img/question-icon.png","img/lock-opened.svg","img/view.svg","img/logo-k.png","img/link1.svg","img/link2.svg","img/link3.svg","img/appointmentdirect.svg","img/pawPassIcon.png","img/link4.svg","img/logout.svg","env.js","dev.js","serviceWorker.js","apiServer.js","authentification.js","app/helpers/constants.js","app/helpers/utils.js","ajaxCaller.js","app/components/facilitiesPicker.js","privilegeChecker.js","app/components/Dashboard/editMode.js","app/components/widget.component.js","app/components/Dashboard/chartsArea.js","app/components/Dashboard/parts/editButton.js","app/dashboard.js","actions/users.js","app/authentication.js","app/components/reportChart.component.js","app/components/kontakDateRangePicker.js","app/chatArchive.js","app/components/dashboardReports.js","app/components/globalIntroState.js","app/components/CICReport.js","app/reports.js","app/profile.js","app/profile.category.js","app/components/settingsPageNavBar.js","app/components/errorModal.js","app/regions.js","app/appointmentDirect.js","app/pawPass.js","app/locations.js","app/components/EditUserModal/EditUserModal.js","app/team.js","app/components/ChangePassword/ChangePasswordModal.js","app/userProfile.js","app/releases.js","app/billing.js","app/company.js","app/components/customSlider.js","app/components/TextInput.js","app/editLocation.js","app/adminPanel.js","app/activationPage.js","utilities.js","pages/error.js","pages/sendNewLead.js","pages/knowledgeBaseWidget.js","app/kontakConfig.js","app/kontakDni.js","app/components/RepeaterComponent.js","app/components/MessageModal.js","app/editDni.js","app/app.js","index.js","img/download.svg","img/edit.svg","img/left-arrow.svg","img/down.svg","img/type-1.svg","img/type-2.svg","img/log-in.jpg","img/logo.png"],"names":["module","exports","dev","staging2","staging","env","api","setDevelopment","sessionStorage","setItem","window","location","reload","setLocal","setStaging","setStaging2","setProduction","removeItem","Boolean","hostname","match","apiUrltemp","localPath","host","_","isNil","getItem","apiUrl","API_URL","getCurrentUserId","Cookies","get","parseInt","getCurrentUserName","getCurrentUserAvatar","getCurrentCompanyLogo","getCurrentUserEmail","isKontakAdmin","getAccessToken","PIMS_DETAILS","rhapsody","id","name","urlBase","structureUrl","pattern","undefined","vetspire","avimark","cornerstone","evet","vetter","impromed","digitail","provet","shepherd","ezyvet","structure","cornerstone_local","avimark_local","impromed_local","evet_local","vetter_local","petdesk","IMAGE_VALID_EXTENSIONS","IMAGE_ACCEPT_EXTENSIONS","map","ext","join","createLabelByPimsTypeID","pimsTypeID","settings","pims","Object","values","find","pimsName","defaultText","default","createPlaceholderToUrlBaseField","_pims$urlBase","urlStructure","sortPimsTypeByLowercaseName","pimsTypeA","pimsTypeB","nameA","toLowerCase","nameB","handleFileUpload","event","uploadFunction","setErrorMessage","clearError","_fileInput$files","_file$name$split$pop","validExtensions","arguments","length","maxSizeBytes","maxHeight","maxWidth","fileInput","target","file","files","validateFileSize","value","validateFileExtension","fileExtension","split","pop","includes","handleTiffFile","validateImageDimensions","_file$name$split$pop2","async","reader","FileReader","onload","e","image","decode","Uint8Array","result","width","height","error","readAsArrayBuffer","size","_URL","URL","webkitURL","Image","objectUrl","createObjectURL","revokeObjectURL","src","logoutUtility","remove","href","saveToCookies","user","set","kontakAdmin","token","loggedInDate","JSON","stringify","privileges","roleId","email","avatar","isEnableAppDirect","secretKey","ajaxCaller","url","parameters","ajaxNonJsonCaller","then","response","json","globalSpinner","document","getElementById","style","display","fetch","status","Promise","reject","catch","console","authHeaders","Headers","Authorization","Accept","FacilitiesPicker","props","regionsLocations","setRegionLocations","useState","useEffect","fetchData","showAssignedLocations","userId","method","headers","countOfCheckedRegions","currentUserGroups","forEach","region","countOfRegionGroups","roleGroups","item","regionId","groups","checked","facility","x","groupIds","every","setAllLocationsSelected","onChange","onInit","chartType","$","on","stopPropagation","allLocationsSelected","React","createElement","Fragment","className","subClassName","type","data-toggle","aria-haspopup","aria-expanded","require","alt","aria-labelledby","toogleAll","newRegionLocations","htmlFor","key","changedRegion","changeRegion","data-target","aria-controls","facilityId","changeFacility","$Cookies","PrivilegeChecker","privilege","parse","Privileges","EditMode","_ref","tabIndex","role","aria-hidden","data-dismiss","aria-label","Select2","data-placeholder","data-allow-clear","data","getWidgetTypesForAdd","defaultValue","singleWidgetTypeId","options","placeholder","language","noResults","theme","minimumResultsForSearch","setSingleWidgetTypeId","singleWidgetIsExpanded","setSingleWidgetIsExpanded","min","max","singleWidgetLastPeriodRange","setSingleWidgetLastPeriodRange","text","singleWidgetPeriodType","setSingleWidgetPeriodType","singleWidgetIsLineChart","setSingleWidgetIsLineChart","showXLabels","setShowXLabels","showYLabels","setShowYLabels","onClick","clearSingleWidgetFields","disabled","saveDisabled","saveSingleWidget","ViewAfterHoursTrendLine","ExportData","ViewChatsChartObject","ViewLeadsChartObject","ViewConversionToLeadsChartObject","ViewClientValueChartObject","ViewEditWorkHours","ViewEditClientValue","ViewEditUsersAndRoles","ViewEditFacilityAndRegions","ViewCalls","ViewAppointments","convertToDecimalWithComma","Math","round","toString","replace","findLineByLeastSquares","values_x","values_y","sum_x","sum_y","sum_xy","sum_xx","count","y","values_length","Error","v","m","b","result_values_x","result_values_y","push","Widget","chartPointFormatter","widget","widgetTypeId","this","toFixed","series","chart","setChart","chartRangeType","columnsReferences","showPEPeriod","setShowPEPeriod","showAdSeries","setShowAdSeries","chartOptions","setChartOptions","tooltip","backgroundColor","borderWidth","shadow","useHTML","padding","borderRadius","headerFormat","pointFormatter","footerFormat","events","load","showLoading","setTimeout","hideLoading","bind","legend","enabled","credits","title","loading","hideDuration","showDuration","xAxis","tickInterval","labels","yAxis","plotOptions","column","grouping","isLineChart","fillColor","lineWidth","entityType","valueName","setData","applyWithAfterHours","chartOptionsNew","isExpanded","widgetType","afterHours","withAfterHours","seriesIndex","findIndex","refreshChart","afterHoursResults","a","period","scrollIntoView","block","alignToTop","withAfterHoursDiff","totalValue","afterHoursValue","normalHoursValue","afterHoursCallback","showPEPeriodCallback","applyshowPEPeriod","showAdSeriesCallback","applyshowAdSeries","trendLineCallback","applyWithTrendLine","withTrendLine","formattedResponse","results","xPoints","index","yPoints","trendLineYPoints","parseFloat","extractPeriodString","periodType","options3d","alpha","beta","viewDistance","depth","formatter","obj","reportType","endOnTick","maxPadding","minorTickLength","tickLength","visible","stacking","pointWidth","pointPadding","groupPadding","animation","marker","radius","symbol","lineColor","color","linearGradient","x1","y1","x2","y2","stops","additionalSeries","arrSeries","trim","i","lineCol","barCol","trendLineSeriesIndex","body","dateFrom","moment","add","lastPeriodRange","dateTo","isLeads","formattedResponse01","formattedResponse02","series1Index","results01","series2Index","results02","differenceData","calculateDifference","minuend","subtahend","point","log","hookCallbackGroups","editMode","hookCallback","calculateTotalValues","total","NavLink","preventDefault","to","pathname","dateRange","showAfterHours","allWidgets","widgetTypes","removeWidget","paddingLeft","paddingTop","paddingRight","displayTotal","cursor","selectForEdit","textAlign","NumberFormat","displayType","thousandSeparator","prefix","HighchartsReact","allowChartUpdate","highcharts","Highcharts","callback","ChartsArea","isError","filter","columnIndex","changePercentage","random","EditButton","saveWidgetsPositions","data-toggle-second","data-offset","data-placement","editModeClick","Dashboard","setWithAfterHours","setWithAfterHoursDiff","setshowPEPeriod","setWithTrendLine","setAllWidgets","getItems","widgets","hasPrivilege","rightColumnElements","setRightColumnElements","leftColumnElements","setLeftColumnElements","reorderWigets","reorderedWidgets","rowIndex","newWidgets","element","updateWidgets","classList","filterOpened","setFilterOpened","dragular","setDragular","setEditMode","setGroupIds","editModeCallback","setupDrake","leftColumnContainer","rightColumnContainer","drake","Dragula","moves","el","source","sibling","lc","Array","prototype","slice","call","children","firstChild","rc","nw","destroy","setWidgetTypes","filteredTypes","editWidgetId","setEditWidgetId","uniqTypes","w","getWidgetTypesForEdit","updateWidget","toggleFilter","regionFacilities","newGroupIds","group","afterLogin","params","search","reduce","acc","row","args","redirectURL","form","action","input","appendChild","submit","Authentication","setEmail","password","setPassword","authenticated","setAuthenticated","authenticationFailed","setAuthenticationFailed","authenticatedUser","setAuthenticatedUser","companies","setCompanies","companyId","setCompanyId","passwordRecoveryEmail","setPasswordRecoveryEmail","showCompanySelection","setShowCompanySelection","company","setCompany","getCompany","logo","companyKey","authenticateUser","errorMessage","autoComplete","message","modal","test","validateEmail","isPasswordRecoveryDisabled","backgroundImage","onKeyPress","which","Modal","show","onHide","CreatableSelect","isClearable","isDisabled","isLoading","isCreatable","onCompanySelected","label","hasCalls","hasLiveChats","isUncategorized","formatCreateLabel","isValidNewOption","cleanNumber","isNaN","ReportChart","chartVisible","setChartVisible","exportData","setExportData","setShowAfterHours","setChartRangeType","setIsLineChart","setReportType","convertToInteger","removeClassName","classNameToRemove","filteredClassNames","chartName","mouseOver","columnElement","headerElement","mouseOut","enableAh","getExportData","prevReportType","useRef","prevDateRange","prevGroupIds","prevChartRangeType","prevIsLineChart","prevIsLineChartProp","areGroupIdsEqual","current","cumData","cumDataAfterHours","date","percentageAhToTotalChats","conv","change","differencePercentage","difference","res","new","existing","openHours","answered","missed","missed_to_vm","abandoned","ref","createRef","CSVLink","filename","overflowX","onMouseEnter","refresh","KontakDateRangePicker","myRef","setPickerRef","DateRangePicker","onApply","initialSettings","startDate","endDate","autoApply","ranges","subtract","startOf","ChartArchive","keyword","setKeyword","searchKeyword","countOfThreads","setCountOfThreads","reportFilters","setDateRange","returnIfExistDateRangeFilter","tmpStart","Date","tmpEnd","setDate","getDate","toLocaleDateString","threads","setThreads","currentPage","setCurrentPage","getCountOfThreadsCallback","propsKeyword","startAt","endAt","pageSize","searchString","getCountOfThreadsForPeriod","getThreadsCallback","sortRuleNumber","getThreadsForPeriod","propsKeywordChangedCallback","threadConversation","setThreadConversation","conversationThreadId","setConversationThreadId","getConversationCallback","addSearchKeyword","updateArchive","extractMessage","thread","indexOf","messages","substring","setDatePickerRef","evt","picker","toDate","Moment","format","agentName","messageCount","Highlighter","highlightStyle","background","fontWeight","searchWords","autoEscape","textToHighlight","Pagination","innerClass","itemClass","activePage","itemsCountPerPage","totalItemsCount","nextPageText","prevPageText","firstPageText","lastPageText","hideFirstLastPages","pageNumber","liveChatThreadId","authorName","facilityName","PerfectScrollbar","userType","activeStyle","wordBreak","wordWrap","marginLeft","blob","Blob","fileURL","open","DashboardReports","ok","download","click","useGlobal","globalHook","counter","addToCounter","store","amount","newCounterValue","state","setState","CICReport","selectedColumnNumber","setSelectedColumnNumber","category","numberOfInquiries","hoverColumn","percentageOfInquiries","setDataToSessionStorage","getDataFromSessionStorage","chartTypeLocal","Reports","setReportFilters","getWidgetTypes","initReportFilters","reportFilterz","localWidgetTypes","existingWidget","anyWidget","returnIfExistWithAfterHoursDiffFilter","returnIfExistShowPEPeriodFilter","returnIfExistShowAdSeriesFilter","returnIfExistAfterHoursFilter","returnIfExistGroupIdsFilter","returnIfExistTrendLineFilter","setChartType","changeCurrentReport","datePickerRef","setStartDate","setEndDate","steps","intro","position","tooltipClass","highlightClass","globalState","userIntroEnabled","setUserIntroEnabled","currentIntroStep","setCurrentIntroStep","introId","setIntroId","finished","currentStep","navBarIsOpened","setNavBarIsOpened","isShowIntros","setIsShowIntros","locationKeys","setLocationKeys","history","useHistory","historyCallback","listen","keys","lastSearches","setLastSearches","getSearchArchive","Steps","initialStep","onExit","onExitStep","step","changeCurrentStep","data-parent","Profile","categoryNameToDelete","setCategoryNameToDelete","categoryIdToDelete","setCategoryIdToDelete","setGroups","groupId","setGroupId","isKontakAdminHere","searchFacilityText","setSearchFacilityText","configureSearch","selectedGroup","categoriesHookCallback","getCategories","categories","setCategories","ccLeadsEmails","setCCLeadsEmails","sendLeadsEmails","setSendLeadsEmails","ccLeadsTo","sendLeadsTo","setFirstCategoryId","categoryName","setCategoryName","getCategoriesCallback","saveEmailsChanges","leadsEmails","ccEmails","ccLeadsLine","sendLeadLine","editedCategoryName","setEditedCategoryName","firstCategoryId","Autocomplete","getItemValue","items","renderItem","isHighlighted","marginTop","onSelect","val","selectedGroupName","searchedGroup","onGroupSelected","inputProps","newLeadsEmails","splice","removeSendLeadsEmail","addSendLeadsEmail","removeCCLeadsEmail","addCCLeadsEmail","concat","updateCategoryName","changeIsHighlighted","displayInCICReport","changeVisibleInCICReport","ProfileCategory","categoryId","setCategory","getQuestionAnswers","questionAnswers","setQuestionAnswers","setFirstQuestionForIntro","containerElements","setContainerElements","container","childContainerElements","reorderHookCallback","reorderQuestionAnswers","reorderedElements","reorderedQuestionAnswers","containerElement","updateReorderedQuestionAnswers","editableQuestion","setEditableQuestion","question","setQuestion","answer","setAnswer","answerText","setAnswerText","createQuestionAnswer","prev","setSearchString","firstQuestionForIntro","ReactQuill","content","delta","editor","getText","questionAnswer","matchQuestionAnswer","removeQuestionAnswer","updateQuestionAnswer","readOnly","updatedAt","isLockedForEdit","isPending","SettingsPageNavBar","pageName","ErrorModal","setAndShowError","errorTitle","whiteSpace","FaExclamationCircle","marginRight","fontSize","Regions","regions","setRegions","getRegions","getRegionsCallback","newRegionName","setNewRegionName","editingRegionName","setEditingRegionName","removeRegion","updateRegion","groupCount","groupNames","AppointmentDirect","currentUserSecretKey","PawPass","apiKey","setApiKey","userEmail","setUserEmail","showSpinner","hideSpinner","getApiKey","useCallback","setOrgInfo","getOrgInfo","companyLogo","org","logoURL","logoElement","setAttribute","Locations","newGroupRegionId","setNewGroupRegionId","newGroupName","setNewGroupName","newGroupLVCId","setNewGroupLVCId","createGroup","createGroupJson","liveChatId","typeformId","setTypeformId","setCompanyKey","getGroups","companyUnion","getGroupsCallback","appointmentsPercentage","setAppointmentsPercentage","averageClientValue","setAverageClientValue","changeClientValues","removeGroup","overflowWrap","CopyToClipboard","groupKey","data-trigger","xmlns","viewBox","fill","d","EditUserModal","isModalOpen","editUserName","editUserEmail","editUserId","editUserRoleId","origUserName","origUserRoleId","origGroupIds","roles","setEditUserName","setEditUserRoleId","facilitiesChanged","setOrigGroupIds","inviteUserById","updateUser","setIsModalOpen","displayInvitationSentLabel","isUpdateDisabled","String","data-original-title","initialRegions","isArray","initialGroupIds","flatMap","Team","setRoles","getRoles","clearRoleFields","users","setUsers","getUsers","userName","setUserName","selectedRoleId","setSelectedRoleId","setPrivileges","getPrivileges","assignedPrivileges","setAssignedPrivileges","privilegeClicked","privilegeId","privs","some","roleName","setRoleName","setEditUserEmail","setEditUserId","setDisplayInvitationSentLabel","setOrigUserName","setOrigUserRoleId","inviteUser","forService","userRoleId","cantSendInvite","extractPrivileges","notes","privilegeIds","savePrivileges","removeRole","removeUser","locations","getRole","handleEditButtonClick","ChangePasswordModal","featureFlags","oldPassword","newPassword","newPasswordConfirm","logMeOut","modalErrorMessageTitle","modalErrorMessage","modalMessage","setOldPassword","setNewPassword","setNewPasswordConfirm","setLogMeOut","resetFields","changePassword","ErrorMessages","_ref2","WarningMessages","_ref3","SuccessMessage","_ref4","class","UserProfile","setAvatar","setErrorTitle","setModalMessage","notificationMessage","setNotificationMessage","setModalErrorMessage","setModalErrorMessageTitle","clearModalMessage","fileInputRef","getUser","uploadAvatar","FormData","append","fileName","setFeatureFlags","context","isEnabled","getFeatureFlags","accept","textContent","FaCheckCircle","Releases","releases","setReleases","release","releaseNotes","improvements","fixes","Billing","billings","setBillings","billing","number","totalAmount","Company","companyName","setCompanyName","setCompanyLogo","CompanyApiKey","setCompanyApiKey","getCOmpanyCallback","uploadLogo","generateApiKey","CustomSlider","PureComponent","constructor","super","update","_options","others","ionSliderRange","componentDidMount","ionRangeSlider","render","node","defaultProps","skin","doNothing","TextInput","forwardRef","onBlur","errorMsg","propTypes","PropTypes","string","isRequired","func","oneOfType","oneOf","bool","digitailId","EditLocation","_features$useSmsFeatu","isLocationMatchError","setIsLocationMatchError","clinicsList","setClinicsList","setFacilityName","telephonyTypeID","setTelephonyTypeID","containerID","setContainerID","tenantID","setTenantID","pimtypes","setPimtypes","setGroupKey","pimsapiKey","setPIMSAPIKey","pimsOrgID","setPIMSOrgID","pimsPartnerID","setPIMSPartnerID","outboundSmsNumber","setOutboundSmsNumber","pimsClientBaseUrl","setPimsClientBaseUrl","cloudRetrieverApiKey","setCloudRetrieverApiKey","streetAddress","setStreetAddress","addressLine","setAddressLine","city","setCity","zipCode","setZipCode","setRegionId","stateId","setStateId","timeZoneId","setTimeZoneId","businessHours","setBusinessHours","setPIMSTypeID","mondayIsClosed","setMondayIsClosed","tuesdayIsClosed","setTuesdayIsClosed","wednesdayIsClosed","setWednesdayIsClosed","thursdayIsClosed","setThursdayIsClosed","fridayIsClosed","setFridayIsClosed","saturdayIsClosed","setSaturdayIsClosed","sundayIsClosed","setSundayIsClosed","hideCallRecordings","sethideCallRecordings","features","setFeature","useSmsFeature","useCalendarFeature","tokenId","setTokenId","accessToken","setAccessToken","serviceName","setServiceName","tokenType","setTokenType","expiresIn","setExpiresIn","refreshToken","setRefreshToken","sameAsOutboundCID","setSameAsOutboundCID","outboundCallerID","setOutboundCallerID","getGroupCallback","getToken","states","setStates","timeZones","setTimeZones","extractTime","time","toTime","valueOf","checkLocationMutation","useMutation","mutationFn","page","rpp","fetchClinicsList","shepherdClinics","compareFacilityNameToShepherdClinics","clinics","clinicsWithMatchingName","clinic","_clinicsWithMatchingN","_clinicsWithMatchingN2","onSuccess","isLocationNameCorrect","onError","err","isShepherdSelected","isDigitailSelected","urlBaseInputRef","errorURLBaseInput","setErrorURLBaseInput","errorPimsOrgId","setErrorPimsOrgId","handleBlur","validateURLById","_pims$urlBase2","urlPattern","RegExp","provetId","updatedUrl","appendPimsPartnerIDToUrl","urlWithoutAlphanumericInTheEnd","endsWith","fetchClinicId","kontakApiToken","getClinicIDFromDigitail","kontakServicesToken","digitailOauth2Token","requestOptions","_data$clinic","clinicId","handleLocationNameBlur","mutate","OverlayTrigger","placement","overlay","Tooltip","FontAwesomeIcon","icon","faInfoCircle","sort","selectedPimstypeId","Number","handleOauth2Blur","deployFieldPIMSPartnerID","from","mondayOpen","mondayClose","slider","hide_min_max","prettify","tuesdayOpen","tuesdayClose","wednesdayOpen","wednesdayClose","thursdayOpen","thursdayClose","onFinish","scope","copy","fridayOpen","fridayClose","saturdayOpen","saturdayClose","sundayOpen","sundayClose","AdminPanel","getAllCompanies","companyUnions","setCompanyUnions","getTypeformIdForCompany","companyUnionId","liveChatGroupId","setLiveChatGroupId","editableGroupId","setEditableGroupId","newGroupCompanyId","setNewGroupCompanyId","changeCompanyName","archived","assignGroupToCompanyUnion","switchArchiveState","appointmentDirectEnabled","changeappointmentDirectEnabled","acceptsAppointmentRequests","switchAcceptsAppointmentRequests","pawPassEnabled","changePawPassEnabled","ActivationPage","repeatPassword","setRepeatPassword","activationFailed","setActivationFailed","isСomplexPassword","setIsСomplexPassword","validateKeyCallback","validateSecretKey","userActivate","submitAllowed","inputChange","callBack","Component","AppointmentRequestsTypes","appointmentRequestsTypesForGroupWhichAcceptsThem","appointmentRequestsTypesForGroupWhichNotAcceptThem","SendNewLead","clientTypeChange","leadType","changeGroup","groupIdInDropDown","changeGroupInternal","groupsSelected","groupEmails","selectedGroupId","emails","methodOfCommunicationChange","communicationMethod","canBeSend","additionalInfo","appointmentRequestTypes","cityState","clientFirstName","clientLastName","disablePhone","contactNumber","getSelectedGroup","petsBreed","petsMonth","petsName","petsWeek","petsYear","disablePhoneChange","createLead","requestFailed","appointmentRequestTypeId","selectedAppointmentRequestTypeId","sentToEmail","selectedEmail","onCancel","sendButtonDebounceChanges","sendColorDebounceChange","canBeSendChange","validatePertsYear","validatePertsMonth","validatePertsWeek","debounce","cancelCreate","reuqestFailed","getElementsByClassName","emailsList","marginBottom","defaultChecked","resize","minWidth","InputMask","mask","KnowledgeBaseWidget","allQuestionAnswers","handleKeyDownInput","isSearchingAll","searchingQuestionAnswerByKeyword","selectedCategoryId","backToAllSections","onChangeInput","createHighlight","inputText","outputText","addClick","copied","getQuestionAnswersByCategory","isCompanyNotFound","currentLiveChatThreadId","widgetColor","myObject","LiveChat","profile","chat","thread_id","onKeyDown","lineHeight","unhighlightStyle","onCopy","isCreateNewLead","KontakConfig","threadsUpdaterStatisticEmailsLine","setThreadsUpdaterStatisticEmailsLine","threadsUpdaterStatisticEmails","setThreadsUpdaterStatisticEmails","nonReportingDaysForEmailNotification","setNonReportingDaysForEmailNotification","kontakConfig","setKontakConfig","getKontakConfig","threadsUpdaterStatisticEmail","threadsUpdaterStatisticEmailLine","removeEmail","addEmail","KontakDni","newDniUrlName","setNewDniName","newDniUrl","setNewDniUrl","currentCompanyId","isLinkVisible","setIsLinkVisible","createDniUrl","companyid","dniurls","setDniUrls","getDniUrls","setEnvScriptLinkByUrl","getEnvScriptLinkByUrl","getDniUrlsCallback","scriptLinkByUrl","dniurl","removeDniUrl","RepeaterComponent","referrerTypes","formats","caches","handleItemChange","handleReffererTypeAdd","handleClearCache","setIsLoading","separatorStyle","customStyles","control","provided","selectProps","menuPortal","zIndex","deactivateItem","updatedItems","option","dropdown_1","handleCreatePromise","resolve","handleCreate","newValue","updateItem","field","getMaskByFormat","triggerElement2Change","res2","getUTCDate","zindex","elements","entries","elId","element2","Event","bubbles","dispatchEvent","addEventListener","temp","mapItemDropDown","inputValue","lastIndex","maxValue","Infinity","newOption","createJson","toUpperCase","tag","record","postDniReferrerType","currentDateTime","getTime","getTimezoneOffset","_getMaskByFormat","_getMaskByFormat3","dniUrlId","inputMask_1","dropdown_phone_format_1","inputMask_2","dropdown_phone_format_2","explicit_replace","url_param","dropdown_cache","copyItem","deletedItem","onCreateOption","styles","maskChar","mask_1","_getMaskByFormat2","assign","mask_2","_getMaskByFormat4","data-place","inputString","dateObject","getFullYear","getMonth","getHours","getMinutes","getDateTime","addItem","MessageModal","promptMessage","setAndShowPrompt","promptTitle","EditDni","setPromptMessage","clearMessage","updateDniUrl","dniUrlName","dniUrl","setUrlName","setUrl","setItems","setRefferers","setCaches","setFormats","getData","expirationdays","expirationDays","dniItems","mapDniReferrerModel","getDniReferrersCallback","models","direction","mappedItems","model","dniReferrerTypeId","oldPhoneText","fromDniFormatId","newPhoneText","toDniFormatId","explicitReplace","urlCustomParameter","dniCacheTypeId","inputMask_2_flag","inputMask_1_flag","createdAt","mappedModels","toUTCString","deleteDniReferrers","clearCache","handleSaveClick","deletedItems","App","defaultVersion","domain","version","PHONES_URL","isAuthenticated","today","loggedInDateString","hours","isShowAppDirect","globalActions","queryClient","QueryClient","QueryClientProvider","client","Router","Route","path","component","exact","introType","repeatIntro","extractIntroTypeFromPage","border","kontakDni","KontakDev","ReactDOM","NewApp","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.70051809.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/left.458ef02b.svg\";","module.exports = __webpack_public_path__ + \"static/media/lock.f0d99019.svg\";","module.exports = __webpack_public_path__ + \"static/media/plus-light.0b492472.svg\";","module.exports = __webpack_public_path__ + \"static/media/customize-dashboard.dc84b5b3.svg\";","module.exports = __webpack_public_path__ + \"static/media/filter.258af22b.svg\";","module.exports = __webpack_public_path__ + \"static/media/bin.65eae96d.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMjHxIGmVAAABQ0lEQVQ4T6WUsUrEQBCG82jBw0cQPA6fwEJSSAoLG88HsDiwtRKsFEUQBcHGziIcCMLBQTixDghr87v/JBs2cTbJnYEvZHdnv+zObBIBUJmenmE82cdoexfx1o7AZ/ZxrB3v+NNxkBzXgj4Y257faPirGQrn+I5/yRy+VG7rbDOE274ItQCSXmZYFYwrr2L5itmeHkvsFUk1tcH48AUr0VjRZ16LzfuNHm+hK+Ix0Abj6wXM9w/MxxPGbJ9nEGeRYdaOraBrcDHS5y9ZIZbVCxToCubPJ73PYSgzOe6O9BhH/wpdLq3s8SSQngpZYTCHjqsFdSjeLvRxD8lhsMobIFW2L+/MY/JQFqPruDjo6v1SktuyIGbeLWx8KWTo8dHgXOephWQTqS8jDSFZ50fhtunTaPiwYjwG/qr5zD6OteNLEP0CHD9VQDE5O9YAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/lock-opened.00469949.svg\";","module.exports = __webpack_public_path__ + \"static/media/view.4d668257.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo-k.e706980d.png\";","module.exports = __webpack_public_path__ + \"static/media/link1.c2405c15.svg\";","module.exports = __webpack_public_path__ + \"static/media/link2.c9d9e793.svg\";","module.exports = __webpack_public_path__ + \"static/media/link3.a211186c.svg\";","module.exports = __webpack_public_path__ + \"static/media/appointmentdirect.09ec2af8.svg\";","module.exports = __webpack_public_path__ + \"static/media/pawPassIcon.83f55c18.png\";","module.exports = __webpack_public_path__ + \"static/media/link4.e31f15c6.svg\";","module.exports = __webpack_public_path__ + \"static/media/logout.9306e5fc.svg\";","export const local = 'localhost:3000';\nexport const dev = 'dev.getkontak.com';\nexport const production = \"app.getkontak.com\";\nexport const staging2 = \"kontakuiprod-stage2.azurewebsites.net\";\nexport const staging = \"kontakuiprod-stage.azurewebsites.net\";","import * as env from './env'\nexport default {\n env: {\n api: {\n setDevelopment: ()=>{\n sessionStorage.setItem('apiLocalPath', env.dev);\n window.location.reload()\n },\n setLocal: ()=>{\n sessionStorage.setItem('apiLocalPath', env.local);\n window.location.reload()\n },\n setStaging: ()=>{\n sessionStorage.setItem('apiLocalPath', env.staging);\n window.location.reload()\n },\n setStaging2: ()=>{\n sessionStorage.setItem('apiLocalPath', env.staging2);\n window.location.reload()\n },\n setProduction: ()=>{\n sessionStorage.removeItem('apiLocalPath');\n window.location.reload()\n }\n }\n }\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://bit.ly/CRA-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.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && '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\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\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\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 .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 (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\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 });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","// Default to production for safety.\nimport * as env from './env'\nimport _ from 'lodash'\n\nlet apiUrltemp = \"https://kontakprod.azurewebsites.net/api/\";\n\n// USE URL BY DEFAULT\nlet localPath = window.location.host;\n\n// USE SESSION SETTING\nif (!_.isNil(sessionStorage.getItem('apiLocalPath'))) {\n localPath = sessionStorage.getItem('apiLocalPath')\n}\n\nif (localPath === env.local) {\n apiUrltemp = \"https://localhost:5001/api/\";\n}\n\nif (localPath === env.dev || localPath === \"kontakuidev.azurewebsites.net\") {\n apiUrltemp = \"https://kontakdev.azurewebsites.net/api/\";\n}\n\nif (localPath === env.staging) {\n apiUrltemp = \"https://kontakprod-stage.azurewebsites.net/api/\";\n}\n\nif (localPath === env.staging2) {\n apiUrltemp = \"https://kontakprod-stage2.azurewebsites.net/api/\";\n}\n\n// runtime configuration...\nlet apiUrl = window.API_URL || apiUrltemp\n\nexport const imageContainerUrl = \"https://kontakstorage.blob.core.windows.net/\"; // TODO: Add this blob to azure for the future images\n\nexport {\n apiUrl\n};\n\n","import Cookies from \"js-cookie\";\r\n\r\nexport const getCurrentCompanyId = () => {\r\n if (Cookies.get(\"company_id\") == null) {\r\n return null;\r\n } else {\r\n return parseInt(Cookies.get(\"company_id\"));\r\n }\r\n};\r\n\r\nexport const getCurrentUserId = () => {\r\n if (Cookies.get(\"user_id\") == null) {\r\n return null;\r\n } else {\r\n return parseInt(Cookies.get(\"user_id\"));\r\n }\r\n};\r\n\r\nexport const getCurrentUserName = () => {\r\n if (Cookies.get(\"user_name\") == null) {\r\n return null;\r\n } else {\r\n return Cookies.get(\"user_name\");\r\n }\r\n};\r\n\r\nexport const getCurrentUserAvatar = () => {\r\n if (Cookies.get(\"user_avatar\") == null) {\r\n return null;\r\n } else {\r\n return Cookies.get(\"user_avatar\");\r\n }\r\n};\r\n\r\nexport const getCurrentUserSecretKey = () => {\r\n if (Cookies.get(\"secret_key\") == null) {\r\n return null;\r\n } else {\r\n return Cookies.get(\"secret_key\");\r\n }\r\n};\r\n\r\nexport const getCurrentCompanyLogo = () => {\r\n if (Cookies.get(\"company_logo\") == null) {\r\n return null;\r\n } else {\r\n return Cookies.get(\"company_logo\");\r\n }\r\n};\r\n\r\nexport const getIsEnableAppDirect = () => {\r\n if (Cookies.get(\"isEnableAppDirect\") == null) {\r\n return null;\r\n } else {\r\n return Cookies.get(\"isEnableAppDirect\");\r\n }\r\n};\r\n\r\nexport const getCurrentCompanyKey = () => {\r\n if (Cookies.get(\"companyKey\") == null) {\r\n return null;\r\n } else {\r\n return Cookies.get(\"companyKey\");\r\n }\r\n};\r\n\r\nexport const getCurrentUserEmail = () => {\r\n if (Cookies.get(\"user_email\") == null) {\r\n return null;\r\n } else {\r\n return Cookies.get(\"user_email\");\r\n }\r\n};\r\n\r\nexport const getCurrentUserPrivileges = () => {\r\n if (Cookies.get(\"privileges\") == null) {\r\n return null;\r\n } else {\r\n return Cookies.get(\"privileges\");\r\n }\r\n};\r\n\r\n\r\nexport const getCurrentUserRoleId = () => {\r\n if (Cookies.get(\"role_id\") == null) {\r\n return null;\r\n } else {\r\n return parseInt(Cookies.get(\"role_id\"));\r\n }\r\n};\r\n\r\nexport const isKontakAdmin = () => {\r\n if (Cookies.get(\"kontak_admin\") == null) {\r\n return null;\r\n } else {\r\n return Cookies.get(\"kontak_admin\") === 'true' ? true : false //parseInt(Cookies.get(\"kontak_admin\"));\r\n }\r\n};\r\n\r\nexport const isAuthenticated = () => {\r\n const today = new Date();\r\n const loggedInDateString = Cookies.get(\"logged_in_date\");\r\n\r\n if (loggedInDateString == null) {\r\n return false;\r\n }\r\n\r\n const loggedInDate = new Date(loggedInDateString);\r\n const hours = (today - loggedInDate) / 36e5;\r\n if (Cookies.get(\"access_token\") != null && hours < 23) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nexport const getAccessToken = () => {\r\n return Cookies.get(\"access_token\");\r\n}","export const DIGITAIL_PIMS_TYPE_ID = 8;\nexport const SHEPHERD_PIMS_TYPE_ID = 11;\nexport const SHEPHERD_CLIENT_BASE_URL = 'https://app.shepherd.vet';\n\nexport const PIMS_DETAILS = {\n rhapsody: {\n id: \"1\",\n name: \"rhapsody\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n },\n vetspire: {\n id: \"2\",\n name: \"vetspire\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n },\n avimark: {\n id: \"3\",\n name: \"avimark\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n },\n cornerstone: {\n id: \"4\",\n name: \"cornerstone\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n },\n evet: {\n id: \"5\",\n name: \"evet\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n },\n vetter: {\n id: \"6\",\n name: \"vetter\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n },\n impromed: {\n id: \"7\",\n name: \"impromed\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n },\n digitail: {\n id: \"8\",\n name: \"digitail\",\n urlBase: {\n structureUrl: \"https://vet.digitail.io\",\n pattern: undefined\n }\n },\n provet: {\n id: \"10\",\n name: \"provet\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n },\n shepherd: {\n id: \"11\",\n name: \"shepherd\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n },\n ezyvet: {\n id: \"12\",\n name: \"ezyvet\",\n urlBase: {\n structure: \"https://{name}.us{##}.ezyvet.com\",\n pattern: \"^https://\\\\w+\\\\.us\\\\w{2}\\\\.ezyvet\\\\.com$\",\n }\n },\n cornerstone_local: {\n id: \"13\",\n name: \"cornerstone_local\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n },\n avimark_local: {\n id: \"14\",\n name: \"avimark_local\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n },\n impromed_local: {\n id: \"16\",\n name: \"impromed_local\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n },\n evet_local: {\n id: \"17\",\n name: \"evet_local\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n },\n vetter_local: {\n id: \"18\",\n name: \"vetter_local\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n },\n petdesk: {\n id: \"19\",\n name: \"petdesk\",\n urlBase: {\n structureUrl: \"\",\n pattern: undefined\n }\n }\n};\n\n// Define default values for Image upload validation\nexport const IMAGE_VALID_EXTENSIONS = ['jpg', 'jpeg', 'png', 'tiff', 'tif', 'svg'];\nexport const IMAGE_ACCEPT_EXTENSIONS = IMAGE_VALID_EXTENSIONS.map(ext => `.${ext}`).join(', ');;\nexport const IMAGE_MAX_SIZE_BYTES = 1000000;\nexport const IMAGE_MAX_HEIGHT = 500;\nexport const IMAGE_MAX_WIDTH = 500; ","// Dependencies\n\n// Helpers\nimport { PIMS_DETAILS, IMAGE_VALID_EXTENSIONS, IMAGE_ACCEPT_EXTENSIONS, IMAGE_MAX_SIZE_BYTES, IMAGE_MAX_WIDTH, IMAGE_MAX_HEIGHT } from \"./constants\";\nimport { ajaxCaller } from \"../../ajaxCaller\";\nimport { decode } from \"tiff\";\nimport Cookies from 'js-cookie';\n\n// Function: createLabelByPimsTypeID\n\n/**\n * Returns the text associated with a given PIMS type ID.\n * If the ID is not found in the settings, it returns the default text.\n *\n * @param {string} pimsTypeID - The PIMS type ID for which to look up the text.\n * @param {Object} settings - Object containing key-value pairs of ID and text, and a default value.\n * @param {string} settings.default - The default text to return if the ID is not found.\n * @returns {string} - The text associated with the given ID, or the default text if the ID is not found.\n */\n\nexport const createLabelByPimsTypeID = (pimsTypeID, settings) => {\n const pims = Object.values(PIMS_DETAILS).find(pims => pims.id === pimsTypeID);\n const pimsName = pims?.name || \"\";\n const defaultText = settings.default || \"\";\n return settings[pimsName] || defaultText;\n};\n\n// Functions: deployFieldPIMSPartnerID\n\n/**\n * Determines whether to display a component based on the PIMS type ID.\n * If the ID is in the array, the component should not be displayed.\n *\n * @param {string} pimsTypeID - The PIMS type ID to check.\n * @returns {boolean} - Returns false if the ID is in the array (indicating the component should not be displayed), otherwise true.\n */\nexport const deployFieldPIMSPartnerID = (pimsTypeID) => {\n const ezyvetId = PIMS_DETAILS.ezyvet.id\n const shepherdId = PIMS_DETAILS.shepherd.id\n const digitailId = PIMS_DETAILS.digitail.id\n\n return ![ezyvetId, shepherdId, digitailId].includes(pimsTypeID);\n};\n\n\n// Functions: createPlaceholderToUrlBaseField\n\n/**\n * Creates a the placeholder for the PIMS type ID.\n * If the ID is not found in the PIMS_DETAILS, it returns a default text.\n *\n * @param {string} pimsTypeID - The PIMS type ID to check.\n * @returns {string} - The URL structure associated with the given ID, or the default text if the ID is not found.\n */\n\nexport const createPlaceholderToUrlBaseField = (pimsTypeID) => {\n const pims = Object.values(PIMS_DETAILS).find(pims => pims.id === pimsTypeID);\n const urlStructure = pims?.urlBase?.structure || \"\";\n return (urlStructure) ? urlStructure : \"PIMS Client BaseURL...\";\n};\n\n\n// Function: validateURLById\n\n/**\n * Validates the URL stored in `pimsClientBaseUrl` based on the pattern associated with the given `pimsTypeID`.\n *\n * This function looks up the URL pattern for a given `pimsTypeID` in the `url` and checks if the \n * URL matches this pattern. It trims any whitespace from `url`\n * before performing the validation.\n * \n * @param {string} pimsTypeID - The PIMS type ID to check.\n * @param {string} url - The url to check.\n * @returns {boolean} - Returns `true` if the `url` matches the pattern for the given `pimsTypeID`, otherwise `false`.\n */\n\nexport const validateURLById = (pimsTypeID, url) => {\n const pims = Object.values(PIMS_DETAILS).find(pims => pims.id === pimsTypeID);\n const urlPattern = pims?.urlBase?.pattern;\n\n if (!urlPattern) {\n return true;\n }\n\n const pattern = new RegExp(urlPattern);\n const isValid = pattern.test(url.trim());\n\n return isValid;\n}\n\n\n\nexport const getClinicIDFromDigitail = (kontakServicesToken, digitailOauth2Token) => {\n const endpointUrl = \"Digitail/auth/me\";\n\n const requestOptions = {\n method: \"GET\",\n headers: new Headers({\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\",\n \"Authorization\": `Bearer ${kontakServicesToken}`,\n \"digitailToken\": digitailOauth2Token\n })\n };\n\n const errorMessage = 'Failed to extract Clinic ID. Please check if the Digitail OAuth2 token is valid.';\n\n return ajaxCaller(endpointUrl, requestOptions)\n .then(({ data }) => {\n const clinicId = data?.clinic?.id;\n\n if (!clinicId) {\n throw new Error();\n }\n\n return { isError: false, data: { clinicId }, message: \"success\" };\n })\n .catch(error => {\n console.log(\"Error:\", error);\n return { isError: true, data: null, message: errorMessage };\n });\n};\n\n/**\n * Sorts two PIMS types by their name properties in lowercase.\n *\n * @param {Object} pimsTypeA - The first PIMS type object.\n * @param {Object} pimsTypeB - The second PIMS type object.\n * @param {string} [pimsTypeA.name] - The name of the first PIMS type.\n * @param {string} [pimsTypeB.name] - The name of the second PIMS type.\n * @returns {number} -1 if pimsTypeA should come before pimsTypeB, 1 if pimsTypeA should come after pimsTypeB, 0 if they are equal.\n */\nexport const sortPimsTypeByLowercaseName = (pimsTypeA, pimsTypeB) => {\n const nameA = (typeof pimsTypeA?.name === 'string' ? pimsTypeA.name.toLowerCase() : '');\n const nameB = (typeof pimsTypeB?.name === 'string' ? pimsTypeB.name.toLowerCase() : '');\n\n if (nameA < nameB) {\n return -1;\n }\n\n if (nameA > nameB) {\n return 1;\n }\n\n return 0;\n}\n\nexport const isValidBaseUrl = (url) => {\n const pattern = new RegExp(\"^(http|https)://\");\n return pattern.test(url);\n}\n\nexport const appendPimsPartnerIDToUrl = (url, pimsPartnerID) => {\n if (!url || !pimsPartnerID) {\n return url;\n };\n\n const urlWithoutAlphanumericInTheEnd = url.replace(/\\/([a-zA-Z0-9]+)\\/?$/, \"\");\n\n\n if (urlWithoutAlphanumericInTheEnd.endsWith(\"/\")) {\n return `${urlWithoutAlphanumericInTheEnd}${pimsPartnerID}`;\n };\n\n return `${urlWithoutAlphanumericInTheEnd}/${pimsPartnerID}`;\n}\n\nexport const handleFileUpload = (\n event,\n uploadFunction,\n setErrorMessage,\n clearError,\n validExtensions = IMAGE_VALID_EXTENSIONS,\n maxSizeBytes = IMAGE_MAX_SIZE_BYTES,\n maxHeight = IMAGE_MAX_HEIGHT,\n maxWidth = IMAGE_MAX_WIDTH\n) => {\n clearError(); // Clear any existing error\n\n const fileInput = event.target;\n const file = fileInput.files?.[0];\n\n if (!file) return;\n\n // Validate file size\n if (!validateFileSize(file, maxSizeBytes, setErrorMessage)) {\n fileInput.value = \"\"; // Reset input\n return;\n }\n\n // Validate file extension\n if (!validateFileExtension(file, validExtensions, setErrorMessage)) {\n fileInput.value = \"\"; // Reset input\n return;\n }\n\n // Handle TIFF files separately\n const fileExtension = file.name.split('.').pop()?.toLowerCase();\n if ([\"tiff\", \"tif\"].includes(fileExtension)) {\n handleTiffFile(file, maxWidth, maxHeight, setErrorMessage, uploadFunction, fileInput);\n } else {\n // Validate image dimensions for non-TIFF files\n validateImageDimensions(file, maxWidth, maxHeight, setErrorMessage, uploadFunction, fileInput);\n }\n};\n\nexport const validateFileExtension = (file, validExtensions, setErrorMessage) => {\n const fileExtension = file.name.split('.').pop()?.toLowerCase();\n if (!fileExtension || !validExtensions.includes(fileExtension)) {\n setErrorMessage(`Unsupported format!\\nMust be one of:\\n ${IMAGE_ACCEPT_EXTENSIONS}`);\n return false;\n }\n return true;\n};\n\nexport const handleTiffFile = async (file, maxWidth, maxHeight, setErrorMessage, uploadFunction, fileInput) => {\n const reader = new FileReader();\n\n reader.onload = async function (e) {\n try {\n\n // Decode the TIFF image\n const tiffImages = await decode(new Uint8Array(e.target.result));\n const image = tiffImages[0]; // Access the first image (for handling the multi-page TIFFs)\n const { width, height } = image;\n\n // Check if the TIFF image exceeds the allowed dimensions\n if (width > maxWidth || height > maxHeight) {\n setErrorMessage(`Max dimensions are:\\n ${maxHeight} height x ${maxWidth} width.`);\n fileInput.value = \"\";\n } else {\n uploadFunction(file);\n }\n } catch (error) {\n\n setErrorMessage(\"Error reading TIFF file.\");\n fileInput.value = \"\";\n }\n };\n // Read the file as an ArrayBuffer\n reader.readAsArrayBuffer(file);\n};\n\nexport const validateFileSize = (file, maxSizeBytes, setErrorMessage) => {\n if (file.size > maxSizeBytes) {\n setErrorMessage(`Maximum file size is ${maxSizeBytes / 1000000}MB.`);\n return false;\n }\n return true;\n};\n\nexport const validateImageDimensions = (file, maxWidth, maxHeight, setErrorMessage, uploadFunction, fileInput) => {\n const _URL = window.URL || window.webkitURL;\n const image = new Image();\n const objectUrl = _URL.createObjectURL(file);\n\n image.onload = function () {\n if ((image.width > maxWidth || image.height > maxHeight) && file.name.split('.').pop().toLowerCase() !== 'svg') {\n setErrorMessage(`Max dimensions are:\\n ${maxHeight} height x ${maxWidth} width.`);\n fileInput.value = \"\";\n } else {\n uploadFunction(file);\n }\n _URL.revokeObjectURL(objectUrl);\n };\n\n image.src = objectUrl;\n};\n\nexport const logoutUtility = () => {\n // Remove all relevant cookies\n Cookies.remove('access_token');\n Cookies.remove('logged_in_date');\n Cookies.remove('role_id');\n Cookies.remove('user_id');\n Cookies.remove('secret_key');\n\n // Redirect the user to the login page\n window.location.href = '/pages/authentication';\n};\n\nexport const saveToCookies = (user) => {\n Cookies.set(\"kontak_admin\", user.kontakAdmin);\n Cookies.set(\"access_token\", user.token);\n Cookies.set(\"logged_in_date\", user.loggedInDate);\n Cookies.set(\"user_id\", user.id);\n Cookies.set(\"privileges\", JSON.stringify(user.privileges));\n Cookies.set(\"role_id\", user.roleId);\n Cookies.set(\"user_name\", user.name);\n Cookies.set(\"user_email\", user.email);\n Cookies.set(\"user_avatar\", user.avatar);\n Cookies.set(\"isEnableAppDirect\", user.isEnableAppDirect);\n Cookies.set(\"secret_key\", user.secretKey);\n}","import { apiUrl } from \"./apiServer\";\nimport { getAccessToken } from \"./authentification\";\nimport { logoutUtility } from './app/helpers/utils';\n\nexport const ajaxCaller = (url, parameters) => {\n return ajaxNonJsonCaller(url, parameters).then(response => {\n return response.json();\n });\n};\n\nexport const ajaxNonJsonCaller = (url, parameters) => {\n const globalSpinner = document.getElementById(\"globalSpinner\");\n if (globalSpinner != null) {\n globalSpinner.style.display = \"block\";\n }\n\n return fetch(apiUrl + url, parameters).then(response => {\n if (globalSpinner != null) {\n globalSpinner.style.display = \"none\";\n }\n // Handle 401 Unauthorized\n if (response.status === 401) {\n logoutUtility();\n return Promise.reject(\"Unauthorized - Redirecting to login\");\n }\n\n return response;\n }).catch(error => {\n if (globalSpinner != null) {\n globalSpinner.style.display = \"none\";\n }\n console.error(\"Error in ajax call:\", error);\n throw error;\n });\n};\n\nexport const authHeaders = new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\"\n});\n\nexport const authHeadersForFiles = new Headers({\n Authorization: \"Bearer \" + getAccessToken()\n}\n);\n","import React, { useState, useEffect } from \"react\";\nimport { ajaxCaller } from \"../../ajaxCaller\";\nimport { getAccessToken } from \"../../authentification\";\nimport $ from \"jquery\";\n\nconst FacilitiesPicker = (props) => {\n const [regionsLocations, setRegionLocations] = useState([]);\n const fetchData = () => {\n if (props.showAssignedLocations && props.userId) {\n ajaxCaller(\"Group/GetAssignedGroups/\" + props.userId, {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n var countOfCheckedRegions = 0;\n response.currentUserGroups.forEach(function (region) {\n var countOfRegionGroups = 0;\n response.roleGroups.forEach(item => {\n if (item.regionId === region.id || (item.regionId == null && region.id === 0)) {\n countOfRegionGroups++;\n }\n });\n\n if (countOfRegionGroups === region.groups.length) {\n region.checked = true;\n countOfCheckedRegions++;\n }\n else {\n region.checked = false;\n }\n region.groups.forEach(function (facility) {\n if (response.roleGroups.find(x => x.id === facility.id)) {\n if (props.groupIds == null) {\n facility.checked = true;\n }\n else {\n if (props.groupIds.includes(facility.id)) {\n facility.checked = true;\n }\n else {\n facility.checked = false;\n }\n }\n } else {\n facility.checked = false;\n }\n })\n\n if (region.groups.every(x => x.checked === true)) {\n region.checked = true;\n }\n else {\n region.checked = false;\n }\n });\n if (response.currentUserGroups.every(x => x.checked === true)) {\n setAllLocationsSelected(true);\n }\n else {\n setAllLocationsSelected(false);\n }\n setAllLocationsSelected(countOfCheckedRegions === response.currentUserGroups.length);\n setRegionLocations(response.currentUserGroups);\n props.onChange(response.currentUserGroups);\n if (props.onInit) {\n props.onInit(response.currentUserGroups); // Pass initial data to parent\n }\n });\n\n }\n else {\n ajaxCaller(\"Region/GetRegionGroups\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n response.forEach(function (region) {\n region.checked = true;\n region.groups.forEach(function (facility) {\n if (props.groupIds == null) {\n facility.checked = true;\n }\n else {\n if (props.groupIds.includes(facility.id)) {\n facility.checked = true;\n }\n else {\n facility.checked = false;\n }\n }\n })\n if (region.groups.every(x => x.checked === true)) {\n region.checked = true;\n }\n else {\n region.checked = false;\n }\n });\n if (response.every(x => x.checked === true)) {\n setAllLocationsSelected(true);\n }\n else {\n setAllLocationsSelected(false);\n }\n\n setRegionLocations(response);\n props.onChange(response);\n if (props.onInit) {\n props.onInit(response); // Pass initial data to parent\n }\n });\n };\n }\n\n\n useEffect(fetchData, [props.userId, props.chartType]);\n\n useEffect(() => {\n $(document).on('click', 'body .dropdown-menu', function (e) {\n e.stopPropagation();\n });\n });\n\n const [allLocationsSelected, setAllLocationsSelected] = useState(props.showAssignedLocations === true ? false : true);\n const toogleAll = () => {\n var newRegionLocations = regionsLocations.map(region => {\n region.checked = !allLocationsSelected;\n region.groups.map(facility => {\n facility.checked = !allLocationsSelected;\n return facility;\n });\n return region;\n });\n\n setRegionLocations(newRegionLocations);\n\n props.onChange(newRegionLocations);\n\n setAllLocationsSelected(!allLocationsSelected);\n }\n\n const changeRegion = (regionId) => {\n var newRegionLocations = regionsLocations.map(region => {\n let changedRegion = false;\n if (region.id === regionId) {\n region.checked = !region.checked;\n changedRegion = true;\n }\n region.groups.map(facility => {\n if (changedRegion) {\n facility.checked = region.checked;\n }\n return facility;\n });\n\n return region;\n });\n if (regionsLocations.every(x => x.checked === true)) {\n setAllLocationsSelected(true);\n }\n else {\n setAllLocationsSelected(false);\n }\n\n setRegionLocations(newRegionLocations);\n\n props.onChange(newRegionLocations);\n }\n\n const changeFacility = (facilityId) => {\n var newRegionLocations = regionsLocations.map(region => {\n region.groups.map(facility => {\n if (facility.id === facilityId) {\n facility.checked = !facility.checked;\n }\n return facility;\n });\n\n if (region.groups.every(x => x.checked === true)) {\n region.checked = true;\n }\n else {\n region.checked = false;\n }\n\n return region;\n });\n\n if (regionsLocations.every(x => x.checked === true)) {\n setAllLocationsSelected(true);\n }\n else {\n setAllLocationsSelected(false);\n }\n\n setRegionLocations(newRegionLocations);\n\n props.onChange(newRegionLocations);\n }\n\n return (\n <>\n \n
\n \n Select Locations\n \n \n \n
\n\n \n\n
\n { toogleAll(); event.stopPropagation(); }} />\n \n All Locations\n \n
\n\n {regionsLocations &&\n regionsLocations.map((region) => (\n
\n
\n { changeRegion(region.id); event.stopPropagation(); }} />\n \n \n

\n {region.name}\n

\n
\n {region.groups.map((location) => (\n \n
\n { changeFacility(location.id); event.stopPropagation(); }}\n />\n \n {location.name}\n \n
\n
\n ))}\n \n ))}\n \n \n \n \n )\n}\n\nexport default FacilitiesPicker;","import Cookies from \"js-cookie\";\nwindow.$Cookies = Cookies\nexport class PrivilegeChecker {\n static hasPrivilege(privilege) {\n const privileges = JSON.parse(Cookies.get(\"privileges\"));\n return privileges.includes(privilege);\n }\n}\n\nexport class Privileges {\n static ViewAfterHoursTrendLine = 'ViewAfterHoursTrendLine';\n static ExportData = \"ExportData\";\n static ViewChatsChartObject = \"ViewChatsChartObject\";\n static ViewLeadsChartObject = \"ViewLeadsChartObject\";\n static ViewConversionToLeadsChartObject = \"ViewConversionToLeadsChartObject\";\n static ViewClientValueChartObject = \"ViewClientValueChartObject\";\n static ViewEditWorkHours = \"ViewEditWorkHours\";\n static ViewEditClientValue = \"ViewEditClientValue\";\n static ViewEditUsersAndRoles = \"ViewEditUsersAndRoles\";\n static ViewEditFacilityAndRegions = \"ViewEditFacilityAndRegions\";\n static ViewCalls = \"ViewCalls\";\n static ViewAppointments = \"ViewAppointments\";\n}","import React from \"react\";\nimport Select2 from \"react-select2-wrapper\";\n\nexport default function EditMode({ ...props }) {\n return (\n \n
\n
\n
\n
\n \n
\n
\n
Add Metric
\n
\n
\n
\n
\n

\n Metric\n

\n
\n
\n
\n \n props.setSingleWidgetTypeId(event.target.value)\n }\n />\n
\n
\n
\n
\n
\n

\n Type\n

\n
\n
\n
\n props.setSingleWidgetIsExpanded(false)}\n />\n \n Show the current value\n \n
\n \"type-1\"\n
\n props.setSingleWidgetIsExpanded(true)}\n />\n \n Show the current value + mini chart\n \n
\n \"type-2\"\n
\n
\n
\n
\n

\n Date range\n

\n
\n
\n
\n
\n

Previous

\n
\n
\n
\n \n props.setSingleWidgetLastPeriodRange(\n event.target.value\n )\n }\n />\n
\n
\n
\n
\n {\n props.setSingleWidgetPeriodType(event.target.value);\n }}\n />\n
\n
\n
\n
\n
\n
\n
\n

\n Chart type\n

\n
\n
\n
\n props.setSingleWidgetIsLineChart(true)}\n />\n \n Line\n \n
\n
\n props.setSingleWidgetIsLineChart(false)}\n />\n \n Bar\n \n
\n
\n
\n
\n
\n

Show Axis Labels

\n
\n
\n
\n props.setShowXLabels(!props.showXLabels)}\n />\n \n
\n
\n
\n
\n props.setShowYLabels(!props.showYLabels)}\n />\n \n
\n
\n
\n
\n
\n props.clearSingleWidgetFields()}\n >\n CANCEL\n \n props.saveSingleWidget()}\n className=\"btn btn-blue btn-width-130 btn-height-40 border-2 font-size-14 ml-1\"\n >\n ADD METRIC\n \n
\n
\n
\n
\n
\n
\n \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Highcharts from \"highcharts\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { ajaxCaller } from \"../../ajaxCaller\";\nimport { getAccessToken } from \"../../authentification\";\nimport {NavLink} from \"react-router-dom\";\nimport moment from \"moment\";\nimport NumberFormat from 'react-number-format';\n\nconst convertToDecimalWithComma = (value) => {\n return Math.round(value).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,');\n}\n\nfunction findLineByLeastSquares(values_x, values_y) {\n let sum_x = 0;\n let sum_y = 0;\n let sum_xy = 0;\n let sum_xx = 0;\n let count = 0;\n\n /*\n * We'll use those variables for faster read/write access.\n */\n let x = 0;\n let y = 0;\n let values_length = values_x.length;\n\n if (values_length !== values_y.length) {\n throw new Error(\n \"The parameters values_x and values_y need to have same size!\"\n );\n }\n\n /*\n * Nothing to do.\n */\n if (values_length === 0) {\n return [[], []];\n }\n\n /*\n * Calculate the sum for each of the parts necessary.\n */\n for (let v = 0; v < values_length; v++) {\n x = values_x[v];\n y = values_y[v];\n sum_x += x;\n sum_y += y;\n sum_xx += x * x;\n sum_xy += x * y;\n count++;\n }\n\n /*\n * Calculate m and b for the formular:\n * y = x * m + b\n */\n let m = (count * sum_xy - sum_x * sum_y) / (count * sum_xx - sum_x * sum_x);\n let b = sum_y / count - (m * sum_x) / count;\n\n /*\n * We will make the x and y result line now\n */\n let result_values_x = [];\n let result_values_y = [];\n\n for (let v = 0; v < values_length; v++) {\n x = values_x[v];\n y = x * m + b;\n result_values_x.push(x);\n result_values_y.push(y);\n }\n\n return [result_values_x, result_values_y];\n}\n\nconst calculateDifference = (minuend, subtahend, reportType) => {\n let differenceData;\n //flip/reverse for some reports where the Total is NOT the main result/series but additional one\n if ([7].includes(reportType)) {\n differenceData = subtahend.map((point, index) => [\n point[0], // Assuming the first element in the data arrays is the period\n point[1] - (minuend[index] ? minuend[index][1] : 0), // Calculating the difference\n ]);\n }//for all others just this\n else {\n differenceData = minuend.map((point, index) => [\n point[0], // Assuming the first element in the data arrays is the period\n point[1] - (subtahend[index] ? subtahend[index][1] : 0), // Calculating the difference\n ]);\n }\n return differenceData\n}\n\nconst Widget = (props) => {\n\n const chartPointFormatter = function () {\n if (widget.widgetTypeId === 3) {\n return `Conv: ${this.y}%
`;\n }\n else\n if (widget.widgetTypeId === 4) {\n let value = \"$\" + Math.round(this.y).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `Value: ${value}
`;\n }\n else if (widget.widgetTypeId === 1) {\n let value = Math.round(this.y).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `Current Chats: ${value}
`;\n }\n else if (widget.widgetTypeId === 2) {\n let value = this.y.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `New Appt. Requests: ${value}
`;\n }\n else if (widget.widgetTypeId === 12 || widget.widgetTypeId === 16) {\n let value = this.y.toFixed(2).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `Minutes: ${value}
`;\n }\n else if (widget.widgetTypeId >= 5 && widget.widgetTypeId <= 17) {\n let value = Math.round(this.y).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `${this.series.name}: ${value}
`;\n }\n }\n\n\n const [widget] = useState(props.widget);\n const [chart, setChart] = useState(null);\n const [chartRangeType] = useState(2);\n const [columnsReferences] = useState([]);\n const [showPEPeriod, setShowPEPeriod] = useState(false);\n const [showAdSeries, setShowAdSeries] = useState(false);\n\n const [chartOptions, setChartOptions] = useState({\n tooltip: {\n backgroundColor: \"rgba(64,66,85,0.95)\",\n borderWidth: 0,\n shadow: false,\n useHTML: true,\n style: {\n padding: '15px'\n },\n borderRadius: 0,\n headerFormat: '',\n pointFormatter: chartPointFormatter,\n footerFormat: '{point.key}
',\n },\n chart: {\n height: \"130px\",\n events: {\n load() {\n this.showLoading();\n setTimeout(this.hideLoading.bind(this), 2000);\n },\n },\n },\n legend: {\n enabled: false,\n },\n credits: {\n enabled: false,\n },\n title: {\n text: \"\",\n },\n loading: {\n hideDuration: 1000,\n showDuration: 1000,\n },\n xAxis: {\n tickInterval: 1,\n labels: {\n enabled: false,\n },\n },\n yAxis: {\n title: \"\",\n labels: {\n enabled: false,\n },\n },\n plotOptions: {\n column: {\n grouping: false\n }\n },\n series: [\n {\n name: \"Total\",\n type: widget.isLineChart ? \"areaspline\" : \"column\",\n fillColor: \"rgba(119, 181, 223, 0.1)\",\n lineWidth: 1,\n borderWidth: 1,\n },\n\n ],\n });\n\n\n let entityType = 'Threads'\n let valueName = 'threadsNumber'\n if ([6, 7, 8, 14, 15, 17].includes(widget.widgetTypeId)) {\n entityType = 'Calls'\n valueName = 'callsNumber'\n }\n else if ([16, 12].includes(widget.widgetTypeId)) {\n entityType = 'Calls'\n valueName = 'averageDurationsNumber'\n }\n else if ([9, 10, 11, 13].includes(widget.widgetTypeId)) {\n entityType = 'Appointments'\n valueName = 'appointmentsNumber'\n }\n\n const [data, setData] = useState(null);\n const [isLineChart] = useState(true);\n const afterChartCreated = (chart) => {\n setChart(chart);\n };\n\n const applyWithAfterHours = () => {\n\n const chartOptionsNew = { ...chartOptions };\n if (\n widget &&\n widget.isExpanded &&\n widget.widgetType.afterHours &&\n chartOptionsNew.series\n ) {\n if (props.withAfterHours) {\n let seriesIndex = chartOptionsNew.series.findIndex(\n (x) => x.name === \"After Hours\"\n );\n if (seriesIndex === -1) {\n chartOptionsNew.tooltip = null;\n refreshChart();\n return;\n }\n seriesIndex = chartOptionsNew.series.findIndex(\n (x) => x.name === \"After Hours\"\n );\n if (chartOptionsNew.series[seriesIndex] != null) {\n chartOptionsNew.series[\n seriesIndex\n ].data = data.afterHoursResults.map((a) => [\n a.period,\n a[valueName],\n ]);\n chartOptionsNew.tooltip = {\n pointFormatter: function () {\n let result = \"\";\n\n if (columnsReferences[this.x] != null) {\n columnsReferences[this.x].scrollIntoView({\n block: \"nearest\",\n alignToTop: false,\n });\n }\n\n if (\n chartOptionsNew == null ||\n chartOptionsNew.series[seriesIndex] == null ||\n chartOptionsNew.series[seriesIndex].data == null ||\n chartOptionsNew.series[seriesIndex].data.length === 0 || seriesIndex < 0 ||\n props.withAfterHoursDiff === false\n ) {\n let value = Math.round(this.y).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `After Hours : ${value}
`;\n }\n const totalValue = chartOptionsNew.series[0].data[this.x][1];\n const afterHoursValue = chartOptionsNew.series[seriesIndex].data[this.x][1];\n const normalHoursValue =\n parseInt(totalValue) - parseInt(afterHoursValue);\n result =\n totalValue.toFixed(2) +\n \" (Total) - \" +\n afterHoursValue.toFixed(2) +\n \" (After Hours) = \" +\n normalHoursValue.toFixed(2) +\n \" (Business Hours)\\n\";\n return result;\n },\n };\n }\n setChartOptions(chartOptionsNew);\n } else {\n var seriesIndex = chartOptionsNew.series.findIndex(\n (x) => x.name === \"After Hours\"\n );\n if (\n chartOptionsNew.series[seriesIndex] &&\n chartOptionsNew.series[seriesIndex].data\n ) {\n chartOptionsNew.series[seriesIndex].data = [];\n chartOptionsNew.tooltip = null;\n }\n setChartOptions(chartOptionsNew);\n }\n }\n };\n\n const applyWithTrendLine = () => {\n const chartOptionsNew = { ...chartOptions };\n if (widget && widget.isExpanded && chartOptionsNew.series) {\n if (props.withTrendLine) {\n var seriesIndex = chartOptionsNew.series.findIndex(\n (x) => x.name === \"Trends\"\n );\n if (seriesIndex === -1) {\n refreshChart();\n return;\n }\n seriesIndex = chartOptionsNew.series.findIndex(\n (x) => x.name === \"Trends\"\n );\n if (chartOptionsNew.series[seriesIndex] != null) {\n const formattedResponse = data.results.map((a) => [\n a.period,\n a[valueName],\n ]);\n const xPoints = formattedResponse.map((value, index) => index);\n const yPoints = formattedResponse.map((a) => a[1]);\n const trendLineYPoints = findLineByLeastSquares(xPoints, yPoints)[1];\n if (chartOptionsNew.series[seriesIndex] != null) {\n chartOptionsNew.series[\n seriesIndex\n ].data = trendLineYPoints.map((value, index) => [\n xPoints[index],\n parseFloat(value.toFixed(2)),\n ]);\n }\n }\n setChartOptions(chartOptionsNew);\n } else {\n seriesIndex = chartOptionsNew.series.findIndex(\n (x) => x.name === \"Trends\"\n );\n if (\n chartOptionsNew.series[seriesIndex] &&\n chartOptionsNew.series[seriesIndex].data\n ) {\n chartOptionsNew.series[seriesIndex].data = [];\n setChartOptions(chartOptionsNew);\n }\n refreshChart();\n }\n }\n };\n\n const applyshowPEPeriod = () => {\n const chartOptionsNew = { ...chartOptions };\n if (widget && widget.isExpanded && chartOptionsNew.series && showPEPeriod !== props.showPEPeriod) {\n setChartOptions(chartOptionsNew);\n setShowPEPeriod(!showPEPeriod)\n refreshChart();\n }\n };\n\n const applyshowAdSeries = () => {\n const chartOptionsNew = { ...chartOptions };\n if (widget && widget.isExpanded && chartOptionsNew.series && showAdSeries !== props.showAdSeries) {\n setChartOptions(chartOptionsNew);\n setShowAdSeries(!showAdSeries)\n refreshChart();\n }\n };\n\n const afterHoursCallback = () => {\n applyWithAfterHours();\n };\n useEffect(afterHoursCallback, [props.withAfterHours, props.withAfterHoursDiff]);\n\n const showPEPeriodCallback = () => {\n applyshowPEPeriod();\n };\n useEffect(showPEPeriodCallback, [props.showPEPeriod]);\n\n const showAdSeriesCallback = () => {\n applyshowAdSeries();\n };\n useEffect(showAdSeriesCallback, [props.showAdSeries]);\n\n const trendLineCallback = () => {\n applyWithTrendLine();\n };\n useEffect(trendLineCallback, [props.withTrendLine]);\n\n const extractPeriodString = () => {\n switch (widget.periodType.toString()) {\n case \"1\": return 'days';\n case \"2\": return 'weeks';\n case \"3\": return 'months';\n case \"4\": return 'quarter';\n case \"5\": return 'years';\n default: return 'days';\n }\n }\n\n\n\n const refreshChart = () => {\n chart && chart.showLoading();\n const chartOptionsNew = {\n tooltip: {\n backgroundColor: \"rgba(64,66,85,0.95)\",\n borderWidth: 1,\n shadow: true,\n useHTML: true,\n style: {\n padding: \"15px\",\n },\n borderRadius: 15,\n headerFormat: \"\",\n pointFormatter: chartPointFormatter,\n footerFormat: '{point.key}
',\n },\n chart: {\n height: \"150px\",\n type: 'column',\n options3d: {\n enabled: true,\n alpha: 15,\n beta: 15,\n viewDistance: 25,\n depth: 40\n }\n },\n legend: {\n enabled: false,\n },\n credits: {\n enabled: false,\n },\n title: {\n text: \"\",\n },\n loading: {\n hideDuration: 1000,\n showDuration: 1000,\n },\n xAxis: {\n tickInterval: 1,\n labels: {\n enabled: widget.showXLabels,\n formatter: (obj) => {\n if (\n chartOptionsNew == null ||\n chartOptionsNew.series == null ||\n chartOptionsNew.series[0] == null ||\n chartOptionsNew.series[0].data[obj.value] == null ||\n chartOptionsNew.series[0].data[obj.value][0] == null\n ) {\n return \"\";\n } else {\n return chartOptionsNew.series[0].data[obj.value][0];\n }\n },\n },\n },\n yAxis: {\n title: \"\",\n labels: {\n enabled: widget.showYLabels, //Branko temp\n formatter: (obj) => {\n if (props.reportType === 3) {\n return obj.value + \"%\"\n }\n else if (props.reportType === 4) {\n return \"$\" + convertToDecimalWithComma(obj.value);\n }\n else {\n return convertToDecimalWithComma(obj.value);\n }\n }\n },\n endOnTick: true,\n maxPadding: 0,\n max: null,\n tickInterval: 1,\n minorTickLength: 0,\n tickLength: 0,\n visible: widget.showYLabels,\n },\n plotOptions: {\n column: {\n stacking: null,\n grouping: true,\n pointWidth: 25, // Set a fixed width for the columns in pixels\n pointPadding: 0, // Increase or decrease the padding between columns\n groupPadding: 0.05 // Set the padding between groups of columns\n },\n series: {\n animation:false, \n marker: {\n radius: 3,\n enabled: true,\n symbol: \"circle\"\n },\n },\n },\n series: [\n {\n name: props.reportType === 3\n ? \"Conv\"\n : props.reportType === 4\n ? \"Value\"\n : props.reportType === 1\n ? \"Current Chats\"\n : props.widget.widgetType.name,\n lineColor: isLineChart ? \"#4C95E3\" : \"#3495E6\",//\"#1A2430\" : \"#3495E6\",\n color: isLineChart ? \"#4C95E3\" : \"#3495E6\",\n type: isLineChart ? \"areaspline\" : \"column\",\n fillColor: {\n linearGradient: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 1\n },\n stops: [\n [0, 'rgba(76, 149, 227, 0.5)'], // Start color at 100% opacity\n [1, 'rgba(76, 149, 227, 0)'] // End color at 0% opacity\n ]\n },//\"rgba(76, 149, 227, 0.1)\",\n lineWidth: 1,\n borderWidth: 0,\n tooltip: {\n backgroundColor: \"rgba(64,66,85,0.95)\",\n borderWidth: 1,\n shadow: true,\n useHTML: true,\n style: {\n padding: \"15px\",\n },\n borderRadius: 15,\n headerFormat: \"\",\n pointFormatter: chartPointFormatter,\n footerFormat: '{point.key}
',\n }\n },\n ],\n };\n\n\n if (props.widget.widgetType.additionalSeries && props.widget.widgetType.additionalSeries.length > 0 && props.showAdSeries) {\n const arrSeries = props.widget.widgetType.additionalSeries.split(/,\\s+/).map(item => item.trim());\n let i = 0;\n arrSeries.forEach(item => {\n i++;\n\n var lineCol = i === 1 ? \"#E88C1E\" : \"#04BD81\"\n var barCol = \"rgba(136, 206, 251, 0.5)\"\n var fillColor = i === 1 ?\n {\n linearGradient: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 1\n },\n stops: [\n [0, 'rgba(232, 140, 30, 0.5)'], // Start color at 100% opacity\n [1, 'rgba(232, 140, 30, 0)'] // End color at 0% opacity\n ]\n }\n :\n {\n linearGradient: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 1\n },\n stops: [\n [0, 'rgba(4, 189, 129, 0.5)'], // Start color at 100% opacity\n [1, 'rgba(4, 189, 129, 0)'] // End color at 0% opacity\n ]\n }\n chartOptionsNew.series.push({\n index: `series0${i}`,\n name: item,\n lineColor: isLineChart ? lineCol : barCol,\n color: isLineChart ? lineCol : barCol,\n type: isLineChart ? \"areaspline\" : \"column\",\n fillColor: fillColor,//barCol, //\"rgba(136, 206, 251, 0.25)\",\n lineWidth: 1,\n borderWidth: 0,\n marker: {\n radius: 4,\n enabled: true,\n symbol: \"diamond\"\n },\n animation:false,\n tooltip: {\n backgroundColor: \"rgba(64,66,85,0.95)\",\n borderWidth: 1,\n shadow: true,\n useHTML: true,\n style: {\n padding: \"15px\",\n },\n borderRadius: 15,\n headerFormat: \"\",\n pointFormatter: chartPointFormatter,\n footerFormat: '{point.key}
',\n },\n });\n });\n }\n\n // After hours \n if (props.withAfterHours) {\n chartOptionsNew.series.push({\n name: \"After Hours\",\n fillColor: {\n linearGradient: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 1\n },\n stops: [\n [0, 'rgba(177, 179, 201, 0.45)'], // Start color at 100% opacity\n [1, 'rgba(177, 179, 201, 0)'] // End color at 0% opacity\n ]\n },\n lineColor: \"#B1B3C9\",\n color: \"#B1B3C9\",\n lineWidth: 1,\n borderWidth: 1,\n type: widget.isLineChart ? \"areaspline\" : \"column\", \n animation:true, \n });\n }\n\n //Trend Line\n let trendLineSeriesIndex = 1;\n if (props.withTrendLine) {\n chartOptionsNew.series.push({\n name: \"Trends\",\n lineColor: \"rgba(249, 25, 25, 1)\",\n color: \"rgba(249, 25, 25, 1)\",\n type: \"line\",\n lineWidth: 2,\n borderWidth: 1,\n marker: { enabled: false },\n animation:true, \n });\n\n trendLineSeriesIndex = chartOptionsNew.series.length - 1;\n }\n\n\n ajaxCaller(`Dashboard/Get${entityType}Statistic`, {\n method: \"post\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n type: widget.periodType,\n dateFrom: moment().add(- widget.lastPeriodRange, extractPeriodString()),\n dateTo: moment(),\n isLeads: widget.widgetTypeId > 1,\n reportType: widget.widgetTypeId,\n withAfterHours: props.withAfterHours,\n showPEPeriod: props.showPEPeriod,\n groupIds: props.groupIds\n }),\n }).then((response) => {\n if (response.results != null) {\n const formattedResponse = response.results.map((a) => [\n a.period,\n a[valueName],\n ]);\n chartOptionsNew.series[0].data = formattedResponse;\n\n let formattedResponse01;\n let series1Index = chartOptionsNew.series.findIndex(\n (x) => x.index === \"series01\"\n );\n if (series1Index > 0 && props.showAdSeries) {\n if (response.results01) {\n formattedResponse01 = response.results01.map((a) => [\n a.period,\n a[valueName],\n ]);\n chartOptionsNew.series[series1Index].data = formattedResponse01;\n }\n }\n\n let formattedResponse02;\n let series2Index = chartOptionsNew.series.findIndex(\n (x) => x.index === \"series02\"\n );\n if (series2Index > 0 && props.showAdSeries) {\n if (response.results02) {\n formattedResponse02 = response.results02.map((a) => [\n a.period,\n a[valueName],\n ]);\n chartOptionsNew.series[series2Index].data = formattedResponse02;\n }\n else {\n if (formattedResponse01 && formattedResponse) {\n const differenceData = calculateDifference(formattedResponse, formattedResponse01, widget.widgetTypeId)\n chartOptionsNew.series[series2Index].data = differenceData;\n }\n }\n }\n\n //AfterHours filter by field\n if (props.withAfterHours && widget.widgetType.afterHours) {\n let seriesIndex = chartOptionsNew.series.findIndex(\n (x) => x.name === \"After Hours\"\n );\n if (chartOptionsNew.series[seriesIndex] != null) {\n chartOptionsNew.series[seriesIndex].data = response.afterHoursResults.map(\n (a) => [a.period, a[valueName]]\n );\n }\n }\n\n // Calculating Line Trend\n if (props.withTrendLine) {\n const xPoints = formattedResponse.map((value, index) => index);\n const yPoints = formattedResponse.map((a) => a[1]);\n const trendLineYPoints = findLineByLeastSquares(\n xPoints,\n yPoints\n )[1];\n if (chartOptionsNew.series[trendLineSeriesIndex] != null) {\n chartOptionsNew.series[\n trendLineSeriesIndex\n ].data = trendLineYPoints.map((value, index) => [\n xPoints[index],\n parseFloat(value.toFixed(2)),\n ]);\n }\n }\n\n setData(response);\n setChartOptions(chartOptionsNew);\n chart && chart.hideLoading();\n }\n }).catch(() => {\n console.log(\"Not allowed\")\n });\n\n };\n\n const hookCallbackGroups = () => {\n if (!props.editMode)\n refreshChart();\n }\n\n useEffect(hookCallbackGroups, [\n props.groupIds\n ]);\n\n const hookCallback = () => {\n if (props.editMode)\n refreshChart();\n };\n useEffect(hookCallback, [\n chartRangeType,\n isLineChart,\n props.widget.periodType,\n props.widget.chartType,\n props.widget.isExpanded,\n props.widget.isLineChart,\n props.widget.lastPeriodRange,\n props.widget.showXLabels,\n props.widget.showYLabels,\n props.widget.additionalSeries,\n props.groupIds\n ]);\n\n const calculateTotalValues = () => {\n var total = 0;\n let count = 0;\n data && data.results.forEach((x) => {\n total += x[valueName];\n count++;\n });\n if (valueName.includes(\"average\")) {\n total = count > 0 ? total / count : 0;\n return total.toFixed(2).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n }\n\n return Math.round(total).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n }\n\n return (\n
\n {\n if (props.editMode) {\n e.preventDefault();\n }\n else {\n document.getElementById(\"nav-reports-page\").className =\n \"left-side-nav-link active\";\n document.getElementById(\"nav-dashboard-page\").className =\n \"left-side-nav-link\";\n }\n }}\n to={{\n pathname: \"/reports\",\n\n dateRange: {\n dateFrom: moment().add(- widget.lastPeriodRange, extractPeriodString()),\n dateTo: moment(),\n },\n withTrendLine: props.withTrendLine,\n withAfterHours: props.withAfterHours,\n showPEPeriod: props.showPEPeriod,\n groupIds: props.groupIds,\n isLineChart: widget.isLineChart,\n chartType: widget.widgetTypeId === 5 ? 1 : widget.widgetTypeId,\n chartRangeType: widget.periodType,\n showAfterHours: widget.widgetType.afterHours,\n withAfterHoursDiff: props.withAfterHoursDiff,\n allWidgets: props.allWidgets,\n widgetTypes: props.widgetTypes,\n additionalSeries: widget.widgetType.additionalSeries,\n showAdSeries: props.showAdSeries\n }}\n >\n \n
\n
\n
\n
\n
\n
\n
Delete widget
\n
\n
\n

\n You are about to delete the widget:\n
\n {widget.widgetType.name} \n

\n

Are you sure you wish to continue?

\n
\n
\n \n CANCEL\n \n props.removeWidget()}\n >\n DELETE\n \n
\n
\n
\n
\n
\n
\n
\n\n \n \n \n
\n
{widget.widgetType.name}
\n
\n
\n
\n
\n

\n props.selectForEdit()}\n >\n Edit\n \n \n Remove\n \n

\n
\n {widget.widgetType.displayTotal && (\n
\n
\n
\n {widget.widgetTypeId && (widget.widgetTypeId.toString() === \"3\" ? (calculateTotalValues() + \"%\") : widget.widgetTypeId.toString() === \"4\" ? () : (calculateTotalValues()))}\n
\n

\n Last {widget.lastPeriodRange} {widget.lastPeriodRange < 2 ? extractPeriodString().replace(\"s\", \"\") : extractPeriodString()}\n

\n
\n
\n )}\n
\n
\n \n \n {(\n
\n
\n \n \n
\n \n \n )}\n \n \n \n );\n};\nexport default Widget;\n","import Widget from \"../widget.component\";\nimport React from \"react\";\nimport { ajaxCaller } from \"../../../ajaxCaller\";\nimport { getAccessToken } from \"../../../authentification\";\n\nexport default function ChartsArea({ ...props }) {\n const removeWidget = (id) => {\n ajaxCaller(\"Widget/\" + id, {\n method: \"delete\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n let removedElement = document.getElementById(\"widget_\" + id);\n removedElement.style.display = \"none\";\n } else {\n }\n });\n };\n\n return (\n
\n \n {props.allWidgets && props.allWidgets.filter(x => x.columnIndex !== 1).map((item, index) =>\n props.selectForEdit(item)}\n removeWidget={() => removeWidget(item.id)}\n withTrendLine={props.withTrendLine}\n withAfterHours={props.withAfterHours}\n withAfterHoursDiff={props.withAfterHoursDiff}\n showPEPeriod={props.showPEPeriod}\n widget={item}\n groupIds={props.groupIds}\n changePercentage={Math.random().toFixed(2) * 100}\n totalValue={Math.random().toFixed(1) * 100}\n allWidgets = {props.allWidgets}\n widgetTypes = {props.widgetTypes}\n showAdSeries={props.showAdSeries}\n />\n )}\n
\n \n {props.allWidgets && props.allWidgets.filter(x => x.columnIndex !== 0).map((item, index) =>\n props.selectForEdit(item)}\n removeWidget={() => removeWidget(item.id)}\n withTrendLine={props.withTrendLine}\n withAfterHours={props.withAfterHours}\n withAfterHoursDiff={props.withAfterHoursDiff}\n showPEPeriod={props.showPEPeriod}\n widget={item}\n groupIds={props.groupIds}\n changePercentage={Math.random().toFixed(2) * 100}\n totalValue={Math.random().toFixed(1) * 100}\n allWidgets = {props.allWidgets}\n widgetTypes = {props.widgetTypes}\n showAdSeries={props.showAdSeries}\n />\n )}\n \n \n );\n}","import React from \"react\";\r\n\r\nexport default function EditButton({...props}) {\r\n return (\r\n
\r\n
\r\n \r\n SAVE\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Edit Mode\r\n \r\n
\r\n \r\n Add Metric\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useState, useEffect } from \"react\";\nimport { ajaxCaller } from \"../ajaxCaller\";\nimport { getAccessToken } from \"../authentification\";\nimport Dragula from \"react-dragula\";\nimport $ from \"jquery\";\nimport Select2 from \"react-select2-wrapper\";\nimport FacilitiesPicker from \"./components/facilitiesPicker\";\nimport { PrivilegeChecker, Privileges } from \"../privilegeChecker\";\nimport EditMode from \"./components/Dashboard/editMode\";\nimport ChartsArea from \"./components/Dashboard/chartsArea\";\nimport EditButton from \"./components/Dashboard/parts/editButton\";\n\nconst Dashboard = () => {\n const [withAfterHours, setWithAfterHours] = useState(false);\n const [withAfterHoursDiff, setWithAfterHoursDiff] = useState(false);\n const [showPEPeriod, setshowPEPeriod] = useState(false);\n const [showAdSeries, setShowAdSeries] = useState(false);\n const [withTrendLine, setWithTrendLine] = useState(false);\n const [allWidgets, setAllWidgets] = useState([]);\n\n const getItems = () => {\n ajaxCaller(\"Widget/GetUserWidgets\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (response.isError) {\n } else {\n let widgets = [];\n\n response && response.forEach(item => {\n if (PrivilegeChecker.hasPrivilege(Privileges.ViewChatsChartObject) &&\n item.widgetTypeId.toString() === \"1\") {\n widgets.push(item);\n }\n if (\n PrivilegeChecker.hasPrivilege(Privileges.ViewLeadsChartObject) &&\n item.widgetTypeId.toString() === \"2\"\n ) {\n widgets.push(item);\n }\n if (\n PrivilegeChecker.hasPrivilege(\n Privileges.ViewConversionToLeadsChartObject\n ) &&\n item.widgetTypeId.toString() === \"3\"\n ) {\n widgets.push(item);\n }\n if (\n PrivilegeChecker.hasPrivilege(Privileges.ViewClientValueChartObject) &&\n item.widgetTypeId.toString() === \"4\"\n ) {\n widgets.push(item);\n }\n if (\n parseInt(item.widgetTypeId.toString()) >= 5\n ) {\n widgets.push(item);\n }\n })\n\n setAllWidgets(widgets);\n }\n });\n };\n\n const updateWidgets = (newWidgets) => {\n ajaxCaller(\"Widget/UpdateWidgets\", {\n method: \"put\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify(newWidgets),\n }).then((response) => {\n if (response.isError) {\n } else {\n window.location.reload();\n //setAllWidgets(newWidgets);\n //editModeClick();\n }\n });\n };\n\n const [rightColumnElements, setRightColumnElements] = useState([]);\n const [leftColumnElements, setLeftColumnElements] = useState([]);\n const reorderWigets = () => {\n let reorderedWidgets = [];\n\n for (let index = 0; index < rightColumnElements.length; index++) {\n let id = rightColumnElements[index];\n reorderedWidgets.push({ id: id, rowIndex: index, columnIndex: 1 });\n }\n\n for (let index = 0; index < leftColumnElements.length; index++) {\n let id = leftColumnElements[index];\n reorderedWidgets.push({ id: id, rowIndex: index, columnIndex: 0 });\n }\n\n let newWidgets = [...allWidgets];\n\n newWidgets.forEach(function (item) {\n reorderedWidgets.forEach(function (element) {\n console.log(element.id.toString())\n if (\"widget_\" + item.id === element.id.toString()) {\n item.rowIndex = element.rowIndex;\n item.columnIndex = element.columnIndex;\n }\n });\n });\n\n if (newWidgets.length > 0) {\n updateWidgets(newWidgets);\n }\n };\n\n useEffect(() => {\n $('[data-toggle=\"tooltip\"]').tooltip();\n $('[data-toggle-second=\"tooltip\"]').tooltip();\n });\n\n useEffect(() => {\n document.body.classList.add(\"opened-filter\");\n }, [])\n\n const [filterOpened, setFilterOpened] = useState(true);\n const toggleFilter = () => {\n setFilterOpened(!filterOpened);\n if (filterOpened) {\n document.body.classList.remove(\"opened-filter\");\n } else {\n document.body.classList.add(\"opened-filter\");\n }\n };\n\n const [dragular, setDragular] = useState(null);\n const setupDrake = () => {\n let leftColumnContainer = document.getElementById(\"leftContainer\");\n let rightColumnContainer = document.getElementById(\"rightContainer\");\n let drake = Dragula([leftColumnContainer, rightColumnContainer], {\n moves: (el, target, source, sibling) => {\n return editMode;\n },\n });\n drake.on(\"drop\", (el, target, source, sibling) => {\n let lc = Array.prototype.slice.call(\n document.getElementById(\"leftContainer\").children\n ).map(x => x.firstChild.id);\n let rc = Array.prototype.slice.call(\n document.getElementById(\"rightContainer\").children\n ).map(x => x.firstChild.id);\n setLeftColumnElements(lc);\n setRightColumnElements(rc);\n\n let reorderedWidgets = [];\n\n for (let index = 0; index < rightColumnElements.length; index++) {\n let id = rightColumnElements[index];\n reorderedWidgets.push({ id: id, rowIndex: index, columnIndex: 1 });\n }\n\n for (let index = 0; index < leftColumnElements.length; index++) {\n let id = leftColumnElements[index];\n reorderedWidgets.push({ id: id, rowIndex: index, columnIndex: 0 });\n }\n\n let nw = [...allWidgets];\n nw.forEach(function (item) {\n reorderedWidgets.forEach(function (element) {\n if (\"widget_\" + item.id === element.id.toString()) {\n item.rowIndex = element.rowIndex;\n item.columnIndex = element.columnIndex;\n }\n });\n });\n setAllWidgets(nw);\n });\n\n setDragular(drake);\n };\n\n const [editMode, setEditMode] = useState(false);\n const editModeClick = (event) => {\n if (event != null) {\n event.preventDefault();\n }\n\n setEditMode(!editMode);\n if (editMode) {\n document.body.classList.remove(\"home-d-box-edit\");\n } else {\n document.body.classList.add(\"home-d-box-edit\");\n }\n };\n\n const saveWidgetsPositions = () => {\n reorderWigets();\n clearSingleWidgetFields();\n };\n\n const [groupIds, setGroupIds] = useState(null);\n const facilitiesChanged = (regionFacilities) => {\n let newGroupIds = [];\n regionFacilities.forEach((region) => {\n region.groups.forEach((group) => {\n if (group.checked) {\n newGroupIds.push(group.id);\n }\n });\n });\n setGroupIds(newGroupIds);\n };\n\n const editModeCallback = () => {\n if (editMode) {\n setupDrake();\n } else {\n dragular && dragular.destroy();\n }\n };\n useEffect(editModeCallback, [editMode]);\n\n const hookCallback = () => {\n if (allWidgets.length === 0) {\n getItems();\n }\n };\n useEffect(hookCallback, []);\n\n const [widgetTypes, setWidgetTypes] = useState(null);\n const getWidgetTypes = () => {\n ajaxCaller(\"Widget/GetWidgetTypes\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n let filteredTypes = response.filter((x) => {\n if (\n PrivilegeChecker.hasPrivilege(Privileges.ViewChatsChartObject) &&\n x.id === 1\n ) {\n return x;\n }\n if (\n PrivilegeChecker.hasPrivilege(Privileges.ViewLeadsChartObject) &&\n x.id === 2\n ) {\n return x;\n }\n if (\n PrivilegeChecker.hasPrivilege(\n Privileges.ViewConversionToLeadsChartObject\n ) &&\n x.id === 3\n ) {\n return x;\n }\n if (\n PrivilegeChecker.hasPrivilege(\n Privileges.ViewClientValueChartObject\n ) &&\n x.id === 4\n ) {\n return x;\n }\n if (\n x.id >= 5 && x.id <= 7\n ) {\n return x;\n }\n if (\n x.id >= 7\n ) {\n return x;\n }\n return null;\n });\n setWidgetTypes(filteredTypes);\n } else {\n }\n });\n };\n\n useEffect(() => {\n getWidgetTypes();\n }, []);\n\n const [singleWidgetTypeId, setSingleWidgetTypeId] = useState(null);\n const [singleWidgetIsExpanded, setSingleWidgetIsExpanded] = useState(false);\n const [\n singleWidgetLastPeriodRange,\n setSingleWidgetLastPeriodRange,\n ] = useState(1);\n const [singleWidgetPeriodType, setSingleWidgetPeriodType] = useState(null);\n const [singleWidgetIsLineChart, setSingleWidgetIsLineChart] = useState(true);\n const [showXLabels, setShowXLabels] = useState();\n const [showYLabels, setShowYLabels] = useState();\n const [editWidgetId, setEditWidgetId] = useState(null);\n const clearSingleWidgetFields = () => {\n setSingleWidgetTypeId(null);\n setSingleWidgetIsExpanded(false);\n setSingleWidgetLastPeriodRange(1);\n setSingleWidgetPeriodType(null);\n setSingleWidgetIsLineChart(true);\n setShowXLabels(true);\n setShowYLabels(true);\n };\n const saveSingleWidget = () => {\n ajaxCaller(\"Widget/AddWidget\", {\n method: \"post\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n rowIndex:\n allWidgets.filter(x => x.columnIndex === 0).length > 0\n ? allWidgets.filter(x => x.columnIndex === 0)[allWidgets.filter(x => x.columnIndex === 0).length - 1].rowIndex + 1\n : 0,\n columnIndex: 0,\n lastPeriodRange: singleWidgetLastPeriodRange,\n periodType: singleWidgetPeriodType,\n widgetTypeId: singleWidgetTypeId,\n isExpanded: singleWidgetIsExpanded,\n isLineChart: singleWidgetIsLineChart,\n showXLabels: showXLabels,\n showYLabels: showYLabels\n\n }),\n }).then((response) => {\n if (!response.isError) {\n clearSingleWidgetFields();\n getItems();\n } else {\n }\n });\n };\n\n const selectForEdit = (widget) => {\n setEditWidgetId(widget.id);\n setSingleWidgetIsExpanded(widget.isExpanded);\n setSingleWidgetLastPeriodRange(widget.lastPeriodRange);\n setSingleWidgetPeriodType(widget.periodType);\n setSingleWidgetIsLineChart(widget.isLineChart);\n setSingleWidgetTypeId(widget.widgetTypeId);\n setShowXLabels(widget.showXLabels);\n setShowYLabels(widget.showYLabels)\n };\n\n const updateWidget = () => {\n let newWidgets = [...allWidgets];\n newWidgets.forEach(function (item) {\n if (item.id.toString() === editWidgetId.toString()) {\n item.widgetTypeId = singleWidgetTypeId;\n item.isExpanded = singleWidgetIsExpanded;\n item.isLineChart = singleWidgetIsLineChart;\n item.showXLabels = showXLabels;\n item.showYLabels = showYLabels;\n item.lastPeriodRange = singleWidgetLastPeriodRange;\n item.periodType = singleWidgetPeriodType;\n item.widgetType =\n widgetTypes &&\n widgetTypes.find(\n (x) => x.id.toString() === singleWidgetTypeId.toString()\n );\n }\n });\n\n setAllWidgets(newWidgets);\n };\n\n const saveDisabled = () => {\n return (\n singleWidgetPeriodType == null ||\n singleWidgetLastPeriodRange < 1 ||\n singleWidgetPeriodType === \"\" ||\n singleWidgetTypeId === \"\"\n );\n };\n\n const getWidgetTypesForAdd = () => {\n if (!widgetTypes) {\n return [];\n }\n\n let uniqTypes = widgetTypes.filter((x) => {\n if (\n allWidgets.find((w) => w.widgetTypeId.toString() === x.id.toString())\n ) {\n return false;\n } else {\n return true;\n }\n });\n\n return uniqTypes == null\n ? []\n : uniqTypes.map((x) => {\n return { id: x.id, text: x.name };\n });\n };\n\n const getWidgetTypesForEdit = () => {\n if (!widgetTypes) {\n return [];\n }\n\n let uniqTypes = widgetTypes.filter((x) => {\n return !allWidgets.find(\n (w) =>\n w.id !== editWidgetId &&\n w.widgetTypeId.toString() === x.id.toString()\n );\n });\n\n return uniqTypes == null\n ? []\n : uniqTypes.map((x) => {\n return { id: x.id, text: x.name };\n });\n };\n\n return (\n <>\n {!editMode && (\n \n )}\n \n
\n
\n
\n
\n \n
\n
\n
Edit Metric
\n
\n
\n
\n
\n

\n Metric\n

\n
\n
\n
\n \n setSingleWidgetTypeId(event.target.value)\n }\n />\n
\n
\n
\n
\n
\n

Type

\n
\n
\n
\n setSingleWidgetIsExpanded(false)}\n />\n \n
\n \"type-1\"\n
\n setSingleWidgetIsExpanded(true)}\n />\n \n
\n \"type-2\"\n
\n
\n
\n
\n

\n Date range\n

\n
\n
\n
\n
\n

Previous

\n
\n
\n
\n \n setSingleWidgetLastPeriodRange(event.target.value)\n }\n />\n
\n
\n
\n
\n {\n setSingleWidgetPeriodType(event.target.value);\n }}\n />\n
\n
\n
\n
\n
\n
\n
\n

\n Chart type\n

\n
\n
\n
\n setSingleWidgetIsLineChart(true)}\n />\n \n Line\n \n
\n
\n
\n
\n setSingleWidgetIsLineChart(false)}\n />\n \n Bar\n \n
\n
\n
\n
\n
\n

Show Axis Labels

\n
\n
\n
\n setShowXLabels(!showXLabels)}\n />\n \n
\n
\n
\n
\n setShowYLabels(!showYLabels)}\n />\n \n
\n
\n
\n
\n
\n clearSingleWidgetFields()}\n >\n CANCEL\n \n updateWidget()}\n className=\"btn btn-blue btn-width-130 btn-height-40 border-2 font-size-14 ml-1\"\n >\n UPDATE\n \n
\n
\n
\n
\n
\n
\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n Close\n Filter\n
\n
\n
\n
\n
\n \n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewAfterHoursTrendLine\n ) &&\n (\n <>\n
\n
\n \n setWithAfterHours(!withAfterHours)\n }\n />\n \n After Hours\n \n
\n
\n {withAfterHours && (\n <>\n
\n
\n \n setWithAfterHoursDiff(!withAfterHoursDiff)\n }\n />\n \n Show Diff\n \n
\n
\n \n )}\n
\n
\n {\n setshowPEPeriod(!showPEPeriod);\n // Reset the \"Show Diff\" checkbox when \"Show Partial End Period\" is changed.\n setWithAfterHoursDiff(false);\n }}\n />\n \n Include Partial End Period\n \n
\n
\n
\n
\n {\n setShowAdSeries(!showAdSeries); \n }}\n />\n \n Show Series\n \n
\n
\n
\n
\n \n setWithTrendLine(!withTrendLine)\n }\n />\n \n Trend Line\n \n
\n
\n \n )}\n
\n
\n
\n
\n
\n \n
\n {groupIds && (\n \n )}\n
\n
\n
\n
\n \n );\n};\n\nexport default Dashboard;\n","export const afterLogin = (response)=>{\n const items = window.location.search.slice(1, window.location.search.length).split(\"&\")\n const params = items.reduce((acc, row)=>{\n const [key, ...args] =row.split(\"=\")\n acc[key]=args.join(\"=\")\n return acc\n }, {})\n \n if(params.redirectURL && (params.redirectURL.match(/(.*)\\.lvh\\.me:3000$/g) || params.redirectURL.match(/(.*)\\.getkontak\\.com$/g)).length > 0){\n const form = document.createElement(\"form\")\n form.action=params.redirectURL\n form.method=\"POST\"\n const input = document.createElement(\"input\")\n input.value = JSON.stringify(response)\n input.name=\"user\"\n input.type=\"hidden\"\n form.appendChild(input)\n document.body.appendChild(form)\n form.submit()\n return true\n }\n}","/* eslint-disable no-useless-concat */\nimport React, { useState, useEffect } from \"react\";\nimport \"../style.css\";\nimport Cookies from \"js-cookie\";\nimport { ajaxCaller, ajaxNonJsonCaller } from \"../ajaxCaller\";\nimport { Modal } from \"react-bootstrap\";\nimport 'react-select2-wrapper/css/select2.css';\nimport $ from 'jquery'\nimport { afterLogin } from \"../actions/users\"\nimport CreatableSelect from 'react-select/creatable';\nimport {saveToCookies } from \"./helpers/utils\";\n\nconst Authentication = () => {\n // const systemIsTempDown = false;\n const [email, setEmail] = useState(null);\n const [password, setPassword] = useState(null);\n const [authenticated, setAuthenticated] = useState(null);\n const [authenticationFailed, setAuthenticationFailed] = useState(null);\n const [authenticatedUser, setAuthenticatedUser] = useState(null);\n const [companies, setCompanies] = useState(null);\n const [companyId, setCompanyId] = useState(null);\n const [passwordRecoveryEmail, setPasswordRecoveryEmail] = useState(null);\n const [showCompanySelection, setShowCompanySelection] = useState(false);\n\n const [company, setCompany] = useState(null);\n\n const authenticateAdmin = (event) => {\n ajaxNonJsonCaller(\"User/SetCompanyForKontaAdmin?companyId=\" + companyId, {\n method: \"post\",\n headers: new Headers({\n Authorization: \"Bearer \" + authenticatedUser.token,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n getCompany(authenticatedUser.token, () => {\n saveToCookies(authenticatedUser);\n if (!afterLogin(response)) {\n setAuthenticated(true);\n }\n setShowCompanySelection(false);\n });\n\n }\n });\n }\n\n const getCompany = (token, callback) => {\n ajaxCaller(\"Company/GetCurrentUserCompany/\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + token,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n Cookies.set(\"company_logo\", response.logo);\n Cookies.set(\"companyKey\", response.companyKey);\n Cookies.set(\"company_id\", response.id);\n callback && callback();\n }\n });\n }\n\n const authenticateUser = () => {\n // setAuthenticationFailed(false);\n\n // if (systemIsTempDown && password !== \"PaSSSuper12rt^3\") {\n // setAuthenticationFailed(true);\n // return;\n // }\n\n ajaxCaller(\"User/Authenticate\", {\n method: \"post\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n email: email,\n password: password,\n }),\n }).then((response) => {\n if (response.isError) {\n setAuthenticationFailed(true);\n } else {\n if (response.kontakAdmin) {\n setAuthenticatedUser(response);\n ajaxCaller(\"Company/GetAllCompaniesRet\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + response.token,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((companies) => {\n setCompanies(companies);\n setShowCompanySelection(true);\n });\n } else {\n getCompany(response.token, () => {\n saveToCookies(response);\n if (!afterLogin(response)) {\n setAuthenticated(true);\n }\n });\n }\n }\n });\n }\n\n // function onCompanySelected(event) {\n // const companyId = $(event.target).val();\n // setCompanyId(companyId);\n // }\n\n function onCompanySelected(event) {\n const company = event;\n setCompany(company);\n setCompanyId(company?.value);\n }\n\n\n\n useEffect(() => {\n if (authenticated) {\n window.location.href = \"/dashboard\";\n }\n });\n\n const validateEmail = (email) => {\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(email);\n };\n\n const [errorMessage, setErrorMessage] = useState(null);\n const recoveryPassword = () => {\n ajaxCaller(\"User/PasswordRecovery/\" + passwordRecoveryEmail, {\n method: \"put\",\n headers: {\n \"Content-Type\": \"application/json\"\n }\n }).then(response => {\n if (response.isError) {\n setErrorMessage(response.message);\n } else {\n $('#modalForgotPass').modal('toggle');\n setEmail(null);\n setErrorMessage(null);\n }\n });\n }\n\n const isPasswordRecoveryDisabled = (email) => {\n if (typeof email !== 'string' && email !== null) {\n return true;\n }\n return email === null || email.trim() === \"\" || !validateEmail(email);\n };\n\n return (\n
\n
\n
\n {errorMessage && (
{errorMessage}
)}\n
\n
\n
\n \n
\n
\n
\n Please provide your email\n
\n
\n
\n
\n setPasswordRecoveryEmail(event.target.value)} name=\"email-rec\" id=\"email-rec\" className=\"form-style small\" placeholder=\"Your Email...\" autoComplete=\"off\" />\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \"logo\"\n
\n
\n
\n Please provide your email and password\n
\n
\n {authenticationFailed && (
Check your email and password
)}\n
\n
\n \n {\n var key = event.which;\n if (key === 13 || key === 14) {\n authenticateUser()\n }\n }}\n onChange={(event) => setEmail(event.target.value)}\n\n className=\"form-style\"\n placeholder=\"Your Email...\"\n autoComplete=\"off\"\n />\n
\n
\n
\n
\n \n {\n var key = event.which;\n if (key === 13 || key === 14) {\n authenticateUser()\n }\n }}\n onChange={(event) => setPassword(event.target.value)}\n placeholder=\"Your Password...\"\n autoComplete=\"off\"\n />\n
\n
\n
\n

\n \n Forgot password?\n \n

\n
\n
\n \n Login\n \n
\n
\n
\n
\n
\n
\n
\n\n setShowCompanySelection(false)}\n >\n
\n
\n
\n
\n
Please select a company
\n
\n
\n
\n onCompanySelected(event)} \n value={company}\n defaultValue={company}\n placeholder=\"Company...\"\n theme='bootstrap4'\n options= {companies && companies.map((x) => ({\n value: x.id, label: x.name + \n (Boolean(x.hasCalls) === true ? \" \" + \"\\u{1f4f1}\" : \"\") + \n (Boolean(x.hasLiveChats) === true ? \" \" + \"\\u{2328}\" : \"\") + \n (Boolean(x.isUncategorized) === true ? \" \" + \"\\u{2753}\": \"\")\n }))}\n formatCreateLabel={() => undefined}\n isValidNewOption={() => false}\n />\n\n {/* ({ id: x.id, text: x.name }))\n }\n defaultValue={companyId}\n options={{\n placeholder: 'Company',\n theme: 'bootstrap4',\n minimumResultsForSearch: -1\n }}\n onChange={(event) => onCompanySelected(event)}\n /> */}\n
\n
\n
\n \n Login\n \n
\n
\n
\n
\n \n \n );\n};\n\nexport default Authentication;\n","import React, { useEffect, useState, useRef } from \"react\";\nimport Highcharts from \"highcharts\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { ajaxCaller } from \"../../ajaxCaller\";\nimport { getAccessToken } from \"../../authentification\";\nimport { CSVLink } from \"react-csv\";\nimport { PrivilegeChecker, Privileges } from \"../../privilegeChecker\";\nimport _ from \"lodash\"\n\n\nfunction cleanNumber(value) {\n if (value === \"NaN\" || _.isNaN(value)) {\n return 0\n } else {\n return value\n }\n}\n\nfunction findLineByLeastSquares(values_x, values_y) {\n let sum_x = 0;\n let sum_y = 0;\n let sum_xy = 0;\n let sum_xx = 0;\n let count = 0;\n\n /*\n * We'll use those variables for faster read/write access.\n */\n let x = 0;\n let y = 0;\n let values_length = values_x.length;\n\n if (values_length !== values_y.length) {\n throw new Error(\n \"The parameters values_x and values_y need to have same size!\"\n );\n }\n\n /*\n * Nothing to do.\n */\n if (values_length === 0) {\n return [[], []];\n }\n\n /*\n * Calculate the sum for each of the parts necessary.\n */\n for (let v = 0; v < values_length; v++) {\n x = values_x[v];\n y = values_y[v];\n sum_x += x;\n sum_y += y;\n sum_xx += x * x;\n sum_xy += x * y;\n count++;\n }\n\n /*\n * Calculate m and b for the formular:\n * y = x * m + b\n */\n let m = (count * sum_xy - sum_x * sum_y) / (count * sum_xx - sum_x * sum_x);\n let b = sum_y / count - (m * sum_x) / count;\n\n /*\n * We will make the x and y result line now\n */\n let result_values_x = [];\n let result_values_y = [];\n\n for (let v = 0; v < values_length; v++) {\n x = values_x[v];\n y = x * m + b;\n result_values_x.push(x);\n result_values_y.push(y);\n }\n\n return [result_values_x, result_values_y];\n}\n\nconst calculateDifference = (minuend, subtahend, reportType) => {\n let differenceData;\n //flip/reverse for some reports where the Total is NOT the main result/series but additional one\n if ([7].includes(reportType)) {\n differenceData = subtahend.map((point, index) => [\n point[0], // Assuming the first element in the data arrays is the period\n point[1] - (minuend[index] ? minuend[index][1] : 0), // Calculating the difference\n ]);\n }//for all others just this\n else {\n differenceData = minuend.map((point, index) => [\n point[0], // Assuming the first element in the data arrays is the period\n point[1] - (subtahend[index] ? subtahend[index][1] : 0), // Calculating the difference\n ]);\n }\n return differenceData\n}\n\n\nconst ReportChart = (props) => {\n\n\n let entityType = 'Threads'\n let valueName = 'threadsNumber'\n if ([6, 7, 8, 14, 15, 17].includes(props.reportType)) {\n entityType = 'Calls'\n valueName = 'callsNumber'\n } else if ([16, 12].includes(props.reportType)) {\n entityType = 'Calls'\n valueName = 'averageDurationsNumber'\n } else if ([9, 10, 11, 13].includes(props.reportType)) {\n entityType = 'Appointments'\n valueName = 'appointmentsNumber'\n }\n\n const [chartVisible, setChartVisible] = useState(false);\n const [chart, setChart] = useState(null);\n const [columnsReferences] = useState([]);\n const [data, setData] = useState(null);\n const [exportData, setExportData] = useState([{}]);\n const [showAfterHours, setShowAfterHours] = useState(props.showAfterHours);\n const [showPEPeriod, setShowPEPeriod] = useState(props.showPEPeriod);\n const [showAdSeries, setShowAdSeries] = useState(props.showAdSeries);\n const [chartRangeType, setChartRangeType] = useState(props.chartRangeType || 2);\n const [isLineChart, setIsLineChart] = useState(props.isLineChart);\n const [reportType, setReportType] = useState(props.reportType);\n\n useEffect(() => {\n // Simulating loading delay with setTimeout (Replace this with your actual data fetching/loading)\n setTimeout(() => {\n setChartVisible(true); // Set chart visibility to true after loading or rendering\n }, 1000); // Adjust the delay time as needed\n }, []);\n\n const chartPointFormatter = function () {\n if (this.series.name === \"Trends\") {\n let value = convertToDecimalWithComma(this.y);\n return `${value}`;\n }\n if (reportType === 3) {\n return `Conv: ${this.y}%
`;\n }\n else\n if (reportType === 4) {\n let value = \"$\" + Math.round(this.y).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `Value: ${value}
`;\n }\n else if (reportType === 1) {\n let value = Math.round(this.y).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `Current Chats: ${value}
`;\n }\n else if (reportType === 2) {\n let value = this.y.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `New Appt. Requests: ${value}
`;\n }\n else if (reportType === 16) {\n let value = this.y.toFixed(2).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `Minutes: ${value}
`;\n }\n else if (reportType >= 5 && reportType <= 17) {\n let value = Math.round(this.y).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `${this.series.name}: ${value}
`;\n }\n }\n\n const [chartOptions, setChartOptions] = useState({\n tooltip: {\n backgroundColor: \"rgba(64,66,85,0.95)\",\n borderWidth: 0,\n shadow: false,\n useHTML: true,\n style: {\n padding: '15px'\n },\n borderRadius: 0,\n headerFormat: '',\n pointFormatter: chartPointFormatter,\n footerFormat: '{point.key}
',\n },\n chart: {\n animation:false,\n height: \"130px\",\n events: {\n load() {\n this.showLoading();\n setTimeout(this.hideLoading.bind(this), 1000);\n },\n },\n },\n legend: {\n enabled: false,\n },\n credits: {\n enabled: false,\n },\n title: {\n text: \"\",\n },\n loading: {\n hideDuration: 1000,\n showDuration: 1000,\n },\n xAxis: {\n tickInterval: 1,\n labels: {\n enabled: false,\n },\n },\n yAxis: {\n title: \"\",\n labels: {\n enabled: false,\n },\n },\n plotOptions: {\n column: {\n grouping: false\n }\n },\n series: [\n {\n name: \"Total\",\n lineColor: isLineChart ? \"#1A2430\" : \"rgba(136, 206, 251, 0.55)\",\n color: isLineChart ? \"#1A2430\" : \"rgba(136, 206, 251, 0.55)\",\n type: isLineChart ? \"areaspline\" : \"column\",\n fillColor: \"rgba(119, 181, 223, 0.1)\",\n lineWidth: 2,\n borderWidth: 1,\n animation:false,\n },\n\n ],\n });\n\n const applyWithAfterHours = () => {\n setShowAfterHours(props.showAfterHours);\n const chartOptionsNew = { ...chartOptions };\n if (\n showAfterHours &&\n chartOptionsNew.series\n ) {\n if (props.withAfterHours) {\n let seriesIndex = chartOptionsNew.series.findIndex(\n (x) => x.name === \"After Hours\"\n );\n\n if (seriesIndex === -1) {\n chartOptionsNew.tooltip = null;\n refreshChart();\n return;\n }\n\n if (chartOptionsNew.series[seriesIndex] != null) {\n chartOptionsNew.series[\n seriesIndex\n ].data = data.afterHoursResults.map((a) => [\n a.period,\n a[valueName],\n ]);\n\n chartOptionsNew.tooltip = {\n pointFormatter: function () {\n let result = \"\";\n\n if (columnsReferences[this.x] != null) {\n columnsReferences[this.x].scrollIntoView({\n block: \"nearest\",\n alignToTop: false,\n });\n }\n\n if (\n chartOptionsNew == null ||\n chartOptionsNew.series[seriesIndex] == null ||\n chartOptionsNew.series[seriesIndex].data == null ||\n chartOptionsNew.series[seriesIndex].data.length === 0 || seriesIndex < 0 ||\n props.withAfterHoursDiff === false\n ) {\n let value = Math.round(this.y).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `a ${chartOptionsNew.series[seriesIndex].name} : ${value}
`;\n }\n const totalValue = chartOptionsNew.series[0].data[this.x][1];\n const afterHoursValue =\n chartOptionsNew.series[seriesIndex].data[this.x][1];\n const normalHoursValue =\n parseInt(totalValue) - parseInt(afterHoursValue);\n result =\n totalValue.toFixed(2) +\n \" (Total) - \" +\n afterHoursValue.toFixed(2) +\n \" (After Hours) = \" +\n normalHoursValue.toFixed(2) +\n \" (Business Hours)\\n\";\n return result;\n },\n };\n }\n setChartOptions(chartOptionsNew);\n } else {\n var seriesIndex = chartOptionsNew.series.findIndex(\n (x) => x.name === \"After Hours\"\n );\n if (\n chartOptionsNew.series[seriesIndex] &&\n chartOptionsNew.series[seriesIndex].data\n ) {\n chartOptionsNew.series[seriesIndex].data = [];\n }\n setChartOptions(chartOptionsNew);\n }\n refreshChart();\n }\n };\n\n const applyWithTrendLine = () => {\n const chartOptionsNew = { ...chartOptions };\n if (chartOptionsNew.series) {\n if (props.withTrendLine) {\n var seriesIndex = chartOptionsNew.series.findIndex(\n (x) => x.name === \"Trends\"\n );\n if (seriesIndex === -1) {\n refreshChart();\n return;\n }\n seriesIndex = chartOptionsNew.series.findIndex(\n (x) => x.name === \"Trends\"\n );\n if (chartOptionsNew.series[seriesIndex] != null) {\n const formattedResponse = data.results.map((a) => [\n a.period,\n a[valueName],\n ]);\n const xPoints = formattedResponse.map((value, index) => index);\n const yPoints = formattedResponse.map((a) => a[1]);\n const trendLineYPoints = findLineByLeastSquares(xPoints, yPoints)[1];\n if (chartOptionsNew.series[seriesIndex] != null) {\n chartOptionsNew.series[\n seriesIndex\n ].data = trendLineYPoints.map((value, index) => [\n xPoints[index],\n parseFloat(value.toFixed(2)),\n ]);\n }\n }\n setChartOptions(chartOptionsNew);\n } else {\n seriesIndex = chartOptionsNew.series.findIndex(\n (x) => x.name === \"Trends\"\n );\n if (\n chartOptionsNew.series[seriesIndex] &&\n chartOptionsNew.series[seriesIndex].data\n ) {\n chartOptionsNew.series[seriesIndex].data = [];\n setChartOptions(chartOptionsNew);\n }\n }\n refreshChart();\n }\n };\n\n const applyshowPEPeriod = () => {\n const chartOptionsNew = { ...chartOptions };\n if (props && chartOptionsNew.series && showPEPeriod !== props.showPEPeriod) {\n setChartOptions(chartOptionsNew);\n setShowPEPeriod(!showPEPeriod)\n refreshChart();\n }\n };\n\n const applyshowAdSeries = () => {\n const chartOptionsNew = { ...chartOptions };\n if (props && chartOptionsNew.series && showAdSeries !== props.showAdSeries) {\n setChartOptions(chartOptionsNew);\n setShowAdSeries(!showAdSeries)\n refreshChart();\n }\n };\n\n const showPEPeriodCallback = () => {\n applyshowPEPeriod();\n };\n useEffect(showPEPeriodCallback, [props.showPEPeriod]);\n\n const showAdSeriesCallback = () => {\n applyshowAdSeries();\n };\n useEffect(showAdSeriesCallback, [props.showAdSeries]);\n\n const afterHoursCallback = () => {\n applyWithAfterHours();\n };\n useEffect(afterHoursCallback, [props.withAfterHours, props.withAfterHoursDiff]);\n\n const trendLineCallback = () => {\n applyWithTrendLine();\n };\n useEffect(trendLineCallback, [props.withTrendLine]);\n\n\n\n\n const convertToInteger = (value) => {\n if (!value)\n return 0\n else\n return Math.round(value).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,');\n }\n\n\n const convertToDecimalWithComma = (value) => {\n if (!value)\n return 0\n else\n return value.toFixed(2).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,');\n }\n\n\n const removeClassName = (element, classNameToRemove) => {\n if (element) {\n const classNames = element.className.split(' ');\n const filteredClassNames = classNames.filter((className) => className !== classNameToRemove);\n element.className = filteredClassNames.join(' ');\n }\n };\n\n const refreshChart = () => {\n chart && chart.showLoading();\n setReportType(props.reportType);\n const chartOptionsNew = {\n tooltip: {\n backgroundColor: \"rgba(64,66,85,0.95)\",\n borderWidth: 1,\n shadow: true,\n useHTML: true,\n style: {\n padding: \"15px\",\n },\n borderRadius: 15,\n headerFormat: \"\",\n footerFormat: '{point.key}
',\n },\n chart: {\n animation:false,\n height: \"320px\",\n type: 'column',\n options3d: {\n enabled: true,\n alpha: 15,\n beta: 15,\n viewDistance: 25,\n depth: 40\n }\n },\n legend: {\n enabled: false,\n },\n credits: {\n enabled: false,\n },\n title: {\n text: \"\",\n },\n loading: {\n hideDuration: 1000,\n showDuration: 1000,\n },\n xAxis: {\n tickInterval: 1,\n labels: {\n enabled: true,\n formatter: (obj) => {\n if (\n chartOptionsNew == null ||\n chartOptionsNew == null ||\n chartOptionsNew.series == null ||\n chartOptionsNew.series[0] == null ||\n chartOptionsNew.series[0].data[obj.value] == null ||\n chartOptionsNew.series[0].data[obj.value][0] == null\n ) {\n return \"\";\n } else {\n return chartOptionsNew.series[0].data[obj.value][0];\n }\n },\n },\n },\n yAxis: {\n title: \"\",\n labels: {\n enabled: true,\n formatter: (obj) => {\n if (props.reportType === 3) {\n return obj.value + \"%\"\n }\n else if (props.reportType === 4) {\n return \"$\" + convertToInteger(obj.value);\n }\n else {\n return convertToInteger(obj.value);\n }\n }\n },\n endOnTick: true,\n maxPadding: 0,\n max: null,\n tickInterval: 1,\n minorTickLength: 0,\n tickLength: 0,\n visible: true,\n },\n plotOptions: {\n column: {\n stacking: null,\n grouping: true,\n pointWidth: 25, // Set a fixed width for the columns in pixels\n pointPadding: 0, // Increase or decrease the padding between columns\n groupPadding: 0.05 // Set the padding between groups of columns\n },\n series: {\n animation:false,\n marker: {\n radius: 3,\n enabled: true,\n symbol: \"circle\"\n },\n },\n },\n series: [\n {\n name: props.reportType === 3\n ? \"Conv\"\n : props.reportType === 4\n ? \"Value\"\n : props.reportType === 1\n ? \"Current Chats\"\n : props.chartName,\n lineColor: isLineChart ? \"#4C95E3\" : \"#3495E6\",//\"#1A2430\" : \"#3495E6\",\n color: isLineChart ? \"#4C95E3\" : \"#3495E6\",\n type: isLineChart ? \"areaspline\" : \"column\",\n fillColor: {\n linearGradient: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 1\n },\n stops: [\n [0, 'rgba(76, 149, 227, 0.33)'], // Start color at 100% opacity\n [1, 'rgba(76, 149, 227, 0.02)'] // End color at 0% opacity\n ]\n },\n lineWidth: 1,\n borderWidth: 0,\n tooltip: {\n backgroundColor: \"rgba(64,66,85,0.95)\",\n borderWidth: 1,\n shadow: true,\n useHTML: true,\n style: {\n padding: \"15px\",\n },\n borderRadius: 15,\n headerFormat: \"\",\n pointFormatter: function () {\n if (this.series.name === \"Trends\") {\n let value = convertToDecimalWithComma(this.y);\n return `${value}`;\n }\n if (props.reportType === 3) {\n return `Conv: ${this.y}%
`;\n }\n else\n if (props.reportType === 4) {\n let value = \"$\" + Math.round(this.y).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `Value: ${value}
`;\n }\n else if (props.reportType === 1) {\n let value = Math.round(this.y).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `Current Chats: ${value}
`;\n }\n else if (props.reportType === 2) {\n let value = this.y.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `New Appt. Requests: ${value}
`;\n }\n else if (props.reportType === 16) {\n let value = this.y.toFixed(2).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `Minutes: ${value}
`;\n }\n else if (props.reportType >= 5 && props.reportType <= 17) {\n let value = Math.round(this.y).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1,\");\n return `${this.series.name}: ${value}
`;\n }\n },\n footerFormat: '{point.key}
',\n },\n point: {\n events: {\n mouseOver: function () {\n const columnElement = document.getElementById(`column-${this.x}`);\n if (columnElement) {\n columnElement.className += ' selected'; // Apply 'highlighted' class to the column\n }\n const headerElement = document.getElementById(`column-header-${this.x}`);\n if (headerElement) {\n headerElement.className += ' selected'; // Apply 'highlighted' class to the column\n }\n },\n mouseOut: function () {\n const columnElement = document.getElementById(`column-${this.x}`);\n if (columnElement) {\n removeClassName(columnElement, 'selected');\n }\n\n const headerElement = document.getElementById(`column-header-${this.x}`);\n if (headerElement) {\n removeClassName(headerElement, 'selected');\n }\n }\n }\n }\n },\n ],\n };\n\n\n if (props.additionalSeries && props.additionalSeries.length > 0 && props.showAdSeries) {\n const arrSeries = props.additionalSeries.split(/,\\s+/).map(item => item.trim());\n var i = 0;\n arrSeries.forEach((item) => {\n i++;\n\n var lineCol = i === 1 ? \"#E88C1E\" : \"#04BD81\"\n var barCol = \"rgba(136, 206, 251, 0.45)\"\n var fillColor = i === 1 ?\n {\n linearGradient: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 1\n },\n stops: [\n [0, 'rgba(232, 140, 30, 0.33)'], // Start color at 100% opacity\n [1, 'rgba(232, 140, 30, 0.02)'] // End color at 0% opacity\n ]\n }\n :\n {\n linearGradient: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 1\n },\n stops: [\n [0, 'rgba(4, 189, 129, 0.33)'], // Start color at 100% opacity\n [1, 'rgba(4, 189, 129, 0.02)'] // End color at 0% opacity\n ]\n }\n chartOptionsNew.series.push({\n index: `series0${i}`,\n name: item,\n lineColor: isLineChart ? lineCol : barCol,\n color: isLineChart ? lineCol : barCol,\n type: isLineChart ? \"areaspline\" : \"column\",\n fillColor: fillColor,//barCol, //\"rgba(136, 206, 251, 0.25)\",\n lineWidth: 1,\n borderWidth: 0,\n marker: {\n radius: 4,\n enabled: true,\n symbol: \"diamond\"\n },\n tooltip: {\n backgroundColor: \"rgba(64,66,85,0.95)\",\n borderWidth: 1,\n shadow: true,\n useHTML: true,\n style: {\n padding: \"15px\",\n },\n borderRadius: 15,\n headerFormat: \"\",\n pointFormatter: chartPointFormatter,\n footerFormat: '{point.key}
',\n },\n point: {\n events: {\n mouseOver: function () {\n const columnElement = document.getElementById(`column-${this.x}`);\n if (columnElement) {\n columnElement.className += ' selected'; // Apply 'highlighted' class to the column\n }\n const headerElement = document.getElementById(`column-header-${this.x}`);\n if (headerElement) {\n headerElement.className += ' selected'; // Apply 'highlighted' class to the column\n }\n },\n mouseOut: function () {\n const columnElement = document.getElementById(`column-${this.x}`);\n if (columnElement) {\n removeClassName(columnElement, 'selected');\n }\n const headerElement = document.getElementById(`column-header-${this.x}`);\n if (headerElement) {\n removeClassName(headerElement, 'selected');\n }\n }\n }\n }\n });\n });\n }\n\n let enableAh = props.reportType === 1 ? true : props.showAfterHours && props.withAfterHours;\n if (enableAh) {\n\n chartOptionsNew.series.push({\n name: \"After Hours\",\n fillColor: {\n linearGradient: {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 1\n },\n stops: [\n [0, 'rgba(177, 179, 201, 0.45)'], // Start color at 100% opacity\n [1, 'rgba(177, 179, 201, 0)'] // End color at 0% opacity\n ]\n },\n lineColor: \"#B1B3C9\",\n color: \"#B1B3C9\",\n lineWidth: 1,\n borderWidth: 1,\n type: isLineChart ? \"areaspline\" : \"column\",\n marker: { enabled: true },\n });\n\n }\n\n let trendLineSeriesIndex = 1;\n if (props.withTrendLine) {\n chartOptionsNew.series.push({\n name: \"Trends\",\n lineColor: \"rgba(249, 25, 25, 1)\",\n color: \"rgba(249, 25, 25, 1)\",\n type: \"line\",\n lineWidth: 2,\n borderWidth: 1,\n marker: { enabled: false },\n });\n\n trendLineSeriesIndex = chartOptionsNew.series.findIndex(\n (x) => x.name === \"Trends\"\n );\n }\n\n ajaxCaller(`Dashboard/Get${entityType}Statistic`, {\n method: \"post\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n type: chartRangeType,\n dateFrom: props.dateRange.dateFrom,\n dateTo: props.dateRange.dateTo,\n isLeads: props.isLeads,\n reportType: props.reportType,\n withAfterHours: enableAh,\n showPEPeriod: props.showPEPeriod,\n groupIds: props.groupIds,\n }),\n }).then((response) => {\n if (response.results != null) {\n const formattedResponse = response.results.map((a) => [\n a.period,\n a[valueName],\n ]);\n chartOptionsNew.series[0].data = formattedResponse;\n\n\n let formattedResponse01;\n let series1Index = chartOptionsNew.series.findIndex(\n (x) => x.index === \"series01\"\n );\n if (series1Index > 0 && props.showAdSeries) {\n if (response.results01) {\n formattedResponse01 = response.results01.map((a) => [\n a.period,\n a[valueName],\n ]);\n chartOptionsNew.series[series1Index].data = formattedResponse01;\n }\n }\n\n let formattedResponse02;\n let series2Index = chartOptionsNew.series.findIndex(\n (x) => x.index === \"series02\"\n );\n if (series2Index > 0 && props.showAdSeries) {\n if (response.results02) {\n formattedResponse02 = response.results02.map((a) => [\n a.period,\n a[valueName],\n ]);\n chartOptionsNew.series[series2Index].data = formattedResponse02;\n }\n else {\n if (formattedResponse01 && formattedResponse) {\n const differenceData = calculateDifference(formattedResponse, formattedResponse01, props.reportType)\n chartOptionsNew.series[series2Index].data = differenceData;\n }\n }\n }\n //AfterHours filter by field\n if (props.withAfterHours && props.showAfterHours) {\n let seriesIndex = chartOptionsNew.series.findIndex(\n (x) => x.name === \"After Hours\"\n );\n if (chartOptionsNew.series[seriesIndex] != null) {\n chartOptionsNew.series[seriesIndex].data = response.afterHoursResults.map(\n (a) => [a.period, a[valueName]]\n );\n }\n }\n // Calculating Line Trend\n if (props.withTrendLine) {\n const xPoints = formattedResponse.map((value, index) => index);\n const yPoints = formattedResponse.map((a) => a[1]);\n const trendLineYPoints = findLineByLeastSquares(\n xPoints,\n yPoints\n )[1];\n if (chartOptionsNew.series[trendLineSeriesIndex] != null) {\n chartOptionsNew.series[\n trendLineSeriesIndex\n ].data = trendLineYPoints.map((value, index) => [\n xPoints[index],\n parseFloat(value.toFixed(2)),\n ]);\n }\n }\n setData(response);\n setExportData(getExportData(response));\n setChartOptions(chartOptionsNew);\n chart && chart.hideLoading();\n }\n });\n };\n\n const hoverColumn = (columnIndex) => {\n chart.tooltip.refresh(chart.series[0].data[columnIndex]);\n };\n\n const afterChartCreated = (chart) => {\n setChart(chart);\n };\n\n //Need to implement this as there were multiple calls to the refreshChart hookCallback for no reason\n const prevReportType = useRef(null);\n const prevDateRange = useRef(null);\n const prevGroupIds = useRef(null);\n const prevChartRangeType = useRef(null);\n const prevIsLineChart = useRef(null);\n const prevIsLineChartProp = useRef(null);\n\n const hookCallback = () => {\n //complex object comparison method, it doesn't work with !== ,=== even though values and the structure are the same\n const areGroupIdsEqual = JSON.stringify(props.groupIds) === JSON.stringify(prevGroupIds.current);\n\n // we don't want callback refreshChart more than once as it sends the request to the API mutliple times (2,3)\n if (\n props.reportType !== prevReportType.current ||\n props.dateRange !== prevDateRange.current ||\n !areGroupIdsEqual ||\n chartRangeType !== prevChartRangeType.current ||\n isLineChart !== prevIsLineChart.current ||\n props.isLineChart !== prevIsLineChartProp.current\n ) {\n refreshChart();\n }\n prevReportType.current = props.reportType;\n prevDateRange.current = props.dateRange;\n prevGroupIds.current = props.groupIds;\n prevChartRangeType.current = chartRangeType;\n prevIsLineChart.current = isLineChart;\n prevIsLineChartProp.current = props.isLineChart;\n };\n\n useEffect(hookCallback, [\n chartRangeType,\n isLineChart,\n props.isLineChart,\n props.reportType,\n props.dateRange,\n props.groupIds\n ]);\n\n\n // Set table rows in the separate function to maintain readability\n const setTableRows = () => {\n\n const renderContentBasedOnReportType = () => {\n\n if (![1, 6, 7, 8, 13, 16, 17].includes(props.reportType)) {\n return (\n
\n

\n % Change\n

\n
\n );\n }\n\n if (props.reportType === 1 && PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine)) {\n return (\n <>\n
\n

\n After-Hours Chats\n

\n
\n
\n

\n Cumulative AH Chats\n

\n
\n
\n

\n AH Chats as % of All Chats\n

\n
\n \n );\n }\n if ([6].includes(props.reportType)) {\n if (props.withAfterHours && PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine)) {\n return (\n <>\n
\n

\n New Prospect Call\n

\n
\n
\n

\n Existing Client Call\n

\n
\n
\n

\n Open Hours\n

\n
\n
\n

\n After Hours\n

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

\n New Prospect Call\n

\n
\n
\n

\n Existing Client Call\n

\n
\n \n )\n }\n }\n if ([7].includes(props.reportType)) {\n return (\n <>\n
\n

\n Total Calls\n

\n
\n
\n

\n Answered Calls\n

\n
\n
\n

\n Missed Calls\n

\n
\n \n );\n }\n if ([8].includes(props.reportType)) {\n return (\n <>\n
\n

\n Total Calls\n

\n
\n
\n

\n Answered Calls by VM\n

\n
\n \n );\n }\n if ([13].includes(props.reportType)) {\n return (\n <>\n
\n

\n New Client Calls to Apts\n

\n
\n
\n

\n Existing Client Calls to Apts\n

\n
\n \n );\n }\n if ([17].includes(props.reportType)) {\n return (\n <>\n
\n

\n Missed Calls To VM\n

\n
\n
\n

\n Abandoned Calls\n

\n
\n \n );\n }\n return null; // Return null if no condition is met\n };\n\n //Main Rows\n const content = (\n
\n
\n
\n

\n
\n {[7, 8].includes(props.reportType) ? null : (\n
\n

\n {props.reportType === 3\n ? \"Conv\"\n : props.reportType === 4\n ? \"Value\"\n : props.reportType === 1\n ? \"Current Chats\"\n : props.chartName\n }\n

\n
\n )}\n {[3, 6, 7, 8, 13, 16, 17].includes(props.reportType) ? null : (\n
\n

\n Cumulative{\" \"}\n {props.reportType === 1\n ? \"Chats\"\n : props.reportType === 2\n ? \"Leads\"\n : props.reportType === 4\n ? \"Value\"\n : \"\"\n }\n

\n
\n )}\n {renderContentBasedOnReportType()}\n
\n
\n );\n return content;\n }\n // Set table rows DATA in the separate function to maintain readability\n const setTableRowsData = () => {\n let content = (\n
\n
\n
\n {data &&\n data.results.map((result, index) => {\n cumData += result[valueName];\n if (props.reportType === 1 && PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine) && data.afterHoursResults && data.afterHoursResults.length > 0) {\n cumDataAfterHours += data.afterHoursResults[index][valueName];\n }\n return (\n
{\n hoverColumn(index);\n }}\n >\n \n

\n {result.period}\n

\n
\n {props.reportType === 1 ? (<>\n
\n

\n {cleanNumber(convertToInteger(result[valueName]))}\n

\n
\n
\n

\n {cleanNumber(convertToInteger(cumData))}\n

\n
\n {data.afterHoursResults && data.afterHoursResults.length > 0 && PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine) &&\n (
\n

\n {cleanNumber(convertToInteger(data.afterHoursResults[index][valueName]))}\n

\n
)}\n
\n

\n {cleanNumber(convertToInteger(cumDataAfterHours))}\n

\n
\n {data.afterHoursResults && data.afterHoursResults.length > 0 && PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine) &&\n (
\n

\n {cleanNumber(((data.afterHoursResults[index][valueName] * 100) / result[valueName]).toFixed())}%\n

\n
)}\n \n ) :\n props.reportType === 2 ? (<>\n
\n

\n {cleanNumber(convertToInteger(result[valueName]))}\n

\n
\n
\n

\n {cleanNumber(convertToInteger(cumData))}\n

\n
\n
\n \n {isNaN(result.difference) ? 0 : result.difference}%\n

\n
\n \n ) :\n props.reportType === 3 ? (<>\n
\n

\n {result[valueName] + \"%\"}\n

\n
\n
\n \n {cleanNumber(result.difference)}%\n

\n
\n \n ) :\n props.reportType === 4 ? (<>\n
\n

\n {\"$\" + convertToDecimalWithComma(result[valueName])}\n

\n
\n
\n \n {cleanNumber(result.difference)}%\n

\n
\n \n ) :\n props.reportType === 6 ?\n (\n <>\n
\n

\n {cleanNumber(convertToInteger(result[valueName]))}\n

\n
\n {data.results01 && data.results01.length > 0 && (\n
\n

\n {cleanNumber(data.results01[index][valueName])}\n

\n
\n )}\n {data.results01 && data.results01.length > 0 && (\n
\n

\n {cleanNumber((result[valueName] - data.results01[index][valueName]).toFixed())}\n

\n
\n )}\n {props.withAfterHours && data.afterHoursResults && data.afterHoursResults.length > 0 && PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine) && (
\n

\n {cleanNumber((result[valueName] - data.afterHoursResults[index][valueName]).toFixed())}\n

\n
)}\n {props.withAfterHours && data.afterHoursResults && data.afterHoursResults.length > 0 && PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine) &&\n (
\n

\n {cleanNumber(convertToInteger(data.afterHoursResults[index][valueName]))}\n

\n
)}\n )\n :\n props.reportType === 7 ?\n (\n <>\n {data.results01 && data.results01.length > 0 && (\n
\n

\n {cleanNumber(convertToInteger(data.results01[index][valueName]))}\n

\n
\n )}\n
\n

\n {cleanNumber(convertToInteger(result[valueName]))}\n

\n
\n\n {data.results01 && data.results01.length > 0 && (\n
\n

\n {cleanNumber((data.results01[index][valueName] - result[valueName]).toFixed())}\n

\n
\n )}\n {data.afterHoursResults && data.afterHoursResults.length > 0 && PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine) &&\n (
\n

\n {cleanNumber((result[valueName] - data.afterHoursResults[index][valueName]).toFixed())}\n

\n
)}\n {data.afterHoursResults && data.afterHoursResults.length > 0 && PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine) &&\n (
\n

\n {cleanNumber(convertToInteger(data.afterHoursResults[index][valueName]))}\n

\n
)}\n )\n :\n props.reportType === 8 ? (\n <>\n {data.results01 && data.results01.length > 0 ? (\n <>\n
\n

\n {cleanNumber((data.results01[index][valueName] - result[valueName]).toFixed())}\n

\n
\n
\n

\n {cleanNumber(convertToInteger(result[valueName]))}\n

\n
\n \n ) :\n (\n <>\n
\n

\n 0\n

\n
\n
\n

\n {cleanNumber(convertToInteger(result[valueName]))}\n

\n
\n )\n }\n \n ) :\n props.reportType === 13 ? (\n <>\n
\n

\n {cleanNumber(convertToInteger(result[valueName]))}\n

\n
\n {data.results01 && data.results01.length > 0 && (\n <>\n
\n

\n {cleanNumber(convertToInteger(data.results01[index][valueName]))}\n

\n
\n
\n

\n {cleanNumber((result[valueName] - data.results01[index][valueName]).toFixed())}\n

\n
\n \n )}\n \n ) :\n props.reportType === 16 ? (\n <>\n
\n

\n {cleanNumber(convertToDecimalWithComma(result[valueName]))}\n

\n
\n \n ) :\n props.reportType === 17 ?\n (\n <>\n
\n

\n {cleanNumber(convertToInteger(result[valueName]))}\n

\n
\n {data.results01 && data.results01.length > 0 && (\n
\n

\n {cleanNumber(convertToInteger(data.results01[index][valueName]))}\n

\n
\n )}\n {data.results01 && data.results01.length > 0 && (\n
\n

\n {cleanNumber((result[valueName] - data.results01[index][valueName]).toFixed())}\n

\n
\n )}\n {data.afterHoursResults && data.afterHoursResults.length > 0 && PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine) &&\n (
\n

\n {cleanNumber((result[valueName] - data.afterHoursResults[index][valueName]).toFixed())}\n

\n
)}\n {data.afterHoursResults && data.afterHoursResults.length > 0 && PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine) &&\n (
\n

\n {cleanNumber(convertToInteger(data.afterHoursResults[index][valueName]))}\n

\n
)}\n ) :\n [2, 4, 5, 9, 10, 11, 12, 14, 15].includes(props.reportType) ?\n (\n <>\n
\n

\n {props.reportType === 3 ? result[valueName] + \"%\" :\n props.reportType === 4 ? \"$\" + convertToDecimalWithComma(result[valueName]) :\n props.reportType === 16 ? convertToDecimalWithComma(result[valueName]) :\n cleanNumber(convertToInteger(result[valueName]))}\n

\n
\n
\n

\n {props.reportType === 4 ? (\"$\" + cleanNumber(convertToInteger(cumData.toString()))) : cleanNumber(convertToInteger(cumData))}\n

\n
\n
\n \n {isNaN(result.difference) ? 0 : result.difference}%\n

\n
\n \n ) : (<>)}\n
\n );\n })}\n
\n
\n );\n return content;\n }\n\n const getExportData = (data) => {\n let cumData = 0;\n let cumDataAfterHours = 0;\n if (props.reportType === 1) {\n return data.results.map((result, index) => {\n cumData += result[valueName];\n\n if (PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine) && data.afterHoursResults && data.afterHoursResults.length > 0) {\n cumDataAfterHours += data.afterHoursResults[index][valueName];\n }\n\n if (PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine) && data.afterHoursResults && data.afterHoursResults.length > 0) {\n return {\n date: result.period,\n total: result[valueName],\n cumData: cumData,\n afterHours: data.afterHoursResults[index][valueName],\n cumDataAfterHours: cumDataAfterHours,\n percentageAhToTotalChats: ((data.afterHoursResults[index][valueName] * 100) / result[valueName]).toFixed()\n };\n }\n else {\n return {\n date: result.period,\n total: result[valueName],\n cumData: cumData\n };\n }\n })\n }\n else if (props.reportType === 3) {\n return data.results.map((result) => {\n return {\n date: result.period,\n conv: result[valueName] + \"%\",\n change: result.differencePercentage + \"%\",\n };\n });\n }\n else if (props.reportType === 4) {\n return data.results.map((result) => {\n cumData += result[valueName];\n return {\n date: result.period,\n total: \"$\" + convertToInteger(result[valueName]),\n cumData: \"$\" + convertToInteger(cumData),\n change: result.difference + \"%\",\n };\n });\n }\n else if (props.reportType === 6) {\n return data.results.map((result, index) => {\n let res = {};\n if (PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine) && data.afterHoursResults && data.afterHoursResults.length > 0 && showAfterHours) {\n res = {\n date: result.period,\n total: convertToInteger(result[valueName]),\n new: convertToInteger(data.results01[index][valueName]),\n existing: convertToInteger(result[valueName] - data.results01[index][valueName]),\n afterHours: convertToInteger(data.afterHoursResults[index][valueName]),\n openHours: (result[valueName] - data.afterHoursResults[index][valueName]).toFixed(),\n }\n }\n else if (data && data.results01 && data.results01.length > 0) {\n res = {\n date: result.period,\n total: convertToInteger(result[valueName]),\n new: convertToInteger(data.results01[index][valueName]),\n existing: convertToInteger(result[valueName] - data.results01[index][valueName]),\n }\n }\n return res;\n });\n }\n else if (props.reportType === 7) {\n return data.results.map((result, index) => {\n return {\n date: result.period,\n total: convertToInteger(result[valueName]),\n answered: convertToInteger(data.results01[index][valueName]),\n missed: convertToInteger(result[valueName] - data.results01[index][valueName]),\n };\n });\n }\n else if (props.reportType === 8) {\n return data.results.map((result, index) => {\n return {\n date: result.period,\n total: convertToInteger(result[valueName])\n };\n });\n }\n else if (props.reportType === 9) {\n return data.results.map((result, index) => {\n cumData += result[valueName];\n return {\n date: result.period,\n total: convertToInteger(result[valueName]),\n cumData: convertToInteger(cumData),\n change: result.difference + \"%\",\n };\n });\n }\n else if (props.reportType === 10) {\n return data.results.map((result, index) => {\n cumData += result[valueName];\n return {\n date: result.period,\n total: convertToInteger(result[valueName]),\n cumData: convertToInteger(cumData),\n change: result.difference + \"%\",\n };\n });\n }\n else if (props.reportType === 11) {\n return data.results.map((result, index) => {\n cumData += result[valueName];\n return {\n date: result.period,\n total: convertToInteger(result[valueName]),\n cumData: convertToInteger(cumData),\n change: result.difference + \"%\",\n };\n });\n }\n else if (props.reportType === 13) {\n return data.results.map((result, index) => {\n cumData += result[valueName];\n return {\n date: result.period,\n total: convertToInteger(result[valueName]),\n cumData: convertToInteger(cumData),\n change: result.difference + \"%\",\n };\n });\n }\n else if (props.reportType === 14) {\n return data.results.map((result, index) => {\n cumData += result[valueName];\n return {\n date: result.period,\n total: convertToInteger(result[valueName]),\n cumData: convertToInteger(cumData),\n change: result.difference + \"%\",\n };\n });\n }\n else if (props.reportType === 15) {\n return data.results.map((result, index) => {\n cumData += result[valueName];\n return {\n date: result.period,\n total: convertToInteger(result[valueName]),\n cumData: convertToInteger(cumData),\n change: result.difference + \"%\",\n };\n });\n }\n else if (props.reportType === 17) {\n return data.results.map((result, index) => {\n return {\n date: result.period,\n total: convertToInteger(result[valueName]),\n missed_to_vm: convertToInteger(data.results01[index][valueName]),\n abandoned: convertToInteger(result[valueName] - data.results01[index][valueName]),\n }\n });\n }\n else {\n return data.results.map((result) => {\n cumData += result[valueName];\n return {\n date: result.period,\n total: result[valueName],\n cumData: cumData,\n change: result.difference + \"%\",\n };\n });\n }\n\n };\n\n const getExportHeaders = () => {\n\n if (props.reportType === 1) {\n return [\n { label: \"Date\", key: \"date\" },\n { label: \"Current Chats\", key: \"total\" },\n { label: \"Cumulative Chats\", key: \"cumData\" },\n { label: \"After-Hours Chats\", key: \"afterHours\" },\n { label: \"Cumulative AH Chats\", key: \"cumDataAfterHours\" },\n { label: \"AH Chats as % of All Chats\", key: \"percentageAhToTotalChats\" },\n ];\n }\n else if (props.reportType === 3) {\n return [\n { label: \"Date\", key: \"date\" },\n { label: \"Conv\", key: \"conv\" },\n { label: \"% Change\", key: \"change\" },\n ];\n }\n else if (props.reportType === 6) {\n return [\n { label: \"Date\", key: \"date\" },\n { label: \"Total Calls\", key: \"total\" },\n { label: \"New Prospect Calls\", key: \"new\" },\n { label: \"Existing Client Calls\", key: \"existing\" },\n { label: \"After-Hours Calls\", key: \"afterHours\" },\n { label: \"Open-Hours Calls\", key: \"openHours\" },\n ];\n }\n else if (props.reportType === 7) {\n return [\n { label: \"Date\", key: \"date\" },\n { label: \"Total Calls\", key: \"total\" },\n { label: \"Answered Calls\", key: \"answered\" },\n { label: \"Missed Calls\", key: \"missed\" },\n ];\n }\n else if (props.reportType === 9) {\n return [\n { label: \"Date\", key: \"date\" },\n { label: \"Total Appointments\", key: \"total\" },\n { label: \"CumData\", key: \"cumData\" },\n { label: \"Change\", key: \"change\" },\n ]\n }\n else if (props.reportType === 8) {\n return [\n { label: \"Date\", key: \"date\" },\n { label: \"Calls to VM\", key: \"total\" },\n ];\n }\n else if (props.reportType === 10) {\n return [\n { label: \"Date\", key: \"date\" },\n { label: \"New Client Appointments\", key: \"total\" },\n { label: \"CumData\", key: \"cumData\" },\n { label: \"Change\", key: \"change\" },\n ]\n }\n else if (props.reportType === 11) {\n return [\n { label: \"Date\", key: \"date\" },\n { label: \"Returning Client Appointments\", key: \"total\" },\n { label: \"CumData\", key: \"cumData\" },\n { label: \"Change\", key: \"change\" },\n ]\n }\n else if (props.reportType === 13) {\n return [\n { label: \"Date\", key: \"date\" },\n { label: \"Total Calls to Apts\", key: \"total\" },\n { label: \"CumData\", key: \"cumData\" },\n { label: \"Change\", key: \"change\" },\n ]\n }\n else if (props.reportType === 14) {\n return [\n { label: \"Date\", key: \"date\" },\n { label: \"New Client Calls to Apts\", key: \"total\" },\n { label: \"CumData\", key: \"cumData\" },\n { label: \"Change\", key: \"change\" },\n ]\n }\n else if (props.reportType === 15) {\n return [\n { label: \"Date\", key: \"date\" },\n { label: \"Returning Client Calls to Apts\", key: \"total\" },\n { label: \"CumData\", key: \"cumData\" },\n { label: \"Change\", key: \"change\" },\n ]\n }\n else if (props.reportType === 17) {\n return [\n { label: \"Date\", key: \"date\" },\n { label: \"Missed Calls\", key: \"total\" },\n { label: \"Missed Calls to VM\", key: \"missed_to_vm\" },\n { label: \"Abandoned Calls\", key: \"abandoned\" },\n ];\n }\n else {\n return [\n { label: \"Date\", key: \"date\" },\n {\n label:\n props.reportType === 3\n ? \"Conv\"\n : props.reportType === 4\n ? \"Value\"\n : props.chartName,\n key: \"total\",\n },\n {\n label: props.reportType === 2\n ? \"Cumulative Leads\"\n : props.reportType === 4\n ? \"Cumulative Value\"\n : \"\",\n key: \"cumData\",\n },\n { label: \"% Change\", key: \"change\" },\n ];\n }\n };\n\n let cumData = 0;\n let cumDataAfterHours = 0;\n return (\n <>\n
\n
\n
\n
\n
\n

\n setIsLineChart(true)}\n >\n Line\n \n setIsLineChart(false)}\n >\n Bar\n \n

\n
\n
\n

\n setChartRangeType(1)}\n >\n Day\n \n setChartRangeType(2)}\n >\n Week\n \n setChartRangeType(3)}\n >\n Month\n \n setChartRangeType(4)}\n >\n Quarter\n \n setChartRangeType(5)}\n >\n Year\n \n

\n
\n
\n
\n
\n
\n
\n {\n chartVisible && (\n )\n }\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

\n Details\n

\n
\n
\n \n \n \n Export (CSV)\n \n \n
\n
\n
\n {(setTableRows())}\n {setTableRowsData(data)}\n
\n
\n
\n
\n \n );\n};\nexport default ReportChart;","import React, { useEffect, useRef } from \"react\";\r\nimport DateRangePicker from 'react-bootstrap-daterangepicker';\r\nimport moment from 'moment';\r\n\r\nimport 'bootstrap-daterangepicker/daterangepicker.css';\r\n\r\nconst KontakDateRangePicker = (props) => {\r\n\r\n const myRef = useRef();\r\n\r\n useEffect(() => {\r\n props.setPickerRef(myRef);\r\n })\r\n return (<>\r\n \r\n \r\n )\r\n\r\n}\r\n\r\nexport default KontakDateRangePicker;\r\n","import React, { useEffect, useState } from \"react\";\nimport { ajaxCaller,ajaxNonJsonCaller,authHeaders } from \"../ajaxCaller\";\nimport { getAccessToken } from \"../authentification\";\nimport Moment from \"react-moment\";\nimport Pagination from \"react-js-pagination\";\nimport Highlighter from \"react-highlight-words\";\nimport KontakDateRangePicker from \"./components/kontakDateRangePicker\";\nimport FacilitiesPicker from \"./components/facilitiesPicker\";\nimport PerfectScrollbar from \"react-perfect-scrollbar\";\nimport $ from \"jquery\";\nimport Cookies from \"js-cookie\";\n\nconst ChartArchive = (props) => {\n const [keyword, setKeyword] = useState(props.searchKeyword || \"\");\n const [countOfThreads, setCountOfThreads] = useState(0);\n const [reportFilters] = useState(Cookies.get(\"reportFilters\") == null ? null : JSON.parse(Cookies.get(\"reportFilters\")));\n\n const returnIfExistDateRangeFilter = () => {\n var tmpStart = new Date();\n var tmpEnd = new Date();\n\n tmpStart.setDate(tmpEnd.getDate() - 30);\n if (reportFilters) {\n return (reportFilters[\"archive\"].dateRange == null ? {\n\n dateFrom: tmpStart.toLocaleDateString(\"en-US\"),\n dateTo: tmpEnd.toLocaleDateString(\"en-US\"),\n } : reportFilters[\"archive\"].dateRange)\n }\n return {\n dateFrom: tmpStart.toLocaleDateString(\"en-US\"),\n dateTo: tmpEnd.toLocaleDateString(\"en-US\"),\n };\n }\n\n const [dateRange, setDateRange] = useState(props.dateRange == null ? returnIfExistDateRangeFilter() : {\n dateFrom: new Date(props.dateRange.dateFrom).toLocaleDateString(\"en-US\"),\n dateTo: new Date(props.dateRange.dateTo).toLocaleDateString(\"en-US\")\n });\n \n const [groupIds, setGroupIds] = useState(null);\n const facilitiesChanged = (regionFacilities) => {\n var newGroupIds = [];\n regionFacilities.forEach((region) => {\n //if (region.checked) {\n region.groups.forEach((group) => {\n if (group.checked) {\n newGroupIds.push(group.id);\n }\n });\n //}\n });\n\n console.log(newGroupIds);\n\n setGroupIds(newGroupIds);\n };\n const getCountOfThreadsForPeriod = (propsKeyword) => {\n ajaxCaller(\"Thread/CountOfThreads\", {\n method: \"post\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n startAt: dateRange.dateFrom,\n endAt: dateRange.dateTo,\n groupIds: groupIds,\n pageSize: 10,\n searchString: propsKeyword == null ? keyword : propsKeyword,\n }),\n }).then((response) => {\n setCountOfThreads(response);\n });\n };\n\n const [threads, setThreads] = useState(null);\n\n const [currentPage, setCurrentPage] = useState(1);\n const getThreadsForPeriod = (propsKeyword) => {\n setThreads(null);\n ajaxCaller(\"Thread/\" + currentPage, {\n method: \"put\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n startAt: dateRange.dateFrom,\n endAt: dateRange.dateTo,\n groupIds: groupIds,\n pageSize: 10,\n sortRuleNumber: 1,\n searchString: propsKeyword == null ? keyword : propsKeyword,\n }),\n }).then((response) => {\n setThreads(response);\n });\n };\n\n const getCountOfThreadsCallback = (propsKeyword) => {\n if (groupIds != null) {\n getCountOfThreadsForPeriod(propsKeyword);\n }\n };\n useEffect(getCountOfThreadsCallback, [dateRange, groupIds]);\n\n const getThreadsCallback = (propsKeyword) => {\n if (groupIds != null) {\n getThreadsForPeriod(propsKeyword);\n }\n };\n useEffect(getThreadsCallback, [currentPage, dateRange, groupIds]);\n\n const propsKeywordChangedCallback = () => {\n getCountOfThreadsCallback(\n props.searchKeyword == null ? \"\" : props.searchKeyword\n );\n getThreadsCallback(props.searchKeyword == null ? \"\" : props.searchKeyword);\n setKeyword(props.searchKeyword == null ? \"\" : props.searchKeyword);\n }\n useEffect(propsKeywordChangedCallback, [props.searchKeyword]);\n\n const [threadConversation, setThreadConversation] = useState(null);\n const [conversationThreadId, setConversationThreadId] = useState(null);\n\n const getThreadConversation = () => {\n ajaxCaller(\"Thread/\" + conversationThreadId, {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n setThreadConversation(response);\n });\n };\n\n const getConversationCallback = () => {\n if (conversationThreadId != null) {\n getThreadConversation();\n }\n };\n useEffect(getConversationCallback, [conversationThreadId]);\n\n const addSearchKeyword = () => {\n ajaxCaller(\"Search\", {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"post\",\n body: JSON.stringify({\n keyword: keyword,\n }),\n }).then((response) => {\n if (!response.isError) {\n props.updateArchive();\n } else {\n }\n });\n };\n\n const extractMessage = (thread) => {\n var indexOf = thread.messages.indexOf(keyword);\n var message = thread.messages.substring(\n indexOf - 10 < 1 ? 0 : indexOf - 20,\n indexOf + 70 > thread.messages.length\n ? thread.messages.length\n : indexOf + 70\n );\n return \"... \" + message + \" ...\";\n };\n\n const [, setDatePickerRef] = useState(null);\n const setPickerRef = (ref) => {\n setDatePickerRef(ref);\n };\n\n const downloadPdf = () => {\n ajaxNonJsonCaller(\"Pdf/ExportConversation/\" + conversationThreadId, {\n method: \"get\",\n headers: authHeaders,\n }).then((response) => {\n response.blob().then((blob) => {\n const file = new Blob([blob], { type: \"application/pdf\" });\n const fileURL = URL.createObjectURL(file);\n window.open(fileURL);\n });\n });\n };\n\n return (\n <>\n
\n
\n
\n setKeyword(event.target.value)}\n onKeyPress={(event) => {\n var key = event.which;\n if (key === 13 || key === 14) {\n getCountOfThreadsCallback();\n getThreadsCallback();\n addSearchKeyword();\n }\n }}\n />\n
\n
\n \n
\n {\n getCountOfThreadsCallback();\n getThreadsCallback();\n addSearchKeyword();\n }}\n >\n Search\n \n
\n
\n
\n {\n setDateRange({\n dateFrom: picker.startDate\n .toDate()\n .toLocaleDateString(\"en-US\"),\n dateTo: picker.endDate.toDate().toLocaleDateString(\"en-US\"),\n });\n }}\n />\n {/* */}\n
\n
\n
\n
\n
\n
\n
\n
\n

\n Chats  \n {countOfThreads} Results\n

\n
\n
\n
\n
\n
\n
\n
\n

\n Date & Time\n

\n
\n
\n
\n
\n

\n Name\n

\n
\n
\n
\n
\n

\n Messages Exchanged\n

\n
\n
\n
\n
\n

\n Conversation\n

\n
\n
\n
\n
\n\n {threads &&\n threads.map((thread) => (\n
\n
\n
\n
\n

\n Date & Time:\n \n

\n
\n
\n
\n
\n

\n \n Name:\n \n {thread.agentName}\n

\n
\n
\n
\n
\n

\n \n Messages Exchanged:\n \n {thread.messageCount}\n

\n
\n
\n
\n \n {thread.messages && (\n <>\n

setConversationThreadId(thread.id)}\n data-target=\"#chatConv\">\n \n

\n \n )}\n {\n (!keyword || keyword == null) && (

\n setConversationThreadId(thread.id)}\n data-target=\"#chatConv\"\n >\n View conversation\n \n

)\n }\n
\n
\n
\n
\n ))}\n
\n
\n
\n setCurrentPage(pageNumber)}\n />\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n $('#chatConv').modal('toggle')}\n >\n {threadConversation && (
\n
\n
\n {threadConversation.liveChatThreadId}{threadConversation.messages.find(x => x.authorName !== \"Visitor\") == null ? '' : ' - ' + threadConversation.messages.find(x => x.authorName !== \"Visitor\").authorName}\n
\n

\n Facility: {threadConversation.facilityName}\n

\n \n \n

\n
\n
)}\n
\n
\n
\n {threadConversation && (\n {threadConversation &&\n threadConversation.messages.map((message) => {\n return message.userType === \"agent\" ? (\n
\n
\n
\n

\n {message.authorName}\n

\n

\n {keyword === \"\" ? (\n message.text\n ) : (\n \n )}\n

\n
\n
\n
\n ) : (\n
\n
\n
\n

\n {message.authorName}\n

\n

\n {keyword === \"\" ? (\n message.text\n ) : (\n \n )}\n

\n
\n
\n
\n );\n })}\n
\n )}\n
\n
\n
\n
\n
\n downloadPdf()}>\n \n Export (PDF)\n \n
\n
\n {\n setThreadConversation(null);\n setConversationThreadId(null);\n }}\n aria-label=\"Close\"\n className=\"btn btn-blue btn-width-80 btn-height-32 border-0 font-size-13\"\n >\n CLOSE\n \n
\n
\n
\n
\n
\n
\n \n \n );\n};\n\nexport default ChartArchive;\n","import React from \"react\";\nimport { ajaxNonJsonCaller, authHeaders } from \"../../ajaxCaller\";\nimport { isKontakAdmin } from \"../../authentification\";\n\nconst DashboardReports = (props) => {\n const dowloadChatSummary = () => {\n ajaxNonJsonCaller(\"Excel/ExportSummary\", {\n method: \"post\",\n headers: authHeaders,\n body: JSON.stringify({\n dateFrom: props.startDate,\n dateTo: props.endDate,\n groupIds: props.groupIds,\n }),\n }).then((response) => {\n if (response.ok) {\n response.blob().then((blob) => {\n let url = window.URL.createObjectURL(blob);\n let a = document.createElement(\"a\");\n a.href = url;\n a.download = \"SummaryReport.xlsx\";\n a.click();\n });\n }\n });\n };\n\n const downloadThreadReport = () => {\n ajaxNonJsonCaller(\"Excel/ExportThreadReport\", {\n method: \"post\",\n headers: authHeaders,\n body: JSON.stringify({\n dateFrom: props.startDate,\n dateTo: props.endDate\n }),\n }).then((response) => {\n if (response.ok) {\n response.blob().then((blob) => {\n let url = window.URL.createObjectURL(blob);\n let a = document.createElement(\"a\");\n a.href = url;\n a.download = \"Thread Report.xlsx\";\n a.click();\n });\n }\n });\n };\n\n return (\n <>\n
dowloadChatSummary()}>\n
\n
\n \n Chat Summary Report\n \n
\n
\n
\n {isKontakAdmin() && (
downloadThreadReport()}>\n
\n
\n \n Thread Report\n \n
\n
\n
)}\n \n );\n};\n\nexport default DashboardReports;\n","import globalHook from 'use-global-hook';\r\n\r\nconst initialState = {\r\n counter: 0,\r\n};\r\n\r\nconst actions = {\r\n addToCounter: (store, amount) => {\r\n const newCounterValue = store.state.counter + amount;\r\n store.setState({ counter: newCounterValue });\r\n },\r\n};\r\n\r\nexport const useGlobal = globalHook(initialState, actions);\r\n","import React, { useEffect, useState } from \"react\";\nimport Highcharts from \"highcharts\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { ajaxCaller, ajaxNonJsonCaller, authHeaders } from \"../../ajaxCaller\";\nimport { getAccessToken } from \"../../authentification\";\n\nconst CICReport = (props) => {\n const [chart, setChart] = useState(null);\n const [selectedColumnNumber, setSelectedColumnNumber] = useState(null);\n const [columnsReferences] = useState([]);\n const [chartOptions, setChartOptions] = useState(null);\n const [data, setData] = useState(null);\n\n\n const refreshChart = () => {\n const chartOptionsNew = {\n tooltip: {\n backgroundColor: \"rgba(64,66,85,0.95)\",\n borderWidth: 0,\n shadow: false,\n useHTML: true,\n style: {\n padding: '15px',\n },\n borderRadius: 0,\n headerFormat: '',\n pointFormatter: function () {\n \n setSelectedColumnNumber(this.x);\n \n let value = convertToDecimalWithComma(this.y);\n return `${this.series.name}: ${value}
`;\n }\n },\n chart: {\n height: \"320px\",\n events: {\n load() {\n this.showLoading();\n setTimeout(this.hideLoading.bind(this), 2000);\n },\n },\n },\n legend: {\n enabled: false,\n },\n credits: {\n enabled: false,\n },\n title: {\n text: \"\",\n },\n loading: {\n hideDuration: 1000,\n showDuration: 1000,\n },\n xAxis: {\n tickInterval: 1,\n labels: {\n enabled: true,\n formatter: (obj) => {\n if (\n chartOptionsNew == null ||\n chartOptionsNew == null ||\n chartOptionsNew.series == null ||\n chartOptionsNew.series[0] == null ||\n chartOptionsNew.series[0].data[obj.value] == null ||\n chartOptionsNew.series[0].data[obj.value][0] == null\n ) {\n return \"\";\n } else {\n return chartOptionsNew.series[0].data[obj.value][0];\n }\n },\n },\n },\n yAxis: {\n title: \"\",\n labels: {\n enabled: true,\n formatter: (obj) => {\n if (props.reportType === 3) {\n return obj.value + \"%\"\n }\n else if (props.reportType === 4) {\n return \"$\" + convertToDecimalWithComma(obj.value);\n }\n else {\n return convertToDecimalWithComma(obj.value);\n }\n }\n }\n },\n plotOptions: {\n column: {\n grouping: false,\n },\n },\n series: [\n {\n name: \"Number Of Inquiries\",\n lineColor: \"#3495E6\",\n color: \"#3495E6\",\n type: \"column\",\n fillColor: \"rgba(119, 181, 223, 0.1)\",\n lineWidth: 2,\n borderWidth: 1,\n },\n ],\n };\n\n chart && chart.showLoading();\n\n ajaxCaller(\"QuestionCategory/GetCICReportData\", {\n method: \"post\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n dateFrom: props.dateRange.dateFrom,\n dateTo: props.dateRange.dateTo,\n groupIds: props.groupIds,\n }),\n }).then((response) => {\n if (response != null) {\n const formattedResponse = response.map((a) => [\n a.category,\n a.numberOfInquiries,\n ]);\n chartOptionsNew.series[0].data = formattedResponse;\n\n setData(response);\n setChartOptions(chartOptionsNew);\n chart && chart.hideLoading();\n }\n });\n };\n\n const hoverColumn = (columnIndex) => {\n setSelectedColumnNumber(columnIndex);\n chart.tooltip.refresh(chart.series[0].data[columnIndex]);\n };\n\n const afterChartCreated = (chart) => {\n setChart(chart);\n };\n const hookCallback = () => {\n refreshChart();\n };\n useEffect(hookCallback, [\n props.dateRange,\n props.groupIds\n ]);\n \n const convertToDecimalWithComma = (value) => {\n return Math.round(value).toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,');\n }\n\n const downloadCategoryAnalytics = () => {\n ajaxNonJsonCaller(\"Excel/ExportCategoryAnalytics\", {\n method: \"post\",\n headers: authHeaders,\n body: JSON.stringify({\n dateFrom: props.dateRange.dateFrom,\n dateTo: props.dateRange.dateTo,\n groupIds: props.groupIds\n }),\n }).then((response) => {\n if (response.ok) {\n response.blob().then((blob) => {\n let url = window.URL.createObjectURL(blob);\n let a = document.createElement(\"a\");\n a.href = url;\n a.download = \"CIC Report.xlsx\";\n a.click();\n });\n }\n else {\n }\n });\n };\n\n return (\n <>\n
\n
\n
\n
\n
\n

\n

\n
\n
\n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n

\n Details\n

\n
\n
\n downloadCategoryAnalytics()}\n className=\"link-download font-size-13 mr-2 pr-1\"\n >\n \n Export (xlsx)\n \n
\n
\n
\n
\n
\n
\n

\n
\n
\n

\n Number Of Inquiries\n

\n
\n
\n

\n Percentage Of Inquiries\n

\n
\n
\n
\n
\n
\n
\n {data &&\n data.map((result, index) => {\n\n return (\n
{\n columnsReferences[index] = el;\n }}\n onMouseEnter={() => hoverColumn(index)}\n >\n \n

\n {result.category}\n

\n
\n
\n

\n {result.numberOfInquiries}\n

\n
\n
\n

\n {result.percentageOfInquiries} %\n

\n
\n
\n );\n })}\n
\n
\n
\n
\n
\n
\n \n \n );\n}\n\nexport default CICReport;","import React, { useEffect, useState } from \"react\";\nimport ReportChart from \"./components/reportChart.component\";\nimport { ajaxCaller, authHeaders } from \"../ajaxCaller\";\nimport { getAccessToken, isKontakAdmin } from \"../authentification\";\nimport ChartArchive from \"./chatArchive\";\nimport $ from \"jquery\";\nimport KontakDateRangePicker from \"./components/kontakDateRangePicker\";\nimport { useHistory } from \"react-router-dom\";\nimport FacilitiesPicker from \"./components/facilitiesPicker\";\nimport { PrivilegeChecker, Privileges } from \"../privilegeChecker\";\nimport DashboardReports from \"./components/dashboardReports\";\nimport { Steps } from 'intro.js-react';\nimport { useGlobal } from \"./components/globalIntroState\";\nimport CICReport from \"./components/CICReport\";\nimport _ from 'lodash'\n\nconst setDataToSessionStorage = (key, data) => {\n sessionStorage.setItem(key, JSON.stringify(data));\n};\n\n// Get item from Session Storage\nconst getDataFromSessionStorage = (key) => {\n const data = sessionStorage.getItem(key);\n return data ? JSON.parse(data) : null;\n};\n\nconst removeFromSessionStorage = (key) => {\n sessionStorage.removeItem(key);\n};\n\nlet chartTypeLocal = 6;\n\nconst Reports = (props) => {\n\n const [reportType, setReportType] = useState(null);\n const [reportFilters, setReportFilters] = useState(null);\n const [widgetTypes, setWidgetTypes] = useState(null);\n const getWidgetTypes = () => {\n ajaxCaller(\"Widget/GetWidgetTypes\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response, error) => {\n if (!response.isError) {\n setWidgetTypes(response);\n } else {\n console.log(error)\n }\n });\n };\n\n // First useEffect for fetching widget types\n useEffect(() => {\n getWidgetTypes();\n }, []);\n\n const initReportFilters = () => {\n let reportFilterz = {};\n if (props.location.widgetTypes) {\n removeFromSessionStorage(\"reportFilters\");\n }\n\n let localWidgetTypes = widgetTypes || props.location.widgetTypes\n\n if (getDataFromSessionStorage(\"reportFilters\") != null) {\n reportFilterz = getDataFromSessionStorage(\"reportFilters\")\n setReportFilters(reportFilterz);\n return getDataFromSessionStorage(\"reportFilters\");\n } else\n if (localWidgetTypes) {\n localWidgetTypes.forEach(widgetType => {\n\n let existingWidget = null\n if (props.location.allWidgets) {\n existingWidget = props.location.allWidgets.find(\n (x) => x.widgetTypeId === widgetType.id);\n }\n let anyWidget = localWidgetTypes.find(\n (x) => x.id === widgetType.id);\n\n if (existingWidget) {\n reportFilterz[widgetType.id] = {\n \"withAfterHoursDiff\": props.location.withAfterHoursDiff == null ? returnIfExistWithAfterHoursDiffFilter() : props.location.withAfterHoursDiff && widgetType.afterHours,\n \"showPEPeriod\": props.location.showPEPeriod == null ? returnIfExistShowPEPeriodFilter() : props.location.showPEPeriod,\n \"showAdSeries\": widgetType.additionalSeries && props.location.showAdSeries == null ? returnIfExistShowAdSeriesFilter() : props.location.showAdSeries,\n \"showAfterHours\": widgetType.afterHours,\n \"withAfterHours\": props.location.withAfterHours == null ? returnIfExistAfterHoursFilter() : props.location.withAfterHours && widgetType.afterHours,\n \"groupIds\": props.location.groupIds == null ? returnIfExistGroupIdsFilter() : props.location.groupIds,\n \"dateRange\": props.location.dateRange == null ? returnIfExistDateRangeFilter() : {\n dateFrom: new Date(props.location.dateRange.dateFrom).toLocaleDateString(\"en-US\"),\n dateTo: new Date(props.location.dateRange.dateTo).toLocaleDateString(\"en-US\")\n },\n \"withTrendLine\": props.location.withTrendLine == null ? returnIfExistTrendLineFilter() : props.location.withTrendLine,\n \"additionalSeries\": widgetType.additionalSeries\n }\n } else {\n reportFilterz[widgetType.id] = {\n \"withAfterHoursDiff\": props.location.withAfterHoursDiff == null ? returnIfExistWithAfterHoursDiffFilter() : props.location.withAfterHoursDiff && widgetType.afterHours,\n \"showPEPeriod\": props.location.showPEPeriod == null ? returnIfExistShowPEPeriodFilter() : props.location.showPEPeriod,\n \"showAdSeries\": anyWidget.additionalSeries && returnIfExistShowAdSeriesFilter(),\n \"showAfterHours\": widgetType.afterHours,\n \"withAfterHours\": props.location.withAfterHours == null ? returnIfExistAfterHoursFilter() : props.location.withAfterHours && widgetType.afterHours,\n \"groupIds\": props.location.groupIds == null ? returnIfExistGroupIdsFilter() : props.location.groupIds,\n \"dateRange\": props.location.dateRange == null ? returnIfExistDateRangeFilter() : {\n dateFrom: new Date(props.location.dateRange.dateFrom).toLocaleDateString(\"en-US\"),\n dateTo: new Date(props.location.dateRange.dateTo).toLocaleDateString(\"en-US\")\n },\n \"withTrendLine\": props.location.withTrendLine == null ? returnIfExistTrendLineFilter() : props.location.withTrendLine,\n \"additionalSeries\": anyWidget.additionalSeries\n }\n }\n });\n setDataToSessionStorage(\"reportFilters\", reportFilterz)\n setReportFilters(reportFilterz);\n }\n return reportFilterz;\n };\n\n // First useEffect for fetching widget types\n useEffect(() => {\n getWidgetTypes();\n }, []);\n\n // useEffect to initialize report filters after widgetTypes have been updated\n useEffect(() => {\n if (widgetTypes) {\n initReportFilters();\n }\n /* eslint-disable-next-line */\n }, [widgetTypes]);\n\n //const [chartType, setChartType] = useState(chartTypeLocal)\n const [chartType, setChartType] = useState(chartTypeLocal)\n useEffect(() => {\n // This useEffect will trigger whenever chartType changes\n if (chartType !== chartTypeLocal) {\n chartTypeLocal = chartType;\n }\n }, [chartType]);\n\n useEffect(() => {\n setChartType((props.location.chartType == null ? (reportType ? reportType : 6) : props.location.chartType));\n /* eslint-disable-next-line */\n }, []);\n\n const changeCurrentReport = (reportType, keyword) => {\n // reportFilters[chartType].withAfterHours = withAfterHours;\n // reportFilters[chartType].withTrendLine = withTrendLine;\n // reportFilters[chartType].dateRange = dateRange;\n // reportFilters[chartType].groupIds = groupIds;\n // setReportFilters(reportFilters);\n\n\n // setGroupIds(reportFilters[reportType].groupIds);\n // setWithTrendLine(reportFilters[reportType].withTrendLine);\n\n Object(reportFilters[reportType]).showAdSeries = false;\n setDataToSessionStorage(\"reportFilters\", reportFilters);\n setShowAdSeries(false);\n setChartType(reportType);\n setReportType(reportType);\n if (reportFilters && reportFilters[reportType]) {\n datePickerRef.current.setStartDate(_.get(reportFilters[reportType], 'dateRange.dateFrom'))\n datePickerRef.current.setEndDate(_.get(reportFilters[reportType], 'dateRange.dateTo'))\n // setWithAfterHours(reportFilters[reportType].withAfterHours);\n setDateRange(reportFilters[reportType].dateRange);\n if (reportFilters[reportType].showAfterHours !== undefined)\n setShowAfterHours(reportFilters[reportType].showAfterHours);\n }\n // setSearchKeyword(keyword);\n }\n\n\n\n\n\n const returnIfExistAfterHoursFilter = () => {\n if (reportFilters && chartType !== \"archive\" && chartType !== 5) {\n return (Object(reportFilters[chartType]).withAfterHours == null ? false : Object(reportFilters[chartType]).withAfterHours)\n }\n return false;\n }\n\n const returnIfExistAllowAfterHoursFilter = () => {\n if (reportFilters && chartType !== \"archive\" && chartType !== 5) {\n return (Object(reportFilters[chartType]).showAfterHours == null ? false : Object(reportFilters[chartType]).showAfterHours)\n }\n return false;\n }\n\n const returnIfExistWithAfterHoursDiffFilter = () => {\n if (reportFilters && chartType !== \"archive\" && chartType !== 5) {\n return (Object(reportFilters[chartType]).withAfterHoursDiff == null ? false : Object(reportFilters[chartType]).withAfterHoursDiff)\n }\n return false;\n }\n\n const returnIfExistShowPEPeriodFilter = () => {\n if (reportFilters && chartType !== \"archive\" && chartType !== 5) {\n return (Object(reportFilters[chartType]).showPEPeriod == null ? false : Object(reportFilters[chartType]).showPEPeriod)\n }\n return false;\n }\n\n const returnIfExistShowAdSeriesFilter = () => {\n if (reportFilters && chartType !== \"archive\" && chartType !== 5) {\n return (Object(reportFilters[chartType]).showAdSeries == null ? false : Object(reportFilters[chartType]).showAdSeries)\n }\n return false;\n }\n\n const returnIfExistTrendLineFilter = () => {\n if (reportFilters && chartType !== \"archive\" && chartType !== 5) {\n return (Object(reportFilters[chartType]).withAfterHours == null ? false : Object(reportFilters[chartType]).withAfterHours)\n }\n return false;\n }\n\n const returnIfExistDateRangeFilter = () => {\n var tmpStart = new Date();\n var tmpEnd = new Date();\n\n tmpStart.setDate(tmpEnd.getDate() - 60);\n if (reportFilters) {\n return (Object(reportFilters[chartType]).dateRange == null ? {\n\n dateFrom: tmpStart.toLocaleDateString(\"en-US\"),\n dateTo: tmpEnd.toLocaleDateString(\"en-US\"),\n } : Object(reportFilters[chartType]).dateRange)\n }\n return {\n dateFrom: tmpStart.toLocaleDateString(\"en-US\"),\n dateTo: tmpEnd.toLocaleDateString(\"en-US\"),\n };\n }\n\n const returnIfExistGroupIdsFilter = () => {\n if (reportFilters) {\n return (Object(reportFilters[chartType]).groupIds == null ? null : Object(reportFilters[chartType]).groupIds)\n }\n return null;\n }\n\n\n\n const steps = [\n {\n element: '#card-body',\n intro: 'Reports will display its own reports for features that are part of your subscription. Each additional feature enabled will display own reports.',\n position: 'right',\n tooltipClass: 'intro-card-body', // can be used for changing styles\n highlightClass: 'intro-card-body-hightlight', // can be used for changing styles when it is highlighted\n },\n PrivilegeChecker.hasPrivilege(\n Privileges.ExportData\n ) === true ?\n {\n element: '#card-body',\n intro: 'These reports are currently available as downloads.',\n position: 'right',\n tooltipClass: 'intro-export', // can be used for changing styles\n highlightClass: 'intro-export-hightlight', // can be used for changing styles when it is highlighted\n } : null,\n {\n element: '#reports-calendar',\n intro: ' Set a preferred date range and time view. Your default setting is last 30 days in the daily view. ',\n position: 'left',\n // tooltipClass: 'intro-searches', // can be used for changing styles\n highlightClass: 'intro-reports-calendar', // can be used for changing styles when it is highlighted\n },\n {\n element: '#headingOne-2',\n intro: 'See what your clients talk about. Review all their chats, filter by location, date range or search by keyword.',\n position: 'right',\n tooltipClass: 'intro-archive', // can be used for changing styles\n highlightClass: 'intro-archive-hightlight', // can be used for changing styles when it is highlighted\n },\n {\n element: '#headingOne-3',\n intro: 'Your last searches within the chat archive. This feature can be a big time-saver if you are frequently reviewing chats using the same parameters.',\n position: 'right',\n tooltipClass: 'intro-searches', // can be used for changing styles\n highlightClass: 'intro-searches-hightlight', // can be used for changing styles when it is highlighted\n }\n ].filter(x => x !== null);\n\n const [globalState] = useGlobal();\n const [userIntroEnabled, setUserIntroEnabled] = useState(false); // note enable steps ONLY if they are not finished\\\n const [currentIntroStep, setCurrentIntroStep] = useState(null);\n const [introId, setIntroId] = useState(null);\n\n const changeCurrentStep = (step) => {\n ajaxCaller(\"UserIntro/UpdateStep/\", {\n method: \"put\",\n headers: authHeaders,\n body: JSON.stringify({\n id: introId,\n currentStep: step\n }),\n }).then((response) => {\n if (response.isError) {\n } else {\n }\n });\n }\n\n const finishUserIntro = () => {\n ajaxCaller(\"UserIntro/FinishIntro/\" + introId, {\n method: \"put\",\n headers: authHeaders,\n }).then((response) => {\n if (response.isError) {\n } else {\n setUserIntroEnabled(false);\n }\n });\n }\n\n const getUserIntro = () => {\n ajaxCaller(\"UserIntro/UserIntro/1\", {\n method: \"get\",\n headers: authHeaders,\n }).then((response) => {\n if (response.isError) {\n } else {\n setUserIntroEnabled(!response.finished);\n setCurrentIntroStep(response.currentStep);\n setIntroId(response.id);\n }\n });\n }\n\n useEffect(() => {\n if (!isKontakAdmin()) {\n getUserIntro();\n }\n }, [globalState.counter])\n\n const onExitStep = () => {\n finishUserIntro();\n };\n\n const onChangeStep = (step) => {\n if (step != null) {\n changeCurrentStep(step)\n }\n };\n\n\n const [withAfterHoursDiff, setWithAfterHoursDiff] = useState(props.location.withAfterHoursDiff == null ? returnIfExistWithAfterHoursDiffFilter() : props.location.withAfterHoursDiff);\n const [showPEPeriod, setshowPEPeriod] = useState(props.location.showPEPeriod == null ? returnIfExistShowPEPeriodFilter() : props.location.showPEPeriod);\n const [showAdSeries, setShowAdSeries] = useState(props.location.showAdSeries == null ? returnIfExistShowAdSeriesFilter() : props.location.showAdSeries);\n const [withAfterHours, setWithAfterHours] = useState(props.location.withAfterHours == null ? returnIfExistAfterHoursFilter() : props.location.withAfterHours);\n const [withTrendLine, setWithTrendLine] = useState(props.location.withTrendLine == null ? returnIfExistTrendLineFilter() : props.location.withTrendLine);\n const [showAfterHours, setShowAfterHours] = useState(props.location.showAfterHours == null ? returnIfExistAllowAfterHoursFilter() : props.location.showAfterHours);\n const [dateRange, setDateRange] = useState(props.location.dateRange == null ? returnIfExistDateRangeFilter() : {\n dateFrom: new Date(props.location.dateRange.dateFrom).toLocaleDateString(\"en-US\"),\n dateTo: new Date(props.location.dateRange.dateTo).toLocaleDateString(\"en-US\")\n });\n const [chartRangeType] = useState(props.location.chartRangeType == null ? 2 : props.location.chartRangeType);\n const [searchKeyword] = useState(props.match.params.searchKeyword);\n const [navBarIsOpened, setNavBarIsOpened] = useState(true);\n const [datePickerRef, setDatePickerRef] = useState(null);\n const [isShowIntros, setIsShowIntros] = useState(false);\n\n useEffect(() => {\n if (navBarIsOpened) {\n document.body.className = \"opened-sub-nav\";\n setIsShowIntros(true);\n } else {\n document.body.className = \"app\";\n }\n }, [navBarIsOpened]);\n\n const [locationKeys, setLocationKeys] = useState([]);\n const history = useHistory();\n const historyCallback = () => {\n history.listen((location) => {\n if (history.action === 'PUSH') {\n if (location.key) setLocationKeys([location.key]);\n }\n if (history.action === 'POP') {\n if (locationKeys[1] === location.key) {\n setLocationKeys(([_, ...keys]) => keys);\n\n document.getElementById(\"nav-reports-page\").className = \"left-side-nav-link \";\n document.getElementById(\"nav-dashboard-page\").className = \"left-side-nav-link active\";\n document.body.className = \"app\";\n } else {\n setLocationKeys((keys) => [location.key, ...keys]);\n }\n }\n });\n }\n\n useEffect(historyCallback, [locationKeys]);\n const [groupIds, setGroupIds] = useState(props.location.groupIds == null ? returnIfExistGroupIdsFilter() : props.location.groupIds);\n const facilitiesChanged = (regionFacilities) => {\n var newGroupIds = [];\n regionFacilities.forEach(region => {\n region.groups.forEach(group => {\n\n if (group.checked) {\n newGroupIds.push(group.id);\n }\n })\n });\n\n if (reportFilters) {\n Object(reportFilters[chartType]).groupIds = newGroupIds;\n setDataToSessionStorage(\"reportFilters\", reportFilters);\n }\n setGroupIds(newGroupIds);\n }\n\n useEffect(() => {\n $('[data-toggle=\"tooltip\"]').tooltip();\n $('[data-toggle-second=\"tooltip\"]').tooltip();\n });\n\n const [lastSearches, setLastSearches] = useState(null);\n const getSearchArchive = () => {\n ajaxCaller(\"Search\", {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"get\"\n }).then((response) => {\n if (!response.isError) {\n setLastSearches(response);\n } else {\n }\n });\n }\n\n useEffect(() => {\n getSearchArchive();\n }, []);\n\n const setPickerRef = (ref) => {\n setDatePickerRef(ref);\n };\n\n return (\n <>\n {isShowIntros && userIntroEnabled && (currentIntroStep != null) && ()}\n
\n setNavBarIsOpened(!navBarIsOpened)}\n >\n \"\"\n
\n
Reports
\n
\n
\n
\n
\n \n Calls\n \n
\n\n \n
\n
\n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewCalls\n ) && ( changeCurrentReport(6)}\n className={\n chartType === 6\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link animsition-link\"\n }\n >\n Total Calls\n )}\n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewAppointments\n ) && ( changeCurrentReport(17)}\n className={\n chartType === 17\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link animsition-link\"\n }\n >\n Missed Calls\n )}\n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewAppointments\n ) && ( changeCurrentReport(7)}\n className={\n chartType === 7\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link animsition-link\"\n }\n >\n Answered Calls\n )}\n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewAppointments\n ) && ( changeCurrentReport(8)}\n className={\n chartType === 8\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link animsition-link\"\n }\n >\n Voicemail Calls\n )}\n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewAppointments\n ) && ( changeCurrentReport(16)}\n className={\n chartType === 16\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link animsition-link\"\n }\n >\n Average Duration of Calls\n )}\n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewAppointments\n ) && ( changeCurrentReport(13)}\n className={\n chartType === 13\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link animsition-link\"\n }\n >\n Calls Resulting in Appts.\n )}\n
\n
\n
\n
\n
\n
\n
\n
\n \n Appointments\n \n
\n \n
\n
\n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewAppointments\n ) && ( changeCurrentReport(9)}\n className={\n chartType === 9\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link animsition-link\"\n }\n >\n Total Appointments\n )}\n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewAppointments\n ) && ( changeCurrentReport(10)}\n className={\n chartType === 10\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link animsition-link\"\n }\n >\n New Client Appts.\n )}\n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewAppointments\n ) && ( changeCurrentReport(11)}\n className={\n chartType === 11\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link animsition-link\"\n }\n >\n Returning Client Appts.\n )}\n
\n
\n
\n
\n \n
\n
\n
\n \n Chats & Appt. Requests\n \n
\n\n \n
\n
\n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewChatsChartObject\n ) && ( changeCurrentReport(1)}\n className={\n chartType === 1\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link animsition-link\"\n }\n >\n Chats\n )}\n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewLeadsChartObject\n ) && ( changeCurrentReport(2)}\n className={\n chartType === 2\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link\"\n }\n >\n New Appointment Requests\n )}\n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewConversionToLeadsChartObject\n ) && ( changeCurrentReport(3)}\n className={\n chartType === 3\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link\"\n }\n style={{ height: \"auto\" }}\n >\n New Appt./Total Chats\n )}\n changeCurrentReport(5)}\n className={\n chartType === 5\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link\"\n }\n style={{ height: \"auto\" }}\n >\n CIC Report\n \n
\n
\n
\n
\n \n
\n
\n
\n \n Client Value\n \n
\n\n \n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewClientValueChartObject\n ) && (
\n
\n changeCurrentReport(4)}\n className={\n chartType === 4\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link\"\n }\n >\n New Client Lifetime Value\n \n
\n
)}\n
\n
\n \n {PrivilegeChecker.hasPrivilege(Privileges.ExportData) && (\n \n )}\n
\n
\n
\n \n Chat Archive\n \n
\n\n \n
\n
\n {\n changeCurrentReport(\"archive\");\n }}\n className={\n chartType === \"archive\" && searchKeyword == null\n ? \"sub-menu-link active animsition-link\"\n : \"sub-menu-link animsition-link\"\n }\n >\n All chats\n \n
\n
\n
\n
\n
\n \n Last searches\n \n
\n\n \n
\n
\n {lastSearches && lastSearches.map(item =>\n ( { changeCurrentReport(\"archive\", item.keyword) }}\n className={searchKeyword === item.keyword ? \"sub-menu-link active animsition-link\" : \"sub-menu-link animsition-link\"}\n >\n # {item.keyword}\n \n ))}\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n \n
\n
\n
\n
\n {chartType !== \"archive\" && (\n
\n
\n
\n {chartType === 1\n ? \"Total Chats\"\n : chartType === 2\n ? \"New Appointment Requests\"\n : chartType === 3\n ? \"New Appt./Total Chats\"\n : chartType === 4\n ? \"Client Value\"\n : \"\"}\n
\n
\n
\n
\n
\n \n {<>\n {PrivilegeChecker.hasPrivilege(Privileges.ViewAfterHoursTrendLine) && (reportFilters && Object(reportFilters[chartType]).showAfterHours) && // Here to determine whether to show AfterHours\n (<>
\n
\n {\n setWithAfterHours(!withAfterHours)\n if (reportFilters) {\n reportFilters[chartType].withAfterHours = !withAfterHours;\n setReportFilters(reportFilters);\n setDataToSessionStorage(\"reportFilters\", reportFilters);\n }\n }\n }\n >\n \n
\n
)}\n {showAfterHours && withAfterHours && (\n <>\n
\n
\n {\n\n setWithAfterHoursDiff(!withAfterHoursDiff)\n if (reportFilters) {\n Object(reportFilters[chartType]).withAfterHoursDiff = !withAfterHoursDiff;\n setReportFilters(reportFilters);\n setDataToSessionStorage(\"reportFilters\", reportFilters);\n }\n }\n }\n />\n \n Show Diff\n \n
\n
\n \n )}\n {(chartType !== 5 &&
\n
\n {\n setshowPEPeriod(!showPEPeriod);\n\n if (reportFilters && reportFilters.length) {\n reportFilters[chartType].showPEPeriod = !showPEPeriod;\n setReportFilters(reportFilters);\n setDataToSessionStorage(\"reportFilters\", reportFilters);\n }\n ///Reset the \"Show Diff\" checkbox when \"Show Partial End Period\" is changed.\n setWithAfterHoursDiff(false);\n }}\n />\n \n Include Partial End Period\n \n
\n
)}\n {((reportFilters && Object(reportFilters[chartType]).additionalSeries && (Object(reportFilters[chartType]).additionalSeries || []).length > 0) && chartType !== 5 &&
\n
\n {\n if (reportFilters) {\n setShowAdSeries(!reportFilters[chartType].showAdSeries);\n reportFilters[chartType].showAdSeries = !reportFilters[chartType].showAdSeries;\n setReportFilters(reportFilters);\n setDataToSessionStorage(\"reportFilters\", reportFilters);\n }\n }}\n />\n \n Show Series\n \n
\n
)}\n
\n {chartType !== 5 && (
\n {\n \n setWithTrendLine(!withTrendLine) \n if (reportFilters) { \n reportFilters[chartType].withTrendLine = !reportFilters[chartType].withTrendLine;\n setReportFilters(reportFilters);\n setDataToSessionStorage(\"reportFilters\", reportFilters);\n }\n }\n }\n >\n \n
)}\n
\n }\n
\n
\n
\n
\n
\n {\n\n setDateRange({\n dateFrom: picker.startDate\n .toDate()\n .toLocaleDateString(\"en-US\"),\n dateTo: picker.endDate\n .toDate()\n .toLocaleDateString(\"en-US\"),\n });\n Object(reportFilters[chartType]).dateRange = {\n dateFrom: picker.startDate\n .toDate()\n .toLocaleDateString(\"en-US\"),\n dateTo: picker.endDate\n .toDate()\n .toLocaleDateString(\"en-US\"),\n };\n setReportFilters(reportFilters);\n setDataToSessionStorage(\"reportFilters\", reportFilters);\n }}\n />\n
\n
\n
\n )}\n {chartType === 1 ? (\n \n ) : chartType === 2 ? (\n \n ) : chartType === 3 ? (\n \n ) : chartType === 4 ? (\n \n )\n : chartType === 5 ? (\n \n )\n : chartType === 6 ? (\n \n )\n : chartType === 7 ? (\n \n )\n : chartType === 8 ? (\n \n )\n : chartType === 9 ? (\n \n )\n : chartType === 10 ? (\n \n )\n : chartType === 11 ? (\n \n )\n : chartType === 12 ? (\n \n )\n : chartType === 13 ? (\n \n ) : chartType === 14 ? (\n \n ) : chartType === 15 ? (\n \n ) : chartType === 16 ? (\n \n ) : chartType === 17 ? (\n \n )\n : chartType === \"archive\" ? (\n \n ) : (\n <>\n )}\n
\n
\n
\n
\n \n );\n};\n\nexport default Reports;\n","import React, { useState, useEffect } from \"react\";\nimport { ajaxCaller, ajaxNonJsonCaller, authHeaders } from \"../ajaxCaller\";\nimport { getAccessToken, isKontakAdmin } from \"../authentification\";\nimport $ from \"jquery\";\nimport { Steps } from 'intro.js-react';\nimport { useGlobal } from \"./components/globalIntroState\";\nimport Autocomplete from \"react-autocomplete\";\n\nconst Profile = (props) => {\n const [categoryNameToDelete, setCategoryNameToDelete] = useState(null);\n const [categoryIdToDelete, setCategoryIdToDelete] = useState(null);\n const [groups, setGroups] = useState(null);\n const [groupId, setGroupId] = useState(props.match.params.groupId);\n const [isKontakAdminHere] = useState(isKontakAdmin());\n const [searchFacilityText, setSearchFacilityText] = useState('');\n\n const getGroups = () => {\n ajaxCaller(\"Group/GetGroups?Simple=true\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((groups) => {\n if (!groups.isError) {\n setGroups(groups);\n if(groupId == null) {\n if (groups != null && groups.length > 0) {\n setGroupId(groups[0].id);\n configureSearch(groups[0].id);\n }\n }\n else {\n configureSearch(groupId, groups);\n } \n }\n });\n };\n\n const configureSearch = (groupId, groups) => {\n console.log(groups);\n if (groups != null && (searchFacilityText === '' || searchFacilityText == null)){\n const selectedGroup = groups.filter((group) => group.id.toString() === groupId.toString());\n if (selectedGroup != null && selectedGroup.length >= 1) {\n setSearchFacilityText(selectedGroup[0].name);\n } \n } \n }\n\n // function onGroupSelected(event) {\n // const groupId = $(event.target).val();\n // setGroupId(groupId);\n // }\n\n function onGroupSelected(selectedGroupName) {\n const searchedGroup = groups.filter((group) => group.name === selectedGroupName);\n if (searchedGroup.length >= 1) {\n const group = searchedGroup[0];\n setSearchFacilityText(selectedGroupName);\n setGroupId(group.id);\n }\n }\n\n const categoriesHookCallback = () => {\n if (groupId != null) {\n getCategories(groupId);\n }\n };\n\n useEffect(categoriesHookCallback, [groupId]);\n\n useEffect(() => {\n if (groups == null) {\n getGroups();\n }\n });\n\n const [categories, setCategories] = useState(null);\n const [ccLeadsEmails, setCCLeadsEmails] = useState([]);\n const [sendLeadsEmails, setSendLeadsEmails] = useState([]);\n const getCategories = (groupId) => {\n if (groupId === -1) {\n setCategories(null);\n } else {\n ajaxCaller(\"QuestionCategory/Facility/\" + groupId, {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n\n if (groups == null) {\n return;\n }\n var group =\n groups &&\n groups.find((x) => x.id.toString() === groupId.toString());\n setCCLeadsEmails(\n group.ccLeadsTo == null || group.ccLeadsTo === \"\"\n ? []\n : group.ccLeadsTo.split(\",\")\n );\n setSendLeadsEmails(\n group.sendLeadsTo == null || group.sendLeadsTo === \"\"\n ? []\n : group.sendLeadsTo.split(\",\")\n );\n setCategories(response.categories);\n setFirstCategoryId(response.categories[0].id)\n }\n });\n }\n };\n\n\n const changeIsHighlighted = (id) => {\n ajaxCaller(\"QuestionCategory/ChangeIsHighlighted/\" + id, {\n method: \"put\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n setCategories(\n categories.map((category) => {\n if (category.id === id) {\n category.id = id;\n category.isHighlighted = !category.isHighlighted;\n }\n return category;\n })\n );\n }\n });\n };\n\n const changeVisibleInCICReport = (id) => {\n ajaxCaller(\"QuestionCategory/ChangeVisibilityForReport/\" + id, {\n method: \"put\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n setCategories(\n categories.filter((category) => {\n if (category.id === id) {\n category.id = id;\n category.displayInCICReport = !category.displayInCICReport;\n }\n return category;\n })\n );\n }\n });\n };\n\n const [categoryName, setCategoryName] = useState(\"\");\n const addCategory = () => {\n ajaxCaller(\"QuestionCategory/SubmitCategory\", {\n method: \"post\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n name: categoryName,\n groupId: groupId,\n }),\n }).then((response) => {\n //TODO need add error handling\n if (!response.isError) {\n setCategories(categories.concat(response));\n setCategoryName(\"\");\n }\n });\n };\n\n const validateEmail = (email) => {\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(email);\n };\n\n\n const getCategoriesCallback = () => {\n if (props.match.params.groupId != null) {\n getCategories(props.match.params.groupId);\n }\n }\n useEffect(getCategoriesCallback, [groups])\n\n useEffect(() => {\n $('[data-toggle=\"tooltip\"]').tooltip();\n $('[data-toggle-second=\"tooltip\"]').tooltip();\n });\n\n const removeCategory = () => {\n ajaxCaller(\"QuestionCategory/\" + categoryIdToDelete, {\n method: \"delete\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n setCategories(categories.filter((a) => a.id !== categoryIdToDelete));\n } else {\n //TODO error handling\n }\n });\n };\n\n const addSendLeadsEmail = (event) => {\n if (\n event.target.value === \"\" ||\n event.target.value.length < 2 ||\n !validateEmail(event.target.value)\n ) {\n return;\n }\n var key = event.which;\n if (key === 13 || key === 14) {\n var newLeadsEmails = [...sendLeadsEmails];\n newLeadsEmails.push(event.target.value);\n setSendLeadsEmails(newLeadsEmails);\n saveEmailsChanges(newLeadsEmails, ccLeadsEmails);\n event.target.value = \"\";\n }\n };\n\n const addCCLeadsEmail = (event) => {\n if (\n event.target.value === \"\" ||\n event.target.value.length < 2 ||\n !validateEmail(event.target.value)\n ) {\n return;\n }\n var key = event.which;\n if (key === 13 || key === 14) {\n var newLeadsEmails = [...ccLeadsEmails];\n newLeadsEmails.push(event.target.value);\n\n setCCLeadsEmails(newLeadsEmails);\n saveEmailsChanges(sendLeadsEmails, newLeadsEmails);\n event.target.value = \"\";\n }\n };\n\n const removeCCLeadsEmail = (index) => {\n var newLeadsEmails = [...ccLeadsEmails];\n newLeadsEmails.splice(index, 1);\n setCCLeadsEmails(newLeadsEmails);\n saveEmailsChanges(sendLeadsEmails, newLeadsEmails);\n };\n\n const removeSendLeadsEmail = (index) => {\n var newLeadsEmails = [...sendLeadsEmails];\n newLeadsEmails.splice(index, 1);\n setSendLeadsEmails(newLeadsEmails);\n saveEmailsChanges(newLeadsEmails, ccLeadsEmails);\n };\n\n const saveEmailsChanges = (leadsEmails, ccEmails) => {\n var ccLeadsLine = \"\";\n var sendLeadLine = \"\";\n\n ccEmails.forEach((email) => {\n if (email.length > 1) {\n ccLeadsLine = email + \",\" + ccLeadsLine;\n }\n });\n\n leadsEmails.forEach((email) => {\n if (email.length > 1) {\n sendLeadLine = email + \",\" + sendLeadLine;\n }\n });\n\n ccLeadsLine = ccLeadsLine.slice(0, -1);\n sendLeadLine = sendLeadLine.slice(0, -1);\n\n ajaxCaller(\"Group/UpdateLeadsTo/\" + groupId, {\n method: \"put\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n ccLeadsTo: ccLeadsLine,\n sendLeadsTo: sendLeadLine,\n }),\n }).then((group) => {\n if (!group.isError) {\n setCCLeadsEmails(\n group.ccLeadsTo == null || group.ccLeadsTo === \"\"\n ? []\n : group.ccLeadsTo.split(\",\")\n );\n setSendLeadsEmails(\n group.sendLeadsTo == null || group.sendLeadsTo === \"\"\n ? []\n : group.sendLeadsTo.split(\",\")\n );\n }\n });\n };\n\n const [editedCategoryName, setEditedCategoryName] = useState(\"\");\n const updateCategoryName = (id) => {\n ajaxCaller(\"QuestionCategory/\" + id, {\n method: \"put\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n name: editedCategoryName,\n }),\n }).then((response) => {\n if (!response.isError) {\n getCategories(groupId);\n }\n });\n };\n\n const dowloadQuestionCatergories = () => {\n ajaxNonJsonCaller(\"QuestionCategory/Export/\" + groupId, {\n method: \"get\",\n headers: authHeaders,\n }).then((response) => {\n if (response.ok) {\n response.blob().then((blob) => {\n let url = window.URL.createObjectURL(blob);\n let a = document.createElement(\"a\");\n a.href = url;\n a.download = \"Profile Export for \" +groups.find(x => x.id.toString() === groupId.toString()).name+\".pdf\";\n a.click();\n });\n }\n });\n };\n\n const [firstCategoryId, setFirstCategoryId] = useState(null);\n const steps = [\n {\n element: '.q',\n intro: '

Profile Section

This section contains information about your business our agents rely on to successfully handle your visitors’ questions and needs. The information stored here has been automatically transferred from the intake form you completed during the onboarding process. To ensure our agents can do the best job, please keep this info regularly updated. Thanks. Let’s start!

',\n position: 'right',\n tooltipClass: 'intro-profile-main', // can be used for changing styles\n //highlightClass: 'myHighlightClass', // can be used for changing styles when it is highlighted\n },\n {\n element: '.select2-container',\n intro: 'If your business has multiple locations, you are able to switch between them using the drop-down (If you don’t have multiple locations, you will see your business name displayed here).',\n position: 'right',\n //tooltipClass: 'myTooltipClass', // can be used for changing styles\n //highlightClass: 'myHighlightClass', // can be used for changing styles when it is highlighted\n },\n {\n element: '#profile-appointment-request',\n intro: 'Set up emails for the recipients of the appointment requests and other necessary information generated by our agents. *Note, if you have multiple locations, these are set up for each location individually. ',\n position: 'right',\n //tooltipClass: 'myTooltipClass', // can be used for changing styles\n //highlightClass: 'myHighlightClass', // can be used for changing styles when it is highlighted\n },\n {\n element: '#profile-categories',\n intro: 'Bellow you will see a list of categories, each containing questions and answers about your business. You can access them by clicking “Open Category“, or use the “All Questions“ option to search via keywords across all categories. ',\n position: 'right'\n },\n {\n element: '#category_' + firstCategoryId,\n intro: 'Please know that some Q&As (i.e. services, pricing) may fall into multiple categories. When updating info regarding a specific service, the safest way is to use keyword search functionality. ',\n position: 'right',\n tooltipClass: 'intro-profile-categories', // can be used for changing styles\n highlightClass: 'intro-profile-categories-hightlight', // can be used for changing styles when it is highlighted\n }\n ];\n\n const [globalState] = useGlobal();\n const [userIntroEnabled, setUserIntroEnabled] = useState(false); // note enable steps ONLY if they are not finished\\\n const [currentIntroStep, setCurrentIntroStep] = useState(null);\n const [introId, setIntroId] = useState(null); \n\n const changeCurrentStep = (step) => {\n ajaxCaller(\"UserIntro/UpdateStep/\", {\n method: \"put\",\n headers: authHeaders,\n body: JSON.stringify({\n id: introId,\n currentStep: step\n }),\n }).then((response) => {\n if (response.isError) {\n } else {\n }\n });\n }\n\n const finishUserIntro = () => {\n ajaxCaller(\"UserIntro/FinishIntro/\" + introId, {\n method: \"put\",\n headers: authHeaders,\n }).then((response) => {\n if (response.isError) {\n } else {\n setUserIntroEnabled(false);\n }\n });\n }\n \n const getUserIntro = () => {\n ajaxCaller(\"UserIntro/UserIntro/2\", {\n method: \"get\",\n headers: authHeaders,\n }).then((response) => {\n if (response.isError) {\n } else {\n setUserIntroEnabled(!response.finished);\n setCurrentIntroStep(response.currentStep);\n setIntroId(response.id);\n }\n });\n }\n\n useEffect(() => {\n if(!isKontakAdmin())\n {\n getUserIntro();\n }\n }, [globalState.counter])\n\n const onExitStep = () => {\n finishUserIntro();\n };\n\n const onChangeStep = (step) => {\n if(step != null)\n {\n changeCurrentStep(step)\n }\n };\n\n return (\n <>\n {groupId && userIntroEnabled && firstCategoryId && (currentIntroStep != null) && ()}\n
\n \n
\n
\n
\n
\n
\n
\n
Delete category
\n
\n
\n

\n You are about to delete the category:\n
\n {categoryNameToDelete}\n

\n

Are you sure you wish to continue?

\n
\n
\n \n CANCEL\n \n removeCategory()}\n >\n DELETE\n \n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
Client Profile
\n
\n
\n
\n {\n groups && (\n item.name}\n items={groups.filter((group) => group.name.includes(searchFacilityText))}\n renderItem={(item, isHighlighted) =>\n
\n {item.name}\n
\n }\n value={searchFacilityText}\n onChange={(e) => setSearchFacilityText(e.target.value)}\n onSelect={(val) => onGroupSelected(val)}\n inputProps={{onClick: () => setSearchFacilityText(''), style: { width: '1000px' }}}\n />\n )\n }\n
\n
\n
\n
\n {groupId && (\n
\n
\n
\n
\n
\n
\n
Appointment request
\n
\n
\n
\n
\n

Send to:

\n
\n
\n
\n
\n
\n {sendLeadsEmails &&\n sendLeadsEmails.map((email, index) => (\n \n \n removeSendLeadsEmail(index)\n }\n >\n ×\n \n {email}\n \n ))}\n \n \n addSendLeadsEmail(event)\n }\n placeholder=\"Type an email address and press ENTER...\"\n />\n \n
\n
\n
\n
\n
\n
\n
\n

CC to:

\n
\n
\n
\n \n
\n {ccLeadsEmails &&\n ccLeadsEmails.map((email, index) => (\n \n removeCCLeadsEmail(index)}\n >\n ×\n \n {email}{\" \"}\n \n ))}\n addCCLeadsEmail(event)}\n placeholder=\"Type an email address and press ENTER...\"\n />\n
\n \n
\n
\n
\n
\n
\n
\n {isKontakAdminHere && (\n
\n
\n
\n
\n
\n

\n Add a category\n

\n
\n
\n
\n \n setCategoryName($(event.target).val())\n }\n placeholder=\"Name your category...\"\n autoComplete=\"off\"\n />\n
\n
\n
\n addCategory()}\n disabled={\n categoryName == null ||\n categoryName === \"\" ||\n categoryName === \" \"\n }\n className=\"btn btn-blue btn-width-80 btn-height-40 border-0 font-size-16\"\n >\n Add\n \n
\n
\n
\n
\n
\n )}\n\n
\n
\n
\n
\n \n
\n

\n Category\n

\n \n All Questions\n \n {isKontakAdminHere && ( dowloadQuestionCatergories()}\n >\n �\n )}\n
\n \n
\n {isKontakAdminHere && (\n
\n
\n

\n Agent Alert\n

\n
\n
\n )}\n {isKontakAdminHere && (\n
\n
\n

\n Include in the CIC report\n

\n
\n
\n )}\n
\n
\n
\n
\n
\n \n\n {categories &&\n categories.map((category) => (\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n Edit Category\n
\n
\n
\n
\n
\n

\n Name:\n

\n
\n
\n
\n {\n setEditedCategoryName(\n event.target.value\n );\n }}\n autoComplete=\"off\"\n />\n
\n
\n
\n
\n
\n \n CANCEL\n \n \n updateCategoryName(category.id)\n }\n >\n UPDATE\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n \n
\n

{category.name}

\n {isKontakAdminHere && (\n setEditedCategoryName(category.name)}\n title=\"Change the category name\"\n >\n \n \n )}\n
\n
\n {isKontakAdminHere && (\n
\n
\n
\n \n changeIsHighlighted(category.id)\n }\n />\n \n Highlight\n \n
\n
\n
\n )}\n {isKontakAdminHere && (\n
\n
\n
\n \n changeVisibleInCICReport(category.id)\n }\n />\n \n Include{\" \"}\n \n in the CIC report\n \n \n
\n
\n
\n )}\n
\n
\n \n Open Category\n \n {isKontakAdminHere && (\n {\n setCategoryIdToDelete(category.id);\n setCategoryNameToDelete(category.name);\n }}\n >\n \"\"\n \n )}\n
\n
\n
\n
\n
\n ))}\n \n \n \n )}\n \n \n \n \n );\n};\n\nexport default Profile;\n","import React, { useState, useEffect } from \"react\";\nimport { ajaxCaller, authHeaders } from \"../ajaxCaller\";\nimport { getAccessToken, isKontakAdmin} from \"../authentification\";\nimport Dragula from \"react-dragula\";\nimport $ from \"jquery\";\nimport ReactQuill from \"react-quill\";\nimport Moment from \"react-moment\";\nimport Highlighter from \"react-highlight-words\";\nimport { Steps } from 'intro.js-react';\nimport { useGlobal } from \"./components/globalIntroState\";\nrequire(\"react-quill/dist/quill.snow.css\");\n\nconst ProfileCategory = (props) => {\n const [categoryId] = useState(props.match.params.categoryId);\n const [groupId] = useState(props.match.params.groupId);\n const [category, setCategory] = useState(null);\n const [isKontakAdminHere] = useState(isKontakAdmin());\n\n const hookCallback = () => {\n\n getQuestionAnswers();\n setupDrake();\n }\n useEffect(hookCallback, [categoryId]);\n\n const [questionAnswers, setQuestionAnswers] = useState(null);\n const getQuestionAnswers = () => {\n if (categoryId && categoryId.toString() === \"all\") {\n ajaxCaller(\"QuestionAnswer/GetAllByFacility/\" + groupId, {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n setQuestionAnswers(response);\n setFirstQuestionForIntro(response[0].id)\n }\n });\n } else {\n ajaxCaller(\"QuestionAnswer/Category/\" + categoryId, {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n console.log(categoryId);\n console.log(response);\n setQuestionAnswers(response);\n setFirstQuestionForIntro(response[0].id)\n }\n });\n }\n };\n\n const [containerElements, setContainerElements] = useState(null);\n const setupDrake = () => {\n var container = document.getElementById(\"container\");\n var drake = Dragula([container]);\n\n drake.on(\"drop\", (el, target, source, sibling) => {\n var childContainerElements = Array.prototype.slice.call(\n document.getElementById(\"container\").children\n );\n setContainerElements(childContainerElements);\n });\n };\n\n const reorderQuestionAnswers = () => {\n if (questionAnswers !== null) {\n var reorderedElements = [];\n for (let index = 0; index < containerElements.length; index++) {\n let id = containerElements[index].id;\n reorderedElements.push({ id: id, rowIndex: index });\n }\n\n var reorderedQuestionAnswers = [...questionAnswers];\n reorderedQuestionAnswers.forEach((element) => {\n reorderedElements.forEach((containerElement) => {\n if (\n \"questionAnswer_\" + element.id ===\n containerElement.id.toString()\n ) {\n element.rowIndex = containerElement.rowIndex;\n }\n });\n });\n\n setQuestionAnswers(reorderedQuestionAnswers);\n updateReorderedQuestionAnswers();\n }\n };\n\n const reorderHookCallback = () => {\n reorderQuestionAnswers();\n }\n useEffect(reorderHookCallback, [containerElements]);\n\n const updateReorderedQuestionAnswers = () => {\n ajaxCaller(\"QuestionAnswer/ReorderQuestionAnswers\", {\n method: \"put\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify(questionAnswers),\n }).then((response) => {\n if (!response.isError) {\n setCategory(response);\n }\n });\n };\n\n const [editableQuestion, setEditableQuestion] = useState(\"\");\n const updateQuestionAnswer = (id) => {\n var questionAnswer = questionAnswers.find(\n (x) => x.id.toString() === id.toString()\n );\n questionAnswer.question = editableQuestion;\n ajaxCaller(\"QuestionAnswer/\" + id, {\n method: \"put\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n question: questionAnswer.question,\n answer: questionAnswer.answer,\n answerText: questionAnswer.answerText,\n }),\n }).then((response) => {\n if (!response.isError) {\n setCategory(response);\n }\n });\n };\n\n const switchLockForEditState = (id) => {\n ajaxCaller(\"QuestionAnswer/SwitchLockForEditState/\" + id, {\n method: \"put\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n })\n }).then((response) => {\n if (!response.isError) {\n getQuestionAnswers();\n }\n });\n } \n\n const clearFields = () => {\n setQuestion(\"\");\n setAnswer(\"\");\n setAnswerText(\"\");\n };\n const [question, setQuestion] = useState(\"\");\n const [answer, setAnswer] = useState(\"\");\n const [answerText, setAnswerText] = useState(\"\");\n const createQuestionAnswer = () => {\n ajaxCaller(\"QuestionAnswer\", {\n method: \"post\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n question: question,\n answer: answer,\n answerText: answerText,\n categoryId: categoryId,\n }),\n }).then((response) => {\n if (!response.isError) {\n clearFields();\n setQuestionAnswers((prev) => [...prev].concat(response));\n }\n });\n };\n const addButtonIsDisabled = () => {\n return answer === \"\" || answer == null || question == null || question === \"\" || question === \" \" || answer === \" \";\n }\n\n const removeQuestionAnswer = (id) => {\n ajaxCaller(\"QuestionAnswer/\" + id, {\n method: \"delete\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n getQuestionAnswers();\n } else {\n }\n });\n };\n\n\n const [searchString, setSearchString] = useState(\"\");\n const matchQuestionAnswer = (questionAnswer) => {\n if(searchString == null || searchString === \"\" || searchString === \" \")\n {\n return true;\n }\n return questionAnswer.question.toLowerCase().includes(searchString.toLowerCase()) ||\n questionAnswer.answer.toLowerCase().includes(searchString.toLowerCase())\n } \n\n const [firstQuestionForIntro, setFirstQuestionForIntro] = useState(null)\n const steps = [\n {\n element: '#profile-category-add',\n intro: 'If you wish to add additional Q&As, you can do so by using these boxes. ',\n position: 'right',\n highlightClass: 'intro-profile-category-add-hightlight'\n },\n {\n element: '#edit_'+firstQuestionForIntro,\n intro: ' To edit any entry, please click here, and be sure to click on the update button afterwards to ensure your edits have been saved.',\n position: 'right'\n },\n {\n element: '#centred-intro',\n intro: '

NOTE: To avoid confusion with your visitors, PetDesk Phones agents do not use terminology to imply that they are on-site. Therefore, when editing, please use the third person narrative (i.e. The hospital offers…) and try to keep the style uniform.

',\n position: 'right',\n tooltipClass: 'intro-profile-main'\n },\n {\n element: '#cntered-intro',\n intro: '

If you require additional training regarding this section, please contact support@getkontak.com

',\n position: 'right'\n }\n ];\n\n const [globalState] = useGlobal();\n const [userIntroEnabled, setUserIntroEnabled] = useState(false); // note enable steps ONLY if they are not finished\\\n const [currentIntroStep, setCurrentIntroStep] = useState(null);\n const [introId, setIntroId] = useState(null); \n\n const changeCurrentStep = (step) => {\n ajaxCaller(\"UserIntro/UpdateStep/\", {\n method: \"put\",\n headers: authHeaders,\n body: JSON.stringify({\n id: introId,\n currentStep: step\n }),\n }).then((response) => {\n if (response.isError) {\n } else {\n }\n });\n }\n\n const finishUserIntro = () => {\n ajaxCaller(\"UserIntro/FinishIntro/\" + introId, {\n method: \"put\",\n headers: authHeaders,\n }).then((response) => {\n if (response.isError) {\n } else {\n setUserIntroEnabled(false);\n }\n });\n }\n \n const getUserIntro = () => {\n ajaxCaller(\"UserIntro/UserIntro/3\", {\n method: \"get\",\n headers: authHeaders,\n }).then((response) => {\n if (response.isError) {\n } else {\n setUserIntroEnabled(!response.finished);\n setCurrentIntroStep(response.currentStep);\n setIntroId(response.id);\n }\n });\n }\n\n useEffect(() => {\n if(!isKontakAdmin())\n {\n getUserIntro();\n }\n }, [globalState.counter])\n\n const onExitStep = () => {\n finishUserIntro();\n };\n\n const onChangeStep = (step) => {\n if(step != null)\n {\n changeCurrentStep(step)\n }\n };\n\n return (\n <>\n {groupId && userIntroEnabled && firstQuestionForIntro && ()}\n
\n
\n
\n
\n
\n
\n \n \n back\n \n
\n
\n
{category && category.name}
\n
\n
\n
\n
\n
\n
\n
\n

\n Add a question:\n

\n
\n
\n
\n \n setQuestion($(event.target).val())\n }\n placeholder=\"Add a question...\"\n autoComplete=\"off\"\n />\n
\n
\n
\n
\n
\n

\n Answer:\n

\n
\n
\n
\n
\n \n {/* //TODO: need add modules like Ivan added {modules}*/}\n {\n setAnswer(content);\n setAnswerText(editor.getText());\n }}\n />\n
\n
\n
\n
\n
\n
\n
\n createQuestionAnswer()}\n disabled={addButtonIsDisabled()} \n className=\"btn btn-blue btn-width-80 btn-height-40 border-0 font-size-16\"\n >\n Add\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

\n {category && category.name}\n

\n setSearchString( event.target.value)}\n autoComplete=\"off\"\n />\n
\n \n
\n
\n
\n

\n Last Modified\n

\n
\n
\n
\n
\n
\n
\n
\n
\n {questionAnswers &&\n questionAnswers.map((questionAnswer) => {\n if(matchQuestionAnswer(questionAnswer))\n {\n return (\n
\n \n
\n
\n
\n
\n
\n
\n
\n Delete question: {questionAnswer.question}\n
\n
\n
\n

\n Are you sure you wish to continue?\n

\n
\n
\n \n CANCEL\n \n \n removeQuestionAnswer(questionAnswer.id)\n }\n className=\"btn btn-red btn-width-130 btn-height-40 border-2 font-size-14 ml-1\"\n >\n DELETE\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n Edit Information\n
\n
\n
\n
\n
\n

\n Question:\n

\n
\n
\n
\n {\n setEditableQuestion(\n $(event.target).val()\n );\n }}\n autoComplete=\"off\"\n />\n
\n
\n
\n
\n
\n

\n Answer:\n

\n
\n
\n
\n
\n \n {\n questionAnswer.answer = content;\n questionAnswer.answerText = editor.getText();\n }}\n />\n
\n
\n
\n
\n
\n
\n
\n \n CANCEL\n \n \n updateQuestionAnswer(questionAnswer.id)\n }\n >\n UPDATE\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n

\n {(searchString && (searchString !== \" \" && searchString !== \"\")) ? () : questionAnswer.question}\n

\n
\n
\n {/*

*/}\n {(searchString && (searchString !== \" \" && searchString !== \"\")) ? () : }\n \n {/*

*/}\n
\n
\n
\n
\n
\n
\n

\n \n Last Modified:{\" \"}\n \n \n {\n\n isKontakAdminHere ? (\n \"WHO\n ) : <>\n }\n

\n
\n
\n
\n
\n {isKontakAdminHere ? ( {\n \n switchLockForEditState(questionAnswer.id);\n }}\n className=\"btn btn-blue btn-height-36 border-0 font-size-14 mr-2 mt-2 mt-xl-0\"\n >\n {questionAnswer.isLockedForEdit\n ) : questionAnswer.isLockedForEdit && (\n \"lock\"\n )}\n {!questionAnswer.isLockedForEdit ? ( {\n setEditableQuestion(questionAnswer.question);\n }}\n className=\"btn btn-blue btn-width-130 btn-height-36 border-0 font-size-14 mr-2 mt-2 mt-xl-0\"\n >\n Edit\n ) : isKontakAdminHere && {\n setEditableQuestion(questionAnswer.question);\n }}\n className=\"btn btn-blue btn-width-130 btn-height-36 border-0 font-size-14 mr-2 mt-2 mt-xl-0\"\n >\n Edit\n }\n {isKontakAdminHere && (\n \"\"\n )}\n {!isKontakAdminHere && questionAnswer.isPending && (\n \"\"\n )}\n
\n
\n
\n
\n
\n )\n }\n else{\n return (<>);\n }\n })}\n
\n \n \n \n \n \n \n );\n};\n\nexport default ProfileCategory;\n","import React, { useState, useEffect } from \"react\";\nimport { PrivilegeChecker, Privileges } from \"../../privilegeChecker\";\nimport { isKontakAdmin } from \"../../authentification\";\nimport { Steps } from 'intro.js-react';\nimport { useGlobal } from \"./globalIntroState\";\nimport { ajaxCaller, authHeaders } from \"../../ajaxCaller\";\n\nconst SettingsPageNavBar = (props) => {\n const [navBarIsOpened, setNavBarIsOpened] = useState(true);\n const [isShowIntros, setIsShowIntros] = useState(false);\n useEffect(() => {\n if (navBarIsOpened) {\n document.body.className = \"opened-sub-nav\";\n setIsShowIntros(true)\n } else {\n document.body.className = \"app\";\n }\n }, [navBarIsOpened]);\n\n const steps = [\n PrivilegeChecker.hasPrivilege(\n Privileges.ViewEditUsersAndRoles\n ) === true ?\n {\n element: '#section-team',\n intro: 'Manage team members, create and assign roles to them, and invite them to login to PetDesk Phones. ',\n position: 'right',\n } : null,\n PrivilegeChecker.hasPrivilege(\n Privileges.ViewEditFacilityAndRegions\n ) === true ? {\n element: '#section-locations',\n intro: 'All settings related to your location, or multiple locations depending on the size of your business. ',\n position: 'right',\n } : null,\n PrivilegeChecker.hasPrivilege(\n Privileges.ViewEditFacilityAndRegions\n ) === true ? {\n element: '#section-regions',\n intro: 'Group multiple locations into regions.',\n position: 'right',\n } : null,\n {\n element: '#section-company',\n intro: ' Personalize your account with your logo.',\n position: 'right',\n tooltipClass: 'intro-settings', // can be used for changing styles\n highlightClass: 'intro-settings-hightlight', // can be used for changing styles when it is highlighted\n },\n {\n element: '#section-billing',\n intro: 'See all your invoices and manage subscriptions (coming soon). ',\n position: 'right',\n }\n ].filter(x => x !== null);\n \n const [globalState] = useGlobal();\n const [userIntroEnabled, setUserIntroEnabled] = useState(false); // note enable steps ONLY if they are not finished\\\n const [currentIntroStep, setCurrentIntroStep] = useState(null);\n const [introId, setIntroId] = useState(null); \n\n const changeCurrentStep = (step) => {\n ajaxCaller(\"UserIntro/UpdateStep/\", {\n method: \"put\",\n headers: authHeaders,\n body: JSON.stringify({\n id: introId,\n currentStep: step\n }),\n }).then((response) => {\n if (response.isError) {\n } else {\n }\n });\n }\n\n const finishUserIntro = () => {\n ajaxCaller(\"UserIntro/FinishIntro/\" + introId, {\n method: \"put\",\n headers: authHeaders,\n }).then((response) => {\n if (response.isError) {\n } else {\n setUserIntroEnabled(false);\n }\n });\n }\n \n const getUserIntro = () => {\n ajaxCaller(\"UserIntro/UserIntro/4\", {\n method: \"get\",\n headers: authHeaders,\n }).then((response) => {\n if (response.isError) {\n } else {\n setUserIntroEnabled(!response.finished);\n setCurrentIntroStep(response.currentStep);\n setIntroId(response.id);\n }\n });\n }\n\n useEffect(() => {\n if(!isKontakAdmin())\n {\n getUserIntro();\n }\n }, [globalState.counter])\n\n const onExitStep = () => {\n finishUserIntro();\n };\n\n const onChangeStep = (step) => {\n if(step != null)\n {\n changeCurrentStep(step)\n }\n };\n\n return (\n <> {isShowIntros && userIntroEnabled && (currentIntroStep != null) && }\n
\n \n setNavBarIsOpened(!navBarIsOpened)}\n >\n \"\"\n
\n
Settings
\n
\n \n General\n \n \n Billing\n \n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewEditUsersAndRoles\n ) && (\n Team\n )}\n\n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewEditFacilityAndRegions\n ) && (\n Regions\n )}\n {PrivilegeChecker.hasPrivilege(\n Privileges.ViewEditFacilityAndRegions\n ) && (\n Locations\n )}\n {/* {PrivilegeChecker.hasPrivilege(\n Privileges.ViewChatsChartObject\n ) && (\n Widgets\n )} */}\n {isKontakAdmin() && (\n Admin Panel\n )}\n {isKontakAdmin() && (\n PetDesk Configuration\n )}\n {isKontakAdmin() && (\n DNI\n )}\n\n
\n \n \n )\n}\n\nexport default SettingsPageNavBar;","import React, { useEffect } from \"react\";\nimport $ from \"jquery\";\nimport { FaExclamationCircle } from 'react-icons/fa';\n\nconst ErrorModal = (props) => {\n const setAndShowError = () => {\n if (props.errorMessage && props.errorMessage !== \"\" && props.errorMessage != null) {\n $('#modalError').modal('show');\n }\n };\n\n useEffect(() => {\n return () => {\n $('#modalError').modal('hide');\n };\n }, [props.errorMessage]);\n\n useEffect(\n setAndShowError\n , [props.errorMessage]);\n \n return (\n <>\n \n
\n
\n
\n
\n {props.errorTitle || \"Something went wrong\"}\n
\n
\n
\n {props.errorMessage && (\n
\n \n {props.errorMessage}\n
\n )}\n
\n
\n \n Close\n \n
\n
\n
\n \n \n );\n};\n\nexport default ErrorModal;","import React, { useState, useEffect } from \"react\";\r\nimport { ajaxCaller } from \"../ajaxCaller\";\r\nimport { getAccessToken } from \"../authentification\";\r\nimport SettingsPageNavBar from \"./components/settingsPageNavBar\";\r\nimport $ from \"jquery\";\r\nimport ErrorModal from \"./components/errorModal\";\r\n\r\nconst Regions = (props) => {\r\n const [regions, setRegions] = useState(null);\r\n const [errorMessage, setErrorMessage] = useState(null);\r\n const getRegions = () => {\r\n clearError();\r\n ajaxCaller(\"Region/GetRegionsWithGroupCount\", {\r\n method: \"get\",\r\n headers: new Headers({\r\n Authorization: \"Bearer \" + getAccessToken(),\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n }),\r\n }).then((regions) => {\r\n if (regions.isError) {\r\n } else {\r\n setRegions(regions);\r\n }\r\n });\r\n };\r\n\r\n const getRegionsCallback = () => {\r\n if (regions == null) {\r\n getRegions();\r\n }\r\n }\r\n useEffect(getRegionsCallback, [regions]);\r\n\r\n const [newRegionName, setNewRegionName] = useState(\"\");\r\n const createRegion = () => {\r\n clearError();\r\n ajaxCaller(\"Region/AddRegion\", {\r\n method: \"post\",\r\n headers: new Headers({\r\n Authorization: \"Bearer \" + getAccessToken(),\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n }),\r\n body: JSON.stringify({\r\n name: newRegionName,\r\n }),\r\n }).then((region) => {\r\n if (!region.isError) {\r\n setNewRegionName(\"\");\r\n setRegions((prev) => [...prev].concat(region));\r\n }\r\n else {\r\n setNewRegionName(\"\");\r\n setErrorMessage(region.message);\r\n }\r\n });\r\n };\r\n\r\n const [editingRegionName, setEditingRegionName] = useState(\"\");\r\n const updateRegion = (id) => {\r\n clearError();\r\n ajaxCaller(\"Region/EditRegion\", {\r\n method: \"put\",\r\n headers: new Headers({\r\n Authorization: \"Bearer \" + getAccessToken(),\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n }),\r\n body: JSON.stringify({\r\n id: id,\r\n name: editingRegionName,\r\n }),\r\n }).then((region) => {\r\n if (!region.isError) {\r\n getRegions();\r\n }\r\n else {\r\n setErrorMessage(region.message)\r\n }\r\n });\r\n };\r\n\r\n const clearError = () => {\r\n setErrorMessage(null)\r\n }\r\n\r\n const removeRegion = (id) => {\r\n clearError();\r\n ajaxCaller(\"Region/RemoveRegion/\" + id, {\r\n method: \"delete\",\r\n headers: new Headers({\r\n Authorization: \"Bearer \" + getAccessToken(),\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n }),\r\n }).then((region) => {\r\n if (!region.isError) {\r\n getRegions();\r\n }\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n $('[data-toggle=\"tooltip\"]').tooltip();\r\n $('[data-toggle-second=\"tooltip\"]').tooltip();\r\n });\r\n\r\n return (\r\n <>\r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Regions
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Add a new region\r\n

\r\n
\r\n
\r\n
\r\n \r\n setNewRegionName(event.target.value)\r\n }\r\n className=\"form-style border-0 small-40\"\r\n placeholder=\"Name your region...\"\r\n autoComplete=\"off\"\r\n />\r\n
\r\n
\r\n
\r\n createRegion()}\r\n disabled={newRegionName == null || newRegionName === \"\" || newRegionName === \" \"}\r\n className=\"btn btn-blue btn-width-80 btn-height-40 border-0 font-size-16\"\r\n >\r\n Add\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Regions\r\n

\r\n
\r\n
\r\n {/* \r\n \r\n Export (CSV)\r\n */}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Region name\r\n

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

\r\n Locations\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {regions &&\r\n regions.map((region) => (\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Delete region
\r\n
\r\n
\r\n

\r\n You are about to delete a region:{\" \"}\r\n {region.name}\r\n

\r\n

\r\n Are you sure you wish to continue?\r\n

\r\n
\r\n
\r\n \r\n CANCEL\r\n \r\n removeRegion(region.id)}\r\n className=\"btn btn-red btn-width-130 btn-height-40 border-2 font-size-14 ml-1\"\r\n >\r\n DELETE\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Edit Region\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Name:\r\n

\r\n
\r\n
\r\n
\r\n {\r\n setEditingRegionName(\r\n event.target.value\r\n );\r\n }}\r\n autoComplete=\"off\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n CANCEL\r\n \r\n \r\n updateRegion(region.id)\r\n }\r\n >\r\n UPDATE\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n

{region.name}

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

Locations: {region.groupCount}

\r\n
?
\r\n
\r\n
\r\n\r\n
\r\n
\r\n setEditingRegionName(region.name)}\r\n className=\"btn btn-blue btn-width-80 btn-height-36 border-0 font-size-14 mr-1 mt-2 mt-xl-0\"\r\n >\r\n Edit Region\r\n \r\n 0}\r\n data-toggle=\"modal\"\r\n data-target={\"#modalDelete_\" + region.id}\r\n className=\"btn btn-red btn-box-36 border-0 mt-2 mt-xl-0\"\r\n >\r\n \"\"\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Regions;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { getCurrentUserSecretKey } from \"../authentification\";\r\n\r\nconst AppointmentDirect = (props) => {\r\n\r\n const [currentUserSecretKey] = useState(getCurrentUserSecretKey());\r\n\r\n useEffect(() => {\r\n const globalSpinner = document.getElementById(\"globalSpinner\");\r\n globalSpinner.style.display = \"none\";\r\n });\r\n\r\n return (\r\n \r\n \r\n );\r\n};\r\n\r\nexport default AppointmentDirect;\r\n","import React, { useEffect, useState, useCallback } from \"react\";\nimport { ajaxCaller, authHeaders } from \"../ajaxCaller\";\nimport Cookies from \"js-cookie\";\n\nconst PawPass = (props) => {\n\n const[apiKey, setApiKey] = useState(null);\n const[userEmail, setUserEmail] = useState(null);\n\n const showSpinner = () => {\n const globalSpinner = document.getElementById(\"globalSpinner\");\n if (globalSpinner != null) {\n globalSpinner.style.display = \"block\";\n }\n }\n\n const hideSpinner = () => {\n const globalSpinner = document.getElementById(\"globalSpinner\");\n if (globalSpinner != null) {\n globalSpinner.style.display = \"none\";\n }\n }\n\n const getApiKey = useCallback(() => {\n showSpinner();\n ajaxCaller(\"PawPass/Authenticate\", {\n method: \"put\",\n headers: authHeaders,\n }).then((response) => {\n if (!response.isError) {\n setApiKey(response.key);\n setUserEmail(response.email);\n showSpinner(); \n }\n });\n }, []);\n \n const [, setOrgInfo] = useState(null);\n const getOrgInfo = useCallback(() => {\n showSpinner();\n ajaxCaller(\"PawPass/GetOrgInfo\", {\n method: \"get\",\n headers: authHeaders,\n }).then((response) => {\n console.log('logo response');\n console.log(response);\n if (!response.isError) {\n setOrgInfo(response);\n \n var companyLogo = Cookies.get(\"company_logo\");\n if(response.org.logoURL && (companyLogo == null || companyLogo === \"null\" || companyLogo === \"\"))\n {\n var logoElement = document.getElementById(\"company-logo\");\n\n logoElement.setAttribute(\n \"src\",\n response.org.logoURL\n );\n \n logoElement.style.display = \"\";\n }\n \n setTimeout(hideSpinner, 12000);\n }\n });\n }, []);\n\n\n useEffect(() => {\n getApiKey();\n }, [getApiKey, apiKey])\n\n useEffect(() => {\n if(apiKey)\n {\n getOrgInfo();\n }\n }, [getOrgInfo, apiKey])\n\n useEffect(() => {\n const globalSpinner = document.getElementById(\"globalSpinner\");\n globalSpinner.style.display = \"none\";\n });\n\n return (\n apiKey && userEmail && (\n )\n );\n};\n\nexport default PawPass;\n","/* eslint-disable no-useless-concat */\nimport React, { useState, useEffect } from \"react\";\nimport { ajaxCaller } from \"../ajaxCaller\";\nimport { getAccessToken, isKontakAdmin } from \"../authentification\";\nimport Select2 from \"react-select2-wrapper\";\nimport { CopyToClipboard } from \"react-copy-to-clipboard\";\nimport SettingsPageNavBar from \"./components/settingsPageNavBar\";\n\nconst Locations = (props) => {\n const [newGroupRegionId, setNewGroupRegionId] = useState(\"\");\n const [newGroupName, setNewGroupName] = useState(\"\");\n const [newGroupLVCId, setNewGroupLVCId] = useState(\"\");\n const [isKontakAdminHere] = useState(isKontakAdmin());\n const clearFields = () => {\n setNewGroupName(\"\");\n setNewGroupRegionId(null);\n setNewGroupLVCId(\"\");\n }\n const createGroup = () => {\n const createGroupJson = {\n name: newGroupName,\n liveChatId: newGroupLVCId,\n regionId: newGroupRegionId\n };\n\n ajaxCaller(\"Group/InsertGroup\", {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"post\",\n body: JSON.stringify(createGroupJson),\n }).then((response) => {\n if (!response.isError) {\n clearFields();\n setGroups((prev) => [...prev].concat(response));\n } else {\n }\n });\n };\n\n const [typeformId, setTypeformId] = useState(null);\n const [companyKey, setCompanyKey] = useState(null);\n const getCompanyByGroupId = (groupId) => {\n ajaxCaller(\"Company/GetCompanyByGroup/\" + groupId, {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n })\n }).then(company => {\n setCompanyKey(company.companyKey && company.companyKey)\n setTypeformId(company.companyUnion && company.companyUnion.typeformId)\n\n });\n }\n\n const [groups, setGroups] = useState(null);\n const getGroups = () => {\n ajaxCaller(\"Group/GetGroupsRet/\", {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"get\",\n }).then((response) => {\n console.log('GetGroups response');\n console.log(response);\n if (!response.isError) {\n if (response && response.length >= 1) {\n setGroups(response);\n getCompanyByGroupId(response && response[0].id)\n }\n else {\n console.log('no errors');\n setGroups([]);\n }\n }\n });\n };\n\n const [regions, setRegions] = useState(null);\n const getRegions = () => {\n ajaxCaller(\"Region/GetRegions\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((regions) => {\n if (regions.isError) {\n } else {\n setRegions(regions);\n }\n });\n };\n useEffect(() => {\n getRegions();\n }, []);\n\n const getGroupsCallback = () => {\n if (groups === null) {\n getGroups();\n }\n }\n useEffect(getGroupsCallback, [groups]);\n\n\n const removeGroup = (id) => {\n ajaxCaller(\"Group/Remove/\" + id, {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"delete\",\n }).then((response) => {\n if (!response.isError) {\n getGroups();\n } else {\n }\n });\n }\n\n const [appointmentsPercentage, setAppointmentsPercentage] = useState(\"\");\n const [averageClientValue, setAverageClientValue] = useState(\"\");\n const changeClientValues = (groupId) => {\n ajaxCaller(\"Group/ChangeClientValues/\" + groupId, {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"put\",\n body: JSON.stringify({\n appointmentsPercentage: appointmentsPercentage,\n averageClientValue: averageClientValue\n }),\n }).then((response) => {\n if (!response.isError) {\n getGroups();\n }\n else {\n }\n });\n }\n\n\n\n return (\n <>\n \n
\n
\n
\n
\n
\n
\n
Locations
\n
\n
\n {\n isKontakAdminHere && (
\n
\n
\n
\n
\n

\n Add a new location\n

\n
\n
\n
\n \n setNewGroupName(event.target.value)\n }\n className=\"form-style border-0 small-40\"\n placeholder=\"Name your location...\"\n autoComplete=\"off\"\n />\n
\n
\n
\n
\n \n setNewGroupLVCId(event.target.value)\n }\n className=\"form-style border-0 small-40\"\n placeholder=\"LivechatId for your location\"\n autoComplete=\"off\"\n />\n
\n
\n
\n
\n {regions && (\n ({ id: x.id, text: x.name }))\n }\n defaultValue={newGroupRegionId}\n options={{\n placeholder: \"Select a region\",\n theme: \"bootstrap4\",\n minimumResultsForSearch: -1,\n }}\n onChange={(event) =>\n setNewGroupRegionId(event.target.value)\n }\n />\n )}\n
\n
\n
\n createGroup()}\n className=\"btn btn-blue btn-width-80 btn-height-40 border-0 font-size-16\"\n >\n Add\n \n
\n
\n
\n
\n
)\n }\n\n
\n
\n
\n
\n
\n

\n Locations\n

\n
\n
\n {/* \n \n Export (CSV)\n */}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

\n Location name\n

\n
\n
\n {isKontakAdminHere && (
\n
\n

\n Typeform URL\n

\n
\n
)}\n
\n
\n

\n Region\n

\n
\n
\n
\n
\n

New appt. requests converted to appt.

\n
\n
\n
\n
\n

Average CLV

\n
\n
\n {/*
\t\n\t\t\t\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t\t\t\t\t\t

Client Value

\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
*/}\n
\n
\n
\n
\n {groups &&\n groups.map((group) => (\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n Client Value\n\t\t\t\t\t\t\t\t\t
\n
\n
\n
\n \n setAppointmentsPercentage(event.target.value)} className=\"form-style border-0 small-40\" placeholder=\"% of new appt. requests converted to appt...\" autoComplete=\"off\" value={appointmentsPercentage} />\n
\n
\n
\n
\n \n setAverageClientValue(event.target.value)} className=\"form-style border-0 small-40\" placeholder=\"Average client lifetime value (CLV)...\" autoComplete=\"off\" value={averageClientValue} />\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
Delete location
\n
\n
\n

\n You are about to delete a location:{\" \"}\n {group.name}\n

\n

\n Are you sure you wish to continue?\n

\n
\n
\n \n CANCEL\n \n removeGroup(group.id)}\n className=\"btn btn-red btn-width-130 btn-height-40 border-2 font-size-14 ml-1\"\n >\n DELETE\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n

\n {\n group.name + \n (Boolean(group.hasCalls) === true ? \" \" + \"\\u{1f4f1}\" : \"\") +\n (Boolean(group.hasLiveChats) === true ? \" \" + \"\\u{2328}\" : \"\") +\n (Boolean(group.isUncategorized) === true ? \" \" + \"\\u{2753}\": \"\")\n }\n

\n
\n
\n {isKontakAdminHere && (
\n
\n \n \n \n \n \n \n \n \n {/*

{\"https://profileskontak.typeform.com/to/\" + typeformId + \"#companykey=\" + companyKey + \"&groupkey=\" + group.groupKey}

*/}\n

{\"https://profileskontak.typeform.com/to/...\"}

\n\n
\n
)}\n
\n
\n

\n {regions && (() => {\n const region = regions.find((region) => region.id === group.regionId);\n return region ? region.name : \"Unassigned\";\n })()}\n

\n
\n
\n {/*
\t\n\t\t\t\t\t\t\t\t\t\t\t
\t\n\t\t\t\t\t\t\t\t\t\t\t\t

{group.appointmentsPercentage} % / {group.averageClientValue} $

\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
*/}\n
\n
\n

{group.appointmentsPercentage}%

\n
\n
\n
\n
\n

${group.averageClientValue}

\n
\n
\n
\n
\n Edit\n {isKontakAdminHere && (\n )}\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n
\n \n \n \n );\n};\n\nexport default Locations;\n","import React, { useEffect } from \"react\";\nimport FacilitiesPicker from \"../facilitiesPicker\";\nimport Select2 from \"react-select2-wrapper\";\nimport './EditUserModal.css';\n\nconst EditUserModal = ({\n isModalOpen,\n editUserName,\n editUserEmail,\n editUserId,\n editUserRoleId,\n origUserName,\n origUserRoleId,\n origGroupIds,\n groupIds,\n roles,\n setEditUserName,\n setEditUserRoleId,\n facilitiesChanged,\n setOrigGroupIds,\n inviteUserById,\n updateUser,\n setIsModalOpen,\n displayInvitationSentLabel,\n}) => {\n\n // New function to handle initial data from FacilitiesPicker\n const handleFacilitiesInit = (initialRegions) => {\n if (!initialRegions || !Array.isArray(initialRegions)) return;\n\n const initialGroupIds = initialRegions.flatMap(region =>\n region.groups\n .filter(group => group.checked)\n .map(group => group.id)\n );\n\n setOrigGroupIds(initialGroupIds);\n };\n\n useEffect(() => {\n if (\n editUserName &&\n editUserEmail &&\n editUserRoleId &&\n editUserId &&\n isModalOpen === false\n ) {\n setIsModalOpen(true);\n }\n }, [editUserName, editUserEmail, editUserRoleId, editUserId]);\n\n if (!isModalOpen) return null;\n\n const isUpdateDisabled =\n editUserName === origUserName\n && String(editUserRoleId) === String(origUserRoleId)\n && JSON.stringify(groupIds) === JSON.stringify(origGroupIds);\n\n return (\n
\n
\n
\n

Edit user

\n setIsModalOpen(false)}\n aria-label=\"Close\"\n >\n ×\n \n
\n
\n {/* Name Field */}\n
\n \n setEditUserName(e.target.value)}\n placeholder=\"User name...\"\n />\n
\n\n {/* Email Field */}\n
\n \n
\n \n \n i\n
\n
\n
\n {/* Locations Picker */}\n
\n \n
\n \n
\n\n
\n\n {/* Role Picker */}\n
\n \n
\n {roles && (\n ({ id: x.id, text: x.name }))}\n defaultValue={editUserRoleId}\n options={{\n placeholder: \"Select a role\",\n theme: \"bootstrap4\",\n minimumResultsForSearch: -1,\n }}\n onChange={(e) => setEditUserRoleId(e.target.value)}\n />\n )}\n
\n
\n\n {/* Password Reset Section */}\n
\n
\n \n
\n
\n

\n To reset the user’s password, click the link below. The user will\n receive an email with instructions on setting up a new password.\n

\n <>\n {displayInvitationSentLabel ? (\n
\n inviteUserById(editUserId, editUserEmail)}\n >\n Password Reset Instructions Sent!\n \n
\n ) : (\n
\n inviteUserById(editUserId, editUserEmail)}\n >\n Send Password Reset Instructions\n \n
\n )}\n \n
\n
\n\n {/* Actions */}\n
\n setIsModalOpen(false)}\n >\n Cancel\n \n \n Update\n \n
\n \n
\n \n );\n};\n\nexport default EditUserModal;","import React, { useState, useEffect } from \"react\";\nimport { ajaxCaller } from \"../ajaxCaller\";\nimport {\n getAccessToken,\n isKontakAdmin,\n getCurrentUserId,\n} from \"../authentification\";\nimport Select2 from \"react-select2-wrapper\";\nimport FacilitiesPicker from './components/facilitiesPicker';\nimport SettingsPageNavBar from \"./components/settingsPageNavBar\";\nimport $ from \"jquery\";\nimport ErrorModal from \"./components/errorModal\";\nimport EditUserModal from \"./components/EditUserModal/EditUserModal\";\n\nconst Team = (props) => {\n const [roles, setRoles] = useState(null);\n const [isKontakAdminHere] = useState(isKontakAdmin())\n const [errorMessage, setErrorMessage] = useState(null);\n const clearError = () => {\n setErrorMessage(\"\");\n };\n const getRoles = () => {\n clearError();\n ajaxCaller(\"Roles/GetRoles\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n if (isKontakAdminHere) {\n setRoles(response);\n }\n else {\n setRoles(\n response.filter(\n (role) => role.id !== 1\n )\n );\n }\n }\n clearRoleFields();\n });\n };\n\n useEffect(getRoles, []);\n\n const [users, setUsers] = useState(null);\n const getUsers = () => {\n clearError();\n ajaxCaller(\"User/GetUsers\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n if (isKontakAdminHere) {\n setUsers(\n response.users.filter(\n (user) => user.id !== getCurrentUserId()\n )\n );\n }\n else {\n setUsers(\n response.users.filter(\n (user) => user.roleId !== 1 && user.id !== getCurrentUserId()\n )\n );\n }\n }\n });\n };\n\n useEffect(getUsers, []);\n\n const getRole = (roleId) => {\n var role =\n roles && roles.find((x) => x.id.toString() === roleId.toString());\n\n if (role) {\n return role.name;\n }\n };\n\n const [origGroupIds, setOrigGroupIds] = useState(null);\n const [groupIds, setGroupIds] = useState(null);\n const facilitiesChanged = (regionFacilities) => {\n var newGroupIds = [];\n regionFacilities.forEach(region => {\n region.groups.forEach(group => {\n\n if (group.checked) {\n newGroupIds.push(group.id);\n }\n })\n });\n setGroupIds(newGroupIds);\n }\n\n\n const [userName, setUserName] = useState(\"\");\n const [userEmail, setUserEmail] = useState(\"\");\n const [selectedRoleId, setSelectedRoleId] = useState(null);\n\n const removeRole = (roleId) => {\n clearError();\n ajaxCaller(\"Roles/RemoveRole/\" + roleId, {\n method: \"delete\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n setRoles((prev) => [...prev].filter((a) => a.id !== roleId));\n }\n else {\n setErrorMessage(response.message)\n }\n });\n };\n\n const [privileges, setPrivileges] = useState([]);\n const getPrivileges = () => {\n clearError();\n ajaxCaller(\"Privilege/GetPrivileges\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((privileges) => {\n setPrivileges(\n privileges//.filter((a) => a.name !== \"ViewEditFacilityAndRegions\")\n );\n });\n };\n\n useEffect(getPrivileges, []);\n\n const [assignedPrivileges, setAssignedPrivileges] = useState([]);\n const getAssignPrivileges = (roleId) => {\n clearError();\n ajaxCaller(\"Roles/GetPrivilegesByRole/\" + roleId, {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n setAssignedPrivileges(response);\n }\n });\n };\n\n\n\n const privilegeClicked = (privilegeId, checked) => {\n let privs = assignedPrivileges && assignedPrivileges.map((a) => a);\n if (!privs) {\n return;\n }\n if (checked) {\n if (!privs.some((a) => a.id === privilegeId)) {\n privs = privs.concat({ id: privilegeId, name: privilegeId });\n }\n } else {\n privs = privs.filter((a) => a.id !== privilegeId);\n }\n\n setAssignedPrivileges(privs);\n };\n\n const savePrivileges = (roleId) => {\n clearError();\n ajaxCaller(\"Roles/AssignPrivilegesToRole\", {\n method: \"put\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n privilegeIds: assignedPrivileges.map((a) => a.id),\n roleId: roleId,\n }),\n }).then((response) => {\n if (!response.isError) {\n } else {\n setErrorMessage(response.message)\n }\n clearRoleFields();\n });\n };\n\n const [roleName, setRoleName] = useState(\"\");\n const clearRoleFields = () => {\n clearError();\n setAssignedPrivileges([]);\n setRoleName(\"\");\n }\n const createRole = () => {\n clearRoleFields();\n ajaxCaller(\"Roles/AddRole\", {\n method: \"post\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n name: roleName,\n privilegeIds: assignedPrivileges && assignedPrivileges.map((x) => x.id),\n }),\n }).then((response) => {\n if (!response.isError) {\n getRoles();\n }\n else {\n setErrorMessage(response.message)\n }\n });\n };\n\n const [editUserEmail, setEditUserEmail] = useState(\"\");\n const [editUserName, setEditUserName] = useState(\"\");\n const [editUserRoleId, setEditUserRoleId] = useState(\"\");\n const [editUserId, setEditUserId] = useState(\"\");\n const [displayInvitationSentLabel, setDisplayInvitationSentLabel] = useState(false);\n const [origUserName, setOrigUserName] = useState(\"\");\n const [origUserRoleId, setOrigUserRoleId] = useState(\"\");\n\n const [isModalOpen, setIsModalOpen] = useState(false);\n\n const updateUser = () => {\n setIsModalOpen(false);\n clearError();\n ajaxCaller(\"User/EditUser\", {\n method: \"put\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n id: editUserId,\n name: editUserName,\n email: editUserEmail,\n roleId: editUserRoleId,\n groupIds: groupIds\n }),\n }).then((response) => {\n if (!response.isError) {\n getUsers();\n }\n else {\n setErrorMessage(response.message)\n }\n });\n };\n\n const clearUserFields = () => {\n clearError();\n setSelectedRoleId(null);\n setUserName(\"\");\n setUserEmail(\"\");\n }\n\n const inviteUser = (forService, userEmail, userRoleId, userName, userId) => {\n clearError();\n ajaxCaller(`User/InviteUser?ForService=${forService}`, {\n method: \"post\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n id: userId,\n email: userEmail,\n roleId: userRoleId,\n name: userName,\n groupIds: groupIds\n }),\n }).then((response) => {\n if (!response.isError) {\n getUsers();\n clearUserFields();\n } else {\n setErrorMessage(response.message);\n }\n });\n };\n\n const inviteUserById = (userId, userEmail) => {\n\n ajaxCaller('User/InviteUserByEmail', { \n method: \"post\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n id: userId,\n email: userEmail\n }),\n }).then((response) => {\n if (!response.isError) {\n setDisplayInvitationSentLabel(true);\n function hideInvitationSentLabel() {\n setDisplayInvitationSentLabel(false);\n }\n setTimeout(hideInvitationSentLabel, 5000);\n }\n });\n };\n\n const cantSendInvite = () => {\n return selectedRoleId == null || userEmail === \"\" || userEmail === \" \" || userName === \"\" || userName === \" \" || userName == null || userEmail == null;\n }\n\n const removeUser = (userId) => {\n ajaxCaller(`User/Delete/${userId}`, {\n method: \"delete\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n getUsers();\n }\n });\n };\n\n const extractPrivileges = (roleId) => {\n\n var role = roles && roles.find(x => x.id === roleId);\n\n return role && role.privileges;\n }\n\n useEffect(() => {\n $('[data-toggle=\"tooltip\"]').tooltip();\n $('[data-toggle-second=\"tooltip\"]').tooltip();\n });\n\n\n const handleEditButtonClick = (user) => {\n setEditUserEmail(user.email);\n setEditUserName(user.name);\n setOrigUserName(user.name);\n setEditUserRoleId(user.roleId);\n setOrigUserRoleId(user.roleId);\n setEditUserId(user.id);\n\n setTimeout(() => {\n setIsModalOpen(true);\n }, 10);\n };\n\n return (\n <>\n <>\n \n
\n
\n
\n
\n \n
\n
\n
Create a New Role
\n
\n
\n
\n
\n

\n Role Name\n

\n
\n
\n
\n setRoleName(event.target.value)}\n className=\"form-style border-0 small-40\"\n placeholder=\"Enter role name...\"\n autoComplete=\"off\"\n />\n
\n
\n
\n
\n
\n

\n Privileges\n

\n
\n
\n
\n {privileges &&\n privileges.map((privilege) => (\n
\n \n privilegeClicked(\n privilege.id,\n event.target.checked\n )\n }\n id={\"privileges_\" + privilege.id}\n checked={\n assignedPrivileges &&\n assignedPrivileges.some(\n (a) => a.id === privilege.id\n )\n }\n />\n \n {privilege.notes}\n \n
\n ))}\n
\n
\n
\n
\n
\n setAssignedPrivileges([])}\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n className=\"btn btn-grey btn-width-130 btn-height-40 border-2 font-size-14 mr-1\"\n >\n CANCEL\n \n createRole()}\n className=\"btn btn-blue btn-width-130 btn-height-40 border-2 font-size-14 ml-1\"\n >\n SUBMIT\n \n
\n
\n
\n
\n
\n
\n \n \n\n \n \n
\n
\n
\n
\n
\n
\n
Team
\n
\n
\n
\n
\n
\n
Invite a team member
\n
\n
\n
\n
\n

\n Email address\n

\n
\n
\n
\n \n setUserEmail(event.target.value)\n }\n className=\"form-style border-0 small-40\"\n placeholder=\"Enter an email address here...\"\n autoComplete=\"off\"\n />\n
\n
\n
\n
\n
\n

Full Name

\n
\n
\n
\n \n setUserName(event.target.value)\n }\n className=\"form-style border-0 small-40\"\n placeholder=\"Enter a user name here...\"\n autoComplete=\"off\"\n />\n
\n
\n
\n
\n
\n

\n Assign to Location(s)\n

\n
\n\n \n
\n
\n
\n

Role

\n
\n
\n
\n {roles && (\n ({ id: x.id, text: x.name }))\n }\n defaultValue={selectedRoleId}\n options={{\n placeholder: \"Select a role\",\n theme: \"bootstrap4\",\n minimumResultsForSearch: -1,\n }}\n onChange={(event) =>\n setSelectedRoleId(event.target.value)\n }\n />\n )}\n
\n
\n
\n
\n
\n inviteUser(\"chat\", userEmail, selectedRoleId, userName)}\n className=\"btn btn-blue btn-width-130 btn-height-40 border-0 font-size-16\"\n >\n Send Chat Invite\n \n   or  \n inviteUser(\"kontakRetriever\", userEmail, selectedRoleId, userName)}\n className=\"btn btn-blue btn-width-130 btn-height-40 border-0 font-size-16\"\n >\n Send PetDesk Phones Invite\n \n
\n
\n
\n
\n
\n
\n
\n
\n
Roles
\n
\n
\n {roles &&\n roles.filter(role => role.id !== 1).map((role) => (\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n Change Privileges\n
\n
\n
\n
\n
\n
\n {privileges &&\n privileges.map((privilege) => (\n
\n \n privilegeClicked(\n privilege.id,\n event.target.checked\n )\n }\n id={\n \"privileges_\" + privilege.id\n }\n checked={\n assignedPrivileges &&\n assignedPrivileges.some(\n (a) =>\n a.id === privilege.id\n )\n }\n />\n \n {privilege.notes}\n \n
\n ))}\n
\n
\n
\n
\n
\n {\n setAssignedPrivileges([]);\n }}\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n className=\"btn btn-grey btn-width-130 btn-height-40 border-2 font-size-14 mr-1\"\n >\n CANCEL\n \n \n savePrivileges(role.id)\n }\n className=\"btn btn-blue btn-width-130 btn-height-40 border-2 font-size-14 ml-1\"\n >\n UPDATE\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
Delete role
\n
\n
\n

\n You are about to delete a role:{\" \"}\n {role.name}\n

\n

\n Are you sure you wish to continue?\n

\n
\n
\n \n CANCEL\n \n removeRole(role.id)}\n className=\"btn btn-red btn-width-130 btn-height-40 border-2 font-size-14 ml-1\"\n >\n DELETE\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

\n {role.name}\n

\n
\n
\n { clearRoleFields(); getAssignPrivileges(role.id) }}\n className=\"btn btn-blue btn-width-80 btn-height-36 border-0 font-size-14 mr-1\"\n >\n Change Privileges\n \n \n \"\"\n \n
\n
\n
\n ))}\n
\n
\n clearRoleFields()}\n className=\"btn btn-blue btn-width-130 btn-height-40 border-0 font-size-16\"\n >\n Create a New Role\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

\n Team members\n

\n
\n
\n \n \n Export (CSV)\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Name

\n
\n
\n
\n
\n

Email

\n
\n
\n
\n
\n

\n Locations\n

\n
\n
\n
\n
\n

Role

\n
\n
\n
\n
\n
\n\n \n
\n {users &&\n users.map((user) => (\n
\n \n
\n
\n
\n
\n
\n
\n
\n Delete user - {user.name}?\n
\n
\n
\n

\n You are about to delete a team member{\" \"}\n {user.name} ({user.email}).\n

\n

\n Are you sure you wish to continue?\n

\n
\n
\n \n CANCEL\n \n removeUser(user.id)}\n data-dismiss=\"modal\"\n className=\"btn btn-red btn-width-130 btn-height-40 border-2 font-size-14 ml-1\"\n >\n DELETE\n \n
\n
\n
\n
\n
\n
\n
\n\n \n
\n
\n
\n

{user.name}

\n
\n
\n
\n
\n

{user.email}

\n
\n
\n
\n
\n {user.roleId !== 1 ? (<>\n

\n Location(s)\n

\n \n ?\n
) : (

\n All Locations\n

)}\n
\n
\n
\n
\n

\n {getRole(user.roleId)}\n

\n \n ?\n
\n
\n
\n
\n
\n {(user.status === \"Created\") && (\n \n inviteUser(\n user.email,\n user.roleId,\n user.name,\n user.id\n )\n }\n >\n Resend Invite\n \n )}\n handleEditButtonClick(user)}\n className=\"btn btn-blue btn-width-80 btn-height-36 border-0 font-size-14 mr-1 mt-2 mt-xl-0\"\n >\n Edit\n \n \n \"\"\n \n
\n
\n
\n
\n
\n ))}\n \n \n \n \n \n \n \n );\n};\n\nexport default Team;","import React, { useEffect } from \"react\";\nimport \"./ChangePasswordModal.css\";\nimport { FaExclamationCircle } from \"react-icons/fa\";\n\nconst ChangePasswordModal = ({\n isModalOpen,\n featureFlags,\n oldPassword,\n newPassword,\n newPasswordConfirm,\n logMeOut,\n modalErrorMessageTitle,\n modalErrorMessage,\n modalMessage,\n setOldPassword,\n setNewPassword,\n setNewPasswordConfirm,\n setLogMeOut,\n resetFields,\n changePassword,\n setIsModalOpen,\n}) => {\n\n\n useEffect(() => {\n if (\n oldPassword &&\n newPassword &&\n newPasswordConfirm &&\n !isModalOpen\n ) {\n setIsModalOpen(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [oldPassword, newPassword, newPasswordConfirm]);\n\n if (!isModalOpen) return null;\n\n const isUpdateDisabled =\n newPassword !== newPasswordConfirm ||\n newPassword === \"\" ||\n newPassword.trim() === \"\";\n\n // Extracted components\n const ErrorMessages = ({ title, message }) => (\n <>\n
\n {title}\n
\n {message && (\n \n \n {message}\n \n )}\n \n );\n\n const WarningMessages = ({ title, message }) => (\n <>\n
\n {title}\n
\n {message && (\n \n \n {message}\n \n )}\n \n );\n\n const SuccessMessage = ({ message }) => (\n
\n {message}\n
\n );\n\n return (\n
\n
\n
\n

Change Password

\n {\n setIsModalOpen(false);\n resetFields();\n }}\n aria-label=\"Close\"\n >\n ×\n \n
\n
\n {/* Old Password Field */}\n
\n \n setOldPassword(e.target.value)}\n placeholder=\"Current Password\"\n />\n
\n\n {/* New Password Field */}\n
\n \n setNewPassword(e.target.value)}\n placeholder=\"New Password\"\n />\n
\n\n {/* Confirm New Password Field */}\n
\n \n setNewPasswordConfirm(e.target.value)}\n placeholder=\"Confirm Password\"\n />\n
\n\n {/*Messages */}\n <>\n {modalErrorMessageTitle ? (\n \n ) : (\n modalMessage && \n )}\n \n\n <>\n {(isUpdateDisabled && newPasswordConfirm) &&\n \n }\n \n\n {/* Log Me Out Check Box */}\n {featureFlags && (\n
\n
\n
\n setLogMeOut(!logMeOut)}\n />\n \n Sign out from all other accounts and devices.\n \n
\n
\n
\n )}\n\n {/* Actions */}\n
\n {\n setIsModalOpen(false);\n resetFields();\n }}\n >\n Cancel\n \n changePassword()}\n disabled={isUpdateDisabled}\n >\n Update\n \n
\n \n
\n
\n );\n};\n\nexport default ChangePasswordModal;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport { ajaxCaller } from \"../ajaxCaller\";\nimport {\n getAccessToken,\n getCurrentUserAvatar,\n getCurrentUserName,\n getCurrentUserEmail,\n getCurrentUserId,\n getCurrentUserRoleId,\n} from \"../authentification\";\nimport Cookies from \"js-cookie\";\nimport $ from \"jquery\";\nimport ErrorModal from \"./components/errorModal\";\nimport ChangePasswordModal from \"./components/ChangePassword/ChangePasswordModal\";\n// Helpers\nimport { handleFileUpload, saveToCookies } from \"./helpers/utils\";\nimport { IMAGE_VALID_EXTENSIONS, IMAGE_ACCEPT_EXTENSIONS, IMAGE_MAX_SIZE_BYTES } from \"./helpers/constants\";\nimport { FaCheckCircle } from 'react-icons/fa';\n\nconst UserProfile = (props) => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n\n const [roleId] = useState(getCurrentUserRoleId());\n const [userName, setUserName] = useState(getCurrentUserName());\n const [userEmail, setUserEmail] = useState(getCurrentUserEmail());\n const [avatar, setAvatar] = useState(getCurrentUserAvatar());\n const [errorMessage, setErrorMessage] = useState(\"\");\n const [errorTitle, setErrorTitle] = useState(\"\");\n const clearError = () => {\n setErrorMessage(\"\");\n setErrorTitle(\"\");\n }\n\n const [modalMessage, setModalMessage] = useState(\"\");\n const [notificationMessage, setNotificationMessage] = useState(\"\");\n const [modalErrorMessage, setModalErrorMessage] = useState(\"\");\n const [modalErrorMessageTitle, setModalErrorMessageTitle] = useState(\"\");\n const clearModalMessage = () => {\n setModalMessage(\"\");\n setModalErrorMessage(\"\");\n setModalErrorMessageTitle(\"\");\n setNotificationMessage(\"\");\n }\n\n const fileInputRef = useRef(null);\n const [roles, setRoles] = useState(null);\n const getRoles = () => {\n ajaxCaller(\"Roles/GetRoles\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n setRoles(response);\n }\n });\n };\n const getRole = (roleId) => {\n var role =\n roles && roles.find((x) => x.id.toString() === roleId.toString());\n\n if (role) {\n return role.name;\n }\n };\n useEffect(() => {\n clearError();\n getRoles();\n }, []);\n\n const getUser = () => {\n ajaxCaller(\"User/GetUser\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n setAvatar(response.avatar);\n }\n\n });\n };\n\n useEffect(() => {\n clearError();\n getUser();\n }, []);\n\n const uploadAvatar = (file) => {\n var data = new FormData();\n data.append(\"file\", file);\n // Make the AJAX call to upload the avatar\n ajaxCaller(\"User/UploadAvatar\", {\n method: \"post\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n }),\n body: data,\n }).then((response) => {\n if (!response.isError) {\n Cookies.set(\"user_avatar\", response.fileName);\n document.getElementById(\"nav-bar-avatar\").setAttribute(\"src\", \"https://kontakstorage.blob.core.windows.net/avatars/\" + response.fileName);\n setAvatar(response.fileName);\n } else {\n clearError();\n // Handle errors from the server (if applicable)\n setErrorMessage(response.message || \"Failed to upload avatar.\");\n // Reset the file input value\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\"; // Clear the file input\n }\n }\n });\n };\n\n const updateUser = () => {\n ajaxCaller(\"User/EditUser\", {\n method: \"put\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n id: getCurrentUserId(),\n name: userName,\n email: userEmail,\n roleId: roleId,\n }),\n }).then((response) => {\n if (!response.isError) {\n getUser();\n document.getElementById(\"nav-bar-userName\").textContent = response.name;\n Cookies.set(\"user_name\", response.name);\n Cookies.set(\"user_email\", response.email);\n }\n });\n };\n\n const validateEmail = (email) => {\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(email);\n };\n\n const extractPrivileges = (roleId) => {\n var role = roles && roles.find(x => x.id === roleId);\n return role && role.privileges;\n }\n\n useEffect(() => {\n $('[data-toggle=\"tooltip\"]').tooltip();\n $('[data-toggle-second=\"tooltip\"]').tooltip();\n });\n\n const [oldPassword, setOldPassword] = useState(null);\n const [newPassword, setNewPassword] = useState(null);\n const [newPasswordConfirm, setNewPasswordConfirm] = useState(null);\n const [logMeOut, setLogMeOut] = useState(false);\n\n const changePassword = () => {\n ajaxCaller(\"User/ChangePassword\", {\n method: \"put\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n oldPassword: oldPassword,\n newPassword: newPassword,\n logMeOut: logMeOut,\n }),\n })\n .then((response) => {\n if (response.isError) {\n // Handle errors early and exit\n clearModalMessage();\n setTimeout(() => {\n if (response.message === \"Invalid Password\") {\n setModalErrorMessageTitle(\"Current Password Incorrect!\");\n setModalErrorMessage(\n \"The current password you entered is incorrect!\\nPlease try again or reset your password if needed.\"\n );\n } else {\n setModalErrorMessageTitle(\"Password Update Failed\");\n setModalErrorMessage(\n \"Something went wrong while updating your password!\\nPlease try again or contact support if the issue continues.\"\n );\n }\n }, 0);\n return;\n }\n // Success flow\n saveToCookies(response);\n clearModalMessage();\n setModalMessage(\"Successful Password Update!\");\n\n setTimeout(() => {\n setIsModalOpen(false);\n setNotificationMessage(\n `Thank you for updating your password!${logMeOut\n ? \"\\nYou have been successfully logged out of all accounts and devices.\"\n : \"\"\n }`\n );\n\n setTimeout(() => {\n setNotificationMessage(\"\");\n resetFields();\n }, 5000);\n }, 1000);\n })\n .catch((error) => {\n setModalErrorMessageTitle(\"Unexpected Error\");\n setModalErrorMessage(\n \"An unexpected error occurred while updating your password. Please try again later.\"\n );\n });\n };\n\n\n const [featureFlags, setFeatureFlags] = useState();\n const getFeatureFlags = async (name, context) => {\n try {\n ajaxCaller(\"RolloutFeatureFlags/ToggleFlags\", {\n method: \"POST\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n name,\n context\n }),\n }).then((response) => {\n if (!response.isError) {\n setFeatureFlags(response.isEnabled);\n }\n else {\n setErrorMessage(`Failed to fetch feature flags ${response.message}`);\n }\n });\n } catch (error) {\n console.error('Failed to fetch feature flags:', error);\n }\n }\n\n const resetFields = () => {\n setOldPassword(\"\"); // Reset old password field\n setNewPassword(\"\"); // Reset new password field\n setNewPasswordConfirm(\"\"); // Reset confirm password field\n clearError();\n clearModalMessage()\n setLogMeOut(false); // Reset the checkbox\n };\n\n\n useEffect(() => {\n clearError();\n getFeatureFlags('EnableSessionInvalidation')\n }, []);\n\n return (\n <>\n {}\n
\n
\n
\n
\n
\n
\n
User Profile
\n
\n
\n
\n
\n
\n

Image

\n
\n
\n
\n
\n
\n \n
\n
\n
\n clearError()}\n ref={fileInputRef}\n onChange={(event) => handleFileUpload(\n event,\n uploadAvatar,\n setErrorMessage,\n clearError,\n IMAGE_VALID_EXTENSIONS,\n IMAGE_MAX_SIZE_BYTES,\n 1000, // Set custom max height\n 1000 // Set custom max width\n )}\n />\n Choose File\n
\n
\n
\n
\n
\n

\n \n Ideal dimensions are 200px x 200px.\n
\n Maximum file size is 1mb.\n
\n Valid extensions:{IMAGE_ACCEPT_EXTENSIONS}\n
\n

\n
\n
\n
\n
\n

Name

\n
\n
\n
\n setUserName(event.target.value)}\n value={userName}\n autoComplete=\"off\"\n />\n
\n
\n
\n
\n
\n

Email

\n
\n
\n
\n setUserEmail(event.target.value)}\n value={userEmail}\n autoComplete=\"off\"\n />\n
\n
\n
\n {/* Password Section */}\n
\n
\n

Password

\n
\n
\n

\n setIsModalOpen(true)}\n >\n Change your password\n \n

\n
\n
\n
\n
\n

Role

\n
\n
\n

\n {roleId > 1 ? getRole(roleId) : \"Super Admin\"}\n

\n
\n
\n {roles && (\n ?\n
)}\n
\n
\n
\n
\n updateUser()}\n disabled={(!validateEmail(userEmail) || userName == null || userName === \"\" || userName === \" \") || (getCurrentUserName() === userName && getCurrentUserEmail() === userEmail)}\n className=\"btn btn-blue btn-width-130 btn-height-40 border-0 font-size-16\"\n >\n Update\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n \n\n\n {/* Notification on underlying page */}\n {notificationMessage && (\n
\n \n {notificationMessage}\n
\n )}\n \n );\n};\n\n\nexport default UserProfile;\n","import React, { useState, useEffect } from \"react\";\r\nimport { ajaxCaller } from \"../ajaxCaller\";\r\nimport { getAccessToken } from \"../authentification\";\r\nimport Moment from \"react-moment\";\r\n\r\nconst Releases = () => {\r\n const [releases, setReleases] = useState(null);\r\n\r\n const getReleaseNotes = () => {\r\n ajaxCaller(\"Release\", {\r\n headers: new Headers({\r\n Authorization: \"Bearer \" + getAccessToken(),\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n }),\r\n method: \"get\",\r\n }).then((response) => {\r\n if (!response.isError) {\r\n setReleases(response);\r\n } else {\r\n }\r\n });\r\n };\r\n useEffect(() => {\r\n getReleaseNotes();\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Release Notes
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {releases &&\r\n releases.map((release) => (\r\n
\r\n \r\n \r\n {release.name} -{\" \"}\r\n \r\n \r\n
\r\n\r\n \r\n {release.releaseNotes &&\r\n release.releaseNotes.map((releaseNotes) => (\r\n
\r\n
\r\n \r\n Release features -{\" \"}\r\n {releaseNotes.notes}\r\n \r\n {releaseNotes.new && (<>\r\n

\r\n - New\r\n

\r\n

\r\n {releaseNotes.new}\r\n

\r\n )}\r\n\r\n {releaseNotes.improvements && (<>\r\n

\r\n - Improvements\r\n

\r\n

\r\n {releaseNotes.improvements}\r\n

\r\n )}\r\n\r\n {releaseNotes.fixes && (<>\r\n

\r\n - Fixes\r\n

\r\n

\r\n {releaseNotes.fixes}\r\n

\r\n )}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Releases;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { ajaxCaller } from \"../ajaxCaller\";\r\nimport { getAccessToken } from \"../authentification\";\r\nimport Moment from \"react-moment\";\r\nimport SettingsPageNavBar from \"./components/settingsPageNavBar\";\r\n\r\nconst Billing = () => {\r\n const [billings, setBillings] = useState(null);\r\n const getBillings = () => {\r\n ajaxCaller(\"Billing/GetAll\", {\r\n headers: new Headers({\r\n Authorization: \"Bearer \" + getAccessToken(),\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n }),\r\n method: \"get\",\r\n }).then((response) => {\r\n if (!response.isError) {\r\n setBillings(response);\r\n } else {\r\n }\r\n });\r\n };\r\n useEffect(() => {\r\n getBillings();\r\n }, []);\r\n\r\n return (\r\n <>\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Billing
\r\n
\r\n
\r\n
\r\n {/*
\r\n
\r\n
\r\n
\r\n

\r\n

\r\n
\r\n
\r\n \r\n \r\n Export (PDF)\r\n \r\n
\r\n
\r\n
\r\n
*/}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Invoice #\r\n

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

Date

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

\r\n Total Amount\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {billings &&\r\n billings.map((billing) => (\r\n
\r\n
\r\n
\r\n
\r\n

{billing.number}

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

\r\n {\" \"}\r\n \r\n

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

\r\n USD $ {billing.totalAmount.toFixed(2)}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n View Invoice\r\n \r\n \r\n \r\n Download PDF\r\n \r\n
\r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Billing;\r\n","import React, { useState, useEffect, useRef } from \"react\";\nimport { ajaxCaller } from \"../ajaxCaller\";\nimport { getAccessToken, getCurrentCompanyLogo } from \"../authentification\";\nimport Cookies from \"js-cookie\";\nimport SettingsPageNavBar from \"./components/settingsPageNavBar\";\nimport ErrorModal from \"./components/errorModal\";\nimport { CopyToClipboard } from \"react-copy-to-clipboard\";\n// Helpers\nimport { handleFileUpload } from \"./helpers/utils\";\nimport { IMAGE_VALID_EXTENSIONS, IMAGE_ACCEPT_EXTENSIONS, IMAGE_MAX_SIZE_BYTES } from \"./helpers/constants\";\n\nconst Company = () => {\n const [companyName, setCompanyName] = useState(\"\");\n const [companyLogo, setCompanyLogo] = useState(getCurrentCompanyLogo());\n const [companyId, setCompanyId] = useState(\"\");\n const [errorMessage, setErrorMessage] = useState(\"\");\n const [CompanyApiKey, setCompanyApiKey] = useState(\"\");\n const clearError = () => {\n setErrorMessage(\"\");\n }\n const fileInputRef = useRef(null);\n\n const getCompany = () => {\n clearError();\n ajaxCaller(\"Company/GetCurrentUserCompany/\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n setCompanyName(response.name);\n setCompanyLogo(response.logo);\n setCompanyId(response.id);\n setCompanyApiKey(response.apiKey)\n } else {\n setErrorMessage(response.message);\n }\n });\n };\n\n const generateApiKey = (id) => {\n clearError();\n ajaxCaller(\"Company/RecreateCompanyAPIKey/\" + id, {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"put\",\n }).then((response) => {\n if (!response.isError) {\n setCompanyApiKey(response)\n } else {\n setErrorMessage(response.message);\n }\n });\n }\n\n const getCOmpanyCallback = () => {\n getCompany();\n }\n useEffect(getCOmpanyCallback, []);\n\n const uploadLogo = (file) => {\n var data = new FormData();\n data.append(\"file\", file);\n ajaxCaller(\"Company/UploadImage\", {\n method: \"post\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n }),\n body: data,\n }).then((response) => {\n if (!response.isError) {\n Cookies.set(\"company_logo\", response.fileName);\n document\n .getElementById(\"company-logo\")\n .setAttribute(\n \"src\",\n \"https://kontakstorage.blob.core.windows.net/company-logos/\" +\n response.fileName\n );\n setCompanyLogo(response.fileName);\n }\n else {\n // Handle errors from the server (if applicable)\n setErrorMessage(response.message || \"Failed to upload avatar.\");\n // Reset the file input value\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\"; // Clear the file input\n }\n }\n });\n };\n\n return (\n <>\n \n \n
\n
\n
\n
\n
\n
\n
General Settings
\n
\n
\n
\n
\n
\n

Corporate name

\n
\n
\n
\n {companyName}\n
\n
\n
\n
\n
\n

\n Your corporate logo\n

\n
\n
\n
\n
\n
\n \n
\n
\n
\n clearError()}\n ref={fileInputRef}\n onChange={(event) => handleFileUpload(\n event,\n uploadLogo,\n setErrorMessage,\n clearError,\n IMAGE_VALID_EXTENSIONS,\n IMAGE_MAX_SIZE_BYTES,\n 100, // Set custom max height\n 250 // Set custom max width\n )}\n />\n Choose File\n
\n
\n
\n
\n
\n

\n \n Max dimensions are 100 height x 250 width.\n
\n Maximum file size is 1mb.\n
\n Valid extensions:{IMAGE_ACCEPT_EXTENSIONS}\n
\n

\n
\n
\n {/*
\n
\n saveChanges()}\n className=\"btn btn-blue btn-width-130 btn-height-40 border-0 font-size-16\"\n >\n Save\n \n
\n
*/}\n
\n
\n\n
\n
\n
\n\n
\n
\n
\n\n
\n
\n
\n
\n

Company APIKey

\n
\n\n
\n
\n \n {CompanyApiKey}\n\n \n \n \n \n \n \n \n \n \n
\n \n
\n
\n
\n
\n
\n
\n
Generate a new APIKey
\n
\n
\n

\n You are about to generate a new APIKey!\n

\n

\n This will affect the PetDesk Phones in PetDesk iFrame!\n

\n

\n Are you sure you want to continue?\n

\n
\n
\n \n CANCEL\n \n generateApiKey(companyId)}\n className=\"btn btn-red btn-width-130 btn-height-40 border-1 font-size-14 ml-1\"\n >\n GENERATE\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n \n \n );\n};\n\nexport default Company;\n","import React, {PureComponent} from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport 'ion-rangeslider/css/ion.rangeSlider.min.css'\r\nimport 'ion-rangeslider'\r\nimport $ from \"jquery\";\r\n\r\nclass CustomSlider extends PureComponent {\r\n static defaultProps = {\r\n type: 'single',\r\n skin: 'flat'\r\n }\r\n static propTypes = {\r\n /* Basic setup */\r\n type: PropTypes.string,\r\n min: PropTypes.number,\r\n max: PropTypes.number,\r\n from: PropTypes.number,\r\n to: PropTypes.number,\r\n\r\n /* Advanced setup */\r\n step: PropTypes.number,\r\n values: PropTypes.array,\r\n keyboard: PropTypes.bool,\r\n\r\n /* Grid setup */\r\n grid: PropTypes.bool,\r\n grid_margin: PropTypes.bool,\r\n grid_num: PropTypes.number,\r\n grid_snap: PropTypes.bool,\r\n\r\n /* Interval control */\r\n drag_interval: PropTypes.bool,\r\n min_interval: PropTypes.number,\r\n max_interval: PropTypes.number,\r\n\r\n /* Handles control */\r\n from_fixed: PropTypes.bool,\r\n from_min: PropTypes.number,\r\n from_max: PropTypes.number,\r\n from_shadow: PropTypes.bool,\r\n to_fixed: PropTypes.bool,\r\n to_min: PropTypes.number,\r\n to_max: PropTypes.number,\r\n to_shadow: PropTypes.bool,\r\n\r\n /* UI control */\r\n skin: PropTypes.string,\r\n hide_min_max: PropTypes.bool,\r\n hide_from_to: PropTypes.bool,\r\n force_edges: PropTypes.bool,\r\n extra_classes: PropTypes.string,\r\n block: PropTypes.bool,\r\n\r\n /* Prettify numbers */\r\n prettify_enabled: PropTypes.bool,\r\n prettify_separator: PropTypes.string,\r\n prettify: PropTypes.func,\r\n prefix: PropTypes.string,\r\n postfix: PropTypes.string,\r\n max_postfix: PropTypes.string,\r\n decorate_both: PropTypes.bool,\r\n value_separator: PropTypes.string,\r\n\r\n /* Data control */\r\n input_values_separator: PropTypes.string,\r\n disable: PropTypes.bool,\r\n\r\n /* Callbacks */\r\n scope: PropTypes.object,\r\n onStart: PropTypes.func,\r\n onChange: PropTypes.func,\r\n onFinish: PropTypes.func,\r\n onUpdate: PropTypes.func\r\n }\r\n\r\n constructor(props) {\r\n super(props)\r\n this.ref = React.createRef()\r\n }\r\n\r\n componentDidMount() {\r\n const props = this.props\r\n const options = (({style, className, key, id, ...others}) => ({...others}))(props)\r\n\r\n $(this.ref).ionRangeSlider(options)\r\n this.ionSliderRange = $(this.ref).data('ionRangeSlider')\r\n }\r\n\r\n update = (_options) => {\r\n const props = this.props\r\n const options = (({style, className, key, id, ...others}) => ({...others}))(props)\r\n this.ionSliderRange && this.ionSliderRange.update(_options || options)\r\n }\r\n\r\n render() {\r\n return (\r\n {\r\n this.ref = node\r\n }} />\r\n )\r\n }\r\n}\r\n\r\nCustomSlider.propTypes = {\r\n /* Basic setup */\r\n type: PropTypes.string,\r\n min: PropTypes.number,\r\n max: PropTypes.number,\r\n from: PropTypes.number,\r\n to: PropTypes.number,\r\n\r\n /* Advanced setup */\r\n step: PropTypes.number,\r\n values: PropTypes.array,\r\n keyboard: PropTypes.bool,\r\n\r\n /* Grid setup */\r\n grid: PropTypes.bool,\r\n grid_margin: PropTypes.bool,\r\n grid_num: PropTypes.number,\r\n grid_snap: PropTypes.bool,\r\n\r\n /* Interval control */\r\n drag_interval: PropTypes.bool,\r\n min_interval: PropTypes.number,\r\n max_interval: PropTypes.number,\r\n\r\n /* Handles control */\r\n from_fixed: PropTypes.bool,\r\n from_min: PropTypes.number,\r\n from_max: PropTypes.number,\r\n from_shadow: PropTypes.bool,\r\n to_fixed: PropTypes.bool,\r\n to_min: PropTypes.number,\r\n to_max: PropTypes.number,\r\n to_shadow: PropTypes.bool,\r\n\r\n /* UI control */\r\n skin: PropTypes.string,\r\n hide_min_max: PropTypes.bool,\r\n hide_from_to: PropTypes.bool,\r\n force_edges: PropTypes.bool,\r\n extra_classes: PropTypes.string,\r\n block: PropTypes.bool,\r\n\r\n /* Prettify numbers */\r\n prettify_enabled: PropTypes.bool,\r\n prettify_separator: PropTypes.string,\r\n prettify: PropTypes.func,\r\n prefix: PropTypes.string,\r\n postfix: PropTypes.string,\r\n max_postfix: PropTypes.string,\r\n decorate_both: PropTypes.bool,\r\n value_separator: PropTypes.string,\r\n\r\n /* Data control */\r\n input_values_separator: PropTypes.string,\r\n disable: PropTypes.bool,\r\n\r\n /* Callbacks */\r\n scope: PropTypes.object,\r\n onStart: PropTypes.func,\r\n onChange: PropTypes.func,\r\n onFinish: PropTypes.func,\r\n onUpdate: PropTypes.func\r\n}\r\n\r\nexport default CustomSlider\r\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst doNothing = () => {};\n\nconst TextInput = forwardRef(({\n label,\n value,\n onChange = doNothing,\n placeholder = \"\",\n disabled = false,\n autoComplete = true,\n children,\n onBlur,\n errorMsg\n}, ref) => (\n
\n
\n

{label}

\n
\n
\n
\n \n {children}\n
\n {\n errorMsg && (\n
\n \n
\n )\n }\n
\n
\n));\n\nTextInput.propTypes = {\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n onBlur: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.oneOf([undefined])\n ]),\n placeholder: PropTypes.string,\n disabled: PropTypes.bool,\n autoComplete: PropTypes.bool,\n errorMsg:PropTypes.string\n};\n\nexport default TextInput;\n","import React, { useState, useEffect, useRef, useCallback } from \"react\";\nimport { ajaxCaller } from \"../ajaxCaller\";\nimport { getAccessToken, isKontakAdmin } from \"../authentification\";\nimport Select2 from \"react-select2-wrapper\";\nimport CustomSlider from \"./components/customSlider\";\nimport moment from \"moment\";\nimport { PrivilegeChecker, Privileges } from \"../privilegeChecker\";\nimport { DIGITAIL_PIMS_TYPE_ID, SHEPHERD_PIMS_TYPE_ID, SHEPHERD_CLIENT_BASE_URL } from \"./helpers/constants\";\nimport TextInput from \"./components/TextInput\";\nimport { OverlayTrigger, Tooltip } from \"react-bootstrap\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faInfoCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { sortPimsTypeByLowercaseName, isValidBaseUrl, appendPimsPartnerIDToUrl } from \"./helpers/utils\";\n\n// Helpers\nimport { PIMS_DETAILS } from \"./helpers/constants\";\n\nimport { \n createLabelByPimsTypeID, \n deployFieldPIMSPartnerID,\n createPlaceholderToUrlBaseField,\n validateURLById,\n getClinicIDFromDigitail,\n} from \"./helpers/utils\";\n\nconst digitailId = PIMS_DETAILS.digitail.id;\n\n// Component\nconst EditLocation = (props) => {\n const [isLocationMatchError, setIsLocationMatchError] = useState(false);\n const [clinicsList, setClinicsList] = useState([]);\n const [regions, setRegions] = useState(null);\n const getRegions = () => {\n ajaxCaller(\"Region/GetRegions\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((regions) => {\n if (regions.isError) {\n } else {\n setRegions(regions);\n }\n });\n };\n useEffect(() => {\n if (regions == null) {\n getRegions();\n }\n }, [regions]);\n const [groupId, setGroupId] = useState('');\n const [facilityName, setFacilityName] = useState('');\n const [telephonyTypeID, setTelephonyTypeID] = useState('');\n const [containerID, setContainerID] = useState('');\n const [tenantID, setTenantID] = useState('');\n const [pimtypes, setPimtypes] = useState(null);\n const getPimtypes = () => {\n ajaxCaller(\"PIMSType/PIMSTypes\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((pimtypes) => {\n if (pimtypes.isError) {\n } else {\n setPimtypes(pimtypes);\n }\n });\n };\n useEffect(() => {\n if (pimtypes == null) {\n getPimtypes();\n }\n }, [pimtypes]);\n const [groupKey, setGroupKey] = useState('');\n const [pimsapiKey, setPIMSAPIKey] = useState('');\n const [pimsOrgID, setPIMSOrgID] = useState('');\n const [pimsPartnerID, setPIMSPartnerID] = useState('');\n const [outboundSmsNumber, setOutboundSmsNumber] = useState('');\n const [pimsClientBaseUrl, setPimsClientBaseUrl] = useState('');\n const [cloudRetrieverApiKey, setCloudRetrieverApiKey] = useState('');\n const [streetAddress, setStreetAddress] = useState('');\n const [addressLine, setAddressLine] = useState('');\n const [city, setCity] = useState('');\n const [zipCode, setZipCode] = useState('');\n const [regionId, setRegionId] = useState(1);\n const [stateId, setStateId] = useState('');\n const [timeZoneId, setTimeZoneId] = useState('');\n const [businessHours, setBusinessHours] = useState(null);\n const [averageClientValue, setAverageClientValue] = useState('');\n const [appointmentsPercentage, setAppointmentsPercentage] = useState('');\n const [pimsTypeID, setPIMSTypeID] = useState(1);\n const [mondayIsClosed, setMondayIsClosed] = useState(false);\n const [tuesdayIsClosed, setTuesdayIsClosed] = useState(false);\n const [wednesdayIsClosed, setWednesdayIsClosed] = useState(false);\n const [thursdayIsClosed, setThursdayIsClosed] = useState(false);\n const [fridayIsClosed, setFridayIsClosed] = useState(false);\n const [saturdayIsClosed, setSaturdayIsClosed] = useState(false);\n const [sundayIsClosed, setSundayIsClosed] = useState(false);\n const [hideCallRecordings, sethideCallRecordings] = useState(false);\n const [features, setFeature] = useState({\n useSmsFeature: false,\n useCalendarFeature: false\n });\n const [tokenId, setTokenId] = useState('');\n const [accessToken, setAccessToken] = useState('');\n const [serviceName, setServiceName] = useState('digitail');\n const [tokenType, setTokenType] = useState('Bearer');\n const [expiresIn, setExpiresIn] = useState(-1);\n const [refreshToken, setRefreshToken] = useState('');\n const [sameAsOutboundCID, setSameAsOutboundCID] = useState(false);\n const [outboundCallerID, setOutboundCallerID] = useState('');\n const getGroup = () => {\n ajaxCaller(\"Group/GetGroup/\" + props.match.params.groupId, {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"get\",\n }).then((response) => {\n if (!response.isError) {\n console.log('Group response');\n console.log(response);\n setGroupId(response.id);\n setFacilityName(response.name);\n setTelephonyTypeID(response.telephonyTypeID);\n setContainerID(response.containerID);\n setTenantID(response.tenantID);\n setPIMSTypeID(response.pimsTypeID == null ? -1 : response.pimsTypeID);\n setPIMSAPIKey(response.pimsapiKey);\n setPIMSOrgID(response.pimsOrgID);\n setPIMSPartnerID(response.pimsPartnerID);\n setOutboundSmsNumber(response.outboundSmsNumber);\n setPimsClientBaseUrl(response.pimsClientBaseUrl);\n setCloudRetrieverApiKey(response.cloudRetrieverApiKey);\n setStreetAddress(response.streetAddress);\n setCity(response.city);\n setZipCode(response.zipCode);\n setRegionId(response.regionId);\n setStateId(response.stateId);\n setGroupKey(response.groupKey);\n setTimeZoneId(response.timeZoneId);\n setAddressLine(response.addressLine);\n setAppointmentsPercentage(response.appointmentsPercentage);\n setAverageClientValue(response.averageClientValue);\n setMondayIsClosed(response.businessHours.mondayIsClosed);\n setTuesdayIsClosed(response.businessHours.tuesdayIsClosed);\n setWednesdayIsClosed(response.businessHours.wednesdayIsClosed);\n setThursdayIsClosed(response.businessHours.thursdayIsClosed);\n setFridayIsClosed(response.businessHours.fridayIsClosed);\n setSaturdayIsClosed(response.businessHours.saturdayIsClosed);\n setSundayIsClosed(response.businessHours.sundayIsClosed);\n sethideCallRecordings(response.hideCallRecordings);\n setFeature({\n useSmsFeature: response.useSmsFeature,\n useCalendarFeature: response.useCalendarFeature\n });\n setSameAsOutboundCID(response.sameAsOutboundCID)\n setOutboundCallerID(response.outboundCallerID);\n }\n });\n };\n\n const GetBusinessHours = () => {\n ajaxCaller(\"Group/GetBusinessHours/\" + props.match.params.groupId, {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"get\",\n }).then((response) => {\n if (!response.isError) {\n setBusinessHours(response);\n }\n });\n };\n\n const getGroupCallback = () => {\n getGroup();\n getToken();\n GetBusinessHours();\n };\n useEffect(getGroupCallback, []);\n\n const [states, setStates] = useState(null);\n const getStates = () => {\n ajaxCaller(\"States/GetStates\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((states) => {\n setStates(states);\n });\n };\n useEffect(() => {\n if (states == null) {\n getStates();\n }\n }, [states]);\n\n const [timeZones, setTimeZones] = useState(null);\n const getTimeZones = () => {\n ajaxCaller(\"TimeZone/GetAll\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n setTimeZones(response);\n });\n };\n useEffect(() => {\n if (timeZones == null) {\n getTimeZones();\n }\n }, [timeZones]);\n\n function extractTime(time) {\n return moment(time).format(\"hh:mm A\");\n }\n\n function toTime(time) {\n return moment(time, \"HH:mm:ss\").valueOf();\n }\n\n const fetchClinicsList = async () => {\n const response = await ajaxCaller(\"shepherd/clinics\", {\n method: 'post',\n body: JSON.stringify({ page: 1, rpp: 1000 }),\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n });\n setClinicsList(response?.item);\n return response?.item;\n };\n\n const compareFacilityNameToShepherdClinics = (facilityName, clinics) => {\n const clinicsWithMatchingName = clinics.filter(clinic => clinic.name.toLowerCase().includes(facilityName.toLowerCase().trim()));\n \n // set the pimsOrgId if there's only one clinic with a matching name\n if (clinicsWithMatchingName.length === 1) {\n setFacilityName(clinicsWithMatchingName[0]?.name) // autocomplete the facility name\n setPIMSOrgID(clinicsWithMatchingName[0]?.id);\n }\n\n // If we have more than one clinic with a matching name, we have to show an error with all the options\n return clinicsWithMatchingName.length === 1;\n }\n\n const checkLocationMutation = useMutation({\n mutationFn: () => fetchClinicsList()\n .then(shepherdClinics => compareFacilityNameToShepherdClinics(facilityName, shepherdClinics)),\n onSuccess: (isLocationNameCorrect) => {\n setIsLocationMatchError(!isLocationNameCorrect);\n },\n onError: () => {\n setIsLocationMatchError(false);\n }\n });\n \n const handlePimsTypeChange = (event) => {\n const selectedPimstypeId = Number(event.target.value);\n setPIMSTypeID(selectedPimstypeId);\n \n if (selectedPimstypeId === SHEPHERD_PIMS_TYPE_ID) { \n setPimsClientBaseUrl(SHEPHERD_CLIENT_BASE_URL);\n checkLocationMutation.mutate();\n }\n };\n\n const handleLocationNameBlur = () => {\n if (pimsTypeID === SHEPHERD_PIMS_TYPE_ID) {\n checkLocationMutation.mutate();\n }\n }\n\n const getToken = () => {\n ajaxCaller(\"OAuth2Token/GetOAuth2TokenAsync/\" + props.match.params.groupId + \"/\" + serviceName, {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"get\",\n }).then((response) => {\n if (!response.isError) {\n setTokenId(response.id);\n setAccessToken(response.accessToken);\n setServiceName(response.serviceName);\n setTokenType(response.tokenType);\n setExpiresIn(response.expiresIn);\n setRefreshToken(response.refreshToken);\n }\n }).catch(err => {\n setAccessToken(\"\");\n });\n };\n\n const updateToken = () => {\n ajaxCaller(\"OAuth2Token/UpdateOAuth2Token/\", {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"put\",\n body: JSON.stringify({\n id: tokenId,\n accessToken: accessToken,\n }),\n }).then((response) => {\n console.log({response});\n if (!response.isError) {\n }\n });\n };\n\n const createToken = () => {\n ajaxCaller(\"OAuth2Token/CreateOAuth2Token/\", {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"post\",\n body: JSON.stringify({\n groupId: groupId,\n serviceName: serviceName,\n tokenType: tokenType,\n expiresIn: expiresIn,\n accessToken: accessToken,\n refreshToken: refreshToken,\n }),\n }).then((response) => {\n console.log({response});\n if (!response.isError) {\n // window.location = \"/settings/locations\";\n }\n });\n };\n\n const updateGroup = () => {\n businessHours.mondayIsClosed = mondayIsClosed;\n businessHours.tuesdayIsClosed = tuesdayIsClosed;\n businessHours.wednesdayIsClosed = wednesdayIsClosed;\n businessHours.thursdayIsClosed = thursdayIsClosed;\n businessHours.fridayIsClosed = fridayIsClosed;\n businessHours.saturdayIsClosed = saturdayIsClosed;\n businessHours.sundayIsClosed = sundayIsClosed;\n ajaxCaller(\"Group/UpdateGroup/\", {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"put\",\n body: JSON.stringify({\n id: groupId,\n name: facilityName,\n telephonyTypeID: telephonyTypeID,\n containerID: containerID,\n tenantID: tenantID,\n pimsTypeID: pimsTypeID,\n pimsapiKey: pimsapiKey,\n pimsOrgID: pimsOrgID,\n pimsPartnerID: pimsPartnerID,\n outboundSmsNumber: sameAsOutboundCID ? outboundCallerID : outboundSmsNumber,\n pimsClientBaseUrl: pimsClientBaseUrl,\n cloudRetrieverApiKey: cloudRetrieverApiKey,\n useCalendarFeature: features.useCalendarFeature,\n useSmsFeature: features.useSmsFeature,\n regionId: regionId,\n stateId: stateId,\n streetAddress: streetAddress,\n addressLine: addressLine,\n city: city,\n zipCode: zipCode,\n businessHours: businessHours,\n timeZoneId: timeZoneId,\n averageClientValue: averageClientValue,\n appointmentsPercentage: appointmentsPercentage,\n hideCallRecordings: hideCallRecordings,\n sameAsOutboundCID: sameAsOutboundCID,\n outboundCallerID: outboundCallerID\n\n }),\n }).then((response) => {\n if (!response.isError) {\n window.location = \"/settings/locations\";\n }\n });\n };\n \n const clickHandler = event => {\n if (pimsTypeID === DIGITAIL_PIMS_TYPE_ID) {\n if (accessToken !== null && accessToken !== \"\") {\n if (tokenId === null || tokenId ==='') {\n createToken();\n }\n else {\n updateToken();\n }\n }\n }\n updateGroup();\n };\n\n const isShepherdSelected = pimsTypeID === SHEPHERD_PIMS_TYPE_ID;\n const isDigitailSelected = pimsTypeID === DIGITAIL_PIMS_TYPE_ID;\n const shouldRenderPimsApiKey = () => isKontakAdmin() && !isDigitailSelected && !isShepherdSelected;\n const shouldRenderPimsPartnerId = () => isKontakAdmin() && deployFieldPIMSPartnerID(pimsTypeID.toString());\n \n // Block Start: Function to dynamic fields ---------------------------------------------------------------------------------------------------------------------------------------------------- \n\n // Refs\n const urlBaseInputRef = useRef(null)\n const [errorURLBaseInput, setErrorURLBaseInput] = useState(\"\")\n const [errorPimsOrgId, setErrorPimsOrgId] = useState(\"\")\n\n /**\n * Handles the blur event to validate the URL and update the input field's style.\n *\n * Validates the URL using `validateURLById` when the input field loses focus. Updates the input's CSS class:\n * - Removes 'error' class if valid.\n * - Adds 'error' class if invalid.\n */\n\n const handleBlur = useCallback(() => {\n if (urlBaseInputRef.current) {\n if (pimsClientBaseUrl) {\n const isValid = validateURLById(pimsTypeID.toString(), pimsClientBaseUrl);\n \n if (isValid) {\n urlBaseInputRef.current.classList.remove('error');\n setErrorURLBaseInput(\"\");\n } else {\n const provetId = PIMS_DETAILS.provet.id;\n const errorMessage = pimsTypeID.toString() === provetId\n ? \"The URL does not meet the desired structure. Update the Provet Cloud ID to generate a new URL.\"\n : \"The URL does not meet the desired structure.\";\n \n urlBaseInputRef.current.classList.add('error');\n setErrorURLBaseInput(errorMessage);\n }\n } else {\n urlBaseInputRef.current.classList.remove('error');\n setErrorURLBaseInput(\"\");\n }\n }\n }, [pimsClientBaseUrl, pimsTypeID]);\n \n\n\n /**\n * Clears the base URL input field when the `pimsTypeID` changes.\n * This ensures the URL is reset and will be validated again when entered.\n */\n\n useEffect(() => {\n if( \n pimsTypeID.toString() !== PIMS_DETAILS.provet.id &&\n pimsTypeID.toString() !== PIMS_DETAILS.digitail.id\n ){\n setPimsClientBaseUrl(\"\")\n }\n\n if( \n pimsTypeID.toString() === PIMS_DETAILS.digitail.id\n ){\n setPimsClientBaseUrl(PIMS_DETAILS.digitail.urlBase.structureUrl)\n }\n\n\n if( \n pimsTypeID.toString() !== PIMS_DETAILS.digitail.id\n ){\n setAccessToken(\"\")\n setPIMSOrgID(\"\")\n }\n setErrorURLBaseInput(\"\");\n setErrorPimsOrgId(\"\");\n\n }, [pimsTypeID])\n\n\n /**\n * useEffect hook to update the `pimsClientBaseUrl` state based on the `pimsTypeID` and `pimsPartnerID` values.\n * \n * This effect checks if the `pimsTypeID` matches the Provet ID defined in `PIMS_DETAILS`.\n * If `pimsPartnerID` is provided, it constructs a new URL using `pimsPartnerID` and sets it to `pimsClientBaseUrl`.\n * If `pimsPartnerID` is not provided, it clears the `pimsClientBaseUrl`.\n * \n * Dependencies: `pimsPartnerID`, `pimsTypeID`\n */\n\n useEffect(() => {\n const provetId = PIMS_DETAILS.provet.id;\n \n if (pimsTypeID.toString() === provetId && pimsPartnerID) {\n const baseUrl = isValidBaseUrl(pimsClientBaseUrl) ? pimsClientBaseUrl : \"https://us.provetcloud.com/\";\n const updatedUrl = appendPimsPartnerIDToUrl(baseUrl, pimsPartnerID);\n setPimsClientBaseUrl(updatedUrl);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pimsPartnerID, pimsTypeID]);\n\n /**\n * useEffect hook to trigger the `handleBlur` function based on the `pimsClientBaseUrl` value.\n * \n * This effect checks if the `pimsTypeID` matches the Provet ID defined in `PIMS_DETAILS` and if `pimsPartnerID` is provided.\n * If both conditions are met, it calls the `handleBlur` function.\n * \n * Dependencies: `pimsClientBaseUrl`\n */\n\n useEffect(() => {\n console.log({pimsClientBaseUrl});\n const provetId = PIMS_DETAILS.provet.id;\n if (pimsTypeID.toString() === provetId && pimsPartnerID) {\n handleBlur()\n }\n }, [pimsClientBaseUrl, handleBlur, pimsPartnerID, pimsTypeID])\n\n const fetchClinicId = async () => {\n const kontakApiToken = getAccessToken();\n const response = await getClinicIDFromDigitail(kontakApiToken, accessToken);\n\n if (!response.isError && response.data) {\n const clinicId = response.data.clinicId;\n setPIMSOrgID(clinicId);\n setErrorPimsOrgId(\"\");\n } else {\n setErrorPimsOrgId(response.message);\n }\n };\n\n const handleOauth2Blur = () => {\n if (!accessToken && pimsTypeID.toString() === digitailId) {\n setPIMSOrgID(\"\");\n setErrorPimsOrgId(\"\");\n return\n }\n\n if (!accessToken || pimsOrgID || pimsTypeID.toString() !== digitailId) {\n return\n }\n\n fetchClinicId();\n }\n \n\n // Block End --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n\n return (\n
\n
\n
\n
\n
\n
\n \n \n back\n \n
\n
\n
Edit Locations
\n
\n
\n
\n
\n
\n
\n
\n

Location name

\n
\n
\n
\n \n setFacilityName(event.target.value)\n }\n onBlur={handleLocationNameBlur}\n placeholder=\"Name your location...\"\n autoComplete=\"off\"\n />\n
\n
\n {isShepherdSelected && isLocationMatchError && (\n
\n \n
    \n {clinicsList.map((clinic, index) => (\n
  • {clinic.name}
  • \n ))}\n
\n \n }\n >\n

\n \n Error matching location to Shepherd Clinics. Hover for suggestions.\n

\n \n
\n )}\n
\n \n {isKontakAdmin() && (\n
\n
\n

Telephony Type

\n
\n
\n
\n \n setTelephonyTypeID(event.target.value)\n }\n />\n
\n
\n
\n )}\n {isKontakAdmin() && setContainerID(event.target.value)} />}\n {isKontakAdmin() && setTenantID(event.target.value)} />}\n
\n
\n

\n PIMS Type\n

\n
\n
\n
\n {pimtypes && (\n ({ id: x.id, text: x.name }))\n }\n defaultValue={pimsTypeID ?? ''}\n options={{\n placeholder: \"Select a PIMS Type\",\n theme: \"bootstrap4\",\n minimumResultsForSearch: -1,\n }}\n onChange={handlePimsTypeChange}\n />\n )}\n
\n
\n
\n {shouldRenderPimsApiKey() && \n setPIMSAPIKey(event.target.value)} \n />}\n \n {isKontakAdmin() && pimsTypeID === DIGITAIL_PIMS_TYPE_ID && setAccessToken(event.target.value)} onBlur={handleOauth2Blur} />}\n {isKontakAdmin() && \n setPIMSOrgID(event.target.value)}\n errorMsg={errorPimsOrgId}\n />\n }\n \n {shouldRenderPimsPartnerId() && \n setPIMSPartnerID(event.target.value)}\n />\n }\n\n {isKontakAdmin() && (\n
\n
\n

Features

\n
\n
\n
\n \n console.log(event.target.value) ||\n setFeature({\n useSmsFeature: !!features.useSmsFeature,\n useCalendarFeature: !features.useCalendarFeature\n })\n }\n placeholder=\"PIMS Partner ID...\"\n autoComplete=\"off\"\n />\n \n
\n
\n \n setFeature({\n useCalendarFeature: !!features.useCalendarFeature,\n useSmsFeature: !features.useSmsFeature\n })\n }\n placeholder=\"PIMS Partner ID...\"\n autoComplete=\"off\"\n />\n \n
\n
\n {\n sethideCallRecordings(!hideCallRecordings);\n }}\n checked={hideCallRecordings ?? false}\n />\n \n
\n
\n
\n )}\n {isKontakAdmin() && (\n setOutboundCallerID(event.target.value)} placeholder=\"Default Outbound Caller ID...\" autoComplete={false} />\n )}\n {isKontakAdmin() && (\n <>\n
\n
\n

Default Outbound SMS number

\n
\n
\n
\n \n setOutboundSmsNumber(event.target.value)\n }\n placeholder=\"Default Outbound SMS number...\"\n autoComplete=\"off\"\n disabled={sameAsOutboundCID}\n />\n
\n
\n
\n
\n {\n setSameAsOutboundCID(!sameAsOutboundCID);\n outboundCallerID === outboundSmsNumber && sameAsOutboundCID === false ? setOutboundSmsNumber('') : setOutboundSmsNumber(outboundSmsNumber);\n }}\n checked={sameAsOutboundCID ?? false}\n disabled={outboundCallerID == null || outboundCallerID === ''}\n />\n \n
\n
\n
\n\n \n )}\n\n {isKontakAdmin() &&\n setPimsClientBaseUrl(event.target.value)}\n onBlur={handleBlur}\n ref={urlBaseInputRef}\n errorMsg={errorURLBaseInput}\n />\n }\n {isKontakAdmin() && setCloudRetrieverApiKey(event.target.value)} />}\n
\n
\n

\n Part of a region\n

\n
\n
\n
\n {regions && (\n ({ id: x.id, text: x.name }))\n }\n defaultValue={regionId ?? ''}\n options={{\n placeholder: \"Select a region\",\n theme: \"bootstrap4\",\n minimumResultsForSearch: -1,\n }}\n onChange={(event) =>\n setRegionId(event.target.value)\n }\n />\n )}\n
\n
\n
\n\n setStreetAddress(event.target.value)} />\n setAddressLine(event.target.value)} />\n setCity(event.target.value)} />\n setZipCode(event.target.value)} />\n\n
\n
\n

State

\n
\n
\n
\n {states && (\n ({ id: x.id, text: x.name }))\n }\n defaultValue={stateId ?? ''}\n options={{\n placeholder: \"Select state\",\n theme: \"bootstrap4\",\n minimumResultsForSearch: -1,\n }}\n onChange={(event) => setStateId(event.target.value)}\n />\n )}\n
\n
\n
\n
\n
\n

Timezone

\n
\n
\n
\n {timeZones && (\n ({\n id: x.id,\n text: x.timeZoneId,\n }))\n }\n defaultValue={timeZoneId ?? ''}\n options={{\n placeholder: \"Select state\",\n theme: \"bootstrap4\",\n minimumResultsForSearch: -1,\n }}\n onChange={(event) =>\n setTimeZoneId(event.target.value)\n }\n />\n )}\n
\n
\n
\n {businessHours &&\n PrivilegeChecker.hasPrivilege(\n Privileges.ViewEditWorkHours\n ) && (\n
\n
\n

\n Working hours\n

\n
\n
\n
\n
\n

\n Monday\n

\n {\n setMondayIsClosed(!mondayIsClosed);\n }}\n checked={mondayIsClosed}\n id=\"closed-1\"\n />\n \n Closed\n \n {\n businessHours.mondayOpen = moment(\n slider.from\n ).format(\"HH:mm:ss\");\n businessHours.mondayClose = moment(\n slider.to\n ).format(\"HH:mm:ss\");\n }}\n className={\"range-slider slider-1\"}\n hide_min_max={true}\n type={\"double\"}\n skin={\"flat\"}\n prettify={extractTime}\n step={1800000}\n min={toTime(\"00:00:00\")}\n max={toTime(\"23:59:59\")}\n />\n
\n
\n

\n Tuesday\n

\n {\n setTuesdayIsClosed(!tuesdayIsClosed);\n }}\n checked={tuesdayIsClosed}\n id=\"closed-2\"\n />\n \n Closed\n \n {\n businessHours.tuesdayOpen = moment(\n slider.from\n ).format(\"HH:mm:ss\");\n businessHours.tuesdayClose = moment(\n slider.to\n ).format(\"HH:mm:ss\");\n }}\n from={toTime(businessHours.tuesdayOpen)}\n to={toTime(businessHours.tuesdayClose)}\n className={\"range-slider slider-1\"}\n hide_min_max={true}\n type={\"double\"}\n skin={\"flat\"}\n prettify={extractTime}\n step={1800000}\n min={toTime(\"00:00:00\")}\n max={toTime(\"23:59:59\")}\n\n />\n
\n
\n

\n Wednesday\n

\n {\n setWednesdayIsClosed(!wednesdayIsClosed);\n }}\n checked={wednesdayIsClosed}\n id=\"closed-3\"\n />\n \n Closed\n \n {\n businessHours.wednesdayOpen = moment(\n slider.from\n ).format(\"HH:mm:ss\");\n businessHours.wednesdayClose = moment(\n slider.to\n ).format(\"HH:mm:ss\");\n }}\n from={toTime(businessHours.wednesdayOpen)}\n to={toTime(businessHours.wednesdayClose)}\n className={\"range-slider slider-1\"}\n hide_min_max={true}\n type={\"double\"}\n skin={\"flat\"}\n prettify={extractTime}\n step={1800000}\n min={toTime(\"00:00:00\")}\n max={toTime(\"23:59:59\")}\n\n />\n
\n
\n

\n Thursday\n

\n {\n setThursdayIsClosed(!thursdayIsClosed);\n }}\n checked={thursdayIsClosed}\n id=\"closed-4\"\n />\n \n Closed\n \n {\n businessHours.thursdayOpen = moment(\n slider.from\n ).format(\"HH:mm:ss\");\n businessHours.thursdayClose = moment(\n slider.to\n ).format(\"HH:mm:ss\");\n }}\n from={toTime(businessHours.thursdayOpen)}\n to={toTime(businessHours.thursdayClose)}\n className={\"range-slider slider-1\"}\n hide_min_max={true}\n type={\"double\"}\n skin={\"flat\"}\n prettify={extractTime}\n step={1800000}\n min={toTime(\"00:00:00\")}\n max={toTime(\"23:59:59\")}\n\n />\n
\n
\n

\n Friday\n

\n {\n setFridayIsClosed(!fridayIsClosed);\n }}\n checked={fridayIsClosed}\n id=\"closed-5\"\n />\n \n Closed\n \n \n
\n
\n

\n Saturday\n

\n {\n setSaturdayIsClosed(!saturdayIsClosed);\n }}\n checked={saturdayIsClosed}\n id=\"closed-6\"\n />\n \n Closed\n \n {\n businessHours.saturdayOpen = moment(\n slider.from\n ).format(\"HH:mm:ss\");\n businessHours.saturdayClose = moment(\n slider.to\n ).format(\"HH:mm:ss\");\n }}\n from={toTime(businessHours.saturdayOpen)}\n to={toTime(businessHours.saturdayClose)}\n className={\"range-slider slider-1\"}\n hide_min_max={true}\n type={\"double\"}\n skin={\"flat\"}\n prettify={extractTime}\n step={1800000}\n min={toTime(\"00:00:00\")}\n max={toTime(\"23:59:59\")}\n\n />\n
\n
\n

\n Sunday\n

\n {\n setSundayIsClosed(!sundayIsClosed);\n }}\n checked={sundayIsClosed}\n id=\"closed-7\"\n />\n \n Closed\n \n {\n businessHours.sundayOpen = moment(\n slider.from\n ).format(\"HH:mm:ss\");\n businessHours.sundayClose = moment(\n slider.to\n ).format(\"HH:mm:ss\");\n }}\n from={toTime(businessHours.sundayOpen)}\n to={toTime(businessHours.sundayClose)}\n className={\"range-slider slider-1\"}\n hide_min_max={true}\n type={\"double\"}\n skin={\"flat\"}\n prettify={extractTime}\n step={1800000}\n min={toTime(\"00:00:00\")}\n max={toTime(\"23:59:59\")}\n\n />\n
\n
\n
\n
\n )}\n {(isKontakAdmin() || PrivilegeChecker.hasPrivilege(Privileges.ViewEditClientValue)) && (<>\n setAppointmentsPercentage(event.target.value)} />\n setAverageClientValue(event.target.value)} />\n )}\n
\n
\n updateGroup()}\n onClick={clickHandler}\n className=\"btn btn-blue btn-width-130 btn-height-40 border-0 font-size-16\"\n >\n Save\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n );\n};\n\nexport default EditLocation;\n","import React, { useState, useEffect } from \"react\";\r\nimport { ajaxCaller, authHeaders } from \"../ajaxCaller\";\r\nimport Select2 from 'react-select2-wrapper';\r\nimport 'react-select2-wrapper/css/select2.css';\r\nimport { CopyToClipboard } from \"react-copy-to-clipboard\";\r\nimport SettingsPageNavBar from \"./components/settingsPageNavBar\";\r\n\r\n\r\nconst AdminPanel = (props) => {\r\n\r\n const [companies, setCompanies] = useState(null);\r\n const getAllCompanies = () => {\r\n ajaxCaller(\"Company/GetAllIncludeArchived/\", {\r\n headers: authHeaders,\r\n method: \"get\",\r\n }).then((response) => {\r\n if (!response.isError) {\r\n setCompanies(response);\r\n }\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n if (companies == null) {\r\n getAllCompanies();\r\n }\r\n });\r\n\r\n\r\n const [companyUnions, setCompanyUnions] = useState(null);\r\n const getCompanyUnions = () => {\r\n ajaxCaller(\"Company/GetCompanyUnions/\", {\r\n headers: authHeaders,\r\n method: \"get\",\r\n }).then((response) => {\r\n if (!response.isError) {\r\n setCompanyUnions(response);\r\n }\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n if (companyUnions == null) {\r\n getCompanyUnions();\r\n }\r\n });\r\n\r\n const getTypeformIdForCompany = (companyUnionId) => {\r\n if (companyUnionId === null || companyUnionId === undefined) {\r\n return \"oOwPWYIk\"\r\n } else {\r\n let companyUnion = companyUnions && companyUnions.find(x => x.id.toString() === companyUnionId.toString());\r\n if (companyUnion === null || companyUnion === undefined) {\r\n return \"\";\r\n } else {\r\n return companyUnion.typeformId;\r\n }\r\n }\r\n }\r\n\r\n const assignGroupToCompanyUnion = (groupId, companyUnionId) => {\r\n ajaxCaller(\"Group/AssignGroupToCompanyUnion/\", {\r\n headers: authHeaders,\r\n method: \"put\",\r\n body: JSON.stringify({\r\n groupId: groupId,\r\n companyUnionId: companyUnionId === \"-1\" ? null : companyUnionId,\r\n }),\r\n }).then((response) => {\r\n if (!response.isError) {\r\n getAllCompanies();\r\n }\r\n });\r\n }\r\n\r\n const [companyName, setCompanyName] = useState(\"\");\r\n const changeCompanyName = (companyId) => {\r\n ajaxCaller(\"Company/ChangeName/\" + companyId, {\r\n method: \"put\",\r\n headers: authHeaders,\r\n body: JSON.stringify({\r\n name: companyName,\r\n }),\r\n }).then((response) => {\r\n if (!response.isError) {\r\n getAllCompanies();\r\n }\r\n });\r\n };\r\n\r\n const createCpmpany = () => {\r\n ajaxCaller(\"Company/CreateCompany/\", {\r\n method: \"post\",\r\n headers: authHeaders,\r\n body: JSON.stringify({\r\n name: companyName,\r\n }),\r\n }).then((response) => {\r\n if (!response.isError) {\r\n getAllCompanies();\r\n }\r\n });\r\n };\r\n\r\n const [facilityName, setFacilityName] = useState(\"\");\r\n const [liveChatGroupId, setLiveChatGroupId] = useState(0);\r\n const [editableGroupId, setEditableGroupId] = useState(null);\r\n const changeGroupByKontakAdmin = () => {\r\n ajaxCaller(\"Group/ChangeGroupByKontakAdmin/\" + editableGroupId, {\r\n method: \"put\",\r\n headers: authHeaders,\r\n body: JSON.stringify({\r\n name: facilityName,\r\n liveChatGroupId: liveChatGroupId\r\n }),\r\n }).then((response) => {\r\n if (!response.isError) {\r\n getAllCompanies();\r\n }\r\n });\r\n };\r\n\r\n const [regions, setRegions] = useState(null);\r\n const getRegions = () => {\r\n ajaxCaller(\"Region/GetRegionsWithGroupCount\", {\r\n method: \"get\",\r\n headers: authHeaders,\r\n }).then((regions) => {\r\n if (regions.isError) {\r\n } else {\r\n setRegions(regions);\r\n }\r\n });\r\n };\r\n\r\n\r\n useEffect(() => {\r\n if (regions == null) {\r\n getRegions();\r\n }\r\n })\r\n\r\n const [newGroupRegionId, setNewGroupRegionId] = useState(\"\");\r\n const [newGroupName, setNewGroupName] = useState(\"\");\r\n const [newGroupLVCId, setNewGroupLVCId] = useState(\"\");\r\n const [newGroupCompanyId, setNewGroupCompanyId] = useState(\"\");\r\n const clearFields = () => {\r\n setNewGroupName(\"\");\r\n setNewGroupRegionId(null);\r\n setNewGroupLVCId(\"\");\r\n }\r\n const createGroup = () => {\r\n ajaxCaller(\"Group/InsertGroup\", {\r\n headers: authHeaders,\r\n method: \"post\",\r\n body: JSON.stringify({\r\n name: newGroupName,\r\n liveChatId: newGroupLVCId,\r\n regionId: newGroupRegionId,\r\n companyId: newGroupCompanyId\r\n }),\r\n }).then((response) => {\r\n if (!response.isError) {\r\n clearFields();\r\n getAllCompanies();\r\n } else {\r\n }\r\n });\r\n };\r\n\r\n const changeappointmentDirectEnabled = (groupId) => {\r\n ajaxCaller(\"Group/ChangeAppointmentDirectEnabled/\" + groupId, {\r\n headers: authHeaders,\r\n method: \"put\"\r\n }).then((response) => {\r\n if (!response.isError) {\r\n getAllCompanies();\r\n } else {\r\n }\r\n });\r\n }\r\n \r\n const switchArchiveState = (groupId) => {\r\n ajaxCaller(\"Group/SwitchArchiveState/\" + groupId, {\r\n headers: authHeaders,\r\n method: \"put\"\r\n }).then((response) => {\r\n if (!response.isError) {\r\n getAllCompanies();\r\n } else {\r\n }\r\n });\r\n }\r\n\r\n const switchAcceptsAppointmentRequests = (groupId) => {\r\n ajaxCaller(\"Group/SwitchAcceptsAppointmentRequests/\" + groupId, {\r\n headers: authHeaders,\r\n method: \"put\"\r\n }).then((response) => {\r\n if (!response.isError) {\r\n getAllCompanies();\r\n } else {\r\n }\r\n });\r\n }\r\n\r\n const changePawPassEnabled = (groupId) => {\r\n ajaxCaller(\"Group/ChangePawPassEnabled/\" + groupId, {\r\n headers: authHeaders,\r\n method: \"put\"\r\n }).then((response) => {\r\n if (!response.isError) {\r\n getAllCompanies();\r\n } else {\r\n }\r\n });\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Create Company\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Name:\r\n

\r\n
\r\n
\r\n
\r\n {\r\n setCompanyName(\r\n event.target.value\r\n );\r\n }}\r\n autoComplete=\"off\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n CANCEL\r\n \r\n \r\n createCpmpany()\r\n }\r\n >\r\n Create\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Add Location\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Name:\r\n

\r\n
\r\n
\r\n
\r\n setNewGroupName(\r\n event.target.value\r\n )}\r\n autoComplete=\"off\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n LVC Id:\r\n

\r\n
\r\n
\r\n
\r\n setNewGroupLVCId(\r\n event.target.value\r\n )}\r\n autoComplete=\"off\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Region:\r\n

\r\n
\r\n
\r\n
\r\n {regions && ( ({ id: x.id, text: x.name }))\r\n }\r\n defaultValue={newGroupRegionId}\r\n options={{\r\n placeholder: 'Select region',\r\n theme: 'bootstrap4',\r\n minimumResultsForSearch: -1\r\n }}\r\n onChange={(event) => {\r\n setNewGroupRegionId(event.target.value);\r\n }}\r\n />)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n CANCEL\r\n \r\n \r\n createGroup()\r\n }\r\n >\r\n CREATE\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Edit Facility Name\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Name:\r\n

\r\n
\r\n
\r\n
\r\n {\r\n setFacilityName(\r\n event.target.value\r\n );\r\n \r\n }}\r\n autoComplete=\"off\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n LiveChat ID:\r\n

\r\n
\r\n
\r\n
\r\n {\r\n setLiveChatGroupId(\r\n event.target.value\r\n );\r\n \r\n }}\r\n autoComplete=\"off\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n CANCEL\r\n \r\n \r\n changeGroupByKontakAdmin(editableGroupId)\r\n }\r\n >\r\n UPDATE\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Admin Panel
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \"\"\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Company name

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

Facility name

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

LiveChat ID

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

Typeform url

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

Client type

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

Inactive

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

Show in Appointment Direct

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

Accepts Appointment Requests

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

Show in Paw Pass

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {companies && companies.map(company => (\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Edit Company\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Name:\r\n

\r\n
\r\n
\r\n
\r\n {\r\n setCompanyName(\r\n event.target.value\r\n );\r\n }}\r\n autoComplete=\"off\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n CANCEL\r\n \r\n \r\n changeCompanyName(company.id)\r\n }\r\n >\r\n UPDATE\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n

{company.name}

\r\n setCompanyName(company.name)} className=\"btn btn-blue btn-box-36 border-0\">\r\n \"\"\r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n {company.groups && company.groups.length > 0 && (all locations)}\r\n

\r\n
\r\n {/* {company.groups && company.groups.length > 0 && ()} */}\r\n setNewGroupCompanyId(company.id)}\r\n data-target={\"#addFacility\"} /*style={{width:\"30px\", height:\"30px\"}}*/ style={{ marginRight: \"20px\" }} className=\"btn btn-blue btn-box-36 border-0\" data-offset=\"0 5\" data-placement=\"top\" title=\"Add Facility\">\r\n \"\"\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {/* 0 && company.groups[0].companyUnionId) + \"#companykey=\" + company.companyKey + \"&groupkey=\" + company.groups && company.groups.length > 0 && company.groups[0].groupKey\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

\r\n https://profileskontak.typeform.com/to/{getTypeformIdForCompany(company.groups && company.groups.length > 0 && company.groups[0].companyUnionId)}#companykey={company.companyKey}&groupkey={company.groups && company.groups.length > 0 && company.groups[0].groupKey}\r\n \r\n

*/}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n {/* ({ id: x.id, text: x.name }))\r\n }\r\n defaultValue={company.groups && company.groups.length > 0 && company.groups[0].companyUnionId}\r\n options={{\r\n placeholder: 'Select client type',\r\n theme: 'bootstrap4',\r\n minimumResultsForSearch: -1\r\n }}\r\n onChange={(event) => {\r\n if(!company.groups || company.groups.length < 1)\r\n {\r\n return;\r\n }\r\n assignGroupToCompanyUnion(company.groups[0].id, event.target.value);\r\n }}\r\n /> */}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n {company.groups && company.groups.map(group => (\r\n
\r\n \r\n
\r\n
\r\n
\r\n

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

{group.name}

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

{group.liveChatGroupId}

\r\n {!group.archived && ( { setLiveChatGroupId(group.liveChatGroupId); setEditableGroupId(group.id); setFacilityName(group.name); }} /*style={{width:\"30px\", height:\"30px\"}} */ className=\"btn btn-blue btn-box-36 border-0\">\r\n \"\"\r\n )}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {companyUnions && !group.archived && ( ({ id: x.id, text: x.name }))\r\n }\r\n defaultValue={group.companyUnionId}\r\n options={{\r\n placeholder: 'Select client type',\r\n theme: 'bootstrap4',\r\n minimumResultsForSearch: -1\r\n }}\r\n onChange={(event) => {\r\n assignGroupToCompanyUnion(group.id, event.target.value);\r\n }}\r\n />)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n switchArchiveState(group.id)\r\n }\r\n />\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {!group.archived && (
\r\n \r\n changeappointmentDirectEnabled(group.id)\r\n }\r\n />\r\n \r\n \r\n
)}\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {!group.archived && (
\r\n \r\n switchAcceptsAppointmentRequests(group.id)\r\n }\r\n />\r\n \r\n \r\n
)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {!group.archived && (
\r\n \r\n changePawPassEnabled(group.id)\r\n }\r\n />\r\n \r\n \r\n
)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n )\r\n}\r\n\r\nexport default AdminPanel;","import React, { useState, useEffect } from \"react\";\nimport \"../style.css\";\nimport { ajaxCaller } from \"../ajaxCaller\";\nimport 'react-select2-wrapper/css/select2.css';\n\nconst ActivationPage = (props) => {\n const [newPassword, setNewPassword] = useState(null);\n const [repeatPassword, setRepeatPassword] = useState(null);\n const [activationFailed, setActivationFailed] = useState(null);\n\n\n const [errorMessage, setErrorMessage] = useState(null);\n const [isСomplexPassword, setIsСomplexPassword] = useState(true);\n\n const validatePassword = () => {\n let regex = new RegExp(\"(^\\\\S*$)\");\n\n let isOk = regex.test(newPassword);\n\n if (\n isOk &&\n newPassword.length >= 6 &&\n newPassword.length <= 12\n ) {\n setIsСomplexPassword(true);\n return true;\n } else {\n setIsСomplexPassword(false);\n return false;\n }\n }\n\n const validateSecretKey = () => {\n const { secretKey } = props.match.params;\n\n ajaxCaller(\"User/ValidateSecretKey/\" + secretKey, {\n method: \"get\",\n headers: {\n \"Content-Type\": \"application/json\"\n }\n }).then(response => {\n if (response.isError) {\n setActivationFailed(true);\n setErrorMessage(response.message)\n } else {\n }\n });\n }\n\n const validateKeyCallback = () => {\n validateSecretKey()\n }\n\n useEffect(validateKeyCallback, [props])\n\n const userActivate = () => {\n const { secretKey } = props.match.params;\n if (validatePassword()) {\n ajaxCaller(\"User/PasswordConfirm\", {\n method: \"put\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n password: newPassword,\n secretKey: secretKey\n })\n }).then(response => {\n if (response.isError) {\n setActivationFailed(true);\n setErrorMessage(response.message);\n } else {\n setActivationFailed(false);\n window.location.href = \"/\";\n }\n });\n }\n }\n\n const submitAllowed = newPassword !== \"\" && newPassword === repeatPassword;\n return (\n
\n \n
\n
\n
\n
\n
\n
\n \"logo\"\n
\n
\n
\n Please type in your password\n
\n
\n {!isСomplexPassword && (\n
\n Password must meet or exceed these criteria: Between 6 and 12\n characters long,and without spaces\n
\n )}\n {activationFailed && (
{errorMessage}
)}\n
\n
\n \n {\n var key = event.which;\n if (key === 13 || key === 14) {\n\n }\n }}\n onChange={(event) => setNewPassword(event.target.value)}\n\n className=\"form-style\"\n placeholder=\"Your new password...\"\n autoComplete=\"off\"\n />\n
\n
\n
\n
\n \n {\n var key = event.which;\n if (key === 13 || key === 14) {\n\n }\n }}\n onChange={(event) => setRepeatPassword(event.target.value)}\n placeholder=\"Repeat your Password...\"\n autoComplete=\"off\"\n />\n
\n
\n
\n userActivate()}\n className=\"btn btn-blue btn-width-170 border-4\"\n >\n Save\n \n
\n
\n
\n
\n
\n
\n
\n \n );\n};\n\nexport default ActivationPage;\n","// NOTE: Don't forget to bind it before using: this.handleInputChange = this.handleInputChange.bind(this);\r\nexport function inputChange(event, callBack) {\r\n const target = event.target;\r\n const value = target.type === \"checkbox\" ? target.checked : target.value;\r\n const name = target.name;\r\n\r\n this.setState({\r\n [name]: value\r\n });\r\n\r\n if (callBack != null) {\r\n callBack();\r\n }\r\n }\r\n\r\n export function currentDateInUtcAsString() {\r\n var today = new Date();\r\n var dd = String(today.getDate()).padStart(2, '0');\r\n var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!\r\n var yyyy = today.getFullYear();\r\n \r\n var date = yyyy + '-' + mm + '-' + dd + \"T00:00:00Z\";\r\n\r\n return date;\r\n }\r\n\r\n export function firstDateOfCurrentMonth() {\r\n var today = new Date();\r\n var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!\r\n var yyyy = today.getFullYear();\r\n \r\n var date = yyyy + '-' + mm + '-01T00:00:00Z';\r\n\r\n return date;\r\n }","import React, { Component } from \"react\";\r\n\r\nexport default class Error extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n errorMessage : props.errorMessage\r\n };\r\n }\r\n \r\n render() {\r\n const errorMessage = this.state.errorMessage;\r\n return (\r\n
\r\n
\r\n {errorMessage}\r\n
\r\n
\r\n );\r\n }\r\n }\r\n ","import React, { Component } from \"react\";\nimport { inputChange } from \"../utilities\";\nimport { ajaxCaller, authHeaders } from \"../ajaxCaller\";\nimport InputMask from \"react-input-mask\";\nimport { debounce } from \"lodash\";\nimport Error from \"../pages/error\";\n\nclass AppointmentRequestsTypes {}\nAppointmentRequestsTypes.appointmentRequestsTypesForGroupWhichAcceptsThem = [{id:1, type:\"Immediate Attention Required - Follow Up ASAP\"}, {id:2, type:\"Appointment Request\"},{id:3, type:\"New Inquiry from PetDesk Phones\"}];\nAppointmentRequestsTypes.appointmentRequestsTypesForGroupWhichNotAcceptThem = [{id:3, type:\"New Inquiry from PetDesk Phones\"}];\n\nexport default class SendNewLead extends Component {\n constructor(props) { \n super(props);\n\n this.state = {\n liveChatThreadId: this.props.liveChatThreadId,\n selectedEmail: \"\",\n groups: this.props.groups,\n cityState: \"\",\n clientFirstName: \"\",\n clientLastName: \"\",\n contactNumber: \"\",\n emails: [],\n email: \"\",\n additionalInfo: \"\", \n selectedGroupId: this.props.selectedGroupId,\n leadType: \"New\",\n petsName: \"\",\n petsYear: 0,\n petsBreed: \"\",\n petsMonth: 0,\n company: null,\n petsWeek: 0,\n communicationMethod: \"Phone\",\n companyId: this.props.companyId,\n disablePhone: false,\n sendButtonDebounceChanges: false,\n appointmentRequestTypes: this.props.acceptsAppointmentRequests ? AppointmentRequestsTypes.appointmentRequestsTypesForGroupWhichAcceptsThem : AppointmentRequestsTypes.appointmentRequestsTypesForGroupWhichNotAcceptThem,\n selectedAppointmentRequestTypeId: 1,\n errorMessage: \"\",\n requestFailed: null,\n canBeSend: false \n };\n\n this.inputChange = inputChange.bind(this);\n }\n\n static getDerivedStateFromProps(props, state) {\n if (\n state.liveChatThreadId != null &&\n state.groups != null &&\n state.selectedGroupId != null\n ) {\n return {\n ...state,\n data:\n props.liveChatThreadId !== state.liveChatThreadId ||\n props.selectedGroupId !== state.selectedGroupId ||\n props.groups !== state.groups\n ? null\n : state.data,\n liveChatThreadId: props.liveChatThreadId,\n groups: props.groups,\n selectedGroupId: state.selectedGroupId,\n appointmentRequestTypes: props.acceptsAppointmentRequests ? AppointmentRequestsTypes.appointmentRequestsTypesForGroupWhichAcceptsThem : AppointmentRequestsTypes.appointmentRequestsTypesForGroupWhichNotAcceptThem,\n };\n } else {\n return {\n ...state,\n liveChatThreadId: props.liveChatThreadId,\n groups: props.groups,\n selectedGroupId: props.selectedGroupId,\n appointmentRequestTypes: props.acceptsAppointmentRequests ? AppointmentRequestsTypes.appointmentRequestsTypesForGroupWhichAcceptsThem : AppointmentRequestsTypes.appointmentRequestsTypesForGroupWhichNotAcceptThem,\n };\n }\n }\n\n clientTypeChange = (value) => {\n this.setState({\n leadType: value\n });\n };\n\n changeGroup = (event) => {\n const groupIdInDropDown = event.target.value;\n this.changeGroupInternal(groupIdInDropDown);\n };\n\n changeGroupInternal = (groupId) => {\n const groupsSelected = this.state.groups.filter(a => a.id.toString() === groupId.toString());\n let groupEmails = [];\n if (groupsSelected.length > 0) {\n groupEmails = groupsSelected[0].sendLeadsTo.split(',');\n }\n\n this.setState({\n selectedGroupId: groupId,\n emails: groupEmails\n });\n }\n\n methodOfCommunicationChange = (e) => {\n const { value } = e.target;\n this.setState({\n communicationMethod: value,\n });\n };\n\n getGroups = (companyId) => {\n if (companyId === -1) {\n this.setState({ groups: null });\n } else {\n ajaxCaller(\"Group/GetGroups/\" + companyId + \"?Simple=true\", {\n headers: authHeaders,\n method: \"get\",\n }).then((response) => {\n if (!response.isError) {\n console.log('getGroups called');\n this.setState({\n groups: response,\n });\n }\n });\n }\n };\n\n canBeSend = () =>{\n var canBeSend = \n (this.state.additionalInfo !== \"\" && this.state.additionalInfo != null)\n &&\n (this.state.appointmentRequestTypes !== \"\" && this.state.appointmentRequestTypes != null)\n &&\n (this.state.cityState !== \"\" && this.state.cityState != null )\n &&\n (this.state.clientFirstName !== \"\" && this.state.clientFirstName != null )\n &&\n (this.state.clientLastName !== \"\" && this.state.clientLastName != null)\n &&\n (this.state.communicationMethod !== \"\" && this.state.communicationMethod != null)\n &&\n (this.state.disablePhone === true ? true : (this.state.contactNumber !== \"\" && this.state.contactNumber != null))\n &&\n (this.state.email !== \"\" && this.state.email != null)\n &&\n (this.state.leadType !== \"\" && this.state.leadType != null)\n var selectedGroup = this.getSelectedGroup(this.state.selectedGroupId);\n if(selectedGroup && selectedGroup.companyUnionId !== 6 &&\n selectedGroup.companyUnionId !== 7 &&\n selectedGroup.companyUnionId !== 8 &&\n selectedGroup.companyUnionId !== 9 &&\n selectedGroup.companyUnionId !== 12)\n {\n return canBeSend && (this.state.petsBreed !== \"\" && this.state.petsBreed != null)\n &&\n (this.state.petsMonth !== \"\" && this.state.petsMonth != null)\n &&\n (this.state.petsName !== \"\" && this.state.petsName != null)\n &&\n (this.state.petsWeek !== \"\" && this.state.petsWeek != null)\n &&\n (this.state.petsYear !== \"\" && this.state.petsYear != null);\n }else{\n\n return canBeSend;\n }\n }\n\n getCompany = (companyId) => {\n ajaxCaller(\"Company/GetCompany/\" + companyId, {\n method: \"get\",\n }).then((response) => {\n if (!response.isError) {\n this.setState({\n company: response,\n });\n }\n });\n };\n\n disablePhoneChange = () => {\n this.setState({\n disablePhone: !this.state.disablePhone\n })\n }\n\n createLead = () => {\n if(!this.canBeSend())\n {\n this.setState({\n canBeSend: true\n })\n this.canBeSendChange();\n }else{\n this.setState({\n requestFailed: null\n })\n\n ajaxCaller(\"Lead\", {\n headers: authHeaders,\n method: \"post\",\n body: JSON.stringify({\n liveChatThreadId: this.state.liveChatThreadId,\n companyId: this.state.companyId,\n groupId: this.state.selectedGroupId,\n cityState: this.state.cityState,\n leadType: this.state.leadType,\n clientFirstName: this.state.clientFirstName,\n clientLastName: this.state.clientLastName,\n contactNumber: this.state.disablePhone === true ? null : this.state.contactNumber,\n email: this.state.email,\n additionalInfo: this.state.additionalInfo,\n petsYear: this.state.petsYear,\n petsMonth: this.state.petsMonth,\n petsName: this.state.petsName,\n petsBreed: this.state.petsBreed,\n petsWeek: this.state.petsWeek,\n communicationMethod: this.state.communicationMethod,\n appointmentRequestTypeId: this.state.selectedAppointmentRequestTypeId,\n sentToEmail: this.state.selectedEmail\n }),\n }).then((response) => {\n if (!response.isError) {\n this.props.onCancel();\n this.setState({\n groups: null,\n cityState: \"\",\n selectedEmail: null,\n clientFirstName: \"\",\n clientLastName: \"\",\n contactNumber: \"\",\n email: \"\",\n additionalInfo: \"\",\n petsName: \"\",\n petsYear: \"\",\n petsMonth: \"\",\n petsBreed: \"\",\n petsWeek: \"\",\n communicationMethod: \"Phone\",\n disablePhone: false,\n sendButtonDebounceChanges: true,\n errorMessage: \"\",\n requestFailed: null\n });\n\n this.sendColorDebounceChange();\n }else{\n this.setState({\n requestFailed: true,\n errorMessage: response.message\n });\n }\n });\n } \n };\n\n validatePertsYear = (value) => {\n this.setState({\n petsYear: value,\n });\n };\n\n validatePertsMonth = (value) => {\n this.setState({\n petsMonth: value,\n });\n };\n\n validatePertsWeek = (value) => {\n this.setState({\n petsWeek: value,\n });\n };\n\n sendColorDebounceChange = debounce(() => {\n this.setState({ sendButtonDebounceChanges: false });\n }, 2000);\n\n canBeSendChange = debounce(() => {\n this.setState({ canBeSend: false });\n }, 2000);\n\n cancelCreate = () => {\n this.setState({\n groups: null,\n selectedEmail: null,\n cityState: \"\",\n clientFirstName: \"\",\n clientLastName: \"\",\n contactNumber: \"\",\n email: \"\",\n additionalInfo: \"\",\n petsName: \"\",\n petsYear: \"\",\n petsMonth: \"\",\n petsBreed: \"\",\n petsWeek: \"\",\n disablePhone: false,\n communicationMethod: \"Phone\",\n errorMessage: \"\",\n reuqestFailed: null\n });\n };\n\n componentDidMount() {\n if (document.getElementsByClassName(\"App\").length > 0) {\n document\n .getElementsByClassName(\"App\")[0]\n .setAttribute(\"style\", \"background-color: white;\");\n }\n\n if (document.getElementsByClassName(\"d-flex\").length > 0) {\n document\n .getElementsByClassName(\"d-flex\")[0]\n .setAttribute(\"style\", \"padding: 0px; font-size: 14px;\");\n }\n\n if (document.getElementsByClassName(\"container-fluid\").length > 0) {\n document\n .getElementsByClassName(\"container-fluid\")[0]\n .setAttribute(\"style\", \"padding: 0px; margin: 5px; width: 100%;\");\n }\n\n this.getCompany(this.state.companyId);\n }\n\n getSelectedGroup = (selectedGroupId) => {\n return this.state.groups.find(x => x.id.toString() === selectedGroupId.toString());\n }\n\n render() {\n const {\n cityState,\n clientFirstName,\n clientLastName,\n contactNumber,\n email,\n additionalInfo,\n groups,\n selectedGroupId,\n petsYear,\n petsName,\n petsBreed,\n petsMonth,\n petsWeek,\n disablePhone,\n sendButtonDebounceChanges,\n selectedAppointmentRequestTypeId,\n appointmentRequestTypes,\n errorMessage,\n requestFailed,\n selectedEmail,\n emails,\n } = this.state;\n\n let emailsList = [];\n if (emails.length === 0 && this.state.groups != null && this.state.groups.length > 0)\n {\n const groupsSelected = this.state.groups.filter(a => a.id.toString() === this.state.selectedGroupId.toString());\n if (groupsSelected.length > 0) {\n emailsList = groupsSelected[0].sendLeadsTo.split(',');\n }\n else {\n emailsList = []\n } \n }\n else {\n emailsList = emails; \n } \n\n const selectedGroup = this.getSelectedGroup(selectedGroupId);\n return (\n \n \n \n \n
\n
\n
\n Send Lead To\n
\n
\n \n {groups &&\n groups.map((a) => )}\n \n
\n
\n
\n
\n
\n
\n Choose email\n
\n
\n \n \n {emailsList &&\n emailsList.map((email, index) => )}\n \n
\n
\n
\n
\n
\n Subject \n
\n
\n \n {appointmentRequestTypes &&\n appointmentRequestTypes.map((a) => )}\n \n
\n
\n
\n
\n
\n City, State:\n
\n
\n \n
\n
\n
\n
\n New or Existing: \n
\n
\n \n \n \n \n \n \n \n \n \n
\n \n \n
\n
\n
\n
\n
\n First Name:\n
\n
\n \n
\n
\n
\n
\n Last Name:\n
\n
\n \n
\n
\n
\n
\n Client Request\n
\n
\n \n
\n
\n {selectedGroup &&\n selectedGroup.companyUnionId !== 6 &&\n selectedGroup.companyUnionId !== 7 &&\n selectedGroup.companyUnionId !== 8 && (\n
\n
\n Pet`s Name\n
\n
\n \n
\n
\n )}\n\n\n {selectedGroup &&\n selectedGroup.companyUnionId !== 6 &&\n selectedGroup.companyUnionId !== 7 &&\n selectedGroup.companyUnionId !== 8 && (\n
\n
\n Pet`s Age\n
\n \n this.validatePertsYear(e.target.value)}\n >\n this.validatePertsMonth(e.target.value)}\n >\n this.validatePertsWeek(e.target.value)}\n >\n
\n
\n )}\n {selectedGroup &&\n selectedGroup.companyUnionId !== 6 &&\n selectedGroup.companyUnionId !== 7 &&\n selectedGroup.companyUnionId !== 8 && (\n
\n
\n Pet`s Breed\n
\n
\n \n
\n
\n )}\n\n
\n
\n Phone Number\n
\n \n
\n
\n {disablePhone === true ? (\n \n ) : (\n N/A\n )}\n \n
\n \n
\n
\n
\n Email Address\n
\n
\n \n
\n
\n
\n
\n Preferred Method of Communication\n
\n
\n \n \n \n \n \n \n \n \n \n
\n \n
\n \n
\n
\n
\n
\n {this.state.canBeSend && (\"*Error: All fields need to be populated before sending.\")}\n
\n \n {requestFailed && }\n \n \n \n
\n \n Clear\n \n {sendButtonDebounceChanges === false ? (\n \n Send\n \n ) : (\n \n Sent\n \n )}\n
\n \n \n \n );\n }\n}\n","import React, { Component } from \"react\";\r\nimport * as LiveChat from \"@livechat/agent-app-sdk\";\r\nimport { ajaxCaller } from \"../ajaxCaller\";\r\nimport Highlighter from \"react-highlight-words\";\r\nimport SendNewLead from \"./sendNewLead\";\r\nimport { inputChange } from \"../utilities\";\r\nimport { CopyToClipboard } from \"react-copy-to-clipboard\";\r\nimport ReactQuill from \"react-quill\";\r\n\r\nrequire(\"react-quill/dist/quill.snow.css\");\r\n\r\nexport default class KnowledgeBaseWidget extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n widget: null,\r\n categories: [],\r\n selectedCategoryId: null,\r\n searchKeyword: \"\",\r\n questionAnswers: null,\r\n allQuestionAnswers: null,\r\n isSearchingAll: false,\r\n groups: [],\r\n companyId: null,\r\n selectedGroupId: null,\r\n liveChatThreadId: null,\r\n isCompanyNotFound: false,\r\n currentLiveChatThreadId: null,\r\n widgetColor: \"ffffff\",\r\n acceptsAppointmentRequests: true,\r\n };\r\n\r\n this.inputChange = inputChange.bind(this);\r\n }\r\n\r\n getCategories = (groupId) => {\r\n if (groupId === -1) {\r\n this.setState({ categories: null, allQuestionAnswers: null });\r\n } else {\r\n ajaxCaller(\"QuestionCategory/Facility/\" + groupId, {\r\n method: \"get\",\r\n }).then((response) => {\r\n if (!response.isError) {\r\n this.setState({\r\n categories: response.categories,\r\n acceptsAppointmentRequests: response.acceptsAppointmentRequests\r\n });\r\n console.log('acceptsAppointmentRequests');\r\n console.log(response.acceptsAppointmentRequests);\r\n }\r\n });\r\n }\r\n };\r\n\r\n searchingQuestionAnswerByKeyword() {\r\n if (this.state.companyId === -1 || this.state.companyId === null) {\r\n } else {\r\n ajaxCaller(\r\n \"QuestionAnswer/SearchByKeyword/\" +\r\n this.state.selectedGroupId +\r\n \"/\" +\r\n this.state.searchKeyword,\r\n {\r\n method: \"get\",\r\n }\r\n ).then((response) => {\r\n if (!response.isError) {\r\n this.setState({\r\n questionAnswers: response,\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n handleKeyDownInput = (e) => {\r\n if (e.key === \"Enter\") {\r\n if (e.target.value.length > 0) {\r\n this.setState({ isSearchingAll: true });\r\n this.searchingQuestionAnswerByKeyword();\r\n } else if (this.state.selectedCategoryId === null) {\r\n this.backToAllSections();\r\n }\r\n }\r\n };\r\n\r\n onChangeInput = (e) => {\r\n this.setState({ searchKeyword: e.target.value });\r\n if (this.state.selectedCategoryId !== null) {\r\n this.setState({\r\n questionAnswers: this.state.allQuestionAnswers.filter((x) => {\r\n return (\r\n x.question.toLowerCase().includes(e.target.value.toLowerCase()) ||\r\n x.answer.toLowerCase().includes(e.target.value.toLowerCase())\r\n );\r\n }),\r\n });\r\n }\r\n };\r\n\r\n backToAllSections = () => {\r\n this.setState({\r\n selectedCategoryId: null,\r\n isSearchingAll: false,\r\n searchKeyword: \"\",\r\n questionAnswers: [],\r\n allQuestionAnswers: [],\r\n });\r\n };\r\n\r\n createHighlight = (inputText) => {\r\n if (this.state.searchKeyword) {\r\n let split = inputText\r\n .toLowerCase()\r\n .split(this.state.searchKeyword.toLowerCase());\r\n\r\n let outputText = \"\";\r\n\r\n for (let i = 0; i < split.length; i++) {\r\n if (i === split.length - 1) {\r\n outputText += split[i];\r\n } else {\r\n outputText += `${split[i]} ${this.state.searchKeyword}`;\r\n }\r\n }\r\n return outputText;\r\n } else {\r\n return inputText;\r\n }\r\n };\r\n\r\n componentDidMount() {\r\n const myObject = this;\r\n\r\n // // TEST DATA\r\n // const liveChatThreadId = \"RJ9CH3CEAY\"\r\n // ajaxCaller(\r\n // \"QuestionAnswer/GetCompanyIdByThread/\" + liveChatThreadId, // profile.chat.thread_id\r\n // {\r\n // method: \"get\",\r\n // }\r\n // ).then((response) => {\r\n // if (response.companyId != null && response.companyId > 0) {\r\n // myObject.getGroups(response.companyId);\r\n\r\n // myObject.setState({\r\n // companyId: response.companyId,\r\n // selectedGroupId: response.groupId,\r\n // liveChatThreadId: liveChatThreadId,\r\n // isCompanyNotFound: false,\r\n // widgetColor: response.widgetColor,\r\n // acceptsAppointmentRequests: response.acceptsAppointmentRequests\r\n // });\r\n // } else {\r\n // myObject.setState({ isCompanyNotFound: true });\r\n // }\r\n // });\r\n\r\n // REAL DATA\r\n LiveChat.createDetailsWidget().then(function (widget) {\r\n myObject.setState({ widget });\r\n\r\n widget.on(\"customer_profile\", (profile) => {\r\n if (profile.chat.thread_id != null) {\r\n if(profile.chat.thread_id !== myObject.state.currentLiveChatThreadId) {\r\n myObject.backToAllSections();\r\n }\r\n\r\n ajaxCaller(\r\n \"QuestionAnswer/GetCompanyIdByThread/\" + profile.chat.thread_id,\r\n {\r\n method: \"get\",\r\n }\r\n ).then((response) => {\r\n if (response.companyId != null && response.companyId > 0) {\r\n myObject.setState({\r\n companyId: response.companyId,\r\n selectedGroupId: response.groupId,\r\n liveChatThreadId: profile.chat.thread_id,\r\n currentLiveChatThreadId: profile.chat.thread_id,\r\n isCompanyNotFound: false,\r\n widgetColor: response.widgetColor,\r\n acceptsAppointmentRequests: response.acceptsAppointmentRequests\r\n });\r\n\r\n myObject.getGroups(response.companyId);\r\n } else {\r\n myObject.setState({ isCompanyNotFound: true });\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n addClick = () => {\r\n ajaxCaller(\"QuestionCategory/AddClick\", {\r\n method: \"post\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n categoryId: this.state.selectedCategoryId,\r\n liveChatThreadId: this.state.liveChatThreadId,\r\n }),\r\n }).then((response) => {\r\n if (!response.isError) {\r\n this.setState({ copied: true });\r\n }\r\n });\r\n };\r\n\r\n getQuestionAnswersByCategory = (categoryId) => {\r\n this.setState({ selectedCategoryId: categoryId });\r\n ajaxCaller(\"QuestionAnswer/Category/\" + categoryId, {\r\n method: \"get\",\r\n }).then((response) => {\r\n if (!response.isError) {\r\n this.setState({\r\n questionAnswers: response,\r\n allQuestionAnswers: response,\r\n });\r\n }\r\n });\r\n };\r\n\r\n getGroups = (companyId) => {\r\n ajaxCaller(\"Group/GetGroups/\" + companyId + \"?Simple=true\", {\r\n method: \"get\",\r\n headers: this.authHeaders,\r\n }).then((groups) => {\r\n this.setState({\r\n groups: groups,\r\n });\r\n\r\n this.getCategories(this.state.selectedGroupId);\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n categories,\r\n selectedCategoryId,\r\n questionAnswers,\r\n searchKeyword,\r\n isSearchingAll,\r\n groups,\r\n } = this.state;\r\n\r\n\r\n return (\r\n
\r\n <>\r\n {this.state.isCompanyNotFound && (\r\n
\r\n Company not found\r\n
\r\n )}\r\n
\r\n
\r\n {this.state.selectedGroupId && (\r\n \r\n this.inputChange(e, () => {\r\n this.getCategories(e.target.value);\r\n this.backToAllSections();\r\n })\r\n }\r\n >\r\n {groups &&\r\n groups.map((a) => )}\r\n \r\n )}\r\n
\r\n
\r\n this.onChangeInput(e)}\r\n value={searchKeyword}\r\n onKeyDown={this.handleKeyDownInput}\r\n placeholder=\"Search\"\r\n >\r\n\r\n {selectedCategoryId == null &&\r\n isSearchingAll === false &&\r\n categories &&\r\n categories.map((a) => (\r\n
\r\n this.getQuestionAnswersByCategory(a.id)}\r\n >\r\n {a.name}\r\n \r\n
\r\n
\r\n ))}\r\n\r\n {(selectedCategoryId != null || isSearchingAll) && (\r\n
\r\n Back to all sections\r\n
\r\n )}\r\n\r\n {(selectedCategoryId != null || isSearchingAll) &&\r\n questionAnswers &&\r\n questionAnswers.map((a) => (\r\n \r\n
\r\n {!a.isPending && (\r\n <>\r\n {isSearchingAll && (\r\n <>\r\n \r\n {a.categoryName}\r\n \r\n
\r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {a.answer && a.answer.length > 1 && (\r\n this.addClick()}\r\n >\r\n \r\n \r\n )}\r\n \r\n \r\n )}\r\n
\r\n
\r\n ))}\r\n {this.state.selectedGroupId && (\r\n {\r\n this.setState({ isCreateNewLead: false });\r\n }}\r\n >\r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { useState, useEffect } from \"react\";\nimport { ajaxCaller } from \"../ajaxCaller\";\nimport { getAccessToken } from \"../authentification\";\nimport SettingsPageNavBar from \"./components/settingsPageNavBar\";\n\nconst KontakConfig = () => {\n const [threadsUpdaterStatisticEmailsLine, setThreadsUpdaterStatisticEmailsLine] = useState(null);\n const [threadsUpdaterStatisticEmails, setThreadsUpdaterStatisticEmails] = useState(null);\n\n const [nonReportingDaysForEmailNotification, setNonReportingDaysForEmailNotification] = useState(null);\n const [kontakConfig, setKontakConfig] = useState(null);\n\n const getKontakConfig = () => {\n ajaxCaller(\"KontakConfig\", {\n method: \"get\",\n headers: new Headers({\n \"Access-Control-Allow-Headers\": \"Authorization, Accept\",\n \"Access-Control-Allow-Methods\": \"GET\",\n \"Access-Control-Allow-Credentials\": \"true\",\n \"Access-Control-Allow-Origin\": \"*\",\n \"Authorization\": \"Bearer \" + getAccessToken(),\n \"Accept\": \"*/*\"\n }),\n }).then((response) => {\n if (!response.isError) {\n setThreadsUpdaterStatisticEmails(\n response.threadsUpdaterStatisticEmails == null || response.threadsUpdaterStatisticEmails === \"\"\n ? []\n : response.threadsUpdaterStatisticEmails.split(\",\")\n );\n setKontakConfig(response);\n setNonReportingDaysForEmailNotification(response.nonReportingDaysForEmailNotification);\n \n }\n else{}\n });\n };\n\n const validateEmail = (email) => {\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(email);\n };\n \n const saveEmailsChanges = (threadsUpdaterStatisticEmail) => {\n\n let threadsUpdaterStatisticEmailLine = \"\";\n\n threadsUpdaterStatisticEmail.forEach((email) => {\n if (email.length > 1) {\n threadsUpdaterStatisticEmailLine = email + \",\" + threadsUpdaterStatisticEmailLine;\n }\n });\n\n threadsUpdaterStatisticEmailLine = threadsUpdaterStatisticEmailLine.slice(0, -1);\n\n setThreadsUpdaterStatisticEmailsLine(threadsUpdaterStatisticEmailLine);\n };\n\n const removeEmail = (index) => {\n var newLeadsEmails = [...threadsUpdaterStatisticEmails];\n newLeadsEmails.splice(index, 1);\n setThreadsUpdaterStatisticEmails(newLeadsEmails);\n saveEmailsChanges(newLeadsEmails);\n };\n\n const addEmail = (event) => {\n if (\n event.target.value === \"\" ||\n event.target.value.length < 2 ||\n !validateEmail(event.target.value)\n ) {\n return;\n }\n var key = event.which;\n if (key === 13 || key === 14) {\n console.log(\"qweqwe\")\n var newLeadsEmails = [...threadsUpdaterStatisticEmails];\n newLeadsEmails.push(event.target.value);\n\n setThreadsUpdaterStatisticEmails(newLeadsEmails);\n saveEmailsChanges(newLeadsEmails);\n event.target.value = \"\";\n }\n };\n\n const updateConfig = () => {\n ajaxCaller(\"KontakConfig/Update\", {\n method: \"put\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n body: JSON.stringify({\n id: kontakConfig.id,\n nonReportingDaysForEmailNotification: nonReportingDaysForEmailNotification,\n threadsUpdaterStatisticEmails: threadsUpdaterStatisticEmailsLine\n })\n }).then((response) => {\n if (!response.isError) {\n getKontakConfig();\n\n setNonReportingDaysForEmailNotification(response.nonReportingDaysForEmailNotification);\n setThreadsUpdaterStatisticEmails(\n response.threadsUpdaterStatisticEmails == null || response.threadsUpdaterStatisticEmails === \"\"\n ? []\n : response.threadsUpdaterStatisticEmails.split(\",\")\n );\n }\n });\n };\n\n useEffect(() => {\n getKontakConfig()\n }, []);\n\n return (\n <>\n \n
\n
\n
\n
\n
\n
\n
\n
\n
PetDesk Configuration
\n
\n
\n
\n
\n

\n Number of days with zero chats\n

\n
\n
\n
\n \n setNonReportingDaysForEmailNotification(event.target.value)\n }\n className=\"form-style border-0 small-40\"\n placeholder=\"Days...\"\n autoComplete=\"off\"\n />\n\n
\n\n
\n\n
\n\n
\n\n
\n
\n
\n

Contacts for Daily Import stats:

\n
\n
\n
\n
\n
\n {threadsUpdaterStatisticEmails &&\n threadsUpdaterStatisticEmails.map((email, index) => (\n \n \n removeEmail(index)\n }\n >\n ×\n \n {email}\n \n ))}\n \n \n addEmail(event)\n }\n placeholder=\"Type an email address and press ENTER...\"\n />\n \n
\n
\n
\n
\n
\n
\n updateConfig()}\n className=\"btn btn-blue btn-width-80 btn-height-40 border-0 font-size-16\"\n >\n Save\n \n
\n
\n\n
\n
\n
\n
\n
\n
\n \n )\n}\n\nexport default KontakConfig;","import React, { useState, useEffect } from \"react\";\nimport { ajaxCaller } from \"../ajaxCaller\";\nimport { getAccessToken, isKontakAdmin, getCurrentCompanyId } from \"../authentification\";\nimport { CopyToClipboard } from \"react-copy-to-clipboard\";\nimport SettingsPageNavBar from \"./components/settingsPageNavBar\";\nimport ErrorModal from './components/errorModal';\n\nconst KontakDni = (props) => {\n const [newDniUrlName, setNewDniName] = useState(\"\");\n const [newDniUrl, setNewDniUrl] = useState(\"\");\n const [isKontakAdminHere] = useState(isKontakAdmin());\n const [currentCompanyId] = useState(getCurrentCompanyId());\n\n const [isLinkVisible, setIsLinkVisible] = useState(false);\n\n const clearFields = () => {\n setNewDniName(\"\");\n setNewDniUrl(\"\");\n }\n\n const [errorMessage, setErrorMessage] = useState(null);\n\n const clearError = () => {\n setErrorMessage(\"\");\n };\n\n const createDniUrl = () => {\n clearError();\n const createGroupJson = {\n companyid: currentCompanyId,\n name: newDniUrlName,\n url: newDniUrl,\n\n };\n\n ajaxCaller(\"DniUrl/\", {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"post\",\n body: JSON.stringify(createGroupJson),\n }).then((response) => {\n if (!response.isError) {\n clearFields();\n //setDniUrls((prev) => [...prev].concat(response));\n window.location = \"/settings/kontakDni\";\n } else {\n console.log(response);\n setErrorMessage(response.message);\n }\n });\n };\n\n const [dniurls, setDniUrls] = useState(null);\n\n const getDniUrls = () => {\n clearError();\n ajaxCaller(\"DniUrl/\", {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"get\",\n }).then((response) => {\n if (!response.isError) {\n if (response && response.length >= 1) {\n setIsLinkVisible(true);\n setDniUrls(response);\n setEnvScriptLinkByUrl(getEnvScriptLinkByUrl);\n }\n else {\n setIsLinkVisible(false);\n setDniUrls([]);\n }\n } else {\n console.log(response);\n setErrorMessage(response.message);\n }\n });\n };\n\n const getDniUrlsCallback = () => {\n if (dniurls == null) {\n getDniUrls();\n getCompany();\n }\n }\n\n useEffect(getDniUrlsCallback, []);\n\n const removeDniUrl = (id) => {\n clearError();\n ajaxCaller(\"DniUrl/\" + id, {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"delete\",\n }).then((response) => {\n if (!response.isError) {\n getDniUrls();\n } else {\n setErrorMessage(response.message);\n }\n });\n }\n\n const [companyName, setCompanyName] = useState(\"\");\n // const [companyLogo, setCompanyLogo] = useState(getCurrentCompanyLogo());\n // const [companyId, setCompanyId] = useState(\"\");\n\n const getCompany = () => {\n clearError();\n ajaxCaller(\"Company/GetCurrentUserCompany/\", {\n method: \"get\",\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n }).then((response) => {\n if (!response.isError) {\n setCompanyName(response.name);\n // setCompanyLogo(response.logo);\n // setCompanyId(response.id);\n } else {\n setErrorMessage(response.message);\n }\n });\n };\n\n const [scriptLinkByUrl, setEnvScriptLinkByUrl] = useState(\"\");\n const getEnvScriptLinkByUrl=() => {\n var location= window.location.href;\n if (location.includes('kontakuidev') ||location.includes('dev.getkontak') || location.includes('dev.') || location.includes('localhost') ){\n return ''\n }\n else if (location.includes('stage.')){\n return ''\n }\n else if (location.includes('stage2.') || location.includes('uat.') ){\n return ''\n }\n else { \n return ''\n }\n }\n\n return (\n <>\n \n
\n
\n
\n
\n
\n
\n
DNI - {companyName}
\n
\n
\n {\n isKontakAdminHere && (
\n
\n
\n
\n
\n

\n Add a new website\n

\n
\n
\n
\n \n setNewDniName(event.target.value)\n }\n className=\"form-style border-0 small-40\"\n placeholder=\"Web Site Name...\"\n autoComplete=\"off\"\n />\n
\n
\n
\n
\n \n setNewDniUrl(event.target.value)\n }\n className=\"form-style border-0 small-40\"\n placeholder=\"Web Site Url...\"\n autoComplete=\"off\"\n />\n
\n
\n
\n createDniUrl()}\n disabled={newDniUrl === \"\" || newDniUrlName === \"\" || currentCompanyId === null}\n className=\"btn btn-blue btn-width-80 btn-height-40 border-1 font-size-16\"\n >\n Add\n \n
\n
\n
\n
\n
)\n }\n
\n
\n
\n
\n
\n

\n Websites\n

\n
\n
\n {isLinkVisible && (\n \n {/* \n {''}\n */}\n {scriptLinkByUrl}\n \n \n \n \n \n \n \n \n \n \n \n )}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

\n Website Name\n

\n
\n
\n {isKontakAdminHere && (
\n
\n

\n URL\n

\n
\n
)}\n
\n
\n
\n
\n {dniurls &&\n dniurls.map((dniurl) => (\n
\n \n
\n
\n
\n
\n
\n
\n
Delete DNI
\n
\n
\n

\n You are about to delete a DNI:{\" \"}\n {dniurl.name}\n

\n

\n Are you sure you wish to continue?\n

\n
\n
\n \n CANCEL\n \n removeDniUrl(dniurl.id)}\n className=\"btn btn-red btn-width-130 btn-height-40 border-1 font-size-14 ml-1\"\n >\n DELETE\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n

{dniurl.name}

\n
\n
\n {isKontakAdminHere && (
\n
\n \n \n \n \n \n \n \n \n

{dniurl.url}

\n
\n
)}\n
\n
\n Edit\n {isKontakAdminHere && (\n )}\n \n
\n
\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n
\n \n \n \n );\n};\n\nexport default KontakDni;\n","import React, { useState } from \"react\";\nimport { ajaxCaller } from \"../../ajaxCaller\";\nimport { getAccessToken, isKontakAdmin } from \"../../authentification\";\nimport Select2 from \"react-select2-wrapper\";\nimport InputMask from 'react-input-mask';\nimport CreatableSelect from 'react-select/creatable';\nimport { PrivilegeChecker, Privileges } from \"../../privilegeChecker\";\nimport \"../../style.css\";\n\n\nconst RepeaterComponent = ({ referrerTypes, formats, caches, items, handleItemChange, handleReffererTypeAdd , handleClearCache}) => {\n\n //React components values constants\n const [isLoading, setIsLoading] = useState(false)\n const postDniReferrerType = (item) => {\n\n const domainRemoved = item.label.replace(/\\.[^.]+$/, \"\");\n const createJson = {\n name: domainRemoved.replace('://', '').replace('https', '').replace('www.', '').toUpperCase(),\n id: item.value,\n tag: item.label,\n };\n ajaxCaller(\"DniReferrerType\", {\n headers: new Headers({\n Authorization: \"Bearer \" + getAccessToken(),\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n }),\n method: \"post\",\n body: JSON.stringify(createJson),\n }).then((response) => {\n if (response.isError) {\n console.log(response);\n } else {\n const res = [response].map(record => ({\n label: record.name,\n value: record.id\n }));\n handleReffererTypeAdd(res);\n }\n });\n };\n\n\n \n\n\n //custom style\n const separatorStyle = {\n height: '2px',\n backgroundColor: 'lightgray',\n };\n\n const customStyles = {\n control: (provided, state) => ({\n ...provided,\n backgroundColor: state.selectProps.value.label === 'DEACTIVATE' ? 'salmon' : 'transparent',\n }),\n menuPortal: (provided) => ({\n ...provided,\n zIndex: 9999, // Adjust the z-index as needed to ensure it appears above other elements\n }),\n };\n\n // Item Handler\n const addItem = () => {\n handleItemChange([...items, { id: 0 }], []);\n };\n\n const removeItem = (index) => {\n const updatedItems = [...items];\n const deletedItem = updatedItems.splice(index, 1);\n handleItemChange(updatedItems, deletedItem);\n };\n\n\n const copyItem = (item) => {\n handleItemChange([...items, {\n id: 0,\n dniUrlId: item.dniUrlId,\n dropdown_1: item.dropdown_1,\n inputMask_1: item.inputMask_1,\n dropdown_phone_format_1: item.dropdown_phone_format_1,\n inputMask_2: item.inputMask_2,\n dropdown_phone_format_2: item.dropdown_phone_format_2,\n explicit_replace: item.explicit_replace,\n url_param: item.url_param,\n dropdown_cache: item.dropdown_cache\n\n }], []);\n };\n\n\n const deactivateItem = (item, index) => {\n const updatedItems = [...items];\n var i = (referrerTypes && referrerTypes.find(option => option.label === 'DEACTIVATE'));\n if (i) {\n if (item.dropdown_1 !== i.value)\n item.dropdown_1 = i.value;\n else\n item.dropdown_1 = 1\n handleItemChange(updatedItems, []);\n }\n else {\n const handleCreatePromise = () => {\n return new Promise((resolve, reject) => {\n handleCreate('DEACTIVATE', index, \"dropdown_1\", resolve);\n });\n };\n handleCreatePromise()\n .then((newValue) => {\n var i = (referrerTypes && referrerTypes.find(option => option.label === 'DEACTIVATE'));\n if (i) {\n item.dropdown_1 = i.value;\n }\n })\n .then(() => handleItemChange(updatedItems, []))\n .catch((error) => {\n // Handle any errors that occurred during the AJAX call\n });\n }\n };\n\n const updateItem = (index, field, e) => {\n const updatedItems = [...items];\n var value;\n if (field === 'explicit_replace') {\n value = (e.target.checked)\n }\n else if (field === 'dropdown_1') {\n if (e !== null)\n value = (!e.value) ? null : e.value;\n }\n else\n value = e.target.value;\n\n updatedItems[index][field] = value;\n\n if (field === \"dropdown_phone_format_1\") {\n\n var res = getMaskByFormat(parseInt(value, 10));\n updatedItems[index][\"mask_1\"] = res && res.format;\n\n if (value > 1) {\n //seems to be only thing that works when going from custom=>non-custom format\n if (updatedItems[index][\"inputMask_1_flag\"]) {\n updatedItems[index][\"inputMask_1\"] = \"\";\n triggerElement2Change(index, \"inputMask_1\")\n handleItemChange(updatedItems, []);\n updatedItems[index][\"inputMask_1\"] = updatedItems[index][\"inputMask_1_flag\"];\n triggerElement2Change(index, \"inputMask_1\")\n updatedItems[index][\"inputMask_1_flag\"] = null;\n }\n\n else\n triggerElement2Change(index, \"inputMask_1\")\n }\n else {\n updatedItems[index][\"inputMask_1_flag\"] = updatedItems[index][\"inputMask_1\"];\n updatedItems[index][\"inputMask_1\"] = \"\";\n handleItemChange(updatedItems, [updatedItems]);\n }\n }\n\n if (field === \"dropdown_phone_format_2\") {\n\n var res2 = getMaskByFormat(parseInt(value, 10));\n updatedItems[index][\"mask_2\"] = res2 && res2.format;\n\n if (value > 1) {\n //seems to be only thing that works when going from custom=>non-custom format\n if (updatedItems[index][\"inputMask_2_flag\"]) {\n updatedItems[index][\"inputMask_2\"] = \"\";\n triggerElement2Change(index, \"inputMask_2\")\n handleItemChange(updatedItems, []);\n updatedItems[index][\"inputMask_2\"] = updatedItems[index][\"inputMask_2_flag\"];\n triggerElement2Change(index, \"inputMask_2\")\n updatedItems[index][\"inputMask_2_flag\"] = null;\n }\n else\n triggerElement2Change(index, \"inputMask_2\")\n }\n else {\n updatedItems[index][\"inputMask_2_flag\"] = updatedItems[index][\"inputMask_2\"];\n updatedItems[index][\"inputMask_2\"] = \"\";\n handleItemChange(updatedItems, [updatedItems]);\n }\n }\n\n updatedItems[index][\"updatedAt\"] = getUTCDate();\n\n handleItemChange(updatedItems, []);\n };\n\n const triggerElement2Change = (zindex, field) => {\n\n const updatedItems = [...items];\n updatedItems.map((elements, index) => {\n if (index === zindex) {\n var entries = Object.entries(elements);\n entries.map(([element, value]) => {\n if (field === element) {\n\n var elId = `${field}_${index}`\n const element2 = document.getElementById(elId);\n const event = new Event('change', { bubbles: true });\n element2.dispatchEvent(event)\n element2.addEventListener('change', updateItem(index, field, event));\n var temp = element2.value\n event.target.defaultValue = temp;\n updateItem(index, field, event)\n return value;\n }\n return [element, value];\n })\n }\n return elements;\n });\n // handleItemChange(updatedItems);\n };\n\n\n const mapItemDropDown = (item) => {\n return referrerTypes && referrerTypes.find(option => option.value === item);\n }\n\n\n const getMaskByFormat = (format) => {\n return formats && formats.find(option => option.id === format);\n };\n\n\n const createOption = (id, label) => ({\n label,\n value: id\n });\n\n const handleCreate = (inputValue, index, field, callback) => {\n const lastIndex = referrerTypes.reduce((maxValue, option) => {\n return Math.max(maxValue, option.value) + 1;\n }, -Infinity);\n const newOption = createOption(lastIndex, inputValue)\n setIsLoading(true)\n postDniReferrerType(newOption)\n setIsLoading(false)\n updateItem(index, field, newOption);\n callback(newOption)\n }\n\n const getDateTime = (inputString) => {\n\n if (inputString===null || inputString===undefined)\n return ''\n const dateObject = new Date(inputString);\n const year = dateObject.getFullYear(); // Example: 2023\n const month = dateObject.getMonth() + 1; // Example: 7 (Note: Month is zero-based, so adding 1)\n const day = dateObject.getDate(); // Example: 16\n\n const hours = dateObject.getHours(); // Example: 12\n const minutes = dateObject.getMinutes(); // Example: 34\n\n return `${year}-${month}-${day} ${hours}:${minutes}`;\n }\n\n const getUTCDate= () => {\n\n const currentDateTime = new Date();\n return new Date(currentDateTime.getTime() + currentDateTime.getTimezoneOffset() * 60000);\n\n }\n\n return (\n
\n {items.map((item, index) => (\n
\n \n
\n
\n
\n
\n
\n
\n
Make a DNI item copy
\n
\n
\n

\n You are about to make a COPY of the existing item.\n Please make sure to change the data appropriately.\n Duplicate data can have unexpected effects.\n

\n

\n Are you sure you wish to continue?\n

\n
\n
\n \n CANCEL\n \n copyItem(item)}\n className=\"btn btn-red btn-width-130 btn-height-40 border-1 font-size-14 ml-1\"\n >\n COPY\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
Clear the current DNI item's cache.
\n
\n
\n

\n You are about to clear the cache for the current DNI item.\n Please be notified that this can have performance effects.\n

\n

\n Are you sure you wish to continue?\n

\n
\n
\n \n CANCEL\n \n handleClearCache(item)}\n className=\"btn btn-red btn-width-130 btn-height-40 border-1 font-size-14 ml-1\"\n >\n CLEAR\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
Deactivate DNI item.
\n
\n
\n

\n You are about to render the current DNI item inactive.\n

\n

\n Are you sure you wish to continue?\n

\n
\n
\n \n CANCEL\n \n deactivateItem(item, index)}\n className=\"btn btn-red btn-width-130 btn-height-40 border-1 font-size-14 ml-1\"\n >\n DEACTIVATE\n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
Activate DNI item.
\n
\n
\n

\n You are about to activate the current DNI item.\n

\n

\n Are you sure you wish to continue?\n

\n
\n
\n \n CANCEL\n \n deactivateItem(item, index)}\n className=\"btn btn-red btn-width-130 btn-height-40 border-1 font-size-14 ml-1\"\n >\n ACTIVATE\n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
Delete DNI Referrer
\n
\n
\n

\n You are about to delete data for DNI record :\n {item.id}\n

\n

\n Are you sure you wish to continue?\n

\n
\n
\n \n CANCEL\n \n removeItem(index)}\n className=\"btn btn-red btn-width-130 btn-height-40 border-1 font-size-14 ml-1\"\n >\n DELETE\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n

\n Referrer\n

\n
\n
\n
\n {\n updateItem(index, 'dropdown_1', newValue)\n }}\n value={mapItemDropDown(item.dropdown_1) || ''}\n onCreateOption={(inputValue, e) => handleCreate(inputValue, index, 'dropdown_1', () => { })}\n options={referrerTypes}\n styles={customStyles}\n />\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n

Current Web Site Phone Number

\n
\n
\n
\n {(item.dropdown_phone_format_1 && item.dropdown_phone_format_1 > 1) ?\n (\n updateItem(index, 'inputMask_1', e)}\n className=\"form-style border-0 small-40\"\n mask={item.mask_1 || getMaskByFormat(item.dropdown_phone_format_1)?.format}\n value={(item && item.inputMask_1) || ''}\n >\n {(inputProps) => (\n \n )}\n \n )\n :\n (\n updateItem(index, 'inputMask_1', e)}\n value={(item && item.inputMask_1) || ''}\n />\n )\n }\n
\n
\n
\n
\n updateItem(index, 'dropdown_phone_format_1', e)}\n options={{\n placeholder: \"Select the phone format\",\n theme: \"bootstrap4\",\n minimumResultsForSearch: -1,\n }}\n />\n
\n
\n
\n {(item && item.dropdown_1 !== -1) ?\n (\n
\n \n
\n ) :\n (\n
\n \n
\n )\n }\n
\n\n
\n
\n
\n

New DID

\n
\n
\n
\n {(item.dropdown_phone_format_2 && item.dropdown_phone_format_2 > 1) ?\n (\n updateItem(index, 'inputMask_2', e)}\n mask={item.mask_2 || getMaskByFormat(item.dropdown_phone_format_2)?.format}\n value={(item && item.inputMask_2) || ''}\n >\n {(inputProps) => (\n \n )}\n \n )\n :\n (\n updateItem(index, 'inputMask_2', e)}\n value={(item && item.inputMask_2) || ''}\n\n />\n )\n }\n
\n
\n
\n
\n updateItem(index, 'dropdown_phone_format_2', e)}\n options={{\n placeholder: \"Select the phone format\",\n theme: \"bootstrap4\",\n minimumResultsForSearch: -1,\n }}\n />\n
\n
\n
\n
\n