{"version":3,"sources":["images/m_logo.svg","utility/utility.js","components/global_search.js","constants/urls.js","components/ellipsisHeaderTooltip.js","components/mfa/tooltip.js","components/dropdown_menu.js","E911retail.pdf","E911WL.pdf","containers/login/modals/loginModals.js","containers/modals/termsAndConditionsModal.js","containers/navigation/navbar.js","containers/voicemails/voicemail.js","containers/modals/voicemailSettingsModal.js","containers/voicemailSettingsButton.js","containers/modals/manageGreetingsModal.js","containers/manageGreetingsButton.js","components/save_status.js","containers/voicemails/modals/messageDepositButton.js","containers/modals/voicemailBlockModal.js","containers/modals/voicemailDeleteModal.js","containers/voicemails/modals/pinResetModal.js","components/infopop.js","components/long_switch.js","containers/voicemails/card.js","components/bs_call_logs_tab.js","components/sansay_call_logs_tab.js","components/fax_call_logs_tab.js","containers/call_logs.js","containers/basic_features.js","containers/profile/modals/e911Modal.js","containers/profile_info.js","containers/applications.js","components/wordWrappedCell.js","containers/profile/modals/addEditUserContactModal.js","containers/user_contact_widget.js","containers/dashboard.js","containers/callRecording/voiceUserSettings.js","containers/callRecording/callRecordingUsers.js","containers/callRecording/callRecording.js","scripts/icons.js","components/service_selector.js","components/deviceStatuses.js","containers/modals/servicesChangePasswordModal.js","containers/modals/servicesResetSettingsModal.js","constants/filters.js","components/ServiceMACClickPop.js","components/macAddressCell.js","containers/services.js","containers/sips.js","components/super_link.js","images/credit-card-logos.png","containers/modals/payModal.js","containers/admin/billing_card.js","containers/admin/fav_services.js","containers/admin/call_chart.js","containers/admin/quick_view.js","containers/admin/devices.js","containers/admin/activity_history.js","containers/admin/ticket_count_widget.js","components/toolTipCell.js","containers/admin/starred_tickets_widget.js","containers/admin/vm_report_widget.js","containers/admin/circuits_card.js","containers/admin.js","containers/profile/modals/editProfileModal.js","containers/profile/modals/changePasswordModal.js","containers/profile/modals/changeEmailModal.js","components/mfa/mfaModal.js","containers/profile.js","containers/billing/billing_main.jsx","containers/modals/editContactCenterModal.js","containers/contact_center.js","containers/locations/modals/locationAnnouncementRepositoryModal.js","components/audioUpload.js","containers/modals/annoucementsModal.js","containers/modals/agentsModal.js","containers/modals/statsModal.js","containers/modals/supervisorsModal.js","containers/modals/distinctiveRingModal.js","containers/modals/dnisModal.js","containers/modals/queueStatusModal.js","containers/modals/callDispositionCodeModal.js","containers/modals/acdForcedModal.js","containers/modals/acdHolidayModal.js","containers/modals/acdNightModal.js","containers/modals/queueBouncedModal.js","containers/modals/queueComfortModal.js","containers/modals/queueOverflowModal.js","containers/modals/queueStrandedModal.js","containers/modals/weightedModal.js","containers/contact_center_settings.js","containers/locations/modals/E911EmailNotificationModal.js","containers/locations/index.js","containers/locations/modals/locationEditModal.js","containers/locations/modals/locationAccountCodesModal.js","containers/locations/modals/locationAdvancedHuntingModal.js","containers/setPrompts.js","containers/locations/modals/locationAutoAttendantModal.js","containers/setSubmenu.js","containers/locations/modals/locationAutoAttendantTreeModal.js","containers/locations/modals/locationCallParkModal.js","containers/locations/modals/locationCallPickupModal.js","containers/locations/modals/locationConferenceBridgeListModal.js","containers/locations/modals/locationInstantConferenceModal.js","containers/locations/modals/locationMusicOnHoldModal.js","containers/locations/modals/locationSeriesCompletionModal.js","containers/locations/modals/locationManageLinesModal.js","containers/locations/modals/locationCustomContactDirectoryModal.js","containers/locations/modals/locationManageUsersModal.js","containers/locations/modals/locationManageGroupCallingLineIDModal.js","containers/modals/scheduleModal.js","containers/modals/departmentModal.js","containers/modals/enterpriseDirectoryModal.js","containers/locations/locations_helpers.js","containers/locations/modals/groupFqdnModal.js","containers/locations/modals/groupVlanModal.js","containers/locations/location_details.js","containers/devices/devices_helpers.js","containers/devices/components/macFormatsClickPop.js","containers/devices/components/port_settings.js","containers/devices/components/config_switches.js","containers/devices/modals/configureDevicesModal.js","containers/devices/modals/deviceHistoryModal.js","containers/devices/modals/deviceResetModal.js","containers/devices/modals/deviceSettingsModal.js","containers/devices/modals/deviceAddModal.js","containers/devices/modals/deviceEditModal.js","components/serviceTnClickPop.js","containers/devices/components/groupFQDNTab.js","containers/devices/components/groupVLANTab.js","containers/devices/index.js","containers/macd/components/macd_helper.js","containers/macd/modals/orderResultModal.js","containers/macd/components/validationMessagePopup.js","containers/macd/components/validationCell.js","containers/macd/components/macdSearch.js","containers/macd/tabs/blockTab.js","containers/macd/tabs/cnamTab.js","containers/macd/tabs/extensionTab.js","components/infoCell.js","containers/macd/modals/pricebook.js","containers/macd/tabs/lineTab.js","containers/macd/tabs/listingTab.js","components/SavingMessageControlE911.js","components/e911AddressForm.js","containers/macd/tabs/seatTab.js","containers/macd/tabs/virtualTab.js","containers/macd/modals/macd_order.js","containers/macd/components/dropdownFilter.js","containers/macd/components/order_listings.js","containers/macd/tabs/openReqTab.js","containers/macd/tabs/ipTrunkTab.js","containers/macd/macd.js","containers/macd/macd_all.js","components/AddServicesSaveStatus.js","containers/modals/uploadOrderModal.js","containers/macd/modals/configureProductModal.js","containers/macd/macd_add.js","containers/macd/macd_review.js","containers/macd/macd_confirm.js","containers/macd/modals/macdUserModal.js","containers/macd/macd_user.js","containers/locations/modals/fQDNSetupModal.js","containers/locations/modals/autoAttendantRepoManager.js","containers/modals/enterprise_settings/departmentModal.js","containers/modals/enterprise_settings/enterpriseDirectoryModal.js","containers/modals/enterprise_settings/emergencyCallNotificationModal.js","containers/modals/enterprise_settings/agentDefaultSettingModal.js","containers/modals/enterprise_settings/agentUnavailableCodesModal/unavailable-codes-item.jsx","containers/modals/enterprise_settings/agentUnavailableCodesModal/add-unavailable-code.jsx","containers/modals/enterprise_settings/agentUnavailableCodesModal/index.js","containers/modals/enterprise_settings/callDispositionCodesModal/disposition-code-item.jsx","containers/modals/enterprise_settings/callDispositionCodesModal/add-disposition-code.jsx","containers/modals/enterprise_settings/callDispositionCodesModal/disposition-codes-table.jsx","containers/modals/enterprise_settings/callDispositionCodesModal/index.js","containers/modals/enterprise_settings/centerRoutingPoliciesModal.js","containers/modals/enterprise_settings/scheduleModal/constants.js","containers/modals/enterprise_settings/scheduleModal/utils.js","containers/modals/enterprise_settings/scheduleModal/event-item.js","containers/modals/enterprise_settings/scheduleModal/event-list.js","containers/modals/enterprise_settings/scheduleModal/schedule-item.js","containers/modals/enterprise_settings/scheduleModal/schedule-list.js","containers/modals/enterprise_settings/scheduleModal/add-schedule-item.js","containers/modals/enterprise_settings/scheduleModal/index.js","containers/enterprise_settings.js","images/momentum_logo_white.png","containers/iframe_page.js","images/connect-buttons/archive.png","images/connect-buttons/call-center.png","images/connect-buttons/collaborate.png","images/connect-buttons/incontact.png","images/connect-buttons/exchange.png","images/connect-buttons/ivr.png","images/connect-buttons/receptionist.png","images/connect-buttons/skype-for-bus.png","images/connect-buttons/voice-analytics.png","containers/support.js","containers/training.js","containers/call_logs_all.js","containers/voicemails/voicemail_all.js","containers/modals/changePinModal.js","containers/voicemails/components/pinResetButton.js","tests/api/statuses.js","containers/modals/announcementRepositoryModal.js","containers/modals/anywhereModal.js","containers/modals/callBlockModal.js","containers/modals/callNotifyModal.js","containers/modals/callTransferModal.js","containers/modals/collaborateBridgeModal.js","containers/modals/conferenceListModal.js","containers/modals/directCallModal.js","containers/modals/hotelingGuestModal.js","containers/modals/hotelingHostModal.js","containers/modals/priorityAlertModal.js","containers/modals/privacyModal.js","containers/modals/receptionistDashboardModal.js","containers/modals/selectiveCallAcceptanceModal.js","containers/modals/speedDialModal.js","containers/modals/callForwardingModal.js","containers/modals/callForwardingSelectiveModal.js","containers/modals/findMeSimultaneousModal.js","containers/modals/findMeSequentialModal.js","containers/modals/pushToTalkModal.js","containers/modals/contactCenterModal.js","containers/modals/customRingbackModal.js","containers/modals/remoteOfficeModal.js","containers/modals/clientAppModal.js","containers/modals/voicemailToTextModal.js","containers/modals/distributionListModal.js","containers/voicemailSettingsRow.js","containers/modals/virtualNumberModal.js","containers/modals/preAlertModal.js","containers/manageGreetingsRow.js","containers/pinResetRow.js","containers/user_settings.js","containers/navigation/my_services.js","containers/navigation/admin_menu.js","containers/navigation/help_center.js","containers/ipTrunking/components/manageTrunkModal.js","containers/ipTrunking/ipTrunk.js","containers/ipTrunking/components/ipTrunkReviewModal.js","containers/ipTrunking/manageTrunkGroup.js","components/unmatched_path.js","containers/ipTrunking/components/call_logs_frame.js","containers/ipTrunking/components/ip_call_logs_location.js","containers/ipTrunking/components/call_logs_detailed.js","containers/enterprise_call_logs_all.js","components/dropdownFilter.js","containers/ticketing/ticketing_all.js","containers/ticketing/helper/ticket_helper.js","containers/ticketing/components/affeced_devices_modal.js","containers/ticketing/components/affected_services_modal.js","containers/ticketing/components/affected_circuits_modal.js","containers/ticketing/components/delete_attachment_modal.js","containers/ticketing/detailed_ticket_view.js","containers/ticketing/new_ticket.js","containers/document_repository.js","containers/modals/AddEditEnterpriseContact.js","containers/enterprise_contact_directory.js","containers/vm_report.js","containers/EnterpriseTrunking/components/manage_trunk_users.js","containers/EnterpriseTrunking/enterprise_trunking.js","containers/EnterpriseTrunking/manage_trunk_group.js","containers/activeDirectory/components/user_search.js","containers/activeDirectory/components/manage_user_config.js","containers/activeDirectory/ad_config.js","containers/activeDirectory/active_directory_menu.js","containers/activeDirectory/components/edit_applist_dialog.js","containers/activeDirectory/ad_app_list.js","containers/activeDirectory/ad_main.js","containers/microsoftTeams/msteams_config.js","containers/microsoftTeams/components/utility.js","containers/microsoftTeams/msteams_menu.js","containers/microsoftTeams/msteams_setup_domain.js","containers/microsoftTeams/msteams_dns.js","containers/microsoftTeams/msteams_sbc.js","containers/microsoftTeams/msteams_temp.js","containers/microsoftTeams/msteams_dr.js","containers/microsoftTeams/migration.js","containers/microsoftTeams/components/tn_search.js","containers/microsoftTeams/msteams_routing_menu.js","containers/microsoftTeams/tabs/voice_route.js","containers/microsoftTeams/tabs/voice_policy.js","containers/microsoftTeams/msteams_tenantinfo.js","containers/microsoftTeams/msteams_main.js","containers/microsoftTeams/components/manage_user_config.js","containers/webex/main.js","containers/circuitsMonitoring/circuits_alerts.js","containers/circuitsMonitoring/circuits_list.js","containers/circuitsMonitoring/circuits_chart.js","containers/circuitsMonitoring/dashboard.js","containers/circuitsMonitoring/graphing/d3-line-chart.js","containers/circuitsMonitoring/graphing/components/axis.js","containers/circuitsMonitoring/graphing/components/area.js","containers/circuitsMonitoring/graphing/components/tools.js","containers/circuitsMonitoring/graphing/components/legend.js","containers/circuitsMonitoring/graphing/full_graph.js","containers/circuitsMonitoring/graphing/graph_component.js","containers/circuitsMonitoring/graphing/graphing_dash.js","components/mfa/mfaAdminTool.js","containers/operator-connect-v1/oc_config.js","containers/operator-connect-v1/oc_menu.js","containers/operator-connect-v1/tabs/voice_route.js","containers/operator-connect-v1/tabs/voice_policy.js","containers/operator-connect-v1/oc_tenantinfo.js","containers/operator-connect-v1/phoneNumbers.js","containers/operator-connect-v1/fax_list.js","containers/operator-connect-v1/oc_main.js","containers/operator-connect-v1/components/tn_search.js","containers/operator-connect-v1/components/manage_user_config.js","containers/operator-connect-v1/components/user_search.js","containers/operator-connect-v1/components/manage_phone_config.js","containers/navigation/sidebar.js","components/footer.js","containers/login.js","scripts/full_story.js","components/countdownTimer.js","containers/modals/idleWarningModal.js","components/idle_logout.js","thirdparty/react-timer-component/lib/Timer.js","containers/modals/testResultModal.js","containers/noAuth/supportLinks.js","containers/login/login.js","containers/login/forgotPassword.js","containers/login/modals/validateMFAmodal.js","containers/login/modals/mfaModal.js","App.js","registerServiceWorker.js","index.js","requests/api_calls.js","components/spinners.js","scripts/helper.js","requests/config.js","store/reducer.js","store/redux.js","../public/data/UISettings lazy /^/.*$/ groupOptions: {} namespace object","scripts/settings.js","scripts/session.js","store/actions.js","store/store.js","containers/login/resetPassword.js","containers/login/mfaEmailValidateRedirect.js","images/momentum_logo.png","images/warn-icon.png"],"names":["arraysEqual","a","b","length","i","Priority","Weight","IsAssigned","checkBillingAccount","account","sessionStorage","userEnterpriseNumber","userType","userTypeId","sp","serviceProviderName","startsWith","filterErrorMessage","errorMessage","result","replace","GlobalSearch","props","delayedSearch","apiPath","timeout","clearTimeout","setTimeout","fetchServices","settings","onFocusSearch","searchText","setState","showResults","searchValue","blurText","handleChange","event","target","value","trim","handleBlur","showSearchHint","searchGlobally","fetchResults","loading","fetchData","then","data","searchResults","state","catch","message","console","log","locationResults","LocationList","results","className","map","item","index","locationItem","to","pathname","preFilter","ItemValue","ItemText","serviceResults","ServiceList","serviceItem","searchTerm","trunkingResults","TrunkingList","trunkingItem","noSearchResults","displayHint","bind","userIsAdmin","this","htmlFor","id","type","onBlur","onFocus","onChange","autoComplete","ref","width","height","viewBox","d","transform","style","display","Component","training_url","headerToolTip","title","noWrap","overflow","placement","userRolePopUp","userRole","popop","trigger","overlay","MfaTooltip","useState","isVisible","setIsVisible","enableMFA","MFAOption","RPXLogin","onClick","isWholesale","session","profileDropDownLinks","userId","href","role","dropDownMenu","tabIndex","CR_MODAL","fetchEnterpriseCallRecordingPopUpCount","apiCalls","showCRModal","ShowedCount","err","error","saveEnterpriseCallRecordingPopUpCount","response","ok","setItem","submitted","callRecordingModal","emulatedUser","show","onHide","backdrop","Header","Title","Body","Footer","TCFlag","UserID","TC_MODAL","fetchEnterpriseTerms","showTCModal","fetchingData","fetchUserTerms","termsAndConditionsDisplay","modalStyles","window","location","indexOf","float","fontSize","marginRight","marginTop","handleOpenModal","saveTermsAndConditions","path","storedUserRole","dto","JSON","stringify","splashDisplay","src","IsWholesale","E911MSAWs","E911MSARetail","termsAndConditionsModal","cngAltevaDctAccount","checked","e","marginLeft","disabled","modalOrder","CallRecordingModalLoaded","NavBar","toggleSidebar","action","actions","store","dispatch","finalLogo","customLogoSmall","logo","alt","connect","isLoading","reducer","themes_loaded","Voicemail","selected","handledSelectChanged","content","position","handlePlay","phone","datetime","handleDownload","handleShowSendModal","VoicemailSettingsModal","validateEmail","setting","email_is_valid","EmailValidator","email","validateEmails","emailsArray","split","cnt","handleShow","handleClose","changeForward","showModal","forwardValue","model","loading_error","voice_messaging","onHandleChangeOnOffValue","send_all_calls_to_vm","send_busy_calls_to_vm","send_unanswered_calls_to_vm","name","defaultValue","forward_to_email","processing","onHandleChangeForward","getForwardOption","notify_me_email_when_new_messages_arrive","onHandleChangeEmail","email_carbon_copy_message","transfer_on_0_to_phone_number","phone_number","onHandleChangePhone","placeholder","waiting_indicator","onHandleChangeWaitingIndicator","VoicemailSettingsButton","changeOnOffValue","updateSetting","changeEmailValue","api","changeWaitingIndicator","changePhoneNumber","handleSave","saving_loading","saving_show_success","PostData","AccountNumber","DirectoryNumber","isActive","alwaysRedirectToVoiceMail","busyRedirectToVoiceMail","noAnswerRedirectToVoiceMail","voiceMessageDeliveryEmailAddress","usePhoneMessageWaitingIndicator","sendVoiceMessageNotifyEmail","voiceMessageNotifyEmailAddress","sendCarbonCopyVoiceMessage","voiceMessageCarbonCopyEmailAddress","transferOnZeroToPhoneNumber","transferPhoneNumber","body","headers","config","post","saving_error_message","OnVMSettingChange","getNewState","getSaveButton","forwardToEmailValid","notifyMeEmailValid","emailCarbonCopyValid","enableSave","enable","click","getSaveMessage","transitionName","transitionAppear","transitionAppearTimeout","transitionEnter","transitionEnterTimeout","transitionLeave","forward_value","ServiceNumber","PBXUserID","outOfPrimaryZoneRedirectToVoiceMail","format","newState","toString","closeButton","busy_greetings","busy_greetings_personal_greetings","no_answer_greeting","no_answer_greetings_personal_greeting","alternate_no_answer_greetings_1_name","alternate_no_answer_greetings_2_name","alternate_no_answer_greetings_3_name","alternate_no_answer_greetings_1_audio","alternate_no_answer_greetings_2_audio","alternate_no_answer_greetings_3_audio","number_of_rings_before_greeting","auto_login_to_voice_portal_when_calling_from_my_phone","ManageGreetingsModal","changeAlternateName","alternate_obj","changeAlternateAudio","audio","audio_selected","handleChanges","newModel","Model","busy_greeting","alternate_1","alternate_2","alternate_3","auto_login","onHandleChangeModel","getBusyPersonalGreeting","audio_files","x","audio_name","is_group","getDropdownRequiredError","noAnswerUnavailable","getTexboxRequiredError","validate","requiredElem","audio_files_selection_enable","ManageGreetingsButton","getDefaultModel","manage_available","saving_enable","error_message","getAudioById","filtered","filter","IsModelValid","isValid","postData","BusyAnnouncementSelection","parseInt","BusyPersonalAudioFile","selectedAudio","AudioName","FileType","file_type","IsGroup","noAnswerAnnouncementSelection","NoAnswerPersonalAudioFile","GreetingName","NoAnswerNumberOfRings","VoicePortalAutoLogin","handleChangeState","getAudioFileID","audioFile","getModel","AudioFileList","NoAnswerAnnouncementSelection","saveStatus","saving","savingMessage","SavingMessage","textAlign","statusMessage","statusClass","okBtnClass","hideOkBtn","parentCallBack","messageDeposit","fetchUserVoiceMessagingUserGetGreeting","voipSwitch","userid","accountNumber","directoryNumber","serviceNumber","pBXUserID","userGetGreeting","modalBody","handleInputChange","handleSubmit","VoipSwitch","requestData","uvmg","ErrorMessage","openModal","closeModal","disableMessageDepositField","extendedAwayDisableMessageDepositField","defaultChecked","dialogClassName","modalContent","color","LeftMargin","VoicemailBlockModal","handleYes","renderResult","errorComponent","successComponent","countWithError","saveResult","BlockedNumberAlreadyExist","ErrorBlocking","countSuccess","Blocked","rowNumber","BlockedNumber","Criteria","showError","prevProps","confirmationMsg","showSuccess","showLoading","SuccessMessage","SuccessTransitionClass","SavingMessageControl","loadingMessage","SaveButton","VoicemailDeleteModal","PinResetModal","GeneratePin","returnString","newNumber","Math","floor","random","generateNewPin","pin","PIN","newPin","handleResetPin","ResetPin","access_token","x_policy","postDataWithCustomHeader","saving_show_error","msg","isCustom","successMessage","InfoPop","LongSwitch","hasInfo","info","label","on","Voicemails","initialState","voicemail_switch","visible","show_success","show_error","vm_settings","voicemails","voicemail_count","voicemail_fetch_error","activevm","account_number","directory_number","filename","sendModal","emailText","emailTextValid","delete","block","show_dialog","save_result","vm","voicemails_data","vmLocal","Location","refs","downloadSubmit","submit","playSubmit","onHandleVoicemail","apiUrl","fetchVoiceMails","handleVMSettingChange","vmSetting","enableUserMessaging","basicData","filterService","ServiceName","IsActiveSpecified","loadSettings","vmOnOffApi","errorMsg","loadData","sortedByDate","all_voicemails","slice","sort","Date","DateTimeLocal","voicemailsTable","getBlockAndDeleteRow","getVoiceMails","getFetchVoiceMailError","getVoiceMailAction","Extension","handleHideSendModal","handleSend","handleChangeEmailText","selected_voicemails","forEach","element","FileName","newdeletedvms","newvoicemails","push","selected_block_numbers","FromPhone","BlockNumbers","parse","ToEmail","playUrl","saveUrl","voiceCount","getVoiceMailOnOff","method","default","sendModalLoading","vmLength","colSpan","selectedVMcount","handleBlockVM","handleBlockModalShow","handleBlockModalClose","handleDeleteVM","handleDeleteModalShow","match","vm_switch","BSCallLogsTab","searchStatus","BSCallLogs","padding","sortListings","logs","returnObj","sortedSet","orderBy","helper","sortChange","Sort","gridContent","colWidth","isWidget","scrollable","sortable","allowUnsort","mode","onSortChange","field","LocationAccountNumber","BsLogs","skip","SansayCallLogsTab","SansayCallLogs","smallColWidth","SansayLogs","FaxCallLogsTab","FaxCallLogs","CallLogs","UpdateStoreAndListings","call_type","status_type","call_category","date_type","from_date","to_date","fetchCallLogs","getApiUrl","selectedTab","tab","undefined","isIpTrunking","FDRCallLogs","revisedData","isIPTrunking","isFax","idx","Release_Time","Start_Time","StartTime","extension","ext","callLogFilter","htmlSelect","paddingRight","usercl_call_category","usercl_call_type","usercl_status_type","usercl_date_type","usercl_from_date","moment","now","startOf","usercl_to_date","endOf","handleCallType","handleStatusType","handleDate","handleChangeFromDate","handleChangeToDate","from","sender","_oldText","isSameOrAfter","isSameOrBefore","subtract","nextProps","newProps","callLogsLink","change","getTab","finalToDate","newOptions","BasicFeatures","anynomous_call_rejection","details","assigned_service","bargein_exempt","caller_id","call_waiting","connected_line_id_restrictions","do_not_disturb","music_on_hold","outbound_caller_id_block","fetchAssignedServices","enableBasicFeature","setDisableAll","setLoadingToFalse","mainDiv","feature","service","getService","IsActive","setBasicFeature","serviceName","filterData","fetchBasicFeatures","Method","SettingValue","onChangeBasic","bodyJson","setToFalseAllSuccessAndError","viewMoreLink","sn","pbx","substr","iframeUrl","renderBasicFeatureControl","enableFeatures","getBasicFeatureItem","emptyMessage","key","emptye911Address","savingLoading","savingShowSuccess","savingErrorMessage","savingShowError","showAddress","StructureNum","City","ElevationNum","State","UnitType","UnitNum","ZipCode","StreetName","HouseNumber","StreetNumber","PostDirectional","PreDirectional","StreetType","StreetSuffix","Street1","Street2","PhoneNumber","Address1","Address2","DirectionPrefix","DirectionSuffix","ElevationType","StructureType","County","e911Modal","fetch911List","existingList911","list911","elist911Loading","fetch911Address","e911Address","existinge911Address","e911AddressLoading","getE911List","addresses","e99Address","addressLine1","getAddressLine1","addressLine2","getAddressLine2","align","handleToggleEditList911","editableAddress","addressForm","getList911Addresses","handleToggleEdit911Addresses","Building","handleOnChange","fieldName","listType","newList911","existing911List","address","save911InList","indexInList","showHideStatus","save911AddressesInList","newList","newExistingList","e911InList","resp","listIdx","_","addressFind","indexInArray","saveElement","closeElement","showUser911","E911ButtonText","list911Address","labelClassName","ProfileInfo","fetch_error","profile","hasE911","fetchProfileInfo","b911","HasE911","getProfileApiUrl","profileURL","PBXUserId","getName","IsAdmin","getAdminProfile","getRegularProfile","getCompany","Designation","E911Street1","E911Street2","E911City","E911State","E911Zip","department","Department","Email","enterpriseID","ParentAccountNumber","groupID","emapID","ImapID","networkClass","NetworkCOS","portalLoginUsername","PortalUsername","groupEmailMobilePagerYahooId","Mobile","Pager","YahooId","e911AddressSection","phoneModel","DeviceModel","macAddress","DeviceMAC","language","Language","timezone","TimeZone","temporarilyUpdate911ServiceAddress","passwordRecovery","userID","SVCStreet1","SVCStreet2","SVCCity","SVCState","SVCZip","FirstName","LastName","CallingLineFirstName","CallingLineLastName","CustomerName","Applications","hasCallRecording","HasCallRecordingService","updateApplication","applications","params","app","appInfo","el","ApplicatoinName","appList","numberClasses","numClassesIndex","toLowerCase","open","ApplicationURL","WrappedCell","dataItem","GridCell","AddEditEnterpriseContact","getBlankContactDetails","UserId","SelectedUserId","EnterpriseId","TN","OldName","Name","OldSpeedDialCode","SpeedDialCode","isAdd","ContactDetails","SpeedDialEnabled","handleOnStateChange","callUpdateFromModal","newContactModel","UpdateParentFromModal","adding","handleOnSave","verb","res","saveResultsMessage","getModalButtons","getEditViewButton","minWidth","formatSpeedDialOption","itm","toggleSpeedDial","toggleSetting","SpeedDialCodes","margin","speedDialSetting","current","existing","codes","AddEditMode","newSpeedDials","CanEdit","enabled","maxLength","Mask","Button","ContactTextField","mask","UserContactWidget","provideSpeedDialCodes","fetchContactDetails","codeAdds","contact","fetchSpeedDial","Contacts","ContactsCopy","adds","searchContacts","fullDetails","contacts","filterBy","logic","filters","operator","ignoreCase","handleDeleteItem","productItem","showDeletePrompt","selectedDeleteItem","handleCancelDelete","handleConfirmedDelete","SpeedDialList","newContacts","newContactsCopy","updateFromModal","speedDialValues","oldContact","oldContactCopy","idxOldContact","idxOldContactCopy","uploadBtn","accept","addAttachment","openAttachments","file","files","reader","FileReader","addEventListener","createAttachment","readAsDataURL","ticketId","attachmentDTO","TicketId","AttachmentBody","attachmentSubmitted","Submission","submitError","fileUploader","gridHeight","cell","ContactEditButton","filterable","ContactDeleteButton","fill","xmlns","fillRule","clipRule","Dashboard","enterpriseDirectory","showEnterpriseContacts","profileInfo","adminProfile","voicemail","callLogs","basicFeatures","showBasicFeatures","renderColumns","columnObj","column1","column2","column3","iCountNextColumn","iCountActiveWidgets","widgets","stateLookup","toggle","pushFunction","functionName","selectedColumn","widgetColumn","columnWidgets","f","showCallLogs","disableImagesLoaded","updateOnEachImageLoad","enableResizableChildren","widgetRow","isSelectedServiceIpTrunking","serviceLoading","showProfileInfo","showVoicemail","showApplications","atRootPath","redirectToLanding","VoiceUserSettings","showConfirmModal","Loading","fetchDataForModalvalues","ErrorMsg","RefreshDataSource","requests","fetchCallRecordingSettings","fetchCallRecordingValue","Promise","all","dataArray","copy","displayCallRecordingConnectField","og_displayCallRecordingConnectField","Settings","SettingsCopy","sumbitVoiceSettings","pauseResumeNotificationField","recordCallRepeatWarningToneTimerSecondsField","recordingOptionField","recordingSetting","UserName","username","Entity","RecordingSetting","DisplayCallRecordingConnectFieldDTO","AccessToCallRecording","Failed","dataRow","recordRadioDataField","val","pauseResumeRadioDataField","inputDataField","callWarningTone","enableTone","secondsTone","min","formButtons","enableCallRecordingAnnouncementField","enableRecordCallRepeatWarningToneField","enableVoiceMailRecordingField","PropertyChanged","isVoiceMessagingAssigned","isVoiceMessagingAssignedField","left","top","hasCallRecordingMenu","paddingTop","cardContent","CallRecordingUsers","UsersList","handleSortChange","editGridHeader","VoiceSettings","handleFilterChange","searchListings","FullListings","services","dir","LinkCell","MiaRecUser","EmulationRedirectURL","MiaRecLoginUrl","encodeURIComponent","onSubmit","preventDefault","CallRecordingMain","fetchCallRecordingUrl","Link","fetchUserLists","tabDisplay","changeTab","tabName","dashboard","locations","servicesAndUsers","devices","trunking","enterpriseSettings","contactCenter","billing","star","historyBtn","ticketing","documents","y","addressBook","entTrunk","class","msTeams","callRecording","webex","circuits","circuitsMap","mfa","ServiceSelector","setServiceAndRedirect","history","serviceNumberValue","userHasNoServices","Username","PackageName","fieldValue","ServiceId","HasProfile","withRouter","DeviceStatuses","realtimeRegistrationStatus","updated","updateStatus","checkRegistration","exportBtn","Services","exportUsers","downloadCsv","text","deviceStatus","textLeft","serviceFilters","USER_FAV","DEVICE_REGISTERED","DEVICE_UNREGISTERED","DEVICE_ASSIGNED","DEVICE_UNASSIGNED","UNASSIGNED","ALL_SERVICES_USERS","ALL_SERVICES","ALL_USERS","IP_TRUNK_ASSIGNED_DID","filterList","REGISTERED","UNREGISTERED","ASSIGNED","AssignedDIDTrunkID","filterLabel","join","ServiceMACClickPop","showMacs","macListings","mac","sortedData","sortServices","MACListings","popupHeight","macAddressCell","DevCount","MacAddressCell","fieldClass","DevRegistered","MAC","EditBtn","editBtn","onOpen","closeOnDocumentClick","contentStyle","border","parseViewFilter","search","view","viewFilter","parseServiceIdFile","AssignedDIDServiceId","TrunkGroupServiceId","paramsSeparator","returnState","locationAddress","serviceUserFilter","locationAccFilter","useFilter","deviceCount","isTogglingStatus","innerHeight","handleResize","newLocationParams","newLocation","prevLocation","newSearchTermParams","newSearchTerm","prevSearchTerm","filteredGridContent","didArr","ServiceType","apiPathWithParams","filteredData","resultsMsg","replacedValues","favs","IsFav","nonFavs","concat","Object","assign","isToggingStatus","UserType","activeFilters","clearFilter","searchServices","filterServices","starAlt","starClass","handleEnter","keyCode","toggleFavoriteStatus","updatedItem","replaceServices","unfavorite","saveFavorite","updateService","newFavServiceId","newIsFavState","FavoriteServiceId","newServices","findIndex","s","registrationUpdated","icons","favBtn","serviceTypeCell","serviceSelector","resultsMessage","servicesCardInlineStyle","servicesContent","filterChange","pageChange","FavoriteButton","cursorType","cursor","onKeyUp","ServiceTypeCell","collabPath","removeEventListener","newApiParams","page","LocationAddress","locationAccountNumber","fetchSips","sips","searchSips","PilotUserId","PilotDID","selectServiceLink","editSettingsButton","sipsContent","SelectServiceLink","textClass","PilotRegistered","EditSettingsButton","TrunkGroupID","FilterServices","nextContext","curFilter","sortSips","SuperLink","url","BillingCard","fetchBillingStat","CustomerAccountNumber","getItem","ex","AccountBalance","currency","code","Street1BILL","Street2BILL","CityBILL","StateBILL","ZipBILL","InvoiceAmount","InvoiceDueDate","toLocaleDateString","InvoiceURL","InvoiceID","invoiceLink","getInvoice","downloadInvoice","invoiceBtn","addressPartTwoSeparator","billingData","process","downloading","enterpriseType","FavServices","pageable","take","total","onPageChange","firstAndLastName","favServicesTable","FirstAndLastName","yearMonthDay","internal_color","inbound_color","outlocal_color","outLD_color","international_color","other_color","setFromDate","totalDays","daysAgo","today","CallChart","filterCallActivity","fromDate","toDate","apiPathAndParams","callActivityFilterString","fetchCallActivity","filterString","status","apiReturn","loadTimeExpired","forcedLoadTime","count","reduce","currentValue","ALL_CALLS","callActivity","dateCounts","internal","mapCallActivity","inbound","outboundLocal","outboundLd","international","other","propertyName","startDate","endDate","add","diff","dates","unshift","date","dataItems","CallDate","setDateRange","dateRangeVisibility","redrawChart","setCallFilter","filterKey","setCustomDate","validCustomDate","isBefore","_i","callCounts","category","countsArray","noResults","maxCount","counts","values","flatCounts","Array","prototype","max","chartOptions","legend","seriesDefaults","series","chartSeries","chartArea","valueAxis","line","minorGridLines","labels","rotation","categoryAxis","categories","majorGridLines","tooltip","template","chartContent","handleSetLegend","legendItem","legendItems","legendName","internalLegend","inboundLegend","outLocalLegend","outLdLegend","internationalLegend","otherLegend","notSelectedItems","prop1","prop2","prop3","prop4","prop5","selectedItem","callCategoryHyperlink","transition","handleSetOutLocalLegend","handleSetOutLdLegend","handleSetInternationalLegend","chartSeriesConfig","seriesList","backgroundColor","evt","QuickView","fetchStats","CountLocations","CountServices","CountUsers","CountDevices","CountServicesUsers","quickViewContent","defaultSelection","Devices","fetchDeviceStats","forcedRefresh","devicesProvisioned","CountProvisioned","devicesRegistered","CountRegistered","devicesUnregistered","CountUnregistered","linesRegistered","CountLinesRegistered","linesUnregistered","CountLinesUnregistered","CountTotal","registrationLastUpdated","previousLocationValue","selectedLocationValue","fetchLocations","locationOptions","locationOption","LocationName","filterLocations","stateChanges","manageBtn","categoryLabel","linkClass","getCount","filterValue","displaySide","devicesSummary","ActivityHistory","fetchHistory","sortedHistory","ActivityDate","historyItemDiv","historyItem","ActivityURL","findServiceByHistoryItem","numOrExt","ServiceNumberOrExtension","utc","fromNow","TicketingCountsWidget","fetchTicketCountData","fetchTicketStats","fetchContactList","options","ContactId","ContactOptions","LocationOptions","parsedList","locationList","TicketStats","isSFIDNull","handleChangeContact","handleChangeLocation","ticketFilterDropDown","paddingBottom","ticketRow","description","borderBottom","marginBottom","fontWeight","setTicketView","transitionToAllTickets","Closed","Escalated","Open","PendingCustomer","Updated","Starred","Total7","paddingLeft","hasTicketing","transitionToNewTicket","Listings","ToolTipCell","StarredTicketingWidget","fetchTicketList","Term","QueryLocator","TicketList","ticket","LastModifiedDate","userTimeZone","columnWidth","DataLink","favoriteTicket","newTickets","updateTicket","transitionToTicketDetail","TicketNumber","listings","VmReport","componentDidMount","hasVmUsageReport","fetchVm","VMLastAccessDateTime","VMLastAccessDateTimeDisplay","local","columnWidthStats","wrapper","hasPermission","CustomWrapperCell","styles","overflowWrap","cellData","transitionToVmReport","CircuitCard","fetchCircuits","CircuitList","upCircuits","ActiveStatus","downCircuits","offlineCircuits","textDecorationLine","Admin","componentWillReceiveProps","hasDevices","ipTrunkingOnly","showFavServices","showActivityHistory","showStarredTicketingWidget","showQuickView","showDevices","showCallChart","showTicketingCountsWidget","transitionToCallLogDetails","favServices","activityHistory","starredTickets","quickView","callChart","ticketingCount","vmReport","isIpTrunkingOnly","isSuperAdmin","userIsSuperAdmin","DialingFirstName","DialingLastName","Timezone","NetworkClassOfService","Country","Zip","EditProfileModal","currentUser","CurrentUserProfile","admin","isAdmin","GroupName","IMAPID","ServiceProviderId","GroupId","ID","AlternatePhone","States","Languages","Timezones","Departments","NetworkClassOfServices","valid","fetchAdminProfileInfo","fetchUserProfileInfo","splice","getSaveBody","CustomerProductId","DepartmentName","NCOS","IMAP_ID","handleSaveNew","updateProfilePage","updateByProps","editAvailableApi","getModalBodyContent","getAdminForm","getBroadsoftUserForm","getUserForm","headerValues","GetHeaderValues","stateDropDownOptions","ProfileTextField","maxlength","ProfileDropdownField","Password1","Password2","ChangePasswordModal","password1","password2","validMessage","ValidPassword","pw","test","Password","getValidationError","getBtn","superlink","PasswordEmail","ServiceAndCpniEmail","ChangeEmailModal","isValidEmail","fetchEmail","changeEmail","ChangeEmail","ce","loadingError","passwordEmail","serviceAndCpniEmail","changeUserEmailApi","getBodyContent","ChangeEmailValues","GetEmailValues","MFAAuthModal","handleOpen","validationError","pinCode","verificationMethod","isTextMessageOn","isAuthAppOn","onSuccessSMS","onSuccessSubmitPinCode","oktaId","isOktaPushEnabled","fetchUserEmail","getQRImageUrl","loadingQR","tsv","qrImageUrl","qrKey","getOktaQRImageUrl","qrOktaImageUrl","enableOktaPush","confirmOktaVerify","submitPhoneNumber","storedPhoneNumber","phoneNumber","getTFAUserData","Key","Code","VerificationMethod","EnableOktaPush","OktaId","onSubmitAuthPinCode","onSendPushNotification","errorContent","sendEmailValidate","getMethod","IsOktaPushEnabled","showGrabEmailForm","isOkta","justifyContent","autoFocus","MfaAllowSms","alignItems","onKeyDown","enforceFormat","formatToPhone","onKeyPress","MfaAllowAuthApp","flexDirection","getQRImageContent","isModifierKey","shiftKey","ctrlKey","metaKey","isNumericInput","input","substring","areaCode","middle","last","Profile","updateServiceSelector","UserRole","Role","selectedUserIsAdmin","bShow911","updateFromEditProfile","getProfile","svcAddress","e911address","showE911","getChangeEmailValues","mfaModal","getHeaderValues","showPrincipalUserProfile","serviceNotSelected","hasValidUser","modal","propsSN","parts","CustomCollapse","children","isSectionCollapse","setIsSectionCollapsed","headerId","collapseId","borderTopRightRadius","borderTopLeftRadius","stroke","strokeWidth","strokeLinecap","strokeLinejoin","background","borderBottomRightRadius","borderBottomLeftRadius","BillingMain","availableLocations","setAvailableLocations","customerInfo","setCustomerInfo","billingAddr","setBillingAddr","currentBill","setCurrentBill","paymentHistory","setPaymentHistory","selectStatement","setSelectStatement","invoices","setInvoices","recentInvoices","setRecentInvoices","setLoading","accNum","setAccNum","setURL","invoiceNotFoundData","setInvoiceNotFoundData","currentYear","getFullYear","years","downloadPdfRef2","useRef","iframeRef","modalDisplay","setModalDisplay","downloadCsvRef","selectedBillingAccountNumber","setSelectedBillingAccountNumber","useEffect","hasBillingAdminPermission","homePathToRedirect","homePageUrl","getBillingData","handleSetUp","isDefaultPrevented","getURL","RecurringPaymentMethod","Balance","handleProcess","accountBillingNumber","BillingAccountNumber","AvailableBillingLocations","BillingAddress","CurrentBill","Payments","Invoices","invoicesLastMonth","invoice","currentDate","invoiceDate","InvoiceDate","previousMonth","getMonth","previousMonthYear","invoiceDateMonth","invoiceDateYear","getIP","fetch","Error","json","ip","bal","recurringPaymentMethod","returnUrl","amount","pageId","reqParam","billingAccountNumber","clientIP","parsedResponse","NumberWithBrackets","number","isNegative","formattedNumber","toLocaleString","minimumFractionDigits","maximumFractionDigits","exportCallLogs","URLSearchParams","InvoiceId","pattern","exportInvoiceGo","row","col1","col2","noBorder","xs","md","lg","xl","btnStyle","textWrap","paddingtop","start","depth","required","BillingModalContent","keys","RecurringPaymentMethodDisplay","CurrentBalance","PastDue","DueDate","sm","pay","PaymentAmount","PaymentDate","borderLeft","bsStyle","bsSize","AmountWithCreditIssued","document","getElementById","testExport2","EditContactCenterModal","ContactCenter","LocationAnnouncementRepositoryModal","AudioUpload","changeRecurs","handleAddAudioNumber","numberOfAudioCount","numberOfAudioLimit","recurValue","audioNumberCountReachLimit","getInputs","times","visibility","AnnoucementsModal","handleSelect","getConfig","onSelect","expandMode","expanded","focused","AgentsModal","autoClose","dataSource","StatsModal","handleAddPhoneNumber","numberOfPhoneCount","numberOfPhoneLimit","SupervisorsModal","DistinctiveRingModal","DNISModal","QueueStatusModal","CallDispositionCodeModal","AcdForcedModal","AcdHolidayModal","changeAction","actionValue","AcdNightModal","QueueBouncedModal","QueueComfortModal","QueueOverflowModal","QueueStrandedModal","ConfigureProductModal","E911EmailNotificationModal","emailAddress","EmailAddress","displayAddress","DisplayEmailAddress","CurrentLocation","EmergencyCallNotificationEmail","IsEmailValid","selectedLocationAccountNumbers","selectedLocations","Locations","saveMessage","DisplayEmail","updateParentArrayItem","SendTestEmail","savingTest","StreetAddress","savingShowTestSuccess","savingShowTestError","testResultsMessage","handleEmailChange","LocationOverride","SelectAllLocations","isSelectAll","isAllLocationsSelected","UpdateSelectedLocations","getCheckBoxHeader","getCheckBoxListing","bChecked","getLocationRows","getLocationsCheckBoxList","getTestResultMessage","LocationOverride911Email","emailDisplay","textDisplay","colspan","LocationLink","locationID","ServiceLink","UserLink","LocationEditButton","getLocations","updateLocationFromModal","updatedLocations","loc","updatedLocation","prefilter","searchLocations","salesGroupId","E911EmailModal","E911Link","locationsContent","Location911Email","StreetSVC","CitySVC","StateSVC","ZipSVC","sortLocations","locationEditModal","LocationAccountCodesModal","LocationAdvancedHuntingModal","SetPrompts","LocationAutoAttendantModal","handleTab","promptValue","dataset","getPromptControl","SetSubmenu","LocationAutoAttendantTreeModal","locationCallPark","largeStep","showButtons","LocationCallPickupModal","LocationConferenceBridgeListModal","LocationInstantConferenceModal","phoneNumberCountReachLimit","LocationMusicOnHoldModal","LocationSeriesCompletionModal","LocationManageLinesModal","LocationCustomContactDirectoryModal","LocationManageUsersModal","LocationManageGroupCallingLineIDModal","ScheduleModal","getRecurMonths","getRecurDays","getRecurWeekOfMonths","getTitle","getInfo","getRecurrentControl","getTime","getRecurEnd","DepartmentModal","getDepartmentSettings","EnterpriseDirectoryModal","savingOrConfirming","footerBtnClass","hideSpinnerDelay","statusMsgDelay","GroupFqdnModal","fetchFqdns","locationAccNum","fqdnList","fqdns","fetchDeviceLocation","currentFqdn","FQDN","newFqdn","EncryptedAudio","TransportProtocol","useTcp","VlanId","useVlanId","help","fqdnsOptions","fqdn","fqdnsOption","setNewFqdn","showErrorStatus","handleUpdateSuccess","parentCallback","handleUpdateError","saveDeviceLocationInput","showSaveStatus","getModalBody","modalClass","GroupVLANModal","setUseVlanId","setVlanId","validateForm","setUseTcp","protocol","setAudioIsEncrypted","validForm","showValidationError","saveGroupVlanSettings","notSavedErrorMsg","vlanIdDivSettings","attr","saveBtnsClass","formClass","addingDevice","invalidMessageClass","showInvalidMacMsg","showRequiredFieldMsgs","invalidFields","showInvalidMessage","invalidSwapMacMsgClass","showInvalidSwapMacMsg","validMacClass","showValidMacMsg","fetchModels","fetchDeviceTns","fetchDeviceSelectOptions","fetchDeviceConfig","fetchDeviceAndTns","deviceProps","fetchDeviceLocationProps","locationProps","deviceTns","LocationFQDN","LocationVLAN","LocationTransportProtocol","LocationEncryptedAudio","TransactionNumbers","fetchModelConfigs","fetchDeviceConfigs","configProps","device","initialFormState","deviceIsAssigned","AssignedTo","onlyUnique","self","tnProps","tn","transactionNums","macAdressFormats","showOn","autoHide","ReactDOMServer","renderToStaticMarkup","spanOptions","Lk","portNum","disableIfTnMissing","disableBlfForFirstPort","propName","disableBlfIfFirstLineisSca","matches","portsConfigured","port","PortNumber","Sca","firstPortIsSca","isDisabled","disableIfNotAvailableForModel","isScaAndNotExecutiveLine","modelConfig","selectedModelConfigs","IsMWIAvailable","ticker","lineTypeTicker","TnComboBox","selectedValue","selectedTn","tnNumbers","newTn","TnAndLine","onChangeCombo","comboPortNum","textField","dataItemKey","onFilterChange","tnOptions","returnVals","availableTns","LineName","portSettingCheckBoxes","isDisabledVal","tooltipText","setStateCallback","portSettings","resize","DisplayName","Span","TCP","switchClass","parentState","VlanClass","encryptedAudioSwitchClass","hideSwitch","modelConfigs","TlsFqdn","protocolSwitchClass","validVlanId","vlanIdValidationClass","EnableVlanIdText","updateVlanField","isNone","finalConfigProps","invalidVlanId","isValidVlan","switchHandler","groupIpTransportProtocolSettings","protocolRadioButton","isSelected","perms","DevicePerms","setProtocol","Audio_Signaling","configSwitches","tcpOrUdp","switchProtocol","enableVlan","CurrentVlanId","setEnableVlan","boxShadow","outline","TextVlanId","vlanId","updateVlanId","UseLineKeysForBLFList","setSideCarOnlyBlfPlacement","isEnabled","newConfigProps","setEncryptedAudio","IsVideoEnabled","setVideoIsEnabled","deviceType","Ports","newDeviceModel","NewMAC","IsFirstPortMWI","invalidMacMsg","enableSwapDevice","showRebootSuccess","showRebootFailure","ConfigureDevicesModal","setOptions","models","deviceModels","setDeviceConfiguration","DeviceType","matchedDeviceConfig","Fqdn","revisedPorts","reviewAndOverrideDisabled","IsVlanAvailable","startingState","unassignedDevices","resetState","matchedNumber","ph","getBlankPort","deviceMatches","DeviceModelKey","handleSwapDevice","handleEnableTransportProtocol","enableTransportProtocol","handleRebootSuccess","pageThis","handleRebootFailure","handleSaveSuccess","loadDevices","showSuccessModal","closeSaveMessage","showErrorAndResetModal","numberOfPorts","NumberOfPorts","noUnassignedDevices","devicesAreAvailable","showUnassignedDevicesLink","showNewMacField","isSwapModelDisabled","unassignedMacOptions","MacAddress","rebootDevice","saveDevice","devicePropsToSend","setInvalidFormMessage","deviceModelSelection","configuredPorts","TlsSrtp","IsSwapOperation","ports","invalidFormMsg","saveButton","invalidFormClass","swapDeviceClass","Assigned","globalHelper","Swap_Device","FqdnSelection","selectedFQDN","IsFQDNAvailable","Setup_FQDN","setFqdn","newDeviceSelector","validateSwapDeviceModel","DevicyType","lineSettingsTable","portSettingRows","setPortSetting","portnum","propname","newPorts","findOrInitializePortsSettings","portIndex","setPhoneOrExt","spanValue","spannedPort","SipAuthenticationId","LineTypeTicker","portClone","portIds","numPorts","apply","portMatches","isExecutive","portId","tns","filterTnsByTicker","usedTNs","isFaxModel","modelName","RegExp","matchingPorts","selectedTnOption","lineIsSpanned","Mwi","lineTicker","MWI","Blf","Cc","IsDelete","spannedPorts","handleMacChange","newMac","newConfig","modelMatches","dev","MakeModel","deviceSelection","handleDeviceSelection","NewMacChange","AssignedToLabel","RequestSentLabel","RequestSent","DeviceHistoryModal","fetchDevicesHistory","devicesHistory","sortHistory","uniqHistory","DeviceResetModal","isAssigned","unassignOrRemoveLabel","showStatus","successMsg","unassign","option","buttonClass","paragraphClass","unassignOrRemoveButton","acqCode","fields","isRpxSession","loadingLocations","initialValue","DeviceSettingsModal","fetchDeviceInfo","assigned","AcquisitionCode","notes","Notes","originalDeviceProps","showOriginalValues","currentDeviceProps","deviceModalOptions","checkFields","clearFormAndCloseModal","showAll","showFailedToSaveForm","postDeviceInput","successAction","p","deviceInputData","newMAC","saveDeviceAndAddNew","setDeviceNotes","fetchDeviceModels","deviceModelOptions","deviceModel","deviceModelOption","acqCodeClass","acqCodeOptions","selectField","fieldType","validateSelectField","selectFieldValue","deviceNotesField","noteFieldValue","newInvalidFields","Set","validateMacField","macAddressFieldValue","instructions","showModalBtn","DeviceAddModal","DeviceEditModal","assignedTo","ServiceNumberClickPop","showTns","portsRevised","newPort","loadTnList","TnCount","GroupFqdnTab","currentLocation","DeviceLocation","loadLocationDetails","currLocation","setLocation","locationValue","retrieveFQDNDetails","FQDNDetails","DeviceLocationDetails","setFQDNList","setDeviceLocationDetails","resetForm","getTabBody","GroupVLANTab","fetchVLANSettings","HistoryBtn","ServiceNumbersClickPop","DevicesList","bShowAll","activeTab","fetchDevices","forceRefresh","setFullListings","devicesCount","fetchDevicesCallback","allDevices","visibleDevices","normalizedData","VideoEnabled","InsertDate","assignedDevices","allDevicesNoFilter","showAssigned","sortDevices","showUnassigned","unassigned","showAllDevices","showGroupFQDN","showVLANSettings","searchDevices","exportDevicesBtn","exportDevices","tabContent","configureBtn","Delete_ExistingDevice","unassignBtn","tabClass","EmptyCell","emptyCell","IsRegistered","RegistrationType","ConfigureBtn","UnassignBtn","currentTab","existingArray","Setup_NewDevice","apiGetMACDPermissions","apiGetUserLevelAddons","loc_acct_num","apiGetUserAvailableAddons","partNum","apiGetUserAssignedAddons","apiPostUnassignedAddons","apiPostAssignedAddons","apiGetLocations","apiGetProductPropertiesWithParams","PartNumber","apiLoadMACDWithParams","OrderId","apiLoadMACDLineItemList","apiLoadMACDLineItemDetailListWithProperties","LineItemId","apiGetTerminatingNumbersWithParams","LocationId","apiAddServicesOrderWithLineItem","apiAddServicesSaveLineItem","apiAddServicesDetailItem","apiUpdateDetailItem","apiUpdateLineItem","apiSavedOrderPathWithParams","apiPricebookPathWithParams","apiGetRCStateList","apiGetDefaultRateCenterDetails","apiGetRCNameByState","abbr","apiDiscardOrder","apiDiscardLineItem","apiDiscardItemDetail","apiDiscardTrunkGroupConfig","apiGetLocationList","apiGetLocationDetails","apiValidateMACD","apiValidateMACDLineItems","apiValidateMACDDetailItems","apiGetMPOLocation","apiUpdateLocation","apiSubmitOrder","apiTerminateOrder","apiGetListingsForChangeExtension","apiUpdateExtension","apiGetChangeLineTypeListings","MomentumAccountNumber","apiSubmitChangeLineType","apiGetChangeListingList","apiSubmitChangeListingList","apiGetChangeSeatType","apiSubmitChangeSeatType","apiGetChangeCnam","apiSubmitChangeCnam","apiGetBlockType","apiSubmitBlockType","apiGetVTNList","apiSubmitVTN","apiRetrieveIPTrunks","apiLoadMACDTrunkItemListWithProperties","apiLoadMACDAddressListWithProperties","apiAddServicesIPTrunkItem","apiUpdateTrunkItem","apiDiscardTrunkItem","apiValidateTrunkItem","IPTrunkConfigId","locationSelectLabel","locationAcctNumber","fetchItemConfig","fetchRateCenterDetailsByServiceAddress","fetchTerminatingNumbers","fetchLocationDetails","fetchRateCenterOptions","StateAbbr","fetchAvailableAddons","locationId","RetrieveOrderDetails","fetchSavedOrder","fetchLocationList","fetchLineItemList","fetchLineItemDetailList","fetchTrunkItemList","fetchOrderAddresses","GetItemValidations","fetchOrderValidation","fetchPricebookDetails","fetchMPOLocation","fetchLineItemValidation","fetchDetailItemValidation","UpdateLineItemInOrder","LineItem","AddDetailItemToOrder","DetailItem","UpdateDetailItemInOrder","RemoveTrunkGroupConfigFromOrder","RemoveDetailItemFromOrder","DetailId","ItemValidations","LineItemErrors","DetailItemValidations","TrunkGroupValidations","OrderValidationErrors","o","ErrorSource","LoadItem","li","PartDescription","MPOLocationId","TerminatingNumbersList","DefaultRateCenterOptions","RCStateOptions","DefaultRCState","DefaultRCName","CatalogItem","IsReadOnly","NewItem","CatalogItemId","MRCAdjustedPrice","MRCDiscountPercent","NRCAdjustedPrice","NRCDiscountPercent","Quantity","NewCount","PartNum","configurationDetails","CatalogTicker","isConfigured","ReadOnly","MapConfigDetails","newCount","configDetailsArray","OrderItem","DBConfigurationDetails","DBTrunkGroupConfigs","TrunkGroupList","AddressItems","ValidateTN","newArray","iCount","trunkItem","trunkLabel","IPTrunkGroupCustomerProductId","LineDescription","ParentDetailId","ParnetDetailId","newEntry","ItemNumber","RCState","RateCenterState","RCName","RateCenterName","LineFirstName","LineLastName","CNAM","ListingType","ListingName","OmitAddress","LineEmail","TerminatingNumber","InventoryTN","AccessCode","IPTrunkGroupID","TrunkId","IPAddress1","IPAddress2","IPAddress3","IPAddress4","IPAddress5","IPAddress6","IPAddress7","IPAddress8","IPAddress9","IPAddress10","IPAddress11","IPAddress12","TrunkDescription","Description","AssociatedTrunkDescription","StartDate","CNAMDelivery","AllowInternational","TechPrefix","GroupPolicy","ServiceStatus","getTollFreeStateOption","RateCenterOptions","getTollFreeCenterOption","Has911","GetE911AddressObject","Temp911AddressId","NewConfigItem","GetBlankE911AddressObject","AddressId","BuildingValue","FloorValue","Unit","UnitValue","addressItem","ErrorMessageDisplayItem","rcStateOption","Abbreviation","NAME","rcNameOption","rc","InventoryAvailable","RCNameAbbr","initialObj","rcCenterOptions","getDefaultColumnConfig","ShowTNFields","ShowTN","ShowCNAM","ShowLineFirst","ShowLineLast","ShowExtension","ExtensionRequired","ShowListingName","ShowListingType","ShowOmitAddress","ShowYPH","ShowDeviceManufacturer","ShowDeviceModel","ShowDeviceMAC","ShowTemporaryNumber","ShowLineEmail","ShowAccessCode","ShowRCFields","ShowTerminatingNumber","IsRequiredStandAlone","ShowTrunkGroupPicker","ShowIPAddresses","ShowTrunkDescription","ShowStartDate","ShowCNAMDelivery","ShowInternational","ShowTechPrefix","ShowGroupPolicy","ShowServiceStatus","ShowE911","ShowDescription","ConfigType","getColumnConfigFromDatabase","prodProps","usoc","columnConfig","has_tn","show_tn_col","show_cnam_col","show_line_name_col","show_extn_col","ext_required","show_list_name_col","show_list_type_col","show_omt_addr_col","show_yph_col","show_dev_manufacturer_col","show_dev_model_col","show_dev_mac_col","show_temp_col","show_line_email_col","show_access_code","show_rc_col","show_trm_num_col","trg_associate","trg_asscoiate","show_trg_ipaddr_col","show_trg_description_col","show_trg_startdate_col","show_trg_cnamdel_col","show_trg_intl_col","show_trg_techprefix_col","show_trg_grppol_col","show_trg_status_col","has_911","show_detail_description_col","config_type","ReviewAndSaveNoConfigItem","ColumnConfig","apiPropertiesPath","pp","reason","apiPathAddDetailItem","newReqBody","detailResponse","detailBody","configuredCheck","newConfigDetails","TrunkItemValidations","errors","bCheck","UnsavedItems","cd","SourceId","AddressValidations","ReviewPageUrl","oid","vs","uri","ConfirmPageUrl","AddEditPage","UserAddOn","AllSearch","DisplayLocationRequiredMsg","GetDBBlockValue","Directory","Operator","International","DomesticLD","GetUIBlockObject","BlockString","splitArray","ConvertListingTypeNumToText","numberString","MACDTYPES","AddServices","AssignAddOn","UnassignAddOn","ChangeSeatType","ChangeLineType","ChangeListing","ChangeCNAM","ChangeExtension","ChangeBlock","ChangeVirtualTerminatingNumber","EditAddOrder","ChangeIPTrunkCpCount","MACDStatus","Processing","Submitted","Deleted","Clarification","OnHold","CheckPermissionsForLinks","macdType","MacdPerms","addServices","assignUserAddons","unassignUserAddons","changeSeatType","changeLineType","changeListing","changeCNAM","changeExtension","changeBlock","changeVnTerminatingNumber","ipTrunkCallPathBurst","MACDTABS","AddOns","AllRequests","OpenRequests","QuantityValidationRules","DependencyList","getIPTrunkGroupOptions","trunks","record","ConcatId","MACDSaveStatus","minHeight","ValidationMessagePopup","ValidationMessage","validationMessage","require","ValidationCell","MacdSearch","SearchFunction","BlockTab","ValidationErrorMessages","TabHasChanges","fetchListings","serviceListings","BlockServices","gridListings","itmInListings","indexOfListing","CancelYesAction","isCancelDialogOpen","closeCancelDialog","handleCancel","changedItems","HasChanges","macdHelper","originalListings","OriginalListings","submittedItems","oldService","OldService","BlockCallDirectoryAssistance","BlockOperatorAssistance","BlockInternationalCalling","BlockDomesticLongDistance","reqBody","validationErrors","responseObject","MPOStatus","MPOErrorList","MPOResultText","finally","locationName","AddonCount","Block","isExtensionOnly","responseData","unformattedResponse","updateBlock","blockServices","originalItem","gridItm","blockItm","idx2","BlockTypeCell","GridHeight","blockDirectoryAssist","blockOperatorAssist","blockInternational","blockLongDistance","disableField","CnamTab","CnamServices","updateInputValue","isNumeric","newValue","ListingsTemp","OldLineEmail","NewLineType","NewCatalogItemId","NewSeatType","NewTypeDescription","EnableCNAM","CnamInputCell","ExtensionTab","isLocationPopulated","onExtensionChange","matchingListingIndex","listing","oldListing","newValInput","querySelector","newListing","NewExtension","checkForChanges","updatedListings","getUpdatedListings","fullListings","IsCancelDialogOpen","triggerRowLevelValidation","CustomerProductIds","allErrors","UpdatedListings","postObject","formPostObject","handleErrors","getListings","searchInput","filteredListings","onSearchInputChange","maxHeight","InputNumericTextCell","hasAddons","readOnly","ShowStatuses","previousProps","currentLocationName","incomingLocationName","orderErrors","errorMessages","extractResponseErrors","triggerOrderLevelValidation","InfoCell","PricebookModal","SetProductSetTypeName","ProductSetTypeName","removedUSOCs","restrictedUSOCS","sd","disabledUSOCEntry","USOC","DisabledMessage","MSP_Visible","ShowListing","Message","sortSearchResults","getSearchResults","products","editable","Editable","button","LineTab","setProductSetTypeName","productSetType","productSetTypeName","termNumberList","TermNumberList","NewLineTypeList","NewLineTypeOptions","NewTypeList","EditLineFirstName","EditLineLastName","EditListingType","EditListingName","EditOmitAddress","EditCNAM","EditTerminatingNumber","EditLineEmail","RenderMandatorySymbol","mandatorySymbol","LineTypeServices","CurrentPartNum","NewList","CurrentPartDesc","restrictedUsocs","restrictedItem","origOption","updateNewLineType","itmInArray","originalItm","validationMessages","delIdx","show_trm_num_textbox","toBeSaved","FirstNametoBeSaved","LastNametoBeSaved","EmailtoBeSaved","ListingNametoBeSaved","CNAMtoBeSaved","enableOmitAddress","enableListingName","listingName","omitAddress","EnableListingName","EnableOmitAddress","updateTerminatingNumber","enableVal","newVal","isNaN","NewLineTypeCell","ListingTypeCell","InputCheckField","InputTextCell","AutoCompleteCell","ReadOnlyStatus","EnableListingType","NewLineTypeOptionsList","AddOnCount","isE911SIPTrunk","termArray","EnableTerminatingNumber","autoCompleteDOM","ListingTab","ListingServices","formattedData","SavingMessageControlE911","AddressFormE911","originalAddress","addressEntry","parentList","parentIndex","validateInComponent","validateTN","displayTopMessage","TopMessage","CustomerId","saveInList","addressObject","GetAddressObject","IsBlankAddress","UpdateEntry","stateoriginalAddress","ToggleEditList","ClearAddress","clearAddress","ResetToDefaultAddress","updatedEntry","SeatTab","SeatTypeServices","selectedSeat","NewSeatList","Address","E911AddressId","showE911Column","e911AddressItem","e911Index","updateNewSeatType","originalData","originalDataSI","newSeatListOptions","showE911Modal","selectedIndex","handleE911AddressUpdate","isSuccess","addressId","saveE911Address","closeE911Modal","updatedAddress","existingItem","newValidationErrorMessages","newListings","idxMessage","e911Width","serviceNumberWidth","SeatTypeSelectCell","E911AddressCell","NewSeatTypeOptionsList","addressDisplay","address1","address2","address3","VirtualTab","VirtualTermServices","newTermNumber","FullTermList","list","NewTermNumber","virtualTermServices","vtnItm","AddonCatalogTicker","AddonCustomerProductId","AddonPartDescription","AddonPartNumber","AddonServiceNumber","AddonUserPackageId","EditTermNumber","InputAutoCompleteField","MacdOrder","fetchOrderDetails","getColumnConfig","MacdType","OrderDetails","LocationDetails","DetailItems","DetailArray","AddressItem","Product","NewProduct","NewPartDesc","ServiceID","SeatType","LineType","CallLimitNew","IPTrunkGroupCallPathsNew","CallLimitOld","IPTrunkGroupCallPaths","neededOrderDetails","E911Address","ShowServiceID","ShowLineName","ShowPrimaryExtension","ShowSeatType","ShowLineType","ShowBlockType","ShowAddonPartNum","ShowTrunkID","ShowCallLimitOld","ShowCallLimitNew","ShowNewProduct","ShowE911Address","ModalClass","ShowCallLimit","ShowLineTypeOld","blockObject","WindowWidth","classNames","filtercell","defaultItem","maxWidth","hasValue","React","MacdOrderListings","ListingPage","searchOrderId","searchMACDType","searchAcctNumber","searchCustomerName","searchCreated","searchCreatedBy","MACDListings","showOk","deleting","isConfirmationDialogOpen","ConfirmationMessage","ConfirmationTitle","tempRecord","fetchSearchResults","orderProcessFlag","CreatedDate","ModifiedDate","Filler","handleViewMACD","MacdTypeName","handleTerminateMACD","terminateMacd","dialogMsg","bFailure","records","r","handleCloneMACD","handleViewMACDNotes","handleViewMACDStatus","handleEditMACD","handleCheckMACDError","ConfirmationYesAction","DeleteMACD","handleDeleteMACD","setGridData","getMACDListings","handleClearFilter","closeConfirmationDialog","dropDownOptions","filterCell","CommandCell","ClearFilterCell","MyCommandCell","flag","ProcessFlag","macdtype","orderSystem","OrderSource","editLink","deleteLink","terminateLink","MacdOrderListingsWithRouter","OpenReqTab","IpTrunkTab","getNewPlanList","NewPlanList","NewQuantity","quantityComparison","quantityIsNan","newPathPlan","newPathCatalogId","inconsistentCatcher","DropdownCell","inputCell","existingPath","finalOptions","Macd","handleTabEdit","tabHasChanges","DisplayCancelOrderConfirmationTab","isCancelConfirmOpen","tmpTab","apiLocationsPathWithParams","LocNum","changeLocation","getLocationName","acctNum","removeItem","tmpAccountNumber","tmpLocName","selectedOptions","LoadAddServices","LoadUserAddOn","LoadAllSearch","DisplayAddServices","DisplayManageAddOns","CancelConfirmationYesAction","closeCancelConfirmationDialog","getTabDisplay","act","seatTypeHTML","cnamHTML","blockHTML","extHTML","lineTypeHTML","listingHTML","virtualHTML","ipTrunkHTML","hasIpTrunk","MacdAll","SaveSpinner","dateValue","getDate","ConfigureClassName","quantity","rcStateOptions","getProductProperties","productData","catalogItemId","defaultRateCenterOptions","defaultRCState","defaultRCName","defaultLineFirstName","defaultLineLastName","defaultCNAM","serviceAddressRCState","serviceAddressRCName","serviceAddressRCNameOptions","TerminatingNumbers","TNDefaultDiv","CurrentDetailId","CurrentItemNumber","SaveQueue","tmpQuantity","DisplayValidationModal","SaveMessage","updating","ProductName","IPTrunkGroupOptions","IPTrunkGroups","RemovalError","getReadOnlyStatus","fetchProductProperties","fetchRcNameList","rcState","configDetails","postProductUpdate","SaveAll","closing","waitingOnTempUpdate","handleQuantityUpdate","completeModalClose","errorList","CycleThruSaveQueue","promises","SaveLineItemDetail","ConfigurationDetailArray","cda","detailId","detailMessages","lie","trunkError","LineMessages","SipsError","arrSaveQueue","responses","DetailItemsFromQueue","latestSave","updateStateValue","updateRCValue","getTrunkGroupOptions","updateTrunkGroupSelection","selectedTrunkGroup","IsNew","updateDropdownColumnSelection","selection","handleUpdateDate","ServiceDateProp","clearListingName","saveQueue","productConfigs","pc","RemoveNewTrunkGroup","lineItemResponse","lineItemFromDB","ci","AddItemToSaveQueue","ConfigItem","saveItm","Number","responseBody","itmToUpdate","idxItem","SaveTrunkGroup","TrunkGroupSaveResponse","TrunkGroupDetails","UpdateTrunkGroups","postBody","Direction","IsSuccess","ErrorDisplay","htmlContents","gridHTML","getGrid","dynamicColumn","editVal","classTitle","columnArray","Show911","RCStateCell","RCNameCell","TrunkGroupPickerCell","InputDateField","GroupPolicyColumn","ServiceStatusColumn","handleDefaultLineFirstNameChange","handleDefaultLineLastNameChange","handleDefaultLineCNAMChange","defaultLineCNAM","SetRCToDefaultByServiceAddress","rcName","rcNameOptions","refreshDefaultRCName","rateCenterArray","ApplyDefaultLineNames","firstName","lastName","ApplyDefaultCNAM","cnam","ApplyDefaultRCValues","ResetRCValues","displayValidationModal","closeValidationModal","delayedUpdate","handleRemoveItem","RemoveItemFromOrder","showActionButtons","OrderItemIdx","displayTNDetails","bSave","isReadOnly","close","trunkGroupArray","finalArray","blankEntry","groupPolicyOptions","statusOptions","editID","NPANXXLookup","ClearRCValues","MacdAdd","orderId","productSearchText","loadingAddedProducts","loadingPB","SelectedLocationId","SelectedLocationName","RemoveItemId","isConfirmSaveDialogOpen","RetrieveSavedOrder","RefreshCatalog","loadingSO","StateOrderDetails","LineItems","TrunkItems","momentumAcctNum","selectedLocation","toUpperCase","fetchIPTrunks","LoadItemConfigs","pricebookDetails","catalogItm","detailItemErrorArray","div","detailItem","lineItemErrorArray","lineError","existingTrunkGroups","originalOrderDetails","fetchRcStateList","Details","fullPricebookDetails","LineItemRemoved","newTrunkGroups","newTrunkGroupOptions","array","itmToRemove","find","quantityRules","removedTrunkGroups","rd","RemoveTrunkGroupsFromDB","otherUSOCs","dependentOrderItems","ReviewAndRefreshQuantityDependencies","productCard","product","updateOrderItemFromModal","ipTrunks","newIPTrunks","configDetailIds","ipt","CallPathId","ipTrunkOptions","RemoveTrunkGroups","ProductItem","arrayIdx","updatedTrunk","newTrunk","dependencyRules","obj","existingLineItem","bShowError","IsAdd","existingTrunks","newTrunkEntry","trunkOptions","trunk","idxCD","AreTrunkGroupAssociationsValid","pricebook","pricebookItem","dbLineItem","ActivationCharge","parseFloat","BasePrice","UpdateNeeded","handleCancelClick","CancelOrderConfirmation","SaveAddItemToOrder","IsContinue","Redirect","bCreate","reqLineItem","LineItemSaveData","messageBody","NewOrderId","setConfigs","Order","AddLineItemToState","tempLocationId","tempLocationName","creating","RateCenterDetails","serviceAddress","ServiceAddress","revisedTerminatingNumbers","AdrState","defaultRCOptions","refreshDefaults","OrderDetailArray","bConfigured","isChange","showCancelAndContinue","handleContinueClick","disabledUSOCs","sortPricebookDetails","setupLocations","defaultOption","confirmLocationChange","nativeEvent","selectedText","existingTrunkEntry","CallPathCustomerProductId","trunkGroupDetailRecord","callPath","handleAddProduct","MyAddCell","fullCatalog","idxCatalog","existingProducts","arrayPC","productOptions","AddedProducts","MacdReview","maxDate","setDate","submitting","isConfirmSubmitDialogOpen","MaxServiceDate","ServiceDateError","updateServiceDate","ServiceDateUpdateMessage","OrderLocationErrors","DisabledUSOCs","ShippingAddress","bReadOnly","trunkGroups","LoadClosedSupportingData","LoadSupportingData","MPOLocationDetails","ServiceDate","RequestDueDate","DateErrorMsg","sortOrderDetails","getCustomerId","ServiceDateContent","serviceDate","handleUpdateServiceDate","errorLine","CheckConfigurations","ServiceDateVal","reqObject","responseMsg","handleSubmitClick","SubmitOrder","bIsConfigured","ns","ValidationMessages","redirectToConfirm","DisplayOrderLocationErrors","ole","getIPTrunks","getIPTrunkOptions","handleBackClick","updateTrunkGroups","removeTrunkGroups","TrunksGroups","TrunkGroupOptions","MacdConfirm","ListingArr","LoadLocationData","LocationListDetails","LocationFromList","AddressLine1","AddressLine2","Listing","LoadLocationsForAccount","exportOrderDetailsBtn","exportOrder","print","MacdUserModal","orderSubmitted","userListings","gridCopy","gridData","postCompleted","isAssign","AvailableCount","countAvailable","AssignedCount","countAssigned","selectedForAction","getChangedItems","IsSelected","remaining","correspondingBSSavedItems","initialItems","assignedArr","unassignedArr","savedToBroadSoft","BSSaved","postAddons","changedItemsCopy","originalList","assignReq","Addon","parentAddon","unassignReq","BSAssigned","BSStatus","BSAssignedServices","BSUnassigned","BSUnassignedServices","BSErrors","BSErrorList","MPOError","successfulPost","fetchUserAddons","updateConfiguredVal","refresh","handleCounts","users","overflowY","confirmationYesAction","Fragment","APIError","MyActions","selectedVal","countRemaining","updateConfiguredValues","borderColor","MacdUser","productListings","handleRefreshAfterSubmission","fetchUserLevelAddonList","getCurrentLocation","CountCell","remainingCount","CountRemaining","CountAvailable","CountAssigned","assignBtn","assignedCount","MyCountCell","FQDNSetupModal","showClearForm","validFqdn","delayedValidation","showInvalidFqdnClass","verifyValidFqdnClass","saveOnEnter","saveNewFqdn","updatedFqdns","removeFqdn","removedFqdn","closeSavingMessage","fqdnsTable","fqdnRow","displayTimedStatus","timer","AutoAttendantRepoManager","locValues","setLocValues","selectedLocs","setSelectedLocs","business","after","holidays","hrsValues","setHrsValues","locSelect","hrsSelect","selectAll","setSelectAll","loadingOverrideRepo","loadingAAList","loadingAAAOverride","load","msgDetails","fetchMsg","setFetchMsg","filesMsg","applyMsg","fileClickMsg","deleteMsg","dispErr","setDispErr","setShowDeletePrompt","serviceList","setServiceList","setFiles","locationsData1","filteredLoc","setFilteredLoc","fileName","setFileName","uploadFile","setUploadFile","fileSelected","setFileSelected","getFilesUpdate","setGetFilesUpdate","uploadRef","deleteFileName","setDeleteFileName","isCollapsedTwo","setIsCollapsedTwo","isCollapsedOne","setIsCollapsedOne","isCollapsedThree","setIsCollapsedThree","isCollapsedSeven","setIsCollapsedSeven","getFiles","prevLoading","addFiles","req","Content","includes","verify","i2","onClear","onApply","dataItemKeys","AnnouncementName","BusinessHours","AfterHours","Holidays","AutoAttendants","onCancel","alert","handleSelectAllChange","submissionMsg","scrollTo","deleteFiles","fontFamily","Upload","defaultFiles","batch","multiple","async","autoUpload","showFileList","onAdd","allowedExtensions","selectedFiles","affectedFiles","onload","fileContent","getRawFile","withCredentials","restrictions","maxFileSize","getUsedServiceList","messageObj","announceSelect","verticalAlign","size","fillMode","rounded","itemName","departmentIndex","onSaveDepartment","onDeleteDepartment","setName","ParentDepartment","parent","setParent","newName","setNewName","availableParentDepartments","setAvailableParentDepartments","isAddDepartmentType","fetchAvailableDepartments","departments","saveDepartment","deleteDepartment","availableParent","DepartmentItem","showCollapse","setShowCollapse","FullPathName","fetchDepartments","departmentsData","NewDepartmentName","updatedDepartments","cancelEditDepartment","EnterpriseDirectoryWindow","directory","directoryType","closeWindowPortal","externalWindow","screen","availWidth","availHeight","containerEl","createElement","currentWindow","write","appendChild","copyStyles","printWindow","createPortal","sourceDoc","targetDoc","styleSheets","styleSheet","cssRules","newStyleEl","cssRule","createTextNode","cssText","head","newLinkEl","rel","CardDetail","borderStyle","borderWidth","flex","nameField","lineHeight","userIdField","numberField","extensionField","addressLine1Field","cityField","stateField","zipField","EnterpriseDirectoryDetails","EnterpriseDirectorySummary","fetchEnterpriseDirectory","directoryData","gridPageChange","items","isEnterpriseDirectoryWindowOpen","buttonCount","previousNext","resizable","EmergencyCallNotificationModal","fetchEmergencyCallNotificationSettings","notificationsData","sendTestEmail","emergencyCallNotificationSettings","updateEmergencyCallNotificationSettings","gap","OverrideEmailForGroups","AgentDefaultSettingModal","fetchAgentDefaultSettings","agentDefaultSettings","updateAgentDefaultSettings","checkForceUnavailable3","enableGuardTime","Boolean","UseSystemDefaultGuardTimer","EnableGuardTimer","GuardTimerSeconds","UseSystemDefaultUnavailableSettings","ForceAgentUnavailableOnDNDActivation","ForceAgentUnavailableOnPersonalCalls","ForceAgentUnavailableOnBouncedCallLimit","NumberConsecutiveBouncedCallsToForceAgentUnavailable","ForceAgentUnavailableOnNotReachable","UnavailableCodesSectionItem","onUpdate","onDelete","onItemChange","showItemDetail","setShowItemDetail","UnavailableCodesItem","itemData","setItemData","updateAgentUnavailableCode","deleteAgentUnavailableCode","AddAgentUnavailableCodeItem","newItem","setNewItem","showAddItem","setShowAddItem","addEntAgentUnavailableCode","AgentUnavailableCodesModal","reloadView","fetchAgentUnavailableCodes","agentUnavailableCodes","getIfDefaultCodeOptionNotSelected","unavailableCodesData","isForceUseOfAgentUnavailableCodesOn","ForceUseOfAgentUnavailableCodes","hasDefaultCodeOptionSelected","DefaultAgentForceUnavailableCode","hasActiveCodeForDefaultCode","UnavailableCodes","some","updateAgentUnavailableCodes","activeCodes","availableCodeOptions","updateItem","updateCodes","defaultOptions","unavailableCode","isAnyCodeActive","hasCodes","EnableAgentUnavailableCodes","DefaultAgentUnavailableCodeOnDND","DefaultAgentUnavailableCodeOnPersonalCalls","DefaultAgentUnavailableCodeOnConsecutiveBounces","CallDispositionCodeSectionItem","selectToDelete","onClose","CallDispositionCodeItem","setSelectedTab","usages","setUsages","getEntCallDispositionCodeUsages","updateCallDispositionCode","usedByItem","Id","Type","AddCallDispositionCodeItem","CallDispositionCodesTable","CallDispositionCodesModal","fetchDispositionCodes","dispositionCodes","updateCallDispositionCodesActiveList","callDispositionCodes","deleteCallDispositionCodes","itemsToDelete","CenterRoutingPoliciesModal","fetchRoutingPolicies","routingPolicies","updateRoutingPolicies","updateCallCenterPriority","selectedCallCenter","updateCallCenters","CallCenters","callCenter","hasCallCenters","CallCenterRoutingPolicy","HOLIDAY_SCHEDULE","ADD_EVENT","EDIT_EVENT","recurrenceValues","getErrorMessage","errorResponse","formatDateToISOString","year","month","String","padStart","day","EventItem","scheduleName","scheduleType","eventItem","selectItemToDelete","onAddEvent","onCancelAddOrEditEvent","isAddEventItem","eventItemId","EventName","showItemDetails","setShowItemDetails","setEvent","showRequired","setShowRequired","currentEventName","setCurrentEventName","newEventName","setNewEventName","setRecurValue","setStartDate","setEndDate","allDayEvent","setAllDayEvent","dailyRecurrence","setDailyRecurrence","weeklyRecurrence","setWeeklyRecurrence","monthlyByDayRecurrence","setMonthlyByDayRecurrence","monthlyByWeekRecurrence","setMonthlyByWeekRecurrence","yearlyByDayRecurrence","setYearlyByDayRecurrence","yearlyByWeekRecurrence","setYearlyByWeekRecurrence","recurEndType","setRecurEndType","recurEndOccurrence","setRecurEndOccurrence","recurEndDate","setRecurEndDate","recurForEver","setRecurForEver","dayOfWeekRecurrence","setDayOfWeekRecurrence","weekOfMonthRecurrence","setWeekOfMonthRecurrence","monthRecurrence","setMonthRecurrence","setErrorMessage","RecurrenceType","EndDate","EndTime","AllDayEvent","DailyRecurrence","WeeklyRecurrence","MonthlyByDayRecurrence","MonthlyByWeekRecurrence","YearlyByDayRecurrence","YearlyByWeekRecurrence","RecurEndType","RecurEndDate","RecurEndOccurrence","RecurForEver","startDateAndTime","setHours","Hour","setMinutes","Minute","endDateAndTime","DayOfWeek","DayOfWeekInMonth","Month","checkForEventItemForm","fetchEventItemDetail","request","loadItemDetails","Interval","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday","DayOfMonth","saveEvent","ScheduleName","ScheduleType","NewEventName","getHours","getMinutes","newStartDate","setSeconds","newEndDate","updateAllDayEventAndTime","changeRecurEndType","deleteEventData","selectItemCheckbox","EventList","events","scheduleItem","hasEvents","ScheduleItem","onUpdateScheduleName","newScheduleName","setNewScheduleName","showAddEventItemSection","setShowAddEventItemSection","eventList","setEventList","closeEventItemSection","newEventList","ScheduleList","schedulesList","onShowScheduleItem","onSetListScheduleItemToDelete","listWithEvents","setListWithEvents","fetchEventsForSchedule","schedule","eventsResponse","schedulesData","eventName","listWithEventsToDelete","listItem","AddScheduleItem","addSchedule","showAddScheduleItem","setShowAddScheduleItem","createSchedule","fetchTimeSchedules","allSchedulesData","handleSelectScheduleType","timeSchedules","HolidaySchedules","TimeSchedules","selectedSchedule","showScheduleItemContent","selectScheduleItemsToDelete","scheduleListToDelete","scheduleItemsToDelete","isItemSelected","isItemInItemsToDeleteArray","itemListToDelete","updateScheduleName","NewScheduleName","updateSchedule","deleteSchedules","deleteListedEvents","eventToDelete","selectedSchedulesData","EnterpriseSettings","checkIfHasContactCenter","hasContactCenter","HasContactCenter","toggleCollapseEnterpriseSection","isEnterpriseSectionCollapsed","toggleCollapseContactCenterSection","isContactCenterSectionCollapsed","getEnterpriseSection","IsNetSapiens","getContactCenterSection","IframeSettings","updatePageIframe","setInterval","submitform","iframeChecker","ReactDom","findDOMNode","iframe","contentDocument","clearInterval","showCustomModal","CustomEditActionCell","updateTimeSchedule","CustomCheckboxCell","getiFrameTitle","iframekey","getEnterpriseSetting","getGroupSetting","showBillingMessage","user","getAccount","actionUrl","locationAccNumber","VendorId","loggedIn","Support","archive","collaborate","incontact","ivr","receptionist","skypeForBus","voiceAnalytics","Training","CallLogsAll","CallStatus","handleCallCategory","exportSansayBtn","trunkId","exportBsBtn","exportFaxBtn","newParams","VoiceMailAll","header","apiMethods","AnnouncementRepositoryModal","deleteable","deleteRow","AcceptanceModal","CallBlockModal","CallNotifyModal","CallTransferModal","CollaborateBridgeModal","ConferenceListModal","changeType","typeValue","getConferenceType","DirectCallModal","HotelingGuestModal","HotelingHostModal","PriorityAlertModal","PrivacyModal","receptionistDashboardModal","SelectiveCallAcceptanceModal","SpeedDialModal","CallForwardingModal","CallForwardingSelectiveModal","FindMeSimultaneousModal","handleAddSimNumber","numberOfSimCount","simNumberCountReachLimit","FindMeSequentialModal","PushToTalkModal","ContactCenterModal","CustomRingbackModal","RemoteOfficeModal","ClientAppModal","VoicemailToTextModal","DistributionListModal","handleAddList","numberOfListCount","numberOfListLimit","listCountReachLimit","VoicemailSettingsRow","VirtualNumberModal","PreAlertModal","ManageGreetingsRow","PinResetRow","MyServices","serviceHasChanged","firstServiceSelected","newServiceSelected","updateMyServicesMenu","currentServiceId","selectedServiceAlreadyInMenu","selectedServiceId","userServices","fetchMyServices","storeServiceProperties","noService","serviceIdentifier","selectedService","matchSelectedService","matchByServiceId","firstService","serviceLink","anchorClassName","serviceNameClassName","isDefaultOrSelectedService","servicesMenuLabel","serviceLinksClass","IsWholesaleUser","AdminMenu","hasTrunking","hasMacd","permissionsRetrieved","buildSubscriberPermissions","hasAtLeastOneAdminLink","hasMacdSettingsEnabled","MACDSettings","permissions","AllowMACDs","NEPSSettings","NepsPermitted","enableServiceChanges","TicketingPermission","HasCallRecordingMenu","buildPermissions","permsObj","Add_Services","Assign_UserAddons","changeTfTerminatingNumber","ChangeVN_TerminatingNumber","changeAddress","changeBillingInfo","Change_Block","Change_CNAM","changeCallPathCount","Change_Extension","Change_LineType","Change_Listing","Change_SeatType","disconnectServices","Unassign_UserAddons","Change_IPTrunking_CallPathPlan_and_Count","HasTrunking","HasIpTrunking","BillingAdminPermission","ShowVoiceMailReport","ShowEnterpriseTrunk","ShowActiveDirectory","MSTeamsRoutingType","EnterpriseType","IsWebExAllowed","ipTrunkTest","IsIPTrunking","serviceChangesLink","menuLink","icon","trunkingLink","LocationsLink","devicesLink","contactCenterLink","userIsContactManager","billingLink","ipTrunkingLink","ticketingLink","documentsLink","addressBookLink","entTrunkLink","adLink","msTeamsLink","ShowCallRecordingLink","userTypeIdViewOnly","every","callRecordingLink","showCallRecordingLink","webExLink","circuitsMonitioringLink","circuitDevicesLink","circuitMapLink","mfaAdminTool","operatorConnectLink","HelpCenter","userSelected","newUserId","subscriberSettings","ManageTrunkModal","TrunkGroupId","TrunkCustomerProductId","DIDAssigned","DIDUnassigned","DIDPending","SelectedAssigned","SelectedUnassigned","SelectedPending","TrunkGroups","OpenModal","fetchTrunkGroups","CloseModal","loadTrunks","blankTrunkEntry","trunkGroupOptions","RetrieveDataForAssociations","DIDs","assignedDIDs","unAssignedDIDs","DIDEntry","Status","formatDids","queue","arr","itemClass","handleSelection","didField","newSelectionList","dynamicDID","dynamicSelected","DIDQueue","currentItem","currentItemIdx","handleTransition","actionName","newPendingList","newAssignedList","newUnassignedList","selectedItems","newRecord","SubmitChanges","bError","bPartialSuccess","pending","arrAssigned","arrUnassigned","ServiceCustomerProductIdList","responseAssigns","displayErrors","assignData","responseUnassigns","ErrorList","rt","ClearSaveStatusModal","selectedTrunk","TrunkGroup","ChangeTrunkGroup","IPTrunking","trunkIDtoString","fetchTrunkList","newData","transitionToManagePage","transitionToDetailedCallLogs","TrunkID","IPCountCell","fetchIpList","LoadPop","IPContainer","IP","IPInfo","loadIpList","trunkGroupId","IpCount","IPCount","CountServiceNumbers","IPTrunkGroupServiceId","link","IconCell","IPTrunkReviewModal","modalTitle","reviewSub","successSub","failedSub","ManageTrunkGroup","formGroupDropdown","labelFor","labelName","formGroupCheckBox","formGroupInput","nodeLabel","validIp","borderRadius","fetchIpTrunk","ProvInfo","IPAddress","SIPS","Sansay","PromotionOfferPackageID","ServiceState","IncomingCNAM","TerminationCode","TerminationNotes","TNActivation","UserEmail","PseudoCarrier","E911Carrier","SentDate","LastUpdatedDate","Node1","Node2","Node3","Node4","Node5","Node6","Node7","Node8","Node9","Node10","Node11","Node12","Data","OriginalCopy","CustomerLocationId","originalCopy","updateIpTrunk","ipTrunkDTO","SubmitModalOpen","handleSubmitForm","fullIpList","validIpList","errorHandler","ipTrunkForm","IPTrunkLocationName","IPTrunkStartDate","manageTrunkModal","trunkid","handleSubmitModal","ValidIps","UnMatchedPath","CallLogsFrame","isLocation","locationDropDown","ipTrunkLocationNum","cardTitle","IPCallLogsLocation","IPCallLogsDetailed","EnterpriseCallLogsAll","getStoredCallFilters","callType","callStatus","callCategory","dateType","EnterpriseCallCategoryFilter","CallActivityFilters","date1","date2","timeDiff","abs","dayDifference","ceil","isLimited","revisedBSCallLogs","revisedSansayLogs","revisedFaxLogs","hasIpTrunking","headerTag","AllTickets","applyTicketViewFilter","ticketView","Filter","updateStarredTicket","locationAccountNumberList","userLocationMatchedList","ClosedDate","transitionToDetailPage","getTicketListings","ticketNumberCell","contactFilterCell","sortKey","nestedKey","Contact","nonEmpty","exportTickets","retailTrouble","dataServices","btnStyles","textOverflow","whiteSpace","btnStyles2","AffectedDevicesModal","fetchDeviceList","FullDevices","selectDevice","deviceList","Selected","savedDevices","FullServices","SelectDeviceCell","assignDevices","affectedDevices","saveSelections","closeLabel","AffectedServicesModal","fetchServiceList","CombinedTypes","savedServices","selectService","SelectServiceCell","ExtensionCell","assignServices","affectedServices","AffectedCircuitsModal","CircuitId","CircuitName","RedirectedFromCircuitsSaved","Circuits","FullCircuits","circuitsList","savedCircuits","DataLinkCell","NameCell","assignCircuits","object","affectedCircuits","ConfirmDeleteAttachmentModal","removeAttachment","attachmentID","filteredList","AttachmentList","AttachmentId","deleteAttachment","completed","modalFooter","DetailedTicket","fetchTicketData","fetchTicketDetails","getPriorityList","getCommMethodList","fetchEmailList","ValueList","CommMethodOptions","PriorityOptions","EmailList","fetchAttachments","diffTime","olderThan3Days","SubCategory","OtherCategory","PreferredCommunication","IsLess24","OriginalTicket","commentSubmitted","requestedClose","escalateTicket","Edit","savingTicket","AddComment","addCommentBtn","NewComment","handleSubmitNewComment","newCommentTextBox","handleWriteComment","commentDTO","CommentId","CommentBody","handleChangeSelect","bottom","formSelect","bDisabled","commentContainer","CommentList","comment","commentView","commentBody","CreatedBy","ticketEmails","FromAddress","Subject","TextBody","storeAffectedDevices","AffectedDevices","submitAffectedUtilities","storeAffectedServices","serviceID","AffectedServices","storeAffectedCircuits","AffectedCircuits","closeAndEscalateBtns","requestTicketClose","detailedViewContent","Category","TicketType","contactId","DescriptionDisabled","ticketUpdateBtns","saveTicket","undoTicket","string","exportAttachment","refName","attachmentDropdown","GetList","handleRefreshAttachments","contactSubmitted","accountID","NewTicket","getCategoryList","getTypeList","getCircuitsList","TypeListOptions","circuit","CircuitsOptions","CategoryOptions","SelectedLocation","formGroupDropDown","SelectedMixedType","renderMandatorySymbol","selectOptions","SelectedContact","ShowTextBoxesForContactDetails","SelectedPriority","SelectedCategory","SelectCircuitsFromList","TicketSubject","ContactName","ContactEmail","ContactPhone","SelectedCommMethod","handleTicketSubject","handleTicketSubjectInternal","handleTicketSubjectRFC","handleTicketDescription","TicketDescription","renderModelButtons","redirectedFromCircuitsList","storeAffectedCircuitsRedirectedFromCircuits","renderContent","newTicketContent","ticketCircuitSubject","rfc","locationRfc","circuitIdRfc","submittedTicket","submitNewTicket","cancelNewTicket","$","hide","newFileIndex","fileIndex","fileParams","circuitsData","submitNewTicketComment","SelectedOtherCategory","SelectedType","LoggedUser","ticketSubFailed","ticketSubjectCircuits","ticketDTO","AccountId","ticketType","newTicketID","ObjectId","showConfirmationModal","handleCancelTicketYes","handleCloseConfirmation","createTextBox","userEmail","DocumentRepository","fetchFiles","userFiles","DocumentType","doc","FileDescription","InsertedDate","UserFiles","AdditionalFiles","additionalFilesGrid","FileDownloadLink","userFilesGrid","URL","DocumentId","canEdit","EnterpriseContactDirectory","EditTitle","DeleteTitle","sortContacts","showAddContactButton","finalListings","getVmListings","exportVmBtn","exportVmReport","ManageTrunkGroupUsers","EnterpriseTrunkName","EnterpriseTrunkOptions","fetchAvailableTrunkUsers","Phone_Number","fetchAssignedUsers","UserIdList","TrunkUserId","handleSelectChange","render","EnterpriseTrunking","getOriginalListings","RoutingType","updateTrunkStatus","TrunkGroupName","TrunkDetails","TrunkGroupAssignments","fetchEnterpriseTrunks","EnterpriseTrunk","trunkOption","trunkRouting","EnterpriseTrunksAvailable","CurrentTrunk","TrunkOptions","fetchTrunkDetails","fetchAvailableTrunkGroups","enterpriseTrunk","OriginalDetails","transitionToManageTrunkGroup","groupId","trunkGroupName","ManageTrunkStatusCell","DataCell","ManageTrunkCell","dataDropDown","routingType","EditName","editEnterpriseTrunkField","trunkDataRow","editField","AllowTrunkNameChange","routeExhaustionAction","forwardAddress","saveEnterpriseTrunk","OldEnterpriseTrunkName","MaxNumRerouteAttempts","MaxNumRerouteWithPriority","RerouteExhaustAction","RouteExhaustionForwardAddress","EnableCapacityManagement","MaxActiveCalls","CapacityExceededInitialAlarm","CapacityExceededOffsetValue","assignedTrunks","undoEnterpriseTrunk","Enable","enterpriseTrunkUpdateBtns","utility","rowItems","original","right","hasEntTrunking","ManageEntTrunkGroup","DepartmentList","fetchDomains","Domain","DoaminList","fetchTrunkGroup","radioDataField","additionalDropField","activateField","additionalInputFeld","trunkGroupDataRow","additionalFeld","AccessDevice","AllowCallsDirectlyToTrunkGroupWithDTGIdentity","AllowCallsDirectlyToTrunkGroupWithTrunkIdentity","AllowUnscreenedCalls","AllowUnscreenedEmergencyCalls","AuthenticationUserName","CallingLineIdentitySourceForScreenedTrunkGroupCallsPolicy","EnableAuthentication","EnableNetworkAddressIdentity","EnableTrunkGroupPrefix","IncludeDTGIdentityForCallsToTrunkGroup","IncludeTrunkIdentityForCallsToTrunkGroup","IncludeOTGIdentityForCallsFromTrunkGroup","IncludeTrunkIdentityForCallsFromTrunkGroup","MaximumActiveCallsAllowed","MaximumActiveIncomingCallsAllowed","MaximumActiveOutgoingCallsAllowed","NewSipAuthenticationPassword","NewAuthenticationPassword","OTGDTGIdentity","NewTrunkGroupName","PeeringDomain","PilotUserCallingLineIdentityForExternalCallsUsagePolicy","PilotUserCallOptimizationPolicy","PilotUserCallingLineIdentityUsageForEmergencyCallsPolicy","PilotUserChargeNumberUsagePolicy","RouteToPeeringDomain","SupportConnectedIdentityPolicy","TrunkGroupIdentity","TrunkGroupPrefix","TrunkGroupUserLookupPolicy","UseSystemCLIDSourceForScreenedCallsPolicy","UseSystemSupportConnectedIdentityPolicy","UseSystemUserLookupPolicy","TrunkGroupUserLookupPolicyOptions","TrunkGroupCLIDSourceForScreenedCallsPolicyOptions","TrunkGroupSupportConnectedIdentityPolicyOptions","TrunkGroupPilotUserCallingLineIdentityUsagePolicyOptions","saveTrunkGroup","trunkGroupUpdateBtns","UserSearch","filteredArr","UserIdArr","handleUserChange","onSelectUser","ManageADUser","fecthAdUser","UserDetails","inputStyle","onChangeFunc","divStyleObj","labelStyleObj","UserPrincipalName","AzureObjectId","AccountEnabled","PostalCode","CompanyName","FacsimileTelephoneNumber","GivenName","Surname","Mail","MailNickName","TelephoneNumber","OtherMails","IsDeleted","divStyle","labelStyle","inputCheck","saveAdUserConfiguaration","AzureObjId","enterpriseId","AdConfig","ConnectorInfo","userCreds","CurrentAdSystem","hasConnector","APIToken","IdPDomain","CustomerIdPID","IdPAuthServer","IdPUserName","IdPName","IdPProtocol","IdPType","IdPUserPwd","FeatureEnabled","enableFeatureInput","selectAdSystem","fetchOktaConnector","fetchAzureAdConnector","selectAuthenticationSystem","handleTransitionToMenu","updateFeatureStatus","hasActiveDirectory","AdSystem","SyncMenu","alterData","userIdArr","fetchAdUserList","UserLinkCell","ManageUserCell","OriginalConnectorInfo","locNum","selectUser","EditForm","defaultData","customerIdpAppList","isEditMode","editItem","setEditItem","IdPAppName","IdPAppClientId","IdPAppClientKey","cancelEdit","SubmitError","CellEditButton","AppList","customerIdpApps","openDialog","handleCloseModal","RefreshData","updateCustomerIdpData","hasEmptyData","AdMain","fetchIdPConnector","ConnectorInfoCopy","fetchCustomerIdpApps","UserList","MsTeamsConfig","msTrunkData","MSTeamsConfig","Trunk","Enterprise","PrimaryGateWay","SecondaryGateWay","IsPasswordSaved","TrunkName","testingCredentials","verified","verifyCredentials","Usrn","EnterpriseTrunkId","checkDisabledBtn","MSTeamsConfigCopy","PasswordLengthExceeded","PstnPrimaryGateway","PstnSecondaryGateway","MsTeamsMaxConcurrentSessions","saveAndContinue","textDecoration","selectTrunk","targetTrunk","Trunks","fetchMSTeamsConfigInfo","configSaving","LoginName","removeTabRedirectOnSave","verifyMsgDetails","Proceed","sendErrorMessage","apiResponse","StatusDscription","convertToLocal","dateTime","convertedLocalTime","hourOffset","getTimezoneOffset","FlagIcon","FlagIconFactory","useCssModules","MsTeamsUserMenu","giveStateData","StatusCell","customClassName","RoutingStatus","pageSizes","pageSizeValue","UsageLocation","ConfigProcessCompleted","showStatusLegend","manageModal","AccountSettings","AccountType","modalAction","usernameField","handleManageResourceAccount","domain","DomainList","IsVerified","configurationLinks","btnGroup","JsonParameters","TeamsUsers","NewDisplayName","NewDisplayNameSpecified","NewResourceAccountType","NewResourceAccountTypeSpecified","NewPhoneNumber","NewPhoneNumberSpecified","enterprise","TeamsId","TeamsUserId","MsTeamsSetupDomain","createDomainBtn","wizardMsg","IsM365DomainCreated","DomainCreatedOn","DomainSetupResponse","showDomainInfo","createAzureDomain","userName","trunkName","formatDsRes","IsDefault","MsTeamsStatusDscription","MsTeamsDNS","getSubmittedTicket","DNSTicketID","Ticket","IsDNSTicketCreated","createdTicketID","createdOn","parseDomainSetupResponse","IsDNSTicketCompleted","formatDateTime","time","parsedArr","reverse","domainDnsTxtRecord","Text","Ttl","MsTeamsSBC","SBCTicketID","IsSBCTicketCreated","IsSBCTicketCompleted","SBCTicketCompletedOn","sbcTicketData","Switch","MsTeamsTempUsers","getLicensType","licenses","selectLicenseType","LicenseType","license","ValueId","ValueName","IsTempUserCreatedWithin24Hrs","IsTempUsersCreated","TempUsersCreatedOn","getTimeAfter24Hrs","tomorrow","verifyAzureDomains","createTempUsers","showVerifyDomainModal","MsTeamsDirectRouting","DirectRouting","DirectRoutingTimeStamp","setDirectRouting","returnOnlyTeamsDomains","MigrationTab","migrationBtn","DerivedRoutingMigrationStatus","MigrationUpdatedOn","DerivedRoutingMigrationNotes","CheckConfig","CheckStatus","migrateToDerivedRouting","TNSearch","serviceId","street","city","IsResourceAccount","MsTeamsRoutingMenu","VoiceRoutes","VoiceRoutesList","nameColWidth","VoicePolicy","VoicePoliciesList","derivedMatchingObject","VoiceRoutePolicy","directMatchingObject","UserBtn","UsersCount","MsTeamsTenantInfo","VOICETABS","voiceRoutes","voicePolicy","MsTeamsMain","fetchTrunks","fetchDomainList","fetchMSTeamsUserList","fetchListingsForVoicePolicies","msteamstabName","TabRedirect","btnField","AllowManualDerivedRoutingMigration","proceedToNextTab","checkStatus","showDirectRoutingModal","DNSTicketDetails","SBCTicketDetails","showUserList","prevState","routingList","ApplicationName","ManageMsTeamsUser","EnterpriseMSTeamsConfigId","SipProxyAddress","ShowInAddressList","SyncToTeams","TeamsGroupIds","UserState","UserStateChangedOn","configureDR","SubmissionLoading","updatedUser","showDRModal","modalBtns","webexemailfilter","Webex","searchEmail","parentToChildStateAccess","SubmittedId","DuplicateError","fetchWebexData","syncing","lastSyncedDate","WebexEmailValidation","gridId","updateWebexData","gridItem","submissionError","gridToolBar","syncWithWebex","BroadsoftUserId","innerHTML","part","syncAllUsers","enableDirSync","lastSuccessfulSyncTime","hoursBetweenDates","directorySyncStatus","disableDirectorySycnButton","directorySyncStatusTime","disableDirectorySycnButtonStatus","ValidationButton","EmailCell","handleEmailFilter","newFilter","FilterEmailCell","roughDraft","FullDetails","cellContent","AddOnCountCell","fetchAddOnList","CountAddOnData","loadAddOnList","GridItem","CountAddOn","WebExEmail","SubmissionCell","failureMessage","DropDownFilter","setShowModal","NIDMAC","NotificationEmail","CheckMkHostName","SpeedDownstream","SpeedUpstream","TermInMonth","setCircuitList","filteredCircuitList","setFilteredCircuitList","setSort","editCircuitItem","setEditCircuitItem","searchCircuits","SpeedCell","LocationCell","DeviceHostName","WANPortAlias","WANPort","HostName","onHandleClose","EditCell","openANewTicket","redirectedFromCircuits","NIDIP","editCircuitName","editDownloadSpeed","editUploadSpeed","editCircuitNotification","updateCircuitList","circuitsDTO","onRowClick","ReactFC","fcRoot","FusionCharts","Column2D","FusionTheme","CircuitsChart","fetchDateRange","parsedData","Value","dateRange","dateRangeOptions","fetchGraphData","Measurement","DateRange","datapoints","graphData","xCoords","yCoords","toFixed","graphUrl","graphImageUrl","coords","XCoords","YCoords","getFusionChartConfig","dataFormat","chart","caption","subCaption","xAxisName","yAxisName","theme","setAdaptiveYMin","showLabels","frameborder","scrolling","fusionChartContent","graphMeasurementsOptions","CircuitsDashboard","CircuitsList","DataViz","data1","data2","summary","hasRendered","setHasRendered","drawViz","svg","d3","append","aspect","maxValue","range","nice","deviceName","DeviceName","node","Node","color1","color2","axisLabel","xAxis","tickFormat","yAxis","ticks","call","enter","setAxis","thresholdValue","datum","defined","offset","setArea","horizontalLine","xPos","yPos","duration","verticalLine","html","__data__","Field","setTools","legend_table","tbody","tr","setLegend","ExpandCircuitChart","testChart","GraphId","AggWindow","defaultType","updateGraphUrl","CircuitsGraph","measurement","aggWindow","GraphTitle","CircuitsGraphingDashboard","packageData","GetHistoricalUpDownForHostNameResult","GetGraphInfoForHostSplitRtaResult","JSONData","Avg","Max","Min","aggregateWindow","host","packagedData","rta","pl","pta","fetchUpDownStatus","upDown","redirectView","dashView","rtaDateRange","rtaAggWindow","rtaMeasurement","getType","plDateRange","plAggWindow","plMeasurement","ptaDateRange","ptaAggWindow","ptaMeasurement","upDownDateRange","upDownAggWindow","upDownMeasurement","rtaField","plField","ptaField","upDownField","MFAAdminTool","openConfirmWindow","showConfirmation","selectedUser","fetchMfaUsers","resetUserMFA","ManageCell","GroupAdminBanner","UserTypeId","OpCnConsent","TenantId","teamsCredentialsVerifiedOn","MSTeamsCredentialsVerifiedOn","PhoneNumbers","phNumList","setPhNumList","searchTermRef","timeoutRef","fetchPhoneNumbers","mangeUserCell","FaxList","faxList","setFaxList","fetchFaxList","loadAssignedUsers","searchDelay","OperatorConnectV1Main","hasFaxList","HasFaxList","fetchOperatorConnectConsent","disabledCondition","isTeamsUsersSync","AvailableUsages","ManageOCTeamsUser","getTeamsUserByTeamsId","ManageOCTeamsPhone","PhoneDetails","SelectedUser","fetchPhoneDetails","ProtectedWholesaleRoute","hasAccessToComponent","component","ProtectedRetailRoute","Sidebar","updateSidebarLogo","existingLogo","sideBarLogo","incomingLogo","shouldApplyCustomizations","momentumLogo","apiTests","sideBarClassName","showSideBar","devicesRoute","homepage","isNewSession","exact","contactCenterSettings","location_detail","call_logs_all","user_settings","voicemail_all","IpTrunking","unMatchedPath","smallLogo","customSmallLogo","largeLogo","customLargeLogo","version","Login","loadingLogo","Logo","momentumLogoWhite","auth","componentMounted","loginHint","localStorage","mspLoginData","loginError","loginErrorDescription","redirecting","customAuth","restartSession","orgKey","customData","userFullName","emulation","emulationUserName","isTestSession","automatedTest","FullStoryScript","toBoolean","sessionId","sessionStart","custom","CountdownTimer","displayTitleTimer","showInTitle","getFormattedTime","onCountdown","countdown","timeoutAction","pad","num","formattedNum","minutes","getSeconds","seconds","IdleWarningModal","onCancelLogout","onLogout","IdleLogout","resetLogout","displayWarning","logout","logoutDelay","idleTimer","idleAction","logoutTime","defaultProps","_react","_react2","_interopRequireDefault","_propTypes2","_reactStyleProptype2","__esModule","Timer","args","timerId","prevTime","handleTick","interval","clearTimer","currentTime","elapsed","nextRemaining","afterComplete","afterTick","propTypes","isRequired","func","childContextTypes","TestResultModal","REACT_APP_SHOW_TESTS","SupportLinks","getDownloadLinksForProvider","encodeURI","btoa","apiHeaders","Accept","Authorization","customFetch","documentResults","DownloadLinks","getDownloads","serviceProviderId","MyLogin","getCustomizations","currentUrl","b2cResults","customAuthPolicy","preProcessCustomizations","authority","B2CPolicy","clientId","B2CClientId","b2cScopes","LogoSmall","LogoLarge","VendorName","BrowserIcon","isRetail","validator","isEmail","loginEmail","contactError","contactMsg","isNetworkError","UserData","handleLoginEmailChange","formInput","loginForm","loginContainer","isInvalidUser","ForgotPassword","queryParams","get","ProviderId","isMailSent","handleOnBack","sendLinkForm","getResponseMessage","sendLinkContainer","MFAValidateModal","getMFADetails","oktaFailed","backdropFilter","App","processCustomizations","wholesaleIndicatorFound","hostName","customizations","staticJSONPrefix","momentumLogoSidebar","loadingAltText","isApplied","CSS","SetDefaultCSS","customTheme","customThemeLoaded","setDefaultLogos","reducerMethod","checkWholesale","variables","cssVars","tokenRepo","retrieveRpxLogo","rpxLogo","authorizeRpxSession","encryptedParams","emulationUserParam","EUN","userParam","decodeURIComponent","UN","uidParam","EUID","ipParam","rpxLoginDetailsRetrieved","rpxParams","rejected","RPXLoginFail","onIdle","updateToken","tokenUpdater","rpxLogin","faviconApplied","loadingLogoAltText","loadingAccessToken","isMspLogin","validMfa","beta_access_denied","requestToken","tokenIsValid","loginErrorHTML","RPXLogo","primaryUrl","mapDispatchToProps","hostname","ReactDOM","StrictMode","navigator","serviceWorker","ready","registration","unregister","customHeaders","isJson","logResponseToConsole","reject","putDataWithCustomHeader","useHeaderWithTokenPolicy","autoRetry","checkForToken","headersWithTokenAndPolicy","refreshTokenAndRetry","JSONToFormUrlEndcodedString","resolve","send","formBody","property","encodedKey","encodedValue","saveFavoriteService","favService","statusText","unfavoriteService","requestNewToken","checkForNewToken","tokenCheckInterval","expiredToken","accessToken","token","accessTokenPromise","race","DataLoadingSpinner","atLoginPath","atSupportLinksPath","redirectToLogin","urlIncludes","getDomain","isRetailDomain","isDigitalServicesDomain","IsWholesaleDomain","isWholesaleDomain","isWholesaleUser","getJSONFilePrefix","getProductionUrl","numberWithDelimiter","isBlank","sortField","blanksAfterZ","fieldBlanks","fieldNonBlanks","StripHtml","DOMParser","parseFromString","textContent","filterNestedObject","param","c","devicePerms","showEditGroupFqdnBtn","Setup_GroupLevelFQDN","showEditGroupVlanBtn","Set_GroupVLANID","convertToLocalTime","dateVal","isDST","offsetDiffMin","convertedVal","stdTimezoneOffset","fy","cache","hasOwnProperty","maxOffset","monthsTestOrder","mi","dt","StringReplaceAll","stringValue","str1","str2","ignore","ValidateIPaddress","ipaddress","processWholesaleCustomizations","storeCustomImages","storeCustomImageResult","storeVendorId","updateSiteTheme","updateFavicon","tempReplacementStr","existingCustomSmallLogo","existingCustomLargeLogo","vendorId","favicon","setAttribute","setSiteTitleFromDomain","titleBarText","setTitle","checkPageTitle","currentTitle","titleEl","getB2CConfigResults","ValueOfBuildingTag","streetTypes","CreateFullStreet1","Result","StreetPrefix","CreateFullStreet2","ValueOfFloorTag","IsJsonString","str","checkIsUserValid","AppName","SendResetPasswordLink","ValidateResetPassword","Url","password","resetPasswordDTO","resetUrl","newPassword","VerifyTwoStepEmail","emailDTO","baseUrl","baseApiUrl","defaultXpolicy","REACT_APP_MSP_URL","defaultXPolicyConfig","authorityUrl","storedAccessToken","storedAccountNumber","storedXPolicy","xpolicy","expirationRemainingDelta","expiration","currentMil","asMilliseconds","loginRPXUser","encParam","azureTokenResult","rpxData","storeRPXToken","refreshToken","refresh_token","decodedToken","jwtDecode","tfp","given_name","exp","refreshTokenIfExpired","Reseller","CompanyInfo","SalesGroupId","setUserPropsToSessionStorage","IPTrunkEmulation","LocationID","loginUser","customPolicy","clientApp","DomainHint","IsExternalUser","IdPApp","queryString","domain_hint","loginRedirect","scopes","extraQueryParameters","msalConfig","validateAuthority","redirectUri","origin","cacheLocation","storeAuthStateInCookie","Msal","loadFrameTimeout","handleRedirectCallback","CustomAuthUrl","CustomAuthClientId","acquireTokenSilent","loggedUser","storeToken","saveUserProperties","acquireTokenError","acquireTokenRedirect","tokenSaveUserProperties","rpxEmulation","customHeader","exc","encryptKey","Uint8Array","crypto","getRandomValues","encryptedValue","charCode","charCodeAt","fromCharCode","output","decryptKey","decryptedValue","EnterpriseNumber","HasServices","ReadPermission","WritePermission","TZAbbr","ServiceProviderName","EnableMFA","expInSecs","retrieveCustomConfigs","hasTrunk","QuickViewLocationAccountNumber","cl_call_type","cl_status_type","cl_call_category","cl_from_date","cl_to_date","cl_date_type","reducers","combineReducers","actionType","TokenObj","expirationOnCurrentToken","setUTCSeconds","webpackAsyncContext","__webpack_require__","ids","t","module","exports","unauthorized","loginTimeout","redirectTimeout","noResultsMsg","idleLogoutTime","REACT_APP_SIGNIN_PAGE_BTN_LABEL","idleLogoutWarning","saveLoginError","errorDescription","actionParams","saveToSessionStorage","setQuickViewLocation","pbxUserId","setService","setCLFilters","entries","setGlobalSearchValue","getGlobalSearchValue","urlEncodedToken","getEnterpriseId","getExpirationForEmb","setUTCMilliseconds","testSession","customLogoLarge","rpxTokenUpdater","silenTokenUpdater","parsedUsername","parsedEmulatedUser","EmulatorUsername","loginUserName","clear","transitionTimeout","stillRedirecting","redirectTimer","UPDATE_TOKEN_STATUS","LOGIN_USER","RESTART_SESSION","SAVE_LOGIN_ERROR","REFRESH_TOKEN","REDIRECTING","SET_LOCATION","SET_QUICK_VIEW_LOCATION","SERVICE_SELECTED","SET_SERVICE","SERVICES_SET","TOGGLE_SIDEBAR","REDIRECT_BETA_ACCESS","RECEIVE_TOKEN","TOKEN_LOADED","START_LOGIN","PERMISSIONS_UPDATED","RECEIVE_CUSTOM_IMAGE","SET_CALL_LOGS_FILTER","SET_SUBSCRIBER_CALL_LOGS_FILTER","UI_SKINS_APPLIED","IP_TRUNKING_ONLY_SET","SET_MSP_LOGIN_DATA","VALIDATE_MFA","createStore","applyMiddleware","thunk","configureStore","ResetPassword","decode","Buffer","responseCode","isShowBackButton","resetFormInner","resetContainer","ValidateMfaEmail","p_email"],"mappings":"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","file":"static/js/main.89589fa3.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/m_logo.b3e9ac06.svg\";","export const arraysEqual = (a, b) => {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a == null || b == null) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n \r\n for (let i = 0; i < a.length; ++i) {\r\n if (a[i].Priority !== b[i].Priority) {\r\n return false;\r\n }\r\n if (a[i].Weight !== b[i].Weight) {\r\n return false;\r\n }\r\n if (a[i].IsAssigned !== b[i].IsAssigned) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n \r\n export const validateFields = (obj, a, b) => {\r\n if (parseInt(obj.MaxNumRerouteAttempts) > 10 || obj.MaxNumRerouteAttempts === \"\") {\r\n console.log(\"false 1\");\r\n return false;\r\n }\r\n if (parseInt(obj.MaxNumRerouteWithPriority) > 10 || obj.MaxNumRerouteWithPriority === \"\") {\r\n console.log(\"false 2\");\r\n return false;\r\n }\r\n let arr = obj.TrunkGroupAssignments;\r\n for (let i = 0; i < arr.length; i++) {\r\n if (arr[i].IsAssigned === true) {\r\n if (\r\n arr[i].Priority < 1 ||\r\n arr[i].Priority > 10 ||\r\n Number.isInteger(arr[i].Priority) === false\r\n ) {\r\n console.log(\"false 3\");\r\n return false;\r\n }\r\n if (arr[i].Weight < 1 || arr[i].Weight > 65536 || Number.isInteger(arr[i].Weight) === false) {\r\n console.log(\"false 4\");\r\n return false;\r\n }\r\n return true;\r\n }\r\n }\r\n return true;\r\n };\r\n \r\n export const checkBillingAccount = () => {\r\n let account = sessionStorage.userEnterpriseNumber;\r\n let userType = sessionStorage.userTypeId;\r\n let sp = sessionStorage.serviceProviderName;\r\n //serviceProviderName\r\n if (\r\n account.startsWith(\"390\") &&\r\n userType === \"1107\" &&\r\n (sp === \"Momentum_Retail_PHL_Legacy\" || sp === \"CNG_Retail\")\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n \r\n export const cngAltevaDctAccount = () => {\r\n let account = sessionStorage.userEnterpriseNumber;\r\n let sp = sessionStorage.serviceProviderName;\r\n // \"Momentum_Retail_CLE_Legacy\" -> DCT\r\n // Momentum_Retail_PHL_Legacy -> Alteva\r\n // CNG_Retail\r\n if (account.startsWith(\"390\") && (sp === \"Momentum_Retail_PHL_Legacy\" || sp === \"CNG_Retail\")) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n \r\n export const grabLocations = async () => {\r\n let list = await JSON.parse(sessionStorage.locationList);\r\n return list;\r\n };\r\n \r\n export const filterErrorMessage = (errorMessage) => {\r\n const result = errorMessage.replace(/^[^\\(]+\\(\\):/, \"\").replace(/UserId=(.*)/, \"\");\r\n \r\n if (result) return result;\r\n return errorMessage;\r\n };\r\n ","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { fetchData } from './../requests/api_calls';\r\nimport * as settings from './../scripts/settings';\r\nimport { userIsAdmin } from './../scripts/helper';\r\nimport { DataLoadingSpinner } from './spinners';\r\nimport { checkBillingAccount } from '../utility/utility';\r\n\r\n//const categoryLimit = 3;\r\n\r\nclass GlobalSearch extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n searchValue: '',\r\n showResults: false,\r\n blurText: true,\r\n loading: false,\r\n showSearchHint: false\r\n };\r\n\r\n // I think these can be removed\r\n this.onFocusSearch = this.onFocusSearch.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleBlur = this.handleBlur.bind(this);\r\n }\r\n\r\n delayedSearch = (apiPath) => {\r\n if(this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.fetchServices(apiPath);\r\n }, settings.searchDelay);\r\n }\r\n\r\n onFocusSearch = () => {\r\n let searchText = settings.getGlobalSearchValue();\r\n if(searchText){\r\n this.delayedSearch(searchText);\r\n }\r\n this.setState({showResults: false, searchValue: searchText, blurText: false});\r\n }\r\n \r\n handleChange = (event) => {\r\n settings.setGlobalSearchValue(event.target.value);\r\n this.setState({showResults: false, searchValue: event.target.value});\r\n\r\n this.delayedSearch(event.target.value.trim());\r\n }\r\n\r\n handleBlur = () => {\r\n this.timeout = setTimeout(() => {\r\n this.setState({showResults:false, searchValue: \"\", blurText: true, showSearchHint: false });\r\n }, 500);\r\n }\r\n\r\n /**\r\n * (3/5) No longer being used to favor handleChange event handler.\r\n * Will retain the method until testing proves it is truly no longer needed.\r\n */\r\n searchGlobally = (event) => {\r\n let searchText = event.target.value.trim();\r\n this.delayedSearch(searchText);\r\n }\r\n\r\n delayedSearch = (searchText) => {\r\n if(this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n if (searchText && searchText.length < 3) {\r\n this.setState({showResults: false, showSearchHint: true});\r\n settings.setGlobalSearchValue(searchText);\r\n } else if (searchText.length === 0) {\r\n this.setState({showResults: false, showSearchHint: false});\r\n settings.setGlobalSearchValue(searchText);\r\n } else {\r\n this.fetchResults(searchText);\r\n }\r\n }, settings.searchDelay);\r\n }\r\n\r\n fetchResults = (searchText) => {\r\n this.setState({loading: true, showSearchHint: false});\r\n var apiPath = 'admin/GlobalSearch?term=' + searchText;\r\n fetchData(apiPath).then((data) => {\r\n if (data) {\r\n this.setState({\r\n searchResults: data,\r\n showResults: !this.state.blurText\r\n });\r\n }else{\r\n this.setState({\r\n searchResults: [],\r\n showResults: true\r\n });\r\n }\r\n this.setState({loading: false});\r\n }).catch((message)=>{\r\n console.log(\"catch((message)\")\r\n console.log(message)\r\n this.setState({\r\n searchResults: [], showResults: false, loading: true\r\n });\r\n });\r\n }\r\n\r\n locationResults = () => {\r\n if (this.state.showResults && \r\n this.state.searchResults && \r\n this.state.searchResults.LocationList &&\r\n this.state.searchResults.LocationList.length > 0) {\r\n let results = this.state.searchResults.LocationList;\r\n return (\r\n
\r\n
Locations
\r\n {results.map((item, index) => this.locationItem(item, index))}\r\n
\r\n )\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n locationItem = (item, index) => {\r\n return (\r\n
\r\n
\r\n \r\n {item.ItemText}\r\n \r\n
\r\n
\r\n )\r\n }\r\n\r\n serviceResults = () => {\r\n if (this.state.showResults && \r\n this.state.searchResults && \r\n this.state.searchResults.ServiceList &&\r\n this.state.searchResults.ServiceList.length > 0) {\r\n let results = this.state.searchResults.ServiceList;\r\n return (\r\n
\r\n
Services
\r\n {results.map((item, index) => this.serviceItem(item, index))}\r\n
\r\n )\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n serviceItem = (item, index) => {\r\n return (\r\n
\r\n
\r\n \r\n {item.ItemText}\r\n \r\n
\r\n
\r\n )\r\n }\r\n\r\n trunkingResults = () => {\r\n if (this.state.showResults && \r\n this.state.searchResults && \r\n this.state.searchResults.TrunkingList &&\r\n this.state.searchResults.TrunkingList.length > 0) {\r\n let results = this.state.searchResults.TrunkingList;\r\n return (\r\n
\r\n
Trunking
\r\n {results.map((item, index) => this.trunkingItem(item, index))}\r\n
\r\n )\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n noSearchResults = () => {\r\n if (this.state.searchResults && this.state.searchResults.length === 0) {\r\n return (\r\n
\r\n
{settings.noResultsMsg}
\r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n trunkingItem = (item, index) => {\r\n return (\r\n
\r\n
\r\n \r\n {item.ItemText}\r\n \r\n
\r\n
\r\n )\r\n }\r\n\r\n displayHint = () => {\r\n return (\r\n
\r\n Enter at least 3 characters to search\r\n
\r\n )\r\n }\r\n\r\n render() {\r\n if (userIsAdmin() && !checkBillingAccount()) {\r\n return (\r\n
\r\n {this.displayHint()}\r\n \r\n \r\n \r\n \r\n
\r\n {this.locationResults()}\r\n {this.serviceResults()}\r\n {this.trunkingResults()}\r\n {this.noSearchResults()}\r\n
\r\n
\r\n )\r\n } else return null;\r\n }\r\n}\r\nexport default GlobalSearch;","//export const training_url = \"https://momentumtelecom.com/mu/training-library/\";\r\nexport const training_url = \"https://gomomentum.com/mu/\";\r\nexport const support_url =\"https://gomomentum.com/support/\"","import React from 'react';\nimport EllipsisWithTooltip from 'react-ellipsis-with-tooltip';\nimport { Popover, OverlayTrigger } from 'react-bootstrap';\n\nexport const headerToolTip = (title, noWrap = false) => {\n if (noWrap) {\n return (\n {title}\n )\n }\n return (\n \n
{title}
\n
\n )\n};\n\nexport const userRolePopUp = () => {\n let userRole = sessionStorage.userRole;\n let popop = {userRole};\n return (\n \n \n \n \n \n )\n}","import React, { useEffect, useState } from 'react';\r\n\r\nexport default function MfaTooltip() {\r\n const [isVisible, setIsVisible] = useState(true);\r\n\r\n //if (sessionStorage.enableMFA == \"true\" && sessionStorage.MFAOption === \"Optional\") {\r\n if (isVisible && sessionStorage.enableMFA == \"true\" && sessionStorage.MFAOption === \"Optional\" && (!sessionStorage.RPXLogin || sessionStorage.RPXLogin == false || sessionStorage.RPXLogin == \"false\")) {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n  Mandatory Multi-factor authentication (MFA) security protocols for portal access are coming soon! We set it to Optional for a while so you can enjoy a sneak preview. Check out the guides in Momentum University to learn more.\r\n \r\n
\r\n
\r\n
\r\n );\r\n } else {\r\n return null;\r\n }\r\n}","import React, { Fragment, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport * as session from './../scripts/session';\nimport { userIsAdmin } from './../scripts/helper';\nimport { training_url } from \"./../constants/urls\";\nimport { userRolePopUp } from './ellipsisHeaderTooltip';\nimport * as settings from '../scripts/settings';\nimport { checkBillingAccount } from '../utility/utility';\nimport MfaTooltip from './mfa/tooltip';\n\nconst isWholesale = () => { return session.IsWholesale() };\n\nconst profileLinkPath = () => {\n return userIsAdmin() ? '/admin/profile' : '/profile';\n}\n\nconst supportLink = () => {\n if (!isWholesale())\n return (\n
  • \n {/* Support */}\n \n Support\n \n
  • \n );\n return null;\n}\nconst trainingLink = () => {\n if (!isWholesale())\n return (\n
  • \n Training\n
  • \n );\n\n return null;\n}\n\nconst updateMyServices = () => {\n settings.selectService(sessionStorage.userId, null, null);\n}\n\nconst profileDropDownLinks = () => {\n if (checkBillingAccount()) {\n return;\n } else {\n return (\n \n
  • { updateMyServices() }}>My Profile
  • \n {supportLink()}\n {trainingLink()}\n
  • \n
    \n )\n }\n}\n\nexport const dropDownMenu = () => {\n return (\n
    \n \n \n {userRolePopUp()} Hi, {session.parsedUsername()}\n \n \n
      \n {profileDropDownLinks()}\n
    • Log Out
    • \n
    \n
    \n )\n}\n\nexport default dropDownMenu;","export default __webpack_public_path__ + \"static/media/E911retail.5abf1f79.pdf\";","export default __webpack_public_path__ + \"static/media/E911WL.a09f85fb.pdf\";","import React, { Component, Fragment } from \"react\";\r\nimport { Modal } from 'react-bootstrap';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { storedUserRole } from '../../../scripts/helper';\r\n\r\nexport default class CR_MODAL extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n //showCRModal: getTCValue() ? false : true,\r\n loading: false,\r\n //TCFlag: getTCValue(),\r\n showCRModal: false,\r\n TCFlag: \"\",\r\n submitted: false,\r\n UserID: sessionStorage.userId,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n // if (storedUserRole() === 'SUPER_ADMIN') {\r\n // this.fetchEnterpriseTerms();\r\n // } else {\r\n // this.fetchUserTerms();\r\n // }\r\n this.fetchEnterpriseCallRecordingPopUpCount();\r\n }\r\n\r\n fetchEnterpriseCallRecordingPopUpCount = async () => {\r\n let path = \"admin/GetEnterpriseCallRecordingPopUp\";\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n this.setState({\r\n //showCRModal: data[0].TCFlag == true ? false : true,\r\n showCRModal: data[0].ShowedCount >= 3 ? false : true,\r\n //ShowedCount: data[0].ShowedCount,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n saveEnterpriseCallRecordingPopUpCount = async () => {\r\n await this.setState({ loading: true });\r\n //let path = storedUserRole() === 'SUPER_ADMIN' ? \"admin/UpdateEnterpriseTC\" : `usr/UpdateServiceTC?userId=${this.state.UserID}`;\r\n let path = \"admin/SaveEnterpriseCallRecordingPopUpCount\";\r\n\r\n //console.log(\"DTO\", dto);\r\n let response = await apiCalls.post(path, \"POST\").then(data => data).catch(err => console.error(err));\r\n if (response.ok) {\r\n sessionStorage.setItem(\"CallRecordingModalLoaded\", true);\r\n this.setState({ loading: false, showCRModal: false, submitted: true });\r\n } else {\r\n console.log(response);\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n callRecordingModal = () => {\r\n let { emulatedUser } = sessionStorage;\r\n if (!emulatedUser || emulatedUser == \"false\") {\r\n // no visibility when user emulates from RPX\r\n return (\r\n \r\n \r\n Your new and enhanced Momentum Call Recording platform is coming soon!\r\n \r\n \r\n
    \r\n {/*

    Please review the recent email communications from Momentum Telecom for important information. Contact your Momentum account manager (or Customer Support at 888.538.3960) to learn more and get details.

    */}\r\n

    In preparation for this change, please review the recent email communications from Momentum Telecom for important information.

    \r\n

    To facilitate quick account setup, System Administrators should provide an updated list of Call Recording portal Administrators and Supervisors to our customer care team via email at: ccare@momentumtelecom.com

    \r\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 } else return \r\n }\r\n\r\n render() {\r\n return this.callRecordingModal();\r\n }\r\n}","import React, { Component, Fragment } from \"react\";\r\nimport { Modal } from 'react-bootstrap';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport E911MSARetail from '../../E911retail.pdf';\r\nimport E911MSAWs from '../../E911WL.pdf';\r\nimport { storedUserRole } from '../../scripts/helper';\r\nimport { cngAltevaDctAccount } from '../../utility/utility';\r\nimport CR_MODAL from '../login/modals/loginModals';\r\n\r\nexport default class TC_MODAL extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n //showTCModal: getTCValue() ? false : true,\r\n loading: false,\r\n //TCFlag: getTCValue(),\r\n showTCModal: false,\r\n TCFlag: \"\",\r\n submitted: false,\r\n UserID: sessionStorage.userId,\r\n fetchingData: true,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (storedUserRole() === 'SUPER_ADMIN') {\r\n this.fetchEnterpriseTerms();\r\n } else {\r\n this.fetchUserTerms();\r\n }\r\n }\r\n\r\n fetchEnterpriseTerms = async () => {\r\n //await this.setState({ loading: true });\r\n let path = \"admin/EnterpriseTC\";\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n this.setState({\r\n TCFlag: data[0].TCFlag,\r\n showTCModal: data[0].TCFlag == true ? false : true,\r\n fetchingData: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchUserTerms = async () => {\r\n let path = `usr/ServiceTC`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n this.setState({\r\n TCFlag: data[0].TCFlag,\r\n showTCModal: data[0].TCFlag == true ? false : true,\r\n fetchingData: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n termsAndConditionsDisplay = () => {\r\n // ** Enterprise\r\n let modalStyles = (sessionStorage.userTypeId === \"1107\" || sessionStorage.userTypeId === \"1105\") && window.location.href.indexOf(\"/admin\") > -1 ? {\r\n float: \"right\",\r\n fontSize: \"12px\",\r\n height: \"10px\",\r\n marginRight: \"35px\",\r\n display: \"inline\"\r\n } : {\r\n float: \"right\",\r\n height: \"10px\",\r\n //width: \"50px\",\r\n display: \"inline\",\r\n marginTop: \"15px\",\r\n marginRight: \"135px\",\r\n };\r\n\r\n if (!this.state.TCFlag && !this.state.submitted) {\r\n return (\r\n \r\n
    \r\n E911 Dialing Terms & Conditions\r\n
    \r\n \r\n )\r\n } else return;\r\n }\r\n\r\n handleOpenModal = () => {\r\n this.setState({\r\n showTCModal: true,\r\n });\r\n }\r\n\r\n saveTermsAndConditions = async () => {\r\n await this.setState({ loading: true });\r\n let path = storedUserRole() === 'SUPER_ADMIN' ? \"admin/UpdateEnterpriseTC\" : `usr/UpdateServiceTC`;\r\n let { TCFlag } = this.state;\r\n if (!TCFlag) {\r\n return;\r\n }\r\n let dto = { TCFlag };\r\n let response = await apiCalls.post(path, \"POST\", JSON.stringify(dto)).then(data => data).catch(err => console.error(err));\r\n if (response.ok) {\r\n this.setState({ loading: false, showTCModal: false, submitted: true });\r\n } else {\r\n console.log(response);\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n splashDisplay = () => {\r\n const src = sessionStorage.IsWholesale == \"true\" ? E911MSAWs : E911MSARetail;\r\n return (\r\n \r\n {/* */}\r\n \r\n

    \r\n Your browser does not support PDF viewing.\r\n Download PDF\r\n

    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n\r\n termsAndConditionsModal = () => {\r\n let { emulatedUser } = sessionStorage;\r\n if ((!emulatedUser || emulatedUser == \"false\") && !cngAltevaDctAccount()) {\r\n const acceptCheckBox = (val) => {\r\n return (\r\n this.setState({ TCFlag: e.target.checked })}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n E911 DIALING TERMS AND CONDITIONS\r\n \r\n \r\n
    \r\n {this.splashDisplay()}\r\n {acceptCheckBox()}\r\n

    By clicking, you acknowledge that you have read and agree to be bound by the E911 Dialing Terms and Conditions.

    \r\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 } else return \r\n }\r\n\r\n modalOrder = () => {\r\n if ((!this.state.showTCModal || this.state.showTCModal == false || this.state.showTCModal == \"false\") && !this.state.fetchingData) {\r\n if (!sessionStorage.CallRecordingModalLoaded) {\r\n return \r\n } else return ;\r\n } else {\r\n return this.termsAndConditionsModal();\r\n }\r\n }\r\n\r\n render() {\r\n return this.modalOrder();\r\n }\r\n}","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport logo from './../../images/m_logo.svg';\nimport GlobalSearch from './../../components/global_search';\nimport * as actions from './../../store/actions';\nimport { store } from '../../store/store';\nimport dropDownMenu from './../../components/dropdown_menu';\nimport { connect } from 'react-redux';\nimport TC_MODAL from '../modals/termsAndConditionsModal';\n\nclass NavBar extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n }\n }\n\n componentWillReceiveProps(props) {\n if (props.loading !== this.state.loading)\n this.setState({ loading: props.loading });\n }\n\n toggleSidebar = () => {\n let action = { type: actions.TOGGLE_SIDEBAR };\n store.dispatch(action);\n }\n\n render() {\n if (this.state.loading) {\n return (\n
    \n \n
    \n \n \n \n
    \n {dropDownMenu()}\n {/* only displays for admin */}\n
    \n )\n }\n else {\n let finalLogo = !sessionStorage.customLogoSmall || sessionStorage.customLogoSmall == '' ? logo : sessionStorage.customLogoSmall;\n return (\n
    \n
    \n \"logo\"'\n \n \n \n
    \n {dropDownMenu()}\n {/* only displays for admin */}\n
    \n )\n }\n }\n}\n\nconst mapStateToProps = (state) => {\n let isLoading = true;\n if (state.reducer.themes_loaded && state.reducer.themes_loaded === true)\n isLoading = false;\n return {\n loading: isLoading\n }\n}\n\nexport default connect(mapStateToProps)(NavBar);","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Tooltip } from '@progress/kendo-popups-react-wrapper';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as settings from './../../scripts/session';\r\nimport * as config from './../../requests/config'\r\n\r\nclass Voicemail extends Component {\r\n\r\n constructor(props) {\r\n\t\tsuper(props);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{this.props.phone}\r\n\t\t\t\t{this.props.datetime}\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default Voicemail;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as EmailValidator from 'email-validator';\r\nimport { DataLoadingSpinner } from './../../components/spinners';\r\n\r\nclass VoicemailSettingsModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.changeForward = this.changeForward.bind(this);\r\n\r\n this.state = { \r\n showModal: false\r\n };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n changeForward(event){\r\n this.setState({forwardValue: event.target.value})\r\n }\r\n\r\n\tcomponentDidMount() {\t\r\n\t}\r\n\r\n\r\n render() {\r\n let model = this.props.model;\r\n\r\n let loading = model.loading;\r\n if(loading){\r\n return ( );\r\n }\r\n \r\n\r\n let loading_error = model.loading_error;\r\n if(loading_error){\r\n return (
    {loading_error}
    );\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n Voice Messaging\r\n
    \r\n
    \r\n
    \r\n \r\n Send All Calls to Voicemail\r\n
    \r\n
    \r\n \r\n Send Busy Calls to Voicemail\r\n
    \r\n
    \r\n \r\n Send Unanswered Calls to Voicemail\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {this.getForwardOption()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Notify me by Email when new messages arrive\r\n
    \r\n \r\n {this.props.onHandleChangeEmail(model.notify_me_email_when_new_messages_arrive,e)}}\r\n />\r\n {this.validateEmails(model.notify_me_email_when_new_messages_arrive)}\r\n
    \r\n
    \r\n
    \r\n \r\n Email a carbon copy of the message\r\n
    \r\n \r\n {this.props.onHandleChangeEmail(model.email_carbon_copy_message,e)}}/>\r\n {this.validateEmails(model.email_carbon_copy_message)}\r\n
    \r\n
    \r\n
    \r\n \r\n Transfer on '0' to Phone Number\r\n
    \r\n \r\n {this.props.onHandleChangePhone(model.transfer_on_0_to_phone_number,e)}}/>\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n validateEmail=(setting)=>{\r\n if(!setting.email_is_valid)\r\n return
    '{setting.email}' Not a valid email
    \r\n if(!EmailValidator.validate(setting.email))\r\n return
    '{setting.email}' Not a valid email
    \r\n }\r\n validateEmails=(setting)=>{\r\n if(!setting.email_is_valid){\r\n if(setting.email){\r\n let emailsArray = setting.email.split(',');\r\n for(let cnt = 0; cnt < emailsArray.length; cnt ++){\r\n if(!EmailValidator.validate(emailsArray[cnt].trim()))\r\n return
    '{emailsArray[cnt].trim()}' Not a valid email
    \r\n }\r\n }\r\n else{\r\n return
    Not a valid email
    \r\n }\r\n \r\n }\r\n }\r\n getForwardOption(){\r\n //console.log(this.props)\r\n let model = this.props.model;\r\n switch(model.forward_to_email.processing){\r\n case \"0\":\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {this.validateEmails(model.forward_to_email)}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n case \"1\":\r\n return (\r\n
    \r\n
    \r\n \r\n {this.props.onHandleChangeEmail(model.forward_to_email,e)}}\r\n className=\"form-control\" placeholder=\"add an email address\" />\r\n {this.validateEmails(model.forward_to_email)}\r\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 VoicemailSettingsModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport VoicemailSettingsModal from './modals/voicemailSettingsModal';\r\nimport * as EmailValidator from 'email-validator';\r\nimport { fetchData, post } from './../requests/api_calls';\r\nimport format from 'string-format';\r\nimport * as config from './../requests/config';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\nimport { DataLoadingSpinner } from './../components/spinners';\r\n\r\nclass VoicemailSettingsButton extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.changeForward = this.changeForward.bind(this);\r\n\r\n this.state = { \r\n //settings_available: false,\r\n showModal: false,\r\n loading: true, \r\n loading_error: \"\",\r\n saving_loading: false,\r\n saving_show_success: false,\r\n saving_error_message: \"\",\r\n voice_messaging: {\r\n selected: false,\r\n api: \"VoiceMessage\",\r\n },\r\n send_all_calls_to_vm: {\r\n selected: false,\r\n api: \"SendAllCallsToVoicemail\"\r\n },\r\n send_busy_calls_to_vm: {\r\n selected: false,\r\n api: \"SendBusyCallsToVoicemail\"\r\n \r\n },\r\n send_unanswered_calls_to_vm: {\r\n forward_value: null,\r\n selected: false,\r\n api: \"SendUnansweredCallstoVoicemail\",\r\n email: \"\",\r\n waiting_indicator: false\r\n },\r\n forward_to_email: {\r\n api: \"ForwardToEmail\",\r\n processing: \"\", //multiple or single\r\n email: \"\",\r\n email_is_valid:true,\r\n waiting_indicator: false\r\n },\r\n notify_me_email_when_new_messages_arrive: {\r\n selected: false,\r\n api: \"NotifyMebyEmailwhennewmessagesarrive\",\r\n email: \"\",\r\n email_is_valid:true\r\n },\r\n email_carbon_copy_message: {\r\n selected: false,\r\n api: \"EmailaCarbonCopyoftheMessage\",\r\n email: \"\",\r\n email_is_valid:true\r\n },\r\n transfer_on_0_to_phone_number: {\r\n selected: false,\r\n api: \"Transfer_0_to_Phone_Number\",\r\n phone_number: \"\"\r\n } ,\r\n PostData: {\r\n ServiceNumber: this.props.ServiceNumber,\r\n PBXUserID: this.props.PBXUserID,\r\n //Voice Messaging\r\n isActive:false,\r\n //Send All Calls to Voicemail\r\n alwaysRedirectToVoiceMail:false,\r\n //Send Busy Calls to Voicemail\r\n busyRedirectToVoiceMail:false,\r\n //Send Unanswered Calls to Voicemail\r\n noAnswerRedirectToVoiceMail:false,\r\n //Forward to multiple email / Forward to one email\r\n processing:false,\r\n //Forward email\r\n voiceMessageDeliveryEmailAddress:\"\",\r\n //Phone Message Waiting Indicator\r\n usePhoneMessageWaitingIndicator:false,\r\n //Notify me by Email when new message arrive\r\n sendVoiceMessageNotifyEmail:false,\r\n voiceMessageNotifyEmailAddress:\"\",\r\n //Carbon copy\r\n sendCarbonCopyVoiceMessage:false,\r\n voiceMessageCarbonCopyEmailAddress:\"\",\r\n //Transfer on '0' to Phone Number\r\n transferOnZeroToPhoneNumber:false,\r\n transferPhoneNumber:\"\",\r\n outOfPrimaryZoneRedirectToVoiceMail:false\r\n }\r\n };\r\n }\r\n\r\n changeOnOffValue =(setting, event)=>{\r\n let checked = event.target.checked;\r\n setting.selected = checked;\r\n this.updateSetting(setting);\r\n }\r\n\r\n changeEmailValue =(setting, event)=>{\r\n let email = event.target.value.trim();\r\n setting.email = email;\r\n setting.email_is_valid = EmailValidator.validate(email);\r\n if(setting.api === this.state.send_unanswered_calls_to_vm.api){\r\n if(this.state.send_unanswered_calls_to_vm.processing === \"0\"){\r\n setting.email_is_valid = EmailValidator.validate(email);\r\n let emailsArray = setting.email.split(',');\r\n for(let cnt = 0; cnt < emailsArray.length; cnt ++){\r\n if(!EmailValidator.validate(emailsArray[cnt]))\r\n setting.email_is_valid = false;\r\n }\r\n }\r\n }\r\n this.updateSetting(setting);\r\n }\r\n\r\n changeWaitingIndicator =(setting, event)=>{\r\n let checked = event.target.checked;\r\n setting.waiting_indicator = checked;\r\n this.updateSetting(setting);\r\n }\r\n\r\n changePhoneNumber =(setting, event)=>{\r\n let value = event.target.value.trim();\r\n setting.phone_number = value;\r\n this.updateSetting(setting);\r\n }\r\n\r\n updateSetting=(setting)=>{\r\n switch(setting.api){\r\n case this.state.voice_messaging.api:\r\n this.setState({...{voice_messaging: setting}})\r\n break;\r\n case this.state.send_all_calls_to_vm.api:\r\n this.setState({...{send_all_calls_to_vm: setting}})\r\n break;\r\n case this.state.send_busy_calls_to_vm.api:\r\n this.setState({...{send_busy_calls_to_vm: setting}})\r\n break;\r\n case this.state.send_unanswered_calls_to_vm.api:\r\n this.setState({...{send_unanswered_calls_to_vm: setting}})\r\n break;\r\n case this.state.notify_me_email_when_new_messages_arrive.api:\r\n this.setState({...{notify_me_email_when_new_messages_arrive: setting}})\r\n break;\r\n case this.state.email_carbon_copy_message.api:\r\n this.setState({...{email_carbon_copy_message: setting}})\r\n break;\r\n case this.state.transfer_on_0_to_phone_number.api:\r\n this.setState({...{transfer_on_0_to_phone_number: setting}})\r\n break;\r\n case this.state.forward_to_email.api:\r\n this.setState({...{forward_to_email: setting}})\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n handleClose() {\r\n this.setState({...this.state, showModal: false });\r\n }\r\n\r\n handleSave=()=> {\r\n let state = this.state;\r\n state.saving_loading = true;\r\n state.saving_show_success = false;\r\n \r\n\r\n let PostData = state.PostData;\r\n PostData.AccountNumber = this.props.AccountNumber;\r\n PostData.DirectoryNumber = this.props.DirectoryNumber;\r\n PostData.isActive = this.state.voice_messaging.selected;\r\n PostData.alwaysRedirectToVoiceMail = this.state.send_all_calls_to_vm.selected;\r\n PostData.busyRedirectToVoiceMail = this.state.send_busy_calls_to_vm.selected;\r\n PostData.noAnswerRedirectToVoiceMail = this.state.send_unanswered_calls_to_vm.selected;\r\n \r\n if(this.state.forward_to_email.processing === \"0\"){\r\n PostData.processing = \"0\";\r\n }else if(this.state.forward_to_email.processing === \"1\"){\r\n PostData.processing = \"1\";\r\n }\r\n\r\n PostData.voiceMessageDeliveryEmailAddress = this.state.forward_to_email.email;\r\n PostData.usePhoneMessageWaitingIndicator = this.state.forward_to_email.waiting_indicator;\r\n\r\n PostData.sendVoiceMessageNotifyEmail = this.state.notify_me_email_when_new_messages_arrive.selected;\r\n PostData.voiceMessageNotifyEmailAddress = this.state.notify_me_email_when_new_messages_arrive.email;\r\n\r\n PostData.sendCarbonCopyVoiceMessage = this.state.email_carbon_copy_message.selected;\r\n PostData.voiceMessageCarbonCopyEmailAddress = this.state.email_carbon_copy_message.email;\r\n\r\n PostData.transferOnZeroToPhoneNumber = this.state.transfer_on_0_to_phone_number.selected;\r\n PostData.transferPhoneNumber = this.state.transfer_on_0_to_phone_number.phone_number;\r\n this.setState(state);\r\n\r\n let body = JSON.stringify(PostData);\r\n\t\tlet headers = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n post(\"usr/VMSettings\",\"POST\", body, headers)\r\n\t\t.then(response =>{\r\n let state = {...this.state};\r\n\t\t\tif(response.ok){\r\n state.saving_show_success = true;\r\n\t\t\t\tstate.saving_loading = false;\r\n state.saving_error_message = \"\";\r\n this.props.OnVMSettingChange(this.state.PostData);\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\tstate.saving_loading = false;\r\n\t\t\t\tstate.saving_error_message = \"Failed Save\";\r\n }\r\n this.setState(state);\r\n\t\t})\r\n\t\t.catch((message)=>{\r\n console.log(message);\r\n let state = {...this.state};\r\n\t\t\tstate.saving_loading = false;\r\n state.saving_error_message = \"Failed Save\";\r\n this.setState(state);\r\n\t\t});\r\n }\r\n\r\n handleShow() {\r\n this.setState({...this.state, showModal: true,saving_show_success:false, loading: true, saving_error_message:\"\", });\r\n let apiPath = format('usr/VMSettings?AccountNumber={AccountNumber}&DirectoryNumber={DirectoryNumber}&ServiceNumber={ServiceNumber}&PBXUserID={PBXUserID}',this.props);\r\n fetchData(apiPath).then((data) => {\r\n let newState = this.getNewState(data);\t\r\n this.setState(newState);\r\n }).catch((message)=>{\r\n let state = {...this.state};\r\n state.loading = false;\r\n state.loading_error = message.toString();\r\n this.setState(state);\r\n });\r\n }\r\n\r\n changeForward(event){\r\n let setting = this.state.forward_to_email;\r\n setting.processing = event.target.value;\r\n this.updateSetting(setting);\r\n }\r\n\r\n\tcomponentDidMount() {\t\r\n let apiPath = format('usr/VMSettings?AccountNumber={AccountNumber}&DirectoryNumber={DirectoryNumber}&ServiceNumber={ServiceNumber}&PBXUserID={PBXUserID}',this.props);\r\n fetchData(apiPath).then((data) => {\r\n let newState = this.getNewState(data);\t\r\n this.setState(newState);\r\n }).catch((message)=>{\r\n console.log(message);\r\n let state = {...this.state};\r\n state.loading = false;\r\n state.loading_error = message\r\n this.setState(state);\r\n });\r\n\t}\r\n\r\n getNewState = (data) => {\r\n let state = {...this.state};\r\n state.loading = false;\r\n if (data !== null) {\r\n state.PostData = data;\r\n state.loading_error = \"\";\r\n state.voice_messaging.selected = data.isActive;\r\n state.send_all_calls_to_vm.selected = data.alwaysRedirectToVoiceMail;\r\n state.send_busy_calls_to_vm.selected = data.busyRedirectToVoiceMail;\r\n state.send_unanswered_calls_to_vm.selected = data.noAnswerRedirectToVoiceMail;\r\n\r\n if(data.processing === 0)\r\n state.forward_to_email.processing = \"0\";\r\n else if(data.processing === 1)\r\n state.forward_to_email.processing = \"1\";\r\n \r\n state.forward_to_email.email = data.voiceMessageDeliveryEmailAddress;\r\n state.forward_to_email.waiting_indicator = data.usePhoneMessageWaitingIndicator;\r\n state.forward_to_email.email_is_valid = true;\r\n\r\n data.voiceMessageNotifyEmailAddress = data.voiceMessageNotifyEmailAddress?data.voiceMessageNotifyEmailAddress: \"\";\r\n state.notify_me_email_when_new_messages_arrive.selected = data.sendVoiceMessageNotifyEmail;\r\n state.notify_me_email_when_new_messages_arrive.email = data.voiceMessageNotifyEmailAddress;\r\n state.notify_me_email_when_new_messages_arrive.email_is_valid = true;\r\n\r\n \r\n data.voiceMessageCarbonCopyEmailAddress = data.voiceMessageCarbonCopyEmailAddress?data.voiceMessageCarbonCopyEmailAddress: \"\";\r\n state.email_carbon_copy_message.selected = data.sendCarbonCopyVoiceMessage;\r\n state.email_carbon_copy_message.email = data.voiceMessageCarbonCopyEmailAddress;\r\n state.email_carbon_copy_message.email_is_valid = true;\r\n\r\n data.transferPhoneNumber = data.transferPhoneNumber?data.transferPhoneNumber: \"\";\r\n state.transfer_on_0_to_phone_number.selected = data.transferOnZeroToPhoneNumber;\r\n state.transfer_on_0_to_phone_number.phone_number = data.transferPhoneNumber;\r\n //state.settings_available = true;\r\n }\r\n else{\r\n //state.settings_available = false;\r\n }\r\n return state;\r\n \r\n }\r\n render() {\r\n // if(!this.state.settings_available)\r\n // return ();\r\n\r\n return (\r\n \r\n Voicemail Settings\r\n \r\n \r\n Voicemail Settings\r\n \r\n \r\n this.changeOnOffValue(e, b)} \r\n onHandleChangeEmail={(e,b) => this.changeEmailValue(e, b)}\r\n onHandleChangeWaitingIndicator = {(e,b) => this.changeWaitingIndicator(e, b)}\r\n onHandleChangeForward={this.changeForward}\r\n onHandleChangePhone={(e,b) => this.changePhoneNumber(e, b)}\r\n />\r\n \r\n \r\n
    \r\n
    \r\n {this.getSaveButton()}\r\n \r\n
    \r\n {this.getSaveMessage()}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n getSaveButton=()=>{\r\n let forwardToEmailValid = this.state.forward_to_email.selected ? this.state.forward_to_email.email_is_valid: true;\r\n let notifyMeEmailValid = this.state.notify_me_email_when_new_messages_arrive.selected ? this.state.notify_me_email_when_new_messages_arrive.email_is_valid: true;\r\n let emailCarbonCopyValid = this.state.email_carbon_copy_message.selected ? this.state.email_carbon_copy_message.email_is_valid: true;\r\n let enableSave = forwardToEmailValid && notifyMeEmailValid && emailCarbonCopyValid;\r\n\r\n if(this.state.loading || this.state.saving_loading || !enableSave)\r\n return ();\r\n else\r\n return ();\r\n }\r\n getSaveMessage=()=>{\r\n if(this.state.saving_show_success){\r\n return (\r\n
    Success!
    \r\n )\r\n }\r\n else if(this.state.saving_loading){\r\n return ()\r\n }\r\n else if(this.state.saving_error_message){\r\n return (
    {this.state.saving_error_message}
    )\r\n }\r\n }\r\n};\r\n\r\n\r\n\r\nexport default VoicemailSettingsButton;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DataLoadingSpinner } from './../../components/spinners';\r\n\r\nconst busy_greetings = \"busy_greetings\";\r\nconst busy_greetings_personal_greetings = \"busy_personal_greetings\";\r\nconst no_answer_greeting = \"no_answer_greetings\";\r\nconst no_answer_greetings_personal_greeting = \"no_answer_greeting_personal_greetings\";\r\nconst alternate_no_answer_greetings_1_name = \"alternate_no_answer_greetings_1_name\"\r\nconst alternate_no_answer_greetings_2_name = \"alternate_no_answer_greetings_2_name\"\r\nconst alternate_no_answer_greetings_3_name = \"alternate_no_answer_greetings_3_name\"\r\nconst alternate_no_answer_greetings_1_audio = \"alternate_no_answer_greetings_1_audio\"\r\nconst alternate_no_answer_greetings_2_audio = \"alternate_no_answer_greetings_2_audio\"\r\nconst alternate_no_answer_greetings_3_audio = \"alternate_no_answer_greetings_3_audio\"\r\nconst alternate_no_answer_greetings_1_selected = \"alternate_no_answer_greetings_1_selected\"\r\nconst alternate_no_answer_greetings_2_selected = \"alternate_no_answer_greetings_2_selected\"\r\nconst alternate_no_answer_greetings_3_selected = \"alternate_no_answer_greetings_3_selected\"\r\nconst number_of_rings_before_greeting = \"number_of_rings_before_greeting\"\r\nconst auto_login_to_voice_portal_when_calling_from_my_phone = \"auto_login_to_voice_portal_when_calling_from_my_phone\"\r\n\r\nclass ManageGreetingsModal extends Component {\r\n \r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n this.state = { showModal: false };\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n }\r\n \r\n changeAlternateName=(alternate_obj, name)=>{\r\n alternate_obj.name = name;\r\n }\r\n\r\n changeAlternateAudio=(alternate_obj, audio)=>{\r\n alternate_obj.audio_selected = audio;\r\n }\r\n\r\n // changeAlternateSelected=(alternate_obj, selected)=>{\r\n // alternate_obj.audio_selected = selected;\r\n // } \r\n \r\n handleChanges=(type,event)=>{\r\n let newModel = {...this.props.Model}\r\n switch(type){\r\n case busy_greetings:\r\n newModel.busy_greeting.type = event.target.value.trim();\r\n break;\r\n case busy_greetings_personal_greetings:\r\n newModel.busy_greeting.audio_selected = event.target.value.trim();\r\n break;\r\n case no_answer_greeting:\r\n newModel.no_answer_greeting.type = event.target.value.trim();\r\n break;\r\n case no_answer_greetings_personal_greeting:\r\n newModel.no_answer_greeting.audio_selected = event.target.value.trim();\r\n break;\r\n case alternate_no_answer_greetings_1_name:\r\n this.changeAlternateName(newModel.no_answer_greeting.alternate_1, event.target.value.trim())\r\n break;\r\n case alternate_no_answer_greetings_2_name:\r\n this.changeAlternateName(newModel.no_answer_greeting.alternate_2, event.target.value.trim())\r\n break;\r\n case alternate_no_answer_greetings_3_name:\r\n this.changeAlternateName(newModel.no_answer_greeting.alternate_3, event.target.value.trim())\r\n break;\r\n case alternate_no_answer_greetings_1_audio:\r\n this.changeAlternateAudio(newModel.no_answer_greeting.alternate_1, event.target.value.trim())\r\n break;\r\n case alternate_no_answer_greetings_2_audio:\r\n this.changeAlternateAudio(newModel.no_answer_greeting.alternate_2, event.target.value.trim())\r\n break;\r\n case alternate_no_answer_greetings_3_audio:\r\n this.changeAlternateAudio(newModel.no_answer_greeting.alternate_3, event.target.value.trim())\r\n break;\r\n // case alternate_no_answer_greetings_1_selected:\r\n // this.changeAlternateSelected(state.no_answer_greeting.alternate_1, true)\r\n // this.changeAlternateSelected(state.no_answer_greeting.alternate_2, false)\r\n // this.changeAlternateSelected(newModel.alternate_no_answer_greetings_3, false)\r\n // break;\r\n // case alternate_no_answer_greetings_2_selected:\r\n // this.changeAlternateSelected(newModel.alternate_no_answer_greetings_2, true)\r\n // this.changeAlternateSelected(newModel.alternate_no_answer_greetings_1, false)\r\n // this.changeAlternateSelected(newModel.alternate_no_answer_greetings_3, false)\r\n // break;\r\n // case alternate_no_answer_greetings_3_selected:\r\n // this.changeAlternateSelected(newModel.alternate_no_answer_greetings_3, true)\r\n // this.changeAlternateSelected(newModel.alternate_no_answer_greetings_1, false)\r\n // this.changeAlternateSelected(newModel.alternate_no_answer_greetings_2, false)\r\n // break;\r\n case number_of_rings_before_greeting:\r\n newModel.number_of_rings_before_greeting = event.target.value.trim();\r\n break;\r\n case auto_login_to_voice_portal_when_calling_from_my_phone:\r\n newModel.auto_login = event.target.checked;\r\n break;\r\n\r\n }\r\n this.props.onHandleChangeModel(newModel);\r\n }\r\n\r\n render() {\r\n let model = this.props.Model;\r\n let loading = model.loading;\r\n if(loading){\r\n return ( );\r\n }\r\n \r\n\r\n let loading_error = model.loading_error;\r\n if(loading_error){\r\n return (
    {loading_error}
    );\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n {this.getBusyPersonalGreeting()}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n {this.noAnswerUnavailable()}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n { this.handleChanges(no_answer_greeting, e)}} />\r\n
    \r\n
    \r\n \r\n { this.handleChanges(alternate_no_answer_greetings_1_name, e)}}\r\n />\r\n {this.getTexboxRequiredError(model.no_answer_greeting.type === \"2\", model.no_answer_greeting.alternate_1.name)}\r\n \r\n \r\n {this.getDropdownRequiredError(model.no_answer_greeting.type === \"2\", model.no_answer_greeting.alternate_1.audio_selected )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.handleChanges(no_answer_greeting, e)}}/>\r\n
    \r\n
    \r\n \r\n { this.handleChanges(alternate_no_answer_greetings_2_name, e)}}/>\r\n {this.getTexboxRequiredError(model.no_answer_greeting.type == \"3\", model.no_answer_greeting.alternate_2.name)}\r\n \r\n \r\n {this.getDropdownRequiredError(model.no_answer_greeting.type === \"3\", model.no_answer_greeting.alternate_2.audio_selected )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \" name=\"radio\" type=\"radio\" value=\"4\" \r\n disabled={!model.audio_files_selection_enable}\r\n checked={model.no_answer_greeting.type === \"4\"} \r\n onChange={(e)=>{ this.handleChanges(no_answer_greeting, e)}}/>\r\n
    \r\n
    \r\n \r\n { this.handleChanges(alternate_no_answer_greetings_3_name, e)}}/>\r\n {this.getTexboxRequiredError(model.no_answer_greeting.type === \"4\", model.no_answer_greeting.alternate_3.name)}\r\n \r\n \r\n {this.getDropdownRequiredError(model.no_answer_greeting.type === \"4\", model.no_answer_greeting.alternate_3.audio_selected )}\r\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 Auto-login to Voice Portal when calling from my phone\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n getBusyPersonalGreeting=()=>{\r\n let model = this.props.Model;\r\n if(model.busy_greeting.type !== \"1\")\r\n return \"\";\r\n\r\n return (
    \r\n \r\n {this.getDropdownRequiredError(model.busy_greeting.type === \"1\", model.busy_greeting.audio_selected )}\r\n
    )\r\n }\r\n\r\n noAnswerUnavailable=()=>{\r\n let model = this.props.Model;\r\n\r\n if(model.no_answer_greeting.type !== \"1\")\r\n return \"\";\r\n\r\n return (
    \r\n \r\n {this.getDropdownRequiredError(model.no_answer_greeting.type === \"1\", model.no_answer_greeting.audio_selected )}\r\n
    )\r\n }\r\n \r\n getTexboxRequiredError=(validate, value)=>{\r\n let requiredElem = (
    Required!
    );\r\n if(!validate) return \"\";\r\n\r\n if(!value){\r\n return requiredElem\r\n }\r\n\r\n if(value && !value.trim()){\r\n return requiredElem\r\n }\r\n }\r\n \r\n getDropdownRequiredError=(validate, value)=>{\r\n let requiredElem = (
    Required!
    );\r\n if(!validate) return \"\";\r\n\r\n if(value === \"0\"){\r\n return requiredElem;\r\n }\r\n }\r\n};\r\n\r\nexport default ManageGreetingsModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport ManageGreetingsModal from './modals/manageGreetingsModal';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\nimport { DataLoadingSpinner } from './../components/spinners';\r\nimport { fetchData, post } from './../requests/api_calls';\r\nimport format from 'string-format';\r\nimport * as config from './../requests/config';\r\n\r\nclass ManageGreetingsButton extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = this.getDefaultModel();\r\n }\r\n\r\n getDefaultModel=()=>{\r\n return { \r\n manage_available: false,\r\n showModal: false,\r\n loading: false, \r\n loading_error: \"\",\r\n saving_enable: false,\r\n saving_loading: false,\r\n saving_show_success: false,\r\n saving_error_message: \"\",\r\n busy_greeting: {\r\n type: 0, //system or personal,\r\n audio_selected: \"0\",\r\n error_message: \"\"\r\n }, \r\n no_answer_greeting: {\r\n type: 0, //system or personal, alternative 1, alternative 2, alternative 3\r\n //Only audio_selected for personal\r\n audio_selected: \"0\",\r\n error_message: \"\",\r\n alternate_1:\r\n {\r\n name: \"\",\r\n audio_selected: \"0\",\r\n error_message: \"\"\r\n },\r\n alternate_2:\r\n {\r\n name: \"\",\r\n audio_selected: \"0\",\r\n error_message: \"\"\r\n },\r\n alternate_3:\r\n {\r\n name: \"\",\r\n audio_selected: \"0\",\r\n error_message: \"\"\r\n }\r\n }, \r\n audio_files:[\r\n \r\n ],\r\n audio_files_selection_enable: false,\r\n number_of_rings_before_greeting: 2, //number\r\n auto_login: false\r\n };\r\n }\r\n getAudioById=(audio_files, id)=>{\r\n let filtered = audio_files.filter(x=>x.id.toString() === id.toString());\r\n // console.log(ids);\r\n // console.log(audio_files);\r\n // console.log(id.toString());\r\n if(filtered.length > 0)\r\n return filtered[0];\r\n\r\n return null;\r\n }\r\n\r\n IsModelValid=()=>{\r\n let state = {...this.state};\r\n let isValid = true;\r\n state.saving_error_message = \"\";\r\n if(state.busy_greeting.type === \"1\" && state.busy_greeting.audio_selected === \"0\" )\r\n isValid = false;\r\n\r\n if(state.no_answer_greeting.type === \"1\" && state.no_answer_greeting.audio_selected === \"0\" )\r\n isValid = false;\r\n\r\n if(state.no_answer_greeting.type === \"2\" && !state.no_answer_greeting.alternate_1.name)\r\n isValid = false;\r\n if(state.no_answer_greeting.type === \"3\" && !state.no_answer_greeting.alternate_2.name)\r\n isValid = false;\r\n\r\n if(state.no_answer_greeting.type === \"4\" && !state.no_answer_greeting.alternate_3.name)\r\n isValid = false;\r\n \r\n if(state.no_answer_greeting.type === \"2\" && state.no_answer_greeting.alternate_1.audio_selected === \"0\")\r\n isValid = false;\r\n\r\n if(state.no_answer_greeting.type === \"3\" && state.no_answer_greeting.alternate_2.audio_selected === \"0\")\r\n isValid = false;\r\n\r\n if(state.no_answer_greeting.type === \"4\" && state.no_answer_greeting.alternate_3.audio_selected === \"0\")\r\n isValid = false;\r\n \r\n return isValid;\r\n }\r\n\r\n handleSave=()=> {\r\n let state = {...this.state};\r\n if(!this.IsModelValid()) {\r\n state.saving_error_message = \"Please check field with errors\";\r\n this.setState(state);\r\n return;\r\n }; \r\n \r\n state.saving_error_message = \"\";\r\n state.saving_loading = true;\r\n state.saving_show_success = false;\r\n state.saving_enable = false;\r\n\r\n\r\n let postData = {};\r\n postData.PBXUserID = this.props.PBXUserID;\r\n postData.ServiceNumber = this.props.ServiceNumber;\r\n\r\n postData.BusyAnnouncementSelection = state.busy_greeting.type;\r\n\r\n if(parseInt(state.busy_greeting.type) === 0){\r\n postData.BusyPersonalAudioFile = null;\r\n }\r\n else if(parseInt(state.busy_greeting.type) === 1){\r\n let selectedAudio = this.getAudioById(state.audio_files, state.busy_greeting.audio_selected);\r\n if(selectedAudio){\r\n postData.BusyPersonalAudioFile ={\r\n AudioName: selectedAudio.audio_name,\r\n FileType: selectedAudio.file_type,\r\n IsGroup: selectedAudio.is_group\r\n }\r\n }\r\n \r\n }\r\n\r\n postData.noAnswerAnnouncementSelection = state.no_answer_greeting.type;\r\n if(state.no_answer_greeting.type === \"0\"){\r\n postData.NoAnswerPersonalAudioFile = null;\r\n }\r\n else if(state.no_answer_greeting.type === \"1\"){\r\n let selectedAudio = this.getAudioById(state.audio_files, state.no_answer_greeting.audio_selected);\r\n if(selectedAudio){\r\n postData.NoAnswerPersonalAudioFile = {\r\n AudioName: selectedAudio.audio_name,\r\n FileType: selectedAudio.file_type,\r\n IsGroup: selectedAudio.is_group\r\n }\r\n }\r\n \r\n }else if(state.no_answer_greeting.type === \"2\"){\r\n let selectedAudio = this.getAudioById(state.audio_files, state.no_answer_greeting.alternate_1.audio_selected);\r\n if(selectedAudio){\r\n postData.GreetingName = state.no_answer_greeting.alternate_1.name,\r\n postData.NoAnswerPersonalAudioFile = {\r\n AudioName: selectedAudio.audio_name,\r\n FileType: selectedAudio.file_type,\r\n IsGroup: selectedAudio.is_group\r\n }\r\n }\r\n }\r\n else if(state.no_answer_greeting.type === \"3\"){\r\n let selectedAudio = this.getAudioById(state.audio_files, state.no_answer_greeting.alternate_2.audio_selected);\r\n if(selectedAudio){\r\n postData.GreetingName = state.no_answer_greeting.alternate_2.name,\r\n postData.NoAnswerPersonalAudioFile = {\r\n AudioName: selectedAudio.audio_name,\r\n FileType: selectedAudio.file_type,\r\n IsGroup: selectedAudio.is_group\r\n }\r\n }\r\n }\r\n else if(state.no_answer_greeting.type === \"4\"){\r\n let selectedAudio = this.getAudioById(state.audio_files, state.no_answer_greeting.alternate_3.audio_selected);\r\n if(selectedAudio){\r\n postData.GreetingName = state.no_answer_greeting.alternate_3.name,\r\n postData.NoAnswerPersonalAudioFile = {\r\n AudioName: selectedAudio.audio_name,\r\n FileType: selectedAudio.file_type,\r\n IsGroup: selectedAudio.is_group\r\n }\r\n }\r\n }\r\n postData.NoAnswerNumberOfRings = state.number_of_rings_before_greeting;\r\n postData.VoicePortalAutoLogin = state.auto_login;\r\n let body = JSON.stringify(postData);\r\n\t\tlet headers = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n\r\n post(\"usr/VMManageGreeting\",\"POST\", body, headers)\r\n\t\t.then(response =>{\r\n let state = {...this.state};\r\n state.saving_enable = true;\r\n\t\t\tif(response.ok){\r\n state.saving_show_success = true;\r\n\t\t\t\tstate.saving_loading = false;\r\n state.saving_error_message = \"\";\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\tstate.saving_loading = false;\r\n\t\t\t\tstate.saving_error_message = \"Failed Save\";\r\n }\r\n this.setState(state);\r\n\t\t})\r\n\t\t.catch((message)=>{\r\n let state = {...this.state};\r\n state.saving_loading = false;\r\n state.saving_enable = true;\r\n state.saving_error_message = \"Failed Save\";\r\n this.setState(state);\r\n });\r\n \r\n this.setState(state);\r\n }\r\n\r\n handleChangeState=(model)=>{\r\n this.setState(model);\r\n }\r\n\r\n handleClose() {\r\n let state = {...this.state};\r\n state.showModal = false;\r\n state.loading= false;\r\n state.loading_error= \"\";\r\n state.saving_enable= true;\r\n state.saving_loading= false;\r\n state.saving_show_success= false;\r\n state.saving_error_message= \"\";\r\n this.setState(state);\r\n }\r\n\r\n handleShow() {\r\n let state = this.getDefaultModel();\r\n state.manage_available = true;\r\n state.showModal = true;\r\n state.loading = true;\r\n state.saving_show_success=false;\r\n state.saving_error_message = \"\";\r\n this.setState(state);\r\n\r\n let apiPath = format('usr/VMManageGreeting?ServiceNumber={ServiceNumber}&PBXUserID={PBXUserID}',this.props);\r\n fetchData(apiPath).then((data) => {\r\n if(data){\r\n let model = this.getModel(data);\r\n this.setState(model);\r\n }\r\n else{\r\n let state = {...this.state};\r\n state.saving_enable = false;\r\n state.loading= false;\r\n state.loading_error = \"Loading Fail\";\r\n state.manage_available = false;\r\n this.setState(state);\r\n }\r\n }).catch((message)=>{\r\n let state = {...this.state};\r\n state.loading = false;\r\n state.saving_enable = false;\r\n state.loading_error = message;\r\n this.setState(state);\r\n });\r\n }\r\n\r\n getAudioFileID=(audio_files, audioFile)=>{\r\n let result = audio_files.\r\n filter(x=> \r\n x.audio_name === audioFile.AudioName && \r\n x.file_type === audioFile.FileType && \r\n x.is_group === audioFile.IsGroup);\r\n if(result.length > 0){\r\n return result[0].id;\r\n }\r\n\r\n console.log(\"failedto find\")\r\n return null;\r\n }\r\n\r\n getModel=(data)=>{\r\n let state = {...this.state};\r\n state.loading = false;\r\n state.saving_enable = true;\r\n state.manage_available = true;\r\n state.busy_greeting.type = data.BusyAnnouncementSelection.toString();\r\n state.audio_files = data.AudioFileList.map((x,index)=> {\r\n return {\r\n id: (index + 1).toString(),\r\n audio_name: x.AudioName, \r\n file_type: x.FileType, \r\n is_group:x.IsGroup\r\n }\r\n });\r\n\r\n state.audio_files_selection_enable = state.audio_files.length > 0 ;\r\n if(data.BusyAnnouncementSelection===1 && state.audio_files_selection_enable){\r\n if(data.BusyPersonalAudioFile){\r\n let audioFile = data.BusyPersonalAudioFile;\r\n state.busy_greeting.audio_selected = this.getAudioFileID(state.audio_files, audioFile)\r\n }\r\n }\r\n\r\n state.no_answer_greeting.type = data.NoAnswerAnnouncementSelection.toString();\r\n if(data.NoAnswerAnnouncementSelection===1 && state.audio_files_selection_enable){\r\n if(data.NoAnswerPersonalAudioFile && data.NoAnswerPersonalAudioFile){\r\n let audioFile = data.NoAnswerPersonalAudioFile;\r\n state.no_answer_greeting.audio_selected = this.getAudioFileID(state.audio_files, audioFile)\r\n }\r\n }\r\n\r\n if(data.NoAnswerAnnouncementSelection===2 && state.audio_files_selection_enable){\r\n if(data.NoAnswerPersonalAudioFile){\r\n let audioFile = data.NoAnswerPersonalAudioFile;\r\n state.no_answer_greeting.alternate_1.name = data.GreetingName;\r\n state.no_answer_greeting.alternate_1.audio_selected= this.getAudioFileID(state.audio_files, audioFile)\r\n }\r\n }\r\n\r\n if(data.NoAnswerAnnouncementSelection===3 && state.audio_files_selection_enable){\r\n if(data.NoAnswerPersonalAudioFile){\r\n let audioFile = data.NoAnswerPersonalAudioFile;\r\n state.no_answer_greeting.alternate_2.name = data.GreetingName;\r\n state.no_answer_greeting.alternate_2.audio_selected= this.getAudioFileID(state.audio_files, audioFile)\r\n }\r\n }\r\n\r\n if(data.NoAnswerAnnouncementSelection===4 && state.audio_files_selection_enable){\r\n if(data.NoAnswerPersonalAudioFile){\r\n let audioFile = data.NoAnswerPersonalAudioFile;\r\n state.no_answer_greeting.alternate_3.name = data.GreetingName;\r\n state.no_answer_greeting.alternate_3.audio_selected = this.getAudioFileID(state.audio_files, audioFile)\r\n }\r\n }\r\n\r\n state.number_of_rings_before_greeting = data.NoAnswerNumberOfRings;\r\n state.auto_login = data.VoicePortalAutoLogin;\r\n return state;\r\n \r\n }\r\n\r\n\r\n\tcomponentDidMount() {\t\t\r\n let apiPath = format('usr/VMManageGreeting?ServiceNumber={ServiceNumber}&PBXUserID={PBXUserID}',this.props);\r\n fetchData(apiPath).then((data) => {\r\n if(data){\r\n let state = {...this.state};\r\n state.manage_available = true;\r\n this.setState(state);\r\n }\r\n else{\r\n let state = {...this.state};\r\n state.saving_enable = false;\r\n state.loading= false;\r\n state.loading_error = \"Loading Fail\";\r\n state.manage_available = false;\r\n this.setState(state);\r\n }\r\n }).catch((message)=>{\r\n let state = {...this.state};\r\n state.loading = false;\r\n state.saving_enable = false;\r\n state.loading_error = message;\r\n this.setState(state);\r\n });\r\n\t}\r\n\r\n render() {\r\n // if(!this.state.manage_available)\r\n // return ();\r\n\r\n return (\r\n \r\n Manage Greetings\r\n\r\n \r\n \r\n Manage Greetings\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {this.getSaveButton()}\r\n \r\n
    \r\n {this.getSaveMessage()}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n getSaveButton=()=>{\r\n if(this.state.loading || !this.state.saving_enable){\r\n return ();\r\n }\r\n else{\r\n return ();\r\n }\r\n }\r\n getSaveMessage=()=>{\r\n if(this.state.saving_show_success){\r\n return (\r\n
    Success!
    \r\n )\r\n }\r\n else if(this.state.saving_loading){\r\n return ()\r\n }\r\n else if(this.state.saving_error_message){\r\n return (
    {this.state.saving_error_message}
    )\r\n }\r\n }\r\n};\r\n\r\nexport default ManageGreetingsButton;\r\n","import React from 'react';\nimport { DataLoadingSpinner } from './spinners';\n\nconst saveStatus = (props) => {\n if (props.saving) {\n let savingMessage = '';\n if (props.SavingMessage !== '')\n {\n savingMessage = (\n {props.SavingMessage}\n );\n }\n return (\n
    \n {savingMessage}\n \n
    \n )\n } else if (props.error || props.statusMessage) {\n let statusClass = props.error ? ' error text-danger' : ' success text-success';\n let okBtnClass = props.hideOkBtn ? 'hidden' :'btn'\n return (\n
    \n {props.statusMessage}\n \n
    \n )\n } else return null\n}\n\nexport default saveStatus;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport SaveStatus from '../../../components/save_status';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\n\r\n\r\nexport default class messageDeposit extends Component {\r\n constructor() {\r\n super();\r\n this.openModal = this.openModal.bind(this);\r\n this.closeModal = this.closeModal.bind(this);\r\n console.log(this);\r\n //initial state values\r\n this.state = {\r\n loading: false,\r\n showModal: false,\r\n userGetGreeting: {},\r\n ErrorMessage: \"\"\r\n }\r\n\r\n\r\n }\r\n componentDidMount() {\r\n // here executes code when component is loaded\r\n\r\n }\r\n\r\n fetchUserVoiceMessagingUserGetGreeting = async (voipSwitch, userid, accountNumber, directoryNumber, serviceNumber, pBXUserID) => {\r\n await this.setState({ loading: true });\r\n let path = 'usr/UserVoiceMessagingUserGetGreeting?switchName=' +\r\n voipSwitch + '&userId=' + userid + '&AccountNumber=' + accountNumber +\r\n '&DirectoryNumber=' + directoryNumber + '&ServiceNumber=' + serviceNumber + '&PBXUserID=' + pBXUserID;\r\n console.log(\"url\", path);\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n //console.log('Data', data);\r\n this.setState({\r\n userGetGreeting: data,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n userGetGreeting: {},\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n\r\n }\r\n\r\n modalBody = () => {\r\n // checkbox html?\r\n }\r\n\r\n openModal() {\r\n this.setState({ showModal: true });\r\n const { VoipSwitch, userId, AccountNumber, DirectoryNumber, ServiceNumber, PBXUserID } = sessionStorage;\r\n this.fetchUserVoiceMessagingUserGetGreeting(VoipSwitch, userId, AccountNumber, DirectoryNumber, ServiceNumber, PBXUserID)\r\n }\r\n\r\n closeModal() {\r\n this.setState({ showModal: false, ErrorMessage: \"\" });\r\n }\r\n\r\n handleInputChange = (e) => {\r\n const { name } = e.target;\r\n let { userGetGreeting } = this.state;\r\n userGetGreeting[name] = !userGetGreeting[name];\r\n this.setState({\r\n ...this.state,\r\n userGetGreeting\r\n })\r\n }\r\n\r\n modalContent() {\r\n if (this.state.loading) {\r\n return \r\n }\r\n\r\n const { disableMessageDepositField } = this.state.userGetGreeting || false;\r\n const { extendedAwayDisableMessageDepositField } = this.state.userGetGreeting || false;\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n handleSubmit = async () => {\r\n await this.setState({ loading: true });\r\n const { VoipSwitch, userId, AccountNumber, DirectoryNumber, ServiceNumber, PBXUserID } = sessionStorage;\r\n const apiPath = \"usr/UserVoiceMessagingUserModifyGreeting\";\r\n let { userGetGreeting: requestData } = this.state;\r\n\r\n let dto = {\r\n AccountNumber: AccountNumber,\r\n DirectoryNumber: DirectoryNumber,\r\n ServiceNumber: ServiceNumber,\r\n PBXUserID: PBXUserID,\r\n uvmg: requestData,\r\n }\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(dto)).then((data) => data).catch(err => console.error(err));\r\n if (response.ok) {\r\n this.setState({ ErrorMessage: \"Success\" })\r\n this.fetchUserVoiceMessagingUserGetGreeting(VoipSwitch, userId, AccountNumber, DirectoryNumber, ServiceNumber, PBXUserID);\r\n } else {\r\n this.setState({ ErrorMessage: response.message })\r\n this.fetchUserVoiceMessagingUserGetGreeting(VoipSwitch, userId, AccountNumber, DirectoryNumber, ServiceNumber, PBXUserID);\r\n }\r\n }\r\n\r\n\r\n\r\n render() {\r\n\r\n return (\r\n \r\n Message Deposit\r\n \r\n \r\n Message Deposit\r\n \r\n \r\n\r\n {this.modalContent()}\r\n\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n {/* \r\n */}\r\n
    \r\n
    \r\n
    \r\n {this.state.ErrorMessage !== \"\" && !this.state.loading ? {this.state.ErrorMessage} : null}\r\n
    \r\n
    \r\n
    \r\n\r\n )\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DataLoadingSpinner } from './../../components/spinners';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\n\r\nclass VoicemailBlockModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.props.handleClose();\r\n }\r\n\r\n handleShow() {\r\n this.props.handleShow();\r\n }\r\n\r\n handleYes=(e)=>{\r\n this.props.handleYes(e);\r\n }\r\n\r\n\r\n componentDidUpdate(prevProps){\r\n let countWithError = this.props.saveResult.filter((e,i)=>{\r\n return e.BlockedNumberAlreadyExist || e.ErrorBlocking;\r\n }).length;\r\n let countSuccess = this.props.saveResult.filter((e,i)=>{\r\n return !e.BlockedNumberAlreadyExist && e.Blocked;\r\n }).length;\r\n\r\n if(countWithError == 0 && countSuccess > 0){\r\n setTimeout(()=>{\r\n this.props.handleClose();\r\n }, 4000);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n Block\r\n \r\n \r\n {this.props.confirmationMsg}\r\n \r\n \r\n
    \r\n {this.renderResult()}\r\n {this.error()}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n 0}\r\n SuccessMessage=\"Success\"\r\n SuccessTransitionClass=\"vm-setting-success\"\r\n // ErrorMessage={this.props.body}\r\n />\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n renderResult=()=>{\r\n if(this.state.loading) return (
    );\r\n\r\n let errorComponent = (
    );\r\n let successComponent = (
    );\r\n let countWithError = this.props.saveResult.filter((e,i)=>{\r\n return e.BlockedNumberAlreadyExist || e.ErrorBlocking;\r\n }).length;\r\n let countSuccess = this.props.saveResult.filter((e,i)=>{\r\n return !e.BlockedNumberAlreadyExist && e.Blocked;\r\n }).length;\r\n \r\n if(countWithError > 0){\r\n errorComponent = \r\n (
    \r\n
      \r\n {\r\n this.props.saveResult.map((e,i)=>{\r\n let rowNumber = i+1;\r\n if(e.BlockedNumberAlreadyExist){\r\n return
    • #{rowNumber}. {e.BlockedNumber} already block in '{e.Criteria}'
    • ;\r\n }\r\n else if(e.ErrorBlocking){\r\n return
    • #{rowNumber}. {e.BlockedNumber} an error saving the number
    • ;\r\n }\r\n })\r\n }\r\n
    \r\n
    );\r\n }\r\n\r\n\r\n if(countSuccess > 0){\r\n successComponent = \r\n (
    \r\n
      \r\n {\r\n this.props.saveResult.map((e,i)=>{\r\n let rowNumber = i+1;\r\n if(!e.BlockedNumberAlreadyExist && e.Blocked){\r\n return
    • #{rowNumber}. {e.BlockedNumber} successfully block in '{e.Criteria}'
    • ;\r\n }\r\n })\r\n }\r\n
    \r\n
    );\r\n }\r\n\r\n return (\r\n
    \r\n {successComponent}\r\n {errorComponent}\r\n
    \r\n );\r\n }\r\n\r\n loading(){\r\n if(this.props.loading)\r\n return ;\r\n\r\n return \"\";\r\n }\r\n\r\n error=()=>{\r\n let errorMessage = \"\";\r\n if(this.props.showError){\r\n errorMessage = (
    {this.props.ErrorMessage}
    )\r\n }\r\n return errorMessage;\r\n }\r\n};\r\n\r\nclass SavingMessageControl extends Component {\r\n render() {\r\n\r\n let loadingMessage = \"\";\r\n if(this.props.showLoading){\r\n loadingMessage = ()\r\n }\r\n\r\n return (\r\n
    \r\n {loadingMessage}\r\n
    \r\n );\r\n }\r\n};\r\n\r\nclass SaveButton extends Component {\r\n render() {\r\n if(this.props.disabled)\r\n return ();\r\n else\r\n return ();\r\n }\r\n};\r\n\r\nexport default VoicemailBlockModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DataLoadingSpinner } from './../../components/spinners';\r\n\r\nclass VoicemailDeleteModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n this.props.handleShow();\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n \r\n Delete\r\n\r\n \r\n \r\n Are you sure you want to delete these voicemails?\r\n \r\n \r\n
    \r\n {this.props.body}\r\n
    \r\n
    \r\n \r\n
    \r\n {this.loading()}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n \r\n loading(){\r\n if(this.props.loading)\r\n return ;\r\n\r\n return \"\";\r\n }\r\n};\r\n\r\nexport default VoicemailDeleteModal;\r\n","import React, { Component } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\nimport { DataLoadingSpinner } from '../../../components/spinners'; \nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\nimport { postDataWithCustomHeader } from '../../../requests/api_calls';\nimport * as settings from '../../../scripts/session';\n\nclass PinResetModal extends Component {\n\n constructor(props) {\n super(props);\n let pin = '8642';\n let isCustom = false;\n if ((props.DirectoryNumber !== '') && \n (props.DirectoryNumber.indexOf('86') >= 0 || props.DirectoryNumber.indexOf('42') >= 0 || props.DirectoryNumber.indexOf('68') >= 0 || props.DirectoryNumber.indexOf('24') >= 0))\n {\n isCustom = true; \n pin = this.GeneratePin();\n }\n \n\n this.state = { \n showModal: false,\n loading: false,\n saving_loading: false,\n saving_show_success: false,\n saving_error_message: '',\n saving_show_error: false,\n PIN: pin,\n isCustom: isCustom\n };\n }\n\n handleClose=()=> {\n this.setState({ showModal: false });\n }\n\n handleShow=()=> {\n this.setState({ showModal: true });\n }\n\n GeneratePin = () => {\n let returnString = '';\n while (returnString.length < 4) {\n let newNumber = Math.floor(Math.random() * 10).toString();\n if (returnString.indexOf(newNumber) < 0)\n returnString += newNumber;\n }\n \n return returnString;\n \n }\n\n generateNewPin=()=> {\n this.setState({loading: true});\n let pin = this.state.PIN;\n let newPin = pin;\n while (pin === newPin)\n newPin = this.GeneratePin();\n \n this.setState({PIN: newPin, loading: false});\n }\n\n handleResetPin=()=> {\n let state = {...this.state};\n state.saving_loading = true;\n state.saving_show_success = false;\n this.setState(state);\n \n \n \n let body = {\n AccountNumber: this.props.AccountNumber,\n DirectoryNumber: this.props.DirectoryNumber,\n ResetPin: this.state.PIN,\n access_token: settings.storedAccessToken(),\n x_policy: settings.storedXPolicy(),\n };\n let headers = {\n 'Content-Type': 'application/x-www-form-urlencoded', \n 'Accept': 'text/html'\n }\n\n\n postDataWithCustomHeader(\"vm/ResetVMPin\", body, headers)\n\t\t.then(response =>{\n let state = {...this.state};\n\t\t\tif(response.ok){\n state.saving_show_success = true;\n state.saving_loading = false;\n state.saving_show_error = false;\n\t\t\t}\n\t\t\telse{\n let message = response.message;\n let msg = 'Failed Save';\n if (message.indexOf('Invalid portal passcode') >= 0)\n msg = 'Invalid PIN. Please click on Generate New Voicemail Pin button and try again or contact support!'; \n \n \n state.saving_loading = false;\n state.saving_show_error = true;\n state.saving_error_message = msg\n }\n this.setState(state);\n\t\t})\n\t\t.catch((message)=>{\n console.log(message);\n let state = {...this.state};\n\t\t\tstate.saving_loading = false;\n this.setState(state);\n\t\t});\n }\n\n componentDidMount() { \n }\n\n render() {\n return (\n \n \n\n \n \n Reset Voicemail Pin\n \n \n \n
    \n

    Click the Reset button below to temporarily reset your Voicemail PIN to {this.state.PIN}. When you access your voicemail with this temporary PIN, you will be prompted to assign a new PIN.

    \n Reset Voicemail Pin

    \n Generate New Voicemail Pin\n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n );\n }\n};\n\nclass SavingMessageControl extends Component {\n render() {\n let successMessage = \"\";\n if(this.props.showSuccess){\n successMessage = (\n
    {this.props.SuccessMessage}
    \n )\n }\n\n let loadingMessage = \"\";\n if(this.props.showLoading){\n loadingMessage = ()\n }\n \n let errorMessage = \"\";\n if(this.props.showError){\n errorMessage = (
    {this.props.ErrorMessage}
    )\n }\n\n return (\n
    \n {successMessage}\n {loadingMessage}\n {errorMessage}\n
    \n );\n }\n};\n\nexport default PinResetModal;","import React, { Component } from 'react';\n// import { Tooltip } from '@progress/kendo-popups-react-wrapper';\n// import '@progress/kendo-ui';\nimport {Popover, OverlayTrigger} from 'react-bootstrap'\n\nclass InfoPop extends Component {\n\n\tcomponentWillMount() {}\n\n\trender() {\n\t\tconst message = this.props.message;\n\t\tlet popop = { message };\n\t\treturn(\n\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t {/* \n\t\t\t\t\t\t\n\t\t\t \t */}\n\t\t\t\n\t\t);\n\t}\n}\n\nexport default InfoPop;","import React, { Component } from 'react';\r\nimport InfoPop from './../components/infopop';\r\nimport { DataLoadingSpinner } from './../components/spinners';\r\n\r\nclass LongSwitch extends Component {\r\n\r\n\tconstructor(props) {\r\n super(props);\r\n\t}\r\n\r\n\tcomponentWillMount() {\r\n\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst hasInfo = this.props.info;\r\n\r\n\t\treturn(\t\t\r\n\t\t\t
    \r\n\t\t\t\t{ this.props.label }\r\n\t\t\t\t{ hasInfo &&\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport default LongSwitch;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport Voicemail from './voicemail';\r\nimport VoicemailSettingsButton from './../voicemailSettingsButton';\r\nimport ManageGreetingsButton from './../manageGreetingsButton';\r\nimport MessageDepositButton from './modals/messageDepositButton'\r\nimport VoicemailBlockModal from './../modals/voicemailBlockModal';\r\nimport VoicemailDeleteModal from './../modals/voicemailDeleteModal';\r\nimport PinResetModal from '../voicemails/modals/pinResetModal'\r\nimport { DataLoadingSpinner } from './../../components/spinners';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\nimport LongSwitch from './../../components/long_switch';\r\nimport { fetchData, postData, post, postDataWithCustomHeader } from './../../requests/api_calls';\r\nimport * as settings from './../../scripts/session';\r\nimport * as config from './../../requests/config'\r\nimport format from 'string-format';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst VMsConfirmationMsg = \"Are you sure you want to block all calls and voicemails from these numbers?\";\r\nconst VMConfirmationMsg = \"Are you sure you want to block all calls and voicemails from this number?\";\r\nconst maxVmInCard = 5;\r\n\r\nclass Voicemails extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = this.initialState();\r\n\r\n this.handleHideSendModal = this.handleHideSendModal.bind(this);\r\n this.handleSend = this.handleSend.bind(this);\r\n this.handleChangeEmailText = this.handleChangeEmailText.bind(this);\r\n };\r\n\r\n initialState = () => {\r\n return {\r\n enable: false,\r\n voicemail_switch: {\r\n visible: false,\r\n isActive: true,\r\n show_success: false,\r\n show_error: false,\r\n loading: false,\r\n vm_settings: null\r\n },\r\n voicemails: [],\r\n voicemail_count: 0,\r\n voicemail_fetch_error: \"\",\r\n loading: true,\r\n activevm: {\r\n account_number: \"\",\r\n directory_number: \"\",\r\n filename: \"\"\r\n },\r\n sendModal: {\r\n show: false,\r\n emailText: \"\",\r\n emailTextValid: true,\r\n errorMessage: \"\",\r\n loading: false,\r\n },\r\n delete: {\r\n voicemails: [],\r\n error_message: [],\r\n loading: false\r\n },\r\n block: {\r\n voicemails: [],\r\n error_message: [],\r\n show_dialog: false,\r\n show_success: false,\r\n loading: false,\r\n save_result: []\r\n }\r\n };\r\n }\r\n\r\n handleDeleteModalShow() {\r\n this.setState({ ...{ delete: { voicemails: [], error_message: [], show_dialog: true } } });\r\n }\r\n\r\n handleDeleteVM() {\r\n let selected_voicemails = this.state.voicemails.filter((vmLocal, index) => {\r\n return vmLocal.selected;\r\n });\r\n\r\n this.setState({ ...{ delete: { voicemails: selected_voicemails, error_message: [] } } });\r\n selected_voicemails.forEach(element => {\r\n let body = {\r\n AccountNumber: element.AccountNumber,\r\n DirectoryNumber: element.DirectoryNumber,\r\n FileName: element.Location,\r\n access_token: settings.storedAccessToken(),\r\n x_policy: settings.storedXPolicy(),\r\n };\r\n let headers = {\r\n 'Content-Type': 'application/x-www-form-urlencoded', \r\n 'Accept': 'text/html'\r\n }\r\n postDataWithCustomHeader(\"vm/VMDelete\", body, headers)\r\n .then(response => {\r\n\r\n let newdeletedvms = this.state.delete.voicemails.filter((vmLocal, index) => {\r\n return vmLocal.Location != element.Location;\r\n });\r\n\r\n if (response.ok) {\r\n let newvoicemails = this.state.voicemails.filter((vmLocal, index) => {\r\n return vmLocal.Location != element.Location;\r\n });\r\n this.setState({ ...{ voicemails: newvoicemails, voicemail_count: this.state.voicemail_count - 1, delete: { voicemails: newdeletedvms } } });\r\n }\r\n else {\r\n let error_message = this.state.delete.error_message;\r\n error_message.push(response.message);\r\n this.setState({ ...{ delete: { error_message: error_message, voicemails: newdeletedvms } } });\r\n }\r\n\r\n })\r\n .catch((message) => {\r\n let newdeletedvms = this.state.delete.voicemails.filter((vmLocal, index) => {\r\n return vmLocal.Location != element.Location;\r\n });\r\n\r\n let error_message = this.state.delete.error_message;\r\n error_message.push(message.toString());\r\n this.setState({ ...{ delete: { error_message: error_message, voicemails: newdeletedvms } } });\r\n });\r\n });\r\n }\r\n\r\n\r\n handleBlockModalShow() {\r\n this.setState({ ...{ block: { voicemails: [], error_message: [], show_dialog: true, show_success: false, loading: false, save_result: [] } } });\r\n }\r\n\r\n handleBlockModalClose() {\r\n let state = { ...this.state };\r\n state.voicemails.forEach((vmLocal, index) => {\r\n vmLocal.selected = false;\r\n });\r\n state.block.voicemails = [];\r\n state.block.error_message = [];\r\n state.block.show_dialog = false;\r\n state.block.show_success = false;\r\n state.block.loading = false;\r\n state.block.save_result = [];\r\n this.setState(state);\r\n }\r\n\r\n handleBlockVM() {\r\n let state = { ...this.state };\r\n let selected_block_numbers = state.voicemails.filter((vmLocal, index) => {\r\n return vmLocal.selected;\r\n }).map(e => e.FromPhone);\r\n state.block.voicemails = selected_block_numbers;\r\n state.block.error_message = [];\r\n state.block.loading = true;\r\n this.setState(state);\r\n\r\n let body = {\r\n BlockNumbers: selected_block_numbers,\r\n AccountNumber: this.props.AccountNumber,\r\n DirectoryNumber: this.props.DirectoryNumber,\r\n PBXUserID: this.props.PBXUserID,\r\n };\r\n\r\n body = JSON.stringify(body);\r\n let header = {\r\n 'Authorization': 'Bearer ' + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy(),\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n post(\"vm/VMBlock\", \"POST\", body)\r\n .then(response => {\r\n let state = { ...this.state };\r\n state.block.loading = false;\r\n state.block.show_success = response.ok;\r\n if (!response.ok)\r\n state.block.error_message.push(\"Failed to save\");\r\n else {\r\n state.block.save_result = JSON.parse(response.message);\r\n }\r\n this.setState(state);\r\n })\r\n .catch((message) => {\r\n let state = { ...this.state };\r\n state.block.loading = false;\r\n state.block.error_message.push(\"Failed to save\");\r\n state.block.show_success = false;\r\n this.setState(state);\r\n });\r\n\r\n }\r\n\r\n handleChangeEmailText(event) {\r\n let sendModal = this.state.sendModal;\r\n sendModal.emailText = event.target.value;\r\n sendModal.errorMessage = \"\";\r\n sendModal.emailTextValid = true;\r\n this.setState({ ...{ sendModal: sendModal } });\r\n }\r\n\r\n handleSend() {\r\n let sendModal = this.state.sendModal;\r\n\r\n if (!this.validateEmail()) {\r\n sendModal.emailTextValid = false;\r\n this.setState({ ...{ sendModal: sendModal } });\r\n return;\r\n }\r\n\r\n sendModal.emailTextValid = true;\r\n sendModal.loading = true;\r\n sendModal.errorMessage = null;\r\n this.setState({ ...{ sendModal: sendModal } });\r\n\r\n let body = {\r\n AccountNumber: this.state.activevm.account_number,\r\n DirectoryNumber: this.state.activevm.directory_number,\r\n FileName: this.state.activevm.filename,\r\n ToEmail: this.state.sendModal.emailText,\r\n access_token: settings.storedAccessToken(),\r\n x_policy: settings.storedXPolicy(),\r\n };\r\n\r\n let headers = {\r\n 'Content-Type': 'application/x-www-form-urlencoded', \r\n 'Accept': 'text/html'\r\n }\r\n postDataWithCustomHeader(\"vm/VMForward\", body, headers)\r\n .then(response => {\r\n if (response.ok) {\r\n this.setState({ ...{ sendModal: { show: false, emailText: \"\", errorMessage: \"\" } } });\r\n }\r\n else {\r\n this.setState({ ...{ sendModal: { show: true, emailText: this.state.sendModal.emailText, errorMessage: \"Error: Please contact administrator\" } } });\r\n }\r\n }\r\n ).catch((message) => {\r\n this.setState({ ...{ sendModal: { show: true, emailText: this.state.sendModal.emailText, errorMessage: \"Error: Please contact administrator\" } } });\r\n\r\n });\r\n }\r\n\r\n handleHideSendModal() {\r\n\r\n let sendModal = this.state.sendModal;\r\n sendModal.show = false;\r\n sendModal.emailText = \"\";\r\n this.setState({ ...{ sendModal: sendModal } });\r\n }\r\n\r\n handledSelectChanged = (vm, event) => {\r\n let voicemails_data = this.state.voicemails.map((vmLocal, index) => {\r\n if (vmLocal.Location === vm.Location) {\r\n vmLocal.selected = !vmLocal.selected;\r\n }\r\n return vmLocal;\r\n });\r\n let state = { ...this.state };\r\n state.voicemails = voicemails_data;\r\n this.setState(state);\r\n }\r\n\r\n handleShowSendModal = (vm, event) => {\r\n let activevm =\r\n {\r\n account_number: vm.AccountNumber,\r\n directory_number: vm.DirectoryNumber,\r\n filename: vm.Location\r\n };\r\n let sendModal = this.state.sendModal;\r\n sendModal.show = true;\r\n sendModal.emailText = \"\";\r\n sendModal.emailTextValid = true;\r\n sendModal.errorMessage = \"\";\r\n this.setState({ ...{ sendModal: sendModal, activevm: activevm } });\r\n }\r\n\r\n handleDownload = (vm, event) => {\r\n let activevm = {\r\n account_number: vm.AccountNumber,\r\n directory_number: vm.DirectoryNumber,\r\n filename: vm.Location\r\n };\r\n this.setState({ ...{ activevm: activevm } });\r\n\r\n setTimeout(() => {\r\n this.refs.downloadSubmit.submit();\r\n }, 500);\r\n }\r\n\r\n handlePlay = (vm, event) => {\r\n let activevm = {\r\n account_number: vm.AccountNumber,\r\n directory_number: vm.DirectoryNumber,\r\n filename: vm.Location\r\n };\r\n this.setState({ ...{ activevm: activevm } });\r\n\r\n setTimeout(() => {\r\n this.refs.playSubmit.submit();\r\n }, 500);\r\n }\r\n\r\n onHandleVoicemail = (event) => {\r\n let state = { ...this.state };\r\n state.voicemail_switch.isActive = event.target.checked;\r\n state.voicemail_switch.loading = true;\r\n state.voicemail_switch.show_success = false;\r\n state.voicemail_switch.show_error = false;\r\n\r\n state.voicemail_switch.vm_settings.isActive = event.target.checked\r\n this.setState(state);\r\n\r\n let body = JSON.stringify(state.voicemail_switch.vm_settings);\r\n let headers = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n post(\"usr/VMSettings\", \"POST\", body, headers)\r\n .then(response => {\r\n let state = { ...state };\r\n state.voicemail_switch.loading = false;\r\n if (response.ok) {\r\n state.voicemail_switch.show_success = true;\r\n state.voicemail_switch.show_error = false;\r\n state.voicemails = [];\r\n state.voicemail_count = 0;\r\n\r\n if (state.voicemail_switch.isActive) {\r\n state.loading = true;\r\n let apiUrl = format('vm/VMList?AccountNumber={AccountNumber}&DirectoryNumber={DirectoryNumber}', this.props);\r\n this.fetchVoiceMails(apiUrl);\r\n }\r\n else {\r\n state.loading = false;\r\n }\r\n }\r\n else {\r\n state.voicemail_switch.show_success = true;\r\n state.voicemail_switch.show_error = false;\r\n }\r\n this.setState(state);\r\n })\r\n .catch((message) => {\r\n let state = { ...this.state };\r\n state.voicemail_switch.loading = false;\r\n state.voicemail_switch.show_success = true;\r\n state.voicemail_switch.show_error = false;\r\n this.setState(state);\r\n });\r\n }\r\n\r\n handleVMSettingChange = (vmSetting) => {\r\n let state = { ...this.state };\r\n state.voicemail_switch.isActive = vmSetting.isActive;\r\n this.setState(state);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.AccountNumber !== prevProps.AccountNumber ||\r\n this.props.DirectoryNumber !== prevProps.DirectoryNumber ||\r\n this.props.ServiceNumber !== prevProps.ServiceNumber ||\r\n this.props.PBXUserID !== prevProps.PBXUserID) {\r\n this.enableUserMessaging(this.props);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.enableUserMessaging(this.props);\r\n }\r\n\r\n enableUserMessaging = (props) => {\r\n this.setState(this.initialState());\r\n let basicData = { ServiceNumber: this.props.ServiceNumber, PBXUserID: this.props.PBXUserID };\r\n let apiUrl = \"\";\r\n if (this.props.ServiceNumber && this.props.PBXUserID)\r\n apiUrl = format('usr/AssignedServices?ServiceNumber={ServiceNumber}&PBXUserID={PBXUserID}', basicData);\r\n else if (this.props.ServiceNumber)\r\n apiUrl = format('usr/AssignedServices?ServiceNumber={ServiceNumber}', basicData);\r\n else if (this.props.PBXUserID)\r\n apiUrl = format('usr/AssignedServices?PBXUserID={PBXUserID}', basicData);\r\n\r\n // let state = {...this.state};\r\n // state.enable = true;\r\n // state.loading = false;\r\n // this.loadSettings(props);\r\n fetchData(apiUrl).then((data) => {\r\n let state = { ...this.state };\r\n state.enable = false;\r\n state.loading = false;\r\n if (data) {\r\n //console.log(\"user/AssignedServices\");\r\n //console.log(data);\r\n let filterService = data.filter((item) => { return item.ServiceName === \"VoiceMessagingUser\" && item.IsActiveSpecified })\r\n //console.log(filterService);\r\n if (filterService.length > 0) {\r\n let service = filterService[0];\r\n state.enable = true;\r\n state.loading = true;\r\n // if(service.IsActive){\r\n // state.enable = true;\r\n // state.loading = true;\r\n // console.log(\"enableUserMessaging.props\")\r\n // console.log(props);\r\n // this.loadSettings(props);\r\n // }\r\n this.loadSettings(props);\r\n }\r\n }\r\n this.setState(state);\r\n }).catch((message) => {\r\n let state = { ...this.state };\r\n state.enable = false;\r\n state.loading = false;\r\n this.setState(state);\r\n });\r\n }\r\n\r\n loadSettings = (props) => {\r\n let vmOnOffApi = format('usr/VMSettings?ServiceNumber={ServiceNumber}&PBXUserID={PBXUserID}&AccountNumber={AccountNumber}&DirectoryNumber={DirectoryNumber}', props);\r\n fetchData(vmOnOffApi).then((data) => {\r\n let state = { ...this.state };\r\n state.voicemail_switch.visible = true;\r\n state.voicemail_switch.vm_settings = data;\r\n if (data !== null) {\r\n // console.log(\"loadSettings\")\r\n // console.log(data);\r\n state.voicemail_switch.isActive = data.isActive;\r\n state.voicemails = [];\r\n state.voicemail_count = 0;\r\n if (state.voicemail_switch.isActive) {\r\n state.loading = true;\r\n let apiUrl = format('vm/VMList?AccountNumber={AccountNumber}&DirectoryNumber={DirectoryNumber}', props);\r\n this.fetchVoiceMails(apiUrl);\r\n }\r\n else {\r\n state.loading = false;\r\n }\r\n }\r\n else {\r\n state.voicemails = [];\r\n state.voicemail_count = 0;\r\n\r\n state.loading = true;\r\n let apiUrl = format('vm/VMList?AccountNumber={AccountNumber}&DirectoryNumber={DirectoryNumber}', props);\r\n this.fetchVoiceMails(apiUrl);\r\n }\r\n\r\n this.setState(state);\r\n }).catch((message) => {\r\n let state = { ...this.state };\r\n state.voicemail_switch.show_error = true;\r\n this.setState(state);\r\n });\r\n }\r\n\r\n fetchVoiceMails = (apiPath, errorMsg) => {\r\n fetchData(apiPath).then((data) => {\r\n\r\n if (data) {\r\n this.loadData(data);\r\n }\r\n else {\r\n let state = { ...this.state };\r\n state.voicemails = [];\r\n state.voicemail_count = 0;\r\n state.loading = 0;\r\n this.setState(state);\r\n }\r\n }).catch((message) => {\r\n let state = { ...this.state };\r\n state.voicemails = [];\r\n state.voicemail_count = 0;\r\n state.loading = 0;\r\n state.voicemail_fetch_error = message.toString()\r\n });\r\n }\r\n\r\n loadData = (data) => {\r\n let state = { ...this.state };\r\n\r\n let voicemails_data = this.sortedByDate(data);\r\n if (data.length > maxVmInCard) {\r\n state.all_voicemails = voicemails_data;\r\n voicemails_data = data.slice(0, maxVmInCard);\r\n }\r\n voicemails_data = voicemails_data.map((vm, index) => {\r\n vm.selected = false;\r\n return vm;\r\n });\r\n state.voicemails = voicemails_data;\r\n state.voicemail_count = data.length;\r\n state.loading = false;\r\n\r\n this.setState(state);\r\n }\r\n\r\n sortedByDate = (data) => {\r\n data.sort((a, b) => new Date(b.DateTimeLocal) - new Date(a.DateTimeLocal));\r\n return data;\r\n }\r\n\r\n voicemailsTable = () => {\r\n if (this.state.voicemail_switch.visible && !this.state.voicemail_switch.isActive)\r\n return (
    );\r\n\r\n if (this.state.voicemails.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.getBlockAndDeleteRow()}\r\n {this.getVoiceMails()}\r\n {this.getFetchVoiceMailError()}\r\n \r\n
    PlayPhoneDate
    \r\n )\r\n }\r\n else if (!this.state.enable) {\r\n return (\r\n

    \r\n Voicemail is a not a feature of this service\r\n

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

    \r\n No recent voicemails\r\n

    \r\n )\r\n }\r\n }\r\n\r\n\r\n render() {\r\n let playUrl = config.baseApiUrl + \"vm/VMPlay\";\r\n let saveUrl = config.baseApiUrl + \"vm/VMSave\";\r\n if (this.state.loading) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Voicemail

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    );\r\n }\r\n\r\n let voiceCount = \"\"\r\n if (this.state.enable)\r\n voiceCount = this.state.voicemail_count;\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Voicemail {voiceCount}

    \r\n
    \r\n
    \r\n {this.getVoiceMailOnOff()}\r\n
    \r\n
    \r\n {this.voicemailsTable()}\r\n \r\n {/*
    \r\n \r\n
    */}\r\n
    \r\n
    \r\n {this.getVoiceMailAction()}\r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n Send Voicemail \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n {this.errorMessage()}\r\n
    \r\n
    \r\n \r\n
    \r\n {this.sendModalLoading()}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n errorMessage() {\r\n if (!this.state.sendModal.loading && this.state.sendModal.errorMessage && this.state.sendModal.errorMessage !== \"\")\r\n return
    {this.state.sendModal.errorMessage}
    ;\r\n\r\n if (this.state.sendModal.emailTextValid === false)\r\n return
    Invalid Email
    ;\r\n\r\n return \"\";\r\n }\r\n\r\n sendModalLoading() {\r\n if (this.state.sendModal.loading)\r\n return ;\r\n\r\n return \"\";\r\n }\r\n\r\n getVoiceMails() {\r\n let voicemails_data = this.state.voicemails;\r\n let voicemails = voicemails_data.map((vm, index) => {\r\n return (\r\n \r\n )\r\n });\r\n\r\n if (voicemails.length < 5) {\r\n let vmLength = 5 - voicemails.length;\r\n voicemails.push();\r\n }\r\n\r\n return voicemails;\r\n }\r\n\r\n getBlockAndDeleteRow() {\r\n let selectedVMcount = this.state.voicemails.filter((vm, index) => { return vm.selected }).length;\r\n if (selectedVMcount > 0) {\r\n let vm_delete_error_body = null;\r\n if (this.state.delete.error_message && this.state.delete.error_message.length && this.state.delete.error_message.length > 0)\r\n this.state.delete.error_message.map((message, index) => {\r\n return
    {message}
    \r\n });\r\n\r\n // let vm_block_error_body = \r\n // (
    \r\n // {\r\n // this.state.block.error_message.map((message, index)=>{ \r\n // return
    {message}
    \r\n // })\r\n // }\r\n //
    );\r\n\r\n // let vm_block_error_body = this.state.block.error_message.map((message, index)=>{ \r\n // return
    {message}
    \r\n // });\r\n\r\n // Decide which confirmation message will be displayed on the block calls modal\r\n let confirmationMsg = selectedVMcount > 1 ? VMsConfirmationMsg : VMConfirmationMsg;\r\n\r\n return (\r\n \r\n 0}\r\n saveResult={this.state.block.save_result}\r\n loading={this.state.block.loading}\r\n show={this.state.block.show_dialog}\r\n showSuccess={this.state.block.show_success}\r\n handleYes={this.handleBlockVM.bind(this)}\r\n handleShow={this.handleBlockModalShow.bind(this)}\r\n handleClose={this.handleBlockModalClose.bind(this)}\r\n /> |\r\n 0}\r\n handleYes={this.handleDeleteVM.bind(this)}\r\n handleShow={this.handleDeleteModalShow.bind(this)} />\r\n \r\n );\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n getFetchVoiceMailError() {\r\n if (this.state.voicemail_fetch_error.length > 0)\r\n return (\r\n (\r\n \r\n {this.state.voicemail_fetch_error}\r\n \r\n )\r\n )\r\n\r\n }\r\n\r\n validateEmail() {\r\n return this.state.sendModal.emailText.match(/^([\\w.%+-]+)@([\\w-]+\\.)+([\\w]{2,})$/i);\r\n }\r\n\r\n\r\n getVoiceMailOnOff() {\r\n\r\n let vm_switch = this.state.voicemail_switch;\r\n let showSuccess = \"\";\r\n if (!vm_switch.vm_settings) {\r\n return (
    )\r\n }\r\n\r\n if (vm_switch.show_success) {\r\n showSuccess = \r\n
    Success!
    \r\n \r\n }\r\n\r\n let showError = \"\";\r\n if (vm_switch.show_error) {\r\n showError =
    The switch failed! Please try again.
    \r\n }\r\n\r\n let showLoading = \"\"\r\n if (vm_switch.loading) {\r\n showLoading =
    \r\n \r\n
    ;\r\n }\r\n return (\r\n
    \r\n
    \r\n \r\n {showSuccess}\r\n {showError}\r\n {showLoading}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n getVoiceMailAction = () => {\r\n if (!this.state.enable)\r\n return \"\";\r\n return (
    \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n
    maxVmInCard ? 'view-more' : 'hidden'}>\r\n View All Voicemails & Details\r\n
    \r\n
    );\r\n }\r\n};\r\n\r\nexport default Voicemails;","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../components/spinners';\r\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport * as helper from '../scripts/helper';\r\n\r\nexport default class BSCallLogsTab extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n LocationAccountNumber: '',\r\n BSCallLogs: props.BsLogs,\r\n loading: props.isLoading,\r\n logs: [],\r\n Sort: [],\r\n skip: 0\r\n }\r\n // this.gridScroll = this.gridScroll.bind(this);\r\n };\r\n\r\n\r\n componentDidMount() {\r\n }\r\n\r\n componentWillReceiveProps(props) {\r\n if (props.BsLogs != this.state.BSCallLogs) {\r\n this.setState({ BSCallLogs: props.BsLogs });\r\n }\r\n if (props.isLoading != this.state.loading) {\r\n this.setState({ loading: props.isLoading });\r\n }\r\n }\r\n\r\n\r\n searchStatus = () => {\r\n if (this.state.loading) {\r\n return \r\n } else if (this.state.BSCallLogs.length === 0) {\r\n return (\r\n
    \r\n No results for the filters selected.\r\n
    \r\n )\r\n } else return null;\r\n }\r\n\r\n sortListings = (sort, logs = null) => {\r\n let returnObj = [];\r\n if (this.state.BSCallLogs) {\r\n if (logs == null) logs = this.state.BSCallLogs.slice();\r\n let sortedSet = orderBy(logs, sort);\r\n returnObj = sortedSet;\r\n if (sort.length) {\r\n returnObj = helper.blanksAfterZ(sortedSet, sort);\r\n }\r\n }\r\n return returnObj;\r\n }\r\n\r\n sortChange = async (event) => {\r\n await this.setState({\r\n BSCallLogs: this.sortListings(event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n // gridScroll = (event) => {\r\n // const e = event.nativeEvent;\r\n // if (e.target.scrollTop + 30 >= e.target.scrollHeight - e.target.clientHeight) {\r\n // //TODO: grab more data from the source\r\n // this.props.GetBSCallLogs(this.state.BSCallLogs.length);//skip method\r\n // }\r\n // }\r\n\r\n gridContent = () => {\r\n if (this.state.loading || this.state.BSCallLogs.length === 0 ) {\r\n return (\r\n
    {this.searchStatus()}
    \r\n )\r\n } else {\r\n let colWidth = this.props.isWidget ? '105px' : '165px';\r\n if (this.props.isWidget) {\r\n return (\r\n {this.gridScroll(e)} }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.gridContent()}\r\n
    \r\n );\r\n }\r\n};","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from './spinners';\r\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport * as helper from '../scripts/helper';\r\n\r\nexport default class SansayCallLogsTab extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n LocationAccountNumber: '',\r\n SansayCallLogs: props.SansayLogs,\r\n loading: props.isLoading,\r\n logs: [],\r\n Sort: [],\r\n }\r\n };\r\n\r\n\r\n componentDidMount() {\r\n }\r\n\r\n componentWillReceiveProps(props) {\r\n if (props.SansayLogs != this.state.SansayCallLogs) {\r\n this.setState({ SansayCallLogs: props.SansayLogs });\r\n }\r\n if (props.isLoading != this.state.loading) {\r\n this.setState({ loading: props.isLoading });\r\n }\r\n }\r\n\r\n\r\n searchStatus = () => {\r\n if (this.state.loading) {\r\n return \r\n } else if (this.state.SansayCallLogs.length === 0) {\r\n return (\r\n
    \r\n No results for the filters selected.\r\n
    \r\n )\r\n } else return null;\r\n }\r\n\r\n sortListings = (sort, logs = null) => {\r\n let returnObj = [];\r\n if (this.state.SansayCallLogs) {\r\n if (logs == null) logs = this.state.SansayCallLogs.slice();\r\n let sortedSet = orderBy(logs, sort);\r\n returnObj = sortedSet;\r\n if (sort.length) {\r\n returnObj = helper.blanksAfterZ(sortedSet, sort);\r\n }\r\n }\r\n return returnObj;\r\n }\r\n\r\n sortChange = async (event) => {\r\n await this.setState({\r\n SansayCallLogs: this.sortListings(event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading || this.state.SansayCallLogs.length === 0) {\r\n return (\r\n
    {this.searchStatus()}
    \r\n )\r\n } else {\r\n let colWidth = this.props.isWidget === true ? '30px' : '150px';\r\n let smallColWidth = this.props.isWidget === true ? '30px' : '100px'\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.gridContent()}\r\n
    \r\n );\r\n }\r\n};","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from './spinners';\r\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport * as helper from '../scripts/helper';\r\n\r\nexport default class FaxCallLogsTab extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n LocationAccountNumber: '',\r\n FaxCallLogs: props.FaxCallLogs,\r\n loading: props.isLoading,\r\n logs: [],\r\n Sort: [],\r\n isWidget: props.isWidget ? props.isWidget : false\r\n }\r\n };\r\n\r\n\r\n componentDidMount() {\r\n }\r\n\r\n componentWillReceiveProps(props) {\r\n if (props.FaxCallLogs != this.state.FaxCallLogs) {\r\n this.setState({ FaxCallLogs: props.FaxCallLogs });\r\n }\r\n if (props.isLoading != this.state.loading) {\r\n this.setState({ loading: props.isLoading });\r\n }\r\n }\r\n\r\n searchStatus = () => {\r\n if (this.state.loading) {\r\n return \r\n } else if (!this.state.FaxCallLogs || this.state.FaxCallLogs.length === 0) {\r\n return (\r\n
    \r\n No results for the filters selected.\r\n
    \r\n )\r\n } else return null;\r\n }\r\n\r\n sortListings = (sort, logs = null) => {\r\n let returnObj = [];\r\n if (this.state.FaxCallLogs) {\r\n if (logs == null) logs = this.state.FaxCallLogs.slice();\r\n let sortedSet = orderBy(logs, sort);\r\n returnObj = sortedSet;\r\n if (sort.length) {\r\n returnObj = helper.blanksAfterZ(sortedSet, sort);\r\n }\r\n }\r\n return returnObj;\r\n }\r\n\r\n sortChange = async (event) => {\r\n await this.setState({\r\n FaxCallLogs: this.sortListings(event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n gridContent = () => {\r\n let colWidth = this.props.isWidget === true ? '150px' : '250px';\r\n let smallColWidth = this.props.isWidget === true ? '85px' : '100px'\r\n if (this.state.loading || !this.state.FaxCallLogs || this.state.FaxCallLogs.length === 0) {\r\n return (\r\n
    {this.searchStatus()}
    \r\n )\r\n } else if (this.props.isWidget) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.gridContent()}\r\n
    \r\n );\r\n }\r\n};","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport format from 'string-format';\r\nimport { DataLoadingSpinner } from './../components/spinners';\r\nimport * as apiCalls from '../requests/api_calls';\r\nimport moment from 'moment';\r\n\r\nimport { DatePicker } from '@progress/kendo-dateinputs-react-wrapper';\r\nimport * as settings from '../scripts/settings';\r\nimport BSCallLogsTab from '../components/bs_call_logs_tab';\r\nimport SansayCallLogsTab from '../components/sansay_call_logs_tab';\r\nimport FaxCallLogsTab from '../components/fax_call_logs_tab';\r\n\r\nclass CallLogs extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n LocationAccountNumber: '',\r\n BSCallLogs: [],\r\n SansayCallLogs: [],\r\n FaxCallLogs: [],\r\n tab: 'bs',\r\n loading: false,\r\n call_category: (sessionStorage.usercl_call_category || \"1\"),\r\n call_type: (sessionStorage.usercl_call_type || \"1\"),\r\n status_type: (sessionStorage.usercl_status_type || \"1\"),\r\n date_type: (sessionStorage.usercl_date_type || \"1\"), // Today\r\n from_date: (sessionStorage.usercl_from_date ||moment(Date.now()).startOf(\"day\").format(\"YYYY-MM-DD\")),\r\n to_date: (sessionStorage.usercl_to_date || moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\")),\r\n ServiceNumber: props.ServiceNumber,\r\n PBXUserID: props.PBXUserID,\r\n isIpTrunking: props.isIpTrunking\r\n }\r\n this.handleCallType = this.handleCallType.bind(this);\r\n this.handleStatusType = this.handleStatusType.bind(this);\r\n this.handleDate = this.handleDate.bind(this);\r\n this.handleChangeFromDate = this.handleChangeFromDate.bind(this);\r\n this.handleChangeToDate = this.handleChangeToDate.bind(this);\r\n this.UpdateStoreAndListings = this.UpdateStoreAndListings.bind(this);\r\n };\r\n\r\n UpdateStoreAndListings = () => {\r\n settings.setCLFilters(this.state.call_type, this.state.status_type, this.state.call_category, \r\n this.state.date_type, this.state.from_date, this.state.to_date, this.state.PBXUserID\r\n );\r\n this.fetchCallLogs(this.getApiUrl(this.props), settings.noResultsMsg);\r\n }\r\n\r\n handleChangeFromDate(event) {\r\n let from = moment(event.sender._oldText, \"M/D/YYYY\");\r\n if (from.isValid()) {\r\n this.setState({ ...{ from_date: from.format(\"YYYY-MM-DD\") } }, () => {\r\n let to = moment(this.state.to_date);\r\n if (to.isValid() && to.isSameOrAfter(from)) {\r\n this.setState({ ...{ BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], loading: true } }, this.UpdateStoreAndListings);\r\n }\r\n });\r\n }\r\n }\r\n\r\n handleChangeToDate(event) {\r\n let to = moment(event.sender._oldText, \"M/D/YYYY\");\r\n if (to.isValid()) {\r\n this.setState({ ...{ to_date: to.format(\"YYYY-MM-DD\") } }, () => {\r\n let from = moment(this.state.from_date);\r\n if (from.isValid() && from.isSameOrBefore(to)) {\r\n this.setState({ ...{ BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], loading: true } }, this.UpdateStoreAndListings);\r\n }\r\n });\r\n }\r\n }\r\n\r\n handleDate(event) {\r\n switch (event.target.value) {\r\n case \"1\":\r\n this.setState({\r\n ...{\r\n BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], date_type: event.target.value, from_date: moment(Date.now()).startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\"), loading: true\r\n }\r\n }, this.UpdateStoreAndListings);\r\n return;\r\n case \"2\":\r\n this.setState({\r\n ...{\r\n BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], date_type: event.target.value, from_date: moment(Date.now()).subtract(1, \"days\").startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now()).endOf(\"day\").subtract(1, \"days\").format(\"YYYY-MM-DD\"), loading: true\r\n }\r\n }, this.UpdateStoreAndListings);\r\n return;\r\n case \"3\":\r\n this.setState({\r\n ...{\r\n BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], date_type: event.target.value, from_date: moment(Date.now()).subtract(6, \"days\").startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\"), loading: true\r\n }\r\n }, this.UpdateStoreAndListings);\r\n return;\r\n case \"4\":\r\n this.setState({\r\n ...{\r\n BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], date_type: event.target.value, from_date: moment(Date.now()).subtract(29, \"days\").startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\"), loading: true\r\n }\r\n }, this.UpdateStoreAndListings);\r\n return;\r\n case \"5\":\r\n this.setState({\r\n ...{\r\n BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], date_type: event.target.value, from_date: moment(Date.now()).subtract(89, \"days\").startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\"), loading: true\r\n }\r\n }, this.UpdateStoreAndListings);\r\n return;\r\n case \"6\":\r\n this.setState({ ...{ BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], date_type: event.target.value, from_date: \"From\", to_date: \"To\" } });\r\n settings.setCLFilters(this.state.call_type, this.state.status_type, this.state.call_category, \r\n this.state.date_type, this.state.from_date, this.state.to_date, this.state.PBXUserID\r\n );\r\n return;\r\n }\r\n \r\n }\r\n\r\n handleCallType(event) {\r\n this.setState({ ...{ BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], call_type: event.target.value, loading: true } }, this.UpdateStoreAndListings);\r\n }\r\n\r\n handleStatusType(event) {\r\n this.setState({ ...{ BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], status_type: event.target.value, loading: true } }, this.UpdateStoreAndListings);\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ ...{ BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], loading: true } });\r\n this.fetchCallLogs(this.getApiUrl(this.props), settings.noResultsMsg);\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.setState({ ...{ BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], loading: true } });\r\n this.fetchCallLogs(this.getApiUrl(nextProps), settings.noResultsMsg);\r\n }\r\n\r\n fetchCallLogs = async (apiPath) => {\r\n let selectedTab = this.state.tab;\r\n await this.setState({ loading: true });\r\n apiCalls.fetchData(apiPath).then(async (data) => {\r\n if (data !== null && data !== undefined) {\r\n let isIpTrunking = false;\r\n let { BSCallLogs, SansayCallLogs, FDRCallLogs } = data;\r\n if (BSCallLogs.length === 0 && SansayCallLogs.length > 0) {\r\n selectedTab = 'sansay';\r\n isIpTrunking = true; \r\n }\r\n else if (BSCallLogs.length === 0 && SansayCallLogs.length === 0 && (FDRCallLogs && FDRCallLogs.length > 0))\r\n selectedTab = 'fax';\r\n else\r\n selectedTab = 'bs';\r\n\r\n await this.setState({\r\n BSCallLogs: this.revisedData(BSCallLogs), \r\n SansayCallLogs: this.revisedData(SansayCallLogs,true), \r\n FaxCallLogs: this.revisedData(FDRCallLogs, false, true), \r\n loading: false, \r\n tab: selectedTab,\r\n isIpTrunking: isIpTrunking\r\n });\r\n } else this.setState({ BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], logs: [], loading: false });\r\n }).catch((msg) => console.error(msg));\r\n }\r\n\r\n revisedData = (data, isIPTrunking = false, isFax = false) => {\r\n let revisedData = [];\r\n if (isIPTrunking)\r\n revisedData = data.map((item, idx) => {\r\n item.Release_Time = new Date(item.Release_Time);\r\n item.Start_Time = new Date(item.Start_Time);\r\n return item;\r\n });\r\n else if (isFax)\r\n revisedData = data.map((item, idx) => {\r\n item.StartTime = new Date(item.StartTime);\r\n return item;\r\n });\r\n else\r\n revisedData = data.map((item, idx) => {\r\n item.Date = new Date(item.Date);\r\n return item;\r\n });\r\n\r\n return revisedData;\r\n }\r\n\r\n\r\n extension = () => {\r\n let ext = this.props.Extension;\r\n if (ext) {\r\n return ({ext})\r\n } else return null;\r\n }\r\n\r\n callLogFilter = (htmlSelect) => {\r\n return (\r\n
    \r\n {htmlSelect}\r\n
    \r\n )\r\n }\r\n\r\n getTab() {\r\n let { tab, BSCallLogs, SansayCallLogs, FaxCallLogs, loading } = this.state;\r\n switch (tab) {\r\n case 'bs':\r\n if (BSCallLogs.length > 20) {\r\n BSCallLogs = BSCallLogs.slice(0, 20);\r\n }\r\n return (\r\n \r\n )\r\n case 'sansay':\r\n if (SansayCallLogs.length > 20) {\r\n SansayCallLogs = SansayCallLogs.slice(0, 20);\r\n }\r\n return (\r\n \r\n )\r\n case 'fax':\r\n if (FaxCallLogs.length > 20) {\r\n FaxCallLogs = FaxCallLogs.slice(0, 20);\r\n }\r\n return (\r\n \r\n )\r\n default:\r\n console.log('Sorry there isn\\'t a tab named ' + tab + '.');\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Call Logs

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    );\r\n }\r\n let newProps = this.props;\r\n let callLogsLink = format(\"call_logs_all/{LocationAccountNumber}\", this.props);\r\n\r\n if (!newProps.PBXUserID || newProps.PBXUserID === '') callLogsLink += '/1';\r\n else callLogsLink += '/' + newProps.PBXUserID;\r\n\r\n if (!newProps.ServiceNumber || newProps.ServiceNumber === '') callLogsLink += '/1';\r\n else callLogsLink += '/' + newProps.ServiceNumber;\r\n \r\n return (\r\n
    \r\n
    \r\n
    \r\n

    \r\n Call Logs\r\n {this.props.ServiceNumber} {this.extension()}\r\n

    \r\n
    \r\n
    \r\n
    \r\n {this.callLogFilter()}\r\n {this.callLogFilter()}\r\n {this.callLogFilter()}\r\n
    \r\n {\r\n (this.state.date_type === \"6\") ?\r\n (
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    )\r\n : \"\"\r\n }\r\n
    \r\n
    \r\n
    \r\n {this.getTab()}\r\n
    \r\n
    \r\n View All Call Logs & Details\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n getApiUrl(props) {\r\n\r\n let finalToDate = this.state.to_date + '%2023:59:59';\r\n let newOptions = {\r\n call_type: this.state.call_type,\r\n status_type: this.state.status_type,\r\n call_category: this.state.call_category,\r\n from_date: this.state.from_date,\r\n to_date: finalToDate\r\n };\r\n\r\n let apiUrl = format('usr/GetCallLogs?LocationAccountNumber={LocationAccountNumber}&PBXUserID={PBXUserID}&ServiceNumber={ServiceNumber}', props);\r\n apiUrl += format(\"&CallType={call_type}&CallStatus={status_type}&CallCategory={call_category}&FromDate={from_date}&ToDate={to_date}\", newOptions);\r\n return apiUrl;\r\n }\r\n};\r\n\r\nexport default CallLogs;","import React, { Component } from 'react';\r\nimport {Link} from 'react-router-dom';\r\nimport LongSwitch from './../components/long_switch';\r\nimport { fetchData, post} from './../requests/api_calls';\r\nimport format from 'string-format';\r\nimport * as config from './../requests/config';\r\nimport { DataLoadingSpinner } from './../components/spinners';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\n\r\nclass BasicFeatures extends Component {\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.state = this.initialState();\r\n\r\n\t\tthis.onChangeBasic = this.onChangeBasic.bind(this);\r\n\t}\r\n\r\n\tinitialState =()=>{\r\n\t\treturn {\r\n\t\t\tloading: true,\r\n\t\t\tanynomous_call_rejection: {\r\n\t\t\t\tselected: false,\r\n\t\t\t\tenable: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n\t\t\t\tshow_error: false,\r\n\t\t\t\tdetails:{\r\n\t\t\t\t\tapi: \"CallRejection\",\r\n\t\t\t\t\tassigned_service: \"AnonymousCallRejection\",\r\n\t\t\t\t\tlabel: \"Anonymous Call Rejection\",\r\n\t\t\t\t\tinfo: \"Reject incoming callers with directory or identifying Caller ID information displaying 'Anonymous'.\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tbargein_exempt: {\r\n\t\t\t\tselected: false,\r\n\t\t\t\tenable: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n\t\t\t\tshow_error: false,\r\n\t\t\t\tdetails:{\r\n\t\t\t\t\tapi: \"BargeIn\",\r\n\t\t\t\t\tassigned_service: \"BargeinExempt\",\r\n\t\t\t\t\tlabel: \"Barge-In Exempt\",\r\n\t\t\t\t\tinfo: \"Barge-in Exempt allows you to block barge-in attempts from other users with Directed Call Pickup with Barge-in\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcaller_id: {\r\n\t\t\t\tselected: false,\r\n\t\t\t\tenable: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n\t\t\t\tshow_error: false,\r\n\t\t\t\tdetails:{\r\n\t\t\t\t\tapi: \"CallerId\",\r\n\t\t\t\t\tassigned_service: \"ExternalCallingLineIDDelivery\",\r\n\t\t\t\t\tlabel: \"Caller ID\",\r\n\t\t\t\t\tinfo: \"Identify your caller before picking up the telephone.\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcall_waiting: {\r\n\t\t\t\tselected: false,\r\n\t\t\t\tenable: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n\t\t\t\tshow_error: false,\r\n\t\t\t\tdetails:{\r\n\t\t\t\t\tapi: \"CallWaiting\",\r\n\t\t\t\t\tassigned_service: \"CallWaiting\",\r\n\t\t\t\t\tlabel: \"Call Waiting\",\r\n\t\t\t\t\tinfo: \"Switch to a new incoming call while you are already on another call.\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tconnected_line_id_restrictions: {\r\n\t\t\t\tselected: false,\r\n\t\t\t\tenable: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n\t\t\t\tshow_error: false,\r\n\t\t\t\tdetails:{\r\n\t\t\t\t\tapi: \"LineIdRestriction\",\r\n\t\t\t\t\tassigned_service: \"ConnectedLineIdentificationRestriction\",\r\n\t\t\t\t\tlabel: \"Connected Line ID Restrictions\",\r\n\t\t\t\t\tinfo: \"Restricts your number from showing as the “calling” number when you are making a transfer to someone internally.\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdo_not_disturb: {\r\n\t\t\t\tselected: false,\r\n\t\t\t\tenable: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n\t\t\t\tshow_error: false,\r\n\t\t\t\tdetails:{\r\n\t\t\t\t\tapi: \"DontDisturb\",\r\n\t\t\t\t\tassigned_service: \"DoNotDisturb\",\r\n\t\t\t\t\tlabel: \"Do Not Disturb\",\r\n\t\t\t\t\tinfo: \"Callers will receive a message stating you are busy and be sent to your Voicemail.\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tmusic_on_hold: {\r\n\t\t\t\tselected: false,\r\n\t\t\t\tenable: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n\t\t\t\tshow_error: false,\r\n\t\t\t\tdetails:{\r\n\t\t\t\t\tapi: \"MusicOnHold\",\r\n\t\t\t\t\tassigned_service: \"MusicOnHoldUser\",\r\n\t\t\t\t\tlabel: \"Music On Hold\",\r\n\t\t\t\t\tinfo: \"Select if you want the party you are speaking with to hear hold music when placed on hold.\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\toutbound_caller_id_block: {\r\n\t\t\t\tselected: false,\r\n\t\t\t\tenable: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n\t\t\t\tshow_error: false,\r\n\t\t\t\tdetails:{\r\n\t\t\t\t\tapi: \"OutboundCallerIdBlock\",\r\n\t\t\t\t\tassigned_service: \"CallingLineIDDeliveryBlocking\",\r\n\t\t\t\t\tlabel: \"Outbound Caller ID Block\",\r\n\t\t\t\t\tinfo: \"Block your Caller ID information from being displayed when you call someone.\"\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tcomponentDidMount() {\r\n\t\tthis.fetchAssignedServices();\r\n\t}\r\n\r\n componentDidUpdate(prevProps){\r\n if(\r\n this.props.ServiceNumber !== prevProps.ServiceNumber ||\r\n this.props.PBXUserID !== prevProps.PBXUserID){\r\n this.fetchAssignedServices();\r\n }\r\n\t}\r\n\t\r\n\tfetchAssignedServices=()=>{\r\n\t\tthis.setState(this.initialState());\r\n\t\tlet basicData = { ServiceNumber:this.props.ServiceNumber, PBXUserID:this.props.PBXUserID };\r\n\t\tlet apiUrl = \"\";\r\n\t\tif(this.props.ServiceNumber && this.props.PBXUserID)\r\n\t\t\tapiUrl = format('usr/AssignedServices?ServiceNumber={ServiceNumber}&PBXUserID={PBXUserID}',basicData);\r\n\t\telse if(this.props.ServiceNumber)\r\n\t\t\tapiUrl = format('usr/AssignedServices?ServiceNumber={ServiceNumber}',basicData);\r\n\t\telse if(this.props.PBXUserID)\r\n\t\t\tapiUrl = format('usr/AssignedServices?PBXUserID={PBXUserID}',basicData);\r\n\r\n fetchData(apiUrl).then((data) => {\r\n if (data) {\r\n\t\t\t\tthis.enableBasicFeature(data, this.state.anynomous_call_rejection)\r\n\t\t\t\tthis.enableBasicFeature(data, this.state.caller_id)\r\n\t\t\t\tthis.enableBasicFeature(data, this.state.call_waiting)\r\n\t\t\t\tthis.enableBasicFeature(data, this.state.connected_line_id_restrictions)\r\n\t\t\t\tthis.enableBasicFeature(data, this.state.do_not_disturb)\r\n\t\t\t\tthis.enableBasicFeature(data, this.state.music_on_hold)\r\n\t\t\t\tthis.enableBasicFeature(data, this.state.outbound_caller_id_block)\r\n\t\t\t\tthis.enableBasicFeature(data, this.state.bargein_exempt)\r\n\t\t\t\tthis.setState({...{loading:false }})\r\n }\r\n else{\r\n\t\t\t\tthis.setDisableAll();\r\n }\r\n }).catch((message)=>{\r\n\t\t\tthis.setDisableAll();\r\n });\r\n\t}\r\n\r\n\tsetLoadingToFalse=()=>{\r\n\t\t//check if this mount\r\n\t\tif(!this.refs.mainDiv) return;\r\n\r\n\t\tlet state = this.state;\r\n\t\tstate.loading = false;\r\n\t\tstate.anynomous_call_rejection.loading = false;\r\n\t\tstate.bargein_exempt.loading = false;\r\n\t\tstate.call_waiting.loading = false;\r\n\t\tstate.caller_id.loading = false;\r\n\t\tstate.connected_line_id_restrictions.loading = false;\r\n\t\tstate.do_not_disturb.loading = false;\r\n\t\tstate.music_on_hold.loading = false;\r\n\t\tstate.outbound_caller_id_block.loading = false;\r\n\t\t\r\n\t\tthis.setState(state);\r\n\t}\r\n\r\n\tsetDisableAll=()=>{\r\n\t\t//check if this mount\r\n\t\tif(!this.refs.mainDiv) return;\r\n\r\n\t\tlet state = this.state;\r\n\t\tstate.loading = false;\r\n\t\tstate.anynomous_call_rejection.enable = false;\r\n\t\tstate.bargein_exempt.enable = false;\r\n\t\tstate.call_waiting.enable = false;\r\n\t\tstate.caller_id.enable = false;\r\n\t\tstate.connected_line_id_restrictions.enable = false;\r\n\t\tstate.do_not_disturb.enable = false;\r\n\t\tstate.music_on_hold.enable = false;\r\n\t\tstate.outbound_caller_id_block.enable = false;\r\n\r\n\t\tstate.anynomous_call_rejection.loading = false;\r\n\t\tstate.bargein_exempt.loading = false;\r\n\t\tstate.call_waiting.loading = false;\r\n\t\tstate.caller_id.loading = false;\r\n\t\tstate.connected_line_id_restrictions.loading = false;\r\n\t\tstate.do_not_disturb.loading = false;\r\n\t\tstate.music_on_hold.loading = false;\r\n\t\tstate.outbound_caller_id_block.loading = false;\r\n\t\t\r\n\t\tthis.setState(state);\r\n\t}\r\n\r\n\tenableBasicFeature =(data, feature)=>{\r\n\t\tlet service = this.getService(data, feature.details.assigned_service);\r\n\t\tfeature.loading = false;\r\n\t\tif(service){\r\n\t\t\tfeature.enable = true;\r\n\t\t\tfeature.selected = service.IsActive;\r\n\t\t\tfeature.loading = false;\r\n\t\t}\r\n\t\tthis.setBasicFeature(feature);\r\n\t}\r\n\r\n\tgetService=(data, serviceName)=>{\r\n\t\tlet filterData = data.filter((item)=>{ return item.ServiceName === serviceName && item.IsActiveSpecified})\r\n\t\tif(filterData.length > 0){\r\n\t\t\treturn filterData[0];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n fetchBasicFeatures = (state, errorMsg) => {\r\n\t\t// \tMethod:\"CallRejection\", \r\n\t\t// \tServiceNumber:\"\", \r\n\t\t// \tPBXUserID:\"\" \r\n\t\tlet basicData = {Method:state.details.api, ServiceNumber:this.props.ServiceNumber, PBXUserID:this.props.PBXUserID };\r\n\t\tlet apiUrl = \"\";\r\n\t\tif(this.props.ServiceNumber && this.props.PBXUserID)\r\n\t\t\tapiUrl = format('usr/{Method}?ServiceNumber={ServiceNumber}&PBXUserID={PBXUserID}',basicData);\r\n\t\telse if(this.props.ServiceNumber)\r\n\t\t\tapiUrl = format('usr/{Method}?ServiceNumber={ServiceNumber}',basicData);\r\n\t\telse if(this.props.PBXUserID)\r\n\t\t\tapiUrl = format('usr/{Method}?PBXUserID={PBXUserID}',basicData);\r\n\t\t\r\n fetchData(apiUrl).then((data) => {\r\n\t\t\tstate.loading = false;\r\n if (data) {\r\n\t\t\t\tstate.selected = data.SettingValue;\r\n }\r\n else{\r\n\t\t\t\tstate.show_error = true;\r\n\t\t\t}\r\n\t\t\tthis.setBasicFeature(state);\r\n }).catch((message)=>{\r\n\t\t\tstate.loading = false;\r\n\t\t\tstate.show_error = true;\r\n\t\t\tthis.setBasicFeature(state);\r\n });\r\n }\r\n\r\n onChangeBasic =(state, event)=>{\r\n\t\tlet checked = event.target.checked;\r\n\t\tlet bodyJson = {\r\n\t\t\tServiceNumber: this.props.ServiceNumber,\r\n\t\t\tPBXUserID: this.props.PBXUserID,\r\n\t\t\tSettingValue: checked\r\n\t\t};\r\n\t\tlet body = JSON.stringify(bodyJson);\r\n\t\tlet headers = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + config.storedAccessToken(),\r\n 'X-Policy': config.defaultXpolicy\r\n\t\t};\r\n\t\tstate.selected = checked;\r\n\t\tstate.loading = true;\r\n\t\tstate.show_success = false;\r\n\t\tstate.show_error = false;\r\n\t\tthis.setToFalseAllSuccessAndError();\r\n\t\tthis.setBasicFeature(state);\r\n\r\n\t\tpost(\"usr/\" + state.details.api, \"POST\", body, headers)\r\n\t\t.then(response =>{\r\n\t\t\tif(response.ok)\r\n\t\t\t{\r\n\t\t\t\tstate.selected = checked;\r\n\t\t\t\tstate.loading = false;\r\n\t\t\t\tstate.show_success = true;\r\n\t\t\t\tthis.setBasicFeature(state);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tstate.selected = checked;\r\n\t\t\t\tstate.loading = false;\r\n\t\t\t\tstate.show_error = true;\r\n\t\t\t\tthis.setBasicFeature(state);\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch((message)=>{\r\n\t\t\tstate.selected = checked;\r\n\t\t\t\tstate.loading = false;\r\n\t\t\t\tstate.show_error = true;\r\n\t\t\t\tthis.setBasicFeature(state);\r\n\t\t});\r\n\t}\r\n\t\r\n setBasicFeature = (newState) => {\r\n\t\t//check if this mount\r\n\t\tif(!this.refs.mainDiv) return;\r\n\t\t// BServiceID:2\r\n\t\t// IsActive:true\r\n\t\t// IsActiveSpecified:true\r\n\t\t// ServiceName:\"AnonymousCallRejection\"\r\n switch(newState.details.api){\r\n\t\t\tcase \"CallRejection\":\r\n\t\t\t\tthis.setState({...{anynomous_call_rejection: newState}});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"CallerId\": \r\n\t\t\t\tthis.setState({...{caller_id: newState}});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"CallWaiting\":\r\n\t\t\t\tthis.setState({...{call_waiting: newState}});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"LineIdRestriction\":\r\n\t\t\t\tthis.setState({...{connected_line_id_restrictions: newState}});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"DontDisturb\":\r\n\t\t\t\tthis.setState({...{do_not_disturb: newState}});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"MusicOnHold\":\r\n\t\t\t\tthis.setState({...{music_on_hold: newState}});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"OutboundCallerIdBlock\":\r\n\t\t\t\tthis.setState({...{outbound_caller_id_block: newState}});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"BargeIn\":\r\n\t\t\t\tthis.setState({...{bargein_exempt: newState}});\r\n\t\t\t\tbreak;\r\n\t\t}\r\n }\r\n\r\n\tsetToFalseAllSuccessAndError = () =>{\r\n\t\tlet state = this.state;\r\n\t\tstate.anynomous_call_rejection.show_success = false;\r\n\t\tstate.anynomous_call_rejection.show_error = false;\r\n\t\tstate.bargein_exempt.show_success = false;\r\n\t\tstate.bargein_exempt.show_error = false;\r\n\t\tstate.caller_id.show_success = false;\r\n\t\tstate.caller_id.show_error = false;\r\n\t\tstate.call_waiting.show_success = false;\r\n\t\tstate.call_waiting.show_error = false;\r\n\t\tstate.connected_line_id_restrictions.show_success = false;\r\n\t\tstate.connected_line_id_restrictions.show_error = false;\r\n\t\tstate.do_not_disturb.show_success = false;\r\n\t\tstate.do_not_disturb.show_error = false;\r\n\t\tstate.music_on_hold.show_success = false;\r\n\t\tstate.music_on_hold.show_error = false;\r\n\t\tstate.outbound_caller_id_block.show_success = false;\r\n\t\tstate.outbound_caller_id_block.show_error = false;\r\n\t\tthis.setState(state);\r\n\t}\r\n\r\n\tviewMoreLink = () => {\r\n\t\tlet account = config.storedAccountNumber();\r\n\t\tif (account) {\r\n\t\t\tlet sn = \"\";\r\n\t\t\tif (this.props.ServiceNumber !== \"\") {\r\n\t\t\t\tsn = this.props.ServiceNumber;\r\n\t\t\t} else {\r\n\t\t\t\tlet pbx = this.props.PBXUserID;\r\n\t\t\t\tlet idx = pbx.indexOf(\"@\");\r\n\t\t\t\tsn = pbx.substr(0, idx);\r\n\t\t\t}\r\n\t\t\tlet iframeUrl = '/iframe_page/MSP_SUBSCRIBER/' + account + '/' + sn;\r\n\t\t\treturn View All Features\r\n\t\t} else return null;\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn(\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t

    Basic Features

    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{this.renderBasicFeatureControl()}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{this.viewMoreLink()}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\trenderBasicFeatureControl=()=>{\r\n\r\n\t\tlet enableFeatures = [];\r\n\t\tlet state = this.state;\r\n\t\tif(state.anynomous_call_rejection.enable)\r\n\t\t\tenableFeatures.push(this.getBasicFeatureItem(enableFeatures.length, state.anynomous_call_rejection));\r\n\t\tif(state.bargein_exempt.enable)\r\n\t\t\tenableFeatures.push(this.getBasicFeatureItem(enableFeatures.length, state.bargein_exempt));\r\n\t\tif(state.caller_id.enable)\r\n\t\t\tenableFeatures.push(this.getBasicFeatureItem(enableFeatures.length, state.caller_id));\r\n\t\tif(state.call_waiting.enable)\r\n\t\t\tenableFeatures.push(this.getBasicFeatureItem(enableFeatures.length, state.call_waiting));\r\n\t\tif(state.connected_line_id_restrictions.enable)\r\n\t\t\tenableFeatures.push(this.getBasicFeatureItem(enableFeatures.length, state.connected_line_id_restrictions));\r\n\t\tif(state.do_not_disturb.enable)\r\n\t\t\tenableFeatures.push(this.getBasicFeatureItem(enableFeatures.length, state.do_not_disturb));\r\n\t\tif(state.music_on_hold.enable)\r\n\t\t\tenableFeatures.push(this.getBasicFeatureItem(enableFeatures.length, state.music_on_hold));\r\n\t\tif(state.outbound_caller_id_block.enable)\r\n\t\t\tenableFeatures.push(this.getBasicFeatureItem(enableFeatures.length, state.outbound_caller_id_block));\r\n\t\t\r\n\t\tif(enableFeatures.length < 8){\r\n\t\t\tlet emptyMessage = \"\";\r\n\t\t\tif(state.loading){\r\n\t\t\t\temptyMessage = ();\r\n\t\t\t}\r\n\t\t\telse if(!state.loading && enableFeatures.length === 0){\r\n\t\t\t\temptyMessage = (

    No basic features options

    );\r\n\t\t\t}\r\n\r\n\t\t\tlet cnt = 8 - enableFeatures.length;\r\n\t\t\tenableFeatures.push(
    \r\n\t\t\t\t{emptyMessage}\r\n\t\t\t
    );\r\n\t\t}\r\n\t\treturn enableFeatures;\r\n\t}\r\n\r\n\tgetBasicFeatureItem(key, state){\r\n\t\tlet showSuccess = \"\";\r\n\t\tif(state.show_success){\r\n\t\t\tshowSuccess = \r\n\t\t\t\t\t
    Success!
    \r\n\t\t\t\t\r\n\t\t}\r\n\r\n\t\tlet showError = \"\";\r\n\t\tif(state.show_error){\r\n\t\t\tshowError =
    The switch failed! Please try again.
    \r\n\t\t}\r\n\r\n\t\tlet showLoading = \"\"\r\n\t\tif(state.loading){\r\n\t\t\tshowLoading =
    \r\n\t\t\t\t\t\r\n\t\t\t
    ;\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t{this.onChangeBasic(state,e)}}\r\n\t\t\t\t\tlabel={state.details.label} info={state.details.info} />\r\n\t\t\t\t\t{showSuccess}\r\n\t\t\t\t\t{showError}\r\n\t\t\t\t\t{showLoading}\r\n\t\t\t
    );\r\n\t}\r\n\r\n}\r\n\r\nexport default BasicFeatures;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { connect } from 'react-redux';\r\nimport { fetchData, post } from '../../../requests/api_calls';\r\nimport * as config from '../../../requests/config';\r\nimport * as helper from '../../../scripts/helper';\r\n\r\nconst StructureNum = \"StructureNum\",\r\n City = \"City\",\r\n ElevationNum = \"ElevationNum\",\r\n State = \"State\",\r\n UnitType = \"UnitType\",\r\n UnitNum = \"UnitNum\",\r\n ZipCode = \"ZipCode\",\r\n StreetName = \"StreetName\",\r\n StreetNumber = \"StreetNumber\",\r\n HouseNumber = \"HouseNumber\",\r\n PostDirectional = \"PostDirectional\",\r\n PreDirectional = \"PreDirectional\",\r\n StreetType = \"StreetType\",\r\n StreetSuffix = \"StreetSuffix\",\r\n Street1 = \"Street1\",\r\n Street2 = \"Street2\",\r\n PhoneNumber = \"PhoneNumber\",\r\n DirectionPrefix = \"DirectionPrefix\",\r\n DirectionSuffix = \"DirectionSuffix\",\r\n ElevationType = \"ElevationType\",\r\n StructureType = \"StructureType\",\r\n County = \"County\"\r\n\r\nconst emptye911Address = {\r\n savingLoading: false,\r\n savingShowSuccess: false,\r\n savingErrorMessage: \"\",\r\n savingShowError: false,\r\n showAddress: false,\r\n StructureNum: \"\",\r\n City: \"\",\r\n ElevationNum: \"\",\r\n State: \"\",\r\n UnitType: \"\",\r\n UnitNum: \"\",\r\n ZipCode: \"\",\r\n StreetName: \"\",\r\n HouseNumber: \"\",\r\n StreetNumber: \"\",\r\n PostDirectional: \"\",\r\n PreDirectional: \"\",\r\n StreetType: \"\",\r\n StreetSuffix: \"\",\r\n Street1: \"\",\r\n Street2: \"\",\r\n PhoneNumber: \"\",\r\n IsActive: false,\r\n Address1: '',\r\n Address2: '',\r\n DirectionPrefix:\"\",\r\n DirectionSuffix:\"\",\r\n ElevationType :\"\",\r\n StructureType :\"\",\r\n County :\"\"\r\n};\r\n\r\nconst states = {\r\n 'Alabama': 'AL',\r\n 'Alaska': 'AK',\r\n 'American Samoa': 'AS',\r\n 'Arizona': 'AZ',\r\n 'Arkansas': 'AR',\r\n 'California': 'CA',\r\n 'Colorado': 'CO',\r\n 'Connecticut': 'CT',\r\n 'Delaware': 'DE',\r\n 'District Of Columbia': 'DC',\r\n 'Federated States Of Micronesia': 'FM',\r\n 'Florida': 'FL',\r\n 'Georgia': 'GA',\r\n 'Guam': 'GU',\r\n 'Hawaii': 'HI',\r\n 'Idaho': 'ID',\r\n 'Illinois': 'IL',\r\n 'Indiana': 'IN',\r\n 'Iowa': 'IA',\r\n 'Kansas': 'KS',\r\n 'Kentucky': 'KY',\r\n 'Louisiana': 'LA',\r\n 'Maine': 'ME',\r\n 'Marshall Islands': 'MH',\r\n 'Maryland': 'MD',\r\n 'Massachusetts': 'MA',\r\n 'Michigan': 'MI',\r\n 'Minnesota': 'MN',\r\n 'Mississippi': 'MS',\r\n 'Missouri': 'MO',\r\n 'Montana': 'MT',\r\n 'Nebraska': 'NE',\r\n 'Nevada': 'NV',\r\n 'New Hampshire': 'NH',\r\n 'New Jersey': 'NJ',\r\n 'New Mexico': 'NM',\r\n 'New York': 'NY',\r\n 'North Carolina': 'NC',\r\n 'North Dakota': 'ND',\r\n 'Northern Mariana Islands': 'MP',\r\n 'Ohio': 'OH',\r\n 'Oklahoma': 'OK',\r\n 'Oregon': 'OR',\r\n 'Palau': 'PW',\r\n 'Pennsylvania': 'PA',\r\n 'Puerto Rico': 'PR',\r\n 'Rhode Island': 'RI',\r\n 'South Carolina': 'SC',\r\n 'South Dakota': 'SD',\r\n 'Tennessee': 'TN',\r\n 'Texas': 'TX',\r\n 'Utah': 'UT',\r\n 'Vermont': 'VT',\r\n 'Virgin Islands': 'VI',\r\n 'Virginia': 'VA',\r\n 'Washington': 'WA',\r\n 'West Virginia': 'WV',\r\n 'Wisconsin': 'WI',\r\n 'Wyoming': 'WY'\r\n};\r\n\r\nclass e911Modal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = {\r\n showUser911: props.showUser911,\r\n E911ButtonText: props.showUser911 ? 'Temporarily Update Current 911 Service Address' : 'See 911 Address List',\r\n elist911Loading: false,\r\n list911: [\r\n emptye911Address\r\n ],\r\n existingList911: [\r\n emptye911Address\r\n ],\r\n e911AddressLoading: false,\r\n e911Address: emptye911Address,\r\n existinge911Address: emptye911Address,\r\n AccountNumber: this.props.AccountNumber,\r\n ServiceNumber: this.props.ServiceNumber,\r\n showModal: props.showModal || false\r\n };\r\n this.getE911List = this.getE911List.bind(this);\r\n this.getList911Addresses = this.getList911Addresses.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n handleClose() {\r\n let state = { ...this.state };\r\n state.showModal = false;\r\n this.setState(state);\r\n }\r\n\r\n handleShow() {\r\n let state = { ...this.state };\r\n state.e911AddressLoading = true;\r\n state.elist911Loading = true;\r\n state.showModal = true;\r\n state.list911 = [];\r\n state.e911Address = null;\r\n this.setState(state);\r\n\r\n let list911 = `usr/Get911List?AccountNumber=${state.AccountNumber}`;\r\n this.fetch911List(list911);\r\n if (this.state.showUser911) {\r\n let list911Address = `usr/Get911Address?ServiceNumber=${state.ServiceNumber}`;\r\n this.fetch911Address(list911Address);\r\n }\r\n }\r\n\r\n fetch911List = (apiPath, errorMsg) => {\r\n fetchData(apiPath).then((data) => {\r\n\r\n let state = { ...this.state };\r\n if (data) {\r\n state.existingList911 = data;\r\n state.list911 = state.existingList911 && state.existingList911.length > 0 ? state.existingList911.slice() : [];\r\n }\r\n state.elist911Loading = false;\r\n this.setState(state);\r\n }).catch((message) => {\r\n let state = { ...this.state };\r\n state.elist911Loading = false;\r\n fetch_error: message.toString()\r\n this.setState(state);\r\n });\r\n }\r\n\r\n fetch911Address = (apiPath, errorMsg) => {\r\n fetchData(apiPath).then((data) => {\r\n //console.log(JSON.stringify(data));\r\n let state = { ...this.state };\r\n state.e911Address = data;\r\n state.existinge911Address = data;\r\n state.e911AddressLoading = false;\r\n this.setState(state);\r\n }).catch((message) => {\r\n let state = { ...this.state };\r\n state.e911AddressLoading = false;\r\n fetch_error: message.toString()\r\n this.setState(state);\r\n });\r\n }\r\n\r\n getE911List = () => {\r\n if (this.state.elist911Loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n if (this.state.existingList911.length === 0) {\r\n return (\r\n
    \r\n

    No address

    \r\n
    \r\n )\r\n }\r\n let addresses = [];\r\n\r\n this.state.existingList911.forEach((e99Address, i) => {\r\n e99Address.Address1 = '';\r\n e99Address.Address2 = '';\r\n let addressLine1 = this.getAddressLine1(e99Address);\r\n let addressLine2 = this.getAddressLine2(e99Address);\r\n\r\n e99Address.Address1 = addressLine1;\r\n e99Address.Address2 = addressLine2;\r\n\r\n addresses.push((\r\n \r\n {e99Address.PhoneNumber}\r\n {e99Address.Address1} {e99Address.Address2}\r\n {e99Address.IsActive ? \"Active\" : \"Not Active\"}\r\n \r\n {/* \r\n \r\n \r\n */}\r\n this.handleToggleEditList911(e99Address)}>\r\n \r\n \r\n \r\n \r\n \r\n ));\r\n\r\n let editableAddress = this.state.list911[i];\r\n if (editableAddress=== undefined) {\r\n return (\r\n
    \r\n

    No address

    \r\n
    \r\n );\r\n }\r\n if (editableAddress.showAddress) {\r\n addresses.push((this.addressForm(addresses.length, editableAddress, i, \"911List\")));\r\n }\r\n else {\r\n addresses.push();\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 \r\n {addresses}\r\n \r\n
    Phone NumberAddressStatus
    );\r\n }\r\n\r\n getList911Addresses = () => {\r\n if (this.state.e911AddressLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n if (!this.state.existinge911Address) {\r\n return (\r\n
    \r\n

    No address

    \r\n
    \r\n );\r\n }\r\n\r\n let e99Address = this.state.existinge911Address;\r\n let addresses = [];\r\n e99Address.Address1 = '';\r\n e99Address.Address2 = '';\r\n let addressLine1 = this.getAddressLine1(e99Address);\r\n let addressLine2 = this.getAddressLine2(e99Address);\r\n\r\n e99Address.Address1 = addressLine1;\r\n e99Address.Address2 = addressLine2;\r\n\r\n addresses.push((\r\n \r\n {e99Address.PhoneNumber}\r\n {e99Address.Address1} {e99Address.Address2}\r\n {e99Address.IsActive ? \"Active\" : \"Not Active\"}\r\n \r\n {/* \r\n \r\n \r\n */}\r\n this.handleToggleEdit911Addresses(e99Address)}>\r\n \r\n \r\n \r\n \r\n \r\n ));\r\n let editableAddress = this.state.e911Address;\r\n if (editableAddress.showAddress) {\r\n //addresses.push((this.addressForm(addresses.length, editableAddress, 1, \"911Address\")));\r\n // ** changed 1 -> 0\r\n addresses.push((this.addressForm(addresses.length, editableAddress, 0, \"911Address\")));\r\n }\r\n else {\r\n addresses.push();\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 {addresses}\r\n \r\n
    Phone NumberAddressStatus
    );\r\n }\r\n\r\n getAddressLine1 = (e99Address) => {\r\n return e99Address.Street1 + ' ' + e99Address.City + ', ' + e99Address.State + ' ' + e99Address.ZipCode;\r\n }\r\n\r\n getAddressLine2 = (e99Address) => {\r\n let addressLine2 = '';\r\n\r\n if ((e99Address.UnitType && e99Address.UnitType !== '') || (e99Address.UnitNum && e99Address.UnitNum !== '')) {\r\n addressLine2 = (e99Address.UnitType || 'UnitType') + (e99Address.UnitNum ? ' ' + e99Address.UnitNum : '');\r\n }\r\n\r\n if ((e99Address.Building || e99Address.StructureNum) && (e99Address.Building !== '' || e99Address.StructureNum !== '')) {\r\n if (addressLine2 !== '')\r\n addressLine2 += (e99Address.Building ? ' ' + e99Address.Building : ' BLDG') + (e99Address.StructureNum ? ' ' + e99Address.StructureNum : '');\r\n else\r\n addressLine2 += (e99Address.Building ? e99Address.Building : 'BLDG') + (e99Address.StructureNum ? ' ' + e99Address.StructureNum : '');\r\n }\r\n if (e99Address.ElevationNum && e99Address.ElevationNum !== '') {\r\n if (addressLine2 !== '')\r\n addressLine2 += ' FLR ' + e99Address.ElevationNum;\r\n else\r\n addressLine2 += 'FLR ' + e99Address.ElevationNum;\r\n }\r\n return addressLine2;\r\n }\r\n\r\n handleOnChange = (index, fieldName, listType, event) => {\r\n let state = { ...this.state };\r\n let newList911 = state.list911.slice();\r\n let existing911List = state.existingList911.slice();\r\n let address = {};\r\n\r\n if (listType === \"911List\") {\r\n address = {\r\n savingLoading: newList911[index].savingLoading,\r\n savingShowSuccess: newList911[index].savingShowSuccess,\r\n savingErrorMessage: newList911[index].savingErrorMessage,\r\n savingShowError: newList911[index].savingShowError,\r\n showAddress: newList911[index].showAddress,\r\n StructureNum: newList911[index].StructureNum,\r\n City: newList911[index].City,\r\n ElevationNum: newList911[index].ElevationNum,\r\n State: newList911[index].State,\r\n UnitType: newList911[index].UnitType,\r\n UnitNum: newList911[index].UnitNum,\r\n ZipCode: newList911[index].ZipCode,\r\n StreetName: newList911[index].StreetName,\r\n HouseNumber: newList911[index].HouseNumber, //|| newList911[index].StreetNumber,\r\n StreetNumber: newList911[index].StreetNumber, //|| newList911[index].HouseNumber,\r\n PostDirectional: newList911[index].PostDirectional,\r\n PreDirectional: newList911[index].PreDirectional,\r\n StreetType: newList911[index].StreetType,\r\n StreetSuffix: newList911[index].StreetSuffix,\r\n Street1: newList911[index].Street1,\r\n Street2: newList911[index].Street2,\r\n PhoneNumber: newList911[index].PhoneNumber,\r\n IsActive: newList911[index].IsActive,\r\n Address1: newList911[index].Address1,\r\n Address2: newList911[index].Address2,\r\n DirectionPrefix: newList911[index].DirectionPrefix,\r\n DirectionSuffix: newList911[index].DirectionSuffix,\r\n ElevationType : newList911[index].ElevationType,\r\n StructureType : newList911[index].StructureType,\r\n County : newList911[index].County\r\n }\r\n }\r\n else if (listType === \"911Address\") {\r\n //address = state.e911Address;\r\n address = {\r\n savingLoading: state.e911Address.savingLoading,\r\n savingShowSuccess: state.e911Address.savingShowSuccess,\r\n savingErrorMessage: state.e911Address.savingErrorMessage,\r\n savingShowError: state.e911Address.savingShowError,\r\n showAddress: state.e911Address.showAddress,\r\n StructureNum: state.e911Address.StructureNum,\r\n City: state.e911Address.City,\r\n ElevationNum: state.e911Address.ElevationNum,\r\n State: state.e911Address.State,\r\n UnitType: state.e911Address.UnitType,\r\n UnitNum: state.e911Address.UnitNum,\r\n ZipCode: state.e911Address.ZipCode,\r\n StreetName: state.e911Address.StreetName,\r\n HouseNumber: state.e911Address.HouseNumber || state.e911Address.StreetNumber,\r\n StreetNumber: state.e911Address.StreetNumber || state.e911Address.HouseNumber,\r\n PostDirectional: state.e911Address.PostDirectional,\r\n PreDirectional: state.e911Address.PreDirectional,\r\n StreetType: state.e911Address.StreetType,\r\n StreetSuffix: state.e911Address.StreetSuffix,\r\n Street1: state.e911Address.Street1,\r\n Street2: state.e911Address.Street2,\r\n PhoneNumber: state.e911Address.PhoneNumber,\r\n IsActive: state.e911Address.IsActive,\r\n Address1: state.e911Address.Address1,\r\n Address2: state.e911Address.Address2,\r\n DirectionPrefix:state.e911Address.DirectionPrefix,\r\n DirectionSuffix:state.e911Address.DirectionSuffix,\r\n ElevationType : state.e911Address.ElevationType ,\r\n StructureType : state.e911Address.StructureType,\r\n County : state.e911Address.County \r\n }\r\n }\r\n\r\n address[fieldName] = event.target.value;\r\n\r\n address.Street1 = helper.CreateFullStreet1(address);\r\n address.Street2 = helper.CreateFullStreet2(address);\r\n if (listType === \"911List\") {\r\n newList911[index] = address;\r\n }\r\n else if (listType === \"911Address\") {\r\n state.e911Address = address;\r\n }\r\n state.list911 = newList911.slice();\r\n state.existingList911 = existing911List;\r\n this.setState(state);\r\n }\r\n\r\n save911InList = (e911Address, indexInList) => {\r\n if (e911Address.StructureNum && e911Address.StructureNum !== '')\r\n e911Address.Building = helper.ValueOfBuildingTag;\r\n // e911Address.StructureType = helper.ValueOfBuildingTag;\r\n // e911Address.ElevationType = helper.ValueOfFloorTag;\r\n let state = { ...this.state };\r\n state.list911[indexInList].savingLoading = true;\r\n state.list911[indexInList].savingShowSuccess = false;\r\n this.setState(state);\r\n state.list911[indexInList].Address1 = this.getAddressLine1(state.list911[indexInList]);\r\n let body = JSON.stringify(e911Address);\r\n //console.log('POST BODY', JSON.parse(body));\r\n\r\n let headers = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n\r\n post(\"usr/ChangeTempE911\", \"POST\", body, headers)\r\n .then(response => {\r\n let state = { ...this.state };\r\n if (response.ok) {\r\n state.list911[indexInList].Address1 = this.getAddressLine1(state.list911[indexInList]);\r\n state.list911[indexInList].Address2 = this.getAddressLine2(state.list911[indexInList]);\r\n state.list911[indexInList].IsActive = false;\r\n state.list911[indexInList].savingShowSuccess = true;\r\n state.list911[indexInList].savingLoading = false;\r\n state.list911[indexInList].savingShowError = false;\r\n state.existingList911 = state.list911;\r\n\r\n if (state.e911Address && state.e911Address.PhoneNumber === state.list911[indexInList].PhoneNumber) {\r\n let showHideStatus = state.e911Address.showAddress || false;\r\n state.e911Address = {\r\n savingLoading: false,\r\n savingShowSuccess: false,\r\n savingErrorMessage: \"\",\r\n savingShowError: false,\r\n showAddress: showHideStatus,\r\n StructureNum: state.list911[indexInList].StructureNum,\r\n City: state.list911[indexInList].City,\r\n ElevationNum: state.list911[indexInList].ElevationNum,\r\n State: state.list911[indexInList].State,\r\n UnitType: state.list911[indexInList].UnitType,\r\n UnitNum: state.list911[indexInList].UnitNum,\r\n ZipCode: state.list911[indexInList].ZipCode,\r\n StreetName: state.list911[indexInList].StreetName,\r\n HouseNumber: state.list911[indexInList].HouseNumber,\r\n StreetNumber: state.list911[indexInList].StreetNumber,\r\n PostDirectional: state.list911[indexInList].PostDirectional,\r\n PreDirectional: state.list911[indexInList].PreDirectional,\r\n StreetType: state.list911[indexInList].StreetType,\r\n StreetSuffix: state.list911[indexInList].StreetSuffix,\r\n Street1: state.list911[indexInList].Street1,\r\n Street2: state.list911[indexInList].Street2,\r\n PhoneNumber: state.list911[indexInList].PhoneNumber,\r\n IsActive: state.list911[indexInList].IsActive,\r\n Address1: state.list911[indexInList].Address1,\r\n Address2: state.list911[indexInList].Address2,\r\n DirectionPrefix:state.list911[indexInList].DirectionPrefix,\r\n DirectionSuffix:state.list911[indexInList].DirectionSuffix,\r\n ElevationType :state.list911[indexInList].ElevationType,\r\n StructureType :state.list911[indexInList].StructureType,\r\n County :state.list911[indexInList].County\r\n };\r\n state.existinge911Address = state.e911Address;\r\n }\r\n }\r\n else {\r\n state.list911[indexInList].savingLoading = false;\r\n state.list911[indexInList].savingShowError = true;\r\n state.list911[indexInList].savingErrorMessage = \"Failed Save\";\r\n }\r\n this.setState(state);\r\n })\r\n .catch((message) => {\r\n console.log(message);\r\n let state = { ...this.state };\r\n state.list911[indexInList].savingLoading = false;\r\n state.list911[indexInList].savingShowError = true;\r\n state.list911[indexInList].savingErrorMessage = \"Failed Save\";\r\n this.setState(state);\r\n });\r\n }\r\n\r\n save911AddressesInList = (e911Address, indexInList) => {\r\n let state = { ...this.state };\r\n if (e911Address.StructureNum && e911Address.StructureNum !== '')\r\n e911Address.Building = helper.ValueOfBuildingTag;\r\n state.e911Address = e911Address\r\n state.e911Address.savingLoading = true;\r\n state.e911Address.savingShowSuccess = false;\r\n this.setState(state);\r\n\r\n let body = JSON.stringify(e911Address);\r\n // console.log('POST BODY', JSON.parse(body));\r\n // console.log('check state vars', state);\r\n // console.log(\"state.list911[indexInList]\", state.list911[indexInList]);\r\n let headers = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n\r\n post(\"usr/ChangeTempE911\", \"POST\", body, headers)\r\n .then(response => {\r\n let state = { ...this.state };\r\n state.e911Address.savingLoading = false;\r\n if (response.ok) {\r\n\r\n state.e911Address.Address1 = this.getAddressLine1(state.list911[indexInList]);\r\n state.e911Address.Address2 = this.getAddressLine2(state.list911[indexInList]);\r\n state.e911Address.IsActive = false;\r\n state.e911Address.savingShowSuccess = true;\r\n state.e911Address.savingShowError = false;\r\n state.e911Address.savingErrorMessage = \"\";\r\n state.existinge911Address = state.e911Address;\r\n if (state.list911 && state.list911.length > 0) {\r\n let newList = state.list911.slice();\r\n let newExistingList = newList.slice();\r\n let e911InList = newList.filter(resp => resp.PhoneNumber === state.e911Address.PhoneNumber);\r\n if (e911InList) {\r\n e911InList = e911InList[0];\r\n let listIdx = _.indexOf(newList, e911InList);\r\n let itemInList = newList[listIdx];\r\n let showHideStatus = itemInList.showAddress || false;\r\n newList[listIdx] = {\r\n savingLoading: false,\r\n savingShowSuccess: false,\r\n savingErrorMessage: \"\",\r\n savingShowError: false,\r\n showAddress: showHideStatus,\r\n StructureNum: state.e911Address.StructureNum,\r\n City: state.e911Address.City,\r\n ElevationNum: state.e911Address.ElevationNum,\r\n State: state.e911Address.State,\r\n UnitType: state.e911Address.UnitType,\r\n UnitNum: state.e911Address.UnitNum,\r\n ZipCode: state.e911Address.ZipCode,\r\n StreetName: state.e911Address.StreetName,\r\n HouseNumber: state.e911Address.HouseNumber,\r\n StreetNumber: state.e911Address.StreetNumber,\r\n PostDirectional: state.e911Address.PostDirectional,\r\n PreDirectional: state.e911Address.PreDirectional,\r\n StreetType: state.e911Address.StreetType,\r\n StreetSuffix: state.e911Address.StreetSuffix,\r\n Street1: state.e911Address.Street1,\r\n Street2: state.e911Address.Street2,\r\n PhoneNumber: state.e911Address.PhoneNumber,\r\n IsActive: state.e911Address.IsActive,\r\n Address1: state.e911Address.Address1,\r\n Address2: state.e911Address.Address2,\r\n DirectionPrefix:state.e911Address.DirectionPrefix,\r\n DirectionSuffix:state.e911Address.DirectionSuffix,\r\n ElevationType :state.e911Address.ElevationType,\r\n StructureType :state.e911Address.StructureType,\r\n County :state.e911Address.County\r\n };\r\n state.list911 = newList;\r\n\r\n newExistingList[listIdx] = {\r\n savingLoading: false,\r\n savingShowSuccess: false,\r\n savingErrorMessage: \"\",\r\n savingShowError: false,\r\n showAddress: false,\r\n StructureNum: state.e911Address.StructureNum,\r\n City: state.e911Address.City,\r\n ElevationNum: state.e911Address.ElevationNum,\r\n State: state.e911Address.State,\r\n UnitType: state.e911Address.UnitType,\r\n UnitNum: state.e911Address.UnitNum,\r\n ZipCode: state.e911Address.ZipCode,\r\n StreetName: state.e911Address.StreetName,\r\n HouseNumber: state.e911Address.HouseNumber,\r\n StreetNumber: state.e911Address.StreetNumber,\r\n PostDirectional: state.e911Address.PostDirectional,\r\n PreDirectional: state.e911Address.PreDirectional,\r\n StreetType: state.e911Address.StreetType,\r\n StreetSuffix: state.e911Address.StreetSuffix,\r\n Street1: state.e911Address.Street1,\r\n Street2: state.e911Address.Street2,\r\n PhoneNumber: state.e911Address.PhoneNumber,\r\n IsActive: state.e911Address.IsActive,\r\n Address1: state.e911Address.Address1,\r\n Address2: state.e911Address.Address2,\r\n DirectionPrefix:state.e911Address.DirectionPrefix,\r\n DirectionSuffix:state.e911Address.DirectionSuffix,\r\n ElevationType :state.e911Address.ElevationType,\r\n StructureType :state.e911Address.StructureType,\r\n County :state.e911Address.County\r\n }\r\n state.existingList911 = newExistingList;\r\n }\r\n }\r\n }\r\n else {\r\n state.e911Address.savingShowSuccess = false;\r\n state.e911Address.savingShowError = true;\r\n state.e911Address.savingErrorMessage = \"Failed Save\";\r\n }\r\n this.setState(state);\r\n })\r\n .catch((message) => {\r\n console.log(message);\r\n let state = { ...this.state };\r\n state.e911Address.savingLoading = false;\r\n state.e911Address.savingShowError = true;\r\n state.e911Address.savingErrorMessage = \"Failed Save\";\r\n this.setState(state);\r\n });\r\n }\r\n\r\n handleToggleEditList911 = (address) => {\r\n address.showAddress = !address.showAddress;\r\n let state = { ...this.state };\r\n let addressFind = state.list911.filter(e => e.PhoneNumber === address.PhoneNumber)[0];\r\n let index = state.list911.indexOf(addressFind);\r\n state.list911[index] = address;\r\n this.setState(state);\r\n }\r\n\r\n handleToggleEdit911Addresses = (address) => {\r\n address.showAddress = !address.showAddress;\r\n let state = { ...this.state };\r\n state.e911Address = address;\r\n this.setState(state);\r\n }\r\n\r\n addressForm = (key, e911Address, indexInArray, type) => {\r\n let saveElement = \"\";\r\n let closeElement = \"\";\r\n\r\n if (type === \"911List\") {\r\n //if(e911Address.IsActive){\r\n saveElement = ( this.save911InList(e911Address, indexInArray)} />);\r\n //}\r\n closeElement = ();\r\n }\r\n else if (type === \"911Address\") {\r\n //if(e911Address.IsActive){\r\n saveElement = ( this.save911AddressesInList(e911Address, indexInArray)} />);\r\n //}\r\n closeElement = ();\r\n }\r\n\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n

    Fill in all that apply and allow 10 minutes for address to validate in our system after updating.

    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(indexInArray, StreetNumber, type, x) }} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {/* \r\n { this.handleOnChange(indexInArray, StreetSuffix, type, x) }} /> */}\r\n {/* */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(indexInArray, StreetName, type, x) }} />\r\n
    \r\n
    \r\n
    \r\n {/*
    \r\n \r\n { this.handleOnChange(indexInArray, StreetName, type, x) }}/>\r\n
    */}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {/*
    \r\n
    \r\n \r\n { this.handleOnChange(indexInArray, StreetSuffix, type, x) }} />\r\n
    \r\n
    */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(indexInArray, UnitNum, type, x) }} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(indexInArray, ElevationNum, type, x) }} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(indexInArray, StructureNum, type, x) }} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(indexInArray, City, type, x) }} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(indexInArray, County, type, x) }} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(indexInArray, ZipCode, type, x) }} />\r\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 {saveElement}\r\n {closeElement}\r\n
    \r\n \r\n
    \r\n \r\n \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.state.E911ButtonText}\r\n \r\n \r\n E911 List\r\n \r\n \r\n
    \r\n
    Phone Numbers
    \r\n {this.getE911List()}\r\n
    \r\n
    Addresses
    \r\n {this.getList911Addresses()}\r\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\nclass SavingMessageControl extends Component {\r\n render() {\r\n let successMessage = \"\";\r\n if (this.props.showSuccess) {\r\n successMessage = (\r\n
    {this.props.SuccessMessage}
    \r\n )\r\n }\r\n\r\n let loadingMessage = \"\";\r\n if (this.props.showLoading) {\r\n loadingMessage = ()\r\n }\r\n\r\n let errorMessage = \"\";\r\n if (this.props.showError) {\r\n errorMessage = (
    {this.props.ErrorMessage}
    )\r\n }\r\n\r\n return (\r\n
    \r\n {successMessage}\r\n {loadingMessage}\r\n {errorMessage}\r\n
    \r\n );\r\n }\r\n};\r\n\r\nclass SaveButton extends Component {\r\n render() {\r\n if (this.props.disabled)\r\n return ();\r\n else\r\n return ();\r\n }\r\n};\r\n\r\nexport default e911Modal;","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { fetchData } from './../requests/api_calls';\r\nimport format from 'string-format';\r\nimport { DataLoadingSpinner } from './../components/spinners';\r\nimport * as settings from './../scripts/settings';\r\nimport E911Modal from './profile/modals/e911Modal';\r\n\r\nclass ProfileInfo extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = this.initialState(props)\r\n }\r\n\r\n initialState = (props) => {\r\n return {\r\n fetch_error: \"\",\r\n loading: true,\r\n profile: {},\r\n isIpTrunking: props && props.isIpTrunking ? props.isIpTrunking : false,\r\n hasE911: true\r\n };\r\n }\r\n componentDidMount() {\r\n this.fetchProfileInfo(this.getProfileApiUrl(), settings.noResultsMsg);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.ServiceNumber !== prevProps.ServiceNumber ||\r\n this.props.PBXUserID !== prevProps.PBXUserID) {\r\n this.fetchProfileInfo(this.getProfileApiUrl(prevProps), settings.noResultsMsg);\r\n }\r\n }\r\n\r\n fetchProfileInfo = (apiPath, errorMsg) => {\r\n this.setState(this.initialState(this.props));\r\n fetchData(apiPath).then((data) => {\r\n if (data !== null && data !== undefined) {\r\n this.loadData(data);\r\n this.setState({ loading: false });\r\n }\r\n else {\r\n this.setState({ profile: {}, loading: false });\r\n }\r\n }).catch((message) => {\r\n this.setState({ ...{ loading: false, fetch_error: message.toString() } });\r\n });\r\n }\r\n\r\n loadData = (data) => {\r\n let b911 = false;\r\n if (data.HasE911 && data.HasE911.toString() === 'true')\r\n b911 = true;\r\n this.setState({ ...{ profile: data, loading: false, hasE911: b911 } });\r\n }\r\n\r\n render() {\r\n let profileURL = '/profile/';\r\n if (this.state.profile.ServiceNumber && this.state.profile.ServiceNumber !== '')\r\n profileURL += this.state.profile.ServiceNumber;\r\n else\r\n profileURL += \"%20\";\r\n\r\n if (this.state.profile.PBXUserId && this.state.profile.PBXUserId !== '')\r\n profileURL += '/' + this.state.profile.PBXUserId;\r\n\r\n if (this.state.loading) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Profile

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    );\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {this.getName()}

    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n {this.props.IsAdmin ? this.getAdminProfile() : this.getRegularProfile()}\r\n\r\n
    \r\n
    \r\n View Profile\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n getRegularProfile() {\r\n let profile = \"\";\r\n profile = (
    \r\n
    {this.getCompany()}
    \r\n
    {this.state.profile.Designation}
    \r\n
    \r\n
    {this.state.profile.E911Street1} {this.state.profile.E911Street2}
    {this.state.profile.E911City}, {this.state.profile.E911State} {this.state.profile.E911Zip}
    \r\n
    \r\n
    );\r\n\r\n let department = \"\";\r\n department = (\r\n
    \r\n
    \r\n Department\r\n
    {this.state.profile.Department}
    \r\n
    \r\n
    );\r\n\r\n let serviceNumber = \"\";\r\n serviceNumber = (\r\n
    \r\n
    \r\n Service Number:\r\n
    {this.state.profile.ServiceNumber}Ext. {this.state.profile.Extension}
    \r\n
    \r\n
    );\r\n\r\n let email = \"\";\r\n email = (\r\n
    \r\n
    \r\n Email:\r\n
    {this.state.profile.Email}
    \r\n
    \r\n
    );\r\n\r\n let userid = \"\";\r\n // if(this.state.profile.PBXUserId)\r\n userid = (\r\n
    \r\n
    \r\n User ID:\r\n
    {this.state.profile.PBXUserId}
    \r\n
    \r\n
    );\r\n\r\n let enterpriseID = \"\"\r\n // if(this.state.profile.ParentAccountNumber)\r\n enterpriseID = (\r\n
    \r\n
    \r\n Enterprise ID:\r\n
    {this.state.profile.ParentAccountNumber}
    \r\n
    \r\n
    );\r\n\r\n let groupID = \"\"\r\n // if(this.state.profile.LocationAccountNumber)\r\n groupID = (\r\n
    \r\n
    \r\n Group ID:\r\n
    {this.state.profile.LocationAccountNumber}
    \r\n
    \r\n
    );\r\n\r\n let emapID = \"\"\r\n // if(this.state.profile.ImapID)\r\n if (this.state.isIpTrunking === false)\r\n emapID = (\r\n
    \r\n
    \r\n IMAP ID:\r\n
    {this.state.profile.ImapID}
    \r\n
    \r\n
    );\r\n\r\n\r\n let networkClass = \"\"\r\n // if(this.state.profile.ImapID)\r\n if (this.state.isIpTrunking === false)\r\n networkClass = (\r\n
    \r\n
    \r\n Network Class of Service:\r\n
    {this.state.profile.NetworkCOS}
    \r\n
    \r\n
    );\r\n\r\n let portalLoginUsername = \"\";\r\n // if(this.state.profile.PortalUsername)\r\n portalLoginUsername = (\r\n
    \r\n
    \r\n Portal Login Username:\r\n
    {this.state.profile.PortalUsername}
    \r\n
    \r\n
    );\r\n\r\n let groupEmailMobilePagerYahooId = \"\";\r\n // if(this.state.profile.Email ||\r\n // this.state.profile.Mobile ||\r\n // this.state.profile.Pager ||\r\n // this.state.profile.YahooId ){\r\n if (this.state.isIpTrunking === false)\r\n groupEmailMobilePagerYahooId = (\r\n
    \r\n
    \r\n Email:\r\n
    {this.state.profile.Email}
    \r\n Mobile:\r\n
    {this.state.profile.Mobile}
    \r\n Pager:\r\n
    {this.state.profile.Pager}
    \r\n YahooId:\r\n
    {this.state.profile.YahooId}
    \r\n
    \r\n
    );\r\n // }\r\n\r\n\r\n let e911AddressSection = \"\"\r\n // if(this.state.profile.E911Street1 ||\r\n // this.state.profile.E911Street2 ||\r\n // this.state.profile.E911City ||\r\n // this.state.profile.E911State ||\r\n // this.state.profile.E911Zip)\r\n e911AddressSection = (\r\n
    \r\n
    \r\n E911 Address:\r\n
    {this.state.profile.E911Street1} {this.state.profile.E911Street2}
    \r\n {this.state.profile.E911City}, {this.state.profile.E911State} {this.state.profile.E911Zip}\r\n
    \r\n
    \r\n
    );\r\n\r\n\r\n let location = \"\";\r\n // if(this.state.profile.Location)\r\n location = (\r\n
    \r\n
    \r\n Location:\r\n
    {this.state.profile.Location}
    \r\n
    \r\n
    );\r\n\r\n\r\n let phoneModel = \"\";\r\n // if(this.state.profile.Location)\r\n phoneModel = (\r\n
    \r\n
    \r\n Phone Model:\r\n
    {this.state.profile.DeviceModel}
    \r\n
    \r\n
    );\r\n\r\n\r\n let macAddress = \"\";\r\n // if(this.state.profile.DeviceMAC)\r\n macAddress = (\r\n
    \r\n
    \r\n Mac Address:\r\n
    {this.state.profile.DeviceMAC}
    \r\n
    \r\n
    );\r\n\r\n let language = \"\";\r\n // if(this.state.profile.Language)\r\n if (this.state.isIpTrunking === false)\r\n language = (\r\n
    \r\n
    \r\n Language:\r\n
    {this.state.profile.Language}
    \r\n
    \r\n
    );\r\n\r\n let timezone = \"\";\r\n // if(this.state.profile.TimeZone)\r\n timezone = (\r\n
    \r\n
    \r\n TimeZone:\r\n
    {this.state.profile.TimeZone}
    \r\n
    \r\n
    );\r\n\r\n let temporarilyUpdate911ServiceAddress = \"\";\r\n // if(this.state.profile.Email)\r\n temporarilyUpdate911ServiceAddress = (\r\n
    \r\n
    \r\n \r\n
    \r\n
    );\r\n\r\n let passwordRecovery = \"\";\r\n passwordRecovery = (\r\n
    \r\n
    \r\n Password Recovery Email:\r\n
    {this.state.profile.Email}
    \r\n {/* \r\n */}\r\n
    \r\n
    );\r\n\r\n return (\r\n
    \r\n {profile}\r\n {userid}\r\n {enterpriseID}\r\n {department}\r\n {groupID}\r\n {serviceNumber}\r\n {emapID}\r\n {portalLoginUsername}\r\n {networkClass}\r\n {groupEmailMobilePagerYahooId}\r\n {e911AddressSection}\r\n {location}\r\n {phoneModel}\r\n {macAddress}\r\n {language}\r\n {timezone}\r\n {temporarilyUpdate911ServiceAddress}\r\n {passwordRecovery}\r\n
    );\r\n }\r\n\r\n getRegularProfile_bk() {\r\n\r\n\r\n let department = \"\";\r\n // if(this.state.profile.Location)\r\n department = (\r\n
    \r\n
    \r\n Department :\r\n
    {this.state.profile.Department}
    \r\n
    \r\n
    );\r\n\r\n let location = \"\";\r\n // if(this.state.profile.Location)\r\n location = (\r\n
    \r\n
    \r\n Location:\r\n
    {this.state.profile.Location}
    \r\n
    \r\n
    );\r\n\r\n let serviceNumber = \"\";\r\n // if(this.state.profile.ServiceNumber)\r\n serviceNumber = (\r\n
    \r\n
    \r\n Service Number:\r\n
    {this.state.profile.ServiceNumber}Ext. {this.state.profile.Extension}
    \r\n
    \r\n
    );\r\n\r\n let userID = \"\";\r\n // if(this.state.profile.ServiceNumber)\r\n userID = (\r\n
    \r\n
    \r\n User ID:\r\n
    \r\n
    \r\n
    );\r\n\r\n\r\n let portalLoginUsername = \"\";\r\n // if(this.state.profile.PortalUsername)\r\n portalLoginUsername = (\r\n
    \r\n
    \r\n Portal Login Username:\r\n
    {this.state.profile.PortalUsername}
    \r\n
    \r\n
    );\r\n\r\n let phoneModel = \"\";\r\n // if(this.state.profile.Location)\r\n phoneModel = (\r\n
    \r\n
    \r\n Phone Model:\r\n
    {this.state.profile.DeviceModel}
    \r\n
    \r\n
    );\r\n\r\n\r\n let macAddress = \"\";\r\n // if(this.state.profile.DeviceMAC)\r\n macAddress = (\r\n
    \r\n
    \r\n Mac Address:\r\n
    {this.state.profile.DeviceMAC}
    \r\n
    \r\n
    );\r\n\r\n let timezone = \"\";\r\n // if(this.state.profile.TimeZone)\r\n timezone = (\r\n
    \r\n
    \r\n TimeZone:\r\n
    {this.state.profile.TimeZone}
    \r\n
    \r\n
    );\r\n\r\n let passwordRecovery = \"\";\r\n passwordRecovery = (\r\n
    \r\n
    \r\n Password Recovery Email:\r\n
    {this.state.profile.Email}
    \r\n
    \r\n
    );\r\n\r\n return (\r\n
    \r\n {department}\r\n {location}\r\n {serviceNumber}\r\n {userID}\r\n {portalLoginUsername}\r\n {phoneModel}\r\n {macAddress}\r\n {timezone}\r\n {passwordRecovery}\r\n
    );\r\n }\r\n\r\n\r\n getAdminProfile() {\r\n let profile = \"\";\r\n profile = (
    \r\n
    {this.getCompany()}
    \r\n
    {this.state.profile.Designation}
    \r\n
    \r\n
    {this.state.profile.SVCStreet1} {this.state.profile.SVCStreet2}
    {this.state.profile.SVCCity}, {this.state.profile.SVCState} {this.state.profile.SVCZip}
    \r\n
    \r\n
    );\r\n\r\n let portalLoginUsername = \"\";\r\n portalLoginUsername = (\r\n
    \r\n
    \r\n Portal Login Username:\r\n
    {this.state.profile.PortalUsername}
    \r\n
    \r\n
    );\r\n\r\n let e911AddressSection = \"\"\r\n e911AddressSection = (\r\n
    \r\n
    \r\n E911 Address:\r\n
    {this.state.profile.E911Street1} {this.state.profile.E911Street2}
    \r\n {this.state.profile.E911City}, {this.state.profile.E911State} {this.state.profile.E911Zip}\r\n
    \r\n
    \r\n
    );\r\n\r\n let passwordRecovery = \"\";\r\n passwordRecovery = (\r\n
    \r\n
    \r\n Password Recovery Email:\r\n
    {this.state.profile.Email}
    \r\n
    \r\n
    );\r\n\r\n return (\r\n
    \r\n {profile}\r\n {portalLoginUsername}\r\n {e911AddressSection}\r\n {/* {passwordRecovery} */}\r\n
    )\r\n }\r\n\r\n getName() {\r\n if (this.state.loading)\r\n return \"\";\r\n\r\n if (this.props.IsAdmin) {\r\n if (this.state.profile.FirstName || this.state.profile.LastName)\r\n return this.state.profile.FirstName + \" \" + this.state.profile.LastName;\r\n else\r\n return \"Admin\";\r\n }\r\n else {\r\n if (this.state.profile.FirstName || this.state.profile.LastName)\r\n return (\r\n \r\n {this.state.profile.FirstName + \" \" + this.state.profile.LastName} \r\n Calling Line ID: {this.state.profile.CallingLineFirstName + \" \" + this.state.profile.CallingLineLastName}\r\n \r\n );\r\n else {\r\n return (Not Available)\r\n }\r\n }\r\n }\r\n getProfileApiUrl = () => {\r\n let apiUrl = 'usr/UserProfile';\r\n\r\n if (this.props.ServiceNumber && this.props.PBXUserID) {\r\n apiUrl += \"?ServiceNumber={ServiceNumber}&PBXUserID={PBXUserID}\";\r\n }\r\n else if (this.props.ServiceNumber) {\r\n apiUrl += \"?ServiceNumber={ServiceNumber}\";\r\n }\r\n else if (this.props.PBXUserID) {\r\n apiUrl += \"?PBXUserID={PBXUserID}\";\r\n }\r\n return format(apiUrl, this.props);\r\n }\r\n\r\n getCompany() {\r\n if (this.props.IsAdmin)\r\n return (\r\n \r\n
    {this.state.profile.CustomerName}
    \r\n Enterprise ID: {this.state.profile.ParentAccountNumber}\r\n
     
    \r\n
    \r\n )\r\n else {\r\n return (\r\n {this.state.profile.CustomerName}\r\n \r\n )\r\n }\r\n }\r\n}\r\nexport default ProfileInfo;","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from './../components/spinners';\r\nimport { fetchData } from './../requests/api_calls';\r\nimport * as helper from '../scripts/helper'\r\n\r\nclass Applications extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n applications: []\r\n };\r\n };\r\n\r\n componentDidMount() {\r\n this.hasCallRecording();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (\r\n this.props.ServiceNumber !== prevProps.ServiceNumber ||\r\n this.props.PBXUserID !== prevProps.PBXUserID) {\r\n this.updateApplication();\r\n\r\n }\r\n }\r\n\r\n hasCallRecording = async () => {\r\n let response = await fetchData(`admin/HasCallRecording?PBXUserId=${this.props.PBXUserID}`).then(data => data).catch((err) => console.error(err));\r\n if (response) {\r\n this.setState({ HasCallRecordingService: response.HasCallRecordingService });\r\n }\r\n this.updateApplication();\r\n }\r\n\r\n updateApplication = () => {\r\n this.setState({ applications: [], loading: true });\r\n let params = \"?ServiceNumber=\" + this.props.ServiceNumber;\r\n if (this.props.PBXUserID) params += \"&PBXUserID=\" + this.props.PBXUserID;\r\n let apiPath = 'usr/UserApplications' + params;\r\n fetchData(apiPath).then((data) => {\r\n if (data !== null) {\r\n this.loadData(data);\r\n } else if (data === null) {\r\n this.setState({ applications: [], loading: false });\r\n };\r\n });\r\n }\r\n\r\n loadData = (data) => {\r\n if (!this.state.HasCallRecordingService || this.state.HasCallRecordingService === false || this.state.HasCallRecordingService === \"false\") {\r\n let f = data.filter(el => el.ApplicatoinName !== \"Call Recording\")\r\n let applications = f.map((app, index) => this.appInfo(app, index));\r\n this.setState({ applications: applications, loading: false });\r\n }\r\n else {\r\n let applications = data.map((app, index) => this.appInfo(app, index));\r\n this.setState({ applications: applications, loading: false });\r\n }\r\n }\r\n\r\n appInfo(app, index) {\r\n let numberClasses = ['one', 'two', 'three', 'four', 'five', 'six', 'seven']\r\n let numClassesIndex = index % numberClasses.length;\r\n return (\r\n <>\r\n {!sessionStorage?.emulatedUser && app?.ApplicatoinName.toLowerCase().trim() === \"call recording\" ?\r\n () : app?.ApplicatoinName.toLowerCase().trim() === \"voice analytics\" &&\r\n (\r\n )\r\n }\r\n \r\n )\r\n }\r\n\r\n appList = () => {\r\n if (this.state.loading) {\r\n return \r\n } else if (this.state.applications.length > 0) {\r\n return this.state.applications\r\n } else {\r\n return

    No applications are available.

    \r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Applications

    \r\n
    \r\n
    \r\n {this.appList()}\r\n {/**/}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n}\r\n\r\nexport default Applications;","import React from 'react';\r\nimport { GridCell } from '@progress/kendo-react-grid';\r\n\r\n\r\n\r\nclass WrappedCell extends GridCell {\r\n\r\n render() {\r\n let fieldName = this.props.field;\r\n return (\r\n \r\n
    {this.props.dataItem[fieldName]}
    \r\n\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default WrappedCell;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\nimport PropTypes from 'prop-types';\r\nimport InputMask from 'react-input-mask';\r\n\r\nclass AddEditEnterpriseContact extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n let canEdit = false;\r\n // if (props.AddEditMode === 'Add')\r\n // canEdit = true;\r\n // else if (props.ContactDetails)\r\n // canEdit = props.ContactDetails.CanEdit;\r\n\r\n this.state = {\r\n isAdd: props.AddEditMode === 'Add' ? true : false,\r\n saving: false,\r\n ContactDetails: {\r\n UserId: sessionStorage.SelectedUserId ? sessionStorage.SelectedUserId : 0,\r\n EnterpriseId: props.ContactDetails && props.ContactDetails.EnterpriseId ? props.ContactDetails.EnterpriseId : 0,\r\n Name: props.ContactDetails && props.ContactDetails.Name ? props.ContactDetails.Name : '',\r\n OldName: props.ContactDetails && props.ContactDetails.OldName ? props.ContactDetails.OldName : '',\r\n TN: props.ContactDetails && props.ContactDetails.TN ? props.ContactDetails.TN : '',\r\n SpeedDialCode: props.ContactDetails && props.ContactDetails.SpeedDialCode ? props.ContactDetails.SpeedDialCode : '',\r\n OldSpeedDialCode: props.ContactDetails && props.ContactDetails.OldSpeedDialCode ? props.ContactDetails.OldSpeedDialCode : '',\r\n //CanEdit: canEdit\r\n },\r\n SpeedDialCodes: this.props.SpeedDialCodes && this.props.SpeedDialCodes.length > 0 ? this.props.SpeedDialCodes : [],\r\n SpeedDialEnabled: props.ContactDetails && props.ContactDetails.SpeedDialCode ? true : false,\r\n showModal: false,\r\n savingShowSuccess: false,\r\n savingShowError: false,\r\n saveResultsMessage: '',\r\n adding: false\r\n };\r\n this.handleOnSave = this.handleOnSave.bind(this);\r\n this.callUpdateFromModal = this.callUpdateFromModal.bind(this);\r\n }\r\n\r\n componentWillReceiveProps(props) {\r\n if (props) {\r\n if (this.state.SpeedDialCodes !== props.SpeedDialCodes) {\r\n let newSpeedDials = props.SpeedDialCodes ? props.SpeedDialCodes.slice() : [];\r\n if (this.state.ContactDetails.OldSpeedDialCode !== '') {\r\n newSpeedDials.push(this.state.ContactDetails.OldSpeedDialCode);\r\n newSpeedDials.sort();\r\n }\r\n this.setState({ SpeedDialCodes: newSpeedDials });\r\n }\r\n }\r\n };\r\n\r\n getBlankContactDetails = () => {\r\n return {\r\n UserId: parseInt(sessionStorage.SelectedUserId), //=> should be able to pull from 'selectedUserId' in sessionStorage, do not use UserId b/ c thats the logged in user\r\n EnterpriseId: 0, //(just hardcode),\r\n TN: \"\", //=> phoneNumber\r\n OldName: \"\", //(hardcode to blank)\r\n Name: \"\", //=> from Name field\r\n OldSpeedDialCode: \"\", //(this can be blank too)\r\n SpeedDialCode: \"\",\r\n };\r\n }\r\n\r\n showModal = () => {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n handleClose = () => {\r\n let state = this.state;\r\n if (state.isAdd) {\r\n state.ContactDetails = this.getBlankContactDetails();\r\n state.SpeedDialEnabled = false;\r\n }\r\n state.showModal = false;\r\n state.savingShowError = false;\r\n state.savingShowSuccess = false;\r\n this.setState(state);\r\n }\r\n\r\n handleOnChange = (field, e) => {\r\n let state = { ...this.state };\r\n state.ContactDetails[field] = e.target.value;\r\n this.setState(state);\r\n }\r\n\r\n handleOnStateChange = (e) => {\r\n let state = this.state;\r\n state.ContactDetails.State = e.target.value;\r\n this.setState(state);\r\n }\r\n\r\n callUpdateFromModal = (newContactModel) => {\r\n this.props.UpdateParentFromModal(newContactModel, this.state.adding);\r\n }\r\n\r\n handleOnSave = () => {\r\n if (this.state.ContactDetails.Name.toString().trim() === '') {\r\n this.setState({ savingShowError: true, saveResultsMessage: 'A Name must be provided!' })\r\n return;\r\n }\r\n if (this.state.ContactDetails.TN.toString().trim() === '') {\r\n this.setState({ savingShowError: true, saveResultsMessage: 'A TN must be provided!' })\r\n return;\r\n }\r\n this.setState({ saving: true, adding: (this.state.ContactDetails.Name && this.state.ContactDetails.OldName === '') ? true : false });\r\n let apiPath = '';\r\n let verb = '';\r\n let requestData = {};\r\n // ***** \r\n let { Name, TN, SpeedDialCode, EnterpriseId, UserId, OldName, OldSpeedDialCode } = this.state.ContactDetails;\r\n let { SelectedUserId } = sessionStorage;\r\n if (this.state.ContactDetails.OldName === '') {\r\n // ADD NEW CONTACT\r\n apiPath = 'ContactBook/AddContactToUserContactBook';\r\n verb = 'POST'\r\n requestData = {\r\n UserId: parseInt(SelectedUserId), //=> should be able to pull from 'selectedUserId' in sessionStorage, do not use UserId b/ c thats the logged in user\r\n EnterpriseId: 0, //(just hardcode),\r\n TN: TN, //=> phoneNumber\r\n OldName: \"\", //(hardcode to blank)\r\n Name: Name, //=> from Name field\r\n OldSpeedDialCode: \"\", //(this can be blank too)\r\n SpeedDialCode: this.state.SpeedDialEnabled ? SpeedDialCode : \"\", //(from speed dial dropdown),\r\n //CanEdit: true,\r\n };\r\n //console.log(\"add dto\", requestData);\r\n } else {\r\n // EDIT EXISTING CONTACT\r\n apiPath = 'ContactBook/UpdateContactInUserContactBook';\r\n verb = 'PATCH';\r\n requestData = {\r\n UserId: parseInt(UserId), //=> should be able to pull from 'selectedUserId' in sessionStorage, do not use UserId b/ c thats the logged in user\r\n EnterpriseId: EnterpriseId, //(just hardcode),\r\n TN: TN, //=> phoneNumber\r\n OldName: OldName, //(hardcode to blank)\r\n Name: Name, //=> from Name field\r\n OldSpeedDialCode: OldSpeedDialCode, //(this can be blank too)\r\n SpeedDialCode: this.state.SpeedDialEnabled ? SpeedDialCode : \"\", //(from speed dial dropdown),\r\n //CanEdit: true,\r\n }\r\n //console.log(\"edit dto\", requestData);\r\n }\r\n apiCalls.post(apiPath, verb, JSON.stringify(requestData)).then(res => {\r\n if (res.ok) {\r\n let newContactModel = JSON.parse(res.message);\r\n //console.log('New contact', newContactModel);\r\n this.callUpdateFromModal(newContactModel);\r\n this.setState({ ContactDetails: newContactModel, savingShowSuccess: true, saving: false });\r\n } else {\r\n this.setState({ savingShowError: true, saving: false, saveResultsMessage: 'An error occurred saving Contact in Contact Directory' })\r\n }\r\n })\r\n .catch(message => {\r\n this.setState({\r\n saving: false,\r\n savingShowError: true,\r\n loading: false,\r\n saveResultsMessage: 'An error occurred saving Contact in Contact Directory'\r\n });\r\n });\r\n }\r\n\r\n getModalButtons = () => {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n }\r\n\r\n getEditViewButton = () => {\r\n // if (this.state.ContactDetails.CanEdit === true)\r\n return (\r\n \r\n \r\n \r\n );\r\n // else\r\n // return (\r\n // \r\n // View\r\n // \r\n // )\r\n }\r\n\r\n formatSpeedDialOption = (data) => {\r\n if (data && data.length > 0) {\r\n let copy = JSON.parse(JSON.stringify(data));\r\n return copy.map((itm, idx) => {\r\n if (itm && itm != undefined) {\r\n return \r\n }\r\n });\r\n } else return;\r\n };\r\n\r\n toggleSpeedDial = () => {\r\n const toggleSetting = async () => {\r\n await this.setState({ SpeedDialEnabled: !this.state.SpeedDialEnabled });\r\n if (!this.state.SpeedDialEnabled) {\r\n let state = { ...this.state };\r\n state.ContactDetails[\"SpeedDialCode\"] = \"\";\r\n this.setState(state);\r\n }\r\n }\r\n if (this.state.SpeedDialCodes && this.state.SpeedDialCodes.length > 1 && this.state.SpeedDialCodes != undefined) {\r\n return (\r\n
    \r\n
    Enable Speed Dial:

    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n } else return;\r\n }\r\n\r\n speedDialSetting = () => {\r\n let current = JSON.parse(JSON.stringify(this.state.ContactDetails.SpeedDialCode));\r\n let existing = JSON.parse(JSON.stringify(this.state.ContactDetails.OldSpeedDialCode));\r\n let codes = this.state.SpeedDialCodes;\r\n if (existing !== '' && _.indexOf(codes, existing) < 0) {\r\n codes.push(existing);\r\n codes.sort();\r\n }\r\n\r\n if (this.state.SpeedDialEnabled && codes && codes.length > 1 && codes != undefined) {\r\n return (\r\n
    \r\n \r\n this.handleOnChange(\"SpeedDialCode\", e)}\r\n value={current}\r\n className=\"form-control\">\r\n \r\n {this.formatSpeedDialOption(codes)}\r\n
    \r\n
    Note: Some Speed Dial codes conflict with certain Feature Access Codes. See below for a list of conflicting Speed Dial codes that completely over-ride their Feature Access Code functionality when active: \r\n

    \r\n
    \r\n #31 Calling Line ID Delivery Blocking Persistent Deactivation
    \r\n #40 Call Forwarding Busy To Voice Mail Deactivation
    \r\n #41 Call Forwarding No Answer To Voice Mail Deactivation
    \r\n #43 Call Waiting Persistent Deactivation
    \r\n #58 Group Call Park
    \r\n #70 Night Service Activation Manual Override
    \r\n #71 Night Service Deactivation Manual Override
    \r\n #72 Forced Forwarding Activation
    \r\n #73 Forced Forwarding Deactivation
    \r\n #76 Call Forwarding Selective Activation
    \r\n #77 Call Forwarding Selective Deactivation
    \r\n #80 Make Outgoing Call as Call Center
    \r\n #81 Make Personal Outgoing Call
    \r\n #83 Escalate Call to Supervisor
    \r\n
    \r\n
    \r\n
    \r\n )\r\n } else return;\r\n }\r\n\r\n getSaveMessage = () => {\r\n if (this.state.saving)\r\n {\r\n return ()\r\n } else if (this.state.savingShowError) {\r\n return (\r\n
    \r\n {this.state.saveResultsMessage}\r\n
    \r\n );\r\n } else if (this.state.savingShowSuccess) {\r\n return (\r\n \r\n
    Success
    \r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n render() {\r\n let { Name, TN, CanEdit, SpeedDialCode } = this.state.ContactDetails;\r\n if (this.state.isAdd) {\r\n return (\r\n \r\n
    \r\n Add Contact\r\n
    \r\n \r\n \r\n Add Contact\r\n \r\n \r\n
    \r\n \r\n \r\n {this.toggleSpeedDial()}\r\n {this.speedDialSetting()}\r\n
    \r\n
    \r\n \r\n
    \r\n {this.getModalButtons()}\r\n {this.getSaveMessage()}\r\n
    \r\n
    \r\n
    \r\n );\r\n } else {\r\n let Button = this.getEditViewButton();\r\n return (\r\n \r\n {Button}\r\n \r\n \r\n Edit Contact\r\n \r\n \r\n
    \r\n \r\n \r\n {this.toggleSpeedDial()}\r\n {this.speedDialSetting()}\r\n
    \r\n
    \r\n \r\n
    \r\n {this.getModalButtons()}\r\n {this.getSaveMessage()}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n}\r\n\r\nclass ContactTextField extends Component {\r\n render() {\r\n if (this.props.Mask && this.props.Mask !== '') {\r\n return (\r\n
    \r\n \r\n { if (this.props.enabled === true) this.props.onChange(this.props.id, e) }} />\r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n { if (this.props.enabled === true) this.props.onChange(this.props.id, e) }} />\r\n
    \r\n );\r\n }\r\n }\r\n};\r\n\r\nContactTextField.propTypes = {\r\n label: PropTypes.string.isRequired,\r\n textvalue: PropTypes.string,\r\n id: PropTypes.string.isRequired,\r\n onChange: PropTypes.func\r\n}\r\n\r\nexport default AddEditEnterpriseContact;","import React, { Component } from 'react';\r\nimport * as apiCalls from '../requests/api_calls';\r\nimport WrappedCell from '../components/wordWrappedCell'\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { DataLoadingSpinner } from '../components/spinners';\r\nimport { connect } from 'react-redux';\r\nimport { headerToolTip } from '../components/ellipsisHeaderTooltip';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\n//\r\nimport AddEditContact from './profile/modals/addEditUserContactModal';\r\n//\r\n\r\nexport default class UserContactWidget extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const handleDeleteItem = this.handleDeleteItem.bind(this);\r\n const updateFromModal = this.updateFromModal.bind(this);\r\n const SpeedDialCodes = this.provideSpeedDialCodes.bind(this);\r\n\r\n class ContactEditButton extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n //let { Name, TN, SpeedDialCode, CanEdit } = this.props.dataItem;\r\n return (\r\n \r\n \r\n \r\n\r\n );\r\n }\r\n }\r\n\r\n class ContactDeleteButton extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n //if (this.props.dataItem.CanEdit === true)\r\n return (\r\n \r\n { handleDeleteItem(this.props.dataItem) }}\r\n style={{ minWidth: \"0px\" }}\r\n >\r\n \r\n \r\n \r\n );\r\n // else\r\n // return (\r\n // \r\n\r\n // \r\n // )\r\n }\r\n }\r\n this.state = {\r\n Contacts: [],\r\n ContactsCopy: [],\r\n SpeedDialCodes: [],\r\n loading: false,\r\n showDeletePrompt: false,\r\n Sort: [{ field: \"Name\" }],\r\n //gridHeight: (window.innerHeight - 180),\r\n searchTerm: ''\r\n }\r\n this.sortChange = this.sortChange.bind(this);\r\n this.searchContacts = this.searchContacts.bind(this);\r\n this.handleCancelDelete = this.handleCancelDelete.bind(this);\r\n\r\n this.ContactEditButton = ContactEditButton;\r\n this.ContactDeleteButton = ContactDeleteButton;\r\n }\r\n\r\n provideSpeedDialCodes = () => {\r\n if (this.state.SpeedDialCodes && this.state.SpeedDialCodes.length > 0) {\r\n const codes = JSON.parse(JSON.stringify(this.state.SpeedDialCodes));\r\n return codes;\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchContactDetails();\r\n }\r\n\r\n fetchContactDetails = async () => {\r\n await this.setState({ loading: true });\r\n let { SelectedUserId } = sessionStorage;\r\n //this.fetchSpeedDial(SelectedUserId);\r\n let path = `ContactBook/GetUserContactBook?UserId=${SelectedUserId}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data !== null) {\r\n let codeAdds = [];\r\n data.map(contact => {\r\n if (contact && contact.SpeedDialCode) {\r\n codeAdds.push(contact.SpeedDialCode);\r\n }\r\n })\r\n this.fetchSpeedDial(SelectedUserId, codeAdds);\r\n this.setState({\r\n Contacts: data, ContactsCopy: data, loading: false,\r\n });\r\n } else {\r\n this.setState({ Contacts: [], ContactsCopy: [], loading: false });\r\n }\r\n }).catch(err => {\r\n console.error(err);\r\n this.setState({ Contacts: [], ContactsCopy: [], loading: false });\r\n });\r\n }\r\n\r\n fetchSpeedDial = async (userId, adds) => {\r\n let path = `ContactBook/GetAvailableSpeedDialCodes?UserId=${userId}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data !== null) {\r\n this.setState({ SpeedDialCodes: data });\r\n } else {\r\n this.setState({ SpeedDialCodes: [] });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n sortChange = (event) => {\r\n this.setState({\r\n ContactsCopy: orderBy(this.state.ContactsCopy, event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n searchContacts = (event) => {\r\n let searchText = '';\r\n let fullDetails = this.state.Contacts;\r\n if (event && event.target && event.target.value && event.target.value.trim() !== '') {\r\n searchText = event.target.value;\r\n let contacts = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'Name', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'ServiceNumber', operator: 'contains', value: searchText, ignoreCase: true }\r\n ]\r\n });\r\n\r\n this.setState({ ContactsCopy: contacts, searchTerm: searchText })\r\n }\r\n else {\r\n this.setState({ ContactsCopy: fullDetails, searchTerm: '' });\r\n }\r\n }\r\n\r\n handleDeleteItem = (productItem) => {\r\n this.setState({ showDeletePrompt: true, selectedDeleteItem: productItem });\r\n }\r\n\r\n handleCancelDelete = () => {\r\n this.setState({ showDeletePrompt: false, selectedDeleteItem: null });\r\n }\r\n\r\n handleConfirmedDelete = () => {\r\n this.setState({ saving: true });\r\n let contact = this.state.selectedDeleteItem;\r\n let apiPath = 'ContactBook/RemoveContactInUserContactBook';\r\n let verb = 'POST';\r\n\r\n apiCalls.post(apiPath, verb, JSON.stringify(contact)).then((data) => {\r\n if (data.ok) {\r\n let Contacts = this.state.Contacts.slice();\r\n let ContactsCopy = this.state.ContactsCopy.slice();\r\n let SpeedDialList = this.state.SpeedDialCodes.slice();\r\n if (contact.OldSpeedDialCode !== '') {\r\n SpeedDialList.push(contact.OldSpeedDialCode);\r\n SpeedDialList.sort();\r\n }\r\n let newContacts = Contacts.filter(resp => resp.Name !== contact.Name);\r\n let newContactsCopy = ContactsCopy.filter(resp => resp.Name !== contact.Name);\r\n this.setState({\r\n saving: false,\r\n savingShowSuccess: true,\r\n saveResultsMessage: 'Contact Removed Successfully!',\r\n Contacts: newContacts,\r\n ContactsCopy: newContactsCopy,\r\n SpeedDialCodes: SpeedDialList,\r\n showDeletePrompt: false\r\n });\r\n this.fetchContactDetails();\r\n } else {\r\n this.setState({ savingShowError: true, saveResultsMessage: data, saving: false, showDeletePrompt: false })\r\n }\r\n }).catch(err => {\r\n this.setState({\r\n saving: false,\r\n savingShowError: true,\r\n saveResultsMessage: 'An error occurred while attempting to remove contact from contact directory!',\r\n showDeletePrompt: false\r\n });\r\n });\r\n }\r\n\r\n updateFromModal = (contact, isAdd) => {\r\n let Contacts = this.state.Contacts.slice();\r\n let ContactsCopy = this.state.ContactsCopy.slice();\r\n let speedDialValues = this.state.SpeedDialCodes.slice();\r\n if (!isAdd) {\r\n let oldContact = Contacts.filter(resp => resp.OldName === contact.OldName)[0];\r\n let oldContactCopy = ContactsCopy.filter(resp => resp.OldName === contact.OldName)[0];\r\n let idxOldContact = _.indexOf(Contacts, oldContact);\r\n let idxOldContactCopy = _.indexOf(ContactsCopy, oldContactCopy);\r\n Contacts[idxOldContact] = contact;\r\n ContactsCopy[idxOldContactCopy] = contact;\r\n\r\n\r\n if (oldContact.SpeedDialCode !== '' && contact.SpeedDialCode !== oldContact.SpeedDialCode)//ADD old speed dial code back\r\n {\r\n speedDialValues.push(oldContact.SpeedDialCode);\r\n speedDialValues.sort();\r\n }\r\n if (contact.SpeedDialCode !== '' && contact.SpeedDialCode !== oldContact.SpeedDialCode) //REMOVE new speed dial code\r\n {\r\n speedDialValues = _.filter(speedDialValues, resp => resp.SpeedDialCode !== contact.SpeedDialCode);\r\n }\r\n\r\n }\r\n else {\r\n Contacts.push(contact);\r\n ContactsCopy.push(contact);\r\n if (contact.SpeedDialCode !== '')\r\n speedDialValues = _.filter(speedDialValues, resp => resp.SpeedDialCode !== contact.SpeedDialCode);\r\n }\r\n\r\n\r\n\r\n this.setState({ Contacts: Contacts, ContactsCopy: ContactsCopy, SpeedDialCodes: speedDialValues });\r\n }\r\n\r\n uploadBtn = () => {\r\n return (\r\n
    \r\n {\r\n event.target.value = null;\r\n }}\r\n />\r\n \r\n
    )\r\n }\r\n\r\n addAttachment = async (event) => {\r\n let file = event.target.files[0];\r\n let reader = new FileReader();\r\n reader.addEventListener('loadend', () => {\r\n let body = reader.result.split(',')[1];\r\n let name = file.name;\r\n this.createAttachment(body, name);\r\n }, false);\r\n if (file) {\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n createAttachment = async (body, name, ticketId) => {\r\n let apiPath = 'ContactBook/UploadUserLevelContacts';\r\n let attachmentDTO = {\r\n TicketId: this.state.TicketId,\r\n AttachmentBody: body,\r\n FileName: name,\r\n UserId: sessionStorage.SelectedUserId\r\n };\r\n await this.setState({ attachmentSubmitted: true });\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(attachmentDTO)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n await this.setState({\r\n Submission: true,\r\n submitError: false,\r\n });\r\n this.fetchContactDetails();\r\n } else {\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n });\r\n }\r\n }\r\n\r\n openAttachments = () => {\r\n this.refs.fileUploader.click();\r\n }\r\n\r\n uploadBtn = () => {\r\n return (\r\n
    \r\n {\r\n event.target.value = null;\r\n }}\r\n />\r\n \r\n\r\n
    )\r\n }\r\n\r\n addAttachment = async (event) => {\r\n let file = event.target.files[0];\r\n let reader = new FileReader();\r\n reader.addEventListener('loadend', () => {\r\n let body = reader.result.split(',')[1];\r\n let name = file.name;\r\n this.createAttachment(body, name);\r\n }, false);\r\n if (file) {\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n createAttachment = async (body, name, ticketId) => {\r\n let apiPath = 'ContactBook/UploadUserLevelContacts';\r\n let attachmentDTO = {\r\n TicketId: this.state.TicketId,\r\n AttachmentBody: body,\r\n FileName: name,\r\n UserId: sessionStorage.SelectedUserId\r\n };\r\n await this.setState({ attachmentSubmitted: true });\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(attachmentDTO)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n await this.setState({\r\n Submission: true,\r\n submitError: false,\r\n });\r\n this.fetchContactDetails();\r\n } else {\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n });\r\n }\r\n }\r\n\r\n openAttachments = () => {\r\n this.refs.fileUploader.click();\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n };\r\n\r\n render() {\r\n let codes = this.provideSpeedDialCodes();\r\n let displayTitle = () => {\r\n if (sessionStorage.serviceProviderName === \"Vyve_Broadband\") {\r\n if (window.location.href.indexOf(\"mydigitalservices\") != -1 || window.location.href.indexOf(\"driveuc\") != -1) {\r\n return \"Personal Directory\";\r\n } else {\r\n return \"Contact Directory\";\r\n }\r\n } else {\r\n return \"Contact Directory\";\r\n }\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n {}\r\n
    \r\n
    \r\n {this.uploadBtn()}\r\n
    \r\n {/*

    {this.getName()}

    */}\r\n

    {displayTitle()} {this.state.ContactsCopy.length}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n \r\n \r\n Remove Contact?\r\n \r\n \r\n

    Are you sure you wish to remove this contact from User Directory?

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n};","import React, { Component } from 'react';\r\nimport Voicemails from './voicemails/card';\r\nimport CallLogs from './call_logs';\r\nimport BasicFeatures from './basic_features';\r\nimport ProfileInfo from './profile_info';\r\nimport Applications from './applications';\r\nimport EnterpriseContactWidget from './user_contact_widget';\r\nimport { connect } from 'react-redux';\r\nimport { userIsAdmin, redirectToLanding, atRootPath } from './../scripts/helper';\r\nimport { DataLoadingSpinner } from './../components/spinners';\r\nimport Masonry from \"react-masonry-component\";\r\nimport { fetchData } from \"./../requests/api_calls\";\r\n//import TC_MODAL from './modals/termsAndConditionsModal';\r\n\r\nclass Dashboard extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n const profileInfo = this.profileInfo.bind(this);\r\n const voicemail = this.voicemail.bind(this);\r\n const applications = this.applications.bind(this);\r\n const basicFeatures = this.basicFeatures.bind(this);\r\n const enterpriseDirectory = this.enterpriseDirectory.bind(this);\r\n let widgets = [\r\n { toggle: 'showProfileInfo', functionName: profileInfo, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showVoicemail', functionName: voicemail, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showEnterpriseContacts', functionName: enterpriseDirectory, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showBasicFeatures', functionName: basicFeatures, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showApplications', functionName: applications, widgetRow: 0, widgetColumn: 0 },\r\n\r\n ];\r\n let isIpTrunking = sessionStorage.isSelectedServiceIpTrunking !== null && sessionStorage.isSelectedServiceIpTrunking !== undefined ? sessionStorage.isSelectedServiceIpTrunking : false;\r\n isIpTrunking = isIpTrunking !== undefined && isIpTrunking !== null && isIpTrunking.toString() === 'true' ? true : false;\r\n\r\n this.state = {\r\n serviceLoading: props.serviceLoading,\r\n ServiceNumber: props.ServiceNumber,\r\n PBXUserID: props.PBXUserID,\r\n AccountNumber: props.AccountNumber,\r\n DirectoryNumber: props.DirectoryNumber,\r\n Extension: props.Extension,\r\n widgets: widgets,\r\n showProfileInfo: true,\r\n showVoicemail: isIpTrunking ? false : true,\r\n showCallLogs: true,\r\n showApplications: true,\r\n showBasicFeatures: isIpTrunking ? false : true,\r\n showEnterpriseContacts: isIpTrunking ? false : true,\r\n\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (userIsAdmin() && atRootPath()) {\r\n redirectToLanding();\r\n }\r\n }\r\n\r\n componentWillReceiveProps(props) {\r\n if (props.serviceLoading !== this.state.serviceLoading || (props.ServiceNumber !== undefined && props.ServiceNumber !== this.state.ServiceNumber) ||\r\n (props.PBXUserID !== undefined && props.PBXUserID !== this.state.PBXUserID)) {\r\n this.setState({\r\n serviceLoading: props.serviceLoading,\r\n ServiceNumber: props.ServiceNumber,\r\n PBXUserID: props.PBXUserID,\r\n AccountNumber: props.AccountNumber,\r\n DirectoryNumber: props.DirectoryNumber,\r\n Extension: props.Extension,\r\n showProfileInfo: props.showProfileInfo !== null && props.showProfileInfo !== undefined ? props.showProfileInfo : this.state.showProfileInfo,\r\n showVoicemail: props.showVoicemail !== null && props.showVoicemail !== undefined ? props.showVoicemail : this.state.showVoicemail,\r\n showCallLogs: props.showCallLogs !== null && props.showCallLogs !== undefined ? props.showCallLogs : this.state.showCallLogs,\r\n showApplications: props.showApplications !== null && props.showApplications !== undefined ? props.showApplications : this.state.showApplications,\r\n showBasicFeatures: props.showBasicFeatures !== null && props.showBasicFeatures !== undefined ? props.showBasicFeatures : this.state.showBasicFeatures,\r\n showEnterpriseContacts: props.showEnterpriseContacts !== null && props.showEnterpriseContacts !== undefined ? props.showEnterpriseContacts : this.state.showEnterpriseContacts\r\n });\r\n }\r\n }\r\n\r\n enterpriseDirectory = () => {\r\n let { IsWholesale } = sessionStorage;\r\n if (this.state.PBXUserID && this.state.PBXUserID.length > 0 && this.state.showEnterpriseContacts === true && IsWholesale.toString().toLowerCase() == \"true\")\r\n return \r\n }\r\n\r\n profileInfo = () => {\r\n // do not load until props have mapped from redux store \r\n if (this.state.ServiceNumber !== undefined) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n voicemail = () => {\r\n // do not load until props have mapped from redux store\r\n if (this.state.AccountNumber !== undefined && this.state.DirectoryNumber !== undefined\r\n && this.state.ServiceNumber !== undefined && this.state.PBXUserID !== undefined) { // && this.state.showVoicemail === true) {\r\n return \r\n }\r\n }\r\n\r\n callLogs = () => {\r\n // do not load until props have mapped from redux store\r\n if (this.state.AccountNumber !== undefined && this.state.PBXUserID !== undefined) {\r\n return \r\n }\r\n }\r\n\r\n applications = () => {\r\n // do not load until props have mapped from redux store\r\n if (this.state.ServiceNumber !== undefined && this.state.PBXUserID !== undefined) {\r\n return \r\n }\r\n }\r\n\r\n basicFeatures = () => {\r\n // do not load until props have mapped from redux store\r\n if (this.state.ServiceNumber !== undefined && this.state.PBXUserID !== undefined && this.state.showBasicFeatures === true) {\r\n return \r\n }\r\n }\r\n\r\n renderColumns = () => {\r\n let columnObj = {\r\n column1: [],\r\n column2: [],\r\n column3: []\r\n }\r\n let iCountNextColumn = 1;\r\n let iCountActiveWidgets = 0;\r\n for (var i = 0; i < this.state.widgets.length; i++) {\r\n let stateLookup = this.state.widgets[i].toggle;\r\n let pushFunction = this.state.widgets[i].functionName;\r\n let selectedColumn = this.state.widgets[i].widgetColumn === 0 ? iCountNextColumn : this.state.widgets[i].widgetColumn;\r\n if (this.state[stateLookup] === true) {\r\n iCountActiveWidgets += 1;\r\n columnObj['column' + selectedColumn].push(pushFunction());\r\n if (iCountActiveWidgets % 2 === 0)\r\n iCountNextColumn = 1;\r\n else\r\n iCountNextColumn += 1;\r\n\r\n }\r\n }\r\n let columnWidgets = columnObj.column1.map((f) => {\r\n return f;\r\n });\r\n let column1 = (\r\n
    \r\n {columnWidgets}\r\n
    \r\n );\r\n columnWidgets = [];\r\n columnWidgets = columnObj.column2.map((f) => {\r\n return f;\r\n });\r\n let column2 = (\r\n
    \r\n {columnWidgets}\r\n
    \r\n );\r\n\r\n //call logs must take the entirety of the 3rd column. no other widget can be rendered there:\r\n let column3 = (\r\n
    \r\n {this.state.showCallLogs === true ? this.callLogs() : null}\r\n
    \r\n );\r\n\r\n return (\r\n
    \r\n {/* */}\r\n \r\n {column1}\r\n {column2}\r\n {column3}\r\n \r\n
    \r\n );\r\n }\r\n\r\n render() {\r\n let isLoading = this.state.serviceLoading;\r\n\r\n \r\n \r\n if (isLoading === false){\r\n if(this.state.AccountNumber === undefined && this.state.DirectoryNumber === undefined && this.state.ServiceNumber === undefined)\r\n {\r\n return
    No Service associated with User. Please select a Menu item on the left
    \r\n }else{\r\n return this.renderColumns();\r\n }\r\n }\r\n \r\n else\r\n return \r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n let showEnterpriseContacts = false;\r\n if (state.reducer.PBXUserID && state.reducer.PBXUserID.length > 0 && state.reducer.isSelectedServiceIpTrunking.toString().toLowerCase() === 'false'\r\n && sessionStorage.IsWholesale.toString().toLowerCase() === 'true')\r\n showEnterpriseContacts = true;\r\n return {\r\n serviceLoading: state.reducer.serviceLoading,\r\n ServiceNumber: state.reducer.ServiceNumber,\r\n PBXUserID: state.reducer.PBXUserID,\r\n AccountNumber: state.reducer.AccountNumber,\r\n DirectoryNumber: state.reducer.DirectoryNumber,\r\n Extension: state.reducer.Extension,\r\n showVoicemail: state.reducer.isSelectedServiceIpTrunking === true ? false : true,\r\n showBasicFeatures: state.reducer.isSelectedServiceIpTrunking === true ? false : true,\r\n showEnterpriseContacts: showEnterpriseContacts\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(Dashboard);","import React, { Component, Fragment } from 'react';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\n\r\n\r\nexport default class VoiceUserSettings extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n Settings: null,\r\n SettingsCopy: null,\r\n Loading: false,\r\n VoipSwitch: sessionStorage.VoipSwitch,\r\n showConfirmModal: false,\r\n ErrorMsg: \"\",\r\n displayCallRecordingConnectField: null\r\n };\r\n }\r\n\r\n openModal = async () => {\r\n await this.setState({ showConfirmModal: true, Loading: true });\r\n this.fetchDataForModalvalues();\r\n }\r\n\r\n closeModal = async () => {\r\n await this.setState({ showConfirmModal: false, ErrorMsg: \"\" });\r\n this.props.RefreshDataSource();\r\n }\r\n\r\n fetchDataForModalvalues = async () => {\r\n let requests = [this.fetchCallRecordingSettings(), this.fetchCallRecordingValue()];\r\n return await Promise.all(requests).then(dataArray => dataArray).catch(err => console.error(err));\r\n }\r\n\r\n fetchCallRecordingValue = async () => {\r\n await apiCalls.fetchData(`admin/HasCallRecording?PBXUserId=${this.props.UserId}`).then(data => {\r\n let copy = JSON.parse(JSON.stringify(data.HasCallRecordingService));\r\n this.setState({\r\n displayCallRecordingConnectField: data.HasCallRecordingService,\r\n og_displayCallRecordingConnectField: copy\r\n });\r\n }).catch((err) => console.error(err));\r\n }\r\n\r\n fetchCallRecordingSettings = async () => {\r\n let path = 'admin/UserCallRecordingGet?switchName=' + this.state.VoipSwitch + '&userId=' + this.props.UserId;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n //console.log('Data', data);\r\n let copy = JSON.parse(JSON.stringify(data));\r\n this.setState({\r\n Settings: data,\r\n SettingsCopy: copy,\r\n Loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n Settings: null,\r\n SettingsCopy: null,\r\n Loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n sumbitVoiceSettings = async () => {\r\n await this.setState({ Loading: true });\r\n let path = 'admin/UserCallRecordingModify';\r\n this.state.Settings.pauseResumeNotificationField = parseInt(this.state.Settings.pauseResumeNotificationField)\r\n this.state.Settings.recordCallRepeatWarningToneTimerSecondsField = parseInt(this.state.Settings.recordCallRepeatWarningToneTimerSecondsField)\r\n this.state.Settings.recordingOptionField = parseInt(this.state.Settings.recordingOptionField)\r\n let recordingSetting;\r\n if (this.state.Settings.recordingOptionField === 0) {\r\n recordingSetting = 'ALWAYS';\r\n } else if (this.state.Settings.recordingOptionField === 1) {\r\n recordingSetting = 'NEVER';\r\n } else if (this.state.Settings.recordingOptionField === 2) {\r\n recordingSetting = 'ON-DEMAND';\r\n } else if (this.state.Settings.recordingOptionField === 3) {\r\n recordingSetting = 'ALWAYS-PR';\r\n } else {\r\n recordingSetting = 'ON-DEMAND-UIS';\r\n }\r\n let dto = {\r\n UserName: sessionStorage.username,\r\n VoipSwitch: this.state.VoipSwitch,\r\n Extension: this.props.UserId,\r\n Entity: this.state.Settings,\r\n RecordingSetting: recordingSetting,\r\n }\r\n\r\n let DisplayCallRecordingConnectFieldDTO = {\r\n AccessToCallRecording: this.state.displayCallRecordingConnectField,\r\n PBXUserId: this.props.UserId,\r\n }\r\n //console.log(\"DTO\", dto);\r\n let response = await apiCalls.post(path, \"POST\", JSON.stringify(dto)).then(data => data).catch(err => console.error(err));\r\n //let permissionResponse = await apiCalls.post(\"/admin/UpdateCallRecordingPermission\", \"POST\", JSON.stringify(DisplayCallRecordingConnectFieldDTO)).then(data => data).catch(err => console.error(err));\r\n if (response) {\r\n // if User Settings receives a response\r\n // compare original setting to user selection to limit API calls\r\n if (this.state.displayCallRecordingConnectField !== this.state.og_displayCallRecordingConnectField) {\r\n await apiCalls.post(\"/admin/UpdateCallRecordingPermission\", \"POST\", JSON.stringify(DisplayCallRecordingConnectFieldDTO)).then(data => data).catch(err => console.error(err));\r\n }\r\n if (response.ok) {\r\n await this.setState({\r\n Failed: false,\r\n ErrorMsg: \"Success!\"\r\n });\r\n } else {\r\n // Specific error message for invalid recordCallRepeatWarningToneTimerSecondsField\r\n if (parseInt(this.state.Settings.recordCallRepeatWarningToneTimerSecondsField) < 10 || parseInt(this.state.Settings.recordCallRepeatWarningToneTimerSecondsField) > 1800) {\r\n await this.setState({\r\n Failed: true,\r\n ErrorMsg: \"Error: Invaliad Repeat Record Call Warning Tone Timer: Value must be >= 10 and <= 1800\"\r\n });\r\n } else {\r\n await this.setState({\r\n Failed: true,\r\n ErrorMsg: response.message\r\n });\r\n }\r\n }\r\n this.fetchCallRecordingSettings();\r\n }\r\n }\r\n\r\n dataRow = (label, field) => {\r\n return (\r\n
    \r\n \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n recordRadioDataField = (val, key, type = \"radio\") => {\r\n return (\r\n
    \r\n this.handleInputChange(e, key, type)}\r\n />\r\n
    \r\n this.handleInputChange(e, key, type)}\r\n />\r\n
    \r\n this.handleInputChange(e, key, type)}\r\n />\r\n
    \r\n this.handleInputChange(e, key, type)}\r\n />\r\n
    \r\n this.handleInputChange(e, key, type)}\r\n />\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n pauseResumeRadioDataField = (val, key, type = \"radio\") => {\r\n return (\r\n
    \r\n this.handleInputChange(e, key, type)}\r\n />\r\n
    \r\n this.handleInputChange(e, key, type)}\r\n />\r\n
    \r\n this.handleInputChange(e, key, type)}\r\n />\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n inputDataField = (val, key, type = 'text') => {\r\n if (type === \"text\" || type === \"number\") {\r\n return (\r\n this.handleInputChange(e, key, type)}\r\n />\r\n )\r\n } else {\r\n return (\r\n this.handleInputChange(e, key, type)}\r\n //disabled={readOnly === true ? true : false}\r\n />\r\n )\r\n }\r\n }\r\n\r\n callWarningTone = (enableTone, secondsTone) => {\r\n return (\r\n \r\n {this.inputDataField(enableTone, \"enableRecordCallRepeatWarningToneField\", \"checkbox\")}\r\n   \r\n {/* {this.inputDataField(secondsTone, \"recordCallRepeatWarningToneTimerSecondsField\", \"number\")} */}\r\n this.handleInputChange(e, \"recordCallRepeatWarningToneTimerSecondsField\", \"number\")}\r\n />\r\n \r\n )\r\n }\r\n\r\n handleInputChange = async (e, key, type = 'text') => {\r\n let value = type === 'checkbox' ? e.target.checked : e.target.value;\r\n //console.log(\"EVENT VALUE\", value);\r\n let Settings = { ...this.state.Settings };\r\n if (key === \"displayCallRecordingConnectField\") {\r\n this.setState({ displayCallRecordingConnectField: value })\r\n }\r\n Settings[key] = value;\r\n await this.setState({ Settings });\r\n }\r\n\r\n formButtons = () => {\r\n let {\r\n enableCallRecordingAnnouncementField,\r\n enableRecordCallRepeatWarningToneField,\r\n enableVoiceMailRecordingField,\r\n pauseResumeNotificationField,\r\n recordCallRepeatWarningToneTimerSecondsField,\r\n recordingOptionField,\r\n displayCallRecordingConnectField\r\n } = this.state.Settings;\r\n return (\r\n
    \r\n \r\n Cancel\r\n
    \r\n )\r\n }\r\n\r\n modalBody = () => {\r\n if (!this.state.Loading) {\r\n if (this.state.Settings && this.state.Settings !== null) {\r\n let {\r\n PropertyChanged,\r\n enableCallRecordingAnnouncementField,\r\n enableRecordCallRepeatWarningToneField,\r\n enableVoiceMailRecordingField,\r\n pauseResumeNotificationField,\r\n recordCallRepeatWarningToneTimerSecondsField,\r\n recordingOptionField,\r\n isVoiceMessagingAssignedField,\r\n displayCallRecordingConnectField\r\n } = this.state.Settings;\r\n const isVoiceMessagingAssigned = this.state.Settings.isVoiceMessagingAssignedField\r\n return (\r\n
    \r\n
    Record Call:
    \r\n {this.dataRow(\"\", this.recordRadioDataField(recordingOptionField.toString(), \"recordingOptionField\"))}\r\n {this.dataRow(\"Play Call Recording Start/Stop Announcement\", this.inputDataField(enableCallRecordingAnnouncementField, \"enableCallRecordingAnnouncementField\", \"checkbox\"))}\r\n {isVoiceMessagingAssigned === false ? null : (this.dataRow(\"Record Voice Messaging\", this.inputDataField(enableVoiceMailRecordingField, \"enableVoiceMailRecordingField\", \"checkbox\")))}\r\n
    Pause / Resume Notification:
    \r\n {this.dataRow(\"\", this.pauseResumeRadioDataField(pauseResumeNotificationField.toString(), \"pauseResumeNotificationField\"))}\r\n
    Recording Notification:
    \r\n {this.dataRow(\"Repeat Call Record Warning Tone\", this.callWarningTone(enableRecordCallRepeatWarningToneField, recordCallRepeatWarningToneTimerSecondsField))}seconds\r\n {/*

    \"enter amount between 10 seconds and 1800 seconds\"

    */}\r\n {\"* Repeat Record Call Warning Tone Timer: Value must be >= 10 and <= 1800\"}\r\n {sessionStorage.hasCallRecordingMenu === 'true'\r\n ? (this.dataRow(\"Display Call Recording Connect Access Link in User Dashboard\", this.inputDataField(this.state.displayCallRecordingConnectField, \"displayCallRecordingConnectField\", \"checkbox\")))\r\n : null}\r\n
    \r\n {this.formButtons()}\r\n
    \r\n )\r\n } else {\r\n return (\r\n

    No Available Data

    \r\n )\r\n }\r\n } else {\r\n return
    \r\n \r\n
    \r\n }\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ showConfirmModal: false });\r\n this.props.RefreshDataSource();\r\n }\r\n\r\n cardContent = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Edit {this.props.UserName}\r\n \r\n {this.modalBody()}\r\n {this.state.Loading ? null : \r\n
    \r\n {this.state.ErrorMsg}

    \r\n
    \r\n
    }\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n return this.cardContent();\r\n };\r\n}","import React, { Component } from 'react';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport EllipsisWithTooltip from 'react-ellipsis-with-tooltip';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport VoiceUserSettings from './voiceUserSettings';\r\nimport * as settings from '../../scripts/settings';\r\n\r\nexport default class CallRecordingUsers extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n UsersList: this.props.UsersList,\r\n FullListings: this.props.FullListings,\r\n Sort: [{ field: \"UserName\", dir: \"asc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n };\r\n const RefreshDataSource = this.RefreshDataSource.bind(this);\r\n\r\n class LinkCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n let { MiaRecUser } = this.props.dataItem;\r\n const MIAREC_DOMAIN = process.env.REACT_APP_CALL_RECORDING_ENV;//'callrecbeta.momentumtelecom.com';\r\n const EMULATE_USER_ID = MiaRecUser;//'90b664cc-b71a-11eb-8c13-005056a8496e';\r\n\r\n const MiaRecLoginUrl = 'https://' + MIAREC_DOMAIN + '/SAML/Login';\r\n const MiaRecEmulationURL = '/impersonate/' + EMULATE_USER_ID;//'/admin/users/' + EMULATE_USER_ID + '/impersonate';//'https://' + MIAREC_DOMAIN + '/admin/users/' + EMULATE_USER_ID + '/impersonate';\r\n\r\n const EmulationRedirectURL = MiaRecLoginUrl + '?came_from=' + encodeURIComponent(MiaRecEmulationURL);\r\n //console.log(\"EmulationRedirectURL\", EmulationRedirectURL);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n class VoiceSettings extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n\r\n }\r\n\r\n render() {\r\n let { Extension, UserName } = this.props.dataItem;\r\n if (Extension && Extension !== \"\") {\r\n return (\r\n \r\n \r\n \r\n )\r\n } else return \r\n }\r\n }\r\n this.LinkCell = LinkCell;\r\n this.VoiceSettings = VoiceSettings;\r\n }\r\n\r\n componentDidMount() {\r\n // load in datasource\r\n }\r\n\r\n RefreshDataSource = () => {\r\n this.props.RefreshDataSource();\r\n }\r\n\r\n gridContent = () => {\r\n let { Sort, UsersList } = this.state;\r\n // if (!loading) {\r\n if (UsersList && UsersList.length > 0) {\r\n return (\r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n } else {\r\n return

    No Available Data

    \r\n }\r\n // } else {\r\n // return \r\n // }\r\n }\r\n\r\n editGridHeader = (title) => {\r\n return (\r\n {title}\r\n )\r\n };\r\n\r\n handleSortChange = async (e) => {\r\n await this.setState({\r\n UsersList: orderBy(this.state.UsersList, e.sort),\r\n Sort: e.sort\r\n });\r\n }\r\n\r\n handleFilterChange = async (event) => {\r\n await this.setState({\r\n filter: event.filter\r\n });\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullListings;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'UserName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'TenantName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'GroupName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Extension', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n this.delayedSearch(services);\r\n }\r\n else {\r\n this.delayedSearch(fullDetails);\r\n }\r\n }\r\n\r\n delayedSearch = async (services) => {\r\n await this.setState({ loading: true });\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.setState({ UsersList: services, loading: false });\r\n }, settings.searchDelay);\r\n }\r\n\r\n cardContent = () => {\r\n if (!this.state.Loading) {\r\n if (this.state.UsersList && this.state.UsersList.length > 0) {\r\n return this.gridContent()\r\n } else {\r\n return (\r\n

    No Available Data

    \r\n )\r\n }\r\n } else {\r\n return
    \r\n \r\n
    \r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    { e.preventDefault() }}>\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n )\r\n };\r\n}","import React, { Component, Fragment } from 'react';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport CallRecordingUsers from './callRecordingUsers';\r\nimport VoiceUserSettings from './voiceUserSettings';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { userIsAdmin, } from '../../scripts/helper';\r\n\r\nexport default class CallRecordingMain extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n loading: false,\r\n tab: \"users\",\r\n UsersList: [],\r\n FullListings: [],\r\n Settings: null,\r\n }\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchUserLists();\r\n this.fetchCallRecordingUrl();\r\n }\r\n\r\n fetchCallRecordingUrl = async () => {\r\n await this.setState({ loading: true });\r\n let path = 'admin/GetCallRecordingUrl';\r\n await apiCalls.fetchData(path).then((data) => {\r\n if (data) {\r\n this.setState({\r\n Link: data[0].ApplicationURL,\r\n });\r\n } else {\r\n this.setState({\r\n Link: 'https://' + process.env.REACT_APP_CALL_RECORDING_ENV + '/SAML/Login' + '?came_from=%2Fdashboard',\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchUserLists = async () => {\r\n await this.setState({ loading: true });\r\n let path = 'admin/UserCallRecordingList';\r\n await apiCalls.fetchData(path).then((data) => {\r\n if (data) {\r\n let copy = JSON.parse(JSON.stringify(data));\r\n this.setState({\r\n UsersList: data,\r\n FullListings: copy,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n UsersList: [],\r\n FullListings: [],\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n tabDisplay = () => {\r\n return (\r\n
    \r\n this.changeTab('users')}\r\n >\r\n Call Recording Users\r\n \r\n this.changeTab('settings')}\r\n >\r\n Voice User Settings\r\n \r\n
    \r\n );\r\n };\r\n\r\n changeTab = (tabName) => {\r\n this.setState({ tab: tabName })\r\n }\r\n\r\n getTab() {\r\n let { tab, loading, UsersList, FullListings } = this.state;\r\n switch (tab) {\r\n case \"users\":\r\n return ;\r\n // case \"settings\":\r\n // return ;\r\n default:\r\n console.log(\"Sorry there isn't a tab named \" + tab + \".\");\r\n }\r\n }\r\n\r\n cardContent = () => {\r\n if (!this.state.loading) {\r\n return (\r\n \r\n
    \r\n
    \r\n {this.getTab()}\r\n
    \r\n
    \r\n
    \r\n )\r\n } else {\r\n return
    \r\n \r\n
    \r\n }\r\n }\r\n\r\n render() {\r\n // let MIAREC_DOMAIN = process.env.REACT_APP_CALL_RECORDING_ENV;\r\n // let link = 'https://' + MIAREC_DOMAIN + '/SAML/Login' + '?came_from=%2Fdashboard';\r\n //console.log(\"DASH LINK\", link);\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Call Recording

    \r\n
    \r\n {!sessionStorage.emulatedUser || sessionStorage.emulatedUser == false ?
    \r\n Admin Dashboard\r\n
    : null}\r\n {/* {this.tabDisplay()} */}\r\n {this.cardContent()}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React from \"react\";\r\n// https://icons.getbootstrap.com/\r\n\r\nexport const dashboard = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const locations = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const servicesAndUsers = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const devices = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const trunking = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const enterpriseSettings = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const contactCenter = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const billing = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const star = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const historyBtn = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const ticketing = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const documents = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const addressBook = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const entTrunk = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const msTeams = \r\n \r\n\r\n\r\nexport const callRecording = \r\n \r\n\r\n\r\nexport const webex = \r\n \r\n \r\n\r\n\r\nexport const circuits = (\r\n \r\n \r\n \r\n);\r\n\r\nexport const circuitsMap = \r\n\r\n\r\n\r\nexport const mfa = \r\n \r\n\r\n\r\nexport const ekg = (\r\n \r\n \r\n \r\n);","import React from 'react';\r\nimport { GridCell } from '@progress/kendo-react-grid';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { userHasNoServices } from './../scripts/helper';\r\nimport * as settings from './../scripts/settings';\r\nimport EllipsisWithTooltip from 'react-ellipsis-with-tooltip';\r\n\r\nclass ServiceSelector extends GridCell {\r\n\r\n\t constructor() {\r\n super();\r\n this.setServiceAndRedirect = this.setServiceAndRedirect.bind(this);\r\n }\r\n\r\n setServiceAndRedirect = (service) => {\r\n settings.selectService(service.UserId, service.ServiceNumber, service.PBXUserID, service.Extension);\r\n this.props.history.push('/dashboard');\r\n //this.props.history.push('/profile/' + service.ServiceNumber)\r\n }\r\n\r\n serviceNumberValue = (service) => {\r\n if (userHasNoServices(service)) {\r\n return service.Username || service.PackageName;\r\n } else {\r\n return service.ServiceNumber;\r\n }\r\n }\r\n\r\n render() {\r\n let service = this.props.dataItem;\r\n var fieldValue = ''\r\n if (this.props.field === 'ServiceNumber') {\r\n \tfieldValue = this.serviceNumberValue(service);\r\n } else if (this.props.field === 'Extension') {\r\n\t fieldValue = service.Extension;\r\n } else {\r\n \tvar error = 'field name not recognized';\r\n \tconsole.log(error);\r\n \t// throw error;\r\n }\r\n if (service.ServiceId && service.ServiceId !== 0 && service.UserId && service.HasProfile) {\r\n return (\r\n \r\n {/* store UserId of selected service in redux store */}\r\n \r\n this.setServiceAndRedirect(service)} >\r\n {fieldValue}\r\n \r\n \r\n \r\n )\r\n } else return {fieldValue}\r\n }\r\n}\r\n\r\nexport default withRouter(ServiceSelector);","import React, { Component } from 'react';\nimport { DataLoadingSpinner } from './spinners';\nimport { fetchData } from './../requests/api_calls';\nimport * as config from '../requests/config';\n\nclass DeviceStatuses extends Component {\n\n constructor(props) {\n super(props);\n this.state = {loading: props.loading, Services: props.Services};\n }\n\n componentWillReceiveProps(nextProps) {\n this.setState({loading: false});\n }\n\n realtimeRegistrationStatus = () => {\n if (this.state.loading) {\n return \n } else return {this.props.updated}\n }\n\n updateStatus = () => {\n this.setState({loading: true}, this.props.checkRegistration())\n }\n\n exportBtn = () => {\n if ( this.props.Services !== undefined) {\n return (\n \n )\n } else return null;\n }\n\n exportUsers = () => {\n this.refs.downloadCsv.submit();\n this.refs.exportBtn.text = 'Downloading...';\n setTimeout(() => { \n this.refs.exportBtn.text = 'Export Users';\n }, 2000);\n }\n\n deviceStatus = () => {\n if (this.props.updated) {\n return (\n
    \n {this.realtimeRegistrationStatus()}\n Update\n
    \n )\n } else if (this.state && this.state.loading) {\n return (\n
    \n \n Update\n
    \n )\n } else return Check Registration Status\n }\n\n render() {\n return (\n
    \n
    \n {this.deviceStatus()}\n
    \n
    \n {this.exportBtn()}\n
    \n
    \n )\n }\n}\n\nexport default DeviceStatuses;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\n// \r\n\r\nclass ServicesChangePasswordModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n Change Password / Pin\r\n \r\n \r\n

    Click the Reset button below to temporarily reset your Voicemail PIN to 8642. When you access your voicemail with this temporary PIN, you will be prompted to assign a new PIN.

    \r\n Reset Voicemail Pin\r\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 ServicesChangePasswordModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\n// \r\n\r\nclass ServicesResetSettingsModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n Are you sure you want to reset the service settings back to default for this user?\r\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 ServicesResetSettingsModal;\r\n","export const serviceFilters = {\n USER_FAV: 'USER_FAVORITE',\n DEVICE_REGISTERED: 'DEVICE_REGISTERED',\n DEVICE_UNREGISTERED: 'DEVICE_UNREGISTERED',\n DEVICE_ASSIGNED: 'DEVICE_ASSIGNED',\n DEVICE_UNASSIGNED: 'DEVICE_UNASSIGNED',\n UNASSIGNED: 'DEVICE_UNASSIGNED',\n ALL_SERVICES_USERS: 'ALL_SERVICES_USERS',\n ALL_SERVICES: 'ALL_SERVICES',\n ALL_USERS: 'ALL_USERS',\n IP_TRUNK_ASSIGNED_DID: 'IP_TRUNK_ASSIGNED_DID'\n}\n\n// export const ticketingFilters = {\n// ESCALATED: 'ESCALATED',\n// PENDING_CUSTOMER: 'PENDING_CUSTOMER',\n// RECENT_CLOSED: 'RECENT_CLOSED',\n// RECENT_UPDATED: 'RECENT_UPDATED',\n// USER_FAV: 'USER_FAVORITE',\n\n// }\n\nexport const filterLabel = (filter, TrunkGroupId = '') => {\n switch (filter) {\n case serviceFilters.REGISTERED:\n return 'devices registered';\n case serviceFilters.UNREGISTERED:\n return 'devices unregistered';\n case serviceFilters.ASSIGNED:\n return 'devices provisioned';\n case serviceFilters.ALL_SERVICES_USERS:\n return 'all services and users';\n case serviceFilters.ALL_SERVICES:\n return 'all services';\n case serviceFilters.ALL_USERS:\n return 'all users';\n case serviceFilters.IP_TRUNK_ASSIGNED_DID:\n return sessionStorage.AssignedDIDTrunkID ? 'Assigned DIDs to IP Trunk Group ' + sessionStorage.AssignedDIDTrunkID : 'Assigned DIDs to Trunk Groups';\n // case ticketingFilters.ESCALATED:\n // return 'escalated tickets';\n // case ticketingFilters.PENDING_CUSTOMER:\n // return 'pending customer tickets';\n // case ticketingFilters.RECENT_CLOSED:\n // return 'recently closed tickets';\n // case ticketingFilters.RECENT_UPDATED:\n // return 'recently updated tickets';\n // case ticketingFilters.USER_FAV:\n // return 'starred tickets';\n default:\n return filter;\n }\n}\n\n\nexport const filterList = (filters) => {\n return filters.map(filter => {\n if (filter !== '')\n return filterLabel(filter)\n }).join(', ')\n ;\n}\n","import React, { Component } from 'react';\r\nimport ReactDOMServer from 'react-dom/server';\r\nimport { Link, withRouter, BrowserRouter } from 'react-router-dom';\r\nimport '@progress/kendo-ui';\r\nimport { fetchData } from './../requests/api_calls';\r\nimport { DataLoadingSpinner } from './spinners';\r\nimport Popup from \"reactjs-popup\";\r\nimport { Grid, GridCell, GridColumn as Column } from '@progress/kendo-react-grid';\r\nimport * as helper from './../scripts/helper';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\n\r\nclass ServiceMACClickPop extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n MACListings: [],\r\n ServiceId: this.props.ServiceId,\r\n loading: true,\r\n popupHeight: 100 + (40 * this.props.DevCount) > 500 ? 500 : 100 + (40 * this.props.DevCount),\r\n sort: [{field: \"MAC\", dir: \"asc\"}],\r\n };\r\n\r\n this.sortChange = this.sortChange.bind(this);\r\n this.sortServices = this.sortServices.bind(this);\r\n\r\n class MacAddressCell extends GridCell {\r\n render() {\r\n let service = this.props.dataItem;\r\n let fieldClass = service.DevRegistered ? 'text-success' : 'text-danger';\r\n return {service.MAC}\r\n }\r\n }\r\n \r\n class EditBtn extends GridCell {\r\n render() {\r\n let path = {pathname: '/services', searchTerm: this.props.dataItem.UserId}\r\n return (\r\n \r\n Service\r\n \r\n )\r\n }\r\n }\r\n\r\n this.macAddressCell = MacAddressCell;\r\n this.editBtn = EditBtn;\r\n }\r\n\r\n showMacs = () => {\r\n this.setState({loading: true});\r\n fetchData('admin/GetServiceMacList?ServiceId=' + this.props.ServiceId).then(data => {\r\n if(data && data.length > 0) {\r\n let macListings = [];\r\n data.map((mac, index) => {\r\n macListings.push(mac);\r\n });\r\n let sortedData = this.sortServices(this.state.sort, macListings);\r\n this.setState({MACListings: sortedData, loading: false});\r\n }\r\n });\r\n }\r\n\r\n sortServices(sort, MACListings = null) {\r\n if (MACListings == null) MACListings = this.state.MACListings.slice();\r\n let sortedSet = orderBy(MACListings, sort);\r\n if (sort.length) {\r\n return helper.blanksAfterZ(sortedSet, sort);\r\n } else {\r\n return sortedSet;\r\n }\r\n }\r\n \r\n sortChange(event) {\r\n this.setState({\r\n MACListings: this.sortServices(event.sort),\r\n sort: event.sort\r\n });\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n return (\r\n \r\n

    MAC Addresses:

    \r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n (\r\n { this.props.MAC }\r\n )}\r\n onOpen={this.showMacs}\r\n position=\"bottom center\"\r\n closeOnDocumentClick\r\n contentStyle={{padding: '20px', border: 'unset', width: '350px', height: this.state.popupHeight + 'px'}}\r\n >\r\n {this.gridContent()} \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default ServiceMACClickPop;","import React from 'react';\r\nimport { GridCell } from '@progress/kendo-react-grid';\r\nimport ServiceMACClickPop from './../components/ServiceMACClickPop';\r\nimport EllipsisWithTooltip from 'react-ellipsis-with-tooltip';\r\n\r\nclass MacAddressCell extends GridCell {\r\n render() {\r\n let service = this.props.dataItem;\r\n if (service.DevCount > 1) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n } else {\r\n let fieldClass = service.DevRegistered ? 'text-success' : 'text-danger';\r\n return {service.MAC}\r\n }\r\n }\r\n }\r\n\r\n export default MacAddressCell;","import React, { Component, Fragment } from 'react';\nimport * as settings from './../scripts/settings';\nimport * as helper from './../scripts/helper';\nimport moment from 'moment';\nimport * as icons from './../scripts/icons';\nimport * as apiCalls from './../requests/api_calls';\nimport { withRouter, Link } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { DataLoadingSpinner } from './../components/spinners';\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\nimport { orderBy } from '@progress/kendo-data-query';\nimport { filterBy } from '@progress/kendo-data-query';\nimport serviceSelector from './../components/service_selector';\nimport ServicesChangePasswordModal from './../containers/modals/servicesChangePasswordModal';\nimport ServicesResetSettingsModal from './../containers/modals/servicesResetSettingsModal';\nimport DeviceStatuses from './../components/deviceStatuses';\nimport { filterList } from '../constants/filters.js'\nimport { parse } from 'query-string';\nimport _ from 'lodash';\nimport { headerToolTip } from './../components/ellipsisHeaderTooltip';\nimport MacAddressCell from './../components/macAddressCell';\n\nconst parseViewFilter = (props) => {\n if (props.location.search) {\n return parse(props.location.search).view;\n } else if (props.location.viewFilter) {\n return props.location.viewFilter;\n } else if (props.match.params) {\n return props.match.params.view;\n } else return null;\n}\n\nconst parseServiceIdFile = (props) => {\n if (props.location && props.location.AssignedDIDServiceId)\n return props.location.AssignedDIDServiceId;\n else if (props.match.params) {\n return props.match.params.TrunkGroupServiceId;\n } else return null;\n}\n\nconst paramsSeparator = (apiPath) => apiPath.indexOf('?') >= 0 ? '&' : '?';\n\n//const isFirstFilter = (filter, filters) => filters.indexOf(filter) === 0;\n\n// class SettingsButtons extends GridCell {\n\n// render() {\n// return (\n// \n// \n// \n// \n// );\n// }\n// }\n\nclass Services extends Component {\n\n initialState = (props) => { // RESTORE once CM5469 is done\n let returnState = {\n filter: { logic: \"and\", filters: [] },\n locationAddress: props.locationAddress || null,\n searchTerm: props.location.searchTerm || null,\n serviceUserFilter: props.location ? props.location.serviceUserFilter : null,\n locationAccFilter: props.match.params ? props.match.params.LocationAccountNumber : null,\n viewFilter: parseViewFilter(props),\n useFilter: true,\n deviceCount: props.location ? props.location.deviceCount : null,\n services: [],\n isTogglingStatus: false,\n sort: [{ field: \"LastName\", dir: \"asc\" }, { field: \"FirstName\", dir: \"asc\"}, { field: \"ServiceNumber\", dir: \"asc\"}, {field: \"Extension\", dir: \"asc\"}],\n skip: 0,\n gridHeight: (window.innerHeight - 180),\n AssignedDIDServiceId: parseServiceIdFile(props)\n }\n\n if (returnState.AssignedDIDServiceId && returnState.AssignedDIDServiceId > 0)\n returnState.serviceUserFilter = 'IP_TRUNK_ASSIGNED_DID'\n\n return returnState;\n }\n\n constructor(props) {\n super(props);\n this.state = this.initialState(props);\n this.fetchServices = this.fetchServices.bind(this);\n this.searchServices = this.searchServices.bind(this);\n this.filterChange = this.filterChange.bind(this);\n this.filterServices = this.filterServices.bind(this);\n this.sortChange = this.sortChange.bind(this);\n this.pageChange = this.pageChange.bind(this);\n this.clearFilter = this.clearFilter.bind(this);\n const starAlt = this.starAlt.bind(this);\n const starClass = this.starClass.bind(this);\n const toggleFavoriteStatus = this.toggleFavoriteStatus.bind(this);\n const handleEnter = this.handleEnter;\n\n class FavoriteButton extends GridCell {\n\n render() {\n // passing data item based on example from Kendo UI example\n // https://www.telerik.com/kendo-react-ui/components/grid/editing/editing\n let service = this.props.dataItem;\n let cannotFavorite = (service.ServiceId === 0 || service.ServiceId === \"\") && service.Extension === \"\";\n if (cannotFavorite) {\n return \n } else {\n const cursorType = service.isToggingStatus ? 'wait' : 'pointer';\n return (\n \n toggleFavoriteStatus(service)} >\n handleEnter(e, service)} alt={starAlt(service)}>\n \n \n \n \n )\n }\n }\n }\n this.favBtn = FavoriteButton;\n\n\n //this.macAddressCell = MacAddressCell;\n\n class ServiceTypeCell extends GridCell {\n render() {\n const { dataItem } = this.props;\n\n if ((!dataItem.LocationAccountNumber || !dataItem.ServiceNumber) ||\n (dataItem.ServiceType !== 'Audio Conferencing')) {\n return {dataItem.ServiceType};\n }\n if (dataItem.ServiceType === 'Collaborate Bridge') {\n const collabPath = `/iframe_page/MSP_SUBSCRIBER&locationID=${dataItem.LocationAccountNumber}&mode=collaborate_bridge&tn=${dataItem.ServiceNumber}`;\n return (\n \n {dataItem.ServiceType}\n \n )\n }\n const path = `/iframe_page/MSP_GROUP&locationID=${dataItem.LocationAccountNumber}&mode=conference_bridge&tn=${dataItem.ServiceNumber}`;\n return (\n \n {dataItem.ServiceType}\n \n )\n }\n }\n this.serviceTypeCell = ServiceTypeCell;\n }\n\n handleResize = () => this.setState({\n gridHeight: (window.innerHeight - 180)\n });\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleResize)\n }\n\n componentDidMount() {\n this.handleResize();\n window.addEventListener('resize', this.handleResize)\n this.fetchServices();\n }\n\n componentWillReceiveProps(nextProps) { //RESTORE ONCE CM5469 IS DONE\n let newApiParams = this.newLocationParams(nextProps) || this.newSearchTermParams(nextProps);\n if (newApiParams) {\n this.fetchServices('admin/Services?' + newApiParams);\n } else if (!this.state.AssignedDIDTrunkID && !this.state.locationAccFilter) {\n this.fetchServices('admin/Services');\n }\n }\n\n newLocationParams = (nextProps) => {\n let newLocation = nextProps.location.LocationAccountNumber;\n let prevLocation = this.props.LocationAccountNumber;\n if (newLocation && newLocation !== prevLocation) {\n return 'LocationAccountNumber=' + newLocation;\n } else return null;\n }\n\n newSearchTermParams = (nextProps) => {\n let newSearchTerm = nextProps.location.searchTerm;\n let prevSearchTerm = this.state.searchTerm;\n if (newSearchTerm && newSearchTerm !== prevSearchTerm) {\n this.setState({ searchTerm: newSearchTerm });\n return 'term=' + nextProps.location.searchTerm;\n } else return null;\n }\n\n filteredGridContent = async (data) => {\n let { serviceUserFilter } = this.state;\n if (data && serviceUserFilter === 'IP_TRUNK_ASSIGNED_DID' && sessionStorage.AssignedDIDTrunkID) {\n let didArr = data.filter(res => res.ServiceType === 'DID' || res.ServiceType === 'E911 DID');\n return didArr;\n } else return data;\n }\n\n fetchServices = (apiPath = null) => {\n if (!apiPath) apiPath = this.apiPathWithParams();\n this.setState({ loading: true });\n apiCalls.fetchData(apiPath).then(async (data) => {\n if (data !== null) {\n let filteredData = await this.filteredGridContent(data);\n this.setState({\n loading: false,\n services: this.revisedData(filteredData),\n resultsMsg: null\n });\n } else if (data === null) {\n this.setState({ services: [], loading: false, resultsMsg: settings.noResultsMsg });\n };\n });\n }\n\n apiPathWithParams = () => {\n let state = this.state;\n let path = 'admin/Services';\n if (state.locationAccFilter) path += '?LocationAccountNumber=' + state.locationAccFilter;\n if (state.viewFilter) path += paramsSeparator(path) + 'view=' + state.viewFilter;\n if (state.searchTerm) path += paramsSeparator(path) + 'term=' + state.searchTerm;\n if (state.serviceUserFilter) path += paramsSeparator(path) + 'filter=' + state.serviceUserFilter;\n if (state.AssignedDIDServiceId && state.AssignedDIDServiceId > 0) { //RESTORE AFTER CM5469 IS DONE\n path+= paramsSeparator(path) + 'IPTrunkGroupServiceId=' + state.AssignedDIDServiceId;\n\n }\n\n return path;\n }\n\n revisedData = (data) => {\n let sortedData = this.sortServices(this.state.sort, this.replacedValues(data))\n let favs = sortedData.filter(service => service.IsFav);\n let nonFavs = sortedData.filter(service => service.IsFav === false);\n return favs.concat(nonFavs);\n }\n\n replacedValues = (data) => {\n return data.map((service) => {\n if (helper.userHasNoServices(service)) {\n return Object.assign({}, service, {\n isToggingStatus: false,\n ServiceType: service.UserType,\n ServiceNumber: (service.Username || service.PackageName)\n });\n } else {\n return Object.assign({}, service, {\n isToggingStatus: false,\n ServiceNumber: service.ServiceNumber\n });\n }\n });\n }\n\n activeFilters = () => {\n // filter may come from global search, service ID link (Trunking or Locations), or Devices (Manage btn)\n let state = this.state;\n let possibleFilters = [state.locationAccFilter, state.viewFilter, state.serviceUserFilter];\n let filters = possibleFilters.filter((item) => item); // removed empty filters\n if (state.useFilter && filters.length) {\n return (\n \n Filters: {filterList(filters)}\n ×\n \n )\n }\n }\n\n clearFilter = () => {\n this.setState({ useFilter: false, viewFilter: null, locationAccFilter: null, serviceUserFilter: null, searchTerm: null });\n this.fetchServices('admin/Services');\n this.props.history.push('/services');\n }\n\n filterChange(event) {\n let services = this.filterServices(event.filter);\n let resultsMsg = services.length ? null : 'No results found with current filter settings.';\n this.setState({\n services: services,\n filter: event.filter,\n resultsMsg: resultsMsg\n });\n }\n\n searchServices = (event) => {\n let searchText = event.target.value.trim();\n if (searchText !== '') {\n this.setState({ searchTerm: searchText })\n } else {\n this.setState({ searchTerm: null })\n }\n this.delayedSearch();\n }\n\n delayedSearch = () => {\n if (this.timeout) clearTimeout(this.timeout);\n this.timeout = setTimeout(() => this.fetchServices(), settings.searchDelay);\n }\n\n filterServices = (filter) => {\n let services = this.state.services.slice();\n return filterBy(services, filter);\n }\n\n sortServices(sort, services = null) {\n if (services == null) services = this.state.services.slice();\n let sortedSet = orderBy(services, sort);\n if (sort.length) {\n return helper.blanksAfterZ(sortedSet, sort);\n } else {\n return sortedSet;\n }\n }\n\n sortChange(event) {\n this.setState({\n services: this.sortServices(event.sort),\n sort: event.sort\n });\n }\n\n pageChange(event) {\n this.setState({\n services: this.state.services,\n skip: event.page.skip\n });\n }\n\n /****************************************************************************\n * For the alt attribute value. For accessibility, tells what the \n * button will do next when clicked, not the current state.\n * *************************************************************************/\n starAlt = (dataItem) => dataItem.IsFav ? 'unfavorite' : 'favorite';\n\n starClass = (dataItem) => dataItem.IsFav ? 'star' : 'dim-star';\n\n // Used for accessibility standards\n handleEnter = (e, item) => {\n e.preventDefault();\n if (e.keyCode === 13)\n this.toggleFavoriteStatus(item);\n }\n\n toggleFavoriteStatus = async (item) => {\n // post update to API\n let updatedItem = new Object(item);\n updatedItem.isToggingStatus = true;\n await this.replaceServices(updatedItem);\n if (item.IsFav) {\n await this.unfavorite(item);\n } else {\n await this.saveFavorite(item);\n }\n\n }\n\n updateService = (item, newFavServiceId = null) => {\n let newIsFavState = item.IsFav ? false : true;\n let updatedItem = new Object(item);\n updatedItem.IsFav = newIsFavState;\n updatedItem.isToggingStatus = false;\n if (newFavServiceId) updatedItem.FavoriteServiceId = newFavServiceId;\n this.replaceServices(updatedItem);\n }\n\n replaceServices = async (updatedItem) => {\n // replace services array with new array with updated service item\n let newServices = this.state.services.slice();\n let index = _.findIndex(newServices, s => s.ServiceId === updatedItem.ServiceId);\n newServices[index] = updatedItem;\n await this.setState({ services: newServices });\n }\n\n saveFavorite = (item) => {\n apiCalls.saveFavoriteService(item).then((data) => {\n let newFavServiceId = data.FavoriteServiceId;\n this.updateService(item, newFavServiceId);\n }).catch((err) => {\n console.log('error', err);\n });\n }\n\n unfavorite = (item) => {\n apiCalls.unfavoriteService(item).then((data) => {\n // services that are not favorites have 0 for FavoriteServiceId\n let newFavServiceId = 0;\n this.updateService(item, newFavServiceId);\n }).catch((err) => {\n console.log('error', err);\n });\n }\n\n checkRegistration = () => {\n this.setState({ registrationUpdated: false, loading: true });\n let apiPath = 'admin/Services?ForceDeviceRefresh=TRUE';\n apiCalls.fetchData(apiPath).then((data) => {\n if (data !== null) {\n this.setState({\n loading: false,\n registrationUpdated: helper.registrationLastUpdated()\n });\n }\n else {\n this.setState({ loading: false, registrationUpdated: 'Failed to retrieve registration status: ' + moment().format('M-DD-YYYY hh:mm:ss A') })\n }\n });\n }\n\n gridContent = () => {\n if (this.state.loading) {\n return \n } else {\n if (this.state.services && this.state.services.length > 0) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {/* */}\n \n )\n }\n }\n }\n\n resultsMessage = () => {\n if (this.state.resultsMsg) {\n return
    {this.state.resultsMsg}
    \n }\n }\n\n servicesCardInlineStyle = () => {\n // offset by 30 to account for missing table headers\n if (this.state.loading) return { height: this.state.gridHeight + 100 + 'px' }\n }\n\n servicesContent = () => {\n return (\n
    \n
    \n

    Services & Users\n  {this.state.services.length || null} \n \n \n {this.activeFilters()}\n \n \n\n

    \n
    \n
    \n
    { e.preventDefault() }}>\n \n \n \n
    \n
    \n {/* */}\n
    \n \n
    \n
    \n {this.gridContent()}\n {this.resultsMessage()}\n
    \n
    \n )\n }\n\n render() {\n return (\n
    \n
    \n {this.servicesContent()}\n
    \n
    \n )\n }\n\n};\n\nconst mapStateToProps = (state) => {\n return {\n locationAddress: state.reducer.LocationAddress,\n locationAccountNumber: state.reducer.LocationAccountNumber // from location seletion in devices component\n }\n}\n\nexport default connect(mapStateToProps)(withRouter(Services));","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { fetchData } from './../requests/api_calls';\r\nimport { DataLoadingSpinner } from './../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport * as settings from './../scripts/settings';\r\nimport { headerToolTip } from '../components/ellipsisHeaderTooltip';\r\n\r\nclass Services extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n sips: [],\r\n preFilter: props.location.state?props.location.state.preFilter:null,\r\n loading: true,\r\n gridHeight: (window.innerHeight - 210) + 'px'\r\n }\r\n this.fetchSips = this.fetchSips.bind(this);\r\n this.searchSips = this.searchSips.bind(this);\r\n this.sortChange = this.sortChange.bind(this);\r\n this.pageChange = this.pageChange.bind(this);\r\n const setServiceAndRedirect = this.setServiceAndRedirect.bind(this);\r\n\r\n class SelectServiceLink extends GridCell {\r\n render() {\r\n let item = this.props.dataItem;\r\n let textClass = item.PilotRegistered ? 'text-success' : 'text-danger';\r\n if (item.HasProfile) {\r\n return (\r\n \r\n setServiceAndRedirect(item)} >\r\n {item.PilotDID}\r\n \r\n \r\n )\r\n } else {\r\n return (\r\n {item.PilotDID}\r\n )\r\n }\r\n }\r\n }\r\n this.selectServiceLink = SelectServiceLink;\r\n\r\n class EditSettingsButton extends GridCell {\r\n\r\n render() {\r\n let item = this.props.dataItem;\r\n let path = '/iframe_page/MSP_SUBSCRIBER/' + item.LocationAccountNumber + '/' + item.TrunkGroupID;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n this.editSettingsButton = EditSettingsButton;\r\n\r\n class FilterServices extends GridCell {\r\n render() {\r\n let item = this.props.dataItem;\r\n return (\r\n \r\n \r\n {item.LocationAccountNumber}\r\n \r\n \r\n )\r\n }\r\n }\r\n this.filterServices = FilterServices;\r\n }\r\n \r\n componentWillReceiveProps(nextProps,nextContext){\r\n let curFilter = nextProps.location.state?nextProps.location.state.preFilter:null;\r\n let prevFilter = this.state.preFilter;\r\n if(curFilter !== prevFilter){\r\n let apiPath;\r\n if(curFilter){\r\n apiPath = 'admin/SipTrunking?term=' + curFilter;\r\n }\r\n else{\r\n apiPath = 'admin/SipTrunking';\r\n }\r\n\r\n this.setState({...this.state, preFilter: curFilter,loading:true});\r\n this.fetchSips(apiPath);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n\r\n this.handleResize();\r\n window.addEventListener('resize', this.handleResize)\r\n var apiPath = ''\r\n if (this.state.preFilter) {\r\n apiPath = 'admin/SipTrunking?term=' + this.state.preFilter;\r\n } else {\r\n apiPath = 'admin/SipTrunking';\r\n }\r\n this.fetchSips(apiPath);\r\n }\r\n\r\n handleResize = () => this.setState({\r\n gridHeight: (window.innerHeight - 210) + 'px'\r\n });\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.handleResize)\r\n }\r\n\r\n\r\n fetchSips = (apiPath, resultsMsg) => {\r\n fetchData(apiPath).then((data) => {\r\n if (data !== null) { \r\n this.setState({sips: data, loading: false, resultsMsg: null});\r\n } else if (data === null) {\r\n this.setState({sips: [], loading: false, resultsMsg: resultsMsg});\r\n };\r\n });\r\n }\r\n\r\n sortChange(event) {\r\n this.setState({\r\n sips: this.sortSips(event.sort),\r\n sort: event.sort\r\n });\r\n }\r\n\r\n pageChange(event) {\r\n this.setState({\r\n sips: this.state.sips.slice(),\r\n skip: event.page.skip\r\n });\r\n }\r\n\r\n sortSips(sort) {\r\n var sips = [];\r\n if (this.state !== undefined) {\r\n sips = this.state.sips.slice();\r\n } else {\r\n sips = [];\r\n }\r\n return orderBy(sips, sort);\r\n }\r\n\r\n searchSips = (event) => {\r\n let searchText = event.target.value.trim();\r\n var apiPath = '';\r\n if (searchText !== '') {\r\n apiPath = 'admin/SipTrunking?term=' + searchText;\r\n } else { // reset to all sips\r\n apiPath = 'admin/SipTrunking';\r\n }\r\n this.delayedSearch(apiPath);\r\n }\r\n\r\n delayedSearch = (apiPath) => {\r\n if(this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.fetchSips(apiPath, settings.noResultsMsg);\r\n }, settings.searchDelay);\r\n }\r\n\r\n setServiceAndRedirect = (service) => {\r\n settings.selectService(service.PilotUserId, service.PilotDID)\r\n this.props.history.push('/dashboard');\r\n }\r\n\r\n gridContent = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n sipsContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else { \r\n return (\r\n
    \r\n
    \r\n

    Trunking {this.state.sips.length}

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n {/**/}\r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    {this.state.resultsMsg}
    \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n {this.sipsContent()}\r\n
    \r\n
    \r\n )\r\n }\r\n};\r\n\r\nexport default Services;","import React, { Component } from 'react';\r\n\r\nclass SuperLink extends Component {\r\n\r\n render() {\r\n return(\r\n { this.props.label }\r\n );\r\n }\r\n}\r\n\r\nexport default SuperLink;","export default __webpack_public_path__ + \"static/media/credit-card-logos.4b65f716.png\";","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport SuperLink from './../../components/super_link'\r\nimport CCLogos from './../../images/credit-card-logos.png';\r\nimport CheckOne from './../../images/check_one.gif';\r\nimport CheckTwo from './../../images/check_two.gif';\r\nimport { DatePicker } from '@progress/kendo-dateinputs-react-wrapper';\r\n\r\n\r\nclass PayModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.setSchedule = this.setSchedule.bind(this);\r\n this.setStep = this.setStep.bind(this);\r\n this.state = { step: \"choose\", recurValue: \"\", showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n setSchedule(event){\r\n \tthis.setState({recurValue: event.target.value})\r\n }\r\n\r\n setStep(event) {\r\n \tconsole.log(event.target.dataset.step)\r\n\r\n \tif (event.target.dataset.step == 'choose') {\r\n\t\tthis.handleClose()\r\n \t}\r\n \tthis.setState({step: event.target.dataset.step})\r\n\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \t\tMake a Payment\r\n \r\n\r\n \r\n \r\n Make a Payment\r\n \r\n \r\n
    \r\n\t \r\n\t\t\t\t{this.getStep()}\r\n\r\n\t\t\t
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n getStep() {\r\n \tconsole.log(this.state.step)\r\n \tif (this.state.step == \"completed\") {\r\n \t\treturn (\r\n\t\t\t
    \r\n\t
    \r\n\t 213123123\r\n\t
    \r\n\t
    \r\n\t $123.32\r\n\t
    \r\n\t
    \r\n\t 1/22/2018\r\n\t
    \r\n\t
    \r\n\t One-time Credit Card Payment\r\n\t
    \r\n\t
    \r\n\t AR24FG298\r\n\t
    \r\n\t \r\n\t\t\t
    \r\n\t
    \r\n\t \t\r\n\t
    \r\n\t
    \r\n \t\t)\r\n \t} else if (this.state.step == \"confirm\") {\r\n \t\treturn (\r\n\t\t\t
    \r\n\t
    \r\n\t John Smith\r\n\t
    \r\n\t
    \r\n\t American Express\r\n\t
    \r\n\t
    \r\n\t XXX XXX XXX 1291\r\n\t
    \r\n\t
    \r\n\t 6/19\r\n\t
    \r\n\t
    \r\n\t 123.32\r\n\t
    \r\n\t
    \r\n\t One-time Credit Card Payment\r\n\t
    \r\n \t\r\n\t \t\r\n\t\t\t
    \r\n\t
    \r\n\t \t\r\n\t \t\r\n\t
    \r\n\t
    \r\n )\r\n } else if (this.state.step == \"start\") {\r\n \t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t \r\n\t\t \r\n\t\t
    \r\n\t\t
    \r\n\t\t \r\n\t\t \r\n\t\t
    \r\n\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t \r\n\t\t \r\n\t\t
    \r\n\t\t \r\n\t\t
    \r\n\t\t \t\r\n\t\t \t\r\n\t\t \t\"CC-logos\"\r\n\t\t
    \r\n\r\n\t\t
    \r\n\t\t \t
    \r\n\t\t\t
    \r\n\t\t\t \r\n\t\t\t {console.log(\"value changed to:\" + e.sender.value())}}\r\n\t\t\t\t />\r\n\t\t\t
    \r\n\t\t \t
    \r\n\t\t \t
    \r\n\t\t\t
    \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t
    \r\n\t\t \t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t \r\n\t\t
    \r\n\t\t
    \r\n\t\t {this.getSchedule()}\r\n\t\t\t
    \r\n\t
    \r\n\t \t\r\n\t \t\r\n\t
    \r\n\t\t
    \r\n\t )\r\n } else if (this.state.step == \"completed-bd\") {\r\n \t\treturn (\r\n\t\t\t
    \r\n\t
    \r\n\t John Smith\r\n\t
    \r\n\t
    \r\n\t Savings\r\n\t
    \r\n\t
    \r\n\t XXX XXX XXX\r\n\t
    \r\n\t
    \r\n\t XXX XXX XXX\r\n\t
    \r\n\t
    \r\n\t AR24FG298\r\n\t
    \r\n\t \r\n\t\t\t
    \r\n\t
    \r\n\t \t\r\n\t
    \r\n\t
    \r\n \t\t)\r\n \t} else if (this.state.step == \"confirm-bd\") {\r\n \t\treturn (\r\n\t\t\t
    \r\n\t
    \r\n\t John Smith\r\n\t
    \r\n\t
    \r\n\t Savings\r\n\t
    \r\n\t
    \r\n\t XXX XXX XXX\r\n\t
    \r\n\t
    \r\n\t XXX XXX XXX\r\n\t
    \r\n \t\r\n\t \t\r\n\t\t\t
    \r\n\t
    \r\n\t \t\r\n\t \t\r\n\t
    \r\n\t
    \r\n )\r\n } else if (this.state.step == \"start-bd\") {\r\n \t\treturn (\r\n\t\t\t
    \r\n\t\t
    \r\n\t\t \t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t\t As it appears on your checks\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t \t
    \r\n\t\t\t\t
    \r\n\t\t\t\t \t\r\n\t\t\t\t \t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t\t \t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t \t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t \r\n\t\t \"Check\"\r\n\t\t \"Check\"\r\n\r\n\t\t
    Recurring Payment
    \r\n\t\t

    Funds will be drafted no earlier than three days before your invoice's due date. Please be advised when you set up a recurring payment method any past due balance as well as current charges will be charged on your first scheduled payment date.

    \r\n\t\t\t \r\n\t\t\t\t
    \r\n\t\t \t\r\n\t\t
    \r\n\t\t\t
    \r\n\t
    \r\n\t \t\r\n\t \t\r\n\t
    \r\n\t\t
    \r\n\t )\r\n } else if (this.state.step == \"choose\") {\r\n \t\treturn (\r\n\t\t\t
    \r\n\t\t\t\t

    Choose a payment option, edit recurring payment information, or cancel recurring payment option.

    \r\n\t\t
    \r\n\t\t \t
    \r\n\t\t \t\t\r\n\t\t \t
    \r\n\t\t \t
    \r\n\t\t \t\t\r\n\t\t \t
    \r\n\t\t
    \r\n\t\t
    \r\n\t )\r\n \t}\r\n }\r\n\r\n getSchedule() {\r\n \tif (this.state.recurValue == \"once\") {\r\n \treturn (\r\n\t \t
    \r\n \t\r\n \t\r\n
    \r\n\t )\r\n \t}\r\n }\r\n};\r\n\r\nexport default PayModal;\r\n","import React, { Component } from 'react';\r\nimport SuperLink from './../../components/super_link';\r\nimport PayModal from './../modals/payModal';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { fetchData } from './../../requests/api_calls';\r\nimport { DataLoadingSpinner } from './../../components/spinners';\r\nimport { Link } from 'react-router-dom';\r\nimport { userIsAdmin } from './../../scripts/helper';\r\nimport * as config from './../../requests/config';\r\nimport * as currency from 'currency-formatter'\r\nimport * as session from '../../scripts/session';\r\n\r\nclass BillingCard extends Component {\r\n\r\n constructor() {\r\n super();\r\n this.state = {\r\n loading: true,\r\n downloading: true,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (userIsAdmin()) this.fetchBillingStat('admin/BillingStat');\r\n }\r\n\r\n fetchBillingStat = (apiPath, errorMsg) => {\r\n fetchData(apiPath).then((data) => {\r\n if (data !== null) {\r\n this.loadData(data);\r\n } else {\r\n this.setState({\r\n CustomerAccountNumber: sessionStorage.getItem('userEnterpriseNumber'),\r\n loading: false\r\n })\r\n }\r\n }).catch(ex => {\r\n this.setState({ loading: false });\r\n });\r\n }\r\n\r\n loadData = (data) => {\r\n this.setState({\r\n CustomerAccountNumber: data.CustomerAccountNumber,\r\n CustomerName: data.CustomerName,\r\n AccountNumber: data.AccountNumber,\r\n AccountBalance: currency.format(data.AccountBalance, { code: 'USD' }),\r\n Street1BILL: data.Street1BILL,\r\n Street2BILL: data.Street2BILL,\r\n CityBILL: data.CityBILL,\r\n StateBILL: data.StateBILL,\r\n ZipBILL: data.ZipBILL,\r\n InvoiceAmount: currency.format(data.InvoiceAmount, { code: 'USD' }),\r\n InvoiceDueDate: (new Date(data.InvoiceDueDate)).toLocaleDateString(),\r\n InvoiceURL: data.InvoiceURL.trim(),\r\n InvoiceID: data.InvoiceID,\r\n loading: false\r\n });\r\n }\r\n\r\n invoiceLink = () => {\r\n if (this.state.InvoiceID != 0 || this.state.InvoiceURL != \"\") {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n this.getInvoice()} >View Invoice\r\n
    \r\n )\r\n } else null;\r\n }\r\n\r\n getInvoice = () => {\r\n this.refs.downloadInvoice.submit();\r\n this.refs.invoiceBtn.text = 'Downloading...';\r\n setTimeout(() => {\r\n this.refs.invoiceBtn.text = 'View Invoice';\r\n }, 2000);\r\n }\r\n\r\n addressPartTwoSeparator = () => {\r\n if (this.state.Street2BILL) return
    ;\r\n }\r\n\r\n billingData = () => {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n let address = this.state.CityBILL ? (
    \r\n {this.state.Street1BILL}
    \r\n {this.state.Street2BILL} {this.addressPartTwoSeparator()}\r\n {this.state.CityBILL}, {this.state.StateBILL} {this.state.ZipBILL}\r\n\r\n
    ) : '';\r\n let billingMessage = process.env.REACT_APP_BILLING_MESSAGE;\r\n\r\n return (\r\n
    \r\n
    \r\n

    {this.state.CustomerName}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {address}\r\n
    \r\n
    \r\n \r\n {this.state.CustomerAccountNumber}\r\n
    \r\n
    \r\n\r\n {!session.IsWholesale() && (!billingMessage || billingMessage === '') && (\r\n
    \r\n
    \r\n Make a Payment\r\n {this.invoiceLink()}\r\n
    \r\n
    \r\n \r\n {this.state.AccountBalance}\r\n
    \r\n
    \r\n \r\n Nov 1, 2017 - Nov 31, 2017\r\n
    \r\n
    \r\n \r\n {this.state.InvoiceDueDate}\r\n
    \r\n
    )\r\n }\r\n {!session.IsWholesale() && billingMessage && billingMessage !== '' && (\r\n
    \r\n
    \r\n {billingMessage}\r\n
    \r\n
    )\r\n }\r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n if (sessionStorage.enterpriseType === 'VOICE' || sessionStorage.enterpriseType === 'DATA' || sessionStorage.enterpriseType === 'MIXED') {\r\n return (\r\n
    \r\n
    \r\n {this.billingData()}\r\n
    \r\n
    \r\n )\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport default BillingCard;\r\n\r\n","import React, { Component } from 'react';\nimport { Link, withRouter } from 'react-router-dom';\nimport * as settings from './../../scripts/settings';\nimport * as apiCalls from './../../requests/api_calls';\nimport { DataLoadingSpinner } from './../../components/spinners';\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\nimport { orderBy } from '@progress/kendo-data-query';\nimport serviceSelector from './../../components/service_selector';\nimport _ from 'lodash';\n\nclass FavServices extends Component {\n\n constructor() {\n super();\n this.state = {\n services: [],\n loading: true,\n sort: [],\n skip: 0,\n take: 5,\n };\n this.fetchServices = this.fetchServices.bind(this);\n this.searchServices = this.searchServices.bind(this);\n this.sortChange = this.sortChange.bind(this);\n this.pageChange = this.pageChange.bind(this);\n const starClass = this.starClass.bind(this);\n const toggleFavoriteStatus = this.toggleFavoriteStatus.bind(this);\n const handleEnter = this.handleEnter;\n\n class FavoriteButton extends GridCell {\n\n render() {\n // passing data item based on example from Kendo UI example\n // https://www.telerik.com/kendo-react-ui/components/grid/editing/editing\n let item = this.props.dataItem;\n let cannotFavorite = item.ServiceId === \"\" && item.Extension === \"\";\n if (cannotFavorite) {\n return ;\n } else {\n const cursorType = item.isToggingStatus ? 'wait' : 'pointer';\n return (\n \n toggleFavoriteStatus(item)} className={starClass(item)}>\n handleEnter(e, item)}>\n \n \n \n \n )\n }\n }\n }\n this.favBtn = FavoriteButton;\n\n class FirstAndLastName extends GridCell {\n render() {\n let service = this.props.dataItem\n return {service.FirstName + ' ' + service.LastName}\n }\n }\n this.firstAndLastName = FirstAndLastName;\n }\n\n componentDidMount() {\n this.fetchServices('admin/FavoriteServices');\n }\n\n fetchServices = (apiPath, resultsMsg) => {\n this.setState({loading: true})\n apiCalls.fetchData(apiPath).then((data) => {\n if (data !== null) {\n this.setState({services: data, loading: false, resultsMsg: null});\n } else if (data === null) {\n let msg = resultsMsg || 'No matching results found for search criteria.';\n this.setState({resultsMsg: msg, loading: false, services: []});\n };\n });\n }\n\n sortChange(event) {\n this.setState({\n services: this.sortServices(event.sort),\n sort: event.sort\n });\n }\n\n pageChange(event) {\n this.setState({\n skip: event.page.skip,\n take: event.page.take,\n });\n }\n\n sortServices(sort) {\n var services = [];\n if (this.state !== undefined) {\n services = this.state.services.slice();\n }\n return orderBy(services, sort);\n }\n\n searchServices = (event) => {\n let searchText = event.target.value.trim();\n var apiPath = ''\n if (searchText !== '') {\n apiPath = 'admin/Services?term=' + searchText;\n } else { // reset to favorites\n apiPath = 'admin/FavoriteServices';\n }\n this.delayedSearch(apiPath);\n }\n\n delayedSearch = (apiPath) => {\n if(this.timeout) clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.fetchServices(apiPath, settings.noResultsMsg);\n }, settings.searchDelay);\n }\n\n starClass = (dataItem) => {\n return dataItem.IsFav ? 'star' : 'dim-star';\n }\n\n // Used for accessibility standards\n handleEnter = (e, item) => {\n e.preventDefault();\n if (e.keyCode === 13)\n this.toggleFavoriteStatus(item);\n } \n\n toggleFavoriteStatus = async (item) => {\n // post update to API\n let updatedItem = new Object(item);\n updatedItem.isToggingStatus = true;\n await this.replaceServices(updatedItem);\n if (item.IsFav) {\n await this.unfavorite(updatedItem);\n } else {\n await this.saveFavorite(updatedItem);\n }\n \n }\n\n\n updateService = (item, newFavServiceId) => {\n let newIsFavState = item.IsFav ? false : true;\n let updatedItem = new Object(item);\n updatedItem.IsFav = newIsFavState;\n updatedItem.isToggingStatus = false;\n if (newFavServiceId) updatedItem.FavoriteServiceId = newFavServiceId;\n this.replaceServices(updatedItem);\n }\n\n replaceServices = (updatedItem) => {\n // replace services array with new array with updated service item\n let newServices = this.state.services.slice();\n let index = _.findIndex(newServices,s => s.ServiceId === updatedItem.ServiceId);\n newServices[index] = updatedItem;\n this.setState({services: newServices});\n }\n \n saveFavorite = (item) => {\n apiCalls.saveFavoriteService(item).then((data) => {\n let newFavServiceId = data.FavoriteServiceId;\n this.updateService(item, newFavServiceId);\n }).catch((err) => {\n console.log('error', err);\n });\n }\n\n unfavorite = (item) => {\n apiCalls.unfavoriteService(item).then((data) => {\n // services that are not favorites have 0 for FavoriteServiceId\n let newFavServiceId = 0; \n this.updateService(item, newFavServiceId);\n }).catch((err) => {\n console.log('error', err);\n });\n }\n \n gridContent = () => {\n let data = this.state.services;\n if (this.state.loading) {\n return \n } else if (this.state.services && this.state.services.length > 0) {\n return (\n \n \n \n \n \n \n \n )\n } else return
    {this.state.resultsMsg}
    \n }\n\n favServicesTable = () => {\n return (\n
    \n
    \n

    Favorite Services

    \n
    \n \n \n \n
    \n
    \n
    \n {this.gridContent()}\n
    \n
    \n View All Services \n
    \n
    \n )\n }\n\n render() {\n if(sessionStorage.enterpriseType==='VOICE' ||sessionStorage.enterpriseType==='MIXED')\n {return (\n
    \n {this.favServicesTable()}\n
    \n )}\n else{return null}\n };\n}\n\nexport default withRouter(FavServices);","import React, { Component } from 'react';\r\nimport { Chart } from '@progress/kendo-charts-react-wrapper';\r\nimport { fetchData } from './../../requests/api_calls';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { DatePicker } from '@progress/kendo-dateinputs-react-wrapper';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport moment from 'moment';\r\nimport * as helper from './../../scripts/helper';\r\nimport { DataLoadingSpinner } from './../../components/spinners';\r\nimport values from \"object.values\";\r\nimport format from 'string-format';\r\n\r\nconst defaultDaysAgo = 7;\r\nconst custom = 'custom';\r\nconst toDate = 'toDate';\r\nconst fromDate = 'fromDate';\r\nconst type = 'type';\r\nconst status = 'status';\r\nconst view = 'view';\r\nconst calendarFormat = 'M-D-YYYY';\r\nconst yearMonthDay = 'YYYY-MM-DD';\r\nconst loadTime = 500;\r\n\r\n// Graph colors\r\nconst internal_color = \"rgb(68, 87, 111)\";\r\nconst inbound_color = \"rgb(195, 213, 0)\";\r\nconst outlocal_color = \"rgb(255, 158, 21)\";\r\nconst outLD_color = \"rgb(230, 85, 178)\";\r\nconst international_color = \"rgb(255, 83, 70)\";\r\nconst other_color = 'purple';\r\n\r\nconst setFromDate = (totalDays) => {\r\n let daysAgo = totalDays - 1; // offset by one since including today\r\n return moment().subtract(daysAgo, 'days').startOf('day').format(yearMonthDay);\r\n}\r\n\r\nconst today = () => moment().format(yearMonthDay);\r\n\r\nexport default class CallChart extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n filters: {\r\n type: \"ALL_CALLS\",\r\n view: 'CALLS',\r\n status: \"ALL_CALLS\",\r\n fromDate: setFromDate(defaultDaysAgo),\r\n toDate: today(),\r\n dateRangeVisibility: 'hide',\r\n },\r\n dateCounts: {},\r\n apiReturn: false,\r\n loadTimeExpired: false,\r\n legendItem: '',\r\n internalLegend: true,\r\n inboundLegend: true,\r\n outLocalLegend: true,\r\n outLdLegend: true,\r\n internationalLegend: true,\r\n otherLegend: true,\r\n };\r\n this.setDateRange = this.setDateRange.bind(this);\r\n this.setCustomDate = this.setCustomDate.bind(this);\r\n this.setCallFilter = this.setCallFilter.bind(this);\r\n this.handleSetLegend = this.handleSetLegend.bind(this);\r\n };\r\n\r\n componentDidMount() {\r\n this.filterCallActivity();\r\n }\r\n\r\n filterCallActivity = () => {\r\n if (this.state.filters.fromDate && this.state.filters.toDate) {\r\n let apiPathAndParams = 'admin/CallActivity' + this.callActivityFilterString();\r\n this.fetchCallActivity(apiPathAndParams);\r\n }\r\n }\r\n\r\n callActivityFilterString = () => {\r\n let filters = this.state.filters;\r\n let filterString = '?CallType=' + filters.type;\r\n filterString += '&CallView=' + filters.view;\r\n filterString += '&CallStatus=' + filters.status;\r\n filterString += '&FromDate=' + moment(filters.fromDate).format(yearMonthDay);\r\n filterString += '&ToDate=' + moment(filters.toDate).format(yearMonthDay);\r\n return filterString\r\n }\r\n\r\n fetchCallActivity = (apiPath, errorMsg) => {\r\n this.setState({ apiReturn: false, loadTimeExpired: false });\r\n this.forcedLoadTime();\r\n fetchData(apiPath).then((data) => {\r\n if (data !== null) {\r\n //console.log(\"This is call activity data\",data)\r\n let count = data.reduce((total, currentValue) => {\r\n return total + currentValue.ALL_CALLS;\r\n }, 0);\r\n //console.log(\"Count value\",count)\r\n sessionStorage.setItem(\"callActivityCount\", count)\r\n this.setState({\r\n callActivity: data,\r\n dateCounts: {\r\n internal: this.mapCallActivity(data, 'INTERNAL'),\r\n inbound: this.mapCallActivity(data, 'INBOUND'),\r\n outboundLocal: this.mapCallActivity(data, 'OUTBOUND_LOCAL'),\r\n outboundLd: this.mapCallActivity(data, 'OUTBOUND_LD'),\r\n international: this.mapCallActivity(data, 'INTERNATIONAL'),\r\n other: this.mapCallActivity(data, 'OTHER'),\r\n },\r\n apiReturn: true\r\n });\r\n } else {\r\n this.setState({\r\n callActivity: null,\r\n apiReturn: true\r\n });\r\n };\r\n }).catch(() => {\r\n this.setState({\r\n callActivity: null,\r\n apiReturn: true\r\n });\r\n }\r\n )\r\n }\r\n\r\n mapCallActivity = (data, propertyName) => {\r\n let startDate = moment(this.state.filters.fromDate);\r\n let endDate = moment(this.state.filters.toDate).add(1, 'days');\r\n let totalDays = endDate.diff(startDate, 'days');\r\n let dates = [];\r\n for (var i = 0; i < totalDays; i++) {\r\n dates.unshift(endDate.subtract(1, 'days').format(yearMonthDay));\r\n }\r\n this.setState({ dates: dates });\r\n return dates.map(date => {\r\n let dataItems = data.filter(item => item.CallDate === date);\r\n let dataItem = null;\r\n if (dataItems.length > 0) dataItem = dataItems[0];\r\n return dataItem ? dataItem[propertyName] : 0;\r\n })\r\n }\r\n\r\n setDateRange = (event) => {\r\n let filters = { ...this.state.filters };\r\n if (event.target.value != custom) {\r\n filters.fromDate = event.target.value;\r\n filters.toDate = today();\r\n filters.dateRangeVisibility = 'hide';\r\n sessionStorage.setItem('CallActivityFilters', JSON.stringify(filters));\r\n this.redrawChart(filters);\r\n } else {\r\n filters.fromDate = event.target.value;\r\n filters.toDate = today();\r\n filters.dateRangeVisibility = 'show';\r\n this.setState({ filters: filters });\r\n }\r\n }\r\n\r\n setCallFilter = (event, filterKey) => {\r\n let filters = { ...this.state.filters };\r\n filters[filterKey] = event.target.value;\r\n sessionStorage.setItem('CallActivityFilters', JSON.stringify(filters));\r\n this.redrawChart(filters);\r\n }\r\n\r\n setCustomDate = (event, filterKey) => {\r\n let filters = { ...this.state.filters };\r\n if (event.sender.value()) {\r\n var date = moment(event.sender.value()).format(\"YYYY-MM-DD\");\r\n } else {\r\n var date = null;\r\n }\r\n filters[filterKey] = date;\r\n sessionStorage.setItem('CallActivityFilters', JSON.stringify(filters));\r\n if (this.validCustomDate(filters, filterKey, date)) this.redrawChart(filters);\r\n }\r\n\r\n validCustomDate = (filters, filterKey, date) => {\r\n let fromDate = moment(filterKey == 'fromDate' ? date : this.state.filters.fromDate);\r\n let toDate = moment(filterKey == 'toDate' ? date : this.state.filters.toDate);\r\n if (date === null) {\r\n this.setState({ filters: filters, errorMsg: 'Both dates must be provided to use a custom date range.' });\r\n } else if (fromDate.isBefore(toDate) || fromDate._i == toDate._i) {\r\n this.setState({ filters: filters, errorMsg: null });\r\n var isValid = true;\r\n } else {\r\n this.setState({ filters: filters, errorMsg: 'The start date must be before the end date.' });\r\n var isValid = false;\r\n }\r\n return isValid;\r\n }\r\n\r\n redrawChart = (filters) => {\r\n this.setState({ filters: filters }, () => {\r\n // make API request after state since needed for API query string\r\n this.filterCallActivity();\r\n });\r\n }\r\n\r\n callCounts = (category) => {\r\n let countsArray = this.state.dateCounts[category];\r\n if (this.noResults()) {\r\n return 0;\r\n } else {\r\n let count = countsArray.reduce((total, value) => total + value)\r\n return helper.numberWithDelimiter(count);\r\n }\r\n }\r\n\r\n maxCount = (data) => {\r\n let counts = values(this.state.dateCounts);\r\n let flatCounts = Array.prototype.concat(...counts);\r\n return Math.max(...flatCounts) * 1.05 // adding 5% buffer\r\n }\r\n\r\n chartSeries() {\r\n const chartSeriesConfig = (name, data, color) => ({ name: name, data: data, color: color });\r\n let counts = this.state.dateCounts;\r\n let seriesList = [\r\n chartSeriesConfig('Internal', counts.internal, internal_color),\r\n chartSeriesConfig('Inbound', counts.inbound, inbound_color),\r\n chartSeriesConfig('Out Local', counts.outboundLocal, outlocal_color),\r\n chartSeriesConfig('Out LD', counts.outboundLd, outLD_color),\r\n chartSeriesConfig('International', counts.international, international_color),\r\n chartSeriesConfig('Other', counts.other, other_color),\r\n ];\r\n if (this.state.legendItem === 'internal') {\r\n return seriesList.filter(item => item.name === 'Internal');\r\n } else if (this.state.legendItem === 'inbound') {\r\n return seriesList.filter(item => item.name === 'Inbound');\r\n } else if (this.state.legendItem === 'out_local') {\r\n return seriesList.filter(item => item.name === 'Out Local');\r\n } else if (this.state.legendItem === 'out_ld') {\r\n return seriesList.filter(item => item.name === 'Out LD');\r\n } else if (this.state.legendItem === 'international') {\r\n return seriesList.filter(item => item.name === 'International');\r\n } else if (this.state.legendItem === 'other') {\r\n return seriesList.filter(item => item.name === 'Other');\r\n } else {\r\n return seriesList;\r\n }\r\n }\r\n\r\n chartOptions = () => {\r\n let counts = this.state.dateCounts;\r\n let dates = this.state.dates;\r\n if (counts != null && dates != null) {\r\n return (\r\n {\r\n legend: {\r\n visible: false\r\n },\r\n seriesDefaults: {\r\n type: \"line\"\r\n },\r\n series: this.chartSeries(),\r\n chartArea: {\r\n height: 320\r\n },\r\n valueAxis: {\r\n min: 0,\r\n max: this.maxCount(),\r\n line: {\r\n visible: false\r\n },\r\n minorGridLines: {\r\n visible: true\r\n },\r\n labels: {\r\n rotation: \"auto\",\r\n color: '#b3b1b1'\r\n }\r\n },\r\n categoryAxis: {\r\n categories: dates.map(date => moment(date).format(calendarFormat)),\r\n majorGridLines: {\r\n visible: false\r\n },\r\n color: '#FFF'\r\n },\r\n tooltip: {\r\n visible: true,\r\n format: \"Value: {0:N0}\",\r\n template: \"#= series.name # : #= value # on #= kendo.toString(category) # \"\r\n }\r\n }\r\n )\r\n }\r\n }\r\n\r\n noResults = () => (this.state.callActivity == null || this.state.errorMsg);\r\n\r\n chartContent = () => {\r\n if (this.state.loadTimeExpired && this.state.apiReturn) {\r\n if (this.noResults()) {\r\n return (\r\n

    \r\n {this.state.errorMsg || 'No call activity found with the above filters selected.'}\r\n

    \r\n )\r\n } else return \r\n }\r\n else return \r\n }\r\n\r\n forcedLoadTime = () => {\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.setState({ loadTimeExpired: true })\r\n }, loadTime);\r\n return true;\r\n }\r\n\r\n handleSetLegend = (legendItem) => {\r\n let legendItems = [{ name: 'internalLegend', legendName: 'internal', value: this.state.internalLegend, selected: legendItem === 'internalLegend' },\r\n { name: 'inboundLegend', legendName: 'inbound', value: this.state.inboundLegend, selected: legendItem === 'inboundLegend' },\r\n { name: 'outLocalLegend', legendName: 'out_local', value: this.state.outLocalLegend, selected: legendItem === 'outLocalLegend' },\r\n { name: 'outLdLegend', legendName: 'out_ld', value: this.state.outLdLegend, selected: legendItem === 'outLdLegend' },\r\n { name: 'internationalLegend', legendName: 'international', value: this.state.internationalLegend, selected: legendItem === 'internationalLegend' },\r\n { name: 'otherLegend', legendName: 'other', value: this.state.otherLegend, selected: legendItem === 'otherLegend' }\r\n ]\r\n let notSelectedItems = legendItems.filter(resp => resp.selected === false);\r\n let prop1 = notSelectedItems[0], prop2 = notSelectedItems[1], prop3 = notSelectedItems[2], prop4 = notSelectedItems[3], prop5 = notSelectedItems[4]\r\n let selectedItem = legendItems.filter(resp => resp.selected === true)[0].legendName\r\n if (this.state.legendItem === selectedItem)\r\n selectedItem = '';\r\n this.setState({\r\n legendItem: selectedItem,\r\n [prop1.name]: !prop1.value,\r\n [prop2.name]: !prop2.value,\r\n [prop3.name]: !prop3.value,\r\n [prop4.name]: !prop4.value,\r\n [prop5.name]: !prop5.value,\r\n });\r\n }\r\n\r\n callCategoryHyperlink = (category) => {\r\n return (\r\n {\r\n sessionStorage.setItem('EnterpriseCallCategoryFilter', category);\r\n this.props.transition();\r\n }}>{category}\r\n )\r\n }\r\n\r\n handleSetOutLocalLegend = () => {\r\n if (this.state.outLocalLegend) {\r\n this.setState({\r\n internalLegend: !this.state.internalLegend,\r\n inboundLegend: !this.state.inboundLegend,\r\n outLdLegend: !this.state.outLdLegend,\r\n internationalLegend: !this.state.internationalLegend\r\n });\r\n if ((this.state.internalLegend && this.state.inboundLegend && this.state.outLdLegend && this.state.internationalLegend)) this.setState({ legendItem: 'out_local' });\r\n if (!(this.state.internalLegend && this.state.inboundLegend && this.state.outLdLegend && this.state.internationalLegend)) this.setState({ legendItem: '' });\r\n return;\r\n\r\n }\r\n }\r\n\r\n handleSetOutLdLegend = () => {\r\n if (this.state.outLdLegend) {\r\n this.setState({\r\n internalLegend: !this.state.internalLegend,\r\n inboundLegend: !this.state.inboundLegend,\r\n outLocalLegend: !this.state.outLocalLegend,\r\n internationalLegend: !this.state.internationalLegend\r\n });\r\n if ((this.state.internalLegend && this.state.inboundLegend && this.state.outLocalLegend && this.state.internationalLegend)) this.setState({ legendItem: 'out_ld' });\r\n if (!(this.state.internalLegend && this.state.inboundLegend && this.state.outLocalLegend && this.state.internationalLegend)) this.setState({ legendItem: '' });\r\n return;\r\n\r\n }\r\n }\r\n\r\n handleSetInternationalLegend = () => {\r\n if (this.state.internationalLegend) {\r\n this.setState({\r\n internalLegend: !this.state.internalLegend,\r\n inboundLegend: !this.state.inboundLegend,\r\n outLocalLegend: !this.state.outLocalLegend,\r\n outLdLegend: !this.state.outLdLegend\r\n });\r\n if ((this.state.internalLegend && this.state.inboundLegend && this.state.outLocalLegend && this.state.outLdLegend)) this.setState({ legendItem: 'international' });\r\n if (!(this.state.internalLegend && this.state.inboundLegend && this.state.outLocalLegend && this.state.outLdLegend)) this.setState({ legendItem: '' });\r\n return;\r\n\r\n }\r\n }\r\n\r\n render() {\r\n if(sessionStorage.enterpriseType==='VOICE' || sessionStorage.enterpriseType==='MIXED')\r\n {\r\n return (\r\n
    \r\n
    \r\n

    Call Activity

    \r\n Call Details\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n { this.setCustomDate(event, fromDate) }}\r\n />\r\n
    \r\n
    \r\n \r\n { this.setCustomDate(event, toDate) }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    { this.handleSetLegend('internalLegend') }}>
    {this.callCounts('internal')} {this.callCategoryHyperlink('Internal')}\r\n
    \r\n
    \r\n
    { this.handleSetLegend('inboundLegend') }}>
    {this.callCounts('inbound')} {this.callCategoryHyperlink('Inbound')}\r\n
    \r\n
    \r\n
    { this.handleSetLegend('outLocalLegend') }}>
    {this.callCounts('outboundLocal')} {this.callCategoryHyperlink('Out Local')}\r\n
    \r\n
    \r\n
    { this.handleSetLegend('outLdLegend') }}>
    {this.callCounts('outboundLd')} {this.callCategoryHyperlink('Out LD')}\r\n
    \r\n
    \r\n
    { this.handleSetLegend('internationalLegend') }}>
    {this.callCounts('international')} {this.callCategoryHyperlink('International')}\r\n
    \r\n
    \r\n
    { this.handleSetLegend('otherLegend') }}>
    {this.callCounts('other')} {this.callCategoryHyperlink('Other')}\r\n
    \r\n
    \r\n
    \r\n {this.chartContent()}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n else{return null}\r\n }\r\n};","import React, { Component } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { fetchData } from \"./../../requests/api_calls\";\r\nimport { DataLoadingSpinner } from \"./../../components/spinners\";\r\n\r\nclass QuickView extends Component {\r\n constructor() {\r\n super();\r\n this.state = { loading: true };\r\n this.fetchStats = this.fetchStats.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchStats(\"admin/QuickView\");\r\n }\r\n\r\n fetchStats = (apiPath, errorMsg) => {\r\n fetchData(apiPath).then((data) => {\r\n if (data) {\r\n this.setState({\r\n CountLocations: data.CountLocations,\r\n CountServices: data.CountServices,\r\n CountUsers: data.CountUsers,\r\n CountDevices: data.CountDevices,\r\n CountServicesUsers: data.CountServicesUsers,\r\n loading: false,\r\n });\r\n }\r\n });\r\n };\r\n\r\n quickViewContent = () => {\r\n if (this.state.loading) {\r\n return (\r\n
    \r\n
    \r\n

    Quick View

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n
    \r\n

    Quick View

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Manage\r\n \r\n \r\n

    {this.state.CountLocations}

    \r\n
    \r\n
    \r\n \r\n Manage\r\n \r\n \r\n

    {this.state.CountServicesUsers || 0}

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

    {this.state.CountDevices}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n };\r\n\r\n render() {\r\n if (sessionStorage.enterpriseType === 'VOICE' || sessionStorage.enterpriseType === 'MIXED') {\r\n return
    {this.quickViewContent()}
    ;\r\n } else { return null }\r\n\r\n }\r\n}\r\n\r\nexport default QuickView;\r\n","import moment from 'moment';\nimport React, { Component } from 'react';\nimport DeviceStatuses from './../../components/deviceStatuses';\nimport { Link } from 'react-router-dom';\nimport { fetchData } from './../../requests/api_calls';\nimport { DataLoadingSpinner } from './../../components/spinners';\nimport { registrationLastUpdated } from './../../scripts/helper';\nimport * as settings from './../../scripts/settings.js';\nimport { serviceFilters } from '../../constants/filters.js'\nimport format from 'string-format';\n\nconst defaultSelection = 'All Locations';\n\nclass Devices extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n devicesProvisioned: 0,\n devicesRegistered: 0,\n devicesUnregistered: 0,\n linesRegistered: 0,\n linesUnregistered: 0,\n total: 0,\n loading: true,\n selectedLocationValue: ''\n };\n this.filterLocations = this.filterLocations.bind(this);\n };\n\n componentDidMount() {\n this.fetchDeviceStats('admin/DeviceStat');\n this.fetchLocations('admin/Locations');\n }\n\n fetchDeviceStats = (apiPath, forcedRefresh) => {\n fetchData(apiPath).then((data) => {\n if (data) {\n this.setState({\n devicesProvisioned: (data.CountProvisioned || 0),\n devicesRegistered: (data.CountRegistered || 0),\n devicesUnregistered: (data.CountUnregistered || 0),\n linesRegistered: (data.CountLinesRegistered || 0),\n linesUnregistered: (data.CountLinesUnregistered || 0),\n total: data.CountTotal,\n loading: false,\n registrationUpdated: forcedRefresh ? registrationLastUpdated() : false\n });\n } else { // error: probably a request timeout\n let previousLocationValue = this.state.previousLocationValue || defaultSelection;\n this.setState({\n selectedLocationValue: previousLocationValue,\n loading: false,\n registrationUpdated: forcedRefresh ? 'Failed to retrieve registration status: ' + moment().format('M-DD-YYYY hh:mm:ss A') : ''\n });\n }\n });\n }\n\n fetchLocations = (apiPath) => {\n fetchData(apiPath).then((data) => {\n if (data) {\n let locationOptions = data.map((location, index) => {\n return ( this.locationOption(location, index) );\n });\n this.setState({locationOptions: locationOptions, loading: false});\n } else {\n this.setState({loading: false});\n }\n });\n }\n\n locationOption = (location, index) => {\n return (\n \n )\n }\n\n filterLocations = (event) => {\n let locationAccountNumber = event.target.value;\n // let selectionIndex = event.target.selectedIndex;\n // let locationAddress = event.target.options[selectionIndex].text;\n let stateChanges = {\n loading:true,\n selectedLocationValue: locationAccountNumber,\n previousLocationValue: this.state.selectedLocationValue,\n }\n this.setState({...stateChanges});\n if(locationAccountNumber) {\n this.fetchDeviceStats('admin/DeviceStat?LocationAccountNumber=' + locationAccountNumber);\n settings.setQuickViewLocation(locationAccountNumber);\n } else{\n this.fetchDeviceStats('admin/DeviceStat');\n settings.setQuickViewLocation(\"\");\n }\n }\n\n manageBtn = (serviceUserFilter, categoryLabel, count) => {\n let path = '/services/' + this.state.selectedLocationValue;\n let linkClass = count > 0 ? 'btn' : 'hidden';\n return (\n
    \n \n Manage\n \n \n

    {count}

    \n
    \n )\n }\n\n getCount = (filterValue, categoryLabel, count, displaySide) => {\n let path = '/services/' + this.state.selectedLocationValue;\n if (!count) {\n return (\n
    \n \n

    {count}

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

    {count}

    \n \n
    \n )\n }\n }\n\n checkRegistration = () => {\n let forcedRefresh = true;\n if (this.state.selectedLocationValue) {\n let locationAccountNumber = this.state.selectedLocationValue;\n this.fetchDeviceStats('admin/DeviceStat?LocationAccountNumber=' + locationAccountNumber + '&ForceDeviceRefresh=TRUE', forcedRefresh);\n } else {\n this.fetchDeviceStats('admin/DeviceStat?ForceDeviceRefresh=TRUE', forcedRefresh);\n }\n }\n\n devicesSummary = () => {\n //let path = '/services/' + this.state.selectedLocationValue;\n //let right = \"right\", left = \"left\"; // for css, either right or left\n if (this.state.loading) {\n return (\n
    \n \n
    \n )\n } else {\n return (\n
    \n {this.manageBtn(serviceFilters.DEVICE_REGISTERED, 'Registered', this.state.devicesRegistered)}\n {this.manageBtn(serviceFilters.DEVICE_UNREGISTERED, 'Unregistered', this.state.devicesUnregistered)}\n {this.manageBtn(serviceFilters.DEVICE_ASSIGNED, 'Provisioned', this.state.devicesProvisioned)} \n {/*
    \n

    {this.state.linesUnregistered}

    \n
    \n
    \n

    {this.state.devicesProvisioned}

    \n
    */}\n
    \n )\n }\n }\n\n render() {\n if(sessionStorage.enterpriseType==='VOICE' || sessionStorage.enterpriseType==='MIXED'){\n return (\n
    \n
    \n
    \n
    \n

    Devices

    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n {this.devicesSummary()}\n
    \n
    \n
    \n )\n }else{return null;}\n \n }\n\n}\n\nexport default Devices;\n\n","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { fetchData } from './../../requests/api_calls';\r\nimport * as settings from './../../scripts/settings';\r\nimport moment from 'moment';\r\n\r\nclass ActivityHistory extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n history: []\r\n };\r\n };\r\n\r\n componentDidMount() {\r\n this.fetchHistory();\r\n }\r\n\r\n fetchHistory = () => {\r\n fetchData('admin/ActivityHistory').then((data) => {\r\n if (data) {\r\n this.setState({\r\n history: this.sortedHistory(data)\r\n });\r\n }\r\n });\r\n }\r\n\r\n sortedHistory = (data) => {\r\n data.sort((a, b) => new Date(b.ActivityDate) - new Date(a.ActivityDate) );\r\n return data.map((item, index) => this.historyItemDiv(item, index))\r\n }\r\n\r\n setServiceAndRedirect = async (historyItem) => {\r\n let userId = historyItem.ActivityURL.split('user/')[1].split('/')[0];\r\n let apiPath = 'usr/MyServices?UserId=' + userId;\r\n let results = await fetchData(apiPath).then(data => data)\r\n let service = this.findServiceByHistoryItem(historyItem, results)\r\n if (service) {\r\n settings.selectService(service.UserId, service.ServiceNumber, service.Extension);\r\n this.props.history.push('/dashboard');\r\n }\r\n \r\n }\r\n\r\n findServiceByHistoryItem = (historyItem, results) => {\r\n let numOrExt = historyItem.ServiceNumberOrExtension;\r\n let matches = results.filter(service => numOrExt === (service.ServiceNumber || service.Extension))\r\n return matches[0] || null;\r\n }\r\n\r\n historyItemDiv = (item, index) => {\r\n return (\r\n \r\n \r\n \r\n // \r\n // this.setService(item)} >\r\n // {item.UserName} ({item.ServiceNumberOrExtension})  \r\n // {moment.utc(item.ActivityDate).fromNow()}\r\n // \r\n // \r\n );\r\n }\r\n\r\n render() {\r\n if(sessionStorage.enterpriseType==='VOICE' || sessionStorage.enterpriseType==='MIXED'){\r\n return (\r\n
    \r\n
    \r\n

    Activity History

    \r\n
    \r\n
    \r\n
    \r\n {this.state.history}\r\n
    \r\n
    \r\n
    \r\n )\r\n }else{\r\n return null;\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default withRouter(ActivityHistory);","import React, { Component } from 'react';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\n\r\n\r\nexport default class TicketingCountsWidget extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n Listings: [],\r\n FullListings: [],\r\n TicketStats: [],\r\n LocationAccountNumber: '',\r\n ContactId: '',\r\n ContactOptions: [],\r\n LocationOptions: [],\r\n isSFIDNull: false\r\n }\r\n }\r\n\r\n\r\n componentDidMount() {\r\n this.fetchTicketCountData();\r\n }\r\n\r\n fetchTicketCountData = () => {\r\n let requests = [\r\n this.fetchTicketStats(),\r\n this.fetchContactList(),\r\n this.fetchLocations(),\r\n ];\r\n Promise.all(requests).catch(err => console.error(err));\r\n }\r\n\r\n fetchContactList = () => {\r\n let apiPath = 'admin/GetContactList';\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n let options = data.map((contact, idx) => {\r\n return \r\n });\r\n this.setState({ ContactOptions: options });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchLocations = () => {\r\n let apiPath = 'admin/Locations';\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n let options = data.map((location, idx) => {\r\n return \r\n });\r\n this.setState({ LocationOptions: options });\r\n }\r\n })\r\n }\r\n\r\n fetchTicketStats = async () => {\r\n await this.setState({ loading: true });\r\n let parsedList = JSON.parse(sessionStorage.locationList)\r\n let locationAccountNumberList = parsedList.map((x)=>(x.LocationAccountNumber));\r\n let apiPath = `admin/GetTicketingStat?LocationAccountNumber=${this.state.LocationAccountNumber}&ContactId=${this.state.ContactId}`;\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n this.setState({ TicketStats: data, loading: false });\r\n } else {\r\n this.setState({ loading: false, isSFIDNull: true });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n handleChangeContact = (e) => {\r\n this.setState({ ContactId: e.target.value }, this.fetchTicketStats);\r\n }\r\n\r\n handleChangeLocation = (e) => {\r\n this.setState({ LocationAccountNumber: e.target.value }, this.fetchTicketStats);\r\n }\r\n\r\n ticketFilterDropDown = (name) => {\r\n if (name === 'contacts' || name === 'locations') {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n ticketRow = (description, count, view) => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n if (this.state.TicketStats) {\r\n let { Closed, Escalated, Open, PendingCustomer, Starred, Updated, Total7 } = this.state.TicketStats;\r\n return (\r\n
    \r\n {this.ticketRow('Escalated', Escalated, 'View Escalated')}\r\n {this.ticketRow('Pending Customer', PendingCustomer, 'View Pending Customer')}\r\n {this.ticketRow('Closed (7 Days)', Closed, 'View Recently Closed')}\r\n {this.ticketRow('Updated (24 Hours)', Updated, 'View Recently Updated')}\r\n {this.ticketRow('Open', Open, 'View Open')}\r\n {this.ticketRow('All Tickets', Total7, 'View All Tickets')}\r\n
    \r\n {sessionStorage.hasTicketing === 'FULL' ? Enter New Ticket : null}\r\n {/* View All Tickets */}\r\n
    \r\n
    \r\n )\r\n } else {\r\n return

    No Available Ticketing Data

    \r\n }\r\n }\r\n }\r\n\r\n render() {\r\n if (sessionStorage.enterpriseType === 'VOICE' || sessionStorage.enterpriseType === 'DATA' || sessionStorage.enterpriseType === 'MIXED') {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Support Tickets

    \r\n {this.state.isSFIDNull &&
    Account not connected to ticket system to retrieve tickets
    }\r\n
    \r\n {!this.state.isSFIDNull &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n {(this.state.LocationOptions && this.state.LocationOptions.length > 0) && (this.state.ContactOptions && this.state.ContactOptions.length > 0)\r\n ? this.ticketFilterDropDown('locations') : null}\r\n {(this.state.LocationOptions && this.state.LocationOptions.length > 0) && (this.state.ContactOptions && this.state.ContactOptions.length > 0)\r\n ? this.ticketFilterDropDown('contacts') : null}\r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    }\r\n
    \r\n
    \r\n )\r\n } else {\r\n return null;\r\n }\r\n\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { Grid, GridColumn as Column, GridCellProps, GridCell, GridToolbar, GridDetailRow } from '@progress/kendo-react-grid';\r\nimport EllipsisWithTooltip from 'react-ellipsis-with-tooltip';\r\n\r\n\r\nclass ToolTipCell extends GridCell {\r\n\r\n render() {\r\n let fieldName = this.props.field;\r\n return (\r\n \r\n \r\n
    {this.props.dataItem[fieldName]}
    \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default ToolTipCell;","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport _ from 'lodash';\r\nimport ToolTipCell from '../../components/toolTipCell';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport * as icons from '../../scripts/icons';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\n\r\nexport default class StarredTicketingWidget extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n Listings: [],\r\n loading: false,\r\n FullListings: [],\r\n Sort: [{ field: \"TicketNum\", dir: \"desc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n LocationAccountNumber: '',\r\n ContactId: '',\r\n Term: '',\r\n QueryLocator: '',\r\n skip: 0,\r\n take: 5\r\n }\r\n\r\n const favoriteTicket = this.favoriteTicket.bind(this);\r\n const transitionToTicketDetail = this.props.transitionToTicketDetail.bind(this);\r\n this.sortChange = this.sortChange.bind(this);\r\n this.pageChange = this.pageChange.bind(this);\r\n\r\n class FavoriteButton extends GridCell {\r\n render() {\r\n let ticket = this.props.dataItem;\r\n const cursorType = ticket.isTogglingStatus === true ? 'wait' : 'pointer';\r\n let cannotFavorite = ticket.TicketId == \"\" && ticket.TicketId == \"\";\r\n if (cannotFavorite) {\r\n return \r\n } else {\r\n return (\r\n \r\n favoriteTicket(ticket, ticket.TicketId)}\r\n style={{cursor: cursorType}}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n class DataLink extends GridCell {\r\n\r\n render() {\r\n let { TicketNumber, TicketId } = this.props.dataItem;\r\n return (\r\n \r\n transitionToTicketDetail(TicketId)}\r\n >{TicketNumber}\r\n \r\n )\r\n\r\n }\r\n }\r\n this.favBtn = FavoriteButton;\r\n this.DataLink = DataLink;\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchTicketList();\r\n }\r\n\r\n fetchTicketList = async () => {\r\n await this.setState({ loading: true })\r\n let apiPath = `admin/GetTicketList`;\r\n apiPath += `?LocationAccountNumber=${this.state.LocationAccountNumber}&ContactId=${this.state.ContactId}&filter=STARRED&term=${this.state.Term}&QueryLocator=${this.state.QueryLocator}`;\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n let { QueryLocator, TicketList } = data;\r\n TicketList.forEach(ticket => { // convert Escalated boolean to string in order to filter\r\n ticket.isTogglingStatus = false;\r\n if (ticket.LastModifiedDate) {\r\n ticket.LastModifiedDate += ' ' + sessionStorage.userTimeZone;\r\n }\r\n if (ticket.Escalated === true) {\r\n ticket.Escalated = 'yes';\r\n } else {\r\n ticket.Escalated = 'no';\r\n }\r\n });\r\n this.setState({ Listings: TicketList, FullListings: TicketList, QueryLocator: QueryLocator, loading: false });\r\n } else {\r\n this.setState({ Listings: [], FullListings: [], loading: false });\r\n }\r\n\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n pageChange(event) {\r\n this.setState({\r\n skip: event.page.skip,\r\n take: event.page.take,\r\n });\r\n }\r\n\r\n gridContent = () => {\r\n let data = this.state.Listings\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n if (this.state.Listings && this.state.Listings.length > 0) {\r\n let columnWidth = '80px'\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n } else {\r\n return

    No Available Tickets

    \r\n }\r\n }\r\n }\r\n\r\n favoriteTicket = async (ticket) => {\r\n //get the current ticket from the tickets list\r\n //update the property isTogglingStatus = true\r\n ticket.isTogglingStatus = true;\r\n let newTickets = this.state.Listings.slice();\r\n let index = _.findIndex(newTickets, s => s.TicketId == ticket.TicketId);\r\n newTickets[index] = ticket;\r\n this.setState({ Listings: newTickets });\r\n if (ticket) {\r\n let apiPath = `admin/UpdateTicket`;\r\n let dto = {\r\n TicketId: ticket.TicketId,\r\n Starred: !ticket.Starred// === false ? true : false,\r\n };\r\n let response = await apiCalls.post(apiPath, 'PATCH', JSON.stringify(dto)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n this.updateTicket(ticket);\r\n } else {\r\n ticket.isTogglingStatus = false;\r\n newTickets[index] = ticket;\r\n this.setState({ Listings: newTickets });\r\n }\r\n }\r\n }\r\n\r\n updateTicket = (item, newFavServiceId = null) => {\r\n let newIsFavState = item.Starred ? false : true;\r\n let updatedItem = new Object(item);\r\n updatedItem.Starred = newIsFavState;\r\n updatedItem.isTogglingStatus = false;\r\n if (newFavServiceId)\r\n updatedItem.FavoriteServiceId = newFavServiceId;\r\n let newTickets = this.state.Listings.slice();\r\n let index = _.findIndex(newTickets, s => s.TicketId == updatedItem.TicketId);\r\n newTickets[index] = updatedItem;\r\n this.setState({ Listings: newTickets });\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullListings;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'TicketNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Subject', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Priority', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Escalated', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Status', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'LastModifiedDate', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n this.setState({ Listings: services })\r\n }\r\n else {\r\n this.setState({ Listings: fullDetails });\r\n }\r\n }\r\n\r\n sortChange(event) {\r\n this.setState({\r\n Listings: this.sortServices(event.sort),\r\n sort: event.sort\r\n });\r\n }\r\n\r\n sortServices(sort) {\r\n var listings = [];\r\n if (this.state !== undefined) {\r\n listings = this.state.Listings.slice();\r\n }\r\n return orderBy(listings, sort);\r\n }\r\n\r\n render() {\r\n if(sessionStorage.enterpriseType==='VOICE' ||sessionStorage.enterpriseType==='DATA'|| sessionStorage.enterpriseType==='MIXED'){\r\n return (\r\n
    \r\n
    \r\n

    Starred Tickets \r\n  {!this.state.loading ? this.state.Listings.length : null} \r\n

    \r\n {this.state.loading ? null :\r\n
    \r\n \r\n \r\n \r\n
    }\r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    \r\n {!this.state.loading ?
    \r\n {sessionStorage.hasTicketing === 'FULL' ? Enter New Ticket : null}\r\n View All Tickets\r\n
    : null}\r\n
    \r\n )\r\n }else{\r\n return null;\r\n }\r\n \r\n }\r\n}","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport _ from 'lodash';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport { connect } from 'react-redux';\r\nimport moment from 'moment';\r\n\r\nclass VmReport extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true,\r\n hasVmUsageReport: false,\r\n Listings: [],\r\n Sort: [{ field: \"VMLastAccessDateTimeDisplay\", dir: \"desc\" }],\r\n hasPermission: sessionStorage.hasVmUsageReport,\r\n };\r\n\r\n class CustomWrapperCell extends GridCell {\r\n\r\n render() {\r\n let fieldName = this.props.field;\r\n let styles = fieldName === \"VMLastAccessDateTime\" ? { overflowWrap: \"break-word\" } : { overflowWrap: \"auto\" };\r\n let cellData = fieldName === \"ServiceNumber\" && this.props.dataItem[\"IsExtensionOnly\"] ? this.props.dataItem[\"Extension\"] : this.props.dataItem[fieldName];\r\n return (\r\n \r\n
    {cellData}
    \r\n \r\n )\r\n }\r\n }\r\n\r\n this.wrapper = CustomWrapperCell;\r\n }\r\n\r\n componentDidMount = (props) => {\r\n let { hasVmUsageReport } = sessionStorage;\r\n if (hasVmUsageReport === \"true\") {\r\n this.setState({hasVmUsageReport: true});\r\n this.fetchVm();\r\n }\r\n }\r\n\r\n componentWillReceiveProps(props) {\r\n if (this.state.hasVmUsageReport !== props.hasVmUsageReport) {\r\n this.setState({hasVmUsageReport: props.hasVmUsageReport});\r\n this.fetchVm();\r\n }\r\n }\r\n\r\n fetchVm = async () => {\r\n await this.setState({ loading: true });\r\n let path = `vm/VmReportList`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data && data.length > 0) {\r\n data = data.filter((itm) => {\r\n if (itm.VMLastAccessDateTime || itm.VMLastAccessDateTime !== null) {\r\n return itm;\r\n }\r\n }).slice(0, 5);\r\n data.forEach(itm => { // convert Escalated boolean to string in order to filter\r\n if (itm.VMLastAccessDateTime) {\r\n itm.VMLastAccessDateTimeDisplay =moment.utc(itm.VMLastAccessDateTime).local().format('MM-DD-YYYY hh:mm:ss A') + ` ${sessionStorage.userTimeZone}`;\r\n }\r\n });\r\n this.setState({ Listings: data, FullListings: data, loading: false });\r\n } else {\r\n this.setState({ Listings: [], FullListings: [], loading: false });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n if (this.state.Listings && this.state.Listings.length > 0) {\r\n let columnWidth = '100px';\r\n let columnWidthStats = '60px'\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n )\r\n } else {\r\n return

    No Available Usage Data

    \r\n }\r\n }\r\n }\r\n\r\n sortChange = (event) => {\r\n\r\n let sort = event.sort;\r\n if (sort && sort.length > 0)\r\n {\r\n //VMLastAccessDateTimeDisplay Sort: [{ field: \"VMLastAccessDateTime\", dir: \"desc\" }],\r\n if (sort[0].field === 'VMLastAccessDateTimeDisplay')\r\n sort = [{ field: \"VMLastAccessDateTime\", dir: sort[0].dir }];\r\n\r\n this.setState({\r\n Listings: orderBy(this.state.Listings, sort),\r\n Sort: event.sort\r\n });\r\n } else {\r\n this.setState({Sort: []});\r\n }\r\n }\r\n\r\n render() {\r\n if(sessionStorage.enterpriseType==='VOICE' || sessionStorage.enterpriseType==='MIXED'){\r\n return (\r\n
    \r\n
    \r\n

    Voicemail Usage Report

    \r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    \r\n {!this.state.loading ?
    \r\n Full Report\r\n
    : null}\r\n
    \r\n
    \r\n )\r\n }else{\r\n return null\r\n }\r\n }\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n hasVmUsageReport: state.reducer.hasVmUsageReport\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(VmReport);","import React, { Component } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport * as apiCalls from \"./../../requests/api_calls\";\r\nimport { DataLoadingSpinner } from \"./../../components/spinners\";\r\n\r\nexport default class CircuitCard extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n CircuitList: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchCircuits();\r\n }\r\n\r\n fetchCircuits = async () => {\r\n let apiPath = \"admin/GetCircuitsList\";\r\n //await this.setState({ loading: true });\r\n await apiCalls.fetchData(apiPath).then((data) => {\r\n //setLoading(true);\r\n if (data) {\r\n // data.forEach(async (itm) => {\r\n // if (itm.CheckMkHostName && itm.CheckMkHostName !== \"\") {\r\n // let obj = await this.fetchActiveHosts(itm.CheckMkHostName);\r\n // let tt = JSON.parse(obj).ResultDetail;\r\n // let ti = JSON.parse(tt).state_text;\r\n // if (ti === \"OK\") {\r\n // itm.isActive = true;\r\n // } else {\r\n // itm.isActive = false;\r\n // }\r\n // }\r\n this.setState({\r\n loading: false,\r\n CircuitList: data,\r\n });\r\n //});\r\n } else {\r\n this.setState({ loading: false, CircuitList: null });\r\n }\r\n });\r\n // setTimeout(() => {\r\n // this.setState({ loading: false });\r\n // }, 3000);\r\n };\r\n\r\n // fetchActiveHosts = async (hostname) => {\r\n // let apiPath = `admin/CircuitMonitoring/GetCurrentStatusForHost?hostname=${hostname}`;\r\n // return await apiCalls.fetchData(apiPath).then(data => data).catch(err => console.error(err));\r\n // };\r\n\r\n\r\n cardContent = () => {\r\n let { loading, CircuitList } = this.state;\r\n if (loading) {\r\n return (\r\n\r\n
    \r\n \r\n
    \r\n\r\n );\r\n } else {\r\n if (CircuitList) {\r\n let upCircuits = CircuitList.filter(itm => itm.ActiveStatus == \"active\").length;\r\n let downCircuits = CircuitList.filter(itm => itm.ActiveStatus == \"inactive\").length;\r\n let offlineCircuits = CircuitList.filter(itm => itm.ActiveStatus == \"Offline\").length;\r\n return (\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n

    {upCircuits}

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

    {downCircuits}

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

    {offlineCircuits}

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

    {CircuitList.length}

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

    0

    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n else {\r\n return (\r\n
    \r\n

    No Available Data

    \r\n
    \r\n )\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n if (sessionStorage.enterpriseType === 'DATA' || sessionStorage.enterpriseType === 'MIXED') {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Circuit Summary

    \r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n else {\r\n return null\r\n }\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { withRouter, Link } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport BillingCard from './admin/billing_card';\r\nimport FavServices from './admin/fav_services';\r\nimport CallChart from './admin/call_chart';\r\nimport QuickView from './admin/quick_view';\r\nimport Devices from './admin/devices';\r\nimport ActivityHistory from './admin/activity_history';\r\nimport TicketingCountsWidget from './admin/ticket_count_widget';\r\nimport StarredTicketingWidget from './admin/starred_tickets_widget';\r\nimport Masonry from \"react-masonry-component\";\r\nimport VmReport from './admin/vm_report_widget';\r\nimport CircuitCard from './admin/circuits_card';\r\nimport { checkBillingAccount } from '../utility/utility';\r\nimport { fetchData } from \"./../requests/api_calls\";\r\nimport { userIsSuperAdmin } from '../scripts/helper';\r\n\r\nclass Admin extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const favServices = this.favServices.bind(this);\r\n const activityHistory = this.activityHistory.bind(this);\r\n const starredTickets = this.starredTickets.bind(this);\r\n const quickView = this.quickView.bind(this);\r\n const devices = this.devices.bind(this);\r\n const callChart = this.callChart.bind(this);\r\n const ticketingCount = this.ticketingCount.bind(this);\r\n\r\n let widgets = [\r\n { toggle: 'showFavServices', functionName: favServices, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showActivityHistory', functionName: activityHistory, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showStarredTicketingWidget', functionName: starredTickets, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showQuickView', functionName: quickView, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showDevices', functionName: devices, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showCallChart', functionName: callChart, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showTicketingCountsWidget', functionName: ticketingCount, widgetRow: 0, widgetColumn: 0 }\r\n ];\r\n\r\n let ipTrunkingOnly = sessionStorage.isIpTrunkingOnly !== null && sessionStorage.isIpTrunkingOnly !== undefined ? sessionStorage.isIpTrunkingOnly : false;\r\n\r\n this.state = {\r\n hasTicketing: sessionStorage.hasTicketing ? sessionStorage.hasTicketing : 'NONE',\r\n hasDevices: false,\r\n ipTrunkingOnly: ipTrunkingOnly,\r\n showFavServices: true,\r\n showActivityHistory: true,\r\n showStarredTicketingWidget: true,\r\n showQuickView: true,\r\n showDevices: ipTrunkingOnly ? false : true,\r\n showCallChart: true,\r\n showTicketingCountsWidget: true,\r\n widgets: widgets\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n //this.fetchTermsAndConditions();\r\n }\r\n\r\n // fetchTermsAndConditions = async () => {\r\n // let path = \"admin/EnterpriseTC\";\r\n // await fetchData(path).then(data => {\r\n // if (data) {\r\n // sessionStorage.setItem('entTCFlag', data[0].TCFlag);\r\n // }\r\n // }).catch(err => console.error(err));\r\n // }\r\n\r\n componentWillReceiveProps = (props) => {\r\n let state = this.state;\r\n if (state.hasTicketing !== props.hasTicketing || state.hasDevices !== props.hasDevices || state.ipTrunkingOnly !== props.ipTrunkingOnly) //in the future this may change if user can customize their dashboard\r\n this.setState({\r\n hasTicketing: props.hasTicketing,\r\n hasDevices: props.hasDevices,\r\n showFavServices: true,\r\n showActivityHistory: true,\r\n showStarredTicketingWidget: ((!props.hasTicketing && state.hasTicketing === false) || props.hasTicketing === 'NONE') ? false : true,\r\n showQuickView: true,\r\n showDevices: (props.ipTrunkingOnly !== null && props.ipTrunkingOnly !== undefined && props.ipTrunkingOnly === true) ? false : state.showDevices,\r\n showCallChart: true,\r\n showTicketingCountsWidget: ((!props.hasTicketing && state.hasTicketing === false) || props.hasTicketing === 'NONE') ? false : true,\r\n })\r\n }\r\n\r\n transitionToTicketDetail = (ticketId) => {\r\n this.props.history.push(`/ticket/${ticketId}`);\r\n }\r\n\r\n transitionToNewTicket = () => {\r\n this.props.history.push('/new_ticket');\r\n }\r\n\r\n transitionToAllTickets = () => {\r\n this.props.history.push('/tickets_all');\r\n }\r\n\r\n transitionToCallLogDetails = () => {\r\n this.props.history.push('/enterpise_call_logs_all');\r\n }\r\n\r\n transitionToVmReport = () => {\r\n this.props.history.push(`/vm_report_full`);\r\n }\r\n\r\n favServices = () => {\r\n return (\r\n \r\n );\r\n }\r\n\r\n activityHistory = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n starredTickets = () => {\r\n if (this.state.hasTicketing && this.state.hasTicketing !== 'NONE')\r\n return (\r\n \r\n );\r\n return null;\r\n }\r\n\r\n quickView = () => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n devices = () => {\r\n return (\r\n \r\n );\r\n }\r\n callChart = () => {\r\n return (\r\n \r\n )\r\n }\r\n ticketingCount = () => {\r\n if (this.state.hasTicketing && this.state.hasTicketing !== 'NONE')\r\n return (\r\n \r\n );\r\n return null;\r\n }\r\n\r\n vmReport = () => {\r\n let { hasVmUsageReport } = sessionStorage;\r\n if (hasVmUsageReport === \"true\") {\r\n return (\r\n \r\n )\r\n } else return;\r\n\r\n }\r\n\r\n\r\n render() {\r\n let hasTicketing = this.state.hasTicketing ? (this.state.hasTicketing !== 'NONE' ? true : false) : false;\r\n let hasDevices = this.state.showDevices; //todo: this.state.hasDevices could be incorporated if Device checkbox in rpx is not checked?\r\n const isSuperAdmin = userIsSuperAdmin();\r\n\r\n // Adding isSuperAdmin check to limit BillingCard to SUPER_ADMIN users\r\n // Remove or modify if content of this first section changes\r\n if (checkBillingAccount() && isSuperAdmin) { // only show billing widget for select Alteva, CNG & DCT accounts\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n } else {\r\n return (\r\n
    \r\n {isSuperAdmin && sessionStorage.userEnterpriseNumber !== \"3904000825\" && }\r\n \r\n
    \r\n \r\n \r\n {hasTicketing ? : null}\r\n {sessionStorage.enterpriseType === 'VOICE' ? null : }\r\n
    \r\n
    \r\n \r\n {hasDevices ? : null}\r\n {this.vmReport()}\r\n
    \r\n
    \r\n \r\n {hasTicketing ? : null}\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n hasTicketing: state.reducer.hasTicketing,\r\n hasDevices: state.reducer.hasDevices,\r\n ipTrunkingOnly: state.reducer.isIpTrunkingOnly\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(withRouter(Admin));","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { fetchData, post } from '../../../requests/api_calls';\r\nimport format from 'string-format';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport * as config from '../../../requests/config';\r\nimport * as EmailValidator from 'email-validator';\r\n\r\nconst ServiceNumber = \"ServiceNumber\",\r\n PBXUserID = \"PBXUserID\",\r\n EnterpriseId = \"EnterpriseId\",\r\n UserId = \"UserId\",\r\n IMAPID = \"IMAPID\",\r\n DialingFirstName = \"DialingFirstName\",\r\n DialingLastName = \"DialingLastName\",\r\n FirstName = \"FirstName \",\r\n LastName = \"LastName \",\r\n Title = \"Title\",\r\n Department = \"Department\",\r\n Language= \"Language\",\r\n Location=\"Location\",\r\n Timezone= \"Timezone\",\r\n NetworkClassOfService = \"NetworkClassofService\",\r\n AlternatePhone = \"AlternatePhone\",\r\n Email = \"Email\",\r\n Address1 = \"Address1\",\r\n Address2 = \"Address2\",\r\n City = \"City\",\r\n State = \"State\",\r\n Country = \"Country\",\r\n Zip = \"Zip\";\r\n\r\nclass EditProfileModal extends Component {\r\n\r\n initialState=(props)=>{\r\n return {\r\n visible: false,\r\n showModal: false,\r\n loading: true, \r\n loading_error: \"\",\r\n saving_loading: false,\r\n saving_show_success: false,\r\n saving_error_message: \"\",\r\n saving_show_error: false,\r\n currentUser: props.CurrentUserProfile,\r\n admin: props.isAdmin,\r\n GroupName: props.GroupName,\r\n ServiceNumber: props.ServiceNumber,\r\n hasE911: props.HasE911,\r\n isIPTrunking: sessionStorage.isSelectedServiceIpTrunking && sessionStorage.isSelectedServiceIpTrunking.toString() === 'true' ? true : false,\r\n profile:{\r\n PBXUserID: props.PBXUserID,\r\n EnterpriseId: props.ParentAccountNumber, \r\n UserId: props.PBXUserID,\r\n IMAPID: \"\",\r\n CallingLineFirstName: \"\",\r\n CallingLineLastName: \"\",\r\n DialingFirstName: \"\",\r\n DialingLastName: \"\",\r\n YahooId: \"\",\r\n FirstName: \"\",\r\n LastName: \"\",\r\n Title: \"\",\r\n Department: {\r\n ServiceProviderId: \"\",\r\n GroupId: \"\",\r\n Name: \"\"\r\n },\r\n Language: {\r\n ID: \"\",\r\n Name: \"\"\r\n },\r\n Timezone: {\r\n ID: \"\",\r\n Name: \"\"\r\n },\r\n NetworkClassOfService: {\r\n ID: \"\",\r\n Name: \"\"\r\n },\r\n AlternatePhone: \"\",\r\n Email: \"\",\r\n Address1: \"\",\r\n Address2: \"\",\r\n City: \"\",\r\n State: {\r\n ID: \"\",\r\n Name: \"\"\r\n },\r\n Country: \"\",\r\n Zip: \"Zip\",\r\n States:[],\r\n Languages:[],\r\n Timezones:[],\r\n Departments:[],\r\n NetworkClassOfServices:[]\r\n },\r\n valid: true\r\n }\r\n }\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.updateByProps = this.updateByProps.bind(this);\r\n this.state = this.initialState(props);\r\n }\r\n\r\n handleClose() {\r\n let state = {...this.state};\r\n state.showModal = false;\r\n this.setState(state);\r\n }\r\n\r\n handleShow() {\r\n let state = {...this.state};\r\n state.showModal = true;\r\n state.loading = true;\r\n state.saving_show_error = false;\r\n state.saving_loading= false;\r\n state.saving_show_success= false;\r\n state.saving_error_message= \"\";\r\n this.setState(state);\r\n this.fetchProfileInfo();\r\n }\r\n\r\n fetchProfileInfo=()=>{\r\n var apiUrl = ''\r\n if(this.state.currentUser && this.state.admin){\r\n apiUrl = `admin/GetAdminProfileEdit?userId=${this.state.currentUser.UserId}`;\r\n this.fetchAdminProfileInfo(apiUrl);\r\n }\r\n else{\r\n apiUrl = format(\"usr/GetUserProfileEdit?ServiceNumber={ServiceNumber}&PBXUserID={PBXUserID}\", this.props);\r\n this.fetchUserProfileInfo(apiUrl);\r\n }\r\n }\r\n\r\n fetchUserProfileInfo=(apiPath, errorMsg)=>{\r\n fetchData(apiPath).then((data) => {\r\n let state = {...this.state};\r\n state.loading = false;\r\n if (data) {\r\n state.admin = false;\r\n state.loading_error = \"\";\r\n state.profile = data;\r\n let blankState = { ID: \"\", Name: \"\"};\r\n //TODO: create a separate path for Broadsoft v Other Users so that properties are loaded properly\r\n //if (this.props.CurrentUserProfile && this.props.CurrentUserProfile.PBXUserID && this.props.CurrentUserProfile.PBXUserID !== ''){ //TODO: else if (user's service is broadsoft)\r\n state.profile.States.splice(0,0, blankState); \r\n\r\n state.profile.CallingLineFirstName = state.profile.CallingLineFirstName || state.profile.FirstName; //in BWOCI this is how these fields are set\r\n state.profile.CallingLineLastName = state.profile.CallingLineLastName || state.profile.LastName;\r\n\r\n if(!state.profile.Department.ServiceProviderId){\r\n if(state.profile.Departments.length > 0){\r\n state.profile.Department.ServiceProviderId = state.profile.Departments[0].ServiceProviderId;\r\n state.profile.Department.GroupId = state.profile.Departments[0].GroupId;\r\n state.profile.Department.Name = state.profile.Departments[0].Name;\r\n }\r\n }\r\n if(!state.profile.Language.ID){\r\n if(state.profile.Languages.length > 0){\r\n state.profile.Language.ID = state.profile.Languages[0].ID;\r\n state.profile.Language.Name = state.profile.Languages[0].Name;\r\n }\r\n \r\n }\r\n if(!state.profile.Timezone.ID){\r\n if(state.profile.Timezones.length > 0){\r\n state.profile.Timezone.ID = state.profile.Timezones[0].ID;\r\n state.profile.Timezone.Name = state.profile.Timezones[0].Name;\r\n }\r\n }\r\n if(!state.profile.State.ID){\r\n if(state.profile.States.length > 0){\r\n state.profile.State.ID = state.profile.States[0].ID;\r\n state.profile.State.Name = state.profile.States[0].Name;\r\n }\r\n }\r\n //}\r\n }\r\n else{\r\n state.loading_error = \"Failed to Load\"\r\n }\r\n this.setState(state);\r\n }).catch((message)=>{\r\n this.setState({...{loading:false, fetch_error: message.toString()}});\r\n });\r\n }\r\n\r\n fetchAdminProfileInfo=(apiPath, errorMsg)=>{\r\n fetchData(apiPath).then((data) => {\r\n let state = {...this.state};\r\n state.loading = false;\r\n if (data) {\r\n state.admin = true;\r\n state.loading_error = \"\";\r\n state.profile = data;\r\n }\r\n else{\r\n state.loading_error = \"Failed to Load\"\r\n }\r\n this.setState(state);\r\n }).catch((message)=>{\r\n this.setState({...{loading:false, fetch_error: message.toString()}});\r\n });\r\n }\r\n\r\n getSaveBody = (profile) => {\r\n return {\r\n ServiceNumber: this.state.ServiceNumber,\r\n PBXUserID: profile.PBXUserID,\r\n CustomerProductId: 0,\r\n FirstName: profile.FirstName,\r\n LastName: profile.LastName,\r\n Title: profile.Title,\r\n DepartmentName: profile.Department.Name,\r\n Language: profile.Language.Name,\r\n TimeZone: profile.Timezone.ID,\r\n NCOS: profile.NetworkClassOfService.ID,\r\n Email: profile.Email,\r\n Location: profile.Location,\r\n Address1: profile.Address1,\r\n Address2: profile.Address2,\r\n City: profile.City,\r\n State: profile.State.ID,\r\n Zip: profile.Zip,\r\n IMAP_ID: profile.IMAPID,\r\n YahooId: profile.YahooId,\r\n Mobile: profile.Mobile,\r\n Pager: profile.Pager,\r\n CallingLineFirstName: profile.CallingLineFirstName,\r\n CallingLineLastName: profile.CallingLineLastName,\r\n DialingFirstName: profile.DialingFirstName,\r\n DialingLastName: profile.DialingLastName,\r\n Country: profile.Country\r\n };\r\n }\r\n\r\n handleSaveNew=()=> {\r\n let state = {...this.state};\r\n state.saving_loading = true;\r\n state.saving_show_success = false;\r\n this.setState(state);\r\n let body = this.state.currentUser && this.state.admin? JSON.stringify(state.profile) : JSON.stringify(this.getSaveBody(state.profile));\r\n\t\tlet headers = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n\r\n let api = '';\r\n if (this.state.currentUser && this.state.admin && !this.state.ServiceId) \r\n api = \"admin/SetAdminProfileEdit\"\r\n else\r\n api = \"usr/UpdateUserProfile\";\r\n post(api,\"POST\", body, headers)\r\n\t\t.then(response =>{\r\n let state = {...this.state};\r\n\t\t\tif(response.ok){\r\n state.saving_show_success = true;\r\n state.saving_loading = false;\r\n state.saving_show_error = false;\r\n this.props.updateProfilePage(this.state.profile.FirstName, \r\n this.state.profile.LastName, \r\n this.state.profile.Title ? this.state.profile.Title : '',\r\n this.state.profile.Department ? this.state.profile.Department.Name : '',\r\n this.state.profile.Email,\r\n this.state.profile.Language ? this.state.profile.Language.Name : ''\r\n );\r\n\t\t\t}\r\n\t\t\telse{\r\n state.saving_loading = false;\r\n state.saving_show_error = true;\r\n\t\t\t\tstate.saving_error_message = \"Failed Save\";\r\n }\r\n this.setState(state);\r\n\t\t})\r\n\t\t.catch((message)=>{\r\n console.log(message);\r\n let state = {...this.state};\r\n state.saving_loading = false;\r\n state.saving_show_error = true;\r\n state.saving_error_message = \"Failed Save\";\r\n this.setState(state);\r\n\t\t});\r\n }\r\n\r\n\r\n handleSave=()=>{\r\n let state = {...this.state};\r\n state.saving_loading = true;\r\n state.saving_show_success = false;\r\n this.setState(state);\r\n let body = JSON.stringify(state.profile);\r\n\t\tlet headers = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n\r\n let api = this.state.currentUser && this.state.admin? \"admin/SetAdminProfileEdit\": \"usr/SetUserProfileEdit\";\r\n post(api,\"POST\", body, headers)\r\n\t\t.then(response =>{\r\n let state = {...this.state};\r\n\t\t\tif(response.ok){\r\n state.saving_show_success = true;\r\n state.saving_loading = false;\r\n state.saving_show_error = false;\r\n\t\t\t}\r\n\t\t\telse{\r\n state.saving_loading = false;\r\n state.saving_show_error = true;\r\n\t\t\t\tstate.saving_error_message = \"Failed Save\";\r\n }\r\n this.setState(state);\r\n\t\t})\r\n\t\t.catch((message)=>{\r\n console.log(message);\r\n let state = {...this.state};\r\n state.saving_loading = false;\r\n state.saving_show_error = true;\r\n state.saving_error_message = \"Failed Save\";\r\n this.setState(state);\r\n\t\t});\r\n }\r\n\r\n handleOnChange=(field, event)=>{\r\n\r\n let state = {...this.state};\r\n switch(field){\r\n case FirstName:\r\n state.profile.FirstName = event.target.value;\r\n state.profile.CallingLineFirstName = state.profile.FirstName;\r\n break;\r\n case LastName:\r\n state.profile.LastName = event.target.value;\r\n state.profile.CallingLineLastName = state.profile.LastName;\r\n break;\r\n case Department:\r\n let department = event.target.value.split(\"|\");\r\n state.profile.Department.ServiceProviderId = department[0];\r\n state.profile.Department.GroupId = department[1];\r\n state.profile.Department.Name = department[2];\r\n break;\r\n case Language:\r\n state.profile.Language.ID = event.target.value;\r\n state.profile.Language.Name = state.profile.Languages.filter(e=> e.ID === state.profile.Language.ID)[0].Name;\r\n break;\r\n case Timezone:\r\n state.profile.Timezone.ID = event.target.value;\r\n state.profile.Timezone.Name = state.profile.Timezones.filter(e=> e.ID === state.profile.Timezone.ID)[0].Name;\r\n break;\r\n case NetworkClassOfService:\r\n state.profile.NetworkClassOfService.ID = event.target.value;\r\n break;\r\n case DialingFirstName:\r\n case DialingLastName:\r\n case Title:\r\n case AlternatePhone:\r\n case Email:\r\n case Location:\r\n case Address1:\r\n case Address2:\r\n case City:\r\n case Zip:\r\n case Country:\r\n state.profile[field] = event.target.value;\r\n break;\r\n case State:\r\n state.profile.State.ID = event.target.value;\r\n state.profile.State.Name = state.profile.States.filter(e=> e.ID === state.profile.State.ID)[0].Name;\r\n break;\r\n }\r\n\r\n if(state.profile.Email && !EmailValidator.validate(state.profile.Email))\r\n state.valid = false;\r\n else\r\n state.valid = true;\r\n \r\n this.setState(state);\r\n }\r\n\r\n componentWillReceiveProps(nextProps){\r\n this.updateByProps(nextProps);\r\n }\r\n\r\n componentDidMount() {\r\n this.updateByProps(this.props);\r\n }\r\n \r\n updateByProps=(props)=>{\r\n let state = {...this.state}; \r\n state.admin = props.isAdmin;\r\n state.profile = props.CurrentUserProfile;\r\n if(props.CurrentUserProfile && props.isAdmin){ \r\n state.visible = true;\r\n this.setState(state);\r\n }\r\n else{\r\n let state = {...this.state};\r\n state.visible = false;\r\n this.setState(state);\r\n let ServiceNumber = '';\r\n let PBXUserID = '';\r\n if ((!props.ServiceNumber || props.ServiceNumber === '') && (!props.PBXUserID || props.PBXUserID === ''))\r\n {\r\n console.log('ServiceNumber: ' + state.ServiceNumber)\r\n console.log('PBXUserID: ' + state.PBXUserID)\r\n } else {\r\n ServiceNumber = props.ServiceNumber\r\n PBXUserID = props.PBXUserID;\r\n }\r\n\r\n let editAvailableApi = format('usr/ProfileEditAvailable?ServiceNumber={ServiceNumber}&PBXUserID={PBXUserID}',props);\r\n fetchData(editAvailableApi).then((data) => {\r\n let state = {...this.state};\r\n if (data) { \r\n state.visible = true;\r\n this.setState(state);\r\n }\r\n }).catch((message)=>{\r\n console.log(message)\r\n });\r\n }\r\n \r\n } \r\n\r\n getModalBodyContent=()=>{\r\n let loading = this.state.loading;\r\n if(loading){\r\n return ( );\r\n }\r\n let loading_error = this.state.loading_error;\r\n if(loading_error){\r\n return (
    {loading_error}
    );\r\n }\r\n\r\n if(this.props.CurrentUserProfile && this.state.admin){\r\n return this.getAdminForm();\r\n }\r\n else if (this.props.CurrentUserProfile && this.props.CurrentUserProfile.PBXUserId && this.props.CurrentUserProfile.PBXUserId !== '' && this.state.isIPTrunking === false){ //TODO: else if (user's service is broadsoft)\r\n return this.getBroadsoftUserForm();\r\n } else\r\n return this.getUserForm(); \r\n }\r\n\r\n getBroadsoftUserForm=()=>{\r\n let profile = this.state.profile;\r\n let headerValues = this.props.GetHeaderValues();\r\n let blankState = { ID: \"\", Name: \"\"};\r\n let stateDropDownOptions = profile.States.map((x,index)=>{\r\n return {id:x.ID, name:x.Name};\r\n });\r\n stateDropDownOptions.splice(0,0, blankState);\r\n return (\r\n
    \r\n

    Profile allows you to view and maintain your profile information. The information filled in specifies your primary phone number, extension, and device that are used for handling calls. Filling in the additional information section allows your mobile phone, pager, and other information to be visible to other group members in the group phone list. Some of this information can only be modified by your administrator.

    \r\n
    \r\n

    Enterprise ID: {headerValues.EnterpriseId}
    Group: {headerValues.GroupId}
    User ID: {profile.PBXUserID ? profile.PBXUserID : profile.UserId}
    IMAP ID: {profile.ImapID}

    \r\n

    Calling Line ID First Name: {profile.CallingLineFirstName}
    Calling Line ID Last Name: {profile.CallingLineLastName}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n { return {id: x.ServiceProviderId +\"|\"+ x.GroupId + \"|\" + x.Name, name: x.Name}} )\r\n }\r\n onChange={this.handleOnChange}\r\n />\r\n
    \r\n
    \r\n {\r\n return {id:x.ID, name:x.Name};\r\n })\r\n }\r\n onChange={this.handleOnChange}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n return {id:x.ID, name:x.Name};\r\n })\r\n }\r\n onChange={this.handleOnChange}\r\n />\r\n
    \r\n
    \r\n {\r\n return {id:x.ID, name:x.Name};\r\n })\r\n }\r\n onChange={this.handleOnChange}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.validateEmail(profile.Email)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n \r\n
    \r\n this.handleOnChange(Address2,e)}/>\r\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 getAdminForm=()=>{\r\n let profile = this.state.profile;\r\n let headerValues = this.props.GetHeaderValues();\r\n let blankState = { ID: \"\", Name: \"\"};\r\n let stateDropDownOptions = profile.States.map((x,index)=>{\r\n return {id:x.ID, name:x.Name};\r\n });\r\n stateDropDownOptions.splice(0,0, blankState);\r\n return (\r\n
    \r\n

    Profile allows you to view and maintain your profile information. The information filled in specifies your primary phone number, extension, and device that are used for handling calls. Filling in the additional information section allows your mobile phone, pager, and other information to be visible to other group members in the group phone list. Some of this information can only be modified by your administrator.

    \r\n
    \r\n

    Enterprise ID: {headerValues.EnterpriseId}\r\n
    Group: {headerValues.GroupId}\r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n this.handleOnChange(Address2,e)}/>\r\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 getUserForm = () => {\r\n let profile = this.state.profile;\r\n let headerValues = this.props.GetHeaderValues();\r\n let blankState = { ID: \"\", Name: \"\"};\r\n let stateDropDownOptions = profile.States.map((x,index)=>{\r\n return {id:x.ID, name:x.Name};\r\n });\r\n stateDropDownOptions.splice(0,0, blankState);\r\n return (\r\n
    \r\n

    Profile allows you to view and maintain your profile information. The information filled in specifies your primary phone number, extension, and device that are used for handling calls. Filling in the additional information section allows your mobile phone, pager, and other information to be visible to other group members in the group phone list. Some of this information can only be modified by your administrator.

    \r\n
    \r\n

    Enterprise ID: {headerValues.EnterpriseId}
    Group: {headerValues.GroupId}
    User ID: {profile.PBXUserID ? profile.PBXUserID : profile.UserId}

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {this.validateEmail(profile.Email)} \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n { return {id: x.ServiceProviderId +\"|\"+ x.GroupId + \"|\" + x.Name, name: x.Name}} )\r\n }\r\n onChange={this.handleOnChange}\r\n enabled={true}\r\n />\r\n
    \r\n
    \r\n {\r\n return {id:x.ID, name:x.Name};\r\n })\r\n }\r\n onChange={this.handleOnChange}\r\n enabled={true}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n return {id:x.ID, name:x.Name};\r\n })\r\n }\r\n onChange={this.handleOnChange}\r\n enabled={true}\r\n />\r\n
    \r\n
    \r\n {/* {\r\n return {id:x.ID, name:x.Name};\r\n })\r\n }\r\n onChange={this.handleOnChange}\r\n /> */}\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    */}\r\n
    \r\n
    E911 Address Information - Read-Only
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n
    \r\n
    \r\n
    );\r\n }\r\n\r\n validateEmail=(email)=>{\r\n if(email && !EmailValidator.validate(email.trim()))\r\n return (
    '{email.trim()}' Not a valid email
    );\r\n }\r\n\r\n render() {\r\n if(!this.state.visible)\r\n return ();\r\n\r\n return (\r\n \r\n Edit Profile\r\n \r\n \r\n Edit Profile\r\n \r\n \r\n {this.getModalBodyContent()}\r\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\nclass SavingMessageControl extends Component {\r\n render() {\r\n let successMessage = \"\";\r\n if(this.props.showSuccess){\r\n successMessage = (\r\n
    {this.props.SuccessMessage}
    \r\n )\r\n }\r\n\r\n let loadingMessage = \"\";\r\n if(this.props.showLoading){\r\n loadingMessage = ()\r\n }\r\n \r\n let errorMessage = \"\";\r\n if(this.props.showError){\r\n errorMessage = (
    {this.props.ErrorMessage}
    )\r\n }\r\n\r\n return (\r\n
    \r\n {successMessage}\r\n {loadingMessage}\r\n {errorMessage}\r\n
    \r\n );\r\n }\r\n};\r\n\r\nclass SaveButton extends Component {\r\n render() {\r\n if(this.props.disabled)\r\n return ();\r\n else\r\n return ();\r\n }\r\n};\r\n\r\nclass ProfileTextField extends Component {\r\n render() {\r\n return (\r\n
    \r\n \r\n { if (this.props.enabled === true) this.props.onChange(this.props.id,e) } }/>\r\n
    \r\n );\r\n }\r\n};\r\n\r\nclass ProfileDropdownField extends Component {\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\nProfileTextField.propTypes = {\r\n label: PropTypes.string.isRequired,\r\n textvalue: PropTypes.string,\r\n id: PropTypes.string.isRequired,\r\n onChange: PropTypes.func\r\n}\r\n\r\nSavingMessageControl.propTypes = {\r\n showSuccess: PropTypes.bool.isRequired,\r\n showLoading: PropTypes.bool.isRequired,\r\n showError: PropTypes.bool.isRequired,\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n ServiceNumber: state.reducer.ServiceNumber, \r\n PBXUserID: state.reducer.PBXUserID,\r\n isIpTrunking: state.reducer.isSelectedServiceIpTrunking\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(EditProfileModal);","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { connect } from 'react-redux';\r\nimport { fetchData, post } from '../../../requests/api_calls';\r\nimport * as config from '../../../requests/config';\r\n\r\nconst Password1=\"Password1\", Password2=\"Password2\";\r\n\r\nclass ChangePasswordModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { \r\n password1: \"\",\r\n password2: \"\",\r\n valid: false,\r\n validMessage: \"\",\r\n showModal: false,\r\n savingLoading: false,\r\n savingShowSuccess: false,\r\n savingShowError: false,\r\n savingErrorMessage: \"\",\r\n currentUser: props.CurrentUserProfile,\r\n admin: props.isAdmin,\r\n ServiceNumber: props.ServiceNumber,\r\n PBXUserID: props.PBXUserID\r\n };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n handleOnChange=(type, event)=>{\r\n let state = {...this.state};\r\n\r\n switch(type){\r\n case Password1:\r\n state.password1 = event.target.value;\r\n break;\r\n case Password2:\r\n state.password2 = event.target.value;\r\n break;\r\n }\r\n if (state.password1.length > 0 && state.password1.length < 8) {\r\n state.valid = false;\r\n state.validMessage = 'Password must be at least 8 characters long';\r\n } else if (!this.ValidPassword(state.password1)) {\r\n state.valid = false;\r\n state.validMessage = 'The password must contain at least 1 number or special character, at least 1 lower case letter, and at least 1 upper case letter';\r\n }\r\n else if((state.password1 && state.password2 && state.password1 !== state.password2) || (state.password1 && !state.password2) || (!state.password1 && state.password2)){\r\n state.valid = false;\r\n state.validMessage = \"The password is not the same\";\r\n } else if(state.password1 && state.password2 && state.password1 === state.password2){\r\n state.valid = true;\r\n state.validMessage = \"\";\r\n } \r\n this.setState(state);\r\n }\r\n\r\n ValidPassword = (pw) => { \r\n //var reg = /^.*(?=.{8,})(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).*/;\r\n var reg = /^.*(?=.{8,})(?=.*([\\d]|[!@#$%^&*{}_+=\\[\\]:;'\",<.>/?_`~\\\\\\|-]))(?=.*[a-z])(?=.*[A-Z]).*/;\r\n var test = reg.test(pw);\r\n return test;\r\n}\r\n\r\n handleOnSave=()=>{\r\n let state = {...this.state};\r\n state.savingLoading = true;\r\n state.savingShowSuccess = false;\r\n this.setState(state);\r\n\r\n let headers = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n\r\n let body = {\r\n ServiceNumber: this.props.ServiceNumber,\r\n PBXUserID: this.props.PBXUserID,\r\n Password: this.state.password1\r\n };\r\n let apiUrl = \"\";\r\n if(this.state.currentUser && this.state.admin){\r\n body = {\r\n UserID: sessionStorage.userId,\r\n Password: this.state.password1\r\n };\r\n apiUrl = \"admin/ChangeAdminPassword\"\r\n }\r\n else{\r\n apiUrl = \"usr/ChangeUserPassword\"\r\n body = {\r\n UserID: sessionStorage.SelectedUserId,\r\n ServiceNumber: this.props.ServiceNumber,\r\n PBXUserID: this.props.PBXUserID,\r\n Password: this.state.password1\r\n };\r\n }\r\n\r\n body = JSON.stringify(body);\r\n post(apiUrl,\"POST\", body, headers)\r\n\t\t.then(response =>{\r\n let state = {...this.state};\r\n\t\t\tif(response.ok){\r\n state.savingShowSuccess = true;\r\n state.savingLoading = false;\r\n state.savingShowError = false;\r\n\t\t\t}\r\n\t\t\telse{\r\n state.savingLoading = false;\r\n state.savingShowError = true;\r\n\t\t\t\tstate.savingErrorMessage = \"Failed Save\";\r\n }\r\n this.setState(state);\r\n\t\t})\r\n\t\t.catch((message)=>{\r\n console.log(message);\r\n let state = {...this.state};\r\n state.savingLoading = false;\r\n state.savingShowError = true;\r\n state.savingErrorMessage = \"Failed Save\";\r\n this.setState(state);\r\n\t\t});\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n componentWillReceiveProps(props) {\r\n if (props.ServiceNumber !== this.state.ServiceNumber || props.PBXUserID != this.state.PBXUserID)\r\n this.setState({ServiceNumber: props.ServiceNumber, PBXUserID: props.PBXUserID});\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n return (\r\n
    \r\n {this.getBtn()}\r\n \r\n \r\n Change Password\r\n \r\n \r\n
    \r\n

    We recommend you choose a strong password to protect your online profile. The password length must be at least 8 characters. The password must contain at least 1 number or special character, at least 1 lower case letter, and at least 1 upper case letter.

    \r\n

    Avoid using passwords that can be easily guessed such as your name, telephone number, social security number, or account number.

    \r\n
    \r\n \r\n { this.handleOnChange(Password1, x) }}/>\r\n
    \r\n
    \r\n \r\n { this.handleOnChange( Password2, x) }}/>\r\n
    \r\n {this.getValidationError()}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n this.handleOnSave()} />\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n getBtn(){\r\n const superlink = this.props.superlink;\r\n if (superlink) {\r\n return (\r\n Change Password\r\n )\r\n } else {\r\n return (\r\n
    \r\n \r\n Change Password\r\n \r\n \r\n
    \r\n )\r\n }\r\n }\r\n\r\n getValidationError=()=>{\r\n if(!this.state.valid && this.state.validMessage){\r\n return (
    {this.state.validMessage}
    )\r\n }\r\n return \"\";\r\n }\r\n \r\n};\r\n\r\nclass SavingMessageControl extends Component {\r\n render() {\r\n let successMessage = \"\";\r\n if(this.props.showSuccess){\r\n successMessage = (\r\n
    {this.props.SuccessMessage}
    \r\n )\r\n }\r\n\r\n let loadingMessage = \"\";\r\n if(this.props.showLoading){\r\n loadingMessage = ()\r\n }\r\n \r\n let errorMessage = \"\";\r\n if(this.props.showError){\r\n errorMessage = (
    {this.props.ErrorMessage}
    )\r\n }\r\n\r\n return (\r\n
    \r\n {successMessage}\r\n {loadingMessage}\r\n {errorMessage}\r\n
    \r\n );\r\n }\r\n};\r\n\r\nclass SaveButton extends Component {\r\n render() {\r\n if(this.props.disabled)\r\n return ();\r\n else\r\n return ();\r\n }\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n ServiceNumber: state.reducer.ServiceNumber,\r\n PBXUserID: state.reducer.PBXUserID\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(ChangePasswordModal);\r\n\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport format from 'string-format';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\nimport { DataLoadingSpinner } from './../../../components/spinners';\r\nimport { connect } from 'react-redux';\r\nimport { fetchData, post } from './../../../requests/api_calls';\r\nimport * as config from './../../../requests/config';\r\nimport * as EmailValidator from 'email-validator';\r\n\r\nconst PasswordEmail=\"PasswordEmail\", ServiceAndCpniEmail=\"ServiceAndCpniEmail\";\r\n\r\nclass ChangeEmailModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n let ChangeEmailValues = props.GetEmailValues();\r\n this.state = { \r\n showModal: false,\r\n loading: true, \r\n loadingError: \"\",\r\n valid: false,\r\n validMessage: \"\",\r\n savingLoading: false,\r\n savingShowSuccess: false,\r\n savingShowError: false,\r\n savingErrorMessage: \"\",\r\n currentUser: props.CurrentUserProfile,\r\n admin: props.isAdmin,\r\n ChangeEmail: {\r\n ServiceNumber: ChangeEmailValues.ServiceNumber || '', \r\n PBXUserID: ChangeEmailValues.PBXUserID || '', \r\n PasswordEmail:\"\",\r\n ServiceAndCpniEmail:\"\",\r\n UserID: ChangeEmailValues.UserID || 0\r\n }\r\n };\r\n }\r\n \r\n isValidEmail=(email)=> email && EmailValidator.validate(email)\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({...this.state, showModal: true, loading:true });\r\n if(this.state.currentUser && this.state.admin){\r\n this.fetchEmail(\"admin/GetAdminEmail?&UserID=\" + sessionStorage.userId);\r\n }\r\n else{\r\n this.fetchEmail(format(\"usr/GetUserEmail?ServiceNumber={ServiceNumber}&PBXUserID={PBXUserID}\", this.state.ChangeEmail));\r\n }\r\n }\r\n\r\n fetchEmail = (apiPath, errorMsg) => {\r\n fetchData(apiPath).then((data) => {\r\n let changeEmail = {...this.state.ChangeEmail, PasswordEmail:\"\", ServiceAndCpniEmail:\"\"};\r\n let state = {...this.state, ChangeEmail: changeEmail, loading: false};\r\n if (data){\r\n let ce = data;\r\n state.ChangeEmail.PasswordEmail = ce.PasswordEmail;\r\n state.ChangeEmail.ServiceAndCpniEmail = ce.ServiceAndCpniEmail;\r\n //let ce = state.ChangeEmail = data;\r\n\r\n state.valid = this.isValidEmail(ce[PasswordEmail]) && this.isValidEmail(ce[ServiceAndCpniEmail]);\r\n state.validMessage = !ce[PasswordEmail] || !ce[ServiceAndCpniEmail]? \"Fill all fields\" : \"\";\r\n }\r\n this.setState(state);\r\n }).catch((message)=>{\r\n this.setState({...this.state, loading: false, loadingError: \"Fail to load\"});\r\n });\r\n }\r\n\r\n handleOnChange=(type, event)=>{\r\n let state = {...this.state};\r\n\r\n state.ChangeEmail[type] = event.target.value;\r\n\r\n let passwordEmail = state.ChangeEmail[PasswordEmail];\r\n let serviceAndCpniEmail = state.ChangeEmail[ServiceAndCpniEmail];\r\n\r\n state.valid = this.isValidEmail(passwordEmail) && this.isValidEmail(serviceAndCpniEmail)\r\n state.validMessage = !passwordEmail || !serviceAndCpniEmail? \"Fill all fields\" : \"\";\r\n\r\n this.setState(state);\r\n }\r\n\r\n handleOnSave=()=>{\r\n let state = {...this.state, savingLoading:true, savingShowSuccess: false};\r\n this.setState(state);\r\n\r\n let headers = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + config.storedAccessToken(),\r\n 'X-Policy': config.defaultXpolicy\r\n };\r\n\r\n if(this.state.currentUser && this.state.admin){\r\n state.ChangeEmail.UserID = sessionStorage.userId;\r\n }\r\n \r\n let body = JSON.stringify(state.ChangeEmail);\r\n let changeUserEmailApi = this.state.currentUser && this.state.admin ? \"admin/ChangeAdminEmail\": \"usr/ChangeUserEmail\";\r\n post(changeUserEmailApi,\"POST\", body, headers)\r\n\t\t.then(response =>{\r\n let state = {...this.state, \r\n savingLoading: false, \r\n savingShowSuccess: response.ok, \r\n savingShowError: !response.ok, \r\n savingErrorMessage: response.ok?\"\": \"Failed Save\"\r\n };\r\n\t\t\t\r\n this.setState(state);\r\n\t\t})\r\n\t\t.catch((message)=>{\r\n console.log(message);\r\n let state = {...this.state, \r\n savingLoading: false, \r\n savingShowError: true, \r\n savingErrorMessage: \"Failed Save\"\r\n };\r\n this.setState(state);\r\n\t\t});\r\n }\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n return (\r\n
    \r\n {this.getBtn()}\r\n \r\n \r\n Change Email\r\n \r\n \r\n {this.getBodyContent()}\r\n \r\n \r\n
    \r\n
    \r\n this.handleOnSave()} />\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n getBodyContent=()=>{\r\n let loading = this.state.loading;\r\n if(loading){\r\n return ( );\r\n }\r\n \r\n let loadingError = this.state.loadingError;\r\n if(loadingError){\r\n return (
    {loadingError}
    );\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n { this.handleOnChange(PasswordEmail, x) }} />\r\n\r\n {this.validateEmail(this.state.ChangeEmail.PasswordEmail)}\r\n
    \r\n
    \r\n \r\n { this.handleOnChange(ServiceAndCpniEmail, x) }} />\r\n\r\n {this.validateEmail(this.state.ChangeEmail.ServiceAndCpniEmail)}\r\n
    \r\n {this.getValidationError()}\r\n
    );\r\n }\r\n \r\n getValidationError=()=>{\r\n if(!this.state.valid && this.state.validMessage){\r\n return (
    {this.state.validMessage}
    );\r\n }\r\n return \"\";\r\n }\r\n\r\n validateEmail=(email)=>{\r\n if(email && !EmailValidator.validate(email.trim()))\r\n return (
    '{email.trim()}' Not a valid email
    );\r\n }\r\n\r\n getBtn(){\r\n const superlink = this.props.superlink;\r\n if (superlink) {\r\n return (\r\n Change Recovery Email\r\n )\r\n } else {\r\n return (\r\n
    \r\n \r\n Change Password\r\n \r\n \r\n
    \r\n )\r\n }\r\n }\r\n};\r\n\r\n\r\nclass SavingMessageControl extends Component {\r\n render() {\r\n let successMessage = \"\";\r\n if(this.props.showSuccess){\r\n successMessage = (\r\n
    {this.props.SuccessMessage}
    \r\n )\r\n }\r\n\r\n let loadingMessage = \"\";\r\n if(this.props.showLoading){\r\n loadingMessage = ()\r\n }\r\n \r\n let errorMessage = \"\";\r\n if(this.props.showError){\r\n errorMessage = (
    {this.props.ErrorMessage}
    )\r\n }\r\n\r\n return (\r\n
    \r\n {successMessage}\r\n {loadingMessage}\r\n {errorMessage}\r\n
    \r\n );\r\n }\r\n};\r\n\r\nclass SaveButton extends Component {\r\n render() {\r\n if(this.props.disabled)\r\n return ();\r\n else\r\n return ();\r\n }\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n ServiceNumber: state.ServiceNumber,\r\n PBXUserID: state.PBXUserID\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(ChangeEmailModal);\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as EmailValidator from 'email-validator';\r\nimport { post, fetchData } from '../../requests/api_calls'\r\nimport { store } from '../../store/store';\r\nimport * as actions from \"../../store/actions\";\r\nimport * as session from '../../scripts/session';\r\nimport { DataLoadingSpinner } from '../spinners';\r\nimport { Switch } from '@progress/kendo-react-inputs';\r\n\r\nexport default class MFAAuthModal extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n email: '',\r\n showGrabEmailForm: false,\r\n showModal: false,\r\n loading: false,\r\n loadingQR: false,\r\n loadingError: '',\r\n qrImageUrl: '',\r\n qrKey: '',\r\n pinCode: '',\r\n phoneNumber: '',\r\n storedPhoneNumber: '',\r\n verificationMethod: sessionStorage.verificationMethod,\r\n validationError: \"\",\r\n successMessage: \"\",\r\n isTextMessageOn: false,\r\n isAuthAppOn: false,\r\n onSuccessSMS: false,\r\n onSuccessSubmitPinCode: false,\r\n isOktaPushEnabled: false,\r\n oktaId: \"\",\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n await this.setState({ loading: true })\r\n const userEmail = await fetchData('usr/GetUserEmailMFA').then(data => data).catch(err => console.error(err));\r\n if (userEmail) {\r\n if (sessionStorage.verificationMethod && sessionStorage.verificationMethod != \"\") {\r\n let method = sessionStorage.verificationMethod;\r\n await this.setState({ verificationMethod: method });\r\n if (method == \"sms\") {\r\n this.setState({ isTextMessageOn: true });\r\n }\r\n if (method == \"authApp\") {\r\n let isOkta = sessionStorage.IsOktaPushEnabled == \"true\" ? true : false;\r\n if (!isOkta) {\r\n this.getQRImageUrl();\r\n }\r\n await this.setState({ isAuthAppOn: true, isOktaPushEnabled: isOkta });\r\n }\r\n }\r\n await this.setState({ loading: false });\r\n } else {\r\n this.setState({ showGrabEmailForm: true, loading: false });\r\n }\r\n }\r\n\r\n handleOpen = () => {\r\n this.componentDidMount();\r\n this.setState({\r\n showModal: true,\r\n });\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({\r\n showModal: false,\r\n successMessage: \"\",\r\n validationError: \"\",\r\n pinCode: \"\",\r\n verificationMethod: \"\",\r\n isTextMessageOn: false,\r\n isAuthAppOn: false,\r\n onSuccessSMS: false,\r\n onSuccessSubmitPinCode: false,\r\n oktaId: \"\",\r\n isOktaPushEnabled: false\r\n });\r\n };\r\n\r\n fetchUserEmail = async () => {\r\n try {\r\n await this.setState({ loading: true });\r\n const path = 'usr/GetUserEmailMFA';\r\n const response = await fetchData(path);\r\n if (response.ok) {\r\n await this.setState({ email: response });\r\n } else {\r\n console.error(`fetchUserEmail(): failed: ${response.message}`);\r\n this.setState({ validationError: \"Something went wrong while retrieving email.\", successMessage: \"\", loading: false });\r\n }\r\n } catch (error) {\r\n console.error(`fetchUserEmail(): failed: ${error}`);\r\n this.setState({ validationError: \"Something went wrong while retrieving email.\", successMessage: \"\", loading: false });\r\n }\r\n }\r\n\r\n getQRImageUrl = async () => {\r\n await this.setState({ loadingQR: true });\r\n try {\r\n const apiPath = 'usr/GetQRImageUrl';\r\n const tsv = await fetchData(apiPath);\r\n this.setState({ loadingQR: false, qrImageUrl: tsv.qrImageUrl, qrKey: tsv.keyCode });\r\n } catch (e) {\r\n console.error('Failed request. Not able to get QR Image Url', e);\r\n this.setState({ loadingQR: false, validationError: \"Something went wrong while retrieving the QR code.\", isOktaPushEnabled: false });\r\n }\r\n };\r\n\r\n getOktaQRImageUrl = async () => {\r\n await this.setState({ loadingQR: true });\r\n try {\r\n const apiOktaPath = 'usr/GetOktaPushQRImage';\r\n const tsv = await fetchData(apiOktaPath);\r\n this.setState({ loadingQR: false, qrOktaImageUrl: tsv.qrImageUrl, qrKey: tsv.keyCode });\r\n } catch (e) {\r\n console.error('Failed request. Not able to get QR Image Url', e);\r\n this.setState({ loadingQR: false, validationError: \"Something went wrong while retrieving the QR code.\", isOktaPushEnabled: false });\r\n }\r\n };\r\n\r\n enableOktaPush = async () => {\r\n await this.setState({ isOktaPushEnabled: true, loadingQR: true, confirmOktaVerify: false });\r\n this.getOktaQRImageUrl();\r\n }\r\n\r\n submitPhoneNumber = async () => {\r\n try {\r\n this.setState({ loading: true, storedPhoneNumber: this.state.phoneNumber });\r\n const path = 'usr/ValidateTwoStepSmsConfig';\r\n const response = await post(path, \"POST\", JSON.stringify(this.getTFAUserData()));\r\n if (response.ok) {\r\n this.setState({ loading: false, onSuccessSMS: true, validationError: \"\", successMessage: \"You will receive an SMS code shortly to confirm your MFA configuration. Once received, input into the textbox at the bottom and click 'Save'!\", loading: false });\r\n } else {\r\n console.error(`submitPhoneNumber(): failed: ${response.message}`);\r\n this.setState({ loading: false, onSuccessSMS: false, validationError: \"Something went wrong while sending the SMS code.\", successMessage: \"\", loading: false });\r\n }\r\n } catch (error) {\r\n console.error(`submitPhoneNumber(): failed: ${error}`);\r\n this.setState({ loading: false, onSuccessSMS: false, validationError: \"Something went wrong while sending the SMS code.\", successMessage: \"\", loading: false });\r\n }\r\n }\r\n\r\n getTFAUserData = () => {\r\n const { qrKey, pinCode, verificationMethod, phoneNumber, storedPhoneNumber, isOktaPushEnabled, oktaId } = this.state;\r\n return {\r\n Key: qrKey,\r\n Code: pinCode,\r\n VerificationMethod: verificationMethod,\r\n EnableOktaPush: isOktaPushEnabled,\r\n Mobile: storedPhoneNumber,\r\n OktaId: oktaId\r\n //Email: \"\",\r\n };\r\n };\r\n\r\n onSubmitAuthPinCode = async () => {\r\n try {\r\n await this.setState({ loading: true, successMessage: \"\", validationError: \"\" })\r\n let path = \"usr/SaveTwoStepVerification\";\r\n const response = await post(path, 'POST', JSON.stringify(this.getTFAUserData()));\r\n if (response.ok) {\r\n this.setState({ validationError: \"\", onSuccessSubmitPinCode: true });\r\n store.dispatch({ type: actions.VALIDATE_MFA });\r\n sessionStorage.setItem('verificationMethod', this.state.verificationMethod);\r\n sessionStorage.setItem('IsOktaPushEnabled', false);\r\n this.setState({ loading: false, successMessage: \"Success! You may continue with your current session. All login attempts from here on will require an access code.\", validationError: \"\" });\r\n } else {\r\n console.log(`onSubmitAuthPinCode(): failed: ${response.message}`);\r\n this.setState({ loading: false, validationError: `Something went wrong while saving the configuration: ${response.message}`, successMessage: \"\" });\r\n }\r\n } catch (error) {\r\n console.error(`onSubmitAuthPinCode(): failed: ${error}`);\r\n this.setState({ loading: false, validationError: `Something went wrong while saving the configuration: ${error}`, successMessage: \"\" });\r\n }\r\n };\r\n\r\n onSendPushNotification = async () => {\r\n try {\r\n await this.setState({ loading: true, successMessage: \"\", validationError: \"\" })\r\n let path = \"usr/SendOktaPushNotification?isConfigure=true\";\r\n const response = await post(path, 'POST', JSON.stringify(this.getTFAUserData()));\r\n if (response.ok) {\r\n this.setState({ validationError: \"\", onSuccessSubmitPinCode: true });\r\n store.dispatch({ type: actions.VALIDATE_MFA });\r\n sessionStorage.setItem('verificationMethod', this.state.verificationMethod);\r\n sessionStorage.setItem('IsOktaPushEnabled', true);\r\n this.setState({\r\n loading: false,\r\n successMessage: \"Your push request was successful!.\",\r\n validationError: \"\",\r\n qrOktaImageUrl: \"\"\r\n });\r\n } else {\r\n console.log(`onSendPushNotification(): failed: ${response.message}`);\r\n this.setState({ loading: false, validationError: `Something went wrong while saving the configuration: ${response.message}`, successMessage: \"\" });\r\n }\r\n } catch (error) {\r\n console.error(`onSendPushNotification(): failed: ${error}`);\r\n this.setState({ loading: false, validationError: `Something went wrong while saving the configuration: ${error}`, successMessage: \"\" });\r\n }\r\n }\r\n\r\n validateEmail(email) {\r\n if (email && !EmailValidator.validate(email.trim()))\r\n return (
    '{email.trim()}' Not a valid email
    );\r\n }\r\n\r\n errorContent = () => {\r\n if (this.state.successMessage !== \"\") {\r\n return (\r\n

    {this.state.successMessage}

    \r\n )\r\n }\r\n\r\n if (this.state.validationError === \"\") {\r\n return;\r\n } else {\r\n return (\r\n

    {this.state.validationError}

    \r\n )\r\n }\r\n }\r\n\r\n sendEmailValidate = async (email) => {\r\n try {\r\n await this.setState({ loading: true });\r\n let path = `usr/ValidateTwoStepEmail?p_email=${email}`;\r\n const response = await fetchData(path);\r\n if (response === 200) {\r\n this.setState({ loading: false, validationError: \"\", successMessage: \"Success! You will receive a verification link to your chosen email and will be automatically logged out shortly.\" });\r\n setTimeout(() => {\r\n session.logout();\r\n }, 8000);\r\n } else {\r\n console.log(`sendEmailValidate failed: ${response.message}`);\r\n this.setState({ loading: false, validationError: \"Something went wrong while sending the email link.\", successMessage: \"\" });\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n this.setState({ loading: false, validationError: \"Something went wrong while sending the email link.\", successMessage: \"\" });\r\n }\r\n }\r\n\r\n getQRImageContent() {\r\n const { qrImageUrl, loadingQR, isOktaPushEnabled, qrOktaImageUrl } = this.state;\r\n\r\n if (loadingQR) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n if (qrImageUrl && !loadingQR && !isOktaPushEnabled) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (qrOktaImageUrl && !loadingQR && isOktaPushEnabled) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getBodyContent() {\r\n let loading = this.state.loading;\r\n if (loading) {\r\n return ();\r\n }\r\n\r\n let loadingError = this.state.loadingError;\r\n if (loadingError) {\r\n return (
    {loadingError}
    );\r\n }\r\n\r\n if (this.state.showGrabEmailForm) {\r\n return (\r\n
    \r\n
    \r\n \r\n this.setState({ email: e.target.value })}\r\n autoFocus\r\n />\r\n {this.validateEmail(this.state.email)}\r\n {\r\n this.sendEmailValidate(this.state.email);\r\n }}\r\n >Validate Email\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n if (this.state.confirmOktaVerify && !this.state.isOktaPushEnabled) {\r\n return (\r\n
    \r\n

    Are you sure you want to enable Okta Verify? You will need to re-scan the generated QR code to enable. Any previous enrollments will be removed.

    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n

    \r\n Add an extra layer of security to block unauthorized access and protect your account.\r\n

    \r\n

    MFA verification options:

    \r\n {sessionStorage.MfaAllowSms == \"true\" ?
    \r\n
    \r\n

    Text Message

    \r\n {\r\n this.setState({ isAuthAppOn: false, isTextMessageOn: true, verificationMethod: 'sms', isOktaPushEnabled: false });\r\n }}\r\n //disabled={sessionStorage.verificationMethod && sessionStorage.verificationMethod != \"\" ? true : false}\r\n />\r\n
    \r\n {this.state.isTextMessageOn && (<>\r\n

    Provide your phone number to get a SMS code to enable the authentication:

    \r\n
    \r\n <>\r\n this.setState({ phoneNumber: removePhoneFormatting(e.target.value) })}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n this.submitPhoneNumber();\r\n }\r\n }}\r\n placeholder={\"Enter your mobile device number!\"}\r\n autoFocus\r\n //disabled={sessionStorage.verificationMethod && sessionStorage.verificationMethod != \"\" ? true : false}\r\n />\r\n Submit\r\n \r\n
    \r\n )}\r\n
    : null}\r\n {sessionStorage.MfaAllowAuthApp == \"true\" ?
    \r\n
    \r\n

    Authenticator app code

    \r\n {\r\n if (this.state.isOktaPushEnabled) {\r\n this.setState({ isTextMessageOn: false, isAuthAppOn: true, verificationMethod: 'authApp' });\r\n } else {\r\n this.getQRImageUrl();\r\n this.setState({ isTextMessageOn: false, isAuthAppOn: true, verificationMethod: 'authApp' });\r\n }\r\n }}\r\n //disabled={sessionStorage.verificationMethod && sessionStorage.verificationMethod != \"\" ? true : false}\r\n />\r\n
    \r\n {this.state.isAuthAppOn ? <>\r\n
    \r\n

    Scan the QR code and enter the pin generated by Okta, Google or Microsoft authenticator app to confirm it's you.

    \r\n {/*
    \r\n \r\n
    */}\r\n {this.getQRImageContent()}\r\n
    \r\n : null}\r\n
    : null}\r\n
    \r\n {/* {this.state.isAuthAppOn && this.state.isOktaPushEnabled && this.state.qrOktaImageUrl && !this.state.loadingQR ?\r\n <>\r\n

    After you scan your QR code, press the button to send the push notification

    \r\n
    \r\n \r\n Send push notification\r\n \r\n
    \r\n \r\n : null} */}\r\n {!this.state.isOktaPushEnabled && (this.state.isTextMessageOn || this.state.isAuthAppOn) ? <>\r\n \r\n this.setState({ pinCode: e.target.value })}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n this.onSubmitAuthPinCode();\r\n }\r\n }}\r\n autoFocus\r\n //disabled={sessionStorage.verificationMethod && sessionStorage.verificationMethod != \"\" ? true : false}\r\n />\r\n
    \r\n \r\n Save\r\n \r\n
    \r\n : null}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n getMethod = () => {\r\n if (sessionStorage.verificationMethod == 'authApp') {\r\n if (sessionStorage.IsOktaPushEnabled == \"true\") {\r\n return \"Okta Verify\";\r\n } else {\r\n return \"Authenticator App\";\r\n }\r\n }\r\n\r\n if (sessionStorage.verificationMethod == 'sms') {\r\n return \"SMS\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n render() {\r\n const modalVerbiage = () => {\r\n if (sessionStorage.verificationMethod && (sessionStorage.verificationMethod !== \"\" || sessionStorage.verificationMethod !== null || sessionStorage.verificationMethod !== undefined)) {\r\n return \"Manage Multi-factor Authentication\"\r\n } else {\r\n return \"Enable Multi-factor Authentication\"\r\n }\r\n }\r\n return (\r\n <>\r\n {modalVerbiage()}\r\n \r\n \r\n \r\n Enable Multi-factor Authentication\r\n \r\n \r\n {/* */}\r\n \r\n \r\n {this.getBodyContent()}\r\n {this.errorContent()}\r\n {sessionStorage.verificationMethod && sessionStorage.verificationMethod != \"\"\r\n ?

    {`MFA is currently enabled for this account: ${this.getMethod()}`}

    \r\n : null\r\n }\r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nfunction isNumericInput(event) {\r\n const key = event.keyCode;\r\n return ((key >= 48 && key <= 57) || // Allow number line\r\n (key >= 96 && key <= 105) // Allow number pad\r\n );\r\n};\r\n\r\nfunction isModifierKey(event) {\r\n const key = event.keyCode;\r\n return (event.shiftKey === true || key === 35 || key === 36) || // Allow Shift, Home, End\r\n (key === 8 || key === 9 || key === 13 || key === 46) || // Allow Backspace, Tab, Enter, Delete\r\n (key > 36 && key < 41) || // Allow left, up, right, down\r\n (\r\n // Allow Ctrl/Command + A,C,V,X,Z\r\n (event.ctrlKey === true || event.metaKey === true) &&\r\n (key === 65 || key === 67 || key === 86 || key === 88 || key === 90)\r\n )\r\n};\r\n\r\nfunction enforceFormat(event) {\r\n // Input must be of a valid number format or a modifier key, and not longer than ten digits\r\n if (!isNumericInput(event) && !isModifierKey(event)) {\r\n event.preventDefault();\r\n }\r\n};\r\n\r\nfunction formatToPhone(event) {\r\n if (isModifierKey(event)) { return; }\r\n\r\n const input = event.target.value.replace(/\\D/g, '').substring(0, 10); // First ten digits of input only\r\n const areaCode = input.substring(0, 3);\r\n const middle = input.substring(3, 6);\r\n const last = input.substring(6, 10);\r\n\r\n if (input.length > 6) { event.target.value = `(${areaCode}) ${middle} - ${last}`; }\r\n else if (input.length > 3) { event.target.value = `(${areaCode}) ${middle}`; }\r\n else if (input.length > 0) { event.target.value = `(${areaCode}`; }\r\n};\r\n\r\nfunction removePhoneFormatting(phoneNumber) {\r\n return phoneNumber.replace(/\\D/g, '');\r\n}","import React, { Component } from 'react';\r\nimport { fetchData, postData } from './../requests/api_calls';\r\nimport { DataLoadingSpinner } from './../components/spinners';\r\nimport * as settings from './../scripts/settings';\r\nimport EditProfileModal from './profile/modals/editProfileModal'\r\nimport ChangePasswordModal from './profile/modals/changePasswordModal';\r\nimport ChangeEmailModal from './profile/modals/changeEmailModal';\r\nimport E911Modal from './profile/modals/e911Modal';\r\nimport { userIsAdmin, selectedUserIsAdmin, titleCasePhrase } from './../scripts/helper';\r\nimport { connect } from 'react-redux';\r\nimport MFAAuthModal from '../components/mfa/mfaModal';\r\n\r\nclass Profile extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n fetch_error: \"\",\r\n hasValidUser: true,\r\n loading: true,\r\n profile: {},\r\n showE911: props.match ? props.match.params.modal === 'e911' : false,\r\n hasE911: true,\r\n propsSN: props.match && props.match.ServiceNumber ? props.match.ServiceNumber : '',\r\n adminProfile: props.adminProfile,\r\n ServiceNumber: props.ServiceNumber,\r\n PBXUserID: props.PBXUserID\r\n };\r\n this.getHeaderValues = this.getHeaderValues.bind(this);\r\n this.getChangeEmailValues = this.getChangeEmailValues.bind(this);\r\n this.updateFromEditProfile = this.updateFromEditProfile.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchProfileInfo(this.getProfileApiUrl(this.state.ServiceNumber, this.state.PBXUserID), settings.noResultsMsg);\r\n }\r\n\r\n componentWillReceiveProps(props) {\r\n let urlPath = window.location.pathname;\r\n let pbx = '';\r\n let sn = '';\r\n let parts = urlPath.split('/');\r\n if (parts.length > 2) {\r\n if (parts[parts.length - 1] !== 'profile') {\r\n sn = parts[parts.length - 2].replace(\"%20\", \"\");\r\n pbx = parts[parts.length - 1];\r\n }\r\n else\r\n this.setState({ adminProfile: true });\r\n }\r\n let state = this.state;\r\n if ((state.ServiceNumber !== sn && props.ServiceNumber !== sn) || (state.PBXUserID !== pbx && props.PBXUserID !== pbx)) {\r\n this.setState({ loading: true });\r\n this.updateServiceSelector(sn, pbx);\r\n }\r\n else if (state.ServiceNumber !== sn || state.PBXUserID !== pbx) {\r\n this.setState({ ServiceNumber: sn, PBXUserID: pbx, loading: true });\r\n this.fetchProfileInfo(this.getProfileApiUrl(sn, pbx), settings.noResultsMsg);\r\n }\r\n }\r\n\r\n updateServiceSelector = async (ServiceNumber, PBXUserID) => {\r\n let UserId = 0;\r\n let UserRole = '';\r\n let apiPath = `usr/GetUserIdRole?ServiceNumber=${ServiceNumber}&PBXUserID=${PBXUserID}`;\r\n let data = await fetchData(apiPath).catch((message) => {\r\n this.setState({ ...{ loading: false, fetch_error: message.toString() } });\r\n });\r\n if (data !== null) {\r\n UserId = data.UserId;\r\n UserRole = data.Role;\r\n }\r\n this.setState({ adminProfile: selectedUserIsAdmin(UserRole) });\r\n settings.selectService(UserId, ServiceNumber, PBXUserID);\r\n\r\n }\r\n\r\n fetchProfileInfo = (apiPath, errorMsg) => {\r\n fetchData(apiPath).then((data) => {\r\n if (data !== null && data !== undefined) {\r\n this.loadData(data);\r\n this.setState({ loading: false });\r\n }\r\n else {\r\n this.setState({ profile: {}, loading: false });\r\n }\r\n }).catch((message) => {\r\n this.setState({ ...{ loading: false, fetch_error: message.toString() } });\r\n });\r\n }\r\n\r\n // loadData = async (data) => {\r\n // let bValidUser = true;\r\n // if (!data.FirstName || data.FirstName === '' || !data.LastName || data.LastName === '')\r\n // bValidUser = false;\r\n\r\n // await this.setState({...{profile: data,loading: false, hasValidUser: bValidUser}});\r\n // }\r\n\r\n loadData = (data) => {\r\n let bShow911 = false;\r\n if (data.HasE911 && data.HasE911.toString() === 'true')\r\n bShow911 = true;\r\n\r\n this.setState({ ...{ profile: data, loading: false, hasE911: bShow911 } });\r\n }\r\n updateFromEditProfile = (FirstName, LastName, Designation, Department, Email, Language) => {\r\n let profile = this.state.profile;\r\n profile.FirstName = FirstName;\r\n profile.LastName = LastName;\r\n profile.Designation = Designation;\r\n profile.Department = Department;\r\n profile.Email = Email;\r\n profile.Language = Language;\r\n this.setState({ profile: profile });\r\n }\r\n\r\n getProfile = () => {\r\n let title = \"\";\r\n let profile = this.state.profile; //this.state.profile.UserId === parseInt(sessionStorage.userId) && userIsAdmin() ? this.props.adminProfile : this.state.profile;\r\n let isAdmin = this.state.profile.UserId === parseInt(sessionStorage.userId) && userIsAdmin() ? true : (\r\n (this.state.profile.Role === 'SUPER_ADMIN' || this.state.profile.Role === 'ALLGROUP_ADMIN' || this.state.profile.Role === 'GROUP_ADMIN') ? true : false\r\n );\r\n\r\n if (this.state.profile.Designation)\r\n title =
    {this.state.profile.Designation}
    \r\n\r\n let svcAddress = \"\";\r\n if (this.state.profile.SVCStreet1 ||\r\n this.state.profile.SVCStreet2 ||\r\n this.state.profile.SVCCity ||\r\n this.state.profile.SVCState ||\r\n this.state.profile.SVCZip)\r\n svcAddress =
    \r\n
    \r\n {this.state.profile.SVCStreet1} {this.state.profile.SVCStreet2}
    \r\n {this.state.profile.SVCCity}, {this.state.profile.SVCState} {this.state.profile.SVCZip}\r\n
    \r\n
    \r\n\r\n let e911address = \"\";\r\n let userId = sessionStorage.SelectedUserId;\r\n if (this.state.profile.PBXUserId && this.state.profile.PBXUserId !== '')\r\n userId = this.state.profile.PBXUserId;\r\n\r\n if (this.state.profile.E911Street1 ||\r\n this.state.profile.E911Street2 ||\r\n this.state.profile.E911City ||\r\n this.state.profile.E911State ||\r\n this.state.profile.E911Zip)\r\n e911address =
    \r\n
    \r\n {this.state.profile.E911Street1} {this.state.profile.E911Street2}
    \r\n {this.state.profile.E911City}, {this.state.profile.E911State} {this.state.profile.E911Zip}\r\n
    \r\n
    \r\n return (\r\n
    \r\n
    \r\n
    \r\n
    {this.getCompany()}
    \r\n {title}\r\n {svcAddress}\r\n
    \r\n
    \r\n Department: {this.state.profile.Department}\r\n
    \r\n
    \r\n Service Number:\r\n
    \r\n {this.state.profile.ServiceNumber}\r\n \r\n Ext. {this.state.profile.Extension}\r\n
    \r\n
    \r\n
    \r\n Email: {this.state.profile.Email}
    \r\n Mobile: {this.state.profile.Mobile}
    \r\n Pager: {this.state.profile.Pager}
    \r\n YahooId: {this.state.profile.YahooId}
    \r\n
    \r\n
    \r\n Location:\r\n
    {this.state.profile.Location}
    \r\n
    \r\n
    \r\n Phone Model:\r\n
    {this.state.profile.DeviceModel}
    \r\n
    \r\n
    \r\n Mac Address:\r\n
    {this.state.profile.DeviceMAC}
    \r\n
    \r\n
    \r\n Language:\r\n
    {this.state.profile.Language}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Portal Login Username:\r\n
    {this.state.profile.PortalUsername}
    \r\n
    \r\n
    \r\n User ID:\r\n
    {userId}
    \r\n
    \r\n
    \r\n Enterprise ID:\r\n
    {this.state.profile.ParentAccountNumber}
    \r\n
    \r\n\r\n
    \r\n E911 Address:\r\n
    \r\n {e911address}\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n

    \r\n

    \r\n PLEASE READ: Your Current E911 Service Address is considered the address at which emergency personnel will respond when an E911 call is placed from your number. By default, your Current E911 Service Address will be the same as your Primary E911 Service Address, which is the primary address at which your service resides. You must temporarily update your Current E911 Service Address in the event you utilize the service from an address other than the Primary E911 Service Address.\r\n Current E911 Service Addresses must validate with the Public Safety Answering Point (PSAP) system. Using the service to place E911 calls at a non-validated E911 service address can result in an unsuccessful emergency personnel dispatch. If a service address cannot be validated, it may be because the address you entered is not specific enough, is either a PO Box, is not with the 48 United States or Hawaii, or too new to be verified by the PSAP system. If you are unable to validate a service address, please contact your administrator or service provider.\r\n Please allow 10 minutes for address to validate in our system after updating. \r\n To change the Primary E911 Service Address listed, please contact your administrator or service provider to initiate a Change of Address, or “Move”, order.\r\n

    \r\n
    \r\n\r\n
    \r\n Password Recovery:\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.mfaModal()}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    )\r\n }\r\n\r\n mfaModal = () => {\r\n if (this.state.ServiceNumber !== undefined &&\r\n this.state.PBXUserID !== undefined &&\r\n sessionStorage.enableMFA == \"true\" &&\r\n (!sessionStorage.SelectedUserId || sessionStorage.SelectedUserId === sessionStorage.userId)) {\r\n return (\r\n
    \r\n Authentication:\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n showPrincipalUserProfile = (ServiceNumber, PBXUserID) => {\r\n return this.serviceNotSelected(ServiceNumber, PBXUserID) || this.state.adminProfile;\r\n }\r\n\r\n serviceNotSelected = (ServiceNumber, PBXUserID) => {\r\n return !(ServiceNumber || PBXUserID) || (ServiceNumber === '' && PBXUserID === '');\r\n }\r\n\r\n getProfileApiUrl = (ServiceNumber, PBXUserID) => {\r\n let apiUrl = '';\r\n if (this.showPrincipalUserProfile(ServiceNumber, PBXUserID))\r\n apiUrl = 'usr/UserProfile';\r\n else\r\n apiUrl = `usr/UserProfile?PBXUserID=${PBXUserID}&ServiceNumber=${ServiceNumber}`;\r\n\r\n return apiUrl;\r\n\r\n }\r\n\r\n getName() {\r\n if (this.state.loading)\r\n return \"\";\r\n\r\n if (this.state.profile.FirstName || this.state.profile.LastName)\r\n return this.state.profile.FirstName + \" \" + this.state.profile.LastName;\r\n else if (this.state.profile.ServiceNumber && this.state.profile.ServiceNumber !== '')\r\n return this.state.profile.ServiceNumber\r\n else if (this.state.profile.Extension && this.state.profile.Extension !== '')\r\n return 'Ext: ' + this.state.profile.Extension\r\n else\r\n return \"Admin\";\r\n }\r\n getCompany() {\r\n return (\r\n {this.state.profile.CustomerName}\r\n \r\n )\r\n // if(this.props.IsAdmin)\r\n // return ( \r\n // \r\n //
    {this.state.profile.CustomerName}
    \r\n // Enterprise ID: {this.state.profile.ParentAccountNumber }\r\n //
     
    \r\n //
    \r\n // )\r\n // else{\r\n // return ( \r\n // {this.state.profile.CustomerName}\r\n // \r\n // )\r\n // }\r\n }\r\n getChangeEmailValues = () => {\r\n return {\r\n ServiceNumber: this.state.profile.ServiceNumber, //props.CurrentUserProfile.ServiceNumber ? props.CurrentUserProfile.ServiceNumber : '',\r\n PBXUserID: this.state.profile.PBXUserId,\r\n UserID: sessionStorage.SelectedUserId ? sessionStorage.SelectedUserId : 0\r\n }\r\n }\r\n getHeaderValues = () => {\r\n return {\r\n EnterpriseId: this.state.profile.ParentAccountNumber,\r\n ServiceNumber: this.state.profile.ServiceNumber,\r\n Mobile: this.state.profile.Mobile,\r\n Pager: this.state.profile.Pager,\r\n YahooId: this.state.profile.YahooId,\r\n GroupId: this.state.profile.Location\r\n };\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Profile

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {this.getName()}

    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n {this.getProfile()}\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n}\r\n\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n ServiceNumber: (state.reducer.ServiceNumber || ''),\r\n PBXUserID: (state.reducer.PBXUserID || '')\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(Profile);","import React, { useState, useEffect, useRef, Fragment } from \"react\";\r\nimport { Row, Col, Button } from \"react-bootstrap\";\r\nimport { Modal } from \"react-bootstrap\";\r\nimport { DataLoadingSpinner } from \"../../components/spinners\";\r\nimport * as apiCalls from \"../../requests/api_calls\";\r\nimport * as config from \"../../requests/config\";\r\nimport moment from \"moment\";\r\nimport { DatePicker } from \"@progress/kendo-dateinputs-react-wrapper\";\r\nimport * as session from \"../../scripts/session\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { homePageUrl } from \"../../scripts/helper\";\r\n\r\nconst CustomCollapse = ({ id, title, children }) => {\r\n const [isSectionCollapse, setIsSectionCollapsed] = useState(true);\r\n\r\n const toggleCollapseSection = () => {\r\n setIsSectionCollapsed(!isSectionCollapse);\r\n };\r\n const headerId = `header${id}`;\r\n const collapseId = `collapse${id}`;\r\n\r\n const collapseHeaderSectionStyle = {\r\n borderTopRightRadius: \"10px\",\r\n borderTopLeftRadius: \"10px\",\r\n padding: \"1% 1%\",\r\n color: \"#ffff\",\r\n marginBottom: \"0px\",\r\n backgroundColor: \"#44576f\",\r\n fontSize: \"16px\",\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n

    \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n

    \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n
    {children}
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default function BillingMain(props) {\r\n const [availableLocations, setAvailableLocations] = useState([]);\r\n const [customerInfo, setCustomerInfo] = useState({});\r\n const [billingAddr, setBillingAddr] = useState({});\r\n const [currentBill, setCurrentBill] = useState({});\r\n const [paymentHistory, setPaymentHistory] = useState([]);\r\n const [selectStatement, setSelectStatement] = useState([]);\r\n const [invoices, setInvoices] = useState([]);\r\n const [recentInvoices, setRecentInvoices] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n const [accNum, setAccNum] = useState(\"\");\r\n const [url, setURL] = useState(\"\");\r\n const [invoiceNotFoundData, setInvoiceNotFoundData] = useState(\"\");\r\n const currentYear = new Date().getFullYear();\r\n const years = Array.from({ length: 10 }, (_, index) => currentYear - index);\r\n const downloadPdfRef2 = useRef();\r\n const iframeRef = useRef();\r\n const [modalDisplay, setModalDisplay] = useState(null);\r\n const downloadCsvRef = useRef(null);\r\n\r\n const [selectedBillingAccountNumber, setSelectedBillingAccountNumber] =\r\n useState(\"\");\r\n\r\n useEffect(() => {\r\n if (\r\n session.IsWholesale() ||\r\n sessionStorage.userEnterpriseNumber === \"3904000825\" ||\r\n sessionStorage.hasBillingAdminPermission == \"false\"\r\n ) {\r\n const homePathToRedirect = homePageUrl();\r\n props.history.push(homePathToRedirect);\r\n }\r\n getBillingData();\r\n }, []);\r\n\r\n const handleSetUp = async (e, id) => {\r\n e.preventDefault();\r\n e.isDefaultPrevented();\r\n\r\n await getURL(\r\n id,\r\n accNum,\r\n currentBill?.RecurringPaymentMethod,\r\n currentBill?.Balance\r\n );\r\n setModalDisplay(\"showDeletePrompt2\");\r\n };\r\n\r\n const handleProcess = async () => {\r\n setModalDisplay(\"showDraftModal\");\r\n };\r\n\r\n const getBillingData = async (accountBillingNumber) => {\r\n setLoading(true);\r\n try {\r\n let path = accountBillingNumber\r\n ? `usr/billing/GetData?billingAccountNumber=${accountBillingNumber} `\r\n : \"usr/billing/GetData\";\r\n const response = await apiCalls.fetchData(path);\r\n if (response) {\r\n setAccNum(response?.BillingAccountNumber);\r\n setAvailableLocations(\r\n response?.AvailableBillingLocations &&\r\n response.AvailableBillingLocations\r\n );\r\n setSelectedBillingAccountNumber(\r\n accountBillingNumber\r\n ? accountBillingNumber\r\n : response?.AvailableBillingLocations &&\r\n response.AvailableBillingLocations[0]\r\n );\r\n setCustomerInfo(response?.CustomerName);\r\n setBillingAddr(response?.BillingAddress);\r\n setCurrentBill(response?.CurrentBill);\r\n setPaymentHistory(response?.Payments);\r\n setInvoices(response?.Invoices);\r\n\r\n const invoicesLastMonth = response?.Invoices\r\n ? response.Invoices.filter((invoice) => {\r\n // Get current date\r\n const currentDate = new Date();\r\n // Get invoice date\r\n const invoiceDate = new Date(invoice.InvoiceDate);\r\n\r\n // Get the previous month and the year of the previous month\r\n let previousMonth = currentDate.getMonth() - 1;\r\n let previousMonthYear = currentDate.getFullYear();\r\n\r\n // If previous month is January (0), set previousMonth to December (11) and decrease the year by 1\r\n if (previousMonth < 0) {\r\n previousMonth = 11;\r\n previousMonthYear--;\r\n }\r\n\r\n // Extract the month and year from the invoiceDate\r\n const invoiceDateMonth = invoiceDate.getMonth();\r\n const invoiceDateYear = invoiceDate.getFullYear();\r\n\r\n // Check if the invoiceDate is from the previous month\r\n if (\r\n invoiceDateMonth === previousMonth &&\r\n invoiceDateYear === previousMonthYear\r\n )\r\n return invoice;\r\n })\r\n : [];\r\n setRecentInvoices(invoicesLastMonth);\r\n }\r\n } catch (error) {\r\n throw error;\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n const getIP = async () => {\r\n try {\r\n const response = await fetch(\"https://api.ipify.org?format=json\");\r\n if (!response.ok) {\r\n throw new Error(\"Network response was not ok\");\r\n }\r\n const data = await response.json();\r\n return data.ip;\r\n } catch (error) {\r\n console.error(\"Error fetching IP:\", error);\r\n return null;\r\n }\r\n };\r\n\r\n const getURL = async (id, accNum, method, bal) => {\r\n setModalDisplay(\"loading\");\r\n try {\r\n const recurringPaymentMethod = method;\r\n // let returnUrl = window.location.protocol + '//' + window.location.host +'/BillingNew';\r\n // let returnUrl = window.location.host +'/BillingNew';\r\n let returnUrl = \"\";\r\n const amount = bal;\r\n const pageId = id;\r\n let ip = await getIP();\r\n const reqParam = {\r\n billingAccountNumber: accNum,\r\n recurringPaymentMethod: recurringPaymentMethod,\r\n amount: amount,\r\n pageId: pageId,\r\n clientIP: ip,\r\n returnUrl: returnUrl,\r\n };\r\n let path = \"usr/billing/GetPayTraceUrl\";\r\n //\r\n const response = await apiCalls.post(\r\n path,\r\n \"POST\",\r\n JSON.stringify(reqParam)\r\n );\r\n if (response.ok) {\r\n let parsedResponse = JSON.parse(response?.message);\r\n setURL(parsedResponse);\r\n }\r\n } catch (error) {\r\n console.error(\"Getting URL\", error);\r\n throw error;\r\n } finally {\r\n // display the one time payment modal\r\n if (id == 0) {\r\n setModalDisplay(\"showOneTimeModal\");\r\n }\r\n // display the recurring payment modal\r\n if (id == 1) {\r\n setModalDisplay(\"showRecurringModal\");\r\n }\r\n // display the bank draft payment modal\r\n if (id == 3) {\r\n setModalDisplay(\"showDraftModal\");\r\n }\r\n }\r\n };\r\n\r\n const handleSelect = (e) => {\r\n setSelectStatement(document.getElementById(\"selectInvoice\").value);\r\n };\r\n\r\n const NumberWithBrackets = ({ number }) => {\r\n const isNegative = number < 0;\r\n const formattedNumber = number.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n });\r\n return (\r\n \r\n {isNegative ? \"(\" : \"\"}\r\n {\"$\" + formattedNumber.replace(/-/g, \"\")}\r\n {isNegative ? \")\" : \"\"}\r\n \r\n );\r\n };\r\n const handleDropdownChange = (e) => {\r\n getBillingData(e.target.value);\r\n };\r\n const exportCallLogs = async (id) => {\r\n await setInvoiceNotFoundData(\"\");\r\n await setModalDisplay(\"loading\");\r\n try {\r\n const response = await fetch(config.baseApiUrl + \"admin/GetInvoice\", {\r\n method: \"POST\",\r\n body: new URLSearchParams({\r\n AccountNumber: accNum,\r\n InvoiceId: id,\r\n access_token: config.storedAccessToken(),\r\n x_policy: config.storedXPolicy(),\r\n }),\r\n });\r\n\r\n if (!response.ok && response.status === 404) {\r\n const data = await response.text();\r\n const pattern = /\\w+\\(\\): (.+?)\\. UserId=/;\r\n const match = data.match(pattern);\r\n const errorMessage = match ? match[1].trim() + \".\" : data;\r\n\r\n await setInvoiceNotFoundData(errorMessage);\r\n\r\n setModalDisplay(\"showInvoiceNotFound\");\r\n } else {\r\n setModalDisplay(\"\");\r\n }\r\n\r\n // If the response is successful, submit the form\r\n downloadCsvRef.current.submit();\r\n } catch (error) {\r\n setModalDisplay(\"\");\r\n // Handle network errors or any other unexpected errors here\r\n console.error(\"Error:\", error);\r\n }\r\n };\r\n\r\n // this function dynamically creates and submits a form on button click so that last loaded invoiceID is used on API call\r\n const exportInvoice = (id) => {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* Button element */}\r\n exportCallLogs(id)}\r\n >\r\n #{id}\r\n \r\n
    \r\n );\r\n };\r\n\r\n const testExport2 = (invoices, id) => {\r\n // Get POST data\r\n if (invoices && invoices.length > 0) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n };\r\n\r\n const exportInvoiceGo = async (e, id) => {\r\n setInvoiceNotFoundData(\"\");\r\n setModalDisplay(\"loading\");\r\n try {\r\n const response = await fetch(config.baseApiUrl + \"admin/GetInvoice\", {\r\n method: \"POST\",\r\n body: new URLSearchParams({\r\n AccountNumber: accNum,\r\n InvoiceId: id,\r\n access_token: config.storedAccessToken(),\r\n x_policy: config.storedXPolicy(),\r\n }),\r\n });\r\n\r\n if (!response.ok && response.status === 404) {\r\n const data = await response.text();\r\n const pattern = /\\w+\\(\\): (.+?)\\. UserId=/;\r\n const match = data.match(pattern);\r\n const errorMessage = match ? match[1].trim() + \".\" : data;\r\n\r\n setInvoiceNotFoundData(errorMessage);\r\n\r\n setModalDisplay(\"showInvoiceNotFound\");\r\n } else {\r\n setModalDisplay(\"\");\r\n }\r\n\r\n // If the response is successful, submit the form\r\n if (downloadPdfRef2.current) {\r\n downloadPdfRef2.current.submit();\r\n }\r\n } catch (error) {\r\n setModalDisplay(\"\");\r\n // Handle network errors or any other unexpected errors here\r\n console.error(\"Error:\", error);\r\n }\r\n };\r\n\r\n const BillingModalContent = (content = \"\") => {\r\n let btnStyle = { width: \"48%\", textWrap: \"wrap\", backgroundColor: \"#fff\" };\r\n // one variable for managing which screen is displayed inside a single modal\r\n switch (modalDisplay) {\r\n case \"loading\":\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n case \"showDeletePrompt\":\r\n return (\r\n <>\r\n \r\n \r\n Manage Payments\r\n \r\n \r\n \r\n \r\n

    \r\n Manage your billing payment methods using any one of the\r\n following options:\r\n

    \r\n {/* {currentBill?.RecurringPaymentMethod?.toLowerCase() === 'recurring credit card'\r\n && */}\r\n
    \r\n \r\n
    \r\n {/* } */}\r\n
    \r\n \r\n
    \r\n\r\n {currentBill?.RecurringPaymentMethod?.toLowerCase() ===\r\n \"recurring bank draft\" ? (\r\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 case \"showDeletePrompt2\":\r\n return (\r\n <>\r\n \r\n {url && (\r\n \r\n \r\n Please close the popup.\r\n \r\n
    \r\n
    \r\n )}\r\n \r\n );\r\n case \"showRecurringModal\":\r\n return (\r\n <>\r\n \r\n \r\n
    \r\n \r\n Recurring Payments\r\n \r\n

    \r\n If you choose to pay by recurring credit card, there will be a\r\n credit card processing fee in the amount of 1.8% applied to\r\n each recurring transaction. The credit card processing fee is\r\n less than our costs incurred with accepting your credit card.\r\n You can avoid the processing fee by choosing another non\r\n credit card payment method.\r\n

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

    \r\n © 2020 - PaymentPages -{\" \"}\r\n \r\n Privacy\r\n \r\n

    \r\n \r\n
    \r\n \r\n \r\n );\r\n case \"showOneTimeModal\":\r\n return (\r\n <>\r\n \r\n \r\n
    \r\n \r\n One Time Payments\r\n \r\n

    \r\n If you choose to pay by credit card, there will be a credit\r\n card processing fee in the amount of 1.8% applied to this\r\n transaction. The credit card processing fee is less than our\r\n costs incurred with accepting your credit card. You can avoid\r\n the processing fee by choosing another non credit card payment\r\n method.\r\n

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

    \r\n © 2020 - PaymentPages -{\" \"}\r\n \r\n Privacy\r\n \r\n

    \r\n \r\n
    \r\n \r\n \r\n );\r\n case \"showDraftModal\":\r\n return (\r\n <>\r\n \r\n \r\n
    \r\n \r\n Payment through Bank Draft\r\n \r\n

    \r\n Please fill the following information to make a payment. All\r\n infromation you enter must match you checking or saving\r\n accounts statement. Funds will be drafted no earlier than\r\n three days before your invoice's due date.\r\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 I have read and agree to the\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n

    \r\n Recurring Payment (Funds will be drafted no earlier than three\r\n days before your invoice's due date).\r\n

    \r\n

    \r\n Please be advised when you set up a recurring payment method\r\n any past due balance as well as current charges will be\r\n charged on your first scheduled payment date.\r\n

    \r\n

    \r\n © 2020 - PaymentPages -{\" \"}\r\n \r\n Privacy\r\n \r\n

    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n case \"showInvoiceNotFound\":\r\n return (\r\n <>\r\n \r\n \r\n Error\r\n \r\n \r\n \r\n \r\n

    {invoiceNotFoundData}

    \r\n \r\n
    \r\n \r\n \r\n );\r\n default:\r\n return <>;\r\n }\r\n };\r\n\r\n const row = (col1, col2, noBorder = false) => {\r\n return (\r\n \r\n \r\n \r\n {col1}\r\n \r\n \r\n {col2}\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Billing

    \r\n
    \r\n
    \r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n setModalDisplay(null)}\r\n backdrop=\"static\"\r\n >\r\n {BillingModalContent()}\r\n \r\n\r\n {customerInfo && Object.keys(customerInfo).length > 0 && (\r\n \r\n <>\r\n {row(\"Name\", customerInfo)}\r\n {row(\r\n \"Account Number\",\r\n availableLocations.length > 1 ? (\r\n \r\n ) : (\r\n availableLocations[0]\r\n )\r\n )}\r\n {row(\"Payment\", currentBill?.RecurringPaymentMethodDisplay)}\r\n {row(\r\n \"Billing Address\",\r\n <>\r\n {billingAddr?.Street1BILL}\r\n
    \r\n {billingAddr?.CityBILL}, {billingAddr?.StateBILL}\r\n
    \r\n {billingAddr?.ZipBILL}\r\n ,\r\n true\r\n )}\r\n \r\n
    \r\n )}\r\n\r\n {currentBill && Object.keys(currentBill).length > 0 && (\r\n \r\n <>\r\n {row(\r\n \"Current Bill:\",\r\n <>{`$${currentBill?.CurrentBalance.toLocaleString(\r\n undefined,\r\n {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n }\r\n )}`}\r\n )}\r\n {row(\r\n \"Past Due:\",\r\n <>{`$${currentBill?.PastDue.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}`}\r\n )}\r\n {row(\r\n \"Amount Due:\",\r\n <>{`$${currentBill?.Balance.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}`}\r\n )}\r\n {row(\r\n \"Due Date:\",\r\n <>{moment(currentBill?.DueDate).format(\"MM/DD/YYYY\")},\r\n true\r\n )}\r\n
    \r\n {\r\n setModalDisplay(\"showDeletePrompt\");\r\n }}\r\n className=\"a btn\"\r\n >\r\n Pay My Bill\r\n \r\n
    \r\n \r\n
    \r\n )}\r\n\r\n \r\n \r\n {Object.keys(paymentHistory).length > 0 && (\r\n \r\n {paymentHistory.slice(0, 4).map((pay) => (\r\n \r\n Payment of $\r\n {pay.PaymentAmount.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}{\" \"}\r\n on{\" \"}\r\n {moment(pay.PaymentDate).format(\"M/D/YYYY h:mm:ss A\")}\r\n
    \r\n

    \r\n ))}\r\n \r\n )}\r\n {Object.keys(recentInvoices).length > 0 && (\r\n \r\n {recentInvoices.map((invoice) => (\r\n \r\n \r\n Statement{\" \"}\r\n \r\n {exportInvoice(invoice?.InvoiceID)}\r\n
    \r\n {\" \"}\r\n in the amount of{\" \"}\r\n \r\n  on \r\n {moment(invoice.InvoiceDate).format(\r\n \"M/D/YYYY h:mm:ss A\"\r\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

    {currentBill?.RecurringPaymentMethodDisplay}

    \r\n {\r\n setModalDisplay(\"showDeletePrompt\");\r\n }}\r\n >\r\n Set up\r\n \r\n
    \r\n \r\n \r\n\r\n {invoices?.length > 0 && (\r\n \r\n \r\n \r\n
    \r\n

    View Statements

    \r\n handleSelect(e)}\r\n // value={fileSelected}\r\n >\r\n \r\n {invoices &&\r\n invoices.map((invoice) => (\r\n \r\n ))}\r\n \r\n
    \r\n {testExport2(invoices, selectStatement)}\r\n \r\n
    \r\n
    \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n}","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport { TimePicker } from '@progress/kendo-dateinputs-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\n\r\n\r\nclass EditContactCenterModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n \r\n\r\n \r\n \r\n Edit Contact Center\r\n \r\n \r\n
    \r\n\t

    You can configure Contact Centers to allow agents to log in and out, to queue incoming calls that cannot be answered immediately, to re-direct calls when the group cannot accept calls, and to provide music or video for caller on hold.

    \r\n\r\n\t
    \r\n\t \r\n\t Active Contact Center\r\n\t
    \r\n\t
    \r\n\t\t
    \r\n\t\t \t
    \r\n\t\t\t\t
    \r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t\t
    \r\n\t\t \t
    \r\n\t\t \t
    \r\n\t\t\t\t
    \r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t\t
    \r\n\t\t \t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t \r\n\t\t \r\n\t\t
    \r\n\t\t
    \r\n\t\t \t
    \r\n\t\t\t\t
    \r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t\t
    \r\n\t\t \t
    \r\n\t\t \t
    \r\n\t\t\t\t
    \r\n\t\t\t\t \r\n\t\t\t\t \r\n\t\t\t\t
    \r\n\t\t \t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t \t
    \r\n\t\t\t\t
    \r\n\t\t\t\t \r\n\t\t\t\t\t \r\n\t\t\t\t
    \r\n\t\t \t
    \r\n\t\t \t
    \r\n\t\t\t\t
    \r\n\t\t\t\t \r\n\t\t\t\t\t \r\n\t\t\t\t
    \r\n\t\t \t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t \t
    \r\n\t\t\t\t
    \r\n\t\t\t\t \r\n\t\t\t\t\t \r\n\t\t\t\t
    \r\n\t\t \t
    \r\n\t\t \t
    \r\n\t\t\t\t
    \r\n\t\t \t
    \r\n\t\t
    \r\n\r\n\r\n\t\t
    \r\n\t\t \r\n\t\t
    \r\n\t\t \t \r\n\t\t \t\r\n\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t \r\n\t\t
    \r\n\t\t \t \r\n\t\t \t\r\n\t\t \t
    \r\n\t\t \t\r\n\t\t \t\r\n\t\t
    \r\n\t\t
    \r\n\t\t
    Bandwidth and QoS Settings
    \r\n\t\t
    \r\n\t\t \t\r\n\t\t\t \r\n\t\t
    \r\n\t\t
    \r\n\t\t \t\r\n\t\t\t \r\n\t\t
    \r\n\t\t
    Contact Center Settings
    \r\n\t\t
    \r\n\t\t \r\n\t\t \r\n\t\t
    \r\n\t\t
    \r\n\t\t \r\n\t\t Enable video support\r\n\t\t
    \r\n\t\t
    \r\n\t\t \r\n\t\t Play ringing when offering call\r\n\t\t
    \r\n\t\t
    \r\n\t\t \r\n\t\t Allow callers to dial a number to escape out of queue\r\n\t\t
    \r\n\t\t \r\n\t\t \r\n\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t \r\n\t\t Reset caller statistics upon entry to queue\r\n\t\t
    \r\n\t\t {/*\r\n\t\t\t\t\t
    Reporting Settings
    \r\n\t\t
    \r\n\t\t \r\n\t\t Enable Contact Center External Reporting\r\n\t\t
    \r\n\t\t \r\n\t\t \r\n\t\t
    \r\n\t\t
    \r\n\t\t */}\r\n\t\t
    Agent Settings
    \r\n\t\t
    \r\n\t\t \r\n\t\t Allow agents to join Contact Centers\r\n\t\t
    \r\n\t\t
    \r\n\t\t \r\n\t\t Allow Call Waiting on agents\r\n\t\t
    \r\n\t\t
    \r\n\t\t \r\n\t\t Enable calls to agents in wrap-up state\r\n\t\t
    \r\n\t\t
    \r\n\t\t \r\n\t\t Enable maximum ACD wrap-up timer\r\n\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t \t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t \t
    \r\n\t\t\t\t \t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t \t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t \r\n\t\t Automatically set agent state after call\r\n\t\t
    \r\n\t\t\t \t\r\n\t\t\t\t \r\n\t\t\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t \r\n\t\t Automatically answer calls after waiting\r\n\t\t
    \r\n\t\t \r\n\t\t \r\n\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t \tChange Password\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t \r\n\t\t\t \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\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 getConfig() {\r\n return (\r\n
    \r\n\r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n )\r\n }\r\n};\r\n\r\nexport default EditContactCenterModal;\r\n","import React, { Component } from 'react';\r\nimport * as settings from './../scripts/settings.js';\r\nimport { store } from '../store/store';\r\nimport { connect } from 'react-redux';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { fetchData } from './../requests/api_calls';\r\nimport { DataLoadingSpinner } from './../components/spinners';\r\nimport EditContactCenterModal from './modals/editContactCenterModal';\r\n\r\nclass ContactCenter extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n };\r\n\r\n\r\n servicesContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else { \r\n return (\r\n
    \r\n
    \r\n

    Contact Center 12

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \t\r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n \r\n \r\n \t\r\n \t\t\r\n \t\t\r\n \t\t\r\n \t\t\r\n \t\t\r\n \t\t\r\n \t\r\n \r\n
    ActiveNameTypePhone NumberExt
    PHL SalesPremium123 123 1234123\r\n\t\t\t\t\t\t \r\n \t\t\t \t Configure\r\n \t\t
    \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n {this.servicesContent()}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n};\r\n\r\nexport default ContactCenter;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { Tooltip } from '@progress/kendo-popups-react-wrapper';\r\n\r\nclass LocationAnnouncementRepositoryModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Announcement Repository\r\n \r\n \r\n \r\n \r\n Announcement Repository\r\n \r\n \r\n
    \r\n

    Announcement repository allows you to manage all the audio announcements

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    DescriptionFile TypeFile SizePlay
    Cool Desc.wav36mb\r\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 Max file size for audio announcements is 5MB in CCIT u-Law 8kHz, 8bit Mono format\r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    Cool Desc.wav36mb\r\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 Max file size for audio announcements is 5MB in CCIT u-Law 8kHz, 8bit Mono format\r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n File Storage: 14 MB used. 984 MB avaiable.\r\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 LocationAnnouncementRepositoryModal;\r\n","import React, { Component } from 'react';\r\nimport _ from 'lodash';\r\n\r\nclass AudioUpload extends Component {\r\n\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.changeRecurs = this.changeRecurs.bind(this);\r\n this.handleAddAudioNumber = this.handleAddAudioNumber.bind(this);\r\n this.state = { numberOfAudioCount:1, numberOfAudioLimit:4 };\r\n }\r\n\r\n handleAddAudioNumber(){\r\n if(this.state.numberOfAudioCount < 4)\r\n this.setState({ numberOfAudioCount: this.state.numberOfAudioCount + 1 });\r\n }\r\n\r\n changeRecurs(event){\r\n this.setState({recurValue: event.target.value})\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let audioNumberCountReachLimit = this.state.numberOfAudioCount >= this.state.numberOfAudioLimit;\r\n\t\treturn(\t\r\n\t\t\t
    \t\t\r\n\t\t\t\t
    \r\n\t\t \r\n\t\t
    \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t
    \r\n\t\t {this.getInputs(audioNumberCountReachLimit)}\r\n\t\t
    \r\n
    \r\n\t\t);\r\n\t}\r\n\r\n\tgetInputs(audioNumberCountReachLimit) {\r\n \tswitch(this.state.recurValue){\r\n \t\tcase \"default\":\r\n\t\t return (\r\n\t\t \t
    \r\n\t\t );\r\n\t \tcase \"url\":\r\n\t\t return (\r\n\t\t \t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t \r\n\t\t\t\t\t {_.times(this.state.numberOfAudioCount, i =>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t )}\r\n\t\t\t\t\t \t
    \r\n\t\t\t\t\t \tAdd additional audio URL\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t );\r\n\t \tcase \"upload\":\r\n\t\t return (\r\n\t\t \t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t \r\n\t\t\t\t\t {_.times(this.state.numberOfAudioCount, i =>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t )}\r\n\t\t\t\t\t \t
    \r\n\t\t\t\t\t \tAdd additional audio file\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t );\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default AudioUpload;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport { TabStrip, TabStripTab, PanelBar, PanelBarItem } from '@progress/kendo-react-layout';\r\nimport AudioUpload from './../../components/audioUpload';\r\n\r\n\r\nclass AnnoucementsModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false, selected: 0 };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n handleSelect = (e) => {\r\n this.setState({selected: e.selected});\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Announcements\r\n \r\n \r\n \r\n \r\n Announcements Settings\r\n \r\n \r\n
    \r\n

    Announcements allows you to customize the Contact Center voice prompts that are played to callers while waiting in queue.

    \r\n \r\n {this.getConfig()}\r\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 getConfig() {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n \r\n Play entrance message\r\n
    \r\n
    \r\n \r\n Entrance message is mandatory when played\r\n
    \r\n \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Enable estimates message for queued calls\r\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 Play high volume message\r\n
    \r\n \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Play comfort message\r\n
    \r\n
    \r\n \r\n \r\n Can't be less than 10 seconds.\r\n
    \r\n \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Enable music or video on hold for queued calls\r\n
    \r\n \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Play Call Whisper Message\r\n
    \r\n \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n};\r\n\r\nexport default AnnoucementsModal;\r\n\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\n\r\nclass AgentsModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Agents\r\n \r\n \r\n \r\n \r\n Agents\r\n \r\n \r\n
    \r\n

    Configure the list of agents that belong to this Contact Center. Users are available if they have been assigned an appropriate Contact Center feature. Users with Contact Center - Basic may be assigned to Basic Contact Centers. Users with Contact Center - Standard may be assigned to Basic or Standard Contact Centers. Users with Contact Center - Premium may be assigned to any Contact Center.

    \r\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 AgentsModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport { DateTimePicker } from '@progress/kendo-dateinputs-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\n\r\nclass StatsModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleAddPhoneNumber = this.handleAddPhoneNumber.bind(this);\r\n this.state = { showModal: false, numberOfPhoneCount:1, numberOfPhoneLimit:10 };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n handleAddPhoneNumber(){\r\n if(this.state.numberOfPhoneCount < 10)\r\n this.setState({ numberOfPhoneCount: this.state.numberOfPhoneCount + 1 });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n return (\r\n
    \r\n \r\n Status & Statistics\r\n \r\n \r\n\r\n \r\n \r\n Status & Statistics\r\n \r\n \r\n
    \r\n

    Contact Center Status and Statistics allows you to view the status and statistics of this Contact Center's activity and, as required, configure e-mail statistics reporting.

    \r\n \r\n
    Queue & Agent Statistics
    \r\n
    \r\n \r\n Display current-time statistics\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {console.log(\"value changed to:\" + e.sender.value())}}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {console.log(\"value changed to:\" + e.sender.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 \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    No. of busy overflows0
    No. of calls answered0
    No. of calls abandoned0
    No. of calls transferred0
    No. of calls timed out0
    Average no. of agents talking0
    Average no. of agents staffed0
    Average wait time0
    Average abandonement time0
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Agents StattisticsNo of Calls HandledNo of Calls UnansweredAverage Call TimeTotal Talk TimeTotal Staffed Time
    000000
    000000
    000000
    000000
    \r\n\r\n
    Statistics Report Settings
    \r\n
    \r\n \r\n Daily Report\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Queue Status
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Agents Currently Staffed
    Jared Malanjfals82@gmail.com
    Jared Malanjfals82@gmail.com
    Jared Malanjfals82@gmail.com
    Jared Malanjfals82@gmail.com
    \r\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 StatsModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\n\r\nclass SupervisorsModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Supervisors\r\n \r\n \r\n \r\n \r\n Supervisors\r\n \r\n \r\n
    \r\n

    Configure the list of users who may supervise this Contact Center. Configure agents to be supervised. Available agents are any agent available currently not supervised and can include agents that are also supervisors.

    \r\n
    Assign Supervisors
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    Assign Agents
    \r\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 SupervisorsModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\n\r\nclass DistinctiveRingModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Distinctive Ring\r\n \r\n \r\n \r\n \r\n Distinctive Ring\r\n \r\n \r\n
    \r\n

    Configure the Contact Center distinctive ringing policies for calls routed to the agent.

    \r\n
    \r\n \r\n Enable distinctive ringing for Contact Center calls\r\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 DistinctiveRingModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport { TabStrip, TabStripTab, PanelBar, PanelBarItem } from '@progress/kendo-react-layout';\r\nimport AudioUpload from './../../components/audioUpload';\r\n\r\n\r\nclass DNISModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false, selected: 0 };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n handleSelect = (e) => {\r\n this.setState({selected: e.selected});\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n DNIS\r\n \r\n \r\n \r\n \r\n DNIS\r\n \r\n \r\n
    \r\n

    Configure the Contact Center DNIS to distribute calls to agents.

    \r\n \r\n
    \r\n \r\n Display DNIS Number to agent when presenting call instead of calling number\r\n
    \r\n
    \r\n \r\n Display DNIS name to agent when presenting call instead of calling name\r\n
    \r\n
    \r\n \r\n Automatically promotes calls with Priority 1 to Priority 0 after waiting\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Automatically promotes calls with Priority 2 to Priority 1 after waiting\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Automatically promotes calls with Priority 3 to Priority 2 after waiting \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    NamePhone NumberExtensionPriority
    Call Center 1249192(Primary)123 123 12347000Highest
    \r\n {this.getConfig()}\r\n
    Call Center 1249192(Primary)123 123 12347000Highest
    \r\n {this.getConfig()}\r\n
    \r\n
    \r\n Add DNIS\r\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 getConfig() {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Use custom calling line name settings\r\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 Use custom DNIS announcement settings\r\n
    \r\n
    \r\n \r\n Allow outgoing Contact Center call\r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Play entrance message\r\n
    \r\n
    \r\n \r\n Entrance message is mandatory when played\r\n
    \r\n \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Enable estimates message for queued calls\r\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 Play high volume message\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Play high volume message\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Play comfort message\r\n
    \r\n
    \r\n \r\n \r\n Can't be less than 10 seconds.\r\n
    \r\n \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Enable music or video on hold for queued calls\r\n
    \r\n \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Play Call Whisper Message\r\n
    \r\n \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n};\r\n\r\nexport default DNISModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\n\r\nclass QueueStatusModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Queue Status Notification\r\n \r\n \r\n \r\n \r\n Queue Status Notification\r\n \r\n \r\n
    \r\n

    Configure status sent to agent devices and control the thresholds for high volume notifications.

    \r\n \r\n
    \r\n \r\n Enable notification of queue status to agent devices\r\n
    \r\n
    \r\n \r\n High volume notification thresholds for calls\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n High volume notification thresholds for seconds\r\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 getConfig() {\r\n return (\r\n
    \r\n
    \r\n \r\n Active\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n )\r\n }\r\n};\r\n\r\nexport default QueueStatusModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\n\r\nclass CallDispositionCodeModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Call Disposition Code\r\n \r\n \r\n \r\n \r\n Call Disposition Code\r\n \r\n \r\n
    \r\n

    Add or Modify Call Disposition Codes. Disposition Codes are attributes applied to a call to identify marketing promotions or other topics pertaining to a call. Add or modify call disposition codes are attributes applied to a call to identify marketing promotions or other topics pertaining to a call.

    \r\n \r\n
    \r\n \r\n Enable call disposition codes\r\n
    \r\n \r\n
    \r\n \r\n Use group codes in addition to Contact Center codes\r\n
    \r\n
    \r\n \r\n Force use of call disposition codes with default codes\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    DescriptionCodeLevel
    12491921Enterprise
    \r\n {this.getConfig()}\r\n
    12491921Enterprise
    \r\n {this.getConfig()}\r\n
    \r\n
    \r\n Add Code\r\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 getConfig() {\r\n return (\r\n
    \r\n
    \r\n \r\n Active\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n )\r\n }\r\n};\r\n\r\nexport default CallDispositionCodeModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport AudioUpload from './../../components/audioUpload';\r\n\r\n\r\nclass AcdForcedModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n ACD - Forced Forwarding\r\n \r\n \r\n \r\n \r\n ACD - Forced Forwarding\r\n \r\n \r\n
    \r\n

    Configure the Contact Center to temporarily divert new incoming calls to a different route independent of the Night Service route. Forced Forwarding does not affect calls already in the queue. The URLs/files for audio video will be played in order they are listed.

    \r\n \r\n
    \r\n \r\n Forced Forwarding\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Allow features access codes to configure forced forwarding\r\n
    \r\n
    \r\n \r\n Play announcement before forwarding\r\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 AcdForcedModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport AudioUpload from './../../components/audioUpload';\r\n\r\n\r\nclass AcdHolidayModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.changeAction = this.changeAction.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n changeAction(event){\r\n this.setState({actionValue: event.target.value})\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n ACD - Holiday Service\r\n \r\n \r\n \r\n \r\n ACD - Holiday Service\r\n \r\n \r\n
    \r\n

    Configure the contact center to route calls differently during holidays. The URLs/files for audio video will be played in order they are listed.

    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.getInputs()}\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Play announcement before holiday service action\r\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 getInputs() {\r\n switch(this.state.actionValue){\r\n case \"sip\":\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n default:\r\n return (
    )\r\n }\r\n }\r\n};\r\n\r\nexport default AcdHolidayModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport AudioUpload from './../../components/audioUpload';\r\n\r\n\r\nclass AcdNightModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.changeAction = this.changeAction.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n changeAction(event){\r\n this.setState({actionValue: event.target.value})\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n ACD - Night Service\r\n \r\n \r\n \r\n \r\n ACD - Night Service\r\n \r\n \r\n
    \r\n

    Configure the Contact Center to route calls differently during hours when the queue is not in service. This is determined by a schedule that defines the business hours of the queue. Night service cannot be disabled; however, it can have a schedule that defines business hours to be 24x7 which means that no night service shall be provided. The URLs/files for audio video will be played in order they are listed.

    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.getInputs()}\r\n
    \r\n
    \r\n \r\n Force night service regardless of business hour schedule\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Allow feature access codes to manually override night service\r\n
    \r\n
    \r\n \r\n Play announcement before night service action\r\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 getInputs() {\r\n switch(this.state.actionValue){\r\n case \"sip\":\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n default:\r\n return (
    )\r\n }\r\n }\r\n};\r\n\r\nexport default AcdNightModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\n\r\nclass QueueBouncedModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Queue - Bounced Calls\r\n \r\n \r\n \r\n \r\n Queue - Bounced Calls\r\n \r\n \r\n
    \r\n

    Configure the Contact Center routing policy for calls unanswered by agents.

    \r\n \r\n
    \r\n \r\n Bounce Calls\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Transfer to phone number\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Bounce Calls if agent becomes unavailable while routing the call\r\n
    \r\n
    \r\n \r\n Alert Agent if call is on hold for too long\r\n
    \r\n \r\n \r\n Cannot be less than 30 seconds.\r\n
    \r\n
    \r\n
    \r\n \r\n Bounce Calls after being on hold by agent for too long\r\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 QueueBouncedModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport AudioUpload from './../../components/audioUpload';\r\n\r\n\r\nclass QueueComfortModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Queue - Comfort Message Bypass\r\n \r\n \r\n \r\n \r\n Queue - Comfort Message Bypass\r\n \r\n \r\n
    \r\n

    Configure the Contact Center to play ringing and/or a different message instead of music and comfort messages if the call is expected to be answered quickly. The URLs/files for audio video will be played in order they are listed.

    \r\n \r\n
    \r\n \r\n Comfort Message Bypass\r\n
    \r\n
    \r\n \r\n Play announcement after ringing\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default QueueComfortModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport AudioUpload from './../../components/audioUpload';\r\n\r\n\r\nclass QueueOverflowModal extends Component {\r\n\r\n\tconstructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.changeAction = this.changeAction.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n changeAction(event){\r\n this.setState({actionValue: event.target.value})\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Queue - Overflow\r\n \r\n \r\n \r\n \r\n Queue - Overflow\r\n \r\n \r\n
    \r\n

    Configure the Contact Center routing policy when a large number of calls have been received or calls have been waiting longer than a configured threshold. The URLs/files for audio video will be played in order they are listed.

    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {this.getInputs()}\r\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 getInputs() {\r\n switch(this.state.actionValue){\r\n case \"sip\":\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n default:\r\n return (
    )\r\n }\r\n }\r\n};\r\n\r\nexport default QueueOverflowModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport AudioUpload from './../../components/audioUpload';\r\n\r\n\r\nclass QueueStrandedModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.changeAction = this.changeAction.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n changeAction(event){\r\n this.setState({actionValue: event.target.value})\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Queue - Stranded Calls\r\n \r\n \r\n \r\n \r\n Queue - Stranded Calls\r\n \r\n \r\n
    \r\n

    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {this.getInputs()}\r\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 getInputs() {\r\n switch(this.state.actionValue){\r\n case \"sip\":\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n default:\r\n return (
    )\r\n }\r\n }\r\n};\r\n\r\nexport default QueueStrandedModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DatePicker } from '@progress/kendo-dateinputs-react-wrapper';\r\n\r\n\r\nclass ConfigureProductModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Weighted Call Distribution\r\n \r\n \r\n \r\n \r\n Weighted Call Distribution\r\n \r\n \r\n
    \r\n

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Maiores, incidunt!

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    AgentWeight
    Jared Malan (123123123)
    Jared Malan (123123123)
    Jared Malan (123123123)
    Jared Malan (123123123)
    Total Must equal 100%
    \r\n
    \r\n
    \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\r\nexport default ConfigureProductModal;","import React from 'react';\r\nimport LocationAnnouncementRepositoryModal from './locations/modals/locationAnnouncementRepositoryModal';\r\nimport AnnoucementsModal from './modals/annoucementsModal';\r\nimport AgentsModal from './modals/agentsModal';\r\nimport StatsModal from './modals/statsModal';\r\nimport SupervisorsModal from './modals/supervisorsModal';\r\nimport DistinctiveRingModal from './modals/distinctiveRingModal';\r\nimport DNISModal from './modals/dnisModal';\r\nimport QueueStatusModal from './modals/queueStatusModal';\r\nimport CallDispositionCodeModal from './modals/callDispositionCodeModal';\r\nimport AcdForcedModal from './modals/acdForcedModal';\r\nimport AcdHolidayModal from './modals/acdHolidayModal';\r\nimport AcdNightModal from './modals/acdNightModal';\r\nimport QueueBouncedModal from './modals/queueBouncedModal';\r\nimport QueueComfortModal from './modals/queueComfortModal';\r\nimport QueueOverflowModal from './modals/queueOverflowModal';\r\nimport QueueStrandedModal from './modals/queueStrandedModal';\r\nimport WeightedModal from './modals/weightedModal';\r\n\r\n\r\nconst ContactCenter = () => (\r\n \t
    \r\n\t\t
    \r\n\t\t\t

    Contact Center Active

    \r\n\t\t\t
    \r\n\t\t\t\tPremium 123 123 1234 7000\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n)\r\n\r\nexport default ContactCenter;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport * as EmailValidator from 'email-validator';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\n\r\nclass E911EmailNotificationModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n \r\n this.state = { \r\n e911AddressLoading: false,\r\n DisplayEmailAddress: props.CurrentLocation.EmergencyCallNotificationEmail,\r\n EmailAddress: props.CurrentLocation.EmergencyCallNotificationEmail,\r\n LocationOverride: props.CurrentLocation.LocationOverride911Email,\r\n AccountNumber: props.CurrentLocation.LocationAccountNumber,\r\n LocationName: props.CurrentLocation.LocationName,\r\n StreetAddress: props.StreetAddress,\r\n LocationList: props.Locations.filter(resp => resp.LocationAccountNumber !== props.CurrentLocation.LocationAccountNumber),\r\n showModal: false,\r\n IsEmailValid: this.isValidEmail(props.CurrentLocation.EmergencyCallNotificationEmail),\r\n selectedLocations: [],\r\n isAllLocationsSelected: false,\r\n saving: false,\r\n saveResultsMessage: '',\r\n savingShowError: false,\r\n savingShowSuccess: false,\r\n savingShowTestSuccess: false,\r\n savingTest: false,\r\n savingShowTestError: false,\r\n testResultsMessage: ''\r\n };\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.UpdateSelectedLocations = this.UpdateSelectedLocations.bind(this);\r\n this.SelectAllLocations = this.SelectAllLocations.bind(this);\r\n this.SendTestEmail = this.SendTestEmail.bind(this);\r\n this.getSaveMessage = this.getSaveMessage.bind(this);\r\n }\r\n \r\n componentDidMount() { \r\n\r\n }\r\n\r\n componentWillReceiveProps = (props) => {\r\n let emailAddress = this.state.EmailAddress;\r\n let displayAddress = this.state.DisplayEmailAddress;\r\n if (props.CurrentLocation.EmergencyCallNotificationEmail != this.state.EmailAddress)\r\n emailAddress = props.CurrentLocation.EmergencyCallNotificationEmail;\r\n if (props.CurrentLocation.EmergencyCallNotificationEmail != this.state.DisplayEmailAddress)\r\n displayAddress = props.CurrentLocation.EmergencyCallNotificationEmail;\r\n this.setState({DisplayEmailAddress: displayAddress, EmailAddress: emailAddress})\r\n }\r\n \r\n handleClose() {\r\n let state = {...this.state};\r\n state.showModal = false;\r\n state.savingShowError = false;\r\n state.savingShowSuccess = false;\r\n state.savingShowTestError = false;\r\n state.savingShowTestSuccess = false; \r\n state.selectedLocations = [];\r\n this.setState(state);\r\n }\r\n \r\n handleShow() {\r\n let state = {...this.state};\r\n state.e911AddressLoading = true;\r\n state.showModal = true;\r\n state.e911Address = null;\r\n state.EmailAddress = state.DisplayEmailAddress;\r\n state.IsEmailValid = this.isValidEmail(state.EmailAddress);\r\n this.setState(state);\r\n \r\n \r\n }\r\n\r\n handleOnSave = () => {\r\n //if email address is valid\r\n if (this.state.IsEmailValid === true)\r\n {\r\n this.setState({saving: true});\r\n let selectedLocationAccountNumbers = [];\r\n this.state.selectedLocations.map((location) => {\r\n selectedLocationAccountNumbers.push(location.LocationAccountNumber);\r\n });\r\n selectedLocationAccountNumbers.push(this.state.AccountNumber);\r\n let apiPath = 'admin/locations/UpdateEmergencyNotificationEmail';\r\n let postData = {\r\n EmailAddress: this.state.EmailAddress,\r\n Locations: selectedLocationAccountNumbers\r\n }\r\n apiCalls.post(apiPath, 'POST', JSON.stringify(postData)).then(async resp => {\r\n let saveMessage = 'Success';\r\n let savingShowError = false;\r\n let savingShowSuccess = false;\r\n let DisplayEmail = this.state.DisplayEmailAddress;\r\n if(resp.ok) {\r\n savingShowSuccess = true;\r\n //update selected locations\r\n //let selectedLocations = this.state.selectedLocations;\r\n await this.props.updateParentArrayItem(selectedLocationAccountNumbers, this.state.EmailAddress);\r\n DisplayEmail = this.state.EmailAddress;\r\n } else {\r\n savingShowError = true;\r\n saveMessage = 'An error occurred during save!';\r\n }\r\n this.setState({saving: false, saveResultsMessage: saveMessage, savingShowError: savingShowError, savingShowSuccess: savingShowSuccess, DisplayEmailAddress: DisplayEmail});\r\n }).catch(err => {\r\n this.setState({saving: false, saveResultsMessage: 'An error occurred during save!', savingShowError: true});\r\n console.error(err)\r\n });\r\n }\r\n }\r\n\r\n SendTestEmail = (event) => {\r\n if (this.state.IsEmailValid && this.state.EmailAddress !== '')\r\n {\r\n this.setState({savingTest: true});\r\n let apiPath = 'admin/locations/SendTestEmailNotification';\r\n let postData = {\r\n LocationAccountNumber: this.state.AccountNumber,\r\n LocationName: this.state.LocationName,\r\n LocationAddress: this.state.StreetAddress,\r\n EmailAddress: this.state.EmailAddress\r\n };\r\n \r\n apiCalls.post(apiPath, 'POST', JSON.stringify(postData)).then(resp => {\r\n let saveMessage = '';\r\n let savingShowTestSuccess = false;\r\n let savingShowTestError = false;\r\n if(resp.ok) {\r\n saveMessage = 'Success! An Email should be received by the email address specified!';\r\n savingShowTestSuccess = true\r\n } else {\r\n saveMessage = 'An error occurred generating an emergency notification test email to the designated email address!';\r\n savingShowTestError = true;\r\n }\r\n this.setState({savingTest: false, savingShowTestSuccess: savingShowTestSuccess, savingShowTestError: savingShowTestError, testResultsMessage: saveMessage});\r\n }).catch((message) => {\r\n this.setState({savingTest: false, savingShowTestSuccess: false, savingShowTestError: true, testResultsMessage: 'An error occurred generating an emergency notification test email to the designated email address!'});\r\n console.error(message)\r\n });\r\n } else\r\n {\r\n this.setState({savingTest: false, savingShowTestSuccess: false, savingShowTestError: true, testResultsMessage: 'An email must be specified and be a valid email format!'});\r\n }\r\n }\r\n\r\n handleEmailChange = (event) => {\r\n let email = event.target.value;\r\n \r\n let isValidEmail = this.isValidEmail(email)\r\n this.setState({EmailAddress: email, IsEmailValid: isValidEmail});\r\n }\r\n\r\n validateEmail=()=>{\r\n let email = this.state.EmailAddress;\r\n if (this.state.LocationOverride === true && (!email || email === '')) \r\n return (
    If Email is left blank, email will be set to the default value defined for the parent Enterprise!
    );\r\n else if(this.state.LocationOverride === true && !EmailValidator.validate(email.trim()))\r\n return (
    Email address is not valid!
    );\r\n else \r\n return (
    );\r\n \r\n }\r\n \r\n isValidEmail=(email)=> (email && EmailValidator.validate(email)) || email === '';\r\n\r\n SelectAllLocations = (checked) => {\r\n let selectedLocations = [];\r\n let isSelectAll = checked;\r\n if (checked)\r\n selectedLocations = this.state.LocationList\r\n this.setState({selectedLocations: selectedLocations, isAllLocationsSelected: isSelectAll });\r\n }\r\n\r\n UpdateSelectedLocations = (locationAccountNumber, checked) => {\r\n let selectedLocations = this.state.selectedLocations;\r\n let isSelectAll = false;\r\n if (checked)\r\n {\r\n selectedLocations.push(this.state.LocationList.filter(resp => resp.LocationAccountNumber === locationAccountNumber)[0]);\r\n if (selectedLocations.length === this.state.LocationList.length)\r\n isSelectAll = true;\r\n } else {\r\n selectedLocations = selectedLocations.filter(resp => resp.LocationAccountNumber !== locationAccountNumber);\r\n }\r\n this.setState({selectedLocations: selectedLocations, isAllLocationsSelected: isSelectAll });\r\n }\r\n\r\n getCheckBoxHeader = () => {\r\n return (\r\n { this.SelectAllLocations(e.target.checked)}}\r\n />\r\n );\r\n }\r\n\r\n getCheckBoxListing = (location) => {\r\n const bChecked = this.state.selectedLocations && this.state.selectedLocations.length > 0 && \r\n this.state.selectedLocations.filter(resp => resp.LocationAccountNumber === location.LocationAccountNumber).length > 0\r\n return (\r\n { this.UpdateSelectedLocations(location.LocationAccountNumber, e.target.checked)}}\r\n />\r\n )\r\n }\r\n\r\n getLocationRows = () => {\r\n let responseObj = this.state.LocationList.map((location) => {\r\n return (\r\n \r\n {this.getCheckBoxListing(location)}\r\n {location.LocationAccountNumber} {location.LocationName}\r\n \r\n )\r\n });\r\n return responseObj;\r\n }\r\n\r\n getLocationsCheckBoxList = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.getLocationRows()}\r\n \r\n
    {this.getCheckBoxHeader()}Location
    \r\n );\r\n }\r\n\r\n getSaveMessage = () => {\r\n if (this.state.saving)\r\n {\r\n return ()\r\n } else if (this.state.savingShowError) {\r\n return (\r\n
    \r\n {this.state.saveResultsMessage}\r\n
    \r\n );\r\n } else if (this.state.savingShowSuccess) {\r\n return (\r\n \r\n
    Success
    \r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n getTestResultMessage = () => {\r\n if (this.state.savingTest === true) {\r\n return ()\r\n }\r\n else if (this.state.savingShowTestError === true) {\r\n return (\r\n
    \r\n {this.state.testResultsMessage}\r\n
    \r\n );\r\n } else if (this.state.savingShowTestSuccess === true) {\r\n return (\r\n \r\n
    {this.state.testResultsMessage}
    \r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n getModalButtons = () => {\r\n if (this.state.LocationOverride === true)\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n else\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n let emailDisplay = ''\r\n let textDisplay = (!state.DisplayEmailAddress || state.DisplayEmailAddress === '') ? (state.LocationOverride === true ? 'Update' : '') : state.DisplayEmailAddress;\r\n if (state.LocationOverride === true || (textDisplay !== ''))\r\n emailDisplay = (\r\n {textDisplay}\r\n )\r\n else\r\n emailDisplay = ( );\r\n\r\n return (\r\n \r\n {emailDisplay}\r\n \r\n \r\n Edit Emergency Call Notification Email\r\n \r\n \r\n
    \r\n \r\n
    {this.state.AccountNumber} - {this.state.LocationName}
    \r\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
    Emergency Notification Email Address: \r\n { this.handleEmailChange(x) }} /> \r\n
    \r\n { this.validateEmail()}\r\n
    \r\n \r\n {this.getTestResultMessage()}\r\n
    \r\n
    Apply Setting to Other Locations:
    \r\n
    \r\n {this.getLocationsCheckBoxList() }\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {this.getModalButtons()}\r\n {this.getSaveMessage()}\r\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 E911EmailNotificationModal;","import React, { Component } from 'react';\nimport * as settings from './../../scripts/settings';\nimport { fetchData } from './../../requests/api_calls';\nimport { DataLoadingSpinner } from './../../components/spinners';\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\nimport { orderBy } from '@progress/kendo-data-query';\nimport { Link } from 'react-router-dom';\nimport { serviceFilters } from './../../constants/filters'\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\nimport E911Modal from '../profile/modals/e911Modal';\nimport E911EmailNotificationModal from './modals/E911EmailNotificationModal';\nimport WrappedCell from '../../components/wordWrappedCell'\nimport _ from 'lodash';\n\nclass LocationName extends GridCell {\n\n render() {\n let { LocationAccountNumber, LocationName } = this.props.dataItem;\n return (\n \n {LocationName}\n \n );\n }\n}\n\nclass LocationLink extends GridCell {\n\n render() {\n let locationID = this.props.dataItem.LocationAccountNumber;\n let path = \"/services/\" + locationID + '/' + serviceFilters.ALL_SERVICES_USERS;\n return (\n \n {sessionStorage.enterpriseType ==='DATA'?

    {locationID}

    :{locationID}}\n \n );\n }\n}\n\nclass ServiceLink extends GridCell {\n\n render() {\n let locationID = this.props.dataItem.LocationAccountNumber;\n let path = \"/services/\" + locationID + '/' + serviceFilters.ALL_SERVICES;\n return (\n \n {this.props.dataItem.CountServices}\n \n );\n }\n}\n\nclass UserLink extends GridCell {\n\n render() {\n let locationID = this.props.dataItem.LocationAccountNumber;\n let path = \"/services/\" + locationID + '/' + serviceFilters.ALL_USERS;\n return (\n \n {this.props.dataItem.CountUsers}\n \n );\n }\n}\n\n// class ServiceNumbersClickPop extends GridCell {\n// render() {\n// return (\n// \n// \n// \n// );\n// }\n// }\n\nclass LocationEditButton extends GridCell {\n\n render() {\n let locationID = this.props.dataItem.LocationAccountNumber;\n return (\n \n \n \n \n \n );\n }\n}\n\nclass Locations extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n locations: [],\n preFilter: props.location.state ? props.location.state.preFilter : null,\n loading: true,\n sort: [],\n skip: 0,\n gridHeight: (window.innerHeight - 210) + 'px',\n searchTerm: ''\n };\n this.fetchLocations = this.fetchLocations.bind(this);\n this.searchLocations = this.searchLocations.bind(this);\n this.sortChange = this.sortChange.bind(this);\n this.pageChange = this.pageChange.bind(this);\n const getLocations = this.getLocations.bind(this);\n const updateLocationFromModal = this.updateLocationFromModal.bind(this);\n class E911Link extends GridCell {\n constructor(props) {\n super(props);\n }\n render() {\n const productItem = this.props.dataItem;\n return (\n \n \n \n );\n }\n }\n\n class Location911Email extends GridCell {\n constructor(props) {\n super(props);\n }\n render() {\n const productItem = this.props.dataItem;\n const locations = getLocations();\n let address = productItem.StreetSVC + ' ' + productItem.CitySVC + ', ' + productItem.StateSVC + ' ' + productItem.ZipSVC;\n return (\n \n \n \n )\n }\n }\n\n this.E911Link = E911Link;\n this.E911EmailModal = Location911Email;\n };\n\n handleResize = () => this.setState({\n gridHeight: (window.innerHeight - 210) + 'px'\n });\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleResize)\n }\n\n\n componentWillReceiveProps(nextProps, nextContext) {\n let curFilter = nextProps.location.state ? nextProps.location.state.preFilter : null;\n let apiPath;\n if (curFilter)\n apiPath = 'admin/Locations?term=' + curFilter;\n else\n apiPath = 'admin/Locations';\n\n this.setState({ ...this.state, preFilter: curFilter, loading: true });\n this.fetchLocations(apiPath);\n }\n\n componentDidMount() {\n\n this.handleResize();\n window.addEventListener('resize', this.handleResize)\n let apiPath = '';\n if (this.state.preFilter) {\n apiPath = 'admin/Locations?term=' + this.state.preFilter;\n } else {\n apiPath = 'admin/Locations';\n }\n this.fetchLocations(apiPath);\n }\n\n\n fetchLocations = (apiPath, resultsMsg, showLoading = true) => {\n this.setState({ loading: showLoading });\n fetchData(apiPath).then((data) => {\n if (data !== null) {\n this.setState({ locations: data, loading: false, resultsMsg: null });\n } else if (data === null) {\n this.setState({ locations: [], loading: false, resultsMsg: resultsMsg });\n };\n }).catch(ex => {\n console.log(ex);\n this.setState({ locations: [], loading: false });\n });\n }\n\n getLocations = () => {\n return this.state.locations;\n }\n\n updateLocationFromModal = async (locations, email) => {\n let updatedLocations = this.state.locations.slice();\n await locations.map((loc) => {\n let updatedLocation = updatedLocations.filter(res => res.LocationAccountNumber === loc);\n if (updatedLocation) {\n updatedLocation = updatedLocation[0];\n let idx = _.indexOf(this.state.locations, updatedLocation);\n updatedLocation.EmergencyCallNotificationEmail = email;\n updatedLocations[idx] = updatedLocation;\n\n }\n });\n\n let searchText = this.state.searchTerm;\n var apiPath = ''\n if (searchText !== '') {\n apiPath = 'admin/Locations?term=' + searchText;\n } else { // reset to all locations\n apiPath = 'admin/Locations';\n }\n this.setState({ locations: updatedLocations });\n //this.fetchLocations(apiPath, settings.noResultsMsg, false);\n }\n\n activeFilters = () => {\n let prefilter = this.state.preFilter;\n if (prefilter) {\n return (\n
    Filters: {prefilter}, registered accounts\n ×\n
    \n )\n }\n }\n\n sortChange(event) {\n this.setState({\n locations: this.sortLocations(event.sort),\n sort: event.sort\n });\n }\n\n pageChange(event) {\n this.setState({\n locations: this.state.locations.slice(),\n skip: event.page.skip\n });\n }\n\n sortLocations(sort) {\n var locations = [];\n if (this.state !== undefined) {\n locations = this.state.locations.slice();\n } else {\n locations = [];\n }\n return orderBy(locations, sort);\n }\n\n searchLocations = (event) => {\n let searchText = event.target.value.trim();\n this.setState({ searchTerm: searchText });\n var apiPath = ''\n if (searchText !== '') {\n apiPath = 'admin/Locations?term=' + searchText;\n } else { // reset to all locations\n apiPath = 'admin/Locations';\n }\n this.delayedSearch(apiPath);\n }\n\n delayedSearch = (apiPath) => {\n if (this.timeout) clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.fetchLocations(apiPath, settings.noResultsMsg);\n }, settings.searchDelay);\n }\n\n gridContent = () => {\n let { salesGroupId, serviceProviderName,enterpriseType } = sessionStorage;\n return (\n \n \n \n {enterpriseType !== 'DATA'?:null}\n {enterpriseType !== 'DATA'?:null} \n \n \n \n {/**/}\n {/**/}\n {salesGroupId === '14015' ||\n salesGroupId === '16632' ||\n salesGroupId === '24540' ||\n salesGroupId === '25011' ||\n salesGroupId === '26297' ||\n enterpriseType ==='DATA'\n ? null : }\n {enterpriseType !== 'DATA'?:null}\n \n \n \n )\n }\n\n locationsContent = () => {\n if (this.state.loading) {\n return \n } else {\n let message = \"\";\n if (this.state.resultsMsg) {\n message =
    {this.state.resultsMsg}
    \n }\n return (\n
    \n
    \n

    Locations & Groups {this.state.locations.length}

    \n
    {this.activeFilters()}
    \n
    \n
    \n \n \n \n
    \n {/*Export Locations*/}\n {/*New Location*/}\n
    \n
    \n
    \n {this.gridContent()}\n {message}\n
    \n
    \n )\n }\n }\n\n render() {\n return (\n
    \n
    \n {this.locationsContent()}\n
    \n
    \n )\n }\n\n}\n\nexport default Locations;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\nclass locationEditModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n \r\n \r\n Edit Location\r\n \r\n \r\n \r\n Edit Location\r\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 locationEditModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\nclass LocationAccountCodesModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Account / Authorization Codes\r\n \r\n \r\n \r\n \r\n Account / Authorization Codes\r\n \r\n \r\n
    \r\n

    Group calls for expense tracking and accounting purposes with Account Codes. Control long distance access and secure your phone lines with Authorization Codes.

    \r\n Click to view acc/auth code reports\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    CodesDescription
    1Lorem Ipsum
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n Add Code\r\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 Warning: Changing the \"Number of Digits\" will deactivate all active codes. \r\n
    \r\n
    \r\n \r\n Allow Local and Toll-Free Calls without Account/Authorization Code \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n};\r\n\r\nexport default LocationAccountCodesModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport _ from 'lodash';\r\nimport InfoPop from './../../../components/infopop';\r\n\r\n\r\nclass LocationAdvancedHuntingModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Advanced Hunting\r\n \r\n \r\n \r\n \r\n Advanced Hunting\r\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
    Group Name
    Hunt Group\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Allow Call Waiting on Line\r\n
    \r\n
    \r\n \r\n Allow members to control Group Busy\r\n
    \r\n
    \r\n \r\n Enable Group Busy\r\n
    \r\n
    \r\n \r\n Apply Group Busy When Terminating Call to Agent\r\n
    \r\n
    \r\n
    No Answer Settings
    \r\n
    \r\n \r\n Skip to next agent after a number of rings\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Forward call after wait\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    Not Reachable Settings
    \r\n
    \r\n \r\n Enable Call Forwarding Not Reachable\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Make Hunt Group busy when all available agents are not reachable\r\n
    \r\n
    \r\n
    Calling Line ID Settings
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Include the Hunt Group Name in the CLID\r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\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 LocationAdvancedHuntingModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\nclass SetPrompts extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n
    \r\n
    \r\n \r\n User Custom Greeting\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    DescriptionActionTelephone Number
    1\r\n \r\n
    2\r\n \r\n
    3\r\n \r\n
    4\r\n \r\n
    5\r\n \r\n
    6\r\n \r\n
    7\r\n \r\n
    8\r\n \r\n
    9\r\n \r\n
    0\r\n \r\n
    *\r\n \r\n
    #\r\n \r\n
    \r\n

    Note: Callers who do not indicate a transfer option will be forwarded to the operator.

    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n};\r\n\r\nexport default SetPrompts;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport SetPrompts from './../../setPrompts';\r\n\r\nclass LocationAutoAttendantModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleTab = this.handleTab.bind(this);\r\n this.state = { showModal:false,promptValue: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n handleTab(event) {\r\n event.preventDefault();\r\n this.setState({promptValue: event.target.dataset.val})\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Auto Attendant\r\n \r\n \r\n \r\n \r\n Auto Attendant\r\n \r\n \r\n
    \r\n

    Provide your customers an automated receptionist that answers the phone with a personalized message providing up to twelve (12) options for connecting to various people, departments, etc. Each Auto Attendant has its own extension or directory 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 \r\n \r\n \r\n \r\n \r\n
    Phone NumberExtension
    20580363816381\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Active?\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {this.getPromptControl()}\r\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 getPromptControl(){\r\n switch(this.state.promptValue){\r\n case \"biz\":\r\n return (\r\n \r\n );\r\n case \"after\":\r\n return (\r\n \r\n );\r\n default:\r\n return (\r\n
    Select a tab to set prompts
    \r\n );\r\n }\r\n }\r\n\r\n};\r\n\r\nexport default LocationAutoAttendantModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport SetPrompts from './setPrompts';\r\n\r\nclass SetSubmenu extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Submenu IDIn Use
    16381\r\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 SetSubmenu;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport SetPrompts from './../../setPrompts';\r\nimport SetSubmenu from './../../setSubmenu';\r\n\r\nclass LocationAutoAttendantTreeModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleTab = this.handleTab.bind(this);\r\n this.state = { showModal:false,promptValue: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n handleTab(event) {\r\n event.preventDefault();\r\n this.setState({promptValue: event.target.dataset.val})\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Auto Attendant Tree\r\n \r\n \r\n \r\n \r\n Auto Attendant Tree\r\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
    Phone NumberExtension
    20580363816381\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Active?\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\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 Enable video support\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n Holiday Prompts\r\n
    \r\n
    \r\n Submenus\r\n
    \r\n
    \r\n
    \r\n {this.getPromptControl()}\r\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 getPromptControl(){\r\n switch(this.state.promptValue){\r\n case \"biz\":\r\n return (\r\n \r\n );\r\n case \"after\":\r\n return (\r\n \r\n );\r\n case \"holiday\":\r\n return (\r\n \r\n );\r\n case \"submenus\":\r\n return (\r\n \r\n );\r\n default:\r\n return (\r\n
    Select a tab to set prompts
    \r\n );\r\n }\r\n }\r\n\r\n\r\n};\r\n\r\nexport default LocationAutoAttendantTreeModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { Slider } from '@progress/kendo-inputs-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\nclass locationCallPark extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Call Park\r\n \r\n \r\n \r\n \r\n Call Park\r\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
    Group Name
    Meet-Me\r\n \r\n
    \r\n
    \r\n {/*

    No extension is configured for this Call Park. Configure

    */}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\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 Enable Parked Destination Announcement\r\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 locationCallPark;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\n\r\nclass LocationCallPickupModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Call Pickup\r\n \r\n \r\n \r\n \r\n Call Pickup Settings\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Group Name
    Meet-Me\r\n \r\n
    \r\n
    \r\n

    Answer any ringing line within your call pickup group from your telephone.

    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    Meet-Me\r\n \r\n
    \r\n
    \r\n

    Answer any ringing line within your call pickup group from your telephone.

    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n Add Group\r\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 LocationCallPickupModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\nclass LocationConferenceBridgeListModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Conference Bridge List\r\n \r\n \r\n \r\n \r\n Conference Bridges List Settings\r\n \r\n \r\n
    \r\n

    Assign Conference Hosts/Moderators to Conference Bridges

    \r\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
    NamePhone NumberExtension
    Meet-Me CNF 124919420580363816381\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\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 LocationConferenceBridgeListModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\nclass LocationInstantConferenceModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleAddPhoneNumber = this.handleAddPhoneNumber.bind(this);\r\n this.state = { showModal: false, numberOfPhoneCount:1, numberOfPhoneLimit:20 };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n handleAddPhoneNumber(){\r\n if(this.state.numberOfPhoneCount < this.state.numberOfPhoneLimit)\r\n this.setState({ numberOfPhoneCount: this.state.numberOfPhoneCount + 1 });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n \r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n\r\n return (\r\n
    \r\n \r\n Instant Conference\r\n \r\n \r\n \r\n \r\n Instant Conference\r\n \r\n \r\n
    \r\n

    Combine this feature with Push to Talk and you can call a group for a hands-free intercom conference.

    \r\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
    NameExtension
    Instant Conference8000\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Enable maximum time for unanswered calls\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\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 LocationInstantConferenceModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\nclass LocationMusicOnHoldModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Music on Hold\r\n \r\n \r\n \r\n \r\n Music on Hold\r\n \r\n \r\n
    \r\n

    Play recordings to callers on hold.

    \r\n
    \r\n \r\n Turn on hold music\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n};\r\n\r\nexport default LocationMusicOnHoldModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\nclass LocationSeriesCompletionModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Series Completion\r\n \r\n \r\n \r\n \r\n Series Completion\r\n \r\n \r\n
    \r\n

    Series Completion provides key system functionality by hunting through a set of lines according to a pre-arranged order.

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Name
    Series 1\r\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 Save\r\n Cancel\r\n
    \r\n
    \r\n
    Series 2\r\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 Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n Add Series\r\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 LocationSeriesCompletionModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\nclass LocationManageLinesModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Manage Lines\r\n \r\n \r\n \r\n \r\n Manage Lines\r\n \r\n \r\n
    \r\n

    Edit the name, description and caller ID details for services and users.

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    First NameLast NamePhone NumberExtensionLine Description
    JaredMalan+1-20584729902990Jared Malan
    \r\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 Override Group/User Outbound Caller ID\r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\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 LocationManageLinesModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\n\r\n// \r\n\r\nclass LocationCustomContactDirectoryModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Custom Contact Directory\r\n \r\n \r\n \r\n \r\n Custom Contact Directory\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Directory Name
    Cool Name
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    Cool Name
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n Add Contact\r\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 LocationCustomContactDirectoryModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\n\r\nclass LocationManageUsersModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Manage Users\r\n \r\n \r\n \r\n \r\n Manage Users\r\n \r\n \r\n
    \r\n

    Edit existing user and service permissions, password recovery email and change portal login passwords. Add and Delete portal administrators.

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\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 \t\r\n \r\n \r\n
    User NameMain AccountAdminPassword Recovery Email
    JaredMalanYesYesj@momentum.com
    \r\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 Save\r\n Cancel\r\n
    \r\n
    \r\n
    JaredMalanYesYesj@momentum.com
    \r\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 Save\r\n Cancel\r\n
    \r\n
    \r\n
    JaredMalanYesYesj@momentum.com
    \r\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 Save\r\n Cancel\r\n
    \r\n
    \r\n
    JaredMalanYesYesj@momentum.com
    \r\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 Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n Add a User\r\n
    \r\n \t
    \r\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 LocationManageUsersModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\n\r\nclass LocationManageGroupCallingLineIDModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Manage Group Calling Line ID\r\n \r\n \r\n \r\n \r\n Manage Group Calling Line ID\r\n \r\n \r\n
    \r\n
    \r\n \r\n Use group name for Calling Line Identity \r\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

    WARNING: If you have extension-only seats, without associated telephone numbers and with Call Recording assigned, changing the Group Calling Line ID will cause Call Recording to stop. Please have your administrator contact the service provider and make the appropriate Call Recording configuration changes before changing the Group Calling Line 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\nexport default LocationManageGroupCallingLineIDModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DateTimePicker } from '@progress/kendo-dateinputs-react-wrapper';\r\n\r\nclass ScheduleModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.changeRecurs = this.changeRecurs.bind(this);\r\n this.getRecurMonths = this.getRecurMonths.bind(this);\r\n this.getRecurDays = this.getRecurDays.bind(this);\r\n this.getRecurWeekOfMonths = this.getRecurWeekOfMonths.bind(this);\r\n this.state = { showModal: false, recurValue:\"\" };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n changeRecurs(event){\r\n this.setState({recurValue: event.target.value})\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n }\r\n\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n {this.getTitle()}\r\n \r\n \r\n \r\n \r\n {this.getTitle()}\r\n \r\n \r\n

    {this.getInfo()}

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

    Schedule Name 1

    \r\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
    Event NameRecurring
    Snow DayNo
    \r\n
    \r\n Delete Event\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {this.getRecurrentControl()}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n

    Schedule Name 2

    \r\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
    Event NameRecurring
    Snow DayNo
    \r\n
    \r\n Delete Event\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {this.getRecurrentControl()}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n getInfo() {\r\n switch(this.props.type){\r\n case \"BUSINESS_HOURS\":\r\n return \"Set Business Hours Schedules to automatically trigger feature functionality and time-of-day routing for services.\";\r\n case \"HOLIDAY_SCHEDULE\":\r\n return \"Set Holiday Hours Schedules to automatically trigger feature functionality and day(s)-of-year routing for services.\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n getTitle(){\r\n switch(this.props.type){\r\n case \"BUSINESS_HOURS\":\r\n return \"Schedule - Business Hours\";\r\n case \"HOLIDAY_SCHEDULE\":\r\n return \"Schedule - Holiday\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n \r\n getRecurrentControl(){\r\n switch(this.state.recurValue){\r\n case \"Never\":\r\n return (\r\n
    \r\n {this.getTime()}\r\n
    \r\n );\r\n case \"Daily\":\r\n return (\r\n
    \r\n {this.getTime()}\r\n
    \r\n \r\n \r\n
    \r\n {this.getRecurEnd()}\r\n
    \r\n ); \r\n case \"Weekly\":\r\n return (\r\n
    \r\n {this.getTime()}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {this.getRecurEnd()}\r\n
    \r\n ); \r\n case \"Monthly by Day\":\r\n return (\r\n
    \r\n {this.getTime()}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {this.getRecurEnd()}\r\n
    \r\n ); \r\n case \"Monthly by Week\":\r\n return (\r\n
    \r\n {this.getTime()}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n {this.getRecurWeekOfMonths()}\r\n
    \r\n
    \r\n \r\n {this.getRecurDays()}\r\n
    \r\n {this.getRecurEnd()}\r\n
    \r\n ); \r\n case \"Yearly by Day\":\r\n return (\r\n
    \r\n {this.getTime()}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n {this.getRecurMonths()}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {this.getRecurEnd()}\r\n
    \r\n ); \r\n case \"Yearly by Week\":\r\n return (\r\n
    \r\n {this.getTime()}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n {this.getRecurMonths()}\r\n
    \r\n
    \r\n \r\n {this.getRecurWeekOfMonths()}\r\n
    \r\n
    \r\n \r\n {this.getRecurDays()}\r\n
    \r\n {this.getRecurEnd()}\r\n
    \r\n );\r\n }\r\n }\r\n\r\n getTime() {\r\n return (\r\n
    \r\n \r\n All Day Event\r\n
    \r\n
    \r\n \r\n {console.log(\"value changed to:\" + e.sender.value())}}\r\n />\r\n
    \r\n
    \r\n \r\n {console.log(\"value changed to:\" + e.sender.value())}}\r\n />\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n getRecurEnd(){\r\n return (\r\n
    \r\n \r\n \r\n
    );\r\n }\r\n getRecurMonths(){\r\n return (\r\n \r\n );\r\n }\r\n getRecurDays(){\r\n return (\r\n \r\n );\r\n }\r\n getRecurWeekOfMonths(){\r\n return (\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default ScheduleModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\nclass DepartmentModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Departments\r\n \r\n \r\n \r\n \r\n Department Settings\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.getDepartmentSettings()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.getDepartmentSettings()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.getDepartmentSettings()}\r\n \r\n \r\n \r\n \r\n \r\n
    Department Name
    Hyperloop 2\r\n \r\n
    Hyperloop 2\r\n \r\n
    Hyperloop 2\r\n \r\n
    \r\n
    \r\n Add Department\r\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 getDepartmentSettings(){\r\n return (\r\n \r\n
    \r\n { this.props.type === \"EDIT\"? Delete Department: null }\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n \r\n )\r\n }\r\n // newDepartmentName(){\r\n // if (this.props.type !== \"EDIT\") return null;\r\n // return ('Department Name');\r\n // }\r\n};\r\n\r\nexport default DepartmentModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\nclass EnterpriseDirectoryModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.handleShow = this.handleShow.bind(this);\r\n\t\tthis.handleClose = this.handleClose.bind(this);\r\n\t\tthis.state = { showModal:false };\r\n\t}\r\n\r\n\thandleClose() {\r\n\t\tthis.setState({ showModal: false });\r\n\t}\r\n\r\n\thandleShow() {\r\n\t\tthis.setState({ showModal: true });\r\n\t}\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Enterprise Directory\r\n \r\n \r\n \r\n \r\n Enterprise Directory\r\n \r\n \r\n \t

    The Enterprise Directory lists all the services and users within your entire organization. A summary or a detail of the Enterprise Directory can be generated, which can be easily printed.

    \r\n\t\t\tEnterprise Directory Summary\r\n\t\t\tEnterprise Directory Details\r\n\t\t\t
    \r\n
    \r\n \t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    NameService NumberExtensionDepartmentMobileEmail AddressGroup ID
    3100000028-01-Default (Collaborate - Audio)20572195141007HyperloopYestest@momentum.com1234
    3100000028-01-Default (Collaborate - Audio)20572195141007HyperloopYestest@momentum.com1234
    3100000028-01-Default (Collaborate - Audio)20572195141007HyperloopYestest@momentum.com1234
    3100000028-01-Default (Collaborate - Audio)20572195141007HyperloopYestest@momentum.com1234
    3100000028-01-Default (Collaborate - Audio)20572195141007HyperloopYestest@momentum.com1234
    3100000028-01-Default (Collaborate - Audio)20572195141007HyperloopYestest@momentum.com1234
    3100000028-01-Default (Collaborate - Audio)20572195141007HyperloopYestest@momentum.com1234
    \r\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 getDepartmentSettings(){\r\n return (\r\n \r\n
    \r\n { this.props.type === \"EDIT\"? Delete Department: null }\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n \r\n )\r\n }\r\n // newDepartmentName(){\r\n // if (this.props.type !== \"EDIT\") return null;\r\n // return ('Department Name');\r\n // }\r\n};\r\n\r\nexport default EnterpriseDirectoryModal;\r\n","import React from 'react';\r\n\r\nexport const formClass = (state) => state.saving ? 'form-group opaque' : 'form-group';\r\n\r\nexport const fqdnsOptions = (fqdns) => fqdns.map((fqdn, index) => fqdnsOption(fqdn, index));\r\n\r\nexport const fqdnsOption = (fqdn, index) => \r\n\r\nexport const savingOrConfirming = (state) => state.saving || state.statusMessage;\r\n\r\nexport const footerBtnClass = (state) => {\r\n\treturn savingOrConfirming(state) || state.loading ? 'opaque' : 'visible btns';\r\n}\r\n\r\nexport const hideSpinnerDelay = 500;\r\n\r\nexport const statusMsgDelay = 300;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as apiCalls from './../../../requests/api_calls';\r\nimport * as help from'./../locations_helpers';\r\nimport SaveStatus from './../../../components/save_status';\r\nimport { DataLoadingSpinner } from'./../../../components/spinners';\r\n\r\nclass GroupFqdnModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.fetchFqdns = this.fetchFqdns.bind(this);\r\n this.fqdnsOptions = this.fqdnsOptions.bind(this);\r\n this.fqdnsOption = this.fqdnsOption.bind(this);\r\n this.state = { loading: true, showModal: false, fqdns: []};\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n fetchFqdns = () => {\r\n let params = '?locationAccountNumber=' + this.props.locationAccNum;\r\n apiCalls.fetchData('admin/GetFqdns' + params).then((data) => {\r\n if (data !== null) {\r\n let fqdnList = [];\r\n fqdnList.push('')\r\n data.unshift(fqdnList).sort();\r\n this.setState({fqdns: data});\r\n } else if (data === null) {\r\n // Need to send user instruction on how to create FQDN options\r\n }\r\n });\r\n }\r\n\r\n fetchDeviceLocation = () => {\r\n let params = '?locationAccountNumber=' + this.props.locationAccNum;\r\n apiCalls.fetchData('admin/GetDeviceLocationProperties' + params).then((data) => {\r\n if (data !== null) {\r\n //need to pull down all properties because the save is otherwise overriding the save in the VLAN modal\r\n setTimeout(() => this.setState({\r\n loading: false,\r\n currentFqdn: data.FQDN, \r\n newFqdn: data.FQDN,\r\n EncryptedAudio: data.EncryptedAudio,\r\n TransportProtocol: data.TransportProtocol,\r\n useTcp: data.TransportProtocol === 'TCP', \r\n VlanId: data.VlanId || '',\r\n useVlanId: data.VlanId !== ('' || null)\r\n }), help.hideSpinnerDelay);\r\n }\r\n });\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false, statusMessage: null });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ loading: true, showModal: true });\r\n this.fetchFqdns();\r\n this.fetchDeviceLocation();\r\n }\r\n\r\n fqdnsOptions = () => this.state.fqdns.map((fqdn, index) => this.fqdnsOption(fqdn, index));\r\n\r\n fqdnsOption = (fqdn, index) => \r\n\r\n setNewFqdn = (e) => this.setState({newFqdn: e.target.value});\r\n\r\n saveStatus = () => {\r\n if (this.state.showErrorStatus) {\r\n return Error updating Group FQDN. Please try again.\r\n } else return null;\r\n }\r\n\r\n handleUpdateSuccess = () => {\r\n let currentFqdn = this.state.newFqdn;\r\n setTimeout(() => {this.setState({\r\n currentFqdn: currentFqdn,\r\n saving: false,\r\n statusMessage: 'Group FQDN settings were updated.',\r\n parentCallback: this.handleClose\r\n }), setTimeout(() => this.handleClose(), help.statusMsgDelay)}, help.hideSpinnerDelay);\r\n }\r\n\r\n handleUpdateError = () => {\r\n this.setState({showErrorStatus: true});\r\n setTimeout(() => this.setState({showErrorStatus: false}), 3000);\r\n }\r\n\r\n saveDeviceLocationInput = () => {\r\n this.setState({saving: true, showSaveStatus: true});\r\n let data = JSON.stringify({\r\n LocationAccountNumber: this.props.locationAccNum,\r\n FQDN: this.state.newFqdn,\r\n EncryptedAudio: this.state.EncryptedAudio,\r\n TransportProtocol: this.state.TransportProtocol,\r\n VlanId: this.state.VlanId\r\n });\r\n let apiPath = 'admin/UpdateDeviceLocationProperties';\r\n apiCalls.send(apiPath, 'PATCH', data).then(resp => {\r\n resp.ok ? this.handleUpdateSuccess() : this.handleUpdateError();\r\n }).catch(message => {\r\n console.log('caught an exception updating device location FQDN');\r\n console.log(message)\r\n });\r\n }\r\n\r\n savingOrConfirming = () => this.state.saving || this.state.statusMessage;\r\n\r\n getModalBody = () => {\r\n if (this.state.loading) {\r\n return ;\r\n } else {\r\n return (\r\n
    \r\n

    Setup a Fully Qualified Domain Name (FQDN) as default FQDN for the location.

    \r\n
    \r\n \r\n {this.saveStatus()}\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n footerBtnClass = () => {\r\n return this.savingOrConfirming() || this.state.loading ? 'opaque' : 'visible btns';\r\n }\r\n\r\n modalClass = () => this.state.loading ? 'loading' : 'group-fqdn';\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Group FQDN Setup\r\n \r\n \r\n \r\n \r\n Group FQDN Setup\r\n \r\n \r\n {this.getModalBody()}\r\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 GroupFqdnModal;","import React, { Component } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\nimport * as apiCalls from './../../../requests/api_calls';\nimport * as help from'./../locations_helpers';\nimport SaveStatus from './../../../components/save_status';\nimport { DataLoadingSpinner } from'./../../../components/spinners';\n\nclass GroupVLANModal extends Component {\n\n constructor(props) {\n super(props);\n this.handleShow = this.handleShow.bind(this);\n this.handleClose = this.handleClose.bind(this);\n this.setUseVlanId = this.setUseVlanId.bind(this);\n this.setVlanId = this.setVlanId.bind(this);\n this.setUseTcp = this.setUseTcp.bind(this);\n this.setAudioIsEncrypted = this.setAudioIsEncrypted.bind(this);\n this.saveGroupVlanSettings = this.saveGroupVlanSettings.bind(this);\n this.fetchDeviceLocation = this.fetchDeviceLocation.bind(this);\n\n this.handleClose = this.handleClose.bind(this);\n this.state = {\n showModal: false,\n useVlanId: false,\n saving: false,\n showSaveStatus: false,\n showValidationError: false,\n loading: true\n };\n }\n\n handleClose() {\n this.setState({ showModal: false, statusMessage: null });\n }\n\n handleShow() {\n this.setState({ loading: true, showModal: true });\n setTimeout(() => this.fetchDeviceLocation(), help.hideSpinnerDelay);\n }\n\n componentDidMount() {\n \n }\n\n setUseVlanId = (e) => this.setState({useVlanId: e.target.checked});\n\n setVlanId = (e) => this.setState({VlanId: e.target.value}, this.validateForm(e));\n\n setUseTcp = (e) => {\n let protocol = e.target.checked ? 'TCP' : 'UDP';\n this.setState({useTcp: e.target.checked, TransportProtocol: protocol, EncryptedAudio: false});\n }\n\n setAudioIsEncrypted = (e) => this.setState({EncryptedAudio: e.target.checked});\n\n fetchDeviceLocation = () => {\n let params = '?locationAccountNumber=' + this.props.locationAccNum;\n apiCalls.fetchData('admin/GetDeviceLocationProperties' + params).then((data) => {\n if (data !== null) {\n this.setState({\n EncryptedAudio: data.EncryptedAudio,\n TransportProtocol: data.TransportProtocol,\n useTcp: data.TransportProtocol === 'TCP',\n VlanId: data.VlanId || '',\n useVlanId: data.VlanId !== ('' || null),\n FQDN: data.FQDN,\n loading: false\n });\n } else if (data === null) {\n this.setState({fqdns: [], loading: false});\n }\n }).catch(message =>{\n console.log('caught an exception fetching device locations');\n console.log(message);\n this.setState({loading: false});\n });\n }\n\n validForm = () => {\n if (this.state.useVlanId && this.state.VlanId === '') {\n this.setState({showValidationError: true});\n return false\n } else {\n this.setState({showValidationError: false});\n return true\n }\n }\n\n validateForm = (e) => {\n if (this.state.useVlanId && e.target.value === '') {\n this.setState({showValidationError: true});\n } else {\n this.setState({showValidationError: false});\n }\n }\n\n saveGroupVlanSettings = () => {\n if (this.validForm()) {\n this.setState({saving: true, showSaveStatus: true});\n let data = {\n TransportProtocol: this.state.TransportProtocol,\n EncryptedAudio: this.state.EncryptedAudio,\n VlanId: this.state.useVlanId ? this.state.VlanId : null,\n LocationAccountNumber: this.props.locationAccNum,\n FQDN: this.state.FQDN\n };\n let apiPath = 'admin/UpdateDeviceLocationProperties';\n apiCalls.send(apiPath, 'PATCH', JSON.stringify(data)).then(resp => {\n if(resp.ok) {\n setTimeout(() => {this.setState({\n saving: false,\n statusMessage: 'Group VLAN settings were updated.',\n parentCallback: this.handleClose\n }), setTimeout(() => this.handleClose(), help.statusMsgDelay)}, help.hideSpinnerDelay);\n } else {\n this.setState({...this.state,\n saving: false,\n error: true,\n statusMessage: this.notSavedErrorMsg(resp),\n parentCallback: this.handleClose\n })\n }\n }).catch(message => {\n this.setState({saving: false});\n console.log('caught exception saving Group VLAN settings.');\n console.log(message);\n });\n }\n }\n\n vlanIdDivSettings = (attr) => {\n var settings = {};\n if (this.state.useVlanId) {\n settings = {class: 'hidden-group collapse in', 'aria-expanded': 'true'};\n } else {\n settings = {class: 'hidden-group collapse', 'aria-expanded': 'false'};\n }\n return settings[attr]\n }\n\n notSavedErrorMsg = (resp) => 'Device not saved. Error: ' + resp.message;\n\n getModalBody = () => {\n if (this.state.loading) {\n return ;\n } else {\n return (\n
    \n

    Set Group VLAN ID

    \n

    Setup a Virtual Location Area Network (VLAN) as the default. The default can be overwritten on an individual device level if needed.

    \n
    \n \n Use VLAN ID?\n \n \n \n VLAN ID is required.\n \n \n
    \n
    \n

    Set Group IP Transport Protocol for Devices

    \n

    \n Set the IP transport protocol for all devices within the group. If a device(s) requires a different setting \n than what is configured for the group, you may elect to overwrite the group IP transport protocol settings \n during device provisioning.\n

    \n

    \n TCP is not the typical transport protocol for voice traffic and should only be used when there are 20+ \n Busy Lamp Fields (BLF) configured for an individual device. Contact Momentum Telecom Technical Support \n for more detail.\n

    \n
    \n \n Use TCP? (UDP is default)\n \n Note: if you change the current IP transport protocol settings for this group, you must reprovision \n all devices within the group before the new setting will be pushed to existing device configuration\n files.\n \n
    \n\n

    Set Group Encrypted Audio & Signaling for Devices

    \n

    \n Set device Audio and Signaling Encryption for all devices within the group. If a device(s) requires a different \n setting than what is configured for the group, you may elect to overwrite the group Audio and Signaling Encryption\n settings during device provisioning. \n

    \n
    \n \n Enable Encrypted Audio & Signaling?\n
    \n \n )\n }\n }\n\n render() {\n return (\n
    \n \n Group VLAN Setup\n \n \n \n \n Group VLAN Settings\n \n \n {this.getModalBody()}\n \n \n
    \n
    \n \n \n
    \n
    \n
    VLAN ID is required.
    \n
    \n \n
    \n
    \n
    \n )\n }\n};\n\nexport default GroupVLANModal;","import React from 'react';\r\nimport LocationEditModal from './modals/locationEditModal';\r\nimport LocationAccountCodesModal from './modals/locationAccountCodesModal';\r\nimport LocationAdvancedHuntingModal from './modals/locationAdvancedHuntingModal';\r\nimport LocationAnnouncementRepositoryModal from './modals/locationAnnouncementRepositoryModal';\r\nimport LocationAutoAttendantModal from './modals/locationAutoAttendantModal';\r\nimport LocationAutoAttendantTreeModal from './modals/locationAutoAttendantTreeModal';\r\nimport LocationCallParkModal from './modals/locationCallParkModal';\r\nimport LocationCallPickupModal from './modals/locationCallPickupModal';\r\nimport LocationConferenceBridgeListModal from './modals/locationConferenceBridgeListModal';\r\nimport LocationInstantConferenceModal from './modals/locationInstantConferenceModal';\r\nimport LocationMusicOnHoldModal from './modals/locationMusicOnHoldModal';\r\nimport LocationSeriesCompletionModal from './modals/locationSeriesCompletionModal';\r\nimport LocationManageLinesModal from './modals/locationManageLinesModal';\r\nimport LocationCustomContactDirectoryModal from './modals/locationCustomContactDirectoryModal';\r\nimport LocationManageUsersModal from './modals/locationManageUsersModal';\r\nimport LocationManageGroupCallingLineIDModal from './modals/locationManageGroupCallingLineIDModal';\r\nimport ScheduleModal from './../modals/scheduleModal';\r\nimport DepartmentModal from './../modals/departmentModal';\r\nimport EnterpriseDirectoryModal from './../modals/enterpriseDirectoryModal';\r\nimport GroupFqdnModal from './modals/groupFqdnModal';\r\nimport GroupVlanModal from './modals/groupVlanModal';\r\n\r\nconst locations = () => (\r\n\r\n
    \r\n
    \r\n
    \r\n

    Location Feature Settings

    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n)\r\n\r\nexport default locations;","import React from 'react';\r\nimport { fetchData } from './../../requests/api_calls';\r\nimport * as globalHelper from './../../scripts/helper';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\n\r\nexport const macAddress = 'macAddress';\r\n\r\nexport const newMac = 'newMAC';\r\n\r\nexport const validMacAddress = (mac) => {\r\n let regex1 = /^([A-F, A-F, a-f, 0-9]{2}[:]{1}){5}[A-F, A-F, a-f, 0-9]{2}$/;\r\n let regex2 = /^([A-F, A-F, a-f, 0-9]{2}[-]{1}){5}[A-F, A-F, a-f, 0-9]{2}$/;\r\n let regex3 = /^([A-F, A-F, a-f, 0-9]{3}[.]){3}[A-F, A-F, a-f, 0-9]{3}$/;\r\n let regex4 = /^[A-F, a-f, 0-9]{12}$/;\r\n return regex1.test(mac) || regex2.test(mac) || regex3.test(mac) || regex4.test(mac);\r\n}\r\n\r\nexport const saveBtnsClass = (state) => state.showSaveStatus ? 'btns opaque' : 'btns';\r\n\r\nexport const saveAndAddNewClass = (props) => addingDevice(props) ? 'btn' : 'hidden';\r\n\r\nexport const formClass = (state) => state.showSaveStatus ? 'form-group hidden' : 'form-group';\r\n\r\nexport const addingDevice = (props) => !props.mac;\r\n\r\nexport const editingDevice = (props) => !addingDevice(props);\r\n\r\nexport const showInvalidMessage = (state, fieldName) => {\r\n return (fieldName === macAddress && state.showInvalidMacMsg) ||\r\n state.showRequiredFieldMsgs && state.invalidFields.indexOf(fieldName) > -1;\r\n}\r\n\r\nexport const invalidMessageClass = (state, fieldName) => {\r\n return showInvalidMessage(state, fieldName) ? 'text-danger' : 'hidden';\r\n}\r\n\r\nexport const showInvalidSwapMacMsg = (state) => {\r\n return state.showInvalidMacMsg && state.invalidFields.indexOf(newMac) < 0;\r\n}\r\n\r\nexport const invalidSwapMacMsgClass = (state) => {\r\n return showInvalidSwapMacMsg(state) ? 'text-danger' : 'hidden';\r\n}\r\n\r\nexport const validMacClass = (state, fieldName) => {\r\n return !state.showInvalidMacMsg && state.showValidMacMsg ? 'validation-success' : 'hidden';\r\n}\r\n\r\nexport const fetchFqdns = async () => fetchData('admin/GetFqdns').then(data => data);\r\n\r\nexport const fetchModels = async () => fetchData('admin/GetDeviceModels').then(data => data);\r\n\r\nexport const fetchDeviceTns = async (locationAccNum) => {\r\n let params = '?locationAccountNumber=' + locationAccNum;\r\n return fetchData('admin/GetDeviceTns' + params).then(data => data);\r\n}\r\n\r\nexport const fetchDeviceSelectOptions = async () => {\r\n let requests = [fetchFqdns(), fetchModels()];\r\n return await Promise.all(requests).then(dataArray => dataArray)\r\n}\r\nexport const fetchDeviceConfig = async (mac) => {\r\n return fetchData('admin/GetDeviceConfiguration?mac=' + mac).then(data => data);\r\n}\r\n\r\nexport const fetchDeviceAndTns = async (mac) => {\r\n let deviceProps = await fetchData('admin/GetDevice?mac=' + mac).then(data => data);\r\n let locationAccNum = deviceProps.LocationAccountNumber;\r\n let requests = [fetchDeviceLocationProps(locationAccNum), fetchDeviceTns(locationAccNum)];\r\n let [locationProps, deviceTns] = await Promise.all(requests).then(dataArray => dataArray)\r\n let sort = [{ field: \"ServiceNumber\", dir: \"asc\" }, {field: \"Extension\", dir: \"asc\"}]\r\n deviceTns = orderBy(deviceTns, sort);\r\n //Created these to pull the Group Setting defaults into the equation for the configureDeviceModal\r\n deviceProps.LocationFQDN = locationProps && locationProps.FQDN ? locationProps.FQDN : null;\r\n deviceProps.LocationVLAN = locationProps && locationProps.VlanId ? locationProps.VlanId : null;\r\n deviceProps.LocationTransportProtocol = locationProps && locationProps.TransportProtocol;\r\n deviceProps.LocationEncryptedAudio = locationProps && locationProps.EncryptedAudio;\r\n deviceProps.TransactionNumbers = deviceTns;\r\n return deviceProps;\r\n}\r\n\r\nexport const fetchDeviceLocationProps = async (locationAccNum) => {\r\n let params = '?locationAccountNumber=' + locationAccNum;\r\n return fetchData('admin/GetDeviceLocationProperties' + params).then(data => data);\r\n}\r\n\r\nexport const fetchModelConfigs = async () => {\r\n return fetchData('admin/GetDeviceModelsConfiguration').then(data => data);\r\n}\r\n\r\nexport const fetchDeviceConfigs = async (props) => {\r\n let requests = [\r\n fetchDeviceConfig(props.mac),\r\n fetchDeviceAndTns(props.mac),\r\n fetchModelConfigs()\r\n ];\r\n return await Promise.all(requests).then(dataArray => dataArray)\r\n}\r\n\r\nexport const configSetting = (config, settingName) => (config && config[settingName]) ? true : false;\r\n\r\nexport const fqdnOptions = (fqdns, defaultFQDN, selectedFQDN) => {\r\n if (fqdns) {\r\n fqdns.sort();\r\n return fqdns.map((fqdn, index) => );\r\n } else return [];\r\n}\r\n\r\nexport const modelOptions = (models) => {\r\n if (models) {\r\n return models.map((model, index) => {\r\n let deviceType = model.DevicyType ? model.DevicyType : model.DeviceType; //typo fix\r\n return \r\n });\r\n } else return [];\r\n}\r\n\r\nexport const deviceConfigureValue = (state, field) => state.configProps[field] || '';\r\n\r\nexport const configProps = (config, device, initialFormState) => {\r\n if (config) {\r\n return {...initialFormState.configProps, ...config, ...device}\r\n } else if (device) {\r\n return {...initialFormState.configProps, ...device}\r\n } else return null;\r\n}\r\n\r\nexport const deviceIsAssigned = (deviceProps) => deviceProps.AssignedTo !== null;\r\n\r\n\r\nexport const onlyUnique = (val, index, self) => {\r\n return self.indexOf(val) === index;\r\n};\r\n\r\nexport const tnProps = (state, tn) => {\r\n let matches = state.transactionNums.filter(item => {\r\n return tn == (item.ServiceNumber || item.Extension)\r\n });\r\n return matches[0];\r\n}\r\n\r\nexport const showRemove = () => globalHelper.devicePerms().Delete_ExistingDevice === 1;\r\n\r\nexport const showFqdn = () => globalHelper.devicePerms().Setup_FQDN === 1;\r\n\r\nexport const showAddDevice = () => globalHelper.devicePerms().Setup_NewDevice === 1;\r\n\r\nexport const showSwap = () => globalHelper.devicePerms().Swap_Device === 1;","import React from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport { Tooltip } from '@progress/kendo-popups-react-wrapper';\nimport '@progress/kendo-ui';\n\nconst popUpMessage = () => {\n return ReactDOMServer.renderToStaticMarkup(\n
    \n
    Please use one of the following formats:
    \n
    A1:B2:C3:D4:E5:F6
    \n
    A1-B2-C3-D4-E5-F6
    \n
    A1B.2C3.D4E.5F6
    \n
    A1B2C3D4E5F6
    \n
    Only alphanumeric characters A - F are permitted.
    \n
    \n )\n}\n\nconst macAdressFormats = (props) => {\n\n return (\n \n \n View acceptable formats\n \n \n )\n\n}\n\nexport default macAdressFormats;","import React, { Component } from 'react';\r\nimport { ComboBox } from '@progress/kendo-react-dropdowns';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\n\r\nconst spanOptions = (props) => {\r\n if (props && props.settings.Lk) {\r\n return props.settings.spanOptions.map((portNum, i) => )\r\n } else {\r\n return \r\n }\r\n}\r\n\r\nconst disableIfTnMissing = (props) => {\r\n let tn = props.settings.PhoneNumber || props.settings.Extension;\r\n if (tn == '' || tn == undefined || tn == null) return true;\r\n}\r\n\r\nconst disableBlfForFirstPort = (props, propName) => {\r\n if (props.portNum == 1 && propName === 'Blf') return true;\r\n}\r\n\r\nconst firstPortIsSca = (props) => {\r\n let matches = props.settings.portsConfigured.filter(port => port.PortNumber == 1);\r\n if (matches.length) return matches[0].Sca;\r\n}\r\n\r\nconst disableBlfIfFirstLineisSca = (props, propName) => {\r\n return props.portNum > 1 && propName === 'Blf' && firstPortIsSca(props);\r\n}\r\n\r\nconst isDisabled = (props, propName = null) => {\r\n if (props) {\r\n return (\r\n props.settings.disabled || disableIfTnMissing(props) ||\r\n disableBlfForFirstPort(props, propName) || disableBlfIfFirstLineisSca(props, propName) ||\r\n disableIfNotAvailableForModel(props, propName) || isScaAndNotExecutiveLine(props, propName)\r\n )\r\n }\r\n}\r\n\r\nconst disableIfNotAvailableForModel = (props, propName) => {\r\n let modelConfig = props.settings.selectedModelConfigs;\r\n if (propName === 'Mwi' && modelConfig && !modelConfig.IsMWIAvailable) return true;\r\n}\r\n\r\nconst isScaAndNotExecutiveLine = (props, propName) => {\r\n // Executive Extension Seat or Enterprise Select Executive\r\n if (propName == 'Sca') {\r\n let ticker = props.settings.lineTypeTicker;\r\n return ticker != 'MREPUPGEAA' && ticker != 'MREPUPGRAA';\r\n }\r\n}\r\n\r\nclass TnComboBox extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n data: props.tnNumbers,\r\n filter: { logic: \"and\", filters: [] },\r\n value: props.selectedTn,\r\n }\r\n }\r\n \r\n componentWillReceiveProps = (props) => {\r\n let selectedValue = this.state.value;\r\n if (props.selectedTn.TN != this.state.value.TN)\r\n selectedValue = props.selectedTn;\r\n this.setState({value: selectedValue, data: props.tnNumbers});\r\n }\r\n\r\n filterData = (filter) => {\r\n return filterBy(this.state.data, filter);\r\n }\r\n\r\n handleFilterChange = async (event) => {\r\n await this.setState({\r\n filter: event.filter\r\n });\r\n }\r\n\r\n handleChange = async (event) => {\r\n let newTn = event.target.value ? event.target.value : {TN: '', TnAndLine: '-Select-'};\r\n await this.setState({ value: newTn })\r\n this.props.onChangeCombo(event, this.props.comboPortNum, 'tn');\r\n }\r\n\r\n content = () => {\r\n return ( \r\n \r\n )\r\n }\r\n\r\n render() {\r\n return this.content();\r\n }\r\n}\r\n\r\nconst portSettings = (props) => {\r\n return (\r\n \r\n {props.portNum}\r\n \r\n {\r\n props.settings.setStateCallback(e, props.portNum, 'tn');\r\n }}\r\n />\r\n \r\n\r\n \r\n \r\n \r\n\r\n {portSettingCheckBoxes(props)}\r\n\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst tnOptions = (props) => {\r\n if (props.settings) {\r\n let returnVals = props.settings.availableTns.slice().map(tn => {\r\n return {\r\n TnAndLine: (tn.ServiceNumber || tn.Extension) + ' (' + tn.LineName + ')',\r\n TN: (tn.ServiceNumber || tn.Extension)\r\n }\r\n });\r\n returnVals.unshift({TnAndLine: '-Select-', TN: '' });\r\n return returnVals;\r\n } else return [];\r\n}\r\n\r\nconst portSettingCheckBoxes = (props) => {\r\n return ['Blf', 'Sca', 'Mwi', 'Lk', 'Cc'].map((propName, index) => {\r\n let isDisabledVal = isDisabled(props, propName);\r\n let tooltipText = \"\";\r\n if (propName === 'Sca' && isDisabledVal)\r\n tooltipText = \"This user is not eligible for Shared Call Appearance\";\r\n else if (propName === \"Blf\" && isDisabledVal)\r\n tooltipText = \"This user/port is not eligible for Busy Lamp\";\r\n else \"\"\r\n return (\r\n \r\n \r\n \r\n )\r\n })\r\n}\r\n\r\nexport default portSettings;","import React from 'react';\nimport * as helper from '../../../scripts/helper';\n\nconst UDP = 'UDP';\nconst TCP = 'TCP';\nconst TLS = 'TLS';\n\nconst switchClass = (props, propName) => {\n let x = props.parentState.selectedModelConfigs &&\n props.parentState.selectedModelConfigs[propName] ? 'form-group' : 'hidden';\n return x;\n}\n\nconst VlanClass = (props, propName) => {\n let x = props.parentState.selectedModelConfigs &&\n props.parentState.selectedModelConfigs[propName] ? 'form-group' : 'hidden';\n // if (x !== 'hidden' && props.parentState.configProps.TransportProtocol !== TCP)\n // x = 'form-group semi-transparent';\n \n return x;\n}\n\nconst encryptedAudioSwitchClass = (props) => {\n let modelConfigs = props.parentState.selectedModelConfigs;\n let hideSwitch;\n if (modelConfigs) {\n hideSwitch = !modelConfigs.TlsFqdn || modelConfigs.TlsFqdn.trim() === '';\n }\n return hideSwitch ? 'hidden' : 'form-group';\n}\n\nconst protocolSwitchClass = (props) => {\n let config = props.parentState.configProps;\n if (config.EncryptedAudio) {\n return 'form-group semi-transparent';\n } else {\n let modelConfigs = props.parentState.selectedModelConfigs;\n let hideSwitch;\n if (modelConfigs) {\n hideSwitch = !modelConfigs.TlsFqdn || modelConfigs.TlsFqdn.trim() == '';\n }\n return hideSwitch ? 'hidden' : 'form-group';\n }\n}\n\nconst validVlanId = (id) => {\n return (id !== \"\" && id !== undefined) && (id >= 2 && id <= 1001) || (id >= 1006 && id <= 4094) || (id === 0) || (id === 'None');\n}\n\nconst vlanIdValidationClass = (props) => {\n return (props.parentState.configProps.EnableVlanIdText === false) ? 'hidden' : 'text-danger';\n}\n\nconst setEnableVlan = (props) => {\n let invalidVlanId = !validVlanId(props.parentState.configProps.VlanId);\n let configProps = { ...props.parentState.configProps, invalidVlanId: invalidVlanId };\n\n let enable = !configProps.enableVlan;\n configProps.enableVlan = enable;\n if (enable) {\n if (configProps.EnableVlanIdText === false)\n configProps.VlanId = 'None'\n else\n configProps.VlanId = 0;\n } else {\n configProps.VlanId = configProps.CurrentVlanId;\n // if (props.CurrentVlanId === 'None')\n // configProps.VlanId = configProps.TextVlanId; //0\n // else\n // configProps.VlanId = configProps.CurrentVlanId;\n }\n\n //configProps.EnableVlanIdText = props.VlanId && props.VlanId > 0 ? true : false;\n props.switchHandler({ enableVlan: enable, configProps: configProps });\n}\n\n//const isUsingTcp = (props) => props.parentState.configProps.TransportProtocol === TCP;\n\nconst updateVlanId = (e, props) => {\n let vlanId = e.target.value;\n if (validVlanId(vlanId)) {\n var configProps = { ...props.parentState.configProps, VlanId: e.target.value, TextVlanId: e.target.value, invalidVlanId: false };\n } else {\n var configProps = { ...props.parentState.configProps, VlanId: null, TextVlanId: null, invalidVlanId: true };\n }\n props.switchHandler({ configProps: configProps });\n}\n\nconst updateVlanField = (e, props, isNone) => {\n var finalConfigProps = {};\n let configProps = props.parentState.configProps;\n if (isNone)\n {\n configProps.EnableVlanIdText = false;\n finalConfigProps = { ...configProps, invalidVlanId: false };\n } else {\n configProps.EnableVlanIdText = true;\n let isValidVlan = validVlanId(configProps.VlanId);\n finalConfigProps = { ...configProps, invalidVlanId: !isValidVlan };\n }\n\n props.switchHandler({ configProps: finalConfigProps });\n}\n\nconst switchProtocol = (e, props, tcpOrUdp) => {\n let protocol = e.target.checked ? tcpOrUdp : 'UDP';\n let config = props.parentState.configProps;\n config.TransportProtocol = protocol;\n props.switchHandler({ configProps: config});\n}\n\nconst setProtocol = (e, props) => {\n let config = props.parentState.configProps;\n config.TransportProtocol = e.target.value;\n props.switchHandler({\n configProps: {\n ...props.parentState.configProps,\n TransportProtocol: e.target.value\n }\n });\n}\n\nconst setSideCarOnlyBlfPlacement = (props) => {\n props.switchHandler({\n configProps: {\n ...props.parentState.configProps,\n UseLineKeysForBLFList: !props.parentState.configProps.UseLineKeysForBLFList\n }\n });\n}\n\nconst setVideoIsEnabled = (props) => {\n props.switchHandler({\n configProps: {\n ...props.parentState.configProps,\n IsVideoEnabled: !props.parentState.configProps.IsVideoEnabled\n }\n });\n}\n\nconst setEncryptedAudio = (props) => {\n let config = props.parentState.configProps;\n let isEnabled = !config.EncryptedAudio;\n let newConfigProps = { ...config, EncryptedAudio: isEnabled };\n if (isEnabled) {\n newConfigProps.TransportProtocol = TLS;\n } \n props.switchHandler({ configProps: newConfigProps });\n}\n\nconst groupIpTransportProtocolSettings = (config) => {\n if (config.LocationTransportProtocol) {\n return (\n \n Current group IP transport protocol is set to {config.LocationTransportProtocol}\n \n )\n } else return null\n}\n\nconst protocolRadioButton = (props, protocol) => {\n let isSelected = props.parentState.configProps.TransportProtocol === protocol;\n let perms = JSON.parse(sessionStorage.DevicePerms);//sessionStorage.DevicePerms\n return (\n \n setProtocol(e, props)}\n disabled={perms.Audio_Signaling && perms.Audio_Signaling === 1 ? '' : 'disabled'}\n />\n \n \n )\n}\n\nconst configSwitches = (props) => {\n let config = props.parentState.configProps;\n let perms = JSON.parse(sessionStorage.DevicePerms);//sessionStorage.DevicePerms\n return (\n
    \n
    \n \n Use TCP for IP transport protocol settings\n {groupIpTransportProtocolSettings(config)}\n
    \n
    \n \n Modify current device VLAN set to {config.CurrentVlanId}\n (Current group VLAN ID is set to {config.LocationVLAN ? config.LocationVLAN : 'none'})\n
    \n
    \n \n \n must be between 2 and 1001 or between 1006 and 4094.\n \n
    \n \n \n updateVlanId(e, props)}\n />\n
    \n
    \n
    \n
    \n \n Use Phone > Sidecar for BLF Placement\n (default is Sidecar Only)\n
    \n\n
    \n \n Enable Encrypted Audio & Signaling\n {/* {helper.disableAudioSignaling() ? ( - change permission not enabled) : ''} */}\n \n Transport protocol will be set to TLS if audio and video is encrypted\n \n
    \n \n {protocolRadioButton(props, UDP)}
    \n {protocolRadioButton(props, TCP)}
    \n {protocolRadioButton(props, TLS)}  \n defaults to TLS when audio is encrypted\n
    \n
    \n
    \n\n
    \n \n Enable Video\n
    \n\n
    \n )\n}\n\nexport default configSwitches;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport SaveStatus from './../../../components/save_status';\r\nimport InfoPop from './../../../components/infopop';\r\nimport { DataLoadingSpinner } from './../../../components/spinners';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport * as help from './../devices_helpers';\r\nimport MacAdressFormats from './../components/macFormatsClickPop';\r\nimport PortSettings from './../components/port_settings';\r\nimport ConfigSwitches from './../components/config_switches';\r\nimport _ from 'lodash';\r\n\r\nexport const macAddress = 'macAddress';\r\nexport const vlanId = 0;\r\nexport const fqdn = 'none';\r\nconst deviceType = 'DeviceType';\r\nconst defaultSpanValue = 2;\r\nconst spanOptions = [2, 3, 4];\r\nconst initialFormState = {\r\n configProps: {\r\n Ports: [],\r\n invalidFields: [],\r\n newDeviceModel: '',\r\n NewMAC: '',\r\n IsFirstPortMWI: false\r\n },\r\n selectedModelConfigs: {},\r\n invalidFields: ['newMAC', deviceType],\r\n invalidMacMsg: 'This field is required.',\r\n showInvalidMacMsg: false,\r\n enableSwapDevice: false,\r\n showRequiredFieldMsgs: false,\r\n showRebootSuccess: false,\r\n showRebootFailure: false,\r\n showSaveStatus: false,\r\n error: false,\r\n saving: false\r\n}\r\n\r\nclass ConfigureDevicesModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.saveDevice = this.saveDevice.bind(this);\r\n this.setPortSetting = this.setPortSetting.bind(this);\r\n this.setFqdn = this.setFqdn.bind(this);\r\n this.handleDeviceSelection = this.handleDeviceSelection.bind(this);\r\n this.handleMacChange = this.handleMacChange.bind(this);\r\n this.setDeviceConfiguration = this.setDeviceConfiguration.bind(this);\r\n //this.showSaveWaitMessage = this.showSaveWaitMessage.bind(this);\r\n this.NewMacChange = this.NewMacChange.bind(this);\r\n this.state = initialFormState;\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false, error: false, statusMessage: null });\r\n }\r\n\r\n async handleShow() {\r\n await this.setState({ ...initialFormState, showModal: true, loading: true });\r\n await this.setOptions();\r\n this.setDeviceConfiguration();\r\n }\r\n\r\n componentDidMount() {\r\n\r\n }\r\n\r\n setOptions = async () => {\r\n let [fqdns, models] = await help.fetchDeviceSelectOptions();\r\n this.setState({ deviceModels: models, fqdns: fqdns });\r\n }\r\n\r\n setDeviceConfiguration = async () => {\r\n let [config, device, modelConfigs] = await help.fetchDeviceConfigs(this.props);\r\n let configProps = help.configProps(config, device, initialFormState);\r\n if (!configProps.DeviceModel) configProps.DeviceModel = device.DeviceType;\r\n configProps.newDeviceModel = configProps.DeviceModel; // default to current selection\r\n\r\n //this is to setup first time configuration values versus saved configuration values. config will be null on first time load\r\n //the 'Location' prefixed properties on configProps represent the 'defaults' that appear in the labels so they are still necessary.\r\n let selectedModelConfigs = this.matchedDeviceConfig(configProps.DeviceModel, modelConfigs);\r\n let vlanId = 'None';\r\n\r\n configProps.EnableVlanIdText = false;\r\n if (config) {\r\n vlanId = config.VlanId === 0 ? 'None' : config.VlanId;\r\n configProps.CurrentVlanId = vlanId;\r\n configProps.TextVlanId = vlanId === 'None' ? 0 : vlanId;\r\n configProps.TransportProtocol = config.TransportProtocol;\r\n configProps.EncryptedAudio = config.EncryptedAudio;\r\n configProps.Fqdn = config.Fqdn;\r\n\r\n let revisedPorts = configProps.Ports.map((port) => {\r\n return this.reviewAndOverrideDisabled(configProps, port, selectedModelConfigs);\r\n });\r\n configProps.Ports = revisedPorts;\r\n }\r\n else {\r\n if (selectedModelConfigs.IsVlanAvailable) {\r\n vlanId = configProps.LocationVLAN && ((configProps.LocationVLAN <= 1001 && configProps.LocationVLAN >= 2) || (configProps.LocationVLAN <= 4094 && configProps.LocationVLAN >= 1006)) ? configProps.LocationVLAN : vlanId\r\n }\r\n configProps.VlanId = vlanId;\r\n configProps.CurrentVlanId = vlanId;\r\n configProps.TextVlanId = vlanId === 'None' ? 0 : vlanId;\r\n if (vlanId !== 'None') {\r\n configProps.enableVlan = true;\r\n configProps.EnableVlanIdText = true;\r\n }\r\n configProps.TransportProtocol = configProps.LocationTransportProtocol;\r\n\r\n configProps.EncryptedAudio = configProps.LocationEncryptedAudio;\r\n configProps.Fqdn = configProps.LocationFQDN;\r\n configProps.IsFirstPortMWI = true;\r\n }\r\n\r\n let startingState = ({\r\n ...this.state,\r\n configProps: configProps,\r\n selectedModelConfigs: selectedModelConfigs,\r\n modelConfigs: modelConfigs,\r\n transactionNums: configProps.TransactionNumbers,\r\n unassignedDevices: this.props.unassignedDevices,\r\n loading: false\r\n //enableVlan: configProps.TransportProtocol === 'TCP' ? true : false\r\n });\r\n // make copy of starting state to reset back to on error\r\n let state = { ...startingState, resetState: startingState };\r\n this.setState(state);\r\n }\r\n\r\n reviewAndOverrideDisabled = (props, port, selectedModelConfigs) => {\r\n let availableTns = this.availableTns(props, port.PortNumber, selectedModelConfigs);\r\n let matchedNumber = availableTns.filter(ph => ph.ServiceNumber === port.PhoneNumber || ph.Extension === port.PhoneNumber)\r\n if (!matchedNumber || matchedNumber.length === 0)\r\n return this.getBlankPort(port.PortNumber, false);\r\n else\r\n return port;\r\n }\r\n\r\n\r\n matchedDeviceConfig = (model, modelConfigs = this.state.modelConfigs) => {\r\n let deviceMatches = modelConfigs && modelConfigs.length > 0 ? modelConfigs.filter(modelConfig => {\r\n return model == modelConfig.DeviceModelKey;\r\n }) : null; // using filter and getting first item b/c Array.find() does not work in IE\r\n return deviceMatches ? deviceMatches[0] : null;\r\n }\r\n\r\n formClass = () => this.state.loading ? 'form-group hidden' : 'form-group';\r\n\r\n handleSwapDevice = () => {\r\n this.setState({ ...this.state, enableSwapDevice: !this.state.enableSwapDevice });\r\n }\r\n\r\n handleEnableTransportProtocol = () => {\r\n this.setState({ ...this.state, enableTransportProtocol: !this.state.enableTransportProtocol });\r\n }\r\n\r\n handleRebootSuccess = () => {\r\n this.setState({ showRebootSuccess: true });\r\n let pageThis = this;\r\n setTimeout(function () {\r\n pageThis.setState({ showRebootSuccess: false });\r\n }, 3000);\r\n }\r\n handleRebootFailure = () => {\r\n this.setState({ showRebootFailure: true });\r\n let pageThis = this;\r\n setTimeout(function () {\r\n pageThis.setState({ showRebootFailure: false });\r\n }, 3000);\r\n }\r\n\r\n handleSaveSuccess = () => {\r\n this.setState({ showSuccess: true, saving: false });\r\n let pageThis = this;\r\n setTimeout(function () {\r\n pageThis.setState({ ...initialFormState, showModal: false, loading: true });\r\n pageThis.setDeviceConfiguration();\r\n pageThis.props.loadDevices(true); // reload parent ( list of devices )\r\n }, 3000);\r\n //\r\n }\r\n\r\n showSuccessModal = (msg) => {\r\n this.setState({})\r\n }\r\n\r\n closeSaveMessage = () => {\r\n this.setState({ showSaveStatus: false, error: false, statusMessage: '' });\r\n }\r\n\r\n\r\n showErrorAndResetModal = (msg, returnToScreen = false) => {\r\n let newState = {};\r\n if (msg) {\r\n newState = this.state;\r\n newState = { ...newState, saving: false, showSaveStatus: true, showModal: true, error: true, statusMessage: msg }\r\n } else {\r\n newState = { ...this.state.resetState, resetState: { ...this.state.resetState } }\r\n newState = { ...newState, showModal: true, error: false, statusMessage: null }\r\n }\r\n this.setState(newState);\r\n }\r\n\r\n switchHandler = (newState) => this.setState(newState);\r\n\r\n numberOfPorts = () => this.state.selectedModelConfigs ? this.state.selectedModelConfigs.NumberOfPorts : 0;\r\n\r\n noUnassignedDevices = () => this.state.unassignedDevices && this.state.unassignedDevices.length === 0;\r\n\r\n devicesAreAvailable = () => this.state.unassignedDevices && this.state.unassignedDevices.length > 0;\r\n\r\n showUnassignedDevicesLink = () => this.devicesAreAvailable() && this.state.showNewMacField;\r\n\r\n isSwapModelDisabled = () => {\r\n let device = this.state.configProps;\r\n return device.NewMAC !== null && device.MAC !== device.NewMAC;\r\n }\r\n\r\n unassignedMacOptions = () => {\r\n if (this.props.unassignedDevices) {\r\n let optionalMacs = this.props.unassignedDevices.filter(device => device.MacAddress !== this.props.mac);\r\n return optionalMacs.map((device, index) => {\r\n return \r\n });\r\n } else return [];\r\n }\r\n\r\n rebootDevice = () => {\r\n //let postData = {\r\n var mac = this.state.configProps.MAC;\r\n //};\r\n let apiPath = 'admin/RebootDevice';\r\n apiCalls.send(apiPath, 'POST', JSON.stringify(mac)).then(resp => {\r\n if (resp.ok) {\r\n this.handleRebootSuccess();\r\n } else {\r\n this.handleRebootFailure();\r\n }\r\n }).catch(msg => {\r\n this.handleRebootFailure();\r\n this.showErrorAndResetModal(msg);\r\n console.log('caught an exception')\r\n });\r\n }\r\n\r\n saveDevice = () => {\r\n if (this.validForm()) {\r\n this.setState({ ...this.state, saving: true, showSaveStatus: true });\r\n let apiPath = 'admin/UpdateDeviceConfiguration';\r\n let postData = this.devicePropsToSend();\r\n //let groupFQDN = this.state.configProps.LocationFQDN;\r\n\r\n apiCalls.send(apiPath, 'PATCH', JSON.stringify(postData)).then(resp => {\r\n if (resp.ok) {\r\n this.handleSaveSuccess();\r\n } else {\r\n let msg = this.notSavedErrorMsg(resp);\r\n this.showErrorAndResetModal(msg);\r\n }\r\n }).catch(msg => {\r\n this.showErrorAndResetModal(msg);\r\n console.log('caught an exception')\r\n });\r\n } else this.setInvalidFormMessage();\r\n }\r\n\r\n devicePropsToSend = () => {\r\n let config = this.state.configProps;\r\n let outgoingPayload = {\r\n DeviceModel: this.deviceModelSelection(),\r\n EncryptedAudio: config.EncryptedAudio,\r\n Fqdn: config.Fqdn === '' ? null : config.Fqdn,\r\n IsVideoEnabled: config.IsVideoEnabled || null,\r\n LocationAccountNumber: config.LocationAccountNumber,\r\n MAC: config.MAC,\r\n NewMAC: config.NewMAC || config.MAC,\r\n Ports: this.configuredPorts(config.Ports),\r\n TransportProtocol: config.TransportProtocol,\r\n TlsSrtp: config.TlsSrtp || null,\r\n UseLineKeysForBLFList: config.UseLineKeysForBLFList || null,\r\n VlanId: config.VlanId,\r\n IsSwapOperation: this.state.enableSwapDevice\r\n };\r\n return outgoingPayload;\r\n }\r\n\r\n deviceModelSelection = () => {\r\n let config = this.state.configProps;\r\n if (config.newDeviceModel !== (undefined || null || '')) {\r\n return config.newDeviceModel\r\n } else {\r\n return config.DeviceModel\r\n }\r\n }\r\n\r\n configuredPorts = (ports = this.state.configProps.Ports) => {\r\n return ports.filter(port => port.UserId && port.UserId !== '');\r\n }\r\n\r\n validForm = () => {\r\n if (this.configuredPorts().length && !this.invalidVlanId()) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n invalidVlanId = () => this.state.configProps.invalidVlanId;\r\n\r\n setInvalidFormMessage = () => {\r\n if (!this.configuredPorts().length) {\r\n var msg = 'At least one port must have a phone number. ';\r\n msg += 'Unassign the device to deactivate all ports.';\r\n this.setState({ invalidFormMsg: msg });\r\n } else if (this.invalidVlanId()) {\r\n this.setState({ invalidFormMsg: 'The provided VLAN ID is invalid. Please update and try again.' })\r\n } else {\r\n this.setState({ invalidFormMsg: 'One or more fields is invalid. Please update and try again.' })\r\n }\r\n }\r\n\r\n saveButton = () => {\r\n if (!this.state.loading && !this.state.saving && !this.state.error && !this.state.showSuccess) {\r\n let invalidFormClass = this.validForm() ? 'hidden' : 'text-danger text-center'\r\n return (\r\n
    \r\n
    \r\n Reboot request sent\r\n
    \r\n
    \r\n Reboot request failed!\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    {this.state.invalidFormMsg}
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n swapDeviceClass = () => {\r\n let showSwap = this.state.configProps.Assigned && help.showSwap();\r\n return showSwap ? 'swap visible' : 'hidden';\r\n }\r\n\r\n FqdnSelection = () => {\r\n const { configProps: { DeviceModel: model } = {} } = this.state;\r\n const device = this.matchedDeviceConfig(model);\r\n const isFQDNAvailable = device ? device.IsFQDNAvailable : false;\r\n if (!isFQDNAvailable)\r\n return null;\r\n else if (help.showFqdn()) {\r\n return (\r\n
    \r\n \r\n \r\n (Current group FQDN default is set to {this.state.configProps.LocationFQDN ? this.state.configProps.LocationFQDN : fqdn})\r\n
    \r\n )\r\n } else {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n }\r\n }\r\n\r\n newDeviceSelector = () => {\r\n return (\r\n
    \r\n this.validateSwapDeviceModel(e, deviceType)}\r\n disabled={this.isSwapModelDisabled()}\r\n >\r\n \r\n {help.modelOptions(this.state.deviceModels)}\r\n \r\n
    \r\n )\r\n }\r\n\r\n lineSettingsTable = () => {\r\n if (this.numberOfPorts() > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.portSettingRows()}\r\n
    LineTelephone NumberLabelBLF\r\n \r\n SCA\r\n \r\n MWI\r\n \r\n LK\r\n \r\n CC\r\n \r\n Span\r\n \r\n
    \r\n )\r\n } else return null;\r\n }\r\n\r\n setPortSetting = (e, portNum = null, propName = null) => {\r\n if (!portNum && !propName) {\r\n portNum = e.target.dataset.portnum;\r\n propName = e.target.dataset.propname;\r\n }\r\n let newPorts = this.findOrInitializePortsSettings(portNum);\r\n let portIndex = newPorts.map(port => port.PortNumber).indexOf(parseInt(portNum));\r\n let port = newPorts[portIndex];\r\n if (propName === 'tn') {\r\n let newTn = e.target.value && e.target.value.TN ? e.target.value.TN : { TN: '', TnAndLine: '-Select-' };\r\n this.setPhoneOrExt(newTn, port);\r\n } else if (propName === 'DisplayName') {\r\n port[propName] = e.target.value;\r\n } else if (propName === 'Lk' || propName === 'Span') {\r\n let spanValue = defaultSpanValue;\r\n if (propName === 'Lk') {\r\n port.Lk = e.target.checked;\r\n spanValue = e.target.checked ? defaultSpanValue : null;\r\n }\r\n else\r\n spanValue = e.target.value;\r\n\r\n port.Span = spanValue;\r\n //need to clear out the spanned values\r\n if (spanValue) {\r\n for (var i = 1; i < spanValue; i++) {\r\n let spannedPort = newPorts.filter(resp => resp.PortNumber === port.PortNumber + i)[0];\r\n let idx = _.indexOf(newPorts, spannedPort);\r\n spannedPort = this.getBlankPort(port.PortNumber + i, false);\r\n newPorts[idx] = spannedPort;\r\n }\r\n }\r\n } else {\r\n port[propName] = e.target.checked;\r\n }\r\n let configProps = { ...this.state.configProps, Ports: newPorts };\r\n configProps.IsFirstPortMWI = false;\r\n this.setState({ ...this.state, configProps: configProps });\r\n }\r\n\r\n setPhoneOrExt = (newTn, port) => {\r\n let tnProps = help.tnProps(this.state, newTn);\r\n if (tnProps) {\r\n port.UserId = tnProps.SipAuthenticationId;\r\n port.LineTypeTicker = tnProps.LineTypeTicker;\r\n if (tnProps.ServiceNumber) {\r\n port.PhoneNumber = newTn;\r\n port.Extension = null;\r\n } else {\r\n port.PhoneNumber = null;\r\n port.Extension = newTn;\r\n }\r\n } else { // reset port\r\n let portClone = { ...port };\r\n for (var key in port) delete port[key];\r\n port.PortNumber = portClone.PortNumber;\r\n }\r\n }\r\n\r\n portIds = () => {\r\n let numPorts = this.numberOfPorts()\r\n return Array.apply(null, { length: numPorts }).map(function (value, index) {\r\n return index + 1\r\n });\r\n }\r\n\r\n findOrInitializePortsSettings = () => {\r\n let props = this.state.configProps;\r\n let configuredPorts = [...props.Ports];\r\n let portSettings = this.portIds().map(portNum => {\r\n var portMatches = configuredPorts.filter(port => portNum === port.PortNumber);\r\n if (portMatches.length) {\r\n return portMatches[0];\r\n } else {\r\n return new Object({ PortNumber: portNum })\r\n }\r\n });\r\n return portSettings;\r\n }\r\n\r\n isExecutive = (e) => {\r\n // Executive Extension Seat or Enterprise Select Executive\r\n let tn = e.target.value;\r\n let ticker = help.tnProps(this.state, tn).LineTypeTicker;\r\n return ticker === 'MREPUPGEAA' || ticker === 'MREPUPGRAA';\r\n }\r\n\r\n availableTns = (props, portId, selectedModelConfigs = null) => {\r\n let tns = this.filterTnsByTicker(props, selectedModelConfigs);\r\n let usedTNs = props.Ports.filter(ph => ph.UserId !== '' && ph.PortNumber !== portId).map((ph) => {\r\n return ph.PhoneNumber || ph.Extension\r\n });\r\n if (props && props.Ports) {\r\n return tns.filter(tn => usedTNs.indexOf(tn.ServiceNumber) < 0 && usedTNs.indexOf(tn.Extension) < 0);\r\n // return props.Ports.reduce((tns, port) => {\r\n // return tns.filter(tn => port.PortNumber === portId && (port.PhoneNumber === tn.ServiceNumber || port.PhoneNumber === tn.Extension))\r\n // //return tns.filter(tn => tn.ServiceNumber !== port.UserId || (port.PortNumber === portId && tn.ServiceNumber === port.UserId ));\r\n // }, tns);\r\n }\r\n else return tns;\r\n }\r\n\r\n filterTnsByTicker = (props, selectedModelConfigs = null) => {\r\n let tns = props.TransactionNumbers.slice();\r\n if (this.isFaxModel(selectedModelConfigs)) {\r\n return tns.filter(tn => tn.LineTypeTicker == 'MTRTFAXTFA')\r\n } else {\r\n return tns.filter(tn => tn.LineTypeTicker !== 'MTRTFAXTFA')\r\n }\r\n }\r\n\r\n portSettingRows = () => {\r\n return this.portIds().map(id => {\r\n return ;\r\n });\r\n }\r\n\r\n isFaxModel = (selectedModelConfigs = null) => {\r\n let modelName = selectedModelConfigs ? selectedModelConfigs.DeviceModelKey : this.state.selectedModelConfigs.DeviceModelKey;\r\n return (new RegExp('fax')).test(modelName.toLowerCase())\r\n }\r\n\r\n portSettings = (portId) => {\r\n let props = this.state.configProps;\r\n let selectedTn = { TN: '', TnAndLine: '-Select-' };\r\n let matchingPorts = props.Ports.filter(port => port.PortNumber == portId);\r\n let availableTns = this.availableTns(props, portId)\r\n if (matchingPorts && matchingPorts.length > 0) {\r\n let selectedTnOption = availableTns.filter(tn => (tn.ServiceNumber && tn.ServiceNumber !== '' && tn.ServiceNumber === matchingPorts[0].PhoneNumber) ||\r\n (tn.Extension && tn.Extension !== '' && tn.Extension === matchingPorts[0].PhoneNumber) ||\r\n (tn.Extension && matchingPorts[0].Extension && tn.Extension === matchingPorts[0].Extension));\r\n if (selectedTnOption && selectedTnOption.length > 0)\r\n selectedTn = {\r\n TN: (selectedTnOption[0].ServiceNumber || selectedTnOption[0].Extension),\r\n TnAndLine: (selectedTnOption[0].ServiceNumber || selectedTnOption[0].Extension) + ' (' + selectedTnOption[0].LineName + ')'\r\n };\r\n }\r\n\r\n let settings = {\r\n availableTns: availableTns,\r\n selectedTn: selectedTn,\r\n setStateCallback: this.setPortSetting,\r\n portsConfigured: props.Ports.filter(port => port.UserId !== ''),\r\n spanOptions: spanOptions,\r\n selectedModelConfigs: this.state.selectedModelConfigs\r\n }\r\n\r\n if (this.lineIsSpanned(portId)) {\r\n let newSettings = settings;\r\n newSettings.selectedTn = { TN: '', TnAndLine: '-Select-' };\r\n return { ...settings, disabled: true };\r\n } else if (matchingPorts.length) {\r\n let port = matchingPorts[0];\r\n if (portId === 1 && props.IsFirstPortMWI === true)\r\n port.Mwi = true;\r\n\r\n return { ...settings, ...port, lineTypeTicker: this.lineTicker(port) }\r\n } else {\r\n if (portId === 1 && props.IsFirstPortMWI === true) {\r\n let port = this.getBlankPort(portId, true);\r\n return { ...settings, ...port };\r\n } else\r\n return { ...settings };\r\n }\r\n }\r\n\r\n getBlankPort = (portId, MWI) => {\r\n return {\r\n Blf: false,\r\n Cc: false,\r\n DisplayName: \"\",\r\n Extension: null,\r\n IsDelete: false,\r\n Lk: false,\r\n Mwi: MWI,\r\n PhoneNumber: null,\r\n PortNumber: portId,\r\n Sca: false,\r\n Span: null,\r\n UserId: null\r\n };\r\n }\r\n\r\n lineTicker = (port) => {\r\n let tn = port.PhoneNumber || port.Extension;\r\n let tnProps = help.tnProps(this.state, tn)\r\n if (tnProps) return tnProps.LineTypeTicker;\r\n }\r\n\r\n lineIsSpanned = (portId) => {\r\n let lineKeysSpanning = this.configuredPorts().filter(portSettings => portSettings.Lk);\r\n let spannedPorts = lineKeysSpanning.map(portSettings => {\r\n return Array.apply(null, { length: portSettings.Span - 1 }).map((val, i) => {\r\n return i + 1 + portSettings.PortNumber;\r\n })\r\n }); // converts line span value to array of ports that are spanned\r\n let disabledPorts = [].concat.apply([], spannedPorts);\r\n return disabledPorts.indexOf(portId) >= 0;\r\n }\r\n\r\n handleMacChange = (e) => {\r\n let newMac = e.target.value;\r\n let newConfig = { ...this.state.configProps, NewMAC: newMac };\r\n // user cannot change device model if MAC changes so it must be reset if different\r\n if (newMac !== this.state.configProps.MAC) {\r\n let modelMatches = this.state.unassignedDevices.filter(dev => dev.MacAddress === newMac);\r\n newConfig.newDeviceModel = modelMatches[0].MakeModel;\r\n } else {\r\n newConfig.newDeviceModel = newConfig.DeviceModel; // reset to device for current MAC\r\n }\r\n this.setState({ configProps: newConfig });\r\n }\r\n\r\n validateSwapDeviceModel = (e, fieldName) => {\r\n let deviceSelection = e.target.value;\r\n if (deviceSelection === '') {\r\n // reset model selection\r\n this.setState({ configProps: { ...this.state.configProps, newDeviceModel: deviceSelection } })\r\n } else {\r\n // handle device selection validation\r\n this.handleDeviceSelection(deviceSelection);\r\n }\r\n }\r\n\r\n handleDeviceSelection = (deviceSelection, modelConfigs = this.state.modelConfigs) => {\r\n let selectedModelConfigs = this.matchedDeviceConfig(deviceSelection, modelConfigs);\r\n let newState = { ...this.state, selectedModelConfigs: selectedModelConfigs };\r\n newState.configProps = { ...this.state.configProps, newDeviceModel: deviceSelection };\r\n this.setState(newState);\r\n }\r\n\r\n setFqdn = (e) => {\r\n this.setState({ configProps: { ...this.state.configProps, Fqdn: e.target.value } });\r\n }\r\n NewMacChange = (e) => {\r\n this.setState({ configProps: { ...this.state.configProps, NewMAC: e.target.value } });\r\n }\r\n notSavedErrorMsg = (resp) => {\r\n if (resp.ok) {\r\n return null\r\n } else {\r\n return resp.message;\r\n }\r\n }\r\n\r\n modalBody = () => {\r\n let state = this.state;\r\n if (state.loading) {\r\n return ;\r\n } else if (state.showSuccess) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n } else if (!state.loading && !state.saving && !state.error) {\r\n return (\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n Swap Device\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n ✓  \r\n \r\n {/* \r\n \r\n {this.unassignedMacOptions()}\r\n */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {this.newDeviceSelector()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {state.invalidMacMsg}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n {this.FqdnSelection()}\r\n {this.lineSettingsTable()}\r\n\r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n Configure\r\n \r\n\r\n \r\n \r\n Configure Device\r\n \r\n \r\n {this.modalBody()}\r\n \r\n \r\n
    \r\n {this.saveButton()}\r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n\r\n};\r\n\r\nexport default ConfigureDevicesModal;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { DataLoadingSpinner } from'./../../../components/spinners';\r\nimport { historyBtn } from './../../../scripts/icons';\r\nimport moment from 'moment';\r\nimport * as apiCalls from'./../../../requests/api_calls';\r\nimport { onlyUnique } from './../devices_helpers';\r\n\r\nclass AssignedToLabel extends GridCell {\r\n render() {\r\n return {this.props.dataItem.FirstName} {this.props.dataItem.LastName}\r\n }\r\n}\r\n\r\nclass RequestSentLabel extends GridCell {\r\n render() {\r\n return {moment.utc(this.props.dataItem.RequestSent).format('M-D-YYYY, hh:mm A')} \r\n }\r\n}\r\n\r\nclass DeviceHistoryModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showModal: false,\r\n sort: [{ field: \"RequestSent\", dir: \"desc\" }],\r\n };\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.sortChange = this.sortChange.bind(this);\r\n this.sortHistory = this.sortHistory.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n fetchDevicesHistory = (apiPath, showAll = false) => {\r\n this.setState({ loading: true });\r\n let params = '?mac=' + this.props.mac;\r\n apiCalls.fetchData('admin/GetDeviceHistoryByMac' + params).then((data) => {\r\n if (data !== null) {\r\n this.setState({\r\n loading: false,\r\n devicesHistory: this.sortHistory(this.state.sort, data)\r\n });\r\n } else if (data === null) {\r\n this.setState({ devicesHistory: [], loading: false });\r\n };\r\n }).catch((err) => {\r\n console.error(err);\r\n })\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n this.fetchDevicesHistory();\r\n }\r\n\r\n sortChange(event) {\r\n this.setState({\r\n services: this.sortHistory(event.sort),\r\n sort: event.sort\r\n });\r\n }\r\n\r\n sortHistory(sort, history = null) {\r\n if (history == null) history = this.state.devicesHistory.slice();\r\n // added onlyUnique into devices_helper.js (bottom)x\r\n let uniqHistory = [...history.filter(onlyUnique)]\r\n return orderBy(uniqHistory, sort);\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else if (this.state.devicesHistory && this.state.devicesHistory.length) {\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 } else return

    There is no device history for this device.

    \r\n }\r\n\r\n render() {\r\n\r\n return (\r\n \r\n \r\n {historyBtn}\r\n \r\n \r\n \r\n Device History\r\n \r\n \r\n
    \r\n {this.gridContent()}\r\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 DeviceHistoryModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as apiCalls from './../../../requests/api_calls';\r\nimport { deviceIsAssigned } from './../devices_helpers';\r\nimport SaveStatus from './../../../components/save_status';\r\n\r\nclass DeviceResetModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false }, this.props.loadDevices());\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n isAssigned = () => deviceIsAssigned(this.props.device);\r\n\r\n unassignOrRemoveLabel = () => this.isAssigned() ? 'Unassign' : 'Remove';\r\n\r\n showStatus = () => this.state.saving || this.state.statusMessage;\r\n\r\n successMsg = () => {\r\n let action = this.isAssigned() ? 'unassigned.' : 'removed.';\r\n return this.props.device.MacAddress + ' was successfully ' + action;\r\n }\r\n\r\n errorMsg = () => {\r\n let action = this.isAssigned() ? ' unassign ' : ' remove ';\r\n return 'Failed to' + action + this.props.device.MacAddress + '. Please try again.';\r\n }\r\n\r\n unassign = (option) => {\r\n let params = '?mac=' + this.props.device.MacAddress + '&delete=' + option.delete;\r\n this.setState({saving: true, showSaveStatus: true});\r\n apiCalls.send('admin/UnassignDeleteDevice' + params, 'GET').then(resp => {\r\n if(resp.ok) {\r\n this.setState({\r\n saving: false,\r\n statusMessage: this.successMsg()\r\n });\r\n } else {\r\n this.setState({\r\n saving: false,\r\n error: true,\r\n statusMessage: this.errorMsg(),\r\n })\r\n }\r\n }).catch(message => console.log(message));\r\n }\r\n\r\n modalBody = () => {\r\n let buttonClass = this.showStatus() ? 'opaque' : 'no-btn';\r\n let paragraphClass = this.showStatus() ? 'opaque' : 'visible';\r\n if (this.isAssigned()) {\r\n return (\r\n \r\n

    \r\n By clicking ‘Unassign’ you acknowledge the current device will have its configuration reset. \r\n setting a device is service impacting if it is in use.\r\n

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

    \r\n \r\n
    \r\n )\r\n } else return (\r\n \r\n

    \r\n By clicking ‘Remove’ you acknowledge the current device will be removed from your inventory.\r\n

    \r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n unassignOrRemoveButton = () => {\r\n return (\r\n \r\n {this.unassignOrRemoveLabel()}\r\n \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.unassignOrRemoveButton()}\r\n \r\n \r\n \r\n
    \r\n {this.unassignOrRemoveLabel()} this device?\r\n
    \r\n
    \r\n
    \r\n {this.modalBody()}\r\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 DeviceResetModal;\r\n","import React, { Component } from 'react';\r\nimport * as config from './../../../requests/config';\r\nimport * as apiCalls from './../../../requests/api_calls';\r\nimport { isRpxSession } from './../../../scripts/session';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as help from'./../devices_helpers';\r\nimport SaveStatus from './../../../components/save_status';\r\nimport MacAdressFormats from './../components/macFormatsClickPop';\r\nimport { DataLoadingSpinner } from'./../../../components/spinners';\r\n\r\nexport const macAddress = 'macAddress';\r\nexport const location = 'location';\r\nexport const deviceType = 'deviceType';\r\nexport const acqCode = 'acqCode';\r\nexport const notes = 'notes';\r\n\r\nconst invalidFields = (props) => {\r\n if (help.addingDevice(props)) {\r\n let fields = [macAddress, deviceType, location];\r\n if (isRpxSession()) fields.push(acqCode);\r\n return fields;\r\n } else return [];\r\n}\r\n\r\nconst initialFormState = (props) => {\r\n return {\r\n deviceProps: {},\r\n invalidFields: invalidFields(props),\r\n showRequiredFieldMsgs: false,\r\n showInvalidMacMsg: false,\r\n showValidMacMsg: false,\r\n showSaveStatus: false,\r\n error: false,\r\n saving: false,\r\n loadingLocations: true,\r\n statusMessage: null,\r\n initialValue: '',\r\n invalidMacMsg: 'This field is required.'\r\n }\r\n}\r\n\r\nclass DeviceSettingsModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.macAddressFieldValue = this.macAddressFieldValue.bind(this);\r\n this.showOriginalValues = this.showOriginalValues.bind(this);\r\n this.modalBody = this.modalBody.bind(this);\r\n this.state = initialFormState(props);\r\n }\r\n\r\n componentDidMount() {\r\n \r\n }\r\n\r\n fetchDeviceInfo = () => {\r\n let apiPath = 'admin/GetDevice?mac=' + this.props.mac;\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n if (data !== null) {\r\n let defaultVal = '' // should not use null or undefined for select values\r\n let deviceProps = {\r\n macAddress: data.MAC,\r\n assigned: data.Assigned,\r\n location: data.LocationAccountNumber || defaultVal,\r\n acqCode: data.AcquisitionCode || defaultVal,\r\n deviceType: data.DeviceType || defaultVal,\r\n notes: data.Notes || defaultVal\r\n }\r\n this.setState({\r\n deviceProps: deviceProps, \r\n originalDeviceProps: {...deviceProps} // save original device values for resetting\r\n });\r\n } else if (data === null) {\r\n // need error handler (not sure how data could be empty)\r\n };\r\n });\r\n }\r\n\r\n handleClose() {\r\n let state = {\r\n ...initialFormState(this.props),\r\n showModal: false, \r\n deviceModalOptions: this.state.deviceModalOptions, \r\n locationOptions: this.state.locationOptions\r\n };\r\n this.setState(state, this.props.loadDevices(false));\r\n }\r\n\r\n handleShow() {\r\n if (!this.state.deviceModalOptions) this.fetchDeviceModels();\r\n if (!this.state.locationOptions) this.fetchLocations() \r\n else this.setState({loadingLocations: false});\r\n \r\n if (!help.addingDevice(this.props)) {\r\n (async () => await this.fetchDeviceInfo())();\r\n }\r\n if (!this.state.deviceProps.assigned) {\r\n let state = {\r\n showModal: true,\r\n deviceModalOptions: this.state.deviceModalOptions,\r\n locationOptions: this.state.locationOptions\r\n };\r\n this.setState(state);\r\n }\r\n }\r\n\r\n showOriginalValues = () => {\r\n const currentDeviceProps = {...this.state.deviceProps};\r\n currentDeviceProps.macAddress = '';\r\n currentDeviceProps.notes = '';\r\n\r\n let originalDeviceProps = this.state.originalDeviceProps;\r\n let newState = {\r\n ...initialFormState(this.props),\r\n deviceProps: currentDeviceProps,\r\n deviceModalOptions: this.state.deviceModalOptions,\r\n locationOptions: this.state.locationOptions\r\n };\r\n if (originalDeviceProps) {\r\n newState.deviceProps = newState.originalDeviceProps = originalDeviceProps;\r\n }\r\n newState.loadingLocations = false;\r\n newState.loading = false;\r\n let checkFields = newState.invalidFields.filter(res => res === \"macAddress\");\r\n newState.invalidFields = checkFields;\r\n this.setState(newState);\r\n }\r\n\r\n clearFormAndCloseModal = (showAll) => {\r\n this.props.loadDevices(showAll);\r\n this.setState({...initialFormState(this.props), showModal: false});\r\n }\r\n\r\n showFailedToSaveForm = () => {\r\n this.setState({\r\n showRequiredFieldMsgs: false,\r\n showSaveStatus: false,\r\n error: false,\r\n saving: false,\r\n statusMessage: null\r\n });\r\n }\r\n\r\n validForm = () => {\r\n if (!this.state.showRequiredFieldMsgs) this.setState({showRequiredFieldMsgs: true});\r\n let formIsEmpty = !Object.keys(this.state.deviceProps).length;\r\n return !formIsEmpty && !this.state.invalidFields.length;\r\n }\r\n\r\n postDeviceInput = (successAction, p) => {\r\n if (this.validForm()) {\r\n this.setState({saving: true, showSaveStatus: true});\r\n let data = JSON.stringify(this.deviceInputData());\r\n let apiPath = help.addingDevice(this.props) ? 'admin/AddDevice' : 'admin/UpdateDevice';\r\n apiCalls.post(apiPath, 'POST', data).then(resp => {\r\n if(resp.ok) {\r\n if (p)\r\n successAction(p);\r\n else\r\n successAction();\r\n } else {\r\n this.setState({\r\n saving: false,\r\n error: true,\r\n statusMessage: this.notSavedErrorMsg(resp),\r\n parentCallback: this.showOriginalValues\r\n })\r\n }\r\n }).catch(message => {\r\n console.log(message)\r\n this.setState({\r\n saving: false,\r\n error: true,\r\n statusMessage: 'Device not saved. Please try again.',\r\n parentCallback: this.showOriginalValues\r\n })\r\n });\r\n }\r\n }\r\n\r\n deviceInputData = () => {\r\n let data = {\r\n MAC: this.state.deviceProps[macAddress],\r\n DeviceType: this.state.deviceProps[deviceType],\r\n LocationAccountNumber: this.state.deviceProps[location],\r\n AcquisitionCode: this.state.deviceProps[acqCode] || 'Owned',\r\n Notes: this.state.deviceProps[notes]\r\n };\r\n if (help.editingDevice(this.props)) {\r\n // the original MAC does not change if editing a device\r\n data.MAC = this.props.mac;\r\n data.newMAC = this.state.deviceProps[macAddress];\r\n }\r\n return data;\r\n }\r\n\r\n notSavedErrorMsg = (resp) => {\r\n if (resp.message.indexOf(\"already exists\") >= 0) {\r\n return \"Device with mac \"+ this.state.deviceProps[macAddress] + \" already exists\"\r\n } else {\r\n return 'Device not saved. Error: ' + resp.message;\r\n }\r\n }\r\n\r\n saveDevice = () => this.postDeviceInput(this.clearFormAndCloseModal, true);\r\n\r\n saveDeviceAndAddNew = () => this.postDeviceInput(this.showOriginalValues);\r\n\r\n setDeviceNotes = (e) => {\r\n let deviceProps = {...this.state.deviceProps}\r\n deviceProps[notes] = e.target.value || ''; // API rejects null for Notes\r\n this.setState({deviceProps: deviceProps});\r\n }\r\n\r\n fetchDeviceModels = () => {\r\n apiCalls.fetchData('admin/GetDeviceModels').then((data) => {\r\n if (data !== null) {\r\n let deviceModelOptions = data.map((deviceModel, index) => {\r\n return ( this.deviceModelOption(deviceModel, index) );\r\n });\r\n this.setState({deviceModelOptions: deviceModelOptions, loading: false });\r\n } else if (data === null) {\r\n this.setState({deviceModelOptions: [], loading: false, resultsMsg: 'device models not found'});\r\n };\r\n });\r\n }\r\n\r\n deviceModelOption = (deviceModel, index) => {\r\n // typo fix\r\n let deviceType = deviceModel.DevicyType ? deviceModel.DevicyType : deviceModel.DeviceType;\r\n return \r\n }\r\n\r\n fetchLocations = () => {\r\n apiCalls.fetchData('admin/Locations').then((data) => {\r\n if (data !== null) {\r\n let locationOptions = data.map((loc, i) => this.locationOption(loc, i) );\r\n this.setState({locationOptions: locationOptions, loadingLocations: false});\r\n } else {\r\n console.log('locations not returned')\r\n this.setState({loading: false});\r\n }\r\n });\r\n }\r\n\r\n locationOption = (location, index) => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n acqCodeClass = () => isRpxSession() ? 'form-group' : 'hidden';\r\n\r\n acqCodeOptions = () => {\r\n // mapping since adjacent JSX elements must be wrapped but can only select around options\r\n return ['Rent', 'Purchase', 'Owned'].map((text, i) => );\r\n }\r\n\r\n selectField = (fieldType, options) => {\r\n return (\r\n \r\n \r\n This field is required.\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n deviceNotesField = () => {\r\n return(\r\n
    \r\n \r\n \r\n
    \r\n )\r\n }\r\n\r\n validateSelectField = (e, fieldName) => {\r\n let value = e.target.value;\r\n let newState = {...this.state};\r\n let newInvalidFields = this.state.invalidFields.slice();\r\n newState.deviceProps[fieldName] = value;\r\n if (value === '') {\r\n newInvalidFields.push(fieldName);\r\n newState.invalidFields = Array.from(new Set(newInvalidFields));\r\n } else {\r\n newState.invalidFields = newInvalidFields.filter(field => field !== fieldName);\r\n }\r\n this.setState(newState);\r\n }\r\n\r\n validateMacField = (e) => {\r\n let value = e.target.value;\r\n let newState = {...this.state};\r\n let newInvalidFields = this.state.invalidFields.slice();\r\n newState.deviceProps[macAddress] = value;\r\n if(!help.validMacAddress(value)) {\r\n newState.invalidMacMsg = 'The format is invalid. ';\r\n newState.showInvalidMacMsg = true;\r\n newInvalidFields.push(macAddress);\r\n newState.invalidFields = newInvalidFields;\r\n } else {\r\n newState.invalidFields = newInvalidFields.filter(field => field !== macAddress);\r\n newState.showInvalidMacMsg = false;\r\n newState.showValidMacMsg = true;\r\n }\r\n this.setState(newState);\r\n }\r\n\r\n macAddressFieldValue = () => {\r\n if (this.state.deviceProps && this.state.deviceProps[macAddress]) {\r\n return this.state.deviceProps[macAddress]\r\n } else return ''\r\n }\r\n\r\n selectFieldValue = (fieldType) => {\r\n if (this.state.deviceProps && this.state.deviceProps[fieldType]) {\r\n return this.state.deviceProps[fieldType]\r\n } else return ''\r\n }\r\n\r\n noteFieldValue = (fieldType) => {\r\n if (this.state.deviceProps && this.state.deviceProps[notes]) {\r\n return this.state.deviceProps[notes]\r\n } else return ''\r\n }\r\n\r\n modalBody = () => {\r\n let state = this.state;\r\n if (state.loading === true || state.loadingLocations === true) {\r\n return (\r\n \r\n )\r\n } else {\r\n return (\r\n
    \r\n {this.props.instructions}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {state.invalidMacMsg}\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n {this.selectField(deviceType, state.deviceModelOptions)}\r\n
    \r\n
    \r\n \r\n {this.selectField(location, state.locationOptions)}\r\n
    \r\n
    \r\n \r\n {this.selectField(acqCode, this.acqCodeOptions() )}\r\n
    \r\n {this.deviceNotesField()}\r\n
    \r\n
    \r\n )\r\n } \r\n }\r\n\r\n render() {\r\n let state = this.state;\r\n return (\r\n \r\n \r\n {this.props.showModalBtn}\r\n \r\n \r\n \r\n {this.props.title}\r\n \r\n \r\n {this.modalBody()}\r\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 DeviceSettingsModal","import React from 'react';\nimport DeviceSettingsModal from './deviceSettingsModal';\n\nconst instructions = () => {\n return (\n
    \n

    Individually add devices to inventory. Once added, devices can be assigned to users and configured.

    \n {/*\n

    Individually add or bulk upload devices to inventory. Once added, devices can be assigned to users and configured.

    \n Download Inventory Template \n Bulk Upload Inventory\n */}\n
    \n )\n}\n\nconst showModalBtn = () => {\n return Add Device\n}\n\nconst DeviceAddModal = (props) => {\n return (\n \n )\n}\n\nexport default DeviceAddModal\n","import React from 'react';\nimport DeviceSettingsModal from './deviceSettingsModal';\nimport { deviceIsAssigned } from './../devices_helpers';\n\nconst showModalBtn = (device) => {\n if (!deviceIsAssigned(device)) {\n return Edit\n } else {\n return null\n }\n}\n\nconst DeviceEditModal = (props) => {\n let device = props.device;\n return (\n \n )\n}\n\nexport default DeviceEditModal","import React, { Component } from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport { Link, withRouter, BrowserRouter } from 'react-router-dom';\nimport '@progress/kendo-ui';\nimport * as config from './../requests/config.js';\nimport * as settings from './../scripts/settings.js';\nimport { fetchData } from './../requests/api_calls';\nimport { DataLoadingSpinner } from './spinners';\nimport Popup from \"reactjs-popup\";\nimport { Grid, GridCell, GridColumn as Column } from '@progress/kendo-react-grid';\n\nconst options = {\n position: \"right\",\n showOn: \"click\",\n width: '240px',\n autoHide: false\n}\n\nclass ServiceNumberClickPop extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n \tports: [], \n \terrorMessage: null,\n loading: true,\n popupHeight: (this.props.TnCount * 40 + 150) < 500 ? (this.props.TnCount * 40 + 150).toString() : 500\n };\n \n this.showTns = this.showTns.bind(this);\n this.loadTnList = this.loadTnList.bind(this);\n\n class EditBtn extends GridCell {\n render() {\n let path = {pathname: '/services', searchTerm: this.props.dataItem.UserId}\n return (\n \n Service\n \n )\n }\n }\n this.editBtn = EditBtn;\n }\n\n\tcomponentDidMount() {\n\n }\n\n showTns = () => {\n \tthis.setState({loading: true});\n fetchData('admin/GetDeviceConfiguration?mac=' + this.props.MacAddress).then(data => {\n \tif(data && data.Ports) {\n let portsRevised = [];\n data.Ports.map((port, index) => {\n let phoneOrExt = port.PhoneNumber || port.Extension;\n if (phoneOrExt) {\n let newPort = {\n portNum: port.PortNumber,\n TN: port.PhoneNumber || port.Extension,\n DisplayName: port.DisplayName || '',\n UserId: port.UserId\n };\n portsRevised.push(newPort);\n }\n });\n this.setState({ports: portsRevised, loading: false});\n }\n });\n }\n\n loadTnList = () => {\n \tif (this.state.loading) {\n \t\treturn \n \t} else {\n\t \treturn (\n \n

    Telephone Numbers:

    \n \n \n \n \n \n \n
    \n )\n \t}\n }\n\n render() {\n return (\n (\n { this.props.TnCount }\n )}\n onOpen={this.showTns}\n position=\"bottom center\"\n closeOnDocumentClick\n contentStyle={{padding: '20px', border: 'unset', width: '450px', height: this.state.popupHeight + 'px'}}\n >\n {this.loadTnList()} \n \n )\n }\n\n}\n\nexport default ServiceNumberClickPop;","import React, { Component } from 'react';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as apiCalls from './../../../requests/api_calls';\r\nimport * as help from'../../locations/locations_helpers';\r\nimport SaveStatus from '../../../components/save_status'\r\nimport { DataLoadingSpinner } from'./../../../components/spinners';\r\nimport * as settings from '../../../scripts/settings';\r\n\r\nclass GroupFqdnTab extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.fetchFqdns = this.fetchFqdns.bind(this);\r\n this.fqdnsOptions = this.fqdnsOptions.bind(this);\r\n this.fqdnsOption = this.fqdnsOption.bind(this);\r\n this.fetchLocations = this.fetchLocations.bind(this);\r\n this.setLocation = this.setLocation.bind(this);\r\n this.resetForm = this.resetForm.bind(this);\r\n this.retrieveFQDNDetails = this.retrieveFQDNDetails.bind(this);\r\n this.state = { loading: true, showModal: false, fqdns: [], currentLocation: '', locations: [], resultsMsg: '',newFqdn:null};\r\n }\r\n\r\n componentDidMount() { \r\n this.fetchLocations();\r\n }\r\n\r\n fetchFqdns = async() => {\r\n let params = '?locationAccountNumber=' + this.state.currentLocation;\r\n let apiPath = 'admin/GetFqdns' + params;\r\n return apiCalls.fetchData(apiPath).then(data => data);\r\n }\r\n\r\n fetchDeviceLocation = () => {\r\n let params = '?locationAccountNumber=' + this.state.currentLocation;\r\n let apiPath = 'admin/GetDeviceLocationProperties' + params;\r\n return apiCalls.fetchData(apiPath).then(data => data);\r\n }\r\n\r\n fetchLocations = async(apiPath) => {\r\n let locationOption = (location, index) => \r\n\r\n if (!apiPath) apiPath = 'admin/Locations';\r\n await this.setState({ loading: true });\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n if (data) {\r\n let locationOptions = data.map((location, index) => locationOption(location, index));\r\n if (locationOptions.length > 1) {\r\n locationOptions.unshift(\r\n locationOption({ LocationAccountNumber: '', LocationName: '- Select Location -' }, '')\r\n );\r\n }\r\n this.setState({ locationOptions: locationOptions });\r\n if (!sessionStorage.DeviceLocation) {\r\n let currLocation = this.state.locationOptions[0].props.value;\r\n this.setState({ currentLocation: currLocation, loading: false }); //initial value\r\n } else {\r\n this.setState({ currentLocation: sessionStorage.DeviceLocation }); //stored value\r\n this.loadLocationDetails(sessionStorage.DeviceLocation);\r\n }\r\n } else {\r\n this.setState({ locations: [], resultsMsg: settings.noResultsMsg, loading: false });\r\n };\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n setLocation = async(event) => {\r\n let locationValue = event.target.value;\r\n await this.setState({ currentLocation: locationValue, loading: true });\r\n await this.loadLocationDetails(locationValue);\r\n \r\n }\r\n loadLocationDetails = async(locationValue) => {\r\n try{\r\n let [FQDNDetails, DeviceLocationDetails] = await this.retrieveFQDNDetails();\r\n await this.setFQDNList(FQDNDetails);\r\n await this.setDeviceLocationDetails(DeviceLocationDetails);\r\n } catch (ex) { \r\n console.error(ex);\r\n } finally {\r\n sessionStorage.setItem('DeviceLocation', locationValue);\r\n await this.setState({loading: false});\r\n }\r\n }\r\n\r\n setFQDNList = (FQDNDetails) => {\r\n if (FQDNDetails !== null) {\r\n //need to pull down all properties because the save is otherwise overriding the save in the VLAN modal\r\n if (FQDNDetails !== null) {\r\n let fqdnList = [];\r\n fqdnList.push('')\r\n FQDNDetails.sort();\r\n FQDNDetails.unshift(fqdnList);\r\n this.setState({fqdns: FQDNDetails});\r\n } else if (FQDNDetails === null) {\r\n // Need to send user instruction on how to create FQDN options\r\n }\r\n }\r\n }\r\n\r\n setDeviceLocationDetails = (DeviceLocationDetails) => {\r\n if (DeviceLocationDetails) {\r\n setTimeout(() => this.setState({\r\n loading: false,\r\n currentFqdn: DeviceLocationDetails.FQDN, \r\n newFqdn: DeviceLocationDetails.FQDN,\r\n EncryptedAudio: DeviceLocationDetails.EncryptedAudio,\r\n TransportProtocol: DeviceLocationDetails.TransportProtocol,\r\n useTcp: DeviceLocationDetails.TransportProtocol === 'TCP', \r\n VlanId: DeviceLocationDetails.VlanId || '',\r\n useVlanId: DeviceLocationDetails.VlanId != ('' || null)\r\n }), help.hideSpinnerDelay);\r\n }\r\n }\r\n\r\n retrieveFQDNDetails = async() => {\r\n let requests = [this.fetchFqdns(), this.fetchDeviceLocation()];\r\n return await Promise.all(requests).then(dataArray => dataArray);\r\n }\r\n\r\n fqdnsOptions = () => this.state.fqdns.map((fqdn, index) => this.fqdnsOption(fqdn, index));\r\n\r\n fqdnsOption = (fqdn, index) => \r\n\r\n setNewFqdn = (e) => this.setState({newFqdn: e.target.value || null});\r\n\r\n saveStatus = () => {\r\n if (this.state.showErrorStatus) {\r\n return Error updating Group FQDN. Please try again.\r\n } else return null;\r\n }\r\n\r\n resetForm = async() => {\r\n await this.setState({ loading: true, statusMessage: '', currentFqdn: null });\r\n try{\r\n let [FQDNDetails, DeviceLocationDetails] = await this.retrieveFQDNDetails();\r\n await this.setFQDNList(FQDNDetails);\r\n await this.setDeviceLocationDetails(DeviceLocationDetails);\r\n } catch (ex) { \r\n console.error(ex);\r\n } finally {\r\n await this.setState({loading: false});\r\n }\r\n }\r\n\r\n handleUpdateSuccess = () => {\r\n let currentFqdn = this.state.newFqdn;\r\n setTimeout(() => {\r\n this.setState({\r\n currentFqdn: currentFqdn,\r\n saving: false,\r\n statusMessage: 'Group FQDN settings were updated.',\r\n parentCallback: this.resetForm\r\n })\r\n ,setTimeout(() => this.resetForm(), help.statusMsgDelay)}\r\n , help.hideSpinnerDelay);\r\n }\r\n\r\n handleUpdateError = () => {\r\n this.setState({showErrorStatus: true});\r\n setTimeout(() => this.setState({showErrorStatus: false}), 3000);\r\n }\r\n\r\n saveDeviceLocationInput = () => {\r\n this.setState({saving: true, showSaveStatus: true});\r\n let data = JSON.stringify({\r\n LocationAccountNumber: this.state.currentLocation,\r\n FQDN: this.state.newFqdn,\r\n EncryptedAudio: this.state.EncryptedAudio,\r\n TransportProtocol: this.state.TransportProtocol,\r\n VlanId: this.state.VlanId\r\n });\r\n let apiPath = 'admin/UpdateDeviceLocationProperties';\r\n apiCalls.send(apiPath, 'PATCH', data).then(resp => {\r\n resp.ok ? this.handleUpdateSuccess() : this.handleUpdateError();\r\n }).catch(message => {\r\n console.log('caught an exception updating device location FQDN');\r\n console.log(message)\r\n });\r\n }\r\n\r\n savingOrConfirming = () => this.state.saving || this.state.statusMessage;\r\n\r\n getTabBody = () => {\r\n if (this.state.loading) {\r\n return ;\r\n } else if (this.state.currentLocation === '') {\r\n return (\r\n
    \r\n ​Please select a \"Location\" from the menu above.\r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n

    Setup a Fully Qualified Domain Name (FQDN) as default FQDN for the location.


    \r\n
    \r\n    \r\n {this.saveStatus()}\r\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 footerBtnClass = () => {\r\n return this.savingOrConfirming() || this.state.loading ? 'opaque' : 'visible btns';\r\n }\r\n\r\n modalClass = () => this.state.loading ? 'loading' : 'group-fqdn';\r\n\r\n render() {\r\n return (\r\n
    \r\n

    Group FQDN Setup


    \r\n
    \r\n \r\n \r\n
    \r\n {this.getTabBody()}\r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default GroupFqdnTab;","import React, { Component } from 'react';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport * as help from'../../locations/locations_helpers';\r\nimport * as settings from '../../../scripts/settings';\r\nimport SaveStatus from './../../../components/save_status';\r\nimport * as helper from '../../../scripts/helper';\r\nimport { DataLoadingSpinner } from'./../../../components/spinners';\r\n\r\nclass GroupVLANTab extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.setUseVlanId = this.setUseVlanId.bind(this);\r\n this.setVlanId = this.setVlanId.bind(this);\r\n this.setUseTcp = this.setUseTcp.bind(this);\r\n this.setAudioIsEncrypted = this.setAudioIsEncrypted.bind(this);\r\n this.saveGroupVlanSettings = this.saveGroupVlanSettings.bind(this);\r\n this.fetchVLANSettings = this.fetchVLANSettings.bind(this);\r\n this.setLocation = this.setLocation.bind(this);\r\n this.getTabBody = this.getTabBody.bind(this);\r\n this.state = {\r\n showModal: false,\r\n useVlanId: false,\r\n saving: false,\r\n showSaveStatus: false,\r\n showValidationError: false,\r\n loading: false,\r\n locations: [],\r\n currentLocation: ''\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchLocations();\r\n }\r\n\r\n fetchLocations = async(apiPath) => {\r\n let locationOption = (location, index) => \r\n\r\n if (!apiPath) apiPath = 'admin/Locations';\r\n await this.setState({ loading: true });\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n if (data) {\r\n let locationOptions = data.map((location, index) => locationOption(location, index));\r\n if (locationOptions.length > 1) {\r\n locationOptions.unshift(\r\n locationOption({ LocationAccountNumber: '', LocationName: '- Select Location -' }, '')\r\n );\r\n }\r\n this.setState({ locationOptions: locationOptions });\r\n if (!sessionStorage.DeviceLocation) {\r\n let currLocation = this.state.locationOptions[0].props.value;\r\n this.setState({ currentLocation: currLocation, loading: false }); //initial value\r\n } else {\r\n this.setState({ currentLocation: sessionStorage.DeviceLocation }); //stored value\r\n this.loadLocationDetails(sessionStorage.DeviceLocation);\r\n }\r\n } else {\r\n this.setState({ locations: [], resultsMsg: settings.noResultsMsg, loading: false });\r\n };\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n setLocation = async (event) => {\r\n let locationValue = event.target.value;\r\n await this.setState({ currentLocation: locationValue, loading: true });\r\n this.loadLocationDetails(locationValue);\r\n }\r\n\r\n loadLocationDetails = async(locationValue) => {\r\n await this.fetchVLANSettings();\r\n await this.setState({loading: false});\r\n sessionStorage.setItem('DeviceLocation', locationValue);\r\n }\r\n\r\n setUseVlanId = (e) => this.setState({useVlanId: e.target.checked});\r\n\r\n setVlanId = (e) => this.setState({VlanId: e.target.value}, this.validateForm(e));\r\n\r\n setUseTcp = (e) => {\r\n let protocol = e.target.checked ? 'TCP' : 'UDP';\r\n this.setState({useTcp: e.target.checked, TransportProtocol: protocol, EncryptedAudio: false});\r\n }\r\n\r\n setAudioIsEncrypted = (e) => this.setState({EncryptedAudio: e.target.checked});\r\n\r\n fetchVLANSettings = async() => {\r\n let params = '?locationAccountNumber=' + this.state.currentLocation;\r\n try\r\n {\r\n let data = await apiCalls.fetchData('admin/GetDeviceLocationProperties' + params).then((resp) => resp);\r\n if (data !== null) {\r\n await this.setState({\r\n EncryptedAudio: data.EncryptedAudio,\r\n TransportProtocol: data.TransportProtocol,\r\n useTcp: data.TransportProtocol === 'TCP',\r\n VlanId: data.VlanId || '',\r\n useVlanId: data.VlanId !== ('' || null),\r\n FQDN: data.FQDN\r\n });\r\n } else if (data === null) {\r\n await this.setState({fqdns: []});\r\n }\r\n }\r\n catch(ex) \r\n {\r\n console.error(ex);\r\n };\r\n }\r\n\r\n validForm = () => {\r\n if (this.state.useVlanId && this.state.VlanId === '') {\r\n this.setState({showValidationError: true});\r\n return false\r\n } else {\r\n this.setState({showValidationError: false});\r\n return true\r\n }\r\n }\r\n\r\n validVlanId = (id) => {\r\n return (id !== \"\" && id !== undefined) && ((id >= 2 && id <= 1001) || (id >= 1006 && id <= 4094))\r\n }\r\n\r\n validateForm = (e) => {\r\n if (this.state.useVlanId && (!this.validVlanId(parseInt(e.target.value))))\r\n {\r\n this.setState({showValidationError: true});\r\n } else {\r\n this.setState({showValidationError: false});\r\n }\r\n }\r\n\r\n saveGroupVlanSettings = () => {\r\n if (this.validForm()) {\r\n this.setState({saving: true, showSaveStatus: true});\r\n let data = {\r\n TransportProtocol: this.state.TransportProtocol,\r\n EncryptedAudio: this.state.EncryptedAudio,\r\n VlanId: this.state.useVlanId ? this.state.VlanId : null,\r\n LocationAccountNumber: this.state.currentLocation,\r\n FQDN: this.state.FQDN\r\n };\r\n let apiPath = 'admin/UpdateDeviceLocationProperties';\r\n apiCalls.send(apiPath, 'PATCH', JSON.stringify(data)).then(resp => {\r\n if(resp.ok) {\r\n setTimeout(() => {\r\n this.setState({\r\n saving: false,\r\n statusMessage: 'Group VLAN settings were updated.',\r\n parentCallback: this.resetForm\r\n }), \r\n setTimeout(() => this.resetForm(), help.statusMsgDelay)\r\n }\r\n ,help.hideSpinnerDelay);\r\n } else {\r\n this.setState({...this.state,\r\n saving: false,\r\n error: true,\r\n statusMessage: this.notSavedErrorMsg(resp),\r\n parentCallback: this.resetForm\r\n })\r\n }\r\n }).catch(message => {\r\n this.setState({saving: false});\r\n console.log('caught exception saving Group VLAN settings.');\r\n console.log(message);\r\n });\r\n }\r\n }\r\n\r\n resetForm = async() => {\r\n await this.setState({ loading: true, statusMessage: '' });\r\n try{\r\n await this.fetchVLANSettings();\r\n } catch (ex) { \r\n console.error(ex);\r\n } finally {\r\n await this.setState({loading: false});\r\n }\r\n }\r\n\r\n vlanIdDivSettings = (attr) => {\r\n var settings = {};\r\n if (this.state.useVlanId) {\r\n settings = {class: 'hidden-group collapse in', 'aria-expanded': 'true'};\r\n } else {\r\n settings = {class: 'hidden-group collapse', 'aria-expanded': 'false'};\r\n }\r\n return settings[attr]\r\n }\r\n\r\n notSavedErrorMsg = (resp) => 'Device not saved. Error: ' + resp.message;\r\n\r\n getTabBody = () => {\r\n let perms = JSON.parse(sessionStorage.DevicePerms);//sessionStorage.DevicePerms\r\n if (this.state.loading) {\r\n return ;\r\n } else if (this.state.currentLocation === '') {\r\n return (\r\n
    \r\n ​Please select a \"Location\" from the menu above.\r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n

    Set Group VLAN ID

    \r\n

    Setup a Virtual Location Area Network (VLAN) as the default. The default can be overwritten on an individual device level if needed.

    \r\n
    \r\n \r\n Use VLAN ID?\r\n \r\n \r\n
    \r\n \r\n \r\n VLAN ID is required and must be between 2 and 1001 or between 1006 and 4094.\r\n \r\n \r\n
    \r\n
    \r\n

    Set Group IP Transport Protocol for Devices

    \r\n

    \r\n Set the IP transport protocol for all devices within the group. If a device(s) requires a different setting \r\n than what is configured for the group, you may elect to overwrite the group IP transport protocol settings \r\n during device provisioning.\r\n

    \r\n

    \r\n TCP is not the typical transport protocol for voice traffic and should only be used when there are 20+ \r\n Busy Lamp Fields (BLF) configured for an individual device. Contact Momentum Telecom Technical Support \r\n for more detail.\r\n

    \r\n
    \r\n \r\n Use TCP? (UDP is default)\r\n \r\n Note: if you change the current IP transport protocol settings for this group, you must reprovision \r\n all devices within the group before the new setting will be pushed to existing device configuration\r\n files.\r\n \r\n
    \r\n

    Set Group Encrypted Audio & Signaling for Devices

    \r\n

    \r\n Set device Audio and Signaling Encryption for all devices within the group. If a device(s) requires a different \r\n setting than what is configured for the group, you may elect to overwrite the group Audio and Signaling Encryption\r\n settings during device provisioning. \r\n

    \r\n
    \r\n \r\n Enable Encrypted Audio & Signaling?\r\n {/* {helper.disableAudioSignaling() ? ( - change permission not enabled) : ''} */}\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n

    Group VLAN Settings

    \r\n
    \r\n \r\n \r\n
    \r\n {this.getTabBody()}\r\n \r\n \r\n \r\n
    \r\n )\r\n }\r\n};\r\n\r\nexport default GroupVLANTab;","import React, { Component } from 'react';\nimport { DataLoadingSpinner } from './../../components/spinners';\nimport ConfigureDevicesModal from './modals/configureDevicesModal';\nimport DeviceHistoryModal from './modals/deviceHistoryModal';\nimport DeviceResetModal from './modals/deviceResetModal';\nimport DeviceAddModal from './modals/deviceAddModal';\nimport moment from 'moment';\nimport DeviceEditModal from './modals/deviceEditModal';\nimport * as helper from './../../scripts/helper';\nimport * as settings from './../../scripts/settings';\nimport * as apiCalls from './../../requests/api_calls';\nimport * as config from './../../requests/config';\nimport { showRemove, showAddDevice } from './devices_helpers';\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\nimport { orderBy } from '@progress/kendo-data-query';\nimport { Link } from 'react-router-dom';\nimport WrappedCell from '../../components/wordWrappedCell';\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\nimport ServiceTnClickPop from './../../components/serviceTnClickPop';\nimport DeviceStatuses from '../../components/deviceStatuses';\nimport GroupFQDNTab from './components/groupFQDNTab';\nimport GroupVLANTab from './components/groupVLANTab';\n\nclass HistoryBtn extends GridCell {\n\n render() {\n return \n }\n}\n\nclass ServiceLink extends GridCell {\n\n render() {\n let item = this.props.dataItem;\n let path = { pathname: '/services', searchTerm: item.ServiceId }\n return (\n \n {item.AssignedTo}\n \n );\n }\n}\n\nclass ServiceNumbersClickPop extends GridCell {\n render() {\n if (this.props.dataItem.TnCount > 0) {\n return (\n \n \n \n )\n } else return {this.props.dataItem.TnCount}\n }\n}\n\nclass DevicesList extends Component {\n\n constructor(props) {\n super(props);\n\n\n this.state = {\n allDevicesNoFilter: [],\n allDevices: [],\n visibleDevices: [],\n sort: [{ field: \"InsertDate\", dir: \"desc\" }],\n gridHeight: (window.innerHeight - 180),\n activeTab: 'allDevices',\n loading: true,\n searchTerm: '',\n devicesCount: ''\n };\n this.sortChange = this.sortChange.bind(this);\n this.searchDevices = this.searchDevices.bind(this);\n // defining classes within constructor to have access to same state and functions\n\n const loadDevices = this.loadDevices.bind(this);\n const unassignedDevices = this.unassignedDevices.bind(this);\n\n class EmptyCell extends GridCell {\n render() {\n return \n }\n }\n this.emptyCell = EmptyCell;\n\n class MacAddressCell extends GridCell {\n render() {\n let device = this.props.dataItem;\n let fieldClass = device.IsRegistered ? 'text-success' : 'text-danger';\n if (device.RegistrationType === \"sca\") {\n return (\n {device.MacAddress} \n SCA\n \n )\n } else {\n return {device.MacAddress}\n }\n }\n }\n this.macAddressCell = MacAddressCell;\n\n class ConfigureBtn extends GridCell {\n render() {\n return (\n \n \n \n )\n }\n }\n this.configureBtn = ConfigureBtn;\n\n\n class UnassignBtn extends GridCell {\n\n render() {\n return (\n \n \n \n )\n }\n }\n this.unassignBtn = UnassignBtn;\n\n class EditBtn extends GridCell {\n render() {\n return \n }\n }\n this.editBtn = EditBtn;\n };\n\n\n handleResize = () => this.setState({\n gridHeight: (window.innerHeight - 180)\n });\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleResize)\n }\n\n\n componentDidMount() {\n this.handleResize();\n window.addEventListener('resize', this.handleResize)\n this.loadDevices();\n }\n\n loadDevices = (showAll = false) => {\n // defining function without args to concisely pass as callback\n let bShowAll = true;\n if (showAll === false && this.state.activeTab !== 'allDevices')\n bShowAll = false;\n\n this.fetchDevices('admin/GetDevices', bShowAll, false, true);\n }\n\n fetchDevices = (apiPath, showAll = false, forceRefresh = false, setFullListings = false) => {\n this.setState({ loading: true });\n apiCalls.fetchData('admin/QuickView').then((data) => {\n if (data)\n this.setState({ devicesCount: data.CountDevices })\n })\n apiCalls.fetchData(apiPath).then((data) => {\n this.fetchDevicesCallback(data, showAll, forceRefresh, setFullListings);\n }).catch(ex => {\n console.log(ex);\n this.setState({ loading: false, allDevices: [], visibleDevices: [] })\n });\n }\n fetchDevicesCallback(data, showAll, forceRefresh, setFullListings) {\n let currentTab = this.state.activeTab;\n if (data !== null) {\n let allDevices = this.normalizedData(data);\n let sortedData = this.sortDevices(this.state.sort, allDevices);\n let filteredData = [];\n if (showAll === true) {\n filteredData = sortedData;\n currentTab = 'allDevices';\n }\n else {\n if (currentTab === 'assigned')\n filteredData = this.assignedDevices(sortedData);\n else\n filteredData = this.unassignedDevices(sortedData);\n }\n let existingArray = this.state.allDevicesNoFilter;\n this.setState({\n allDevicesNoFilter: setFullListings === true ? allDevices : existingArray,\n loading: false,\n allDevices: allDevices,\n visibleDevices: filteredData,\n activeTab: currentTab\n\n });\n }\n else if (data === null && !forceRefresh) {\n this.setState({ allDevices: [], visibleDevices: [], loading: false });\n }\n }\n\n normalizedData = (data) => {\n return data.slice().map(item => {\n if (item.FQDN === '' || item.FQDN === null) item.FQDN = 'N/A';\n if (item.VideoEnabled === true) item.VideoEnabled = 'Yes';\n else item.VideoEnabled = 'No';\n item.InsertDate = helper.convertToLocalTime(item.InsertDate);\n return item\n })\n }\n\n assignedDevices = (allDevices = this.state.allDevicesNoFilter) => {\n return allDevices.filter(device => device.AssignedTo !== null);\n }\n\n unassignedDevices = (allDevices = this.state.allDevicesNoFilter) => {\n return allDevices.filter(device => device.AssignedTo === null);\n }\n\n showAssigned = () => {\n let assigned = this.assignedDevices(this.state.allDevices);\n assigned = this.sortDevices(this.state.sort, assigned);\n this.setState({ visibleDevices: assigned, activeTab: 'assigned' });\n }\n\n showUnassigned = () => {\n let unassigned = this.unassignedDevices(this.state.allDevices);\n unassigned = this.sortDevices(this.state.sort, unassigned);\n this.setState({ visibleDevices: unassigned, activeTab: 'unassigned' });\n }\n\n showAllDevices = () => {\n let allDevices = this.state.allDevices;\n allDevices = this.sortDevices(this.state.sort, allDevices);\n this.setState({ visibleDevices: allDevices, activeTab: 'allDevices' });\n }\n\n showGroupFQDN = () => {\n this.setState({ activeTab: 'groupFQDN' });\n }\n\n showVLANSettings = () => {\n this.setState({ activeTab: 'groupVLAN' });\n }\n\n sortDevices(sort, visibleDevices = null) {\n if (visibleDevices == null) visibleDevices = this.state.visibleDevices.slice();\n let sortedSet = orderBy(visibleDevices, sort);\n if (sort.length && sort[0].field !== 'TnCount' && sort[0].field !== 'AddedDate') {\n return helper.blanksAfterZ(sortedSet, sort);\n } else {\n return sortedSet;\n }\n }\n\n sortChange(event) {\n this.setState({\n visibleDevices: this.sortDevices(event.sort),\n sort: event.sort\n });\n }\n\n searchDevices = (event) => {\n let tab = this.state.activeTab;\n let searchText = event.target.value.trim();\n this.setState({ searchTerm: searchText });\n var apiPath = ''\n if (searchText !== '') {\n apiPath = 'admin/GetDevices?term=' + searchText;\n } else { // reset to all devices\n apiPath = 'admin/GetDevices';\n }\n this.delayedSearch(apiPath, tab);\n }\n\n delayedSearch = (apiPath, tab) => {\n\n let bShowAll = tab === 'allDevices' ? true : false;\n if (this.timeout) clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.fetchDevices(apiPath, bShowAll);\n }, settings.searchDelay);\n }\n\n exportDevicesBtn = () => {\n if (this.state.allDevices.length > 0) {\n return (\n \n )\n } else null;\n }\n\n exportDevices = () => {\n this.refs.exportDevices.submit();\n this.refs.exportBtn.text = 'Downloading...';\n setTimeout(() => {\n this.refs.exportBtn.text = 'Export Devices';\n }, 2000);\n }\n\n tabContent = () => {\n if (this.state.loading) {\n return \n } else if (this.state.activeTab === 'groupFQDN') {\n return (\n \n );\n } else if (this.state.activeTab === 'groupVLAN') {\n return (\n \n );\n } else {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {showRemove() ? : null}\n \n \n \n )\n }\n }\n\n tabClass = (tabName) => this.state.activeTab === tabName ? 'tab active' : 'tab';\n\n checkRegistration = () => {\n this.setState({ loading: true });\n let searchTerm = this.state.searchTerm;\n let apiPath = '';\n if (searchTerm && searchTerm !== '')\n apiPath = `admin/GetDevices?term=${searchTerm}&ForceDeviceRefresh=TRUE`;\n else\n apiPath = 'admin/GetDevices?ForceDeviceRefresh=TRUE';\n\n apiCalls.fetchData(apiPath).then((data) => {\n this.fetchDevicesCallback(data, this.state.activeTab === 'allDevices', true)\n if (data !== null) {\n this.setState({\n registrationUpdated: helper.registrationLastUpdated()\n\n });\n } else {\n this.setState({ loading: false, registrationUpdated: 'Failed to retrieve registration status: ' + moment().format('M-DD-YYYY hh:mm:ss A') })\n }\n }).catch(ex => {\n console.log(ex);\n this.setState({ locations: [], loading: false });\n });\n }\n\n render() {\n return (\n
    \n
    \n
    \n

    Devices {this.state.devicesCount || null}

    \n
    \n
    \n \n \n \n
    \n \n \n \n\n
    \n \n
    \n
    \n \n {this.tabContent()}\n
    \n
    \n
    \n )\n }\n}\n\nexport default DevicesList;","import React from 'react';\r\nimport { fetchData, post } from '../../../requests/api_calls';\r\nimport * as helper from '../../../scripts/helper';\r\n\r\nconst paramsSeparator = (apiPath) => apiPath.indexOf('?') >= 0 ? '&' : '?';\r\n\r\nexport const apiGetMACDPermissions = () => {\r\n return 'admin/macd/GetMacdPermissions';\r\n}\r\n\r\nexport const apiGetUserLevelAddons = (loc_acct_num) => {\r\n return `admin/macd/GetAvailableAddonList?LocationAccountNumber=${loc_acct_num}`;\r\n}\r\n\r\nexport const apiGetUserAvailableAddons = (currentLocation, partNum) => {\r\n return `admin/macd/GetAvailableAddonServiceList?LocationAccountNumber=${currentLocation}&AddonPartNumber=${partNum}`;\r\n}\r\n\r\nexport const apiGetUserAssignedAddons = (currentLocation, partNum) => {\r\n return `admin/macd/GetAssignedAddonServiceList?LocationAccountNumber=${currentLocation}&AddonPartNumber=${partNum}`;\r\n}\r\n\r\nexport const apiPostUnassignedAddons = () => {\r\n return 'admin/macd/UnassignAddon';\r\n}\r\n\r\nexport const apiPostAssignedAddons = () => {\r\n return 'admin/macd/AssignAddon';\r\n}\r\n\r\nexport const apiGetLocations = () => {\r\n let path = 'admin/Locations';\r\n return path;\r\n}\r\n\r\nexport const apiGetProductPropertiesWithParams = (PartNumber) => {\r\n let path = 'admin/macd/GetProductProperties?PartNumber=' + PartNumber;\r\n return path;\r\n}\r\n\r\nexport const apiLoadMACDWithParams = (OrderId) => {\r\n let path = 'admin/macd/GetOrder?OrderId=' + OrderId;\r\n return path;\r\n}\r\n\r\nexport const apiLoadMACDLineItemList = (OrderId) => {\r\n let path = 'admin/macd/GetLineItemList?OrderId=' + OrderId;\r\n return path;\r\n}\r\n\r\nexport const apiLoadMACDLineItemDetailListWithProperties = (OrderId, LineItemId) => {\r\n let path = 'admin/macd/GetItemDetailList?OrderId=' + OrderId + \"&FilterProductProperties=false&LineItemId=\" + LineItemId;\r\n return path;\r\n}\r\n\r\n// export const apiGetInventoryNumbersWithParams = (OrderId) => {\r\n// let path = 'admin/macd/GetInventoryNumbers?OrderId=' + OrderId;\r\n// return path;\r\n// }\r\n\r\nexport const apiGetTerminatingNumbersWithParams = (OrderId, LocationId) => {\r\n return 'admin/macd/GetTerminatingNumbers?OrderId=' + OrderId + \"&LocationId=\" + LocationId;\r\n}\r\n\r\nexport const apiAddServicesOrderWithLineItem = () => {\r\n return 'admin/macd/CreateOrder';\r\n}\r\n\r\nexport const apiAddServicesSaveLineItem = () => {\r\n return 'admin/macd/SaveLineItem';\r\n}\r\n\r\nexport const apiAddServicesDetailItem = () => {\r\n return 'admin/macd/SaveItemDetail';\r\n}\r\n\r\nexport const apiUpdateDetailItem = () => {\r\n return 'admin/macd/UpdateItemDetail';\r\n}\r\n\r\nexport const apiUpdateLineItem = () => {\r\n return 'admin/macd/UpdateLineItem';\r\n}\r\n\r\nexport const apiSavedOrderPathWithParams = (OrderId) => {\r\n let path = 'admin/macd/GetOrder?OrderId=' + OrderId;\r\n return path;\r\n}\r\n\r\nexport const apiPricebookPathWithParams = (currentLocation) => {\r\n let path = 'admin/macd/GetProductCatalog';\r\n path += '?LocationAccountNumber=' + currentLocation;\r\n path += paramsSeparator(path) + 'MacdType=ADD_SERVICES';\r\n path += paramsSeparator(path) + 'filter=STANDALONE_AND_ADDON_PRODUCTS';\r\n return path;\r\n}\r\nexport const apiGetRCStateList = () => {\r\n return 'admin/macd/GetRCStateList';\r\n}\r\n\r\nexport const apiGetDefaultRateCenterDetails = (OrderId, LocationId) => {\r\n return 'admin/macd/GetRCListByServiceAddress?OrderId=' + OrderId + '&LocationId=' + LocationId;\r\n};\r\n\r\nexport const apiGetRCNameByState = (abbr) => {\r\n return 'admin/macd/GetRCListByState?RCState=' + abbr;\r\n}\r\n\r\nexport const apiDiscardOrder = () => {\r\n return 'admin/macd/DiscardOrder';\r\n}\r\n\r\nexport const apiDiscardLineItem = () => {\r\n return 'admin/macd/DiscardLineItem';\r\n}\r\n\r\nexport const apiDiscardItemDetail = () => {\r\n return 'admin/macd/DiscardItemDetail';\r\n}\r\n\r\nexport const apiDiscardTrunkGroupConfig = () => {\r\n return 'admin/macd/DiscardTrunkGroupConfig';\r\n}\r\n\r\nexport const apiGetLocationList = (OrderId) => {\r\n return 'admin/macd/GetLocationList?OrderId=' + OrderId;\r\n}\r\nexport const apiGetLocationDetails = (OrderId, LocationId) => {\r\n return 'admin/macd/GetLocation?OrderId=' + OrderId + '&LocationId=' + LocationId;\r\n}\r\nexport const apiValidateMACD = (OrderId) => {\r\n return 'admin/macd/ValidateMacd?OrderId=' + OrderId;\r\n}\r\nexport const apiValidateMACDLineItems = (OrderId, LocationId) => {\r\n return 'admin/macd/ValidateLineItemList?OrderId=' + OrderId + '&LocationId=' + LocationId;\r\n}\r\nexport const apiValidateMACDDetailItems = (OrderId, LocationId) => {\r\n return 'admin/macd/ValidateItemDetailList?OrderId=' + OrderId + '&LocationId=' + LocationId;\r\n}\r\n\r\nexport const apiGetMPOLocation = (OrderId, LocationId) => {\r\n return 'admin/macd/GetLocation?OrderId=' + OrderId + '&LocationId=' + LocationId;\r\n}\r\n\r\nexport const apiUpdateLocation = () => {\r\n return 'admin/macd/UpdateLocation'\r\n}\r\n\r\nexport const apiSubmitOrder = () => {\r\n return 'admin/macd/SubmitOrder';\r\n}\r\n\r\nexport const apiTerminateOrder = () => {\r\n return 'admin/macd/TerminateOrder';\r\n}\r\n\r\nexport const apiGetListingsForChangeExtension = (LocationAccountNumber) => {\r\n return `admin/macd/GetChangeExtensionList?LocationAccountNumber=${LocationAccountNumber}`;\r\n}\r\n\r\nexport const apiUpdateExtension = () => {\r\n return 'admin/macd/SaveChangeExtensionList';\r\n}\r\nexport const apiGetChangeLineTypeListings = (MomentumAccountNumber) => {\r\n return 'admin/macd/GetChangeLineTypeList?LocationAccountNumber=' + MomentumAccountNumber;\r\n}\r\nexport const apiSubmitChangeLineType = () => {\r\n return 'admin/macd/SaveChangeLineTypeList'\r\n}\r\nexport const apiGetChangeListingList = (MomentumAccountNumber) => {\r\n return 'admin/macd/GetChangeListingList?LocationAccountNumber=' + MomentumAccountNumber;\r\n}\r\nexport const apiSubmitChangeListingList = () => {\r\n return 'admin/macd/SaveChangeListingList';\r\n}\r\n\r\nexport const apiGetChangeSeatType = (MomentumAccountNumber) => {\r\n return `admin/macd/GetChangeSeatTypeList?LocationAccountNumber=${MomentumAccountNumber}`\r\n}\r\n\r\nexport const apiSubmitChangeSeatType = () => {\r\n return `admin/macd/SaveChangeSeatTypeList`;\r\n}\r\n\r\nexport const apiGetChangeCnam = (MomentumAccountNumber) => {\r\n return `admin/macd/GetChangeCNAMList?LocationAccountNumber=${MomentumAccountNumber}`;\r\n}\r\n\r\nexport const apiSubmitChangeCnam = () => {\r\n return `admin/macd/SaveChangeCNAMList`;\r\n}\r\n\r\nexport const apiGetBlockType = (MomentumAccountNumber) => {\r\n return `admin/macd/GetChangeBlockList?LocationAccountNumber=${MomentumAccountNumber}`\r\n}\r\n\r\nexport const apiSubmitBlockType = () => {\r\n return `admin/macd/SaveChangeBlockList`;\r\n}\r\n\r\nexport const apiGetVTNList = (MomentumAccountNumber) => {\r\n return `admin/macd/GetChangeVNTermNumberList?LocationAccountNumber=${MomentumAccountNumber}`;\r\n}\r\n\r\nexport const apiSubmitVTN = () => {\r\n return `admin/macd/SaveChangeVNTermNumberList`;\r\n}\r\n\r\nexport const apiRetrieveIPTrunks = (MomentumAccountNumber) => {\r\n return `admin/GetIpTrunkGroupList?LocationAccountNumber=${MomentumAccountNumber}`;\r\n}\r\n\r\nexport const apiLoadMACDTrunkItemListWithProperties = (OrderId) => {\r\n return `admin/MACD/GetIPTrunkConfigList?OrderId=${OrderId}`;\r\n}\r\n\r\nexport const apiLoadMACDAddressListWithProperties = (OrderId) => {\r\n return `admin/macd/GetE911AddressList?OrderId=${OrderId}`;\r\n}\r\n\r\nexport const apiAddServicesIPTrunkItem = () => {\r\n return `admin/macd/SaveIPTrunkConfig`;\r\n}\r\n\r\nexport const apiUpdateTrunkItem = () => {\r\n return 'admin/macd/UpdateIPTrunkConfig';\r\n}\r\n\r\nexport const apiDiscardTrunkItem = () => {\r\n return 'admin/macd/DiscardIPTrunkConfig';\r\n}\r\n\r\nexport const apiValidateTrunkItem = (OrderId, IPTrunkConfigId) => {\r\n return `admin/macd/DiscardIPTrunkConfig?OrderId=${OrderId}&IPTrunkConfigId=${IPTrunkConfigId}`;\r\n}\r\n\r\nexport const locationSelectLabel = (locationAcctNumber) => {\r\n return (\r\n
    \r\n ​Please select a \"Location\" from the menu above.\r\n
    \r\n )\r\n}\r\n\r\nexport const fetchItemConfig = async (OrderId, LocationId) => {\r\n let requests = [\r\n //fetchInventoryTN(OrderId),\r\n fetchRateCenterDetailsByServiceAddress(OrderId, LocationId),\r\n fetchTerminatingNumbers(OrderId, LocationId),\r\n fetchLocationDetails(OrderId, LocationId)\r\n ];\r\n return await Promise.all(requests).then(dataArray => dataArray);\r\n}\r\n// export const fetchInventoryTN = async (OrderId) => {\r\n// let apiPath = apiGetInventoryNumbersWithParams(OrderId);\r\n// return fetchData(apiPath).then(data => data);\r\n// }\r\n\r\nexport const fetchRateCenterDetailsByServiceAddress = async (OrderId, LocationId) => {\r\n let apiPath = apiGetDefaultRateCenterDetails(OrderId, LocationId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\n\r\nexport const fetchTerminatingNumbers = async (OrderId, LocationId) => {\r\n let apiPath = apiGetTerminatingNumbersWithParams(OrderId, LocationId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\n\r\nexport const fetchLocationDetails = async (OrderId, LocationId) => {\r\n let apiPath = apiGetLocationDetails(OrderId, LocationId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\n\r\nexport const fetchRateCenterOptions = async (StateAbbr) => {\r\n let apiPath = apiGetRCNameByState(StateAbbr);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\n\r\nexport const fetchAvailableAddons = (locationId) => {\r\n let apiPath = apiGetUserLevelAddons(locationId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\n//export const fetchAvailableList;\r\n//export const fetchAssignedList;\r\n\r\nexport const RetrieveOrderDetails = async (OrderId) => {\r\n let requests = [\r\n fetchSavedOrder(OrderId),\r\n fetchLocationList(OrderId),\r\n fetchLineItemList(OrderId),\r\n fetchLineItemDetailList(OrderId),\r\n fetchTrunkItemList(OrderId),\r\n fetchOrderAddresses(OrderId)\r\n ];\r\n return await Promise.all(requests).then(dataArray => dataArray);\r\n}\r\nexport const GetItemValidations = async (OrderId, LocationId) => {\r\n let requests = [\r\n fetchOrderValidation(OrderId) //may need to add back details\r\n ];\r\n return await Promise.all(requests).then(dataArray => dataArray);\r\n}\r\n\r\nexport const fetchSavedOrder = async (OrderId) => {\r\n let apiPath = apiLoadMACDWithParams(OrderId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\nexport const fetchLocationList = async (OrderId) => {\r\n let apiPath = apiGetLocationList(OrderId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\nexport const fetchLineItemList = async (OrderId) => {\r\n let apiPath = apiLoadMACDLineItemList(OrderId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\nexport const fetchLineItemDetailList = async (OrderId, LineItemId = 0) => {\r\n let apiPath = apiLoadMACDLineItemDetailListWithProperties(OrderId, LineItemId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\n\r\nexport const fetchTrunkItemList = async (OrderId = 0) => {\r\n let apiPath = apiLoadMACDTrunkItemListWithProperties(OrderId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\n\r\nexport const fetchOrderAddresses = async (OrderId = 0) => {\r\n let apiPath = apiLoadMACDAddressListWithProperties(OrderId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\n\r\nexport const fetchOrderValidation = async (OrderId) => {\r\n let apiPath = apiValidateMACD(OrderId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\n\r\nexport const fetchLocations = async () => {\r\n let apiPath = apiGetLocations();\r\n return fetchData(apiPath).then(data => data);\r\n}\r\n\r\nexport const fetchPricebookDetails = async (LocationId) => {\r\n let apiPath = apiPricebookPathWithParams(LocationId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\n\r\nexport const fetchMPOLocation = async (OrderId, LocationId) => {\r\n let apiPath = apiGetMPOLocation(OrderId, LocationId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\n\r\nexport const fetchLineItemValidation = async (OrderId, LocationId) => {\r\n let apiPath = apiValidateMACDLineItems(OrderId, LocationId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\n\r\nexport const fetchDetailItemValidation = async (OrderId, LocationId) => {\r\n let apiPath = apiValidateMACDDetailItems(OrderId, LocationId);\r\n return fetchData(apiPath).then(data => data);\r\n}\r\n\r\nexport const UpdateLineItemInOrder = async (LineItem) => {\r\n let apiPath = apiUpdateLineItem();\r\n return post(apiPath, 'PATCH', JSON.stringify(LineItem)).then(data => data);\r\n}\r\n\r\nexport const AddDetailItemToOrder = async (DetailItem) => {\r\n let apiPath = apiAddServicesDetailItem();\r\n\r\n return await post(apiPath, 'POST', JSON.stringify(DetailItem)).then(data => data);\r\n}\r\n\r\nexport const UpdateDetailItemInOrder = async (DetailItem) => {\r\n let apiPath = apiUpdateDetailItem();\r\n let body = {\r\n\r\n };\r\n return await post(apiPath, 'PATCH', JSON.stringify(body)).then(data => data);\r\n}\r\n\r\nexport const RemoveTrunkGroupConfigFromOrder = async(OrderId, LocationId, LineItemId, IPTrunkConfigId) => {\r\n let body = {\r\n OrderId: OrderId,\r\n LocationId: LocationId,\r\n LineItemId: LineItemId,\r\n IPTrunkConfigId: IPTrunkConfigId\r\n };\r\n let apiPath = apiDiscardTrunkGroupConfig();\r\n return await post(apiPath, 'PATCH', JSON.stringify(body)).then(data => data);\r\n}\r\n\r\nexport const RemoveDetailItemFromOrder = async (OrderId, LocationId, LineItemId, DetailId) => {\r\n let body = {\r\n OrderId: OrderId,\r\n LocationId: LocationId,\r\n LineItemId: LineItemId,\r\n DetailId: DetailId\r\n };\r\n let apiPath = apiDiscardItemDetail();\r\n return await post(apiPath, 'PATCH', JSON.stringify(body)).then(data => data);\r\n}\r\n\r\nexport const ItemValidations = async (OrderId, LocationId) => {\r\n let LineItemErrors = [];\r\n let DetailItemValidations = [];\r\n let TrunkGroupValidations = [];\r\n let [OrderValidationErrors] = await GetItemValidations(OrderId, LocationId);\r\n \r\n if (OrderValidationErrors && OrderValidationErrors.length > 0) {\r\n LineItemErrors = OrderValidationErrors.filter(function (o) { return o.ErrorSource === \"LINE_ITEM\" });\r\n \r\n DetailItemValidations = OrderValidationErrors.filter(function (o) { return o.ErrorSource == \"ITEM_DETAIL\" });\r\n // if (DetailItemValidations) {\r\n // DetailItemValidations.map((div, idx) => {\r\n // LineItemErrors.push(div);\r\n // });\r\n // }\r\n\r\n TrunkGroupValidations = OrderValidationErrors.filter(function(o) { return o.ErrorSource === 'IPTRUNK_CONFIG'});\r\n // if (TrunkGroupValidations) {\r\n // DetailItemValidations.map((tgv, idx) => {\r\n // LineItemErrors.push(tgv);\r\n // });\r\n // }\r\n\r\n }\r\n return [DetailItemValidations, LineItemErrors, TrunkGroupValidations];\r\n}\r\n\r\nexport const LoadItem = (li, PartNumber, PartDescription, CurrentLocation, LocationName, MPOLocationId, TerminatingNumbersList\r\n , DefaultRateCenterOptions, RCStateOptions, DefaultRCState, DefaultRCName, CatalogItem, IsReadOnly = false) => {\r\n let NewItem = {\r\n LineItemId: li.LineItemId,\r\n OrderId: li.OrderId,\r\n LocationId: CurrentLocation,\r\n MPOLocationId: MPOLocationId,\r\n CatalogItemId: li.CatalogItemId,\r\n MRCAdjustedPrice: li.MRCAdjustedPrice,\r\n MRCDiscountPercent: li.MRCDiscountPercent,\r\n NRCAdjustedPrice: li.NRCAdjustedPrice,\r\n NRCDiscountPercent: li.NRCDiscountPercent,\r\n Quantity: li.NewCount === 0 ? 1 : li.NewCount,\r\n PartDescription: PartDescription,\r\n PartNum: PartNumber,\r\n Location: LocationName,\r\n configurationDetails: [],\r\n TerminatingNumbersList: TerminatingNumbersList,\r\n //InventoryTNList: InventoryTNList,\r\n DefaultRateCenterOptions: DefaultRateCenterOptions,\r\n RCStateOptions: RCStateOptions,\r\n DefaultRCState: !CatalogItem || (CatalogItem.CatalogTicker !== 'MTRTADNTFA' && CatalogItem.CatalogTicker !== 'MTRTIPPTFA') ? DefaultRCState : 'US',\r\n DefaultRCName: !CatalogItem || (CatalogItem.CatalogTicker !== 'MTRTADNTFA' && CatalogItem.CatalogTicker !== 'MTRTIPPTFA') ? DefaultRCName : 'Toll Free',\r\n isConfigured: false, //should be true by this page\r\n ReadOnly: IsReadOnly,\r\n CatalogTicker: CatalogItem ? CatalogItem.CatalogTicker : '',\r\n ErrorMessage: li.ErrorMessage\r\n };\r\n return NewItem;\r\n}\r\n//TODO: TrunkGroup Records\r\nexport const MapConfigDetails = (newCount, configDetailsArray, OrderItem, DetailId, DBConfigurationDetails, DBTrunkGroupConfigs = null, TrunkGroupList = null, AddressItems = null, ValidateTN = true) => {\r\n let newArray = configDetailsArray ? configDetailsArray.slice() : [];\r\n let iCount = 1;\r\n if (DBConfigurationDetails && DBConfigurationDetails.length > 0) {\r\n\r\n DBConfigurationDetails.map((itm, idx) => {\r\n //coming from the backend save\r\n \r\n let trunkItem = DBTrunkGroupConfigs ? DBTrunkGroupConfigs.filter(resp => resp.DetailId === itm.DetailId) : null;\r\n let trunkLabel = '';\r\n if (trunkItem)\r\n trunkItem = trunkItem[0];\r\n\r\n if (itm.IPTrunkGroupCustomerProductId && parseInt(itm.IPTrunkGroupCustomerProductId) > 0) {\r\n trunkLabel = TrunkGroupList.filter(resp => resp.CustomerProductId === parseInt(itm.IPTrunkGroupCustomerProductId))[0].LineDescription\r\n } else if (itm.ParentDetailId && parseInt(itm.ParentDetailId) > 0 && TrunkGroupList.filter(resp => resp.DetailId === parseInt(itm.ParnetDetailId)).length > 0)\r\n trunkLabel = TrunkGroupList.filter(resp => resp.DetailId === parseInt(itm.ParentDetailId))[0].LineDescription\r\n\r\n let newEntry = {\r\n ItemNumber: configDetailsArray && configDetailsArray.length > 0 ? configDetailsArray[idx].ItemNumber : iCount,\r\n LineItemId: OrderItem.LineItemId,\r\n DetailId: itm.DetailId && itm.DetailId > 0 ? itm.DetailId : DetailId,\r\n RCState: OrderItem.CatalogTicker !== \"MTRTADNTFA\" && OrderItem.CatalogTicker !== 'MTRTIPPTFA' ? itm.RateCenterState : 'US',\r\n RCName: OrderItem.CatalogTicker !== \"MTRTADNTFA\" && OrderItem.CatalogTicker !== 'MTRTIPPTFA' ? itm.RateCenterName : 'Toll Free',\r\n LineFirstName: itm.LineFirstName,\r\n LineLastName: itm.LineLastName,\r\n CNAM: itm.CNAM,\r\n Extension: itm.Extension,\r\n ListingType: itm.ListingType,\r\n ListingName: itm.ListingName,\r\n OmitAddress: itm.OmitAddress,\r\n LineEmail: itm.LineEmail,\r\n TerminatingNumber: itm.TerminatingNumber,\r\n TerminatingNumbersList: OrderItem.TerminatingNumbersList,//need to check to make sure the item is in the list\r\n InventoryTN: itm.InventoryTN ? itm.InventoryTN : itm.ServiceNumber,\r\n //InventoryTNList: OrderItem.InventoryTNList,//need to check to make sure the item selected is in the list\r\n AccessCode: itm.AccessCode,\r\n IPTrunkGroupID: OrderItem.PartNum === 'IP100' ? (trunkItem && trunkItem.IPTrunkGroupID ? trunkItem.IPTrunkGroupID : '') : '',\r\n IPTrunkConfigId: trunkItem ? (trunkItem.IPTrunkConfigId || 0) : 0,\r\n TrunkId: (itm.ParentDetailId || itm.IPTrunkGroupCustomerProductId || 0),\r\n IPTrunkGroupCustomerProductId: (itm.IPTrunkGroupCustomerProductId || 0),\r\n ParentDetailId: (itm.ParentDetailId || 0),\r\n IPAddress1: trunkItem ? (trunkItem.IPAddress1 || '') : '',\r\n IPAddress2: trunkItem ? (trunkItem.IPAddress2 || '') : '',\r\n IPAddress3: trunkItem ? (trunkItem.IPAddress3 || '') : '',\r\n IPAddress4: trunkItem ? (trunkItem.IPAddress4 || '') : '',\r\n IPAddress5: trunkItem ? (trunkItem.IPAddress5 || '') : '',\r\n IPAddress6: trunkItem ? (trunkItem.IPAddress6 || '') : '',\r\n IPAddress7: trunkItem ? (trunkItem.IPAddress7 || '') : '',\r\n IPAddress8: trunkItem ? (trunkItem.IPAddress8 || '') : '',\r\n IPAddress9: trunkItem ? (trunkItem.IPAddress9 || '') : '',\r\n IPAddress10: trunkItem ? (trunkItem.IPAddress10 || '') : '',\r\n IPAddress11: trunkItem ? (trunkItem.IPAddress11 || '') : '',\r\n IPAddress12: trunkItem ? (trunkItem.IPAddress12 || '') : '',\r\n TrunkDescription: trunkItem ? (trunkItem.Description || '') : '',\r\n AssociatedTrunkDescription: trunkLabel,\r\n StartDate: trunkItem ? (trunkItem.StartDate || '') : '',\r\n CNAMDelivery: trunkItem ? (trunkItem.CNAMDelivery || false) : false,\r\n AllowInternational: trunkItem ? (trunkItem.AllowInternational || false) : false,\r\n TechPrefix: trunkItem ? (trunkItem.TechPrefix || '') : '',\r\n GroupPolicy: trunkItem ? (trunkItem.GroupPolicy || '') : '',\r\n ServiceStatus: trunkItem ? (trunkItem.ServiceStatus || '') : '',\r\n RCStateOptions: OrderItem.RCStateOptions && OrderItem.CatalogTicker !== \"MTRTADNTFA\" && OrderItem.CatalogTicker !== 'MTRTIPPTFA' ? OrderItem.RCStateOptions : OrderItem.CatalogTicker === 'MTRTADNTFA' || OrderItem.CatalogTicker === 'MTRTIPPTFA' ? getTollFreeStateOption() : [],\r\n RateCenterOptions: OrderItem.RateCenterOptions && OrderItem.CatalogTicker !== \"MTRTADNTFA\" && OrderItem.CatalogTicker !== 'MTRTIPPTFA' ? OrderItem.RateCenterOptions : OrderItem.CatalogTicker === 'MTRTADNTFA' || OrderItem.CatalogTicker === 'MTRTIPPTFA' ? getTollFreeCenterOption() : [],\r\n ErrorMessage: itm.ErrorMessage ? itm.ErrorMessage : '',\r\n Has911: itm.Has911 && itm.Has911 === true ? true : false,\r\n address: GetE911AddressObject(itm, AddressItems, ValidateTN),\r\n Description: itm.Description,\r\n Temp911AddressId: itm.Temp911AddressId\r\n // HasChanges: false\r\n }\r\n if (newEntry.RCState === OrderItem.DefaultRCState && OrderItem.CatalogTicker !== \"MTRTADNTFA\" && OrderItem.CatalogTicker !== 'MTRTIPPTFA') {\r\n newEntry.RateCenterOptions = OrderItem.DefaultRateCenterOptions;\r\n } //no idea what to do if not default state? \r\n if (newEntry.TerminatingNumbersList.indexOf(newEntry.TerminatingNumber) === -1) {\r\n newEntry.TerminatingNumbersList.unshift(newEntry.TerminatingNumber);\r\n }\r\n // if (newEntry.InventoryTNList.indexOf(newEntry.InventoryTN) === -1) {\r\n // newEntry.InventoryTNList.unshift(newEntry.InventoryTN);\r\n // }\r\n\r\n newArray.push(newEntry);\r\n iCount++;\r\n });\r\n }\r\n if (configDetailsArray) {\r\n while (newArray.length < newCount) {\r\n \r\n //let IPTrunkGroupID = 'New Trunk Group ' + newArray.length;\r\n\r\n let NewConfigItem = {\r\n ItemNumber: newArray.length + 1,\r\n LineItemId: OrderItem.LineItemId,\r\n DetailId: DetailId ? DetailId : 0,\r\n RCState: OrderItem.CatalogTicker === \"MTRTADNTFA\" || OrderItem.CatalogTicker === 'MTRTIPPTFA' ? \"US\" : OrderItem.DefaultRCState,\r\n RCName: OrderItem.CatalogTicker === \"MTRTADNTFA\" || OrderItem.CatalogTicker === 'MTRTIPPTFA' ? \"Toll Free\" : OrderItem.DefaultRCName,\r\n LineFirstName: \"\",\r\n LineLastName: \"\",\r\n CatalogItemId: OrderItem.CatalogItemId,\r\n CNAM: '',\r\n Extension: '',\r\n ListingType: '4',\r\n ListingName: '',\r\n OmitAddress: 0,\r\n TerminatingNumber: '',\r\n TerminatingNumbersList: OrderItem.TerminatingNumbersList,//need to check to make sure the item is in the list\r\n InventoryTN: '',\r\n //InventoryTNList: OrderItem.InventoryTNList,//need to check to make sure the item selected is in the list\r\n AccessCode: '',\r\n IPTrunkGroupID: '',\r\n IPTrunkConfigId: '',\r\n TrunkId: 0,\r\n IPTrunkGroupCustomerProductId: 0,\r\n ParentDetailId: 0,\r\n IPAddress1: '',\r\n IPAddress2: '',\r\n IPAddress3: '',\r\n IPAddress4: '',\r\n IPAddress5: '',\r\n IPAddress6: '',\r\n IPAddress7: '',\r\n IPAddress8: '',\r\n IPAddress9: '',\r\n IPAddress10: '',\r\n IPAddress11: '',\r\n IPAddress12: '',\r\n TrunkDescription: '',\r\n StartDate: '',\r\n CNAMDelivery: false,\r\n AllowInternational: false,\r\n TechPrefix: '',\r\n GroupPolicy: OrderItem.PartNum === 'IP100' ? 'round_robin' : '',\r\n ServiceStatus: OrderItem.PartNum === 'IP100' ? 'inservice' : '',\r\n RCStateOptions: OrderItem.RCStateOptions && OrderItem.CatalogTicker !== \"MTRTADNTFA\" && OrderItem.CatalogTicker !== 'MTRTIPPTFA' ? OrderItem.RCStateOptions : OrderItem.CatalogTicker === 'MTRTADNTFA' || OrderItem.CatalogTicker === 'MTRTIPPTFA' ? getTollFreeStateOption() : [],\r\n RateCenterOptions: OrderItem.DefaultRateCenterOptions && OrderItem.CatalogTicker !== \"MTRTADNTFA\" && OrderItem.CatalogTicker !== 'MTRTIPPTFA' ? OrderItem.DefaultRateCenterOptions : OrderItem.CatalogTicker == 'MTRTADNTFA' || OrderItem.CatalogTicker === 'MTRTIPPTFA' ? getTollFreeCenterOption() : [],\r\n ErrorMessage: DetailId && DetailId > 0 ? '' : 'Entry incomplete',\r\n address: GetBlankE911AddressObject(ValidateTN),\r\n Temp911AddressId: 0\r\n };\r\n\r\n newArray.push(NewConfigItem);\r\n }\r\n }\r\n return newArray;\r\n}\r\nexport const GetBlankE911AddressObject = (ValidateTN = true) => {\r\n return {\r\n AddressId: 0,\r\n IsActive: false,\r\n Building: helper.ValueOfBuildingTag,\r\n StreetNumber: '',\r\n Street2: '',\r\n Street1: '',\r\n StreetSuffix: '',\r\n PostDirectional: '',\r\n PreDirectional: '',\r\n StreetName: '',\r\n ZipCode: '',\r\n State: '',\r\n City: '',\r\n BuildingValue: '',\r\n FloorValue: '',\r\n Unit: '',\r\n UnitValue: '',\r\n PhoneNumber: '',\r\n ValidateTN: ValidateTN,\r\n ErrorMessage: ''\r\n }\r\n}\r\nconst GetE911AddressObject = (DetailItem, AddressItems) => {\r\n let addressItem = AddressItems.filter(resp => resp.AddressId === DetailItem.Temp911AddressId);\r\n if (addressItem && addressItem.length > 0) {\r\n return addressItem[0];\r\n } else return GetBlankE911AddressObject();\r\n}\r\n\r\nexport const ErrorMessageDisplayItem = (msg) => {\r\n return (\r\n
  • {helper.StringReplaceAll(msg, '
    ', '', false)}
  • \r\n );\r\n}\r\n\r\nexport const rcStateOption = (state, index) => {\r\n return (\r\n \r\n )\r\n}\r\nexport const rcNameOption = (rc) => {\r\n if (rc.InventoryAvailable)\r\n return (\r\n \r\n )\r\n else\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst getTollFreeStateOption = () => {\r\n let returnObj = [];\r\n let tollFreeItem = {\r\n Abbreviation: 'US',\r\n NAME: 'US'\r\n }\r\n returnObj.push(tollFreeItem);\r\n let rcStateOptions = returnObj.map((state, index) => {\r\n return (rcStateOption(state, index));\r\n });\r\n return rcStateOptions;\r\n}\r\n\r\nconst getTollFreeCenterOption = () => {\r\n let initialObj = [];\r\n let rcCenterOptions = [];\r\n let tollFreeItem = {\r\n RCNameAbbr: 'Toll Free',\r\n InventoryAvailable: null\r\n }\r\n initialObj.push(tollFreeItem);\r\n initialObj.map((rc, index) => {\r\n rcCenterOptions.push(rcNameOption(rc));\r\n });\r\n return rcCenterOptions;\r\n}\r\n\r\nexport const getDefaultColumnConfig = () => {\r\n return {\r\n ShowTNFields: false,\r\n ShowTN: false,\r\n ShowCNAM: false,\r\n ShowLineFirst: false,\r\n ShowLineLast: false,\r\n ShowExtension: false,\r\n ExtensionRequired: false,\r\n ShowListingName: false,\r\n ShowListingType: false,\r\n ShowOmitAddress: false,\r\n ShowYPH: false,\r\n ShowDeviceManufacturer: false,\r\n ShowDeviceModel: false,\r\n ShowDeviceMAC: false,\r\n ShowTemporaryNumber: false,\r\n ShowLineEmail: false,\r\n ShowAccessCode: false,\r\n ShowRCFields: false,\r\n ShowTerminatingNumber: false,\r\n IsRequiredStandAlone: false,\r\n ShowTrunkGroupPicker: false,\r\n ShowIPAddresses: false,\r\n ShowTrunkDescription: false,\r\n ShowStartDate: false,\r\n ShowCNAMDelivery: false,\r\n ShowInternational: false,\r\n ShowTechPrefix: false,\r\n ShowGroupPolicy: false,\r\n ShowServiceStatus: false,\r\n ShowE911: false,\r\n ShowDescription: false,\r\n ConfigType: ''\r\n /* int show_trm_num_textbox \r\n int show_bwks_status_nug \r\n int show_dadl_status_nug \r\n Nullable show_e911_status_nug \r\n Nullable show_lnp_status_nug \r\n Nullable show_did_status_nug \r\n Nullable show_bill_status_nug \r\n Nullable show_cnam_status_nug \r\n int is_incontact \r\n int is_voice_stand_alone \r\n int required_standalone \r\n string portnew \r\n string config_type \r\n bool is_active \r\n bool use_for_metered \r\n bool use_for_unlimited \r\n bool use_for_trunking \r\n int has_tn \r\n int has_911 \r\n int term_tn_qualifies */\r\n }\r\n}\r\n\r\nexport const getColumnConfigFromDatabase = (prodProps, usoc) => {\r\n let columnConfig = {\r\n ShowTNFields: !!+(prodProps.has_tn),\r\n ShowTN: !!+(prodProps.show_tn_col),\r\n ShowCNAM: !!+(prodProps.show_cnam_col),\r\n ShowLineFirst: !!+(prodProps.show_line_name_col),\r\n ShowLineLast: !!+(prodProps.show_line_name_col),\r\n ShowExtension: !!+(prodProps.show_extn_col),\r\n ExtensionRequired: !!+(prodProps.ext_required),\r\n ShowListingName: !!+(prodProps.show_list_name_col),\r\n ShowListingType: !!+(prodProps.show_list_type_col),\r\n ShowOmitAddress: !!+(prodProps.show_omt_addr_col),\r\n ShowYPH: !!+(prodProps.show_yph_col),\r\n ShowDeviceManufacturer: !!+(prodProps.show_dev_manufacturer_col),\r\n ShowDeviceModel: !!+(prodProps.show_dev_model_col),\r\n ShowDeviceMAC: !!+(prodProps.show_dev_mac_col),\r\n ShowTemporaryNumber: !!+(prodProps.show_temp_col),\r\n ShowLineEmail: !!+(prodProps.show_line_email_col),\r\n ShowAccessCode: !!+(prodProps.show_access_code),\r\n ShowRCFields: !!+(prodProps.show_rc_col) && !!+(prodProps.show_tn_col),\r\n ShowTerminatingNumber: !!+(prodProps.show_trm_num_col),\r\n ShowTrunkGroupPicker: !!+(prodProps.trg_associate),\r\n ShowTrunkGroupPicker: !!+(prodProps.trg_asscoiate),\r\n ShowIPAddresses: !!+(prodProps.show_trg_ipaddr_col),\r\n ShowTrunkDescription: !!+(prodProps.show_trg_description_col),\r\n ShowStartDate: !!+(prodProps.show_trg_startdate_col),\r\n ShowCNAMDelivery: !!+(prodProps.show_trg_cnamdel_col),\r\n ShowInternational: !!+(prodProps.show_trg_intl_col),\r\n ShowTechPrefix: !!+(prodProps.show_trg_techprefix_col),\r\n ShowGroupPolicy: !!+(prodProps.show_trg_grppol_col),\r\n ShowServiceStatus: !!+(prodProps.show_trg_status_col),\r\n Show911: !!+(prodProps.has_911) && usoc === 'IP201',\r\n ShowDescription: !!+(prodProps.show_detail_description_col),\r\n ConfigType: prodProps.config_type,\r\n /* int show_trm_num_textbox \r\n int show_bwks_status_nug \r\n int show_dadl_status_nug \r\n Nullable show_e911_status_nug \r\n Nullable show_lnp_status_nug \r\n Nullable show_did_status_nug \r\n Nullable show_bill_status_nug \r\n Nullable show_cnam_status_nug \r\n int is_incontact \r\n int is_voice_stand_alone \r\n int required_standalone \r\n string portnew \r\n string config_type \r\n bool is_active \r\n bool use_for_metered \r\n bool use_for_unlimited \r\n bool use_for_trunking \r\n int has_tn \r\n int has_911 \r\n int term_tn_qualifies */\r\n };\r\n let className = 'product-configuration';\r\n if (columnConfig.ConfigType === 'NOCONFIG')\r\n className += ' product-configuration-xsmall';\r\n else\r\n {\r\n var iCount = 0;\r\n for (var name in columnConfig)\r\n {\r\n if (name === 'ConfigType')\r\n iCount = iCount;\r\n else if (name === 'ShowRCFields' && columnConfig[name] === true)\r\n iCount = iCount + 2;\r\n else if (columnConfig[name] === true)\r\n iCount = iCount + 1;\r\n }\r\n if (iCount < 3)\r\n className += ' product-configuration-xsmall';\r\n else if (iCount < 6)\r\n className += ' product-configuration-small';\r\n else if (iCount < 8)\r\n className += ' product-configuration-medium';\r\n else\r\n className += ' product-configuration-large';\r\n }\r\n\r\n return [columnConfig, className];\r\n\r\n}\r\n\r\nexport const ReviewAndSaveNoConfigItem = async (OrderId, MPOLocationId, PartNum, LineItemId) => {\r\n //need to check product properties to see if detail item is to be saved\r\n let DetailId = 0;\r\n let ColumnConfig = getDefaultColumnConfig();\r\n let className = '';\r\n let apiPropertiesPath = apiGetProductPropertiesWithParams(PartNum);\r\n let prodProps = await fetchData(apiPropertiesPath).then(pp => pp).catch(reason => {\r\n console.error(reason);\r\n });\r\n\r\n [ColumnConfig, className] = getColumnConfigFromDatabase(prodProps, PartNum);\r\n\r\n if (prodProps && prodProps.config_type === 'NOCONFIG') {\r\n let apiPathAddDetailItem = apiAddServicesDetailItem();\r\n let newReqBody = {\r\n OrderId: parseInt(OrderId),\r\n LocationId: MPOLocationId,\r\n LineItemId: LineItemId,\r\n DetailId: 0,\r\n ServiceNumber: '',\r\n Extension: '',\r\n LineFirstName: '',\r\n LineLastName: '',\r\n ListingType: '4',\r\n ListingName: '',\r\n OmitAddress: '',\r\n CNAM: '',\r\n TerminatingNumber: '',\r\n LineEmail: '',\r\n RateCenterState: '',\r\n RateCenterName: '',\r\n AccessCode: '',\r\n IPTrunkGroupID: 0\r\n }\r\n let detailResponse = await post(apiPathAddDetailItem, 'POST', JSON.stringify(newReqBody)).then(data => data);\r\n if (detailResponse.ok) {\r\n let detailBody = JSON.parse(detailResponse.message);\r\n DetailId = detailBody.DetailId;\r\n } else {\r\n throw (detailResponse.message);\r\n }\r\n }\r\n return [DetailId, ColumnConfig, className];\r\n}\r\n\r\nexport const configuredCheck = (newConfigDetails, LineItem, DetailItemValidations, LineItemErrors, TrunkItemValidations) => {\r\n let errors = [];\r\n let bCheck = true;\r\n let UnsavedItems = newConfigDetails.filter(res => res.DetailId === 0);\r\n if (UnsavedItems && UnsavedItems.length > 0) {\r\n return false;\r\n }\r\n if ((DetailItemValidations && DetailItemValidations.length > 0) || (LineItem.PartNum === 'IP100' && TrunkItemValidations && TrunkItemValidations.length > 0)) {\r\n bCheck = newConfigDetails.map((cd, idx) => {\r\n errors = DetailItemValidations.filter(resp => resp.SourceId === cd.DetailId);\r\n if (errors && errors.length > 0)\r\n return false;\r\n \r\n errors = TrunkItemValidations.filter(resp => resp.SourceId === cd.IPTrunkConfigId);\r\n if (errors && errors.length > 0)\r\n return false;\r\n \r\n });\r\n }\r\n if (bCheck.length && bCheck.length > 0 && bCheck.filter(resp => resp === false).length > 0)\r\n return false;\r\n\r\n if(LineItem.ErrorMessage !== '')\r\n return false;\r\n\r\n if (LineItemErrors && LineItemErrors.length > 0) {\r\n errors = LineItemErrors.filter(resp => resp.SourceId === LineItem.LineItemId);\r\n if (errors && errors.length > 0)\r\n return false;\r\n }\r\n //if there are E911 address validation errors we will not return 'configured'\r\n let AddressValidations = newConfigDetails.filter(res => parseInt(res.Temp911AddressId) !== 0 && res.address !== GetBlankE911AddressObject() && res.address.ErrorMessage !== '')\r\n if (AddressValidations && AddressValidations.length > 0)\r\n return false;\r\n\r\n return true;\r\n}\r\n\r\nexport const ReviewPageUrl = (oid, vs) => {\r\n let uri = '/macd_review/' + oid;\r\n if (vs)\r\n uri += '/' + vs;\r\n return uri;\r\n}\r\nexport const ConfirmPageUrl = (oid) => {\r\n return '/macd_confirm/' + oid;\r\n}\r\nexport const AddEditPage = (oid = null) => {\r\n let uri = '/macd_add';\r\n if (oid)\r\n uri += '/' + oid;\r\n return uri;\r\n}\r\n\r\nexport const UserAddOn = (oid = null) => {\r\n let uri = '/macd_user';\r\n if (oid) uri += '/' + oid;\r\n return uri;\r\n}\r\n\r\nexport const AllSearch = () => {\r\n return '/macd_all';\r\n}\r\n\r\nexport const DisplayLocationRequiredMsg = (location) => {\r\n if (location === 'All Locations') {\r\n return (\r\n Please Select a Location Before Continuing\r\n )\r\n } else return null;\r\n\r\n}\r\nexport const GetDBBlockValue = (Directory, Operator, International, DomesticLD) => {\r\n if (Directory === true && Operator === true && International === true && DomesticLD === true)\r\n return 'ALL'\r\n else if (DomesticLD === true && Directory === false && Operator === false && International === false)\r\n return 'DomesticLD'\r\n else {\r\n let returnString = '';\r\n if (Directory === true) {\r\n returnString = '411Block';\r\n }\r\n if (DomesticLD === true) {\r\n returnString += \"_DLD\"\r\n }\r\n if (International === true) {\r\n returnString += returnString.length > 0 ? '_INTLD' : 'INTLD';\r\n }\r\n if (Operator === true) {\r\n returnString += returnString.length > 0 ? \"_OS\" : \"OS\"\r\n }\r\n return returnString;\r\n }\r\n}\r\nexport const GetUIBlockObject = (BlockString) => {\r\n\r\n let returnObj = {\r\n Directory: false,\r\n Operator: false,\r\n International: false,\r\n DomesticLD: false\r\n };\r\n if (!BlockString || BlockString === '')\r\n return returnObj;\r\n\r\n let splitArray = BlockString.split('_');\r\n if (splitArray.length === 0) {\r\n let val = splitArray[0];\r\n\r\n if (val.length === 0)\r\n return returnObj\r\n else if (val === \"ALL\") {\r\n return {\r\n Directory: false,\r\n Operator: false,\r\n International: false,\r\n DomesticLD: false\r\n }\r\n }\r\n else if (val === \"DomesticLD\")\r\n return {\r\n Directory: false,\r\n Operator: false,\r\n International: false,\r\n DomesticLD: false\r\n }\r\n }\r\n else {\r\n splitArray.map((itm, idx) => {\r\n if (itm === \"411Block\")\r\n returnObj.Directory = true;\r\n else if (itm === \"DLD\" || itm === \"DomesticLD\")\r\n returnObj.DomesticLD = true;\r\n else if (itm === \"INTLD\")\r\n returnObj.International = true;\r\n else if (itm !== 'ALL')\r\n returnObj.Operator = true;\r\n });\r\n return returnObj;\r\n }\r\n}\r\nexport const ConvertListingTypeNumToText = (numberString) => {\r\n switch (numberString) {\r\n case \"1\": return \"LISTED\";\r\n case \"2\": return \"NONLIST\";\r\n case \"3\": return \"NONPUB\";\r\n case \"4\": return \"NOSUBMIT\";\r\n default: return \"\";\r\n }\r\n}\r\n\r\nexport const MACDTYPES = {\r\n AddServices: \"ADD_SERVICES\",\r\n AssignAddOn: \"ASSIGN_USER_ADDON\",\r\n UnassignAddOn: \"UNASSIGN_USER_ADDON\",\r\n ChangeSeatType: \"CHNG_SEAT_TYPE\",\r\n ChangeLineType: \"CHNG_LINE_TYPE\",\r\n ChangeListing: \"CHNG_LISTING\",\r\n ChangeCNAM: \"CHNG_CNAM\",\r\n ChangeExtension: \"CHNG_EXT\",\r\n ChangeBlock: \"CHNG_BLOCK_CHANGE\",\r\n ChangeVirtualTerminatingNumber: \"CHNG_VIRT_TERM_NUM\",\r\n EditAddOrder: \"EDIT_ADD_ORDER\",\r\n ChangeIPTrunkCpCount: 'CHNG_IPTRUNK_CP_CNT',\r\n}\r\n\r\nexport const MACDStatus = {\r\n Open: \"OPEN\",\r\n Processing: \"PROCESSING\",\r\n Submitted: \"SUBMITTED\",\r\n Closed: \"CLOSED\",\r\n Deleted: \"DISCARDED\",\r\n Clarification: \"CLARIFICATION\",\r\n OnHold: \"ON_HOLD\",\r\n Error: \"ERROR\"\r\n}\r\n\r\nexport const CheckPermissionsForLinks = (macdType) => {\r\n let perms = JSON.parse(sessionStorage.MacdPerms);\r\n switch (macdType) {\r\n case \"ADD_SERVICES\":\r\n return perms.addServices;\r\n case \"ASSIGN_USER_ADDON\":\r\n return perms.assignUserAddons;\r\n case \"UNASSIGN_USER_ADDON\":\r\n return perms.unassignUserAddons;\r\n case \"CHNG_SEAT_TYPE\":\r\n return perms.changeSeatType;\r\n case \"CHNG_LINE_TYPE\":\r\n return perms.changeLineType;\r\n case \"CHNG_LISTING\":\r\n return perms.changeListing;\r\n case \"CHNG_CNAM\":\r\n return perms.changeCNAM;\r\n case \"CHNG_EXT\":\r\n return perms.changeExtension;\r\n case \"CHNG_BLOCK_CHANGE\":\r\n return perms.changeBlock;\r\n case \"CHNG_VIRT_TERM_NUM\":\r\n return perms.changeVnTerminatingNumber;\r\n case 'CHNG_IPTRUNK_CP_CNT':\r\n return perms.ipTrunkCallPathBurst;\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\nexport const MACDTABS = {\r\n AddServices: \"Add_Services\",\r\n AssignAddOn: \"ASSIGN_USER_ADDON\",\r\n UnassignAddOn: \"UNASSIGN_USER_ADDON\",\r\n AddOns: 'User_Addons',\r\n AllRequests: 'All_Service_Changes',\r\n ChangeSeatType: \"seat\",\r\n ChangeLineType: \"line\",\r\n ChangeListing: \"listing\",\r\n ChangeCNAM: \"cnam\",\r\n ChangeExtension: \"extension\",\r\n ChangeBlock: \"block\",\r\n ChangeVirtualTerminatingNumber: \"virtual\",\r\n EditAddOrder: \"EDIT_ADD_ORDER\",\r\n ChangeIPTrunkCpCount: 'ipTrunk',\r\n OpenRequests: 'openreq'\r\n}\r\n\r\nexport const QuantityValidationRules = \r\n [\r\n { PartNum: 'FX417', DependencyList: ['FX418', 'FX423', 'FX424', 'FX425', 'FX426', 'FX427' ] },\r\n { PartNum: 'FX418', DependencyList: ['FX417', 'FX423', 'FX424', 'FX425', 'FX426', 'FX427' ] },\r\n // { PartNum: 'FX419', DependencyList: ['FX428', 'FX429', 'FX430', 'FX431', 'FX432' ] },\r\n { PartNum: 'FX423', DependencyList: ['FX417', 'FX418', 'FX424', 'FX425', 'FX426', 'FX427' ] },\r\n { PartNum: 'FX424', DependencyList: ['FX417', 'FX418', 'FX423', 'FX425', 'FX426', 'FX427' ] },\r\n { PartNum: 'FX425', DependencyList: ['FX417', 'FX418', 'FX423', 'FX424', 'FX426', 'FX427' ] },\r\n { PartNum: 'FX426', DependencyList: ['FX417', 'FX418', 'FX423', 'FX424', 'FX425', 'FX427' ] },\r\n { PartNum: 'FX427', DependencyList: ['FX417', 'FX418', 'FX423', 'FX424', 'FX425', 'FX426' ] },\r\n { PartNum: 'FX428', DependencyList: ['FX419', 'FX429', 'FX430', 'FX431', 'FX432' ] },\r\n { PartNum: 'FX429', DependencyList: ['FX419', 'FX428', 'FX430', 'FX431', 'FX432' ] },\r\n { PartNum: 'FX430', DependencyList: ['FX419', 'FX428', 'FX429', 'FX431', 'FX432' ] },\r\n { PartNum: 'FX431', DependencyList: ['FX419', 'FX428', 'FX429', 'FX430', 'FX432' ] },\r\n { PartNum: 'FX432', DependencyList: ['FX419', 'FX428', 'FX429', 'FX430', 'FX431' ] }\r\n ]\r\n\r\n\r\nexport const getIPTrunkGroupOptions = (trunks) => {\r\n let trunkOption = (val, text) => ; \r\n let trunkOptions = trunks.map((record, idx) => { return trunkOption(record.ConcatId, record.LineDescription); }); \r\n return trunkOptions;\r\n}","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from './../../../components/spinners';\r\nimport { Modal } from 'react-bootstrap';\r\n\r\nconst MACDSaveStatus = (props) => {\r\n if (props.saving) {\r\n return (\r\n \r\n \r\n Reviewing MACD Order Submission...\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n } else if (props.error || props.statusMessage) {\r\n let statusClass = props.error ? ' error text-danger' : ' success text-success';\r\n statusClass = 'save-status' + statusClass;\r\n let okBtnClass = props.hideOkBtn ? 'hidden' : 'btn'\r\n return (\r\n \r\n \r\n MACD Order Submission\r\n \r\n \r\n
    \r\n {props.statusMessage}\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n } else return null\r\n}\r\n\r\nexport default MACDSaveStatus;","import React, { Component } from 'react';\nimport '@progress/kendo-ui';\nimport Popup from \"reactjs-popup\";\nimport * as helper from '../../../scripts/helper';\n\n\nclass ValidationMessagePopup extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n ValidationMessage: helper.StringReplaceAll(props.ValidationMessage, '
    ', '', false)\n }; \n }\n\n componentDidMount() {\n\n }\n\n componentWillReceiveProps(props) {\n if (helper.StringReplaceAll(props.ValidationMessage, '
    ', '', false) !== this.state.ValidationMessage)\n this.setState({ValidationMessage: helper.StringReplaceAll(props.ValidationMessage, '
    ', '', false)});\n }\n\n render() {\n const validationMessage = this.state.ValidationMessage;\n return (\n (\n \"\"\n )}\n position={this.props.position || 'bottom center'}\n closeOnDocumentClick\n contentStyle={{padding: '20px', border: 'unset', height: this.state.popupHeight + 'px', left: \"0\"}}\n >\n {validationMessage}\n \n )\n }\n\n}\n\nexport default ValidationMessagePopup;","import ValidationMessagePopup from '../components/validationMessagePopup';\r\nimport React, { Component } from 'react';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\n\r\nclass ValidationCell extends GridCell {\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n if (this.props.dataItem.ValidationMessage && this.props.dataItem.ValidationMessage !== '') {\r\n return (\r\n \r\n \r\n \r\n )\r\n } else return \r\n }\r\n }\r\n\r\n export default ValidationCell;","import React, { Component } from 'react';\r\nimport '@progress/kendo-ui';\r\nclass MacdSearch extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n }; \r\n }\r\n\r\n componentDidMount() {\r\n\r\n }\r\n\r\n SearchFunction = (e) => {\r\n this.props.SearchFunction(e);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n { this.SearchFunction(e) }} placeholder='Search Momentum Services...'\r\n style={{ 'verticalAlign': 'bottom', 'paddingTop': '10px', 'display': 'inline' }}\r\n />\r\n )\r\n }\r\n}\r\n\r\nexport default MacdSearch;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as helper from '../../../scripts/helper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport _ from 'lodash';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\n// import { ItemValidations } from '../../../scripts/macd_helper';\r\n// import { map } from '@progress/kendo-data-query/dist/npm/transducers';\r\nimport * as macdHelper from '../components/macd_helper';\r\nimport * as session from '../../../scripts/session';\r\nimport MACDSaveStatus from '../modals/orderResultModal';\r\nimport ValidationCell from '../components/validationCell';\r\nimport MACDSearch from '../components/macdSearch';\r\n\r\nclass BlockTab extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isCancelDialogOpen: false,\r\n MomentumAccountNumber: props.MomentumAccountNumber,\r\n LocationName: props.LocationName,\r\n gridHeight: props.GridHeight,\r\n loading: false,\r\n saving: false,\r\n error: false,\r\n BlockServices: [],\r\n Listings: [],\r\n OriginalListings: [],\r\n Sort: [{ field: \"ServiceNumber\", dir: \"asc\" }],\r\n ValidationErrorMessages: []\r\n };\r\n\r\n const updateBlock = this.updateBlock.bind(this);\r\n\r\n class BlockTypeCell extends GridCell {\r\n // constructor(props) {\r\n // super(props);\r\n // }\r\n render() {\r\n const productItem = this.props.dataItem;\r\n const blockDirectoryAssist = productItem.BlockCallDirectoryAssistance;\r\n const blockOperatorAssist = productItem.BlockOperatorAssistance;\r\n const blockInternational = productItem.BlockInternationalCalling;\r\n const blockLongDistance = productItem.BlockDomesticLongDistance;\r\n const disableField = session.IsWholesale();\r\n \r\n return (\r\n \r\n \r\n    \r\n \r\n    \r\n \r\n    \r\n \r\n \r\n )\r\n }\r\n }\r\n \r\n this.ValidationCell = ValidationCell;\r\n this.BlockTypeCell = BlockTypeCell;\r\n\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.MomentumAccountNumber !== '') {\r\n this.fetchListings();\r\n }\r\n \r\n }\r\n async componentWillReceiveProps(props) {\r\n if (props) {\r\n if (props.MomentumAccountNumber !== this.state.MomentumAccountNumber) {\r\n await this.setState({ MomentumAccountNumber: props.MomentumAccountNumber, LocationName: props.LocationName });\r\n this.fetchListings();\r\n }\r\n if (props.GridHeight && props.GridHeight !== this.state.gridHeight) \r\n this.setState({gridHeight: props.GridHeight});\r\n }\r\n }\r\n\r\n handleSaveSuccess = async () => {\r\n await this.setState({ loading: true, ValidationErrorMessages: [], statusMessage: 'Your order has been saved and submitted successfully.' });\r\n this.props.TabHasChanges(false);\r\n this.fetchListings();\r\n }\r\n\r\n showErrorAndResetModal = (msg, ValidationErrorMessages = []) => {\r\n this.setState({ error: true, statusMessage: msg, ValidationErrorMessages: ValidationErrorMessages });\r\n }\r\n\r\n closeSaveMessage = () => {\r\n let serviceListings = this.state.BlockServices.slice();\r\n let gridListings = this.state.Listings.slice();\r\n let validationErrors = this.state.ValidationErrorMessages.slice();\r\n validationErrors.map((itm, idx) => {\r\n let itmInListings = serviceListings.filter(resp => resp.CustomerProductId === itm.CustomerProductId);\r\n let indexOfListing = _.indexOf(serviceListings, itmInListings[0]);\r\n serviceListings[indexOfListing].ValidationMessage = itm.ValidationMessage;\r\n itmInListings = gridListings.filter(resp => resp.CustomerProductId === itm.CustomerProductId);\r\n indexOfListing = _.indexOf(gridListings, itmInListings[0]);\r\n gridListings[indexOfListing].ValidationMessage = itm.ValidationMessage;\r\n });\r\n this.setState({ error: false, statusMessage: '', Listings: gridListings, BlockServices: serviceListings });\r\n }\r\n\r\n CancelYesAction = async () => {\r\n //clear all editable fields\r\n await this.fetchListings();\r\n this.props.TabHasChanges(false);\r\n this.setState({ isCancelDialogOpen: false, ValidationErrorMessages: [] });\r\n\r\n }\r\n\r\n closeCancelDialog = () => {\r\n this.setState({ isCancelDialogOpen: false });\r\n }\r\n\r\n handleCancel = () => {\r\n //display confirmation message\r\n let changedItems = this.state.BlockServices.filter(res => res.HasChanges === true);\r\n if (!changedItems || changedItems.length === 0) return;\r\n this.setState({ isCancelDialogOpen: true });\r\n }\r\n\r\n handleSave = async () => {\r\n let changedItems = this.state.BlockServices.filter(res => res.HasChanges === true);\r\n if (!changedItems || changedItems.length === 0) return;\r\n await this.setState({ saving: true });\r\n let apiPath = macdHelper.apiSubmitBlockType();\r\n let originalListings = this.state.OriginalListings;\r\n\r\n let submittedItems = changedItems.map((itm, idx) => {\r\n let oldService = originalListings.filter(res => res.CustomerProductId === itm.CustomerProductId);\r\n oldService = oldService[0];\r\n return {\r\n OldService: oldService,\r\n BlockCallDirectoryAssistance: itm.BlockCallDirectoryAssistance,\r\n BlockOperatorAssistance: itm.BlockOperatorAssistance,\r\n BlockInternationalCalling: itm.BlockInternationalCalling,\r\n BlockDomesticLongDistance: itm.BlockDomesticLongDistance\r\n }\r\n });\r\n\r\n let reqBody = {\r\n LocationAccountNumber: this.state.MomentumAccountNumber,\r\n ServiceList: submittedItems\r\n };\r\n //console.log(reqBody);\r\n await apiCalls.post(apiPath, 'POST', JSON.stringify(reqBody)).then((res) => {\r\n let validationErrors = [];\r\n if (res.ok === true) {\r\n this.handleSaveSuccess();\r\n } else {\r\n let responseObject = JSON.parse(res.message);\r\n //console.log(responseObject);\r\n // RESPONSE ARRARY\r\n if (responseObject.length && responseObject.length > 0) {\r\n validationErrors = responseObject.map((itm, idx) => {\r\n if (itm.CustomerProductId && itm.CustomerProductId !== '')\r\n return {\r\n CustomerProductId: parseInt(itm.CustomerProductId),\r\n ValidationMessage: itm.ErrorMessage\r\n }\r\n else {\r\n throw [itm.ErrorMessage];\r\n }\r\n });\r\n } else {\r\n // RESPONSE OBJECT\r\n if (responseObject.MPOStatus && responseObject.MPOStatus.MPOErrorList && responseObject.MPOStatus.MPOErrorList.length > 0) {\r\n let ErrorList = responseObject.MPOStatus.MPOErrorList[0];\r\n let ErrorMessages = ErrorList.MPOResultText;\r\n validationErrors = ErrorMessages.map((itm, idx) => {\r\n if (itm.CustomerProductId && itm.CustomerProductId !== '')\r\n return {\r\n CustomerProductId: parseInt(itm.CustomerProductId),\r\n ValidationMessage: itm.ErrorMessage\r\n }\r\n else {\r\n throw [itm.ErrorMessage];\r\n }\r\n });\r\n }\r\n }\r\n if (validationErrors) {\r\n this.showErrorAndResetModal('Your order could not be completed due to entry errors indicated in the grid.', validationErrors);\r\n }\r\n }\r\n }).catch((msg) => {\r\n this.showErrorAndResetModal(msg);\r\n }).finally(() => {\r\n this.setState({ saving: false });\r\n });\r\n }\r\n\r\n fetchListings = async () => {\r\n await this.setState({ loading: true });\r\n let locationName = this.state.LocationName;\r\n let apiPath = macdHelper.apiGetBlockType(this.state.MomentumAccountNumber);\r\n let [responseData, unformattedResponse] = await apiCalls.fetchData(apiPath).then((data) => {\r\n if (data) {\r\n let formattedData = data.ServiceList.map((itm, idx) => {\r\n let newItm = {\r\n AddonCount: itm.AddonCount,\r\n Block: itm.Block,\r\n BlockCallDirectoryAssistance: itm.BlockCallDirectoryAssistance,\r\n BlockDomesticLongDistance: itm.BlockDomesticLongDistance,\r\n BlockInternationalCalling: itm.BlockInternationalCalling,\r\n BlockOperatorAssistance: itm.BlockOperatorAssistance,\r\n CustomerProductId: itm.CustomerProductId,\r\n CatalogItemId: itm.CatalogItemId,\r\n PartDescription: itm.PartDescription,\r\n PartNum: itm.PartNum,\r\n ServiceNumber: itm.ServiceNumber,\r\n Extension: itm.Extension,\r\n isExtensionOnly: itm.isExtensionOnly,\r\n Location: locationName,\r\n LineName: itm.LineName,\r\n LineFirstName: itm.LineFirstName,\r\n LineLastName: itm.LineLastName,\r\n HasChanges: false,\r\n ValidationMessage: '',\r\n };\r\n return newItm;\r\n });\r\n return [formattedData, data.ServiceList];\r\n } else {\r\n return [[], []];\r\n }\r\n });\r\n await this.setState({ Listings: responseData, BlockServices: responseData, OriginalListings: unformattedResponse, loading: false });\r\n }\r\n\r\n updateBlock = async (e, productItem, key) => {\r\n let selectedValue = e.target.checked;\r\n let blockServices = this.state.BlockServices;\r\n let gridListings = this.state.Listings;\r\n let originalItem = this.state.OriginalListings.filter(res => res.CustomerProductId === productItem.CustomerProductId)[0]; // non-mutated\r\n\r\n productItem[key] = selectedValue;\r\n if (\r\n productItem['BlockCallDirectoryAssistance'] !== originalItem['BlockCallDirectoryAssistance'] ||\r\n productItem['BlockOperatorAssistance'] !== originalItem['BlockOperatorAssistance'] ||\r\n productItem['BlockInternationalCalling'] !== originalItem['BlockInternationalCalling'] ||\r\n productItem['BlockDomesticLongDistance'] !== originalItem['BlockDomesticLongDistance']\r\n ) {\r\n productItem['HasChanges'] = true;\r\n } else {\r\n productItem['HasChanges'] = false;\r\n }\r\n\r\n // GRID ITEM\r\n let gridItm = gridListings.filter(itm => itm.CustomerProductId === productItem.CustomerProductId);\r\n let idx = _.indexOf(gridListings, gridItm);\r\n gridListings[idx] = productItem;\r\n // BLOCK SERVICES' ITEM\r\n let blockItm = blockServices.filter(itm => itm.CustomerProductId === productItem.CustomerProductId);\r\n let idx2 = _.indexOf(blockServices, blockItm);\r\n blockServices[idx2] = productItem;\r\n\r\n if (blockServices && blockServices.filter(res => res.HasChanges === true).length === 0) {\r\n this.props.TabHasChanges(false);\r\n } else {\r\n this.props.TabHasChanges(true);\r\n };\r\n await this.setState({ BlockServices: blockServices, Listings: gridListings });\r\n }\r\n\r\n gridContent = () => {\r\n //console.log(this.state.Listings);\r\n if (this.state.MomentumAccountNumber === '') {\r\n return macdHelper.locationSelectLabel(this.state.MomentumAccountNumber);\r\n }\r\n else if (this.state.loading) return \r\n else if(!this.state.loading && this.state.Listings.length === 0) return

    There are no applicable changes available for services at this location. Please review your search criteria.

    \r\n else if (!this.state.loading && this.state.Listings && this.state.Listings.length > 0) {\r\n return (\r\n \r\n {this.state.ValidationErrorMessages && this.state.ValidationErrorMessages.length > 0 ? : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n sortListings = (sort, Listings = null) => {\r\n let returnObj = [];\r\n if (this.state.Listings) {\r\n if (Listings == null) Listings = this.state.Listings.slice();\r\n let sortedSet = orderBy(Listings, sort);\r\n returnObj = sortedSet;\r\n if (sort.length) {\r\n returnObj = helper.blanksAfterZ(sortedSet, sort);\r\n }\r\n }\r\n return returnObj;\r\n }\r\n\r\n sortChange = (event) => {\r\n this.setState({\r\n Listings: this.sortListings(event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n //console.log(\"Search Text: \" + searchText);\r\n let fullDetails = this.state.BlockServices;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'ServiceNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Extension', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'LineName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'PartDescription', operator: 'contains', value: searchText, ignoreCase: true }\r\n ]\r\n });\r\n\r\n this.setState({ Listings: services })\r\n }\r\n else {\r\n this.setState({ Listings: fullDetails });\r\n }\r\n\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Cancel Order?\r\n \r\n \r\n

    Are you sure you wish to cancel this order?

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n {this.gridContent()}\r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default BlockTab;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport * as helper from '../../../scripts/helper';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport * as macdHelper from '../components/macd_helper';\r\nimport _ from 'lodash';\r\nimport MACDSaveStatus from '../modals/orderResultModal';\r\nimport ValidationCell from '../components/validationCell';\r\nimport MACDSearch from '../components/macdSearch';\r\n\r\nexport default class CnamTab extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isCancelDialogOpen: false,\r\n gridHeight: (window.innerHeight - 200),\r\n MomentumAccountNumber: props.MomentumAccountNumber,\r\n LocationName: props.LocationName,\r\n loading: false,\r\n saving: false,\r\n error: false,\r\n //ShowStatuses: false,\r\n CnamServices: [],\r\n Listings: [],\r\n OriginalListings: [],\r\n Sort: [{ field: \"ServiceNumber\", dir: \"asc\" }],\r\n ValidationErrorMessages: []\r\n };\r\n this.searchListings = this.searchListings.bind(this);\r\n const updateInputValue = this.updateInputValue.bind(this);\r\n\r\n class CnamInputCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const productItem = this.props.dataItem;\r\n let ReadOnlyStatus = false;\r\n const value = this.props.dataItem[this.props.field];\r\n\r\n return (\r\n \r\n {\r\n updateInputValue(productItem, this.props.field, e);\r\n }}\r\n style={{ width: \"90%\", cursor: ReadOnlyStatus === true ? 'not-allowed' : 'text' }}\r\n value={value}>\r\n \r\n )\r\n }\r\n };\r\n \r\n this.ValidationCell = ValidationCell;\r\n this.CnamInputCell = CnamInputCell;\r\n }\r\n\r\n\r\n componentDidMount() {\r\n if (this.state.MomentumAccountNumber !== '')\r\n this.fetchListings();\r\n }\r\n\r\n async componentWillReceiveProps(props) {\r\n if (props) {\r\n if (props.MomentumAccountNumber != this.state.MomentumAccountNumber) {\r\n await this.setState({ MomentumAccountNumber: props.MomentumAccountNumber, LocationName: props.LocationName, ValidationErrorMessages: [] });\r\n this.fetchListings();\r\n }\r\n if (props.GridHeight && props.GridHeight !== this.state.gridHeight)\r\n this.setState({ gridHeight: props.GridHeight });\r\n }\r\n }\r\n\r\n handleSave = async () => {\r\n let changedItems = this.state.CnamServices.filter(res => res.HasChanges === true);\r\n if (!changedItems || changedItems.length === 0) return;\r\n\r\n await this.setState({ saving: true });\r\n let apiPath = macdHelper.apiSubmitChangeCnam();\r\n let originalListings = this.state.OriginalListings;\r\n\r\n let submittedItems = changedItems.map((itm, idx) => {\r\n let oldService = originalListings.filter(res => res.CustomerProductId === itm.CustomerProductId);\r\n oldService = oldService[0];\r\n return {\r\n OldService: oldService,\r\n CNAM: itm.CNAM\r\n }\r\n });\r\n\r\n let reqBody = {\r\n LocationAccountNumber: this.state.MomentumAccountNumber,\r\n ServiceList: submittedItems\r\n }\r\n await apiCalls.post(apiPath, 'POST', JSON.stringify(reqBody)).then((res) => {\r\n let validationErrors = [];\r\n if (res.ok === true) {\r\n this.handleSaveSuccess();\r\n } else {\r\n let responseObject = JSON.parse(res.message);\r\n if (responseObject.length && responseObject.length > 0) {\r\n //another error message response for missing value\r\n validationErrors = responseObject.map((itm, idx) => {\r\n if (itm.CustomerProductId && itm.CustomerProductId != '')\r\n return {\r\n CustomerProductId: parseInt(itm.CustomerProductId),\r\n ValidationMessage: helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)\r\n }\r\n else {\r\n throw [helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)];\r\n }\r\n });\r\n } else {\r\n if (responseObject.MPOStatus && responseObject.MPOStatus.MPOErrorList && responseObject.MPOStatus.MPOErrorList.length > 0) {\r\n let ErrorList = responseObject.MPOStatus.MPOErrorList[0];\r\n let ErrorMessages = ErrorList.MPOResultText;\r\n validationErrors = ErrorMessages.map((itm, idx) => {\r\n if (itm.CustomerProductId && itm.CustomerProductId != '')\r\n return {\r\n CustomerProductId: parseInt(itm.CustomerProductId),\r\n ValidationMessage: helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)\r\n }\r\n else {\r\n throw [helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)];\r\n }\r\n });\r\n }\r\n }\r\n if (validationErrors) {\r\n this.showErrorAndResetModal('Your order could not be completed due to entry errors indicated in the grid.', validationErrors);\r\n }\r\n }\r\n }).catch((msg, ValidationErrors = null) => {\r\n this.showErrorAndResetModal(msg);\r\n }).finally(() => {\r\n this.setState({ saving: false });\r\n });\r\n }\r\n\r\n handleCancel = () => {\r\n //display confirmation message\r\n let changedItems = this.state.CnamServices.filter(res => res.HasChanges === true);\r\n if (!changedItems || changedItems.length === 0) return;\r\n this.setState({ isCancelDialogOpen: true });\r\n }\r\n\r\n handleSaveSuccess = async () => {\r\n await this.setState({ loading: true, ValidationErrorMessages: [], statusMessage: 'Your order has been saved and submitted successfully.' });\r\n this.props.TabHasChanges(false);\r\n this.fetchListings();\r\n }\r\n\r\n showErrorAndResetModal = (msg, ValidationErrorMessages = []) => {\r\n this.setState({ error: true, statusMessage: msg, ValidationErrorMessages: ValidationErrorMessages });\r\n }\r\n\r\n closeSaveMessage = () => {\r\n let serviceListings = this.state.CnamServices.slice();\r\n let gridListings = this.state.Listings.slice();\r\n let validationErrors = this.state.ValidationErrorMessages.slice();\r\n validationErrors.map((itm, idx) => {\r\n let itmInListings = serviceListings.filter(resp => resp.CustomerProductId === itm.CustomerProductId);\r\n let indexOfListing = _.indexOf(serviceListings, itmInListings[0]);\r\n serviceListings[indexOfListing].ValidationMessage = itm.ValidationMessage;\r\n itmInListings = gridListings.filter(resp => resp.CustomerProductId === itm.CustomerProductId);\r\n indexOfListing = _.indexOf(gridListings, itmInListings[0]);\r\n gridListings[indexOfListing].ValidationMessage = itm.ValidationMessage;\r\n });\r\n this.setState({ error: false, statusMessage: '', Listings: gridListings, CnamServices: serviceListings });\r\n }\r\n\r\n CancelYesAction = async () => {\r\n //clear all editable fields\r\n await this.fetchListings();\r\n this.props.TabHasChanges(false);\r\n this.setState({ isCancelDialogOpen: false, ValidationErrorMessages: [] });\r\n\r\n }\r\n\r\n closeCancelDialog = () => {\r\n this.setState({ isCancelDialogOpen: false });\r\n }\r\n\r\n updateInputValue = (productItem, field, e, isNumeric) => {\r\n let newValue = isNumeric && isNumeric == true ? parseInt(e.target.value) : e.target.value;\r\n productItem[field] = newValue;\r\n let existingArray = this.state.CnamServices;\r\n let index = _.findIndex(existingArray, s => s.CustomerProductId === productItem.CustomerProductId);\r\n let newOptions = this.state.CnamServices.slice();\r\n newOptions[index] = productItem;\r\n //update grid datasource now that the 'full' datasource is up-to-date. \r\n let ListingsTemp = this.state.Listings.slice();\r\n let itmInListings = ListingsTemp.filter(resp => resp.CustomerProductId === productItem.CustomerProductId);\r\n index = _.indexOf(ListingsTemp, itmInListings);\r\n ListingsTemp[index] = productItem;\r\n\r\n let originalItem = this.state.OriginalListings.filter(res => res.CustomerProductId === productItem.CustomerProductId);\r\n if (originalItem && originalItem.length > 0) {\r\n originalItem = originalItem[0];\r\n if (originalItem.CNAM !== productItem.CNAM) {\r\n productItem.HasChanges = true;\r\n this.props.TabHasChanges(true);\r\n } else {\r\n productItem.HasChanges = false;\r\n this.props.TabHasChanges(false);\r\n }\r\n }\r\n\r\n this.setState({ CnamServices: newOptions, Listings: ListingsTemp });\r\n }\r\n\r\n fetchListings = async () => {\r\n await this.setState({ loading: true });\r\n let locationName = this.state.LocationName;\r\n let apiPath = macdHelper.apiGetChangeCnam(this.state.MomentumAccountNumber);\r\n let [responseData, unformattedResponse] = await apiCalls.fetchData(apiPath).then((data) => {\r\n if (data) {\r\n let formattedData = data.ServiceList.map((itm, idx) => {\r\n let newItm = {\r\n CustomerProductId: itm.CustomerProductId,\r\n CatalogItemId: itm.CatalogItemId,\r\n PartDescription: itm.PartDescription,\r\n PartNum: itm.PartNum,\r\n ServiceNumber: itm.ServiceNumber,\r\n Extension: itm.Extension,\r\n Location: locationName,\r\n LineName: itm.LineName,\r\n LineFirstName: itm.LineFirstName,\r\n LineLastName: itm.LineLastName,\r\n ListingName: itm.ListingName,\r\n ListingType: itm.ListingType,\r\n OmitAddress: itm.OmitAddress,\r\n CNAM: itm.CNAM,\r\n TerminatingNumber: itm.TerminatingNumber,\r\n OldLineEmail: itm.LineEmail,\r\n LineEmail: itm.LineEmail,\r\n NewLineType: itm.PartNum,\r\n NewCatalogItemId: itm.CatalogItemId,\r\n NewSeatType: itm.PartNum,\r\n NewTypeDescription: itm.PartDescription,\r\n HasChanges: false,\r\n ValidationMessage: '',\r\n EnableCNAM: false,\r\n }\r\n return newItm;\r\n });\r\n return [formattedData, data.ServiceList];\r\n } else {\r\n return [[], []];\r\n }\r\n });\r\n await this.setState({ Listings: responseData, CnamServices: responseData, OriginalListings: unformattedResponse, loading: false });\r\n }\r\n\r\n sortListings(sort, Listings = null) {\r\n let returnObj = [];\r\n if (this.state.Listings) {\r\n if (Listings == null) Listings = this.state.Listings.slice();\r\n let sortedSet = orderBy(Listings, sort);\r\n returnObj = sortedSet;\r\n if (sort.length) {\r\n returnObj = helper.blanksAfterZ(sortedSet, sort);\r\n }\r\n }\r\n return returnObj;\r\n }\r\n\r\n sortChange = (event) => {\r\n this.setState({\r\n Listings: this.sortListings(event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n //console.log(\"Search Text: \" + searchText);\r\n let fullDetails = this.state.CnamServices;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'ServiceNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Extension', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'LineName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'PartDescription', operator: 'contains', value: searchText, ignoreCase: true }\r\n ]\r\n });\r\n\r\n this.setState({ Listings: services })\r\n }\r\n else {\r\n this.setState({ Listings: fullDetails });\r\n }\r\n\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.MomentumAccountNumber == '') {\r\n return macdHelper.locationSelectLabel(this.state.MomentumAccountNumber);\r\n }\r\n if (this.state.loading) return \r\n else if(!this.state.loading && this.state.Listings.length === 0) return

    There are no applicable changes available for services at this location. Please review your search criteria.

    \r\n else if (!this.state.loading && this.state.Listings && this.state.Listings.length > 0) {\r\n return (\r\n \r\n {this.state.ValidationErrorMessages && this.state.ValidationErrorMessages.length > 0 ? : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n Cancel Order?\r\n \r\n \r\n

    Are you sure you wish to cancel this order?

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n\r\n {this.gridContent()}\r\n
    \r\n );\r\n }\r\n};\r\n","import React, { Fragment, Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as helper from '../../../scripts/helper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport _ from 'lodash';\r\nimport * as macdHelper from '../components/macd_helper';\r\nimport MACDSaveStatus from '../modals/orderResultModal';\r\nimport ValidationCell from '../components/validationCell';\r\nimport MACDSearch from '../components/macdSearch';\r\n\r\nclass ExtensionTab extends Component {\r\n\r\n initialState(props) {\r\n return {\r\n MomentumAccountNumber: props.MomentumAccountNumber,\r\n LocationName: props.LocationName,\r\n FullListings: [],\r\n Listings: [],\r\n OriginalListings: [],\r\n Sort: [{ field: \"ServiceNumber\", dir: \"asc\" }],\r\n ShowStatuses: false,\r\n IsCancelDialogOpen: false,\r\n loading: true,\r\n gridHeight: (window.innerHeight - 250),\r\n searchInput: '',\r\n validationErrors: false\r\n };\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = this.initialState(props);\r\n const onExtensionChange = this.onExtensionChange.bind(this);\r\n\r\n \r\n\r\n class InputNumericTextCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const { dataItem } = this.props;\r\n const value = dataItem[this.props.field];\r\n const hasAddons = (dataItem.AddonCount || 0) > 0;\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n this.ValidationCell = ValidationCell;\r\n this.InputNumericTextCell = InputNumericTextCell;\r\n this.sortChange = this.sortChange.bind(this);\r\n this.sortListings = this.sortListings.bind(this);\r\n this.getListings = this.getListings.bind(this);\r\n this.fetchListings = this.fetchListings.bind(this);\r\n }\r\n\r\n handleResize = () => this.setState({\r\n gridHeight: (window.innerHeight - 210) + 'px'\r\n });\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.handleResize)\r\n }\r\n\r\n componentDidMount() {\r\n this.handleResize();\r\n window.addEventListener('resize', this.handleResize)\r\n\r\n const { LocationName, MomentumAccountNumber } = this.props;\r\n\r\n if (this.isLocationPopulated(this.props)) {\r\n this.fetchListings(MomentumAccountNumber);\r\n }\r\n }\r\n\r\n async componentDidUpdate(previousProps) {\r\n const { LocationName: currentLocationName } = previousProps;\r\n const { LocationName: incomingLocationName, MomentumAccountNumber } = this.props;\r\n\r\n if (this.isLocationPopulated(this.props) && currentLocationName !== incomingLocationName) {\r\n this.fetchListings(MomentumAccountNumber);\r\n } else if (incomingLocationName === 'All Locations' && currentLocationName !== incomingLocationName) {\r\n this.setState(this.initialState(this.props));\r\n }\r\n }\r\n\r\n isLocationPopulated = (props) => {\r\n return props.LocationName !== '' && props.LocationName !== 'All Locations';\r\n }\r\n\r\n onExtensionChange = (e) => {\r\n const { Listings } = this.state;\r\n const matchingListingIndex = Listings.findIndex(listing => listing.ServiceNumber === e.target.name);\r\n\r\n\r\n if (matchingListingIndex > -1) {\r\n const oldListing = Listings[matchingListingIndex];\r\n const newValInput = document.querySelector(`input[name=\"${e.target.name}\"]`)\r\n const value = newValInput ? newValInput.value : oldListing.Extension;\r\n const newListing = { ...oldListing, NewExtension: value };\r\n\r\n Listings[matchingListingIndex] = newListing;\r\n\r\n this.setState({ Listings }, this.checkForChanges())\r\n }\r\n }\r\n\r\n checkForChanges = () => {\r\n const updatedListings = this.getUpdatedListings();\r\n\r\n this.props.TabHasChanges(updatedListings.length > 0);\r\n }\r\n\r\n getUpdatedListings = () => {\r\n const { Listings } = this.state;\r\n\r\n return Listings.filter(listing => listing.Extension !== listing.NewExtension);\r\n }\r\n\r\n fetchListings = async (LocationAccountNumber) => {\r\n const fullListings = [];\r\n\r\n this.setState({ loading: true });\r\n\r\n await apiCalls.fetchData(macdHelper.apiGetListingsForChangeExtension(LocationAccountNumber)).then((data) => {\r\n const { ServiceList } = data;\r\n if (ServiceList) {\r\n ServiceList.map((itm, idx) => {\r\n let newListing = {\r\n ...itm,\r\n Location: this.props.LocationName,\r\n NewExtension: itm.Extension,\r\n HasChanges: false\r\n };\r\n fullListings.push(newListing);\r\n });\r\n\r\n this.setState({\r\n MomentumAccountNumber: this.props.MomentumAccountNumber,\r\n LocationName: this.props.LocationName,\r\n FullListings: fullListings,\r\n Listings: fullListings,\r\n loading: false\r\n });\r\n }\r\n }).catch((ex) => {\r\n console.log(ex.toString());\r\n this.setState({\r\n MomentumAccountNumber: this.props.MomentumAccountNumber,\r\n LocationName: this.props.LocationName,\r\n FullListings: [],\r\n Listings: [],\r\n loading: false\r\n });\r\n })\r\n }\r\n\r\n handleCancel = () => {\r\n //display confirmation message\r\n const updatedListings = this.getUpdatedListings();\r\n if (updatedListings.length === 0) {\r\n return;\r\n }\r\n this.setState({ IsCancelDialogOpen: true });\r\n }\r\n\r\n closeSaveMessage = () => {\r\n this.setState({\r\n error: false,\r\n statusMessage: null\r\n })\r\n }\r\n\r\n formPostObject(listings) {\r\n const { MomentumAccountNumber: LocationAccountNumber } = this.state;\r\n const ServiceList = listings.map(listing => {\r\n const NewExtension = listing.NewExtension;\r\n\r\n return ({ OldService: listing, Extension: NewExtension });\r\n });\r\n\r\n return { LocationAccountNumber, ServiceList };\r\n }\r\n\r\n extractResponseErrors(data) {\r\n try {\r\n const message = JSON.parse(data.message)\r\n const { MPOStatus: { MPOErrorList = [] } = {} } = message;\r\n\r\n if (MPOErrorList && MPOErrorList.length > 0) {\r\n const { MPOResultText: errors } = MPOErrorList[0];\r\n\r\n return errors;\r\n }\r\n } catch (ex) {\r\n const errorStringRegex = /: ([\\w\\s'.]+)at/;\r\n const matches = data.message.match(errorStringRegex);\r\n\r\n return matches\r\n ? [{ ErrorMessage: matches[1], ErrorSource: 'ORDER_DETAIL' }]\r\n : [{ ErrorMessage: 'Sorry, an error occurred attempting to process your update', ErrorSource: 'ORDER_DETAIL' }];\r\n }\r\n\r\n return;\r\n }\r\n\r\n triggerOrderLevelValidation(orderErrors) {\r\n const errorMessages = orderErrors.reduce((msg, error) => msg += `${helper.StripHtml(error.ErrorMessage)}\\n`, '');\r\n const statusMessage = `The following errors occurred during processing:\\n${errorMessages}`;\r\n\r\n this.setState({\r\n statusMessage,\r\n validationErrors: false,\r\n loading: false,\r\n error: true\r\n })\r\n }\r\n\r\n triggerRowLevelValidation = (errors) => {\r\n const statusMessage = 'Validation errors occurred for one or more updates. Please review below.';\r\n const { Listings } = this.state;\r\n\r\n const CustomerProductIds = errors.reduce((allErrors, error) => {\r\n allErrors[error.CustomerProductId] = helper.StripHtml(error.ErrorMessage);\r\n return allErrors;\r\n }, {});\r\n\r\n const UpdatedListings = Listings.map(listing => {\r\n const index = Object.keys(CustomerProductIds).indexOf(`${listing.CustomerProductId}`);\r\n return index !== -1\r\n ? { ...listing, ValidationMessage: CustomerProductIds[listing.CustomerProductId] }\r\n : listing\r\n })\r\n\r\n this.setState({\r\n Listings: UpdatedListings,\r\n statusMessage,\r\n error: true,\r\n loading: false,\r\n validationErrors: true\r\n })\r\n }\r\n\r\n handleErrors(data = null) {\r\n let errors = this.extractResponseErrors(data);\r\n\r\n if (errors) {\r\n const orderErrors = errors.filter(error => error.ErrorSource !== 'ITEM_DETAIL');\r\n\r\n if (orderErrors.length > 0) {\r\n this.triggerOrderLevelValidation(orderErrors);\r\n } else {\r\n this.triggerRowLevelValidation(errors);\r\n }\r\n }\r\n\r\n this.setState({ saving: false });\r\n }\r\n\r\n handleSave = async () => {\r\n const updatedListings = this.getUpdatedListings();\r\n if (updatedListings.length === 0) {\r\n return;\r\n }\r\n //await this.setState({ saving: true });\r\n const postObject = this.formPostObject(updatedListings);\r\n\r\n this.setState({ saving: true });\r\n apiCalls\r\n .post(macdHelper.apiUpdateExtension(), 'POST', JSON.stringify(postObject))\r\n .then((data) => {\r\n if (data.ok) {\r\n this.props.TabHasChanges(false);\r\n this.setState(\r\n { statusMessage: 'Extension update successful!', saving: false, validationErrors: false },\r\n () => this.fetchListings(postObject.LocationAccountNumber)\r\n );\r\n } else {\r\n this.handleErrors(data);\r\n }\r\n })\r\n .catch((ex) => {\r\n this.setState({\r\n statusMessage: 'Sorry, an error occurred attempting to process your update',\r\n saving: false,\r\n error: true\r\n })\r\n console.log(ex.toString());\r\n }).finally(() => {\r\n this.setState({ saving: false })\r\n })\r\n }\r\n\r\n CancelYesAction = () => {\r\n const { TabHasChanges, MomentumAccountNumber } = this.props;\r\n\r\n TabHasChanges(false);\r\n this.setState({ IsCancelDialogOpen: false, validationErrors: false });\r\n this.fetchListings(MomentumAccountNumber);\r\n }\r\n\r\n closeCancelDialog = () => {\r\n this.setState({ IsCancelDialogOpen: false });\r\n }\r\n\r\n getListings = () => {\r\n const { searchInput, Sort, Listings } = this.state;\r\n\r\n const filteredListings = searchInput !== ''\r\n ? this.searchListings(Listings, searchInput)\r\n : Listings\r\n\r\n let gridListings = this.sortListings(Sort, filteredListings);\r\n return gridListings;\r\n }\r\n\r\n async sortChange(event) {\r\n await this.setState({\r\n Listings: this.sortListings(event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n searchListings(Listings = [], filter) {\r\n return filterBy(Listings, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'ServiceNumber', operator: 'contains', value: filter, ignoreCase: true },\r\n { field: 'Extension', operator: 'contains', value: filter, ignoreCase: true },\r\n { field: 'LineName', operator: 'contains', value: filter, ignoreCase: true },\r\n { field: 'PartDescription', operator: 'contains', value: filter, ignoreCase: true }\r\n ]\r\n });\r\n }\r\n\r\n sortListings(sort, Listings = null) {\r\n if (Listings == null) Listings = this.state.Listings.slice();\r\n let sortedSet = orderBy(Listings, sort);\r\n let returnObj = sortedSet;\r\n if (sort.length) {\r\n returnObj = helper.blanksAfterZ(sortedSet, sort);\r\n }\r\n\r\n return returnObj;\r\n }\r\n\r\n onSearchInputChange = (e) => {\r\n this.setState({ searchInput: e.target.value });\r\n \r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading || this.state.saving) {\r\n return (\r\n \r\n );\r\n } \r\n else if(!this.state.loading && this.state.Listings.length === 0) return

    There are no applicable changes available for services at this location. Please review your search criteria.

    \r\n else {\r\n return (\r\n \r\n {this.state.validationErrors\r\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 render() {\r\n return (\r\n
    \r\n
    \r\n {macdHelper.locationSelectLabel(this.state.MomentumAccountNumber)}\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n Cancel Order?\r\n \r\n \r\n

    Are you sure you wish to cancel this order?

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n {this.isLocationPopulated(this.state)\r\n && (\r\n \r\n
    \r\n {this.gridContent()}\r\n
    \r\n )\r\n }\r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default ExtensionTab;\r\n","\r\nimport React, { Component } from 'react';\r\nimport { Grid, GridColumn as Column, GridCellProps, GridCell, GridToolbar, GridDetailRow } from '@progress/kendo-react-grid';\r\nimport InfoPop from './infopop';\r\nclass InfoCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n if (this.props.dataItem[this.props.field] !== '')\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n else\r\n return ();\r\n }\r\n}\r\n\r\nexport default InfoCell;","import React, { Component } from 'react';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport * as helper from '../../../scripts/helper';\r\nimport * as macdHelper from '../components/macd_helper';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid';\r\nimport InfoCell from '../../../components/infoCell';\r\nimport _ from 'lodash';\r\n\r\nclass PricebookModal extends Component {\r\n initialState(props) {\r\n return {\r\n MomentumAccountNumber: props.MomentumAccountNumber,\r\n showModal: false,\r\n saving: false,\r\n fullListings: [],\r\n Listings: [],\r\n sort: [{ field: \"Product\", dir: \"desc\" }],\r\n Editable: false, //check sessionStorage for emulation if emulated editable is true else false\r\n restrictedUSOCS: require('../components/DisabledUSOCs.json')\r\n };\r\n }\r\n constructor(props) {\r\n super(props);\r\n this.state = this.initialState(props);\r\n\r\n \r\n this.InfoCell = InfoCell;\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.sortChange = this.sortChange.bind(this);\r\n this.fetchPricebookDetails = this.fetchPricebookDetails.bind(this);\r\n }\r\n\r\n componentWillMount() {\r\n if (this.state.MomentumAccountNumber !== '')\r\n this.fetchPricebookDetails();\r\n }\r\n\r\n async componentWillReceiveProps(props) {\r\n if (props.MomentumAccountNumber !== '' && props.MomentumAccountNumber !== this.state.MomentumAccountNumber) {\r\n await this.setState({MomentumAccountNumber: props.MomentumAccountNumber});\r\n this.fetchPricebookDetails(); \r\n }\r\n }\r\n\r\n fetchPricebookDetails = async () => {\r\n await this.setState({ loading: true });\r\n let apiPath = macdHelper.apiPricebookPathWithParams(this.state.MomentumAccountNumber);\r\n await apiCalls.fetchData(apiPath).then(data => {\r\n if (data !== null) {\r\n this.setState({\r\n loading: false,\r\n fullListings: this.revisedData(data),\r\n Listings: this.revisedData(data)\r\n });\r\n } else if (data === null) {\r\n this.setState({ fullListings: [], Listings: [], loading: false });\r\n };\r\n });\r\n if (this.state.fullListings && this.state.fullListings.length > 0 && this.props.SetProductSetTypeName)\r\n this.props.SetProductSetTypeName(this.state.fullListings[0].ProductSetTypeName);\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({showModal: false});\r\n }\r\n\r\n handleShow = () => {\r\n this.setState({showModal: true});\r\n //load pricebook listings for location\r\n }\r\n\r\n // handleSave = () => {\r\n // this.setState({saving: true});\r\n\r\n // this.setState({saving: false});\r\n // }\r\n\r\n revisedData = (data) => {\r\n let removedUSOCs = this.state.restrictedUSOCS;\r\n let revisedData = [];\r\n data.map((sd) => {\r\n let disabledUSOCEntry = _.filter(removedUSOCs, resp => resp.USOC === sd.PartNum && resp.ProductSetTypeName === sd.ProductSetTypeName);\r\n if (sd.LineTypeTicker === 'MTRTPKGBTA') {\r\n sd.adding = false;\r\n sd.disabled = true;\r\n sd.DisabledMessage = \"Only one of these items can be added per SIP Trunking location. After service is connected, contact support for any change orders to this service. Changes may affect other services connected to the Trunk.\"\r\n revisedData.push(sd);\r\n }\r\n else if (sd.MSP_Visible === 0)\r\n {\r\n sd.adding = false;\r\n sd.disabled = true;\r\n sd.DisabledMessage = \"This product requires additional manual configuration. Please contact support to order this item.\";\r\n revisedData.push(sd);\r\n } \r\n else if (disabledUSOCEntry.length === 0 || disabledUSOCEntry[0].ShowListing !== false)\r\n {\r\n sd.adding = false;\r\n sd.disabled = disabledUSOCEntry.length > 0 ? true : false\r\n sd.DisabledMessage = disabledUSOCEntry.length > 0 ? disabledUSOCEntry[0].Message : ''\r\n revisedData.push(sd);\r\n }\r\n\r\n });\r\n\r\n\r\n let sortedData = this.sortSearchResults(this.state.sort, revisedData)\r\n return sortedData;\r\n }\r\n\r\n getSearchResults = (event) => {\r\n let searchText = '';\r\n let fullDetails = this.state.fullListings;\r\n if (event && event.target && event.target.value && event.target.value.trim() !== '') {\r\n searchText = event.target.value;\r\n let products = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'PartDescription', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'PartNum', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n\r\n this.setState({ Listings: products })\r\n }\r\n else {\r\n this.setState({ Listings: fullDetails });\r\n }\r\n }\r\n\r\n sortChange(event) {\r\n this.setState({\r\n Listings: this.sortSearchResults(event.sort),\r\n sort: event.sort\r\n });\r\n }\r\n \r\n sortSearchResults(sort, Listings = null) {\r\n if (Listings == null) Listings = this.state.Listings.slice();\r\n let sortedSet = orderBy(Listings, sort);\r\n if (sort.length && sort[0].field !== 'BasePrice' && sort[0].field !== 'ActivationCharge') { \r\n return helper.blanksAfterZ(sortedSet, sort);\r\n } else {\r\n return sortedSet;\r\n }\r\n }\r\n\r\n gridContent = () => {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n */}\r\n \r\n \r\n \r\n
    \r\n \r\n )\r\n }\r\n\r\n render() {\r\n let button = ''; \r\n button = (View Pricebook);\r\n \r\n return (\r\n \r\n {button}\r\n { this.setState({ showModal: !this.state.showModal }) }} >\r\n \r\n Pricing for {this.state.MomentumAccountNumber}\r\n \r\n \r\n
    \r\n
    \r\n this.getSearchResults(e)} placeholder=\"Search Momentum Products by Part Num or Description\" />\r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\nexport default PricebookModal;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport PricebookModal from './../modals/pricebook';\r\nimport * as helper from '../../../scripts/helper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport { AutoComplete } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport _ from 'lodash';\r\nimport * as macdHelper from '../components/macd_helper';\r\nimport MACDSaveStatus from '../modals/orderResultModal';\r\nimport MACDSearch from '../components/macdSearch';\r\nimport ValidationCell from '../components/validationCell';\r\n\r\nclass LineTab extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isCancelDialogOpen: false,\r\n MomentumAccountNumber: props.MomentumAccountNumber,\r\n LocationName: props.LocationName,\r\n gridHeight: props.GridHeight,\r\n loading: true,\r\n saving: false,\r\n error: false,\r\n LineTypeServices: [],\r\n Listings: [],\r\n OriginalListings: [],\r\n Sort: [{ field: \"ServiceNumber\", dir: \"asc\" }],\r\n ValidationErrorMessages: [],\r\n restrictedUSOCS: require('../components/DisabledUSOCs.json'),\r\n productSetTypeName: '',\r\n toBeSaved: true,\r\n FirstNametoBeSaved:true,\r\n LastNametoBeSaved:true,\r\n EmailtoBeSaved:true,\r\n ListingNametoBeSaved:true,\r\n CNAMtoBeSaved:true\r\n };\r\n const updateInputValue = this.updateInputValue.bind(this);\r\n const updateTerminatingNumber = this.updateTerminatingNumber.bind(this);\r\n const updateNewLineType = this.updateNewLineType.bind(this);\r\n this.NewLineTypeOptions = this.NewLineTypeOptions.bind(this);\r\n this.sortChange = this.sortChange.bind(this);\r\n this.handleSave = this.handleSave.bind(this);\r\n this.handleSaveSuccess = this.handleSaveSuccess.bind(this);\r\n this.searchListings = this.searchListings.bind(this);\r\n this.closeSaveMessage = this.closeSaveMessage.bind(this);\r\n this.setProductSetTypeName = this.setProductSetTypeName.bind(this);\r\n\r\n\r\n class InputTextCell extends GridCell {\r\n \r\n render() {\r\n const productItem = this.props.dataItem;\r\n let ReadOnlyStatus = false;\r\n if (this.props.field === \"LineFirstName\" && this.props.dataItem['EditLineFirstName'] === false) ReadOnlyStatus = true;\r\n if (this.props.field === \"LineLastName\" && this.props.dataItem['EditLineLastName'] === false) ReadOnlyStatus = true;\r\n if (this.props.field === \"LineEmail\" && this.props.dataItem['EditLineEmail'] === false) ReadOnlyStatus = true;\r\n if (this.props.field === \"ListingName\" && this.props.dataItem['EditListingName'] === false) ReadOnlyStatus = true;\r\n if (this.props.field === \"CNAM\" && this.props.dataItem['EditCNAM'] === false) ReadOnlyStatus = true;\r\n\r\n const value = ReadOnlyStatus === true && productItem.NewLineType !== productItem.PartNum ? \"\" : this.props.dataItem[this.props.field];\r\n \r\n return (\r\n \r\n { updateInputValue(productItem, this.props.field, e); }}\r\n style={{ width: \"90%\", cursor: ReadOnlyStatus === true ? 'not-allowed' : 'text' }}\r\n value={value}>\r\n \r\n ) \r\n }\r\n }\r\n\r\n class InputCheckField extends GridCell {\r\n render() {\r\n const value = this.props.dataItem[this.props.field] === true ? true : false;\r\n const productItem = this.props.dataItem;\r\n\r\n return (\r\n \r\n { updateInputValue(productItem, this.props.field, e) }}>\r\n \r\n )\r\n }\r\n }\r\n class ListingTypeCell extends GridCell {\r\n render() {\r\n let value = '';\r\n value = this.props.dataItem[this.props.field];\r\n const productItem = this.props.dataItem;\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n class NewLineTypeCell extends GridCell {\r\n render() {\r\n let value = '';\r\n value = this.props.dataItem['NewLineType'];\r\n const productItem = this.props.dataItem;\r\n const NewLineTypeOptionsList = this.props.dataItem['NewLineTypeList'];\r\n const AddOnCount = parseInt(this.props.dataItem[\"AddonCount\"]);\r\n const isE911SIPTrunk = this.props.dataItem[\"LineTypeTicker\"] === 'MTRTPKGBTA'; //allowed to change e911 did in IP Trunking\r\n if (AddOnCount > 0 || isE911SIPTrunk === true) \r\n {\r\n return (\r\n 0 ? \"This record cannot be updated until all Add-Ons are removed from this service!\" : \"This record cannot be updated as a change to this record will disconnect services using SIP Trunk!\"}>\r\n \r\n \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n }\r\n }\r\n class AutoCompleteCell extends GridCell {\r\n render() {\r\n let termArray = this.props.dataItem.TermNumberList ? this.props.dataItem.TermNumberList : [];\r\n const value = this.props.dataItem[this.props.field];\r\n const productItem = this.props.dataItem;\r\n const enableVal = productItem.EnableTerminatingNumber;\r\n let autoCompleteDOM = (\r\n { updateTerminatingNumber(productItem, e, enableVal); }}\r\n />\r\n );\r\n if (this.props.dataItem.EnableTerminatingNumber) {\r\n return (\r\n \r\n {autoCompleteDOM}\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n this.AutoCompleteCell = AutoCompleteCell;\r\n this.InputTextCell = InputTextCell;\r\n this.InputCheckField = InputCheckField;\r\n\r\n this.ListingTypeCell = ListingTypeCell;\r\n this.NewLineTypeCell = NewLineTypeCell;\r\n this.ValidationCell = ValidationCell;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.MomentumAccountNumber !== '')\r\n this.fetchListings();\r\n }\r\n\r\n async componentWillReceiveProps(props) {\r\n if (props) {\r\n if (props.MomentumAccountNumber !== this.state.MomentumAccountNumber) {\r\n await this.setState({ MomentumAccountNumber: props.MomentumAccountNumber, LocationName: props.LocationName, ValidationErrorMessages: [] });\r\n this.fetchListings();\r\n }\r\n if (props.GridHeight && props.GridHeight !== this.state.gridHeight)\r\n this.setState({ gridHeight: props.GridHeight });\r\n }\r\n }\r\n\r\n setProductSetTypeName = (productSetType) => {\r\n this.setState({productSetTypeName: productSetType});\r\n }\r\n\r\n fetchListings = async () => {\r\n this.setState({ loading: true });\r\n let locationName = this.state.LocationName;\r\n let apiPath = macdHelper.apiGetChangeLineTypeListings(this.state.MomentumAccountNumber);\r\n let [responseData, unformattedResponse] = await apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n let termNumberList = data.TermNumberList ? (\r\n data.TermNumberList.map((itm, idx) => {\r\n return itm.ServiceNumber;\r\n })\r\n ) : [];\r\n //note 'Old' properties storing current values. When the user changes Line Type we may preset the values based on Enable values\r\n //Enable values will enable/disable the fields for editable entry\r\n let formattedData = data.ServiceList.map((itm, idx) => {\r\n let newItm = {\r\n CustomerProductId: itm.CustomerProductId,\r\n CatalogItemId: itm.CatalogItemId,\r\n PartDescription: itm.PartDescription,\r\n PartNum: itm.PartNum,\r\n ServiceNumber: itm.ServiceNumber,\r\n Extension: itm.Extension,\r\n Location: locationName,\r\n LineName: itm.LineName,\r\n LineFirstName: itm.LineFirstName,\r\n LineLastName: itm.LineLastName,\r\n LineTypeTicker: itm.LineTypeTicker,\r\n ListingName: itm.ListingName,\r\n ListingType: itm.ListingType,\r\n OmitAddress: itm.OmitAddress,\r\n CNAM: itm.CNAM,\r\n TerminatingNumber: itm.TerminatingNumber,\r\n TermNumberList: termNumberList.filter(res => res !== itm.ServiceNumber),\r\n OldLineEmail: itm.LineEmail,\r\n LineEmail: itm.LineEmail,\r\n NewLineTypeList: this.NewLineTypeOptions(itm.PartNum, itm.NewTypeList, itm.PartDescription),\r\n NewLineType: itm.PartNum,\r\n NewCatalogItemId: itm.CatalogItemId,\r\n NewTypeDescription: itm.PartDescription,\r\n AddonCount: itm.AddonCount,\r\n HasChanges: false,\r\n ValidationMessage: '',\r\n EditLineFirstName: false,\r\n EditLineLastName: false,\r\n EditListingType: false,\r\n EditListingName: false,\r\n EditOmitAddress: false,\r\n EditCNAM: false,\r\n EditTerminatingNumber: false,\r\n EditLineEmail: false,\r\n RenderMandatorySymbol:this.state.mandatorySymbol\r\n }\r\n return newItm;\r\n });\r\n return [formattedData, data.ServiceList];\r\n } else {\r\n return [[], []];\r\n }\r\n\r\n });\r\n //await this.setState({Listings: responseData, TerminatingNumberList: terminatingNumberList});//(if we want UI to prevent duplicate Term Numbers)\r\n await this.setState({ Listings: responseData, LineTypeServices: responseData, OriginalListings: unformattedResponse, loading: false });\r\n }\r\n\r\n NewLineTypeOptions = (CurrentPartNum, NewList, CurrentPartDesc) => {\r\n let returnObj = [];\r\n if (NewList) {\r\n let sort = [{ field: \"PartDescription\", dir: \"asc\" }]\r\n let sortedSet = orderBy(NewList, sort);\r\n sortedSet = helper.blanksAfterZ(sortedSet, sort);\r\n let restrictedUsocs = this.state.restrictedUSOCS;\r\n let productSetType = this.state.productSetTypeName;\r\n\r\n \r\n\r\n returnObj = sortedSet.map((itm, idx) => {\r\n let restrictedItem = _.filter(restrictedUsocs, resp => resp.USOC === itm.PartNum && resp.ProductSetTypeName === productSetType);\r\n if (!restrictedItem || restrictedItem.length === 0 || restrictedItem[0].USOC === CurrentPartNum )\r\n return (\r\n \r\n )\r\n });\r\n if (_.filter(sortedSet, resp => resp.PartNum === CurrentPartNum).length === 0) {\r\n let origOption = ()\r\n returnObj.push(origOption);\r\n }\r\n }\r\n return returnObj;\r\n }\r\n\r\n updateNewLineType = async (productItem, field, e) => {\r\n let newValue = e.target.value;\r\n let updatedListings = this.state.LineTypeServices.slice();\r\n let itmInArray = this.state.LineTypeServices.filter(resp => resp.CustomerProductId === productItem.CustomerProductId);\r\n let originalItm = _.filter(this.state.OriginalListings, resp => resp.CustomerProductId === productItem.CustomerProductId);\r\n let validationMessages = this.state.ValidationErrorMessages;\r\n \r\n if (itmInArray)\r\n itmInArray = itmInArray[0];\r\n else\r\n throw 'Could not find item';\r\n\r\n let idx = _.indexOf(this.state.LineTypeServices, itmInArray);\r\n itmInArray[field] = e.target.value;\r\n if (newValue === productItem.PartNum) {\r\n //if clearing change then disable changes\r\n itmInArray.HasChanges = false;\r\n itmInArray.EditCNAM = false;\r\n itmInArray.EditLineEmail = false;\r\n itmInArray.EditLineFirstName = false;\r\n itmInArray.EditLineLastName = false;\r\n itmInArray.EditListingType = false;\r\n itmInArray.EditOmitAddress = false;\r\n itmInArray.EditTerminatingNumber = false;\r\n itmInArray.EditListingName = false;\r\n itmInArray.NewCatalogItemId = itmInArray.CatalogItemId;\r\n if (itmInArray.CNAM !== originalItm.CNAM || itmInArray.LineEmail !== originalItm.LineEmail || itmInArray.ListingName !== originalItm.ListingName\r\n || itmInArray.ListingType !== originalItm.ListingType || itmInArray.TerminatingNumber !== originalItm.TerminatingNumber || itmInArray.OmitAddress !== originalItm.OmitAddress)\r\n {\r\n itmInArray.ValidationMessage = 'Line Type must be changed to submit change for item. Updates will be ignored. If you wish to update the other values for this item, please choose another type of MACD.'\r\n validationMessages.push({\r\n CustomerProductId: parseInt(itmInArray.CustomerProductId),\r\n ValidationMessage: helper.StringReplaceAll(itmInArray.ErrorMessage, '
    ', '', false)\r\n });\r\n }\r\n } else {\r\n this.props.TabHasChanges(true);\r\n if (itmInArray.ValidationMessage.indexOf('Line Type must be changed to submit change for item.') > -1) {\r\n itmInArray.ValidationMessage = '';\r\n let delIdx = _.indexOf(validationMessages.map(function(e) { return e.CustomerProductId; }), itmInArray.CustomerProductId);\r\n validationMessages.splice(delIdx, 1);\r\n }\r\n\r\n itmInArray.HasChanges = true;\r\n let url = macdHelper.apiGetProductPropertiesWithParams(newValue);\r\n let data = await apiCalls.fetchData(url).then(data => data);\r\n if (data) {\r\n itmInArray.EditCNAM = !!+(data.show_cnam_col);\r\n itmInArray.CNAM = itmInArray.EditCNAM === false ? '' : itmInArray.CNAM;\r\n itmInArray.EditLineEmail = !!+(data.show_line_email_col);\r\n itmInArray.LineFirstName = itmInArray.LineFirstName === false ? '' : itmInArray.LineFirstName;\r\n itmInArray.EditLineFirstName = !!+(data.show_line_name_col);\r\n itmInArray.EditLineLastName = itmInArray.EditLineFirstName;\r\n itmInArray.LineLastName = itmInArray.LineLastName === false ? '' : itmInArray.LineLastName;\r\n itmInArray.LineEmail = itmInArray.EditLineEmail === false ? '' : itmInArray.LineEmail;\r\n itmInArray.ListingType = !!+(data.show_list_type_col);\r\n itmInArray.ListingType = itmInArray.EditListingType === false ? '4' : itmInArray.ListingType;\r\n if (itmInArray.ListingType === '4')\r\n itmInArray.ListingName = '';\r\n \r\n itmInArray.EditOmitAddress = !!+(data.show_omt_addr_col);\r\n itmInArray.OmitAddress = itmInArray.EditOmitAddress === false ? false : itmInArray.OmitAddress;\r\n itmInArray.EditTerminatingNumber = !!+(data.show_trm_num_textbox || data.show_trm_num_col);\r\n itmInArray.TerminatingNumber = itmInArray.EditTerminatingNumber === false ? '' : itmInArray.TerminatingNumber;\r\n\r\n let oldService = this.state.OriginalListings.filter(res => res.CatalogItemId === itmInArray.CatalogItemId);\r\n oldService = oldService[0];\r\n let NewCatalogItemId = oldService.NewTypeList.filter(res => res.PartNum === itmInArray.NewLineType).length > 0\r\n ? oldService.NewTypeList.filter(res => res.PartNum === itmInArray.NewLineType)[0].CatalogItemId\r\n : \"\";\r\n itmInArray.NewCatalogItemId = NewCatalogItemId;\r\n }\r\n }\r\n\r\n updatedListings[idx] = itmInArray;\r\n\r\n //update grid datasource now that the 'full' datasource is up-to-date. \r\n let ListingsTemp = this.state.Listings.slice();\r\n let itmInListings = ListingsTemp.filter(resp => resp.CustomerProductId === productItem.CustomerProductId)[0];\r\n idx = _.indexOf(ListingsTemp, itmInListings);\r\n ListingsTemp[idx] = itmInArray;\r\n //setting if there are changes so that we can throw a warning message from the macd component on tab/location change\r\n if (updatedListings && updatedListings.filter(res => res.HasChanges === true).length === 0)\r\n this.props.TabHasChanges(false);\r\n else\r\n this.props.TabHasChanges(true);\r\n\r\n await this.setState({ LineTypeServices: updatedListings, Listings: ListingsTemp, ValidationErrorMessages: validationMessages });\r\n }\r\n\r\n\r\n handleCancel = () => {\r\n //display confirmation message\r\n let changedItems = this.state.LineTypeServices.filter(res => res.HasChanges === true);\r\n if (!changedItems || changedItems.length === 0) return;\r\n this.setState({ isCancelDialogOpen: true });\r\n }\r\n\r\n handleSave = async () => {\r\n let changedItems = this.state.LineTypeServices.filter(res => res.HasChanges === true);\r\n \r\n if(changedItems.filter(x=>x.EditLineFirstName === true).length != 0){\r\n for(let o of changedItems){\r\n if(o.LineFirstName === \"\"){\r\n this.setState({ saving: false , toBeSaved:false, FirstNametoBeSaved:false });\r\n //return;\r\n }\r\n }\r\n }\r\n if(changedItems.filter(x=>x.EditLineLastName === true).length != 0){\r\n for(let o of changedItems){\r\n if(o.LineLastName === \"\"){\r\n this.setState({ saving: false , toBeSaved:false, LastNametoBeSaved:false });\r\n // return;\r\n }\r\n }\r\n }\r\n if(changedItems.filter(x=>x.EditLineEmail === true).length != 0){\r\n for(let o of changedItems){\r\n if(o.LineEmail === \"\"){\r\n this.setState({ saving: false , toBeSaved:false, EmailtoBeSaved:false });\r\n //return;\r\n }\r\n }\r\n }\r\n if(changedItems.filter(x=>x.EditListingName === true).length != 0){\r\n for(let o of changedItems){\r\n if(o.ListingName === \"\"){\r\n this.setState({ saving: false , toBeSaved:false, ListingNametoBeSaved:false });\r\n //return;\r\n }\r\n }\r\n }\r\n if(changedItems.filter(x=>x.EditCNAM === true).length != 0){\r\n for(let o of changedItems){\r\n if(o.CNAM === \"\"){\r\n this.setState({ saving: false , toBeSaved:false, CNAMtoBeSaved:false });\r\n //return;\r\n }\r\n }\r\n }\r\n\r\n if (!changedItems || changedItems.length === 0 || this.state.toBeSaved ===false) return;\r\n \r\n await this.setState({ saving: true });\r\n let apiPath = macdHelper.apiSubmitChangeLineType();\r\n let originalListings = this.state.OriginalListings;\r\n \r\n let submittedItems = changedItems.map((itm, idx) => {\r\n let oldService = originalListings.filter(res => res.CustomerProductId === itm.CustomerProductId);\r\n oldService = oldService[0];\r\n return {\r\n OldService: oldService, //API can it be changed so we don't have to track it\r\n CatalogItemId: itm.NewCatalogItemId,\r\n ListingType: itm.ListingType,\r\n LineFirstName: itm.LineFirstName,\r\n LineLastName: itm.LineLastName,\r\n ListingName: itm.ListingName,\r\n OmitAddress: itm.OmitAddress,\r\n CNAM: itm.CNAM,\r\n LineEmail: itm.LineEmail,\r\n TerminatingNumber: itm.TerminatingNumber\r\n }\r\n });\r\n \r\n let reqBody = {\r\n LocationAccountNumber: this.state.MomentumAccountNumber,\r\n ServiceList: submittedItems\r\n }\r\n\r\n apiCalls.post(apiPath, 'POST', JSON.stringify(reqBody)).then((res) => {\r\n let validationErrors = [];\r\n if (res.ok === true) {\r\n this.handleSaveSuccess();\r\n } else {\r\n let responseObject = JSON.parse(res.message);\r\n\r\n if (responseObject.length && responseObject.length > 0) {\r\n //another error message response for missing value\r\n validationErrors = responseObject.map((itm, idx) => {\r\n if (itm.CustomerProductId && itm.CustomerProductId !== '')\r\n return {\r\n CustomerProductId: parseInt(itm.CustomerProductId),\r\n ValidationMessage: helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)\r\n }\r\n else {\r\n throw [helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)];\r\n }\r\n });\r\n } else {\r\n if (responseObject.MPOStatus && responseObject.MPOStatus.MPOErrorList && responseObject.MPOStatus.MPOErrorList.length > 0) {\r\n let ErrorList = responseObject.MPOStatus.MPOErrorList[0];\r\n let ErrorMessages = ErrorList.MPOResultText;\r\n validationErrors = ErrorMessages.map((itm, idx) => {\r\n if (itm.CustomerProductId && itm.CustomerProductId !== '')\r\n return {\r\n CustomerProductId: parseInt(itm.CustomerProductId),\r\n ValidationMessage: helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)\r\n }\r\n else {\r\n throw [helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)];\r\n }\r\n });\r\n }\r\n }\r\n if (validationErrors) {\r\n this.showErrorAndResetModal('Your order could not be completed due to entry errors indicated in the grid.', validationErrors);\r\n }\r\n }\r\n }).catch((msg) => {\r\n this.showErrorAndResetModal(msg);\r\n\r\n }).finally(() => {\r\n this.setState({ saving: false });\r\n });\r\n }\r\n\r\n handleSaveSuccess = () => {\r\n this.setState({ loading: true, ValidationErrorMessages: [], statusMessage: 'Your order has been saved and submitted successfully.' });\r\n this.props.TabHasChanges(false);\r\n this.fetchListings();\r\n }\r\n\r\n showErrorAndResetModal = (msg, ValidationErrorMessages = []) => {\r\n this.setState({ error: true, statusMessage: msg, ValidationErrorMessages: ValidationErrorMessages });\r\n }\r\n\r\n closeSaveMessage = () => {\r\n let serviceListings = this.state.LineTypeServices.slice();\r\n let gridListings = this.state.Listings.slice();\r\n let validationErrors = this.state.ValidationErrorMessages.slice();\r\n validationErrors.map((itm, idx) => {\r\n let itmInListings = serviceListings.filter(resp => resp.CustomerProductId === itm.CustomerProductId);\r\n let indexOfListing = _.indexOf(serviceListings, itmInListings[0]);\r\n serviceListings[indexOfListing].ValidationMessage = itm.ValidationMessage;\r\n itmInListings = gridListings.filter(resp => resp.CustomerProductId === itm.CustomerProductId);\r\n indexOfListing = _.indexOf(gridListings, itmInListings[0]);\r\n gridListings[indexOfListing].ValidationMessage = itm.ValidationMessage;\r\n });\r\n this.setState({ error: false, statusMessage: '', Listings: gridListings, LineTypeServices: serviceListings });\r\n }\r\n\r\n CancelYesAction = async () => {\r\n //clear all editable fields\r\n this.fetchListings();\r\n this.props.TabHasChanges(false);\r\n this.setState({ isCancelDialogOpen: false, ValidationErrorMessages: [] });\r\n\r\n }\r\n\r\n closeCancelDialog = () => {\r\n this.setState({ isCancelDialogOpen: false });\r\n }\r\n\r\n updateInputValue = (productItem, field, e, isNumeric) => {\r\n let newValue = \"\";\r\n if(field === \"LineFirstName\"){\r\n if(e.target.value === ''){\r\n this.setState({toBeSaved:false,FirstNametoBeSaved:false})\r\n }\r\n else{\r\n this.setState({toBeSaved:true,FirstNametoBeSaved:true})\r\n }\r\n }\r\n if(field === \"LineLastName\"){\r\n if(e.target.value === ''){\r\n this.setState({toBeSaved:false,LastNametoBeSaved:false})\r\n }\r\n else{\r\n this.setState({toBeSaved:true,LastNametoBeSaved:true})\r\n } \r\n }\r\n if(field === \"LineEmail\"){\r\n if(e.target.value === ''){\r\n this.setState({toBeSaved:false,EmailtoBeSaved:false})\r\n }\r\n else{\r\n this.setState({toBeSaved:true,EmailtoBeSaved:true})\r\n }\r\n }\r\n if(field === \"ListingName\"){\r\n if(e.target.value === ''){\r\n this.setState({toBeSaved:false,ListingNametoBeSaved:false})\r\n }\r\n else{\r\n this.setState({toBeSaved:true,ListingNametoBeSaved:true})\r\n }\r\n }\r\n if(field === \"CNAM\"){\r\n if(e.target.value === ''){\r\n this.setState({toBeSaved:false,CNAMtoBeSaved:false})\r\n }\r\n else{\r\n this.setState({toBeSaved:true,CNAMtoBeSaved:true})\r\n }\r\n }\r\n if (field === \"OmitAddress\") {\r\n newValue = productItem[field] === true ? false : true;\r\n } else if (field === \"ListingType\") {\r\n //if listing type is updated. we have to clear and disable certain fields based on selection\r\n newValue = isNumeric && isNumeric === true ? parseInt(e.target.value) : e.target.value;\r\n let enableOmitAddress = false;\r\n let enableListingName = true;\r\n let listingName = productItem.ListingName, omitAddress = productItem.OmitAddress;\r\n\r\n if (newValue === \"4\") {\r\n listingName = \"\";\r\n omitAddress = false;\r\n enableListingName = false;\r\n } else if (newValue === \"3\") {\r\n omitAddress = false;\r\n } else\r\n enableOmitAddress = true;\r\n\r\n productItem.ListingName = listingName;\r\n productItem.EnableListingName = enableListingName;\r\n productItem.EnableOmitAddress = enableOmitAddress;\r\n productItem.OmitAddress = omitAddress;\r\n }\r\n else {\r\n newValue = isNumeric && isNumeric === true ? parseInt(e.target.value) : e.target.value;\r\n }\r\n productItem[field] = newValue;\r\n productItem.HasChanges = true;\r\n let existingArray = this.state.LineTypeServices;\r\n let index = _.findIndex(existingArray, s => (s.ServiceNumber === productItem.ServiceNumber || s.Extension === productItem.Extension)\r\n && s.CustomerProductId === productItem.CustomerProductId);\r\n\r\n let newOptions = this.state.LineTypeServices.slice();\r\n newOptions[index] = productItem;\r\n\r\n\r\n //update grid datasource now that the 'full' datasource is up-to-date. \r\n let ListingsTemp = this.state.Listings.slice();\r\n let itmInListings = ListingsTemp.filter(resp => resp.CustomerProductId === productItem.CustomerProductId);\r\n index = _.indexOf(ListingsTemp, itmInListings);\r\n ListingsTemp[index] = productItem;\r\n this.setState({ LineTypeServices: newOptions, Listings: ListingsTemp });\r\n }\r\n updateTerminatingNumber = (productItem, e, enableVal) => {\r\n let newVal = ''\r\n if (enableVal) {\r\n if (e.sender.element[0].value === '' || isNaN(e.sender.element[0].value)) {\r\n newVal = '';\r\n e.sender.element[0].value = '';\r\n } else\r\n newVal = parseInt(e.sender.element[0].value);\r\n\r\n productItem.TerminatingNumber = newVal;\r\n productItem.HasChanges = true;\r\n let existingArray = this.state.LineTypeServices;\r\n let index = _.findIndex(existingArray, s => s.CustomerProductId === productItem.CustomerProductId);\r\n\r\n let newOptions = this.state.LineTypeServices.slice();\r\n newOptions[index] = productItem;\r\n\r\n\r\n //update grid datasource now that the 'full' datasource is up-to-date. \r\n let ListingsTemp = this.state.Listings.slice();\r\n let itmInListings = ListingsTemp.filter(resp => resp.CustomerProductId === productItem.CustomerProductId);\r\n index = _.indexOf(ListingsTemp, itmInListings);\r\n ListingsTemp[index] = productItem;\r\n this.setState({ LineTypeServices: newOptions, Listings: ListingsTemp });\r\n }\r\n }\r\n\r\n getListings = () => {\r\n let gridListings = this.sortListings(this.state.Sort, this.state.Listings);\r\n return gridListings;\r\n }\r\n\r\n sortListings(sort, Listings = null) {\r\n let returnObj = [];\r\n if (this.state.Listings) {\r\n if (Listings == null) Listings = this.state.Listings.slice();\r\n let sortedSet = orderBy(Listings, sort);\r\n returnObj = sortedSet;\r\n if (sort.length) {\r\n returnObj = helper.blanksAfterZ(sortedSet, sort);\r\n }\r\n }\r\n return returnObj;\r\n }\r\n\r\n async sortChange(event) {\r\n await this.setState({\r\n Listings: this.sortListings(event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n //console.log(\"Search Text: \" + searchText);\r\n let fullDetails = this.state.LineTypeServices;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'ServiceNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Extension', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'LineName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'PartDescription', operator: 'contains', value: searchText, ignoreCase: true }\r\n ]\r\n });\r\n\r\n this.setState({ Listings: services })\r\n }\r\n else {\r\n this.setState({ Listings: fullDetails });\r\n }\r\n\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.MomentumAccountNumber === '') {\r\n return macdHelper.locationSelectLabel(this.state.MomentumAccountNumber);\r\n }\r\n else if (this.state.loading) {\r\n return (\r\n \r\n );\r\n }\r\n else if(!this.state.loading && this.state.Listings.length === 0) return

    There are no applicable changes available for services at this location. Please review your search criteria.

    \r\n else {\r\n return (\r\n
    \r\n

    {this.state.FirstNametoBeSaved?null:\"First Name is empty\"}

    \r\n

    {this.state.LastNametoBeSaved?null:\"Last Name is empty\"}

    \r\n

    {this.state.EmailtoBeSaved?null:\"Email is empty\"}

    \r\n

    {this.state.ListingNametoBeSaved?null:\"Listing Name is empty\"}

    \r\n

    {this.state.CNAMtoBeSaved?null:\"CNAM is empty\"}

    \r\n \r\n {this.state.ValidationErrorMessages && this.state.ValidationErrorMessages.length > 0 ? : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

    Testing colmn

    \r\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 render() {\r\n\r\n return (\r\n
    \r\n
    \r\n

    Attention: This order is subject to applicable non-recurring charges.

    \r\n

    There will be a short loss of service. Devices sharing call appearances will be rebooted after submission. If the automatic reboot fails, you will be required to manually reboot telephone devices.

    \r\n

    If you are switching from an Executive, Advanced, Basic, or Smart to another Executive, Advanced, Basic, or Smart seat, please use the “Seat Type” tab. There will be no loss of service or need to reboot a device.

    \r\n

    For any virtual number requests, the terminating TN cannot be a number included in this order. You may need to issue all the virtual number requests in a separate \"Line Type\" service change.

    \r\n

    If any user level add-ons are assigned to a line, you will need to un-assign user level add-ons first. Please wait to assign user level add-ons to a number until after the service change is completed.

    \r\n

    Please check the table to see which lines receive listings and 911:

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\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
    Listings911Neither
    Auto-AttendantsAuto-AttendantsAll Other Lines
    ExecutiveExecutive
    AdvancedAdvanced
    BasicBasic
    Hunt GroupsHunt Groups
    Contact Center QueuesContact Center Queues
    Smart Numbers
    E911 DID's
    DID's
    Virtual Numbers
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {this.state.toBeSaved?:null}\r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n \r\n \r\n Cancel Order?\r\n \r\n \r\n

    Are you sure you wish to cancel this order?

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n {this.gridContent()}\r\n\r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default LineTab;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport * as helper from '../../../scripts/helper';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport * as macdHelper from '../components/macd_helper';\r\nimport _ from 'lodash';\r\nimport MACDSaveStatus from '../modals/orderResultModal';\r\nimport ValidationCell from '../components/validationCell';\r\nimport MACDSearch from '../components/macdSearch';\r\n\r\nclass ListingTab extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isCancelDialogOpen: false,\r\n gridHeight: props.GridHeight,\r\n MomentumAccountNumber: props.MomentumAccountNumber,\r\n LocationName: props.LocationName,\r\n loading: false,\r\n saving: false,\r\n error: false,\r\n //ShowStatuses: false,\r\n ListingServices: [],\r\n Listings: [],\r\n OriginalListings: [],\r\n Sort: [{ field: \"ServiceNumber\", dir: \"asc\" }],\r\n ValidationErrorMessages: []\r\n };\r\n const updateInputValue = this.updateInputValue.bind(this);\r\n\r\n class InputTextCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n const productItem = this.props.dataItem;\r\n let ReadOnlyStatus = false;\r\n if (this.props.field === \"LineEmail\" && this.props.dataItem['EnableLineEmail'] == false) ReadOnlyStatus = true;\r\n if (this.props.field === \"ListingName\" && this.props.dataItem['EnableListingName'] == false) ReadOnlyStatus = true;\r\n if (this.props.field === \"CNAM\" && this.props.dataItem['EnableCNAM'] == false) ReadOnlyStatus = true;\r\n\r\n const value = ReadOnlyStatus === true && productItem.NewLineType !== productItem.PartNum ? \"\" : this.props.dataItem[this.props.field];\r\n\r\n return (\r\n \r\n { updateInputValue(productItem, this.props.field, e); }}\r\n style={{ width: \"90%\", cursor: ReadOnlyStatus === true ? 'not-allowed' : 'text' }}\r\n value={value}>\r\n \r\n )\r\n }\r\n }\r\n\r\n class InputCheckField extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n const value = this.props.dataItem[this.props.field] == true ? true : false;\r\n const productItem = this.props.dataItem;\r\n\r\n return (\r\n \r\n { updateInputValue(productItem, this.props.field, e) }}>\r\n \r\n )\r\n }\r\n }\r\n class ListingTypeCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let value = '';\r\n value = this.props.dataItem[this.props.field];\r\n const productItem = this.props.dataItem;\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n \r\n this.ValidationCell = ValidationCell;\r\n this.InputTextCell = InputTextCell;\r\n this.InputCheckField = InputCheckField;\r\n this.ListingTypeCell = ListingTypeCell;\r\n }\r\n\r\n\r\n componentDidMount() {\r\n if (this.state.MomentumAccountNumber !== '')\r\n this.fetchListings();\r\n }\r\n\r\n async componentWillReceiveProps(props) {\r\n if (props) {\r\n if (props.MomentumAccountNumber != this.state.MomentumAccountNumber) {\r\n await this.setState({ MomentumAccountNumber: props.MomentumAccountNumber, LocationName: props.LocationName, ValidationErrorMessages: [] });\r\n this.fetchListings();\r\n }\r\n if (props.GridHeight && props.GridHeight !== this.state.gridHeight)\r\n this.setState({ gridHeight: props.GridHeight });\r\n }\r\n }\r\n\r\n handleCancel = () => {\r\n //display confirmation message\r\n let changedItems = this.state.ListingServices.filter(res => res.HasChanges === true);\r\n if (!changedItems || changedItems.length === 0) return;\r\n this.setState({ isCancelDialogOpen: true });\r\n }\r\n\r\n handleSave = async () => {\r\n let changedItems = this.state.ListingServices.filter(res => res.HasChanges === true);\r\n if (!changedItems || changedItems.length === 0) return;\r\n\r\n await this.setState({ saving: true });\r\n let apiPath = macdHelper.apiSubmitChangeListingList()\r\n let originalListings = this.state.OriginalListings;\r\n\r\n let submittedItems = changedItems.map((itm, idx) => {\r\n let oldService = originalListings.filter(res => res.CustomerProductId === itm.CustomerProductId);\r\n oldService = oldService[0];\r\n return {\r\n OldService: oldService,\r\n ListingType: itm.ListingType,\r\n ListingName: itm.ListingName,\r\n OmitAddress: itm.OmitAddress === true ? '1' : '0',\r\n }\r\n });\r\n\r\n let reqBody = {\r\n LocationAccountNumber: this.state.MomentumAccountNumber,\r\n ServiceList: submittedItems\r\n };\r\n await apiCalls.post(apiPath, 'POST', JSON.stringify(reqBody)).then((res) => {\r\n let validationErrors = [];\r\n if (res.ok === true) {\r\n this.handleSaveSuccess();\r\n } else {\r\n let responseObject = JSON.parse(res.message);\r\n if (responseObject.length && responseObject.length > 0) {\r\n //another error message response for missing value\r\n validationErrors = responseObject.map((itm, idx) => {\r\n if (itm.CustomerProductId && itm.CustomerProductId != '')\r\n return {\r\n CustomerProductId: parseInt(itm.CustomerProductId),\r\n ValidationMessage: itm.ErrorMessage\r\n }\r\n else {\r\n throw [helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)];\r\n }\r\n });\r\n } else {\r\n if (responseObject.MPOStatus && responseObject.MPOStatus.MPOErrorList && responseObject.MPOStatus.MPOErrorList.length > 0) {\r\n let ErrorList = responseObject.MPOStatus.MPOErrorList[0];\r\n let ErrorMessages = ErrorList.MPOResultText;\r\n validationErrors = ErrorMessages.map((itm, idx) => {\r\n if (itm.CustomerProductId && itm.CustomerProductId != '')\r\n return {\r\n CustomerProductId: parseInt(itm.CustomerProductId),\r\n ValidationMessage: itm.ErrorMessage\r\n }\r\n else {\r\n throw [helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)];\r\n }\r\n });\r\n }\r\n }\r\n if (validationErrors) {\r\n this.showErrorAndResetModal('Your order could not be completed due to entry errors indicated in the grid.', validationErrors);\r\n }\r\n }\r\n }).catch((msg) => {\r\n this.showErrorAndResetModal(msg);\r\n }).finally(() => {\r\n this.setState({ saving: false });\r\n });\r\n }\r\n\r\n handleSaveSuccess = async () => {\r\n await this.setState({ loading: true, ValidationErrorMessages: [], statusMessage: 'Your order has been saved and submitted successfully.' });\r\n this.props.TabHasChanges(false);\r\n this.fetchListings();\r\n }\r\n\r\n showErrorAndResetModal = (msg, ValidationErrorMessages = []) => {\r\n this.setState({ error: true, statusMessage: msg, ValidationErrorMessages: ValidationErrorMessages });\r\n }\r\n\r\n closeSaveMessage = () => {\r\n let serviceListings = this.state.ListingServices.slice();\r\n let gridListings = this.state.Listings.slice();\r\n let validationErrors = this.state.ValidationErrorMessages.slice();\r\n validationErrors.map((itm, idx) => {\r\n let itmInListings = serviceListings.filter(resp => resp.CustomerProductId === itm.CustomerProductId);\r\n let indexOfListing = _.indexOf(serviceListings, itmInListings[0]);\r\n serviceListings[indexOfListing].ValidationMessage = itm.ValidationMessage;\r\n itmInListings = gridListings.filter(resp => resp.CustomerProductId === itm.CustomerProductId);\r\n indexOfListing = _.indexOf(gridListings, itmInListings[0]);\r\n gridListings[indexOfListing].ValidationMessage = itm.ValidationMessage;\r\n });\r\n this.setState({ error: false, statusMessage: '', Listings: gridListings, ListingServices: serviceListings });\r\n }\r\n\r\n CancelYesAction = async () => {\r\n //clear all editable fields\r\n await this.fetchListings();\r\n this.props.TabHasChanges(false);\r\n this.setState({ isCancelDialogOpen: false, ValidationErrorMessages: [] });\r\n\r\n }\r\n\r\n closeCancelDialog = () => {\r\n this.setState({ isCancelDialogOpen: false });\r\n }\r\n\r\n updateInputValue = (productItem, field, e, isNumeric) => {\r\n let newValue = \"\";\r\n if (field === \"OmitAddress\") {\r\n newValue = productItem[field] === true ? false : true;\r\n } else if (field === \"ListingType\") {\r\n //if listing type is updated. we have to clear and disable certain fields based on selection\r\n newValue = isNumeric && isNumeric == true ? parseInt(e.target.value) : e.target.value;\r\n let enableOmitAddress = false;\r\n let enableListingName = true;\r\n let listingName = productItem.ListingName, omitAddress = productItem.OmitAddress;\r\n\r\n if (newValue === \"4\") {\r\n listingName = \"\";\r\n omitAddress = false;\r\n enableListingName = false;\r\n } else if (newValue === \"3\") {\r\n omitAddress = false;\r\n } else\r\n enableOmitAddress = true;\r\n\r\n productItem.ListingName = listingName;\r\n productItem.EnableListingName = enableListingName;\r\n productItem.EnableOmitAddress = enableOmitAddress;\r\n productItem.OmitAddress = omitAddress;\r\n } else {\r\n // input cell\r\n newValue = isNumeric && isNumeric == true ? parseInt(e.target.value) : e.target.value;\r\n }\r\n productItem[field] = newValue;\r\n\r\n let existingArray = this.state.ListingServices;\r\n let index = _.findIndex(existingArray, s => s.CustomerProductId === productItem.CustomerProductId);\r\n\r\n let newOptions = this.state.ListingServices.slice();\r\n newOptions[index] = productItem;\r\n //update grid datasource now that the 'full' datasource is up-to-date. \r\n let ListingsTemp = this.state.Listings.slice();\r\n let itmInListings = ListingsTemp.filter(resp => resp.CustomerProductId === productItem.CustomerProductId);\r\n index = _.indexOf(ListingsTemp, itmInListings);\r\n ListingsTemp[index] = productItem;\r\n\r\n let originalItem = this.state.OriginalListings.filter(res => res.CustomerProductId === productItem.CustomerProductId);\r\n if (originalItem && originalItem.length > 0) {\r\n originalItem = originalItem[0];\r\n if (originalItem.ListingType !== productItem.ListingType || originalItem.ListingName !== productItem.ListingName || originalItem.OmitAddress !== productItem.OmitAddress) {\r\n productItem.HasChanges = true;\r\n } else productItem.HasChanges = false;\r\n }\r\n\r\n if (newOptions && newOptions.filter(res => res.HasChanges === true).length === 0) this.props.TabHasChanges(false);\r\n else this.props.TabHasChanges(true);\r\n this.setState({ ListingServices: newOptions, Listings: ListingsTemp });\r\n }\r\n\r\n fetchListings = async () => {\r\n await this.setState({ loading: true });\r\n let locationName = this.state.LocationName;\r\n let apiPath = macdHelper.apiGetChangeListingList(this.state.MomentumAccountNumber);\r\n let [responseData, unformattedResponse] = await apiCalls.fetchData(apiPath).then((data) => {\r\n if (data) {\r\n let formattedData = data.ServiceList.map((itm, idx) => {\r\n let newItm = {\r\n CustomerProductId: itm.CustomerProductId,\r\n CatalogItemId: itm.CatalogItemId,\r\n PartDescription: itm.PartDescription,\r\n PartNum: itm.PartNum,\r\n ServiceNumber: itm.ServiceNumber,\r\n Extension: itm.Extension,\r\n Location: locationName,\r\n LineName: itm.LineName,\r\n LineFirstName: itm.LineFirstName,\r\n LineLastName: itm.LineLastName,\r\n ListingName: itm.ListingName,\r\n ListingType: itm.ListingType,\r\n OmitAddress: !!+itm.OmitAddress,\r\n CNAM: itm.CNAM,\r\n TerminatingNumber: itm.TerminatingNumber,\r\n OldLineEmail: itm.LineEmail,\r\n LineEmail: itm.LineEmail,\r\n // NewLineTypeList: this.NewLineTypeOptions(itm.NewTypeList), \r\n NewLineType: itm.PartNum,\r\n NewCatalogItemId: itm.CatalogItemId,\r\n NewTypeDescription: itm.PartDescription,\r\n HasChanges: false,\r\n ValidationMessage: '',\r\n EnableListingType: itm.EnableListingType ? itm.EnableListingType : true,\r\n EnableListingName: itm.EnableListingType ? itm.EnableListingType : (itm.ListingType === '4' ? false : true),\r\n EnableOmitAddress: itm.EnableOmitAddress ? itm.EnableOmitAddress : (itm.ListingType === '4' || itm.ListingType === '3' ? false : true)\r\n }\r\n return newItm;\r\n });\r\n data.ServiceList.forEach(itm => itm.OmitAddress = !!+itm.OmitAddress);\r\n return [formattedData, data.ServiceList];\r\n } else {\r\n return [[], []];\r\n }\r\n });\r\n await this.setState({ Listings: responseData, ListingServices: responseData, OriginalListings: unformattedResponse, loading: false });\r\n }\r\n\r\n sortListings(sort, Listings = null) {\r\n let returnObj = [];\r\n if (this.state.Listings) {\r\n if (Listings == null) Listings = this.state.Listings.slice();\r\n let sortedSet = orderBy(Listings, sort);\r\n returnObj = sortedSet;\r\n if (sort.length) {\r\n returnObj = helper.blanksAfterZ(sortedSet, sort);\r\n }\r\n }\r\n return returnObj;\r\n }\r\n\r\n sortChange = (event) => {\r\n this.setState({\r\n Listings: this.sortListings(event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.ListingServices;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'ServiceNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Extension', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'LineName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'PartDescription', operator: 'contains', value: searchText, ignoreCase: true }\r\n ]\r\n });\r\n\r\n this.setState({ Listings: services })\r\n }\r\n else {\r\n this.setState({ Listings: fullDetails });\r\n }\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.MomentumAccountNumber == '') {\r\n return macdHelper.locationSelectLabel(this.state.MomentumAccountNumber);\r\n }\r\n if (this.state.loading) return \r\n else if(!this.state.loading && this.state.Listings.length === 0) return

    There are no applicable changes available for services at this location. Please review your search criteria.

    \r\n else if (!this.state.loading && this.state.Listings && this.state.Listings.length > 0) {\r\n return (\r\n \r\n {this.state.ValidationErrorMessages && this.state.ValidationErrorMessages.length > 0 ? : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n Cancel Order?\r\n \r\n \r\n

    Are you sure you wish to cancel this order?

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n\r\n {this.gridContent()}\r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default ListingTab;\r\n","import React, { Component } from 'react';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\nimport { DataLoadingSpinner } from '../components/spinners'\r\n\r\nexport class SavingMessageControlE911 extends Component {\r\n render() {\r\n let successMessage = \"\";\r\n if(this.props.showSuccess){\r\n successMessage = (\r\n
    {this.props.SuccessMessage}
    \r\n )\r\n }\r\n \r\n let loadingMessage = \"\";\r\n if(this.props.showLoading){\r\n loadingMessage = ()\r\n }\r\n \r\n let errorMessage = \"\";\r\n if(this.props.showError){\r\n errorMessage = (
    {this.props.ErrorMessage}
    )\r\n }\r\n \r\n return (\r\n
    \r\n {successMessage}\r\n {loadingMessage}\r\n {errorMessage}\r\n
    \r\n );\r\n }\r\n \r\n};","import React, { Component } from 'react';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\nimport { fetchData, post } from '../requests/api_calls';\r\nimport * as config from '../requests/config';\r\nimport * as helper from '../scripts/helper';\r\nimport { SavingMessageControlE911 } from './SavingMessageControlE911';\r\n\r\nconst BuildingValue= \"BuildingValue\",\r\n City= \"City\",\r\n FloorValue= \"FloorValue\",\r\n State= \"State\",\r\n Unit= \"Unit\",\r\n UnitValue= \"UnitValue\",\r\n ZipCode= \"ZipCode\",\r\n StreetName= \"StreetName\",\r\n StreetNumber = \"StreetNumber\",\r\n HouseNumber= \"HouseNumber\",\r\n PostDirectional= \"PostDirectional\",\r\n PreDirectional= \"PreDirectional\",\r\n StreetType=\"StreetType\",\r\n StreetSuffix= \"StreetSuffix\",\r\n Street1= \"Street1\",\r\n Street2= \"Street2\",\r\n PhoneNumber= \"PhoneNumber\";\r\n\r\n\r\nexport default class AddressFormE911 extends Component {\r\n initialState = (props) => {\r\n let originalAddress = props.address;\r\n let addressEntry = {\r\n AddressId: originalAddress.AddressId,\r\n CustomerProductId: originalAddress.CustomerProductId,\r\n StreetNumber: originalAddress.StreetNumber,\r\n PreDirectional: originalAddress.PreDirectional,\r\n StreetName: originalAddress.StreetName,\r\n StreetSuffix: originalAddress.StreetSuffix,\r\n City: originalAddress.City,\r\n State: originalAddress.State,\r\n ZipCode: originalAddress.ZipCode,\r\n Street1: originalAddress.Street1,\r\n Street2: originalAddress.Street2,\r\n Unit: originalAddress.Unit,\r\n UnitValue: originalAddress.UnitValue,\r\n FloorValue: originalAddress.FloorValue,\r\n BuildingValue: originalAddress.BuildingValue,\r\n IsActive: originalAddress.IsActive\r\n };\r\n return {\r\n parentList: props.parentList ? props.parentList : null,\r\n index: props.parentIndex ? props.parentIndex : null,\r\n originalAddress: props.address,\r\n addressEntry: addressEntry,\r\n validateInComponent: props.validateInComponent === true ? true : false,\r\n validateTN: props.validateInComponent === true && props.validateTN === true ? true : false,\r\n displayTopMessage: props.displayTopMessage === true ? true : false,\r\n TopMessage: props.TopMessage ? props.TopMessage: '',\r\n PhoneNumber: props.PhoneNumber,\r\n savingShowError: props.address.ValidationMessage === undefined || props.address.ValidationMessage === '' ? false : true,\r\n savingShowSuccess: false,\r\n savingLoading: false,\r\n savingErrorMessage: props.address.ValidationMessage === undefined || props.address.ValidationMessage === '' ? '' : props.address.ValidationMessage,\r\n CustomerId: props.CustomerId ? props.CustomerId : 0,\r\n ReadOnly: props.ReadOnly === undefined || !props.ReadOnly ? false : props.ReadOnly,\r\n apiPath: props.apiPath\r\n };\r\n }\r\n constructor(props) {\r\n super(props);\r\n this.state = this.initialState(props);\r\n this.saveInList = this.saveInList.bind(this);\r\n this.handleToggleEditList911 = this.handleToggleEditList911.bind(this);\r\n this.IsBlankAddress = this.IsBlankAddress.bind(this);\r\n }\r\n\r\n componentWillReceiveProps(props) {\r\n if (props.address != this.state.addressEntry) {\r\n let updatedEntry = props.address;\r\n this.setState({\r\n addressEntry: updatedEntry,\r\n savingErrorMessage: props.address.ValidationMessage\r\n });\r\n }\r\n }\r\n\r\n handleOnChange=(fieldName, event)=>{\r\n let state = {...this.state};\r\n let address = state.addressEntry;\r\n\r\n address[fieldName] = event.target.value;\r\n \r\n address.Street1 = helper.CreateFullStreet1(address);\r\n address.Street2 = helper.CreateFullStreet2(address);\r\n\r\n if (state.parentList) {\r\n let index = this.state.index;\r\n state.parentList[index] = address;\r\n } \r\n state.addressEntry = address;\r\n this.setState(state);\r\n } \r\n\r\n saveInList = async() => {\r\n //validate address\r\n if (this.state.validateInComponent) {\r\n this.setState({\r\n savingLoading: true\r\n });\r\n let addressObject = this.GetAddressObject(this.state.addressEntry, this.state.PhoneNumber);\r\n addressObject.Building = helper.ValueOfBuildingTag;\r\n \r\n if (!this.IsBlankAddress(addressObject)) { \r\n let response = await post(this.state.apiPath, 'POST', JSON.stringify(addressObject));\r\n this.props.UpdateEntry((response.ok === true), (response.ok === true ? JSON.parse(response.message).AddressId : 0), this.state.addressEntry, (response.ok === true ? JSON.parse(response.message).ErrorMessage : 'Address was not saved successfully. Please review your entry'));\r\n if (response.ok === true) {\r\n this.setState({savingErrorMessage: '', savingShowSuccess: true, showError: false, savingLoading: false});\r\n } else {\r\n this.setState({\r\n savingShowSuccess: false,\r\n savingShowError: true,\r\n showError: true,\r\n ErrorMessage: 'Address was not saved successfully. Please review your entry.',\r\n savingLoading: false\r\n });\r\n }\r\n } else {\r\n this.props.UpdateEntry(true, 0, this.state.addressEntry, '');\r\n this.setState({savingLoading: false, ErrorMessage: '', showError: false, savingShowSuccess: false, savingShowError: false});\r\n }\r\n } else {\r\n this.props.UpdateEntry(true, this.state.addressEntry);\r\n }\r\n }\r\n\r\n IsBlankAddress = (addressEntry) => {\r\n if (addressEntry && helper.CreateFullStreet1(addressEntry) === '' && helper.CreateFullStreet1(addressEntry) === '' && addressEntry.City === '' && addressEntry.State === '' && addressEntry.ZipCode === '')\r\n return true;\r\n else \r\n return false;\r\n }\r\n\r\n GetAddressObject = (addressEntry, PhoneNumber) => {\r\n return {\r\n AddressId: addressEntry.AddressId,\r\n IsActive: false,\r\n Building: addressEntry.Building,\r\n StreetNumber: addressEntry.StreetNumber,\r\n Street2: helper.CreateFullStreet2(addressEntry),\r\n Street1: helper.CreateFullStreet1(addressEntry),\r\n StreetSuffix: addressEntry.StreetSuffix,\r\n PostDirectional: addressEntry.PostDirectional === undefined ? '' : addressEntry.PostDirectional,\r\n PreDirectional: addressEntry.PreDirectional === undefined ? '' : addressEntry.PreDirectional,\r\n StreetName: addressEntry.StreetName,\r\n ZipCode: addressEntry.ZipCode,\r\n State: addressEntry.State,\r\n City: addressEntry.City,\r\n BuildingValue: addressEntry.BuildingValue,\r\n FloorValue: addressEntry.FloorValue,\r\n Unit: addressEntry.Unit,\r\n UnitValue: addressEntry.UnitValue,\r\n PhoneNumber: PhoneNumber\r\n };\r\n }\r\n\r\n handleToggleEditList911 = () => {\r\n //this.props.ToggleEditList\r\n let originalAddress = this.stateoriginalAddress;\r\n this.setState({address: originalAddress});\r\n if (this.props.ToggleEditList) {\r\n this.props.ToggleEditList();\r\n }\r\n }\r\n\r\n ClearAddress = () => {\r\n if (this.state.ReadOnly === false)\r\n {\r\n let clearAddress = {\r\n AddressId: 0,\r\n IsActive: false,\r\n Building: '',\r\n StreetNumber: '',\r\n Street2: '',\r\n Street1: '',\r\n StreetSuffix: '',\r\n PostDirectional: '',\r\n PreDirectional: '',\r\n StreetName: '',\r\n ZipCode: '',\r\n State: '',\r\n City: '',\r\n BuildingValue: '',\r\n FloorValue: '',\r\n Unit: '',\r\n UnitValue: '',\r\n PhoneNumber: this.state.PhoneNumber\r\n };\r\n this.setState({addressEntry: clearAddress});\r\n }\r\n }\r\n\r\n ResetToDefaultAddress = () => {\r\n let state = this.state;\r\n //this.setState({addressEntry: state.originalAddress });\r\n }\r\n\r\n render() {\r\n let e911Address = this.state.addressEntry;\r\n let saveElement = \"\";\r\n let closeElement = \"\";\r\n if (e911Address === null || e911Address === undefined)\r\n return null;\r\n \r\n if (this.state.ReadOnly === false)\r\n saveElement = (); \r\n\r\n closeElement = ();\r\n \r\n return (\r\n \r\n \r\n
    \r\n
    \r\n

    {this.state.TopMessage}

    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(StreetNumber, x) }} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(StreetName, x) }}/>\r\n
    \r\n
    \r\n
    \r\n {/*
    \r\n \r\n { this.handleOnChange(indexInArray, StreetName, type, x) }}/>\r\n
    */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(UnitValue, x) }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(FloorValue, x) }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(BuildingValue, x) }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(City, x) }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n { this.handleOnChange(ZipCode, x) }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {saveElement}\r\n {closeElement}\r\n
    \r\n \r\n
    \r\n \r\n \r\n );\r\n }\r\n};","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport PricebookModal from './../modals/pricebook';\r\nimport * as helper from '../../../scripts/helper';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport * as macdHelper from '../components/macd_helper';\r\nimport _ from 'lodash';\r\nimport MACDSaveStatus from '../modals/orderResultModal';\r\nimport ValidationCell from '../components/validationCell';\r\nimport MACDSearch from '../components/macdSearch';\r\nimport AddressFormE911 from '../../../components/e911AddressForm';\r\n\r\nexport default class SeatTab extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isCancelDialogOpen: false,\r\n gridHeight: (window.innerHeight - 200),\r\n MomentumAccountNumber: props.MomentumAccountNumber,\r\n LocationName: props.LocationName,\r\n loading: false,\r\n saving: false,\r\n error: false,\r\n //ShowStatuses: false,\r\n SeatTypeServices: [],\r\n Listings: [],\r\n OriginalListings: [],\r\n Sort: [{ field: \"ServiceNumber\", dir: \"asc\" }],\r\n ValidationErrorMessages: [],\r\n restrictedUSOCS: require('../components/DisabledUSOCs.json'),\r\n productSetTypeName: '',\r\n showE911Modal: false,\r\n e911AddressItem: {},\r\n e911Index: -1,\r\n showE911Column: false\r\n };\r\n this.searchListings = this.searchListings.bind(this);\r\n const updateNewSeatType = this.updateNewSeatType.bind(this);\r\n const showE911Modal = this.showE911Modal.bind(this);\r\n this.closeE911Modal = this.closeE911Modal.bind(this);\r\n this.saveE911Address = this.saveE911Address.bind(this);\r\n this.handleE911AddressUpdate = this.handleE911AddressUpdate.bind(this);\r\n\r\n class SeatTypeSelectCell extends GridCell {\r\n\r\n render() {\r\n let value = this.props.dataItem['NewSeatType'];\r\n const productItem = this.props.dataItem;\r\n const NewSeatTypeOptionsList = this.props.dataItem['NewSeatList'];\r\n const AddOnCount = parseInt(this.props.dataItem[\"AddonCount\"]);\r\n return (\r\n 0 ? \"This record cannot be updated until all Add-Ons are removed from this service!\" : \"\"}>\r\n \r\n \r\n )\r\n\r\n }\r\n };\r\n\r\n class E911AddressCell extends GridCell {\r\n render() {\r\n let addressDisplay = '';\r\n const productItem = this.props.dataItem; \r\n if (productItem.Has911 === true)\r\n {\r\n let address1 = helper.CreateFullStreet1(productItem.address);\r\n let address2 = helper.CreateFullStreet2(productItem.address);\r\n let address3 = productItem.address ? `${productItem.address.City !== undefined ? productItem.address.City : ''},${productItem.address.State !== undefined ? productItem.address.State : ''} ${productItem.address.ZipCode !== undefined ? productItem.address.ZipCode : ''}` : '';\r\n if (address1 !== '' && address2 !== '' && address3 != ', ')\r\n addressDisplay = ({address1}
    {address2}
    {address3}
    )\r\n else if (address1 !== '' && address3 !== ', ')\r\n addressDisplay = ({address1}
    {address3}
    )\r\n else if (address1 !== '' && address2 !== '')\r\n addressDisplay = ({address1}
    {address2}
    )\r\n else if (address2 !== '' && address3 !== ', ')\r\n addressDisplay = ({address2}
    {address3}
    )\r\n else if (address1 !== '')\r\n addressDisplay = ({address1});\r\n else if (address2 !== '')\r\n addressDisplay = ({address2});\r\n else if (address3 !== ', ')\r\n addressDisplay = ({address3});\r\n else\r\n addressDisplay = (Click to add an E911 Address)\r\n }\r\n return (\r\n \r\n showE911Modal(productItem)}>\r\n {addressDisplay}\r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n this.SeatTypeSelectCell = SeatTypeSelectCell;\r\n this.ValidationCell = ValidationCell;\r\n this.E911AddressCell = E911AddressCell;\r\n }\r\n\r\n\r\n componentDidMount() {\r\n if (this.state.MomentumAccountNumber !== '')\r\n this.fetchListings();\r\n }\r\n\r\n async componentWillReceiveProps(props) {\r\n if (props) {\r\n if (props.MomentumAccountNumber !== this.state.MomentumAccountNumber) {\r\n await this.setState({ MomentumAccountNumber: props.MomentumAccountNumber, LocationName: props.LocationName, ValidationErrorMessages: [] });\r\n this.fetchListings();\r\n }\r\n if (props.GridHeight && props.GridHeight !== this.state.gridHeight) \r\n this.setState({gridHeight: props.GridHeight});\r\n }\r\n }\r\n\r\n setProductSetTypeName = (productSetType) => {\r\n this.setState({productSetTypeName: productSetType});\r\n }\r\n\r\n handleCancel = () => {\r\n //display confirmation message\r\n let changedItems = this.state.SeatTypeServices.filter(res => res.HasChanges === true);\r\n if (!changedItems || changedItems.length === 0) return;\r\n this.setState({ isCancelDialogOpen: true });\r\n }\r\n\r\n handleSave = async () => {\r\n let changedItems = this.state.SeatTypeServices.filter(res => res.HasChanges === true);\r\n if (!changedItems || changedItems.length === 0) return;\r\n await this.setState({ saving: true });\r\n let apiPath = macdHelper.apiSubmitChangeSeatType();\r\n let originalListings = this.state.OriginalListings;\r\n\r\n let submittedItems = changedItems.map((itm, idx) => {\r\n let oldService = originalListings.filter(res => res.CustomerProductId === itm.CustomerProductId);\r\n oldService = oldService[0];\r\n let selectedSeat = oldService.NewSeatList.filter(res => res.PartNum === itm.NewSeatType);\r\n return {\r\n OldService: oldService,\r\n NewCatalogItemId: selectedSeat[0].CatalogItemId,\r\n Address: itm.Has911 === true ? itm.address : null,\r\n E911AddressId: itm.Has911 === true ? itm.Temp911AddressId : null\r\n }\r\n });\r\n\r\n let reqBody = {\r\n LocationAccountNumber: this.state.MomentumAccountNumber,\r\n ServiceList: submittedItems\r\n };\r\n await apiCalls.post(apiPath, 'POST', JSON.stringify(reqBody)).then((res) => {\r\n let validationErrors = [];\r\n if (res.ok === true) {\r\n this.handleSaveSuccess();\r\n } else {\r\n if (helper.IsJsonString(res.message))\r\n {\r\n let responseObject = JSON.parse(res.message);\r\n if (responseObject.length && responseObject.length > 0) {\r\n //another error message response for missing value\r\n validationErrors = responseObject.map((itm, idx) => {\r\n if (itm.CustomerProductId && itm.CustomerProductId !== '')\r\n return {\r\n CustomerProductId: parseInt(itm.CustomerProductId),\r\n ValidationMessage: helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)\r\n }\r\n else {\r\n throw [helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)];\r\n }\r\n });\r\n } else {\r\n if (responseObject.MPOStatus && responseObject.MPOStatus.MPOErrorList && responseObject.MPOStatus.MPOErrorList.length > 0) {\r\n let ErrorList = responseObject.MPOStatus.MPOErrorList[0];\r\n let ErrorMessages = ErrorList.MPOResultText;\r\n validationErrors = ErrorMessages.map((itm, idx) => {\r\n if (itm.CustomerProductId && itm.CustomerProductId !== '')\r\n return {\r\n CustomerProductId: parseInt(itm.CustomerProductId),\r\n ValidationMessage: helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)\r\n }\r\n else {\r\n throw [helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)];\r\n }\r\n });\r\n }\r\n }\r\n if (validationErrors) {\r\n this.showErrorAndResetModal('Your order could not be completed due to entry errors indicated in the grid.', validationErrors);\r\n }\r\n } else {\r\n this.showErrorAndResetModal(res.message);\r\n }\r\n }\r\n }).catch((msg) => {\r\n this.showErrorAndResetModal(msg);\r\n }).finally(() => {\r\n this.setState({ saving: false });\r\n });\r\n }\r\n\r\n handleSaveSuccess = async () => {\r\n await this.setState({ \r\n loading: true, \r\n ValidationErrorMessages: [], \r\n statusMessage: 'Your order has been saved and submitted successfully.', \r\n showE911Column: false, \r\n e911AddressItem: {}, \r\n e911Index: -1 \r\n });\r\n this.props.TabHasChanges(false);\r\n this.fetchListings();\r\n }\r\n\r\n showErrorAndResetModal = (msg, ValidationErrorMessages = []) => {\r\n this.setState({ error: true, statusMessage: msg, ValidationErrorMessages: ValidationErrorMessages });\r\n }\r\n\r\n closeSaveMessage = () => {\r\n let serviceListings = this.state.SeatTypeServices.slice();\r\n let gridListings = this.state.Listings.slice();\r\n let validationErrors = this.state.ValidationErrorMessages.slice();\r\n validationErrors.map((itm, idx) => {\r\n let itmInListings = serviceListings.filter(resp => resp.CustomerProductId === itm.CustomerProductId);\r\n let indexOfListing = _.indexOf(serviceListings, itmInListings[0]);\r\n serviceListings[indexOfListing].ValidationMessage = itm.ValidationMessage;\r\n itmInListings = gridListings.filter(resp => resp.CustomerProductId === itm.CustomerProductId);\r\n indexOfListing = _.indexOf(gridListings, itmInListings[0]);\r\n gridListings[indexOfListing].ValidationMessage = itm.ValidationMessage;\r\n });\r\n this.setState({ error: false, statusMessage: '', Listings: gridListings, SeatTypeServices: serviceListings });\r\n }\r\n\r\n CancelYesAction = async () => {\r\n //clear all editable fields\r\n await this.fetchListings();\r\n this.props.TabHasChanges(false);\r\n this.setState({ isCancelDialogOpen: false, ValidationErrorMessages: [], showE911Column: false, e911AddressItem: {}, e911Index: -1 });\r\n\r\n }\r\n\r\n closeCancelDialog = () => {\r\n this.setState({ isCancelDialogOpen: false });\r\n }\r\n\r\n updateNewSeatType = async (productItem, field, e) => {\r\n let newValue = e.target.value;\r\n let showE911Column = this.state.showE911Column;\r\n let updatedListings = this.state.SeatTypeServices.slice();\r\n let itmInArray = this.state.SeatTypeServices.filter(resp => resp.CustomerProductId === productItem.CustomerProductId);\r\n if (itmInArray)\r\n itmInArray = itmInArray[0];\r\n else\r\n throw 'Could not find item';\r\n\r\n let idx = _.indexOf(this.state.SeatTypeServices, itmInArray);\r\n itmInArray[field] = newValue;\r\n if (newValue === productItem.PartNum) {\r\n itmInArray.HasChanges = false;\r\n itmInArray.Has911 = false;\r\n } else {\r\n this.props.TabHasChanges(true);\r\n itmInArray.HasChanges = true;\r\n\r\n //retrieve original listings and find a catalog item that matches the new seat type to determine if E911 address column should show\r\n let originalData = this.state.OriginalListings.filter(resp => resp.CustomerProductId === productItem.CustomerProductId);\r\n if (originalData && originalData.length > 0)\r\n originalData = originalData[0];\r\n \r\n let originalDataSI = originalData.NewSeatList.filter(resp => resp.PartNum === newValue);\r\n if (originalDataSI && originalDataSI.length > 0)\r\n originalDataSI = originalDataSI[0];\r\n if (originalDataSI.Has911 && !!+(originalDataSI.Has911) === true) {\r\n itmInArray.Has911 = true;\r\n showE911Column = true;\r\n if (itmInArray.address === null)\r\n {\r\n itmInArray.address = macdHelper.GetBlankE911AddressObject();\r\n } \r\n } else itmInArray.Has911 = false;\r\n\r\n }\r\n\r\n updatedListings[idx] = itmInArray; \r\n //update grid datasource now that the 'full' datasource is up-to-date. \r\n let ListingsTemp = this.state.Listings.slice();\r\n let itmInListings = ListingsTemp.filter(resp => resp.CustomerProductId === productItem.CustomerProductId);\r\n idx = _.indexOf(ListingsTemp, itmInListings);\r\n ListingsTemp[idx] = itmInArray;\r\n //setting if there are changes so that we can throw a warning message from the macd component on tab/location change\r\n if (updatedListings && updatedListings.filter(res => res.HasChanges === true).length === 0)\r\n this.props.TabHasChanges(false);\r\n else\r\n this.props.TabHasChanges(true);\r\n\r\n await this.setState({ SeatTypeServices: updatedListings, Listings: ListingsTemp, showE911Column: showE911Column });\r\n }\r\n\r\n fetchListings = async () => {\r\n await this.setState({ loading: true });\r\n let locationName = this.state.LocationName;\r\n let apiPath = macdHelper.apiGetChangeSeatType(this.state.MomentumAccountNumber);\r\n let [responseData, unformattedResponse] = await apiCalls.fetchData(apiPath).then((data) => {\r\n if (data) {\r\n let formattedData = data.ServiceList.map((itm, idx) => {\r\n let newItm = {\r\n CustomerProductId: itm.CustomerProductId,\r\n CatalogItemId: itm.CatalogItemId,\r\n PartDescription: itm.PartDescription,\r\n PartNum: itm.PartNum,\r\n ServiceNumber: itm.ServiceNumber,\r\n Extension: itm.Extension,\r\n Location: locationName,\r\n LineName: itm.LineName,\r\n LineFirstName: itm.LineFirstName,\r\n LineLastName: itm.LineLastName,\r\n ListingName: itm.ListingName,\r\n AddonCount: itm.AddonCount,\r\n ListingType: itm.ListingType,\r\n OmitAddress: itm.OmitAddress,\r\n CNAM: itm.CNAM,\r\n TerminatingNumber: itm.TerminatingNumber,\r\n LineEmail: itm.LineEmail,\r\n NewSeatType: itm.PartNum,\r\n NewSeatList: this.newSeatListOptions(itm.PartNum, itm.NewSeatList),\r\n HasChanges: false,\r\n ValidationMessage: '',\r\n address: macdHelper.GetBlankE911AddressObject()\r\n }\r\n return newItm;\r\n });\r\n return [formattedData, data.ServiceList];\r\n } else {\r\n return [[], []];\r\n }\r\n });\r\n await this.setState({ Listings: responseData, SeatTypeServices: responseData, OriginalListings: unformattedResponse, loading: false });\r\n }\r\n\r\n newSeatListOptions = (CurrentPartNum, NewList) => {\r\n let returnObj = [];\r\n if (NewList) {\r\n let sort = [{ field: \"PartDescription\", dir: \"asc\" }]\r\n let sortedSet = orderBy(NewList, sort);\r\n sortedSet = helper.blanksAfterZ(sortedSet, sort);\r\n let restrictedUsocs = this.state.restrictedUSOCS;\r\n let productSetType = this.state.productSetTypeName;\r\n returnObj = sortedSet.map((itm, idx) => {\r\n let restrictedItem = _.filter(restrictedUsocs, resp => resp.USOC === itm.PartNum && resp.ProductSetTypeName === productSetType);\r\n if (!restrictedItem || restrictedItem.length === 0 || restrictedItem[0].USOC === CurrentPartNum)\r\n return (\r\n \r\n )\r\n });\r\n }\r\n return returnObj;\r\n }\r\n\r\n showE911Modal = (selectedItem) => {\r\n let selectedIndex = _.indexOf(this.state.Listings, selectedItem);\r\n //selectedItem.address.IsActive = true; //setting so that the save button doesn't de-activate\r\n this.setState({showE911Modal: true, e911Index: selectedIndex, e911AddressItem: selectedItem.address});\r\n }\r\n\r\n handleE911AddressUpdate = (isSuccess, addressId, addressEntry, errorMsg) => {\r\n if (isSuccess) {\r\n this.saveE911Address(addressEntry, addressId);\r\n this.closeE911Modal();\r\n } else {\r\n addressEntry.ValidationMessage = errorMsg;\r\n this.saveE911Address(addressEntry, addressId, errorMsg);\r\n this.setState({e911AddressItem: addressEntry});\r\n }\r\n }\r\n\r\n saveE911Address = (updatedAddress, addressId = 0, errorMsg = '') => {\r\n let addressItem = this.state.e911AddressItem;\r\n let existingItem = this.state.Listings[this.state.e911Index];//.filter(resp => resp.CustomerProductId === addressItem.CustomerProductId);\r\n \r\n let newValidationErrorMessages = this.state.ValidationErrorMessages.slice();\r\n if (existingItem)\r\n {\r\n //existingItem = existingItem[0];\r\n let idx = _.indexOf(this.state.Listings, existingItem);\r\n let newListings = this.state.Listings.slice();\r\n if (addressItem.ValidationMessage !== '')\r\n {\r\n let idxMessage = _.indexOf(newValidationErrorMessages, addressItem.ValidationMessage);\r\n newValidationErrorMessages.splice(idxMessage,1);\r\n }\r\n \r\n updatedAddress.AddressId = addressId;\r\n //updatedAddress.ValidationMessage = errorMsg;\r\n if (errorMsg !== '')\r\n newValidationErrorMessages.push(errorMsg);\r\n //update displayed grid\r\n newListings[idx].address = updatedAddress;\r\n newListings[idx].Temp911AddressId = updatedAddress.AddressId;\r\n newListings[idx].ValidationMessage = errorMsg;\r\n\r\n //update the dataSource storing all changes, including those that may be hidden due to search criteria\r\n let updatedListings = this.state.SeatTypeServices.slice();\r\n let itmInArray = this.state.SeatTypeServices.filter(resp => resp.CustomerProductId === existingItem.CustomerProductId);\r\n if (itmInArray)\r\n itmInArray = itmInArray[0];\r\n else\r\n throw 'Could not find item';\r\n \r\n idx = _.indexOf(this.state.SeatTypeServices, itmInArray);\r\n itmInArray.address = updatedAddress;\r\n itmInArray.Temp911AddressId = updatedAddress.AddressId;\r\n itmInArray.ValidationMessage = errorMsg;\r\n updatedListings[idx] = itmInArray;\r\n \r\n this.setState({SeatTypeServices: updatedListings ,Listings: newListings, ValidationErrorMessages: newValidationErrorMessages});\r\n }\r\n \r\n }\r\n\r\n closeE911Modal = () => {\r\n this.setState({showE911Modal: false, e911AddressItem: {}});\r\n }\r\n\r\n\r\n sortListings(sort, Listings = null) {\r\n let returnObj = [];\r\n if (this.state.Listings) {\r\n if (Listings === null) Listings = this.state.Listings.slice();\r\n let sortedSet = orderBy(Listings, sort);\r\n returnObj = sortedSet;\r\n if (sort.length) {\r\n returnObj = helper.blanksAfterZ(sortedSet, sort);\r\n }\r\n }\r\n return returnObj;\r\n }\r\n\r\n sortChange = (event) => {\r\n this.setState({\r\n Listings: this.sortListings(event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.SeatTypeServices;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'ServiceNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Extension', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'LineName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'PartDescription', operator: 'contains', value: searchText, ignoreCase: true }\r\n ]\r\n });\r\n\r\n this.setState({ Listings: services })\r\n }\r\n else {\r\n this.setState({ Listings: fullDetails });\r\n }\r\n\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.MomentumAccountNumber === '') {\r\n return macdHelper.locationSelectLabel(this.state.MomentumAccountNumber);\r\n };\r\n if (this.state.loading) return \r\n else if(!this.state.loading && this.state.Listings.length === 0) return

    There are no applicable changes available for the seats on this location. Please review your search criteria. Note that some changes may be available only under “Line Type”.

    \r\n else if (!this.state.loading && this.state.Listings && this.state.Listings.length > 0) {\r\n let e911Width = '0px';\r\n let serviceNumberWidth = '320px'\r\n if (this.state.showE911Column) {\r\n e911Width = '200px';\r\n serviceNumberWidth = '150px'\r\n }\r\n \r\n return (\r\n \r\n {this.state.ValidationErrorMessages && this.state.ValidationErrorMessages.length > 0 ? : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n let tn = '';\r\n if (this.state.e911Index > -1)\r\n tn = this.state.Listings[this.state.e911Index].ServiceNumber;\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Update E911 Address\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Cancel Order?\r\n \r\n \r\n

    Are you sure you wish to cancel this order?

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n\r\n {this.gridContent()}\r\n
    \r\n );\r\n }\r\n};","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport * as helper from '../../../scripts/helper';\r\nimport * as macdHelper from '../components/macd_helper';\r\nimport { AutoComplete } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport MACDSaveStatus from '../modals/orderResultModal';\r\nimport ValidationCell from '../components/validationCell';\r\nimport MACDSearch from '../components/macdSearch';\r\n\r\nexport default class VirtualTab extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isCancelDialogOpen: false,\r\n gridHeight: props.GridHeight,\r\n MomentumAccountNumber: props.MomentumAccountNumber,\r\n LocationName: props.LocationName,\r\n VirtualTermServices: [],\r\n OriginalListings: [],\r\n Listings: [],\r\n loading: false,\r\n saving: false,\r\n error: false,\r\n Sort: [{ field: \"ServiceNumber\", dir: \"asc\" }],\r\n ValidationErrorMessages: []\r\n };\r\n\r\n const updateTerminatingNumber = this.updateTerminatingNumber.bind(this);\r\n\r\n class AutoCompleteCell extends GridCell {\r\n render() {\r\n if (this.props.field === \"TerminatingNumber\") {\r\n let termArray = this.props.dataItem.TermNumberList ? this.props.dataItem.TermNumberList : [];\r\n const value = this.props.dataItem[this.props.field];\r\n const productItem = this.props.dataItem;\r\n const enableVal = productItem.EditTermNumber;\r\n let autoCompleteDOM = (\r\n { updateTerminatingNumber(productItem, e, enableVal); }}\r\n />\r\n );\r\n\r\n if (this.props.dataItem.EditTermNumber) return {autoCompleteDOM}\r\n else return \r\n }\r\n }\r\n }\r\n \r\n this.ValidationCell = ValidationCell;\r\n this.InputAutoCompleteField = AutoCompleteCell;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.MomentumAccountNumber !== '')\r\n this.fetchListings();\r\n }\r\n\r\n async componentWillReceiveProps(props) {\r\n if (props) {\r\n if (props.MomentumAccountNumber !== this.state.MomentumAccountNumber) {\r\n await this.setState({ MomentumAccountNumber: props.MomentumAccountNumber, LocationName: props.LocationName });\r\n this.fetchListings();\r\n }\r\n if (props.GridHeight && props.GridHeight !== this.state.gridHeight)\r\n this.setState({ gridHeight: props.GridHeight });\r\n }\r\n }\r\n\r\n handleSaveSuccess = async () => {\r\n await this.setState({ loading: true, ValidationErrorMessages: [], statusMessage: 'Your order has been saved and submitted successfully.' });\r\n this.props.TabHasChanges(false);\r\n this.fetchListings();\r\n }\r\n\r\n showErrorAndResetModal = (msg, ValidationErrorMessages = []) => {\r\n this.setState({ error: true, statusMessage: msg, ValidationErrorMessages: ValidationErrorMessages });\r\n }\r\n\r\n closeSaveMessage = () => {\r\n let serviceListings = this.state.VirtualTermServices.slice();\r\n let gridListings = this.state.Listings.slice();\r\n let validationErrors = this.state.ValidationErrorMessages.slice();\r\n validationErrors.map((itm, idx) => {\r\n let itmInListings = serviceListings.filter(resp => resp.CustomerProductId === itm.CustomerProductId);\r\n let indexOfListing = _.indexOf(serviceListings, itmInListings[0]);\r\n serviceListings[indexOfListing].ValidationMessage = itm.ValidationMessage;\r\n itmInListings = gridListings.filter(resp => resp.CustomerProductId === itm.CustomerProductId);\r\n indexOfListing = _.indexOf(gridListings, itmInListings[0]);\r\n gridListings[indexOfListing].ValidationMessage = itm.ValidationMessage;\r\n });\r\n this.setState({ error: false, statusMessage: '', Listings: gridListings, VirtualTermServices: serviceListings });\r\n }\r\n\r\n handleCancel = () => {\r\n //display confirmation message\r\n let changedItems = this.state.VirtualTermServices.filter(res => res.HasChanges === true);\r\n if (!changedItems || changedItems.length === 0) return;\r\n this.setState({ isCancelDialogOpen: true });\r\n }\r\n\r\n closeCancelDialog = () => {\r\n this.setState({ isCancelDialogOpen: false });\r\n }\r\n\r\n CancelYesAction = async () => {\r\n //clear all editable fields\r\n await this.fetchListings();\r\n this.props.TabHasChanges(false);\r\n this.setState({ isCancelDialogOpen: false, ValidationErrorMessages: [] });\r\n\r\n }\r\n\r\n handleSave = async () => {\r\n let changedItems = this.state.VirtualTermServices.filter(res => res.HasChanges === true);\r\n if (!changedItems || changedItems.length === 0) return;\r\n await this.setState({ saving: true });\r\n let apiPath = macdHelper.apiSubmitVTN();\r\n let originalListings = this.state.OriginalListings;\r\n\r\n let submittedItems = changedItems.map((itm, idx) => {\r\n let newTermNumber = itm.FullTermList.filter(list => list.ServiceNumber === itm.TerminatingNumber)[0];\r\n let oldService = originalListings.filter(res => res.CustomerProductId === itm.CustomerProductId)[0];\r\n return {\r\n OldService: oldService,\r\n NewTermNumber: newTermNumber,\r\n }\r\n });\r\n let reqBody = {\r\n LocationAccountNumber: this.state.MomentumAccountNumber,\r\n ServiceList: submittedItems\r\n };\r\n await apiCalls.post(apiPath, 'POST', JSON.stringify(reqBody)).then((res) => {\r\n let validationErrors = [];\r\n if (res.ok === true) {\r\n this.handleSaveSuccess();\r\n } else {\r\n let responseObject = JSON.parse(res.message);\r\n // RESPONSE ARRARY\r\n if (responseObject.length && responseObject.length > 0) {\r\n validationErrors = responseObject.map((itm, idx) => {\r\n if (itm.CustomerProductId && itm.CustomerProductId !== '')\r\n return {\r\n CustomerProductId: parseInt(itm.CustomerProductId),\r\n ValidationMessage: itm.ErrorMessage\r\n }\r\n else {\r\n throw [helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)];\r\n }\r\n });\r\n } else {\r\n // RESPONSE OBJECT\r\n if (responseObject.MPOStatus && responseObject.MPOStatus.MPOErrorList && responseObject.MPOStatus.MPOErrorList.length > 0) {\r\n let ErrorList = responseObject.MPOStatus.MPOErrorList[0];\r\n let ErrorMessages = ErrorList.MPOResultText;\r\n validationErrors = ErrorMessages.map((itm, idx) => {\r\n if (itm.CustomerProductId && itm.CustomerProductId !== '')\r\n return {\r\n CustomerProductId: parseInt(itm.CustomerProductId),\r\n ValidationMessage: itm.ErrorMessage\r\n }\r\n else {\r\n throw [helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)];\r\n }\r\n });\r\n }\r\n }\r\n if (validationErrors) {\r\n this.showErrorAndResetModal('Your order could not be completed due to entry errors indicated in the grid.', validationErrors);\r\n }\r\n }\r\n }).catch((msg) => {\r\n this.showErrorAndResetModal(msg);\r\n }).finally(() => {\r\n this.setState({ saving: false });\r\n });\r\n }\r\n\r\n updateTerminatingNumber = (productItem, e, enableVal) => {\r\n let virtualTermServices = this.state.VirtualTermServices;\r\n let gridListings = this.state.Listings;\r\n let originalItem = this.state.OriginalListings.filter(res => res.CustomerProductId === productItem.CustomerProductId)[0]; // non-mutated\r\n\r\n let newVal = '';\r\n if (enableVal) {\r\n if (e.sender.element[0].value === '' || isNaN(e.sender.element[0].value)) {\r\n newVal = '';\r\n e.sender.element[0].value = '';\r\n } else {\r\n newVal = e.sender.element[0].value;\r\n }\r\n productItem.TerminatingNumber = newVal;\r\n if (productItem['TerminatingNumber'] !== originalItem['ServiceNumber'] && productItem['TerminatingNumber'] !== '') {\r\n productItem['HasChanges'] = true;\r\n } else {\r\n productItem['HasChanges'] = false;\r\n }\r\n // GRID ITEM\r\n let gridItm = gridListings.filter(itm => itm.CustomerProductId === productItem.CustomerProductId);\r\n let idx = _.indexOf(gridListings, gridItm);\r\n gridListings[idx] = productItem;\r\n // VTN SERVICES' ITEM\r\n let vtnItm = virtualTermServices.filter(itm => itm.CustomerProductId === productItem.CustomerProductId);\r\n let idx2 = _.indexOf(virtualTermServices, vtnItm);\r\n virtualTermServices[idx2] = productItem;\r\n\r\n if (virtualTermServices && virtualTermServices.filter(res => res.HasChanges === true).length === 0) {\r\n this.props.TabHasChanges(false);\r\n } else {\r\n this.props.TabHasChanges(true);\r\n };\r\n this.setState({ VirtualTermServices: virtualTermServices, Listings: gridListings });\r\n }\r\n }\r\n \r\n fetchListings = async () => {\r\n await this.setState({ loading: true });\r\n let locationName = this.state.LocationName;\r\n let apiPath = macdHelper.apiGetVTNList(this.state.MomentumAccountNumber);\r\n let [responseData, unformattedResponse] = await apiCalls.fetchData(apiPath).then((data) => {\r\n if (data) {\r\n let termNumberList = data.TermNumberList ? data.TermNumberList.map(itm => itm.ServiceNumber) : [];\r\n\r\n let formattedData = data.ServiceList.map((itm, idx) => {\r\n let newItm = {\r\n AddonCatalogTicker: itm.AddonCatalogTicker,\r\n AddonCustomerProductId: itm.AddonCustomerProductId,\r\n AddonPartDescription: itm.AddonPartDescription,\r\n AddonPartNumber: itm.AddonPartNumber,\r\n AddonServiceNumber: itm.AddonServiceNumber,\r\n AddonUserPackageId: itm.AddonUserPackageId,\r\n\r\n TerminatingNumber: itm.ServiceNumber,\r\n TermNumberList: termNumberList,\r\n FullTermList: data.TermNumberList,\r\n EditTermNumber: itm.EditTermNumber,\r\n\r\n CustomerProductId: itm.CustomerProductId,\r\n CatalogItemId: itm.CatalogItemId,\r\n PartDescription: itm.PartDescription,\r\n PartNum: itm.PartNum,\r\n Extension: itm.Extension,\r\n isExtensionOnly: itm.isExtensionOnly,\r\n Location: locationName,\r\n LineName: itm.LineName,\r\n HasChanges: false,\r\n ValidationMessage: '',\r\n }\r\n return newItm;\r\n });\r\n return [formattedData, data.ServiceList];\r\n } else {\r\n return [[], []];\r\n }\r\n });\r\n await this.setState({ Listings: responseData, VirtualTermServices: responseData, OriginalListings: unformattedResponse, loading: false });\r\n }\r\n\r\n sortListings(sort, Listings = null) {\r\n let returnObj = [];\r\n if (this.state.Listings) {\r\n if (Listings == null) Listings = this.state.Listings.slice();\r\n let sortedSet = orderBy(Listings, sort);\r\n returnObj = sortedSet;\r\n if (sort.length) {\r\n returnObj = helper.blanksAfterZ(sortedSet, sort);\r\n }\r\n }\r\n return returnObj;\r\n }\r\n\r\n sortChange = (event) => {\r\n this.setState({\r\n Listings: this.sortListings(event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n //console.log(\"Search Text: \" + searchText);\r\n let fullDetails = this.state.VirtualTermServices;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'AddonServiceNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'LineName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'AddonPartDescription', operator: 'contains', value: searchText, ignoreCase: true }\r\n ]\r\n });\r\n\r\n this.setState({ Listings: services })\r\n }\r\n else {\r\n this.setState({ Listings: fullDetails });\r\n }\r\n\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.MomentumAccountNumber == '') {\r\n return macdHelper.locationSelectLabel(this.state.MomentumAccountNumber);\r\n }\r\n \r\n if (this.state.loading) return \r\n else if(!this.state.loading && this.state.Listings.length === 0) return

    There are no applicable changes available for services at this location. Please review your search criteria.

    \r\n else if (!this.state.loading && this.state.Listings && this.state.Listings.length > 0) {\r\n return (\r\n \r\n {this.state.ValidationErrorMessages && this.state.ValidationErrorMessages.length > 0 ? : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Cancel Order?\r\n \r\n \r\n

    Are you sure you wish to cancel this order?

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n {this.gridContent()}\r\n
    \r\n );\r\n }\r\n};","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport * as helper from '../../../scripts/helper';\r\nimport * as macdHelper from '../components/macd_helper';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport WrappedCell from '../../../components/wordWrappedCell';\r\n\r\nclass MacdOrder extends Component {\r\n initialState(props) {\r\n return {\r\n OrderId: props.OrderId,\r\n MomentumAccountNumber: props.MomentumAccountNumber,\r\n MacdType: props.MacdType,\r\n Listings: [],\r\n ColumnConfig: {\r\n ShowServiceID: false,\r\n ShowLineName: false,\r\n ShowPrimaryExtension: false,\r\n ShowSeatType: false,\r\n ShowLineType: false,\r\n ShowListingType: false,\r\n ShowListingName: false,\r\n ShowOmitAddress: false,\r\n ShowAccessCode: false,\r\n ShowLineEmail: false,\r\n ShowTerminatingNumber: false,\r\n ShowCNAM: false,\r\n ShowBlockType: false,\r\n ShowExtension: false,\r\n ShowAddonPartNum: false,\r\n ShowTrunkID: false,\r\n ShowCallLimitOld: false,\r\n ShowCallLimitNew: false,\r\n ShowNewProduct: false,\r\n ShowE911Address: false,\r\n WindowWidth: '600px'\r\n },\r\n sort: [{ field: \"Product\", dir: \"desc\" }],\r\n fullListings: [],\r\n showModal: false,\r\n loading: true\r\n };\r\n }\r\n constructor(props) {\r\n super(props);\r\n this.state = this.initialState(props);\r\n this.fetchOrderDetails = this.fetchOrderDetails.bind(this);\r\n this.getColumnConfig = this.getColumnConfig.bind(this);\r\n this.handleShow = this.handleShow.bind(this);\r\n this.sortChange = this.sortChange.bind(this);\r\n\r\n class BlockTypeCell extends GridCell {\r\n render() {\r\n let blockObject = macdHelper.GetUIBlockObject(this.props.dataItem.Block);\r\n const blockDirectoryAssist = blockObject.Directory;\r\n const blockOperatorAssist = blockObject.Operator;\r\n const blockInternational = blockObject.International;\r\n const blockLongDistance = blockObject.DomesticLD;\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 class InputCheckField extends GridCell {\r\n render() {\r\n const value = this.props.dataItem[this.props.field];\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n this.BlockTypeCell = BlockTypeCell;\r\n this.InputCheckField = InputCheckField;\r\n };\r\n\r\n componentWillReceiveProps(props) {\r\n if (props.OrderId !== this.state.OrderId) {\r\n this.setState({ OrderId: props.OrderId, MacdType: props.MacdType, MomentumAccountNumber: props.MomentumAccountNumber });\r\n }\r\n }\r\n\r\n fetchOrderDetails = async () => {\r\n this.setState({ loading: true });\r\n let ColumnConfig = this.getColumnConfig(this.state.MacdType);\r\n try {\r\n let [OrderDetails, LocationDetails, LineItems, DetailItems, TrunkItems, AddressItems] = await macdHelper.RetrieveOrderDetails(this.state.OrderId);\r\n let DetailArray = [];\r\n if (DetailItems && DetailItems.length > 0) {\r\n DetailItems.map((itm, idx) => {\r\n let AddressItem = AddressItems.filter(resp => resp.AddressId === itm.Temp911AddressId)\r\n let e911Address = '';\r\n if (AddressItem && AddressItem.length > 0) {\r\n e911Address = AddressItem[0].Street1 + '\\n' + AddressItem[0].Street2 + '\\n' + AddressItem[0].City + ', ' + AddressItem[0].State + ' ' + AddressItem[0].ZipCode;\r\n //e911Address = AddressItem[0].Street1 + '\\n' + AddressItem[0].Street2 + '\\n' + Ad;\r\n }\r\n let listing = {\r\n DetailId: itm.DetailId,\r\n Product: itm.PartDescription,\r\n NewProduct: itm.NewPartDesc && itm.NewPartDesc !== '' ? itm.NewPartDesc : itm.PartDescription,\r\n ServiceID: itm.ServiceNumber,\r\n Extension: itm.Extension,\r\n LineName: itm.LineFirstName + ' ' + itm.LineLastName,\r\n Location: LocationDetails[0].LocationName,\r\n SeatType: itm.NewPartDesc,\r\n LineType: itm.NewPartDesc,\r\n ListingType: macdHelper.ConvertListingTypeNumToText(itm.ListingType),\r\n ListingName: itm.ListingName,\r\n OmitAddress: itm.OmitAddress,\r\n AccessCode: itm.AccessCode,\r\n LineEmail: itm.LineEmail,\r\n TerminatingNumber: itm.TerminatingNumber,\r\n CNAM: itm.CNAM,\r\n NewExtension: itm.Extension,\r\n Block: itm.Block,\r\n CallLimitNew: itm.IPTrunkGroupCallPathsNew,\r\n CallLimitOld: itm.IPTrunkGroupCallPaths,\r\n TrunkGroupID: itm.IPTrunkGroupID,\r\n neededOrderDetails: OrderDetails,\r\n E911Address: e911Address\r\n }\r\n DetailArray.push(listing);\r\n });\r\n }\r\n // resets the selected location value to reflect the momentum account number\r\n this.setState({ fullListings: DetailArray, Listings: DetailArray, ColumnConfig: ColumnConfig, loading: false });\r\n } catch (ex) {\r\n this.setState({ fullListings: [], Listings: [], loading: false, ColumnConfig: ColumnConfig })\r\n }\r\n }\r\n getColumnConfig = (macdType) => {\r\n switch (macdType) {\r\n case \"CHNG_SEAT_TYPE\":\r\n return {\r\n ShowServiceID: true,\r\n ShowLineName: true,\r\n ShowPrimaryExtension: true,\r\n ShowSeatType: true,\r\n ShowLineType: false,\r\n ShowListingType: false,\r\n ShowListingName: false,\r\n ShowOmitAddress: false,\r\n ShowAccessCode: false,\r\n ShowLineEmail: false,\r\n ShowTerminatingNumber: false,\r\n ShowCNAM: false,\r\n ShowBlockType: false,\r\n ShowExtension: false,\r\n ShowAddonPartNum: false,\r\n ShowTrunkID: false,\r\n ShowCallLimitOld: false,\r\n ShowCallLimitNew: false,\r\n ShowNewProduct: false,\r\n ShowE911Address: true,\r\n ModalClass: 'macd-single-extension-order-details'\r\n };\r\n case \"CHNG_CNAM\":\r\n return {\r\n ShowServiceID: true,\r\n ShowLineName: true,\r\n ShowPrimaryExtension: true,\r\n ShowSeatType: false,\r\n ShowLineType: false,\r\n ShowListingType: false,\r\n ShowListingName: false,\r\n ShowOmitAddress: false,\r\n ShowAccessCode: false,\r\n ShowLineEmail: false,\r\n ShowTerminatingNumber: false,\r\n ShowCNAM: true,\r\n ShowBlockType: false,\r\n ShowExtension: false,\r\n ShowAddonPartNum: false,\r\n ShowTrunkID: false,\r\n ShowCallLimitOld: false,\r\n ShowCallLimitNew: false,\r\n ShowNewProduct: false,\r\n ModalClass: 'macd-single-extension-order-details'\r\n }\r\n case \"CHNG_BLOCK_CHANGE\":\r\n return {\r\n ShowServiceID: true,\r\n ShowLineName: true,\r\n ShowPrimaryExtension: true,\r\n ShowSeatType: false,\r\n ShowLineType: false,\r\n ShowListingType: false,\r\n ShowListingName: false,\r\n ShowOmitAddress: false,\r\n ShowAccessCode: false,\r\n ShowLineEmail: false,\r\n ShowTerminatingNumber: false,\r\n ShowCNAM: false,\r\n ShowBlockType: true,\r\n ShowExtension: false,\r\n ShowAddonPartNum: false,\r\n ShowTrunkID: false,\r\n ShowCallLimitOld: false,\r\n ShowCallLimitNew: false,\r\n ShowNewProduct: false,\r\n ModalClass: 'macd-listing-order-details'\r\n }\r\n case \"CHNG_EXT\":\r\n return {\r\n ShowServiceID: true,\r\n ShowLineName: true,\r\n ShowPrimaryExtension: false, //don't have the 'old' extension value\r\n ShowSeatType: false,\r\n ShowLineType: false,\r\n ShowListingType: false,\r\n ShowListingName: false,\r\n ShowOmitAddress: false,\r\n ShowAccessCode: false,\r\n ShowLineEmail: false,\r\n ShowTerminatingNumber: false,\r\n ShowCNAM: false,\r\n ShowBlockType: false,\r\n ShowExtension: true,\r\n ShowAddonPartNum: false,\r\n ShowTrunkID: false,\r\n ShowCallLimitOld: false,\r\n ShowCallLimitNew: false,\r\n ShowNewProduct: false,\r\n ModalClass: 'macd-ula-order-details'\r\n }\r\n case \"CHNG_LINE_TYPE\":\r\n return {\r\n ShowServiceID: true,\r\n ShowLineName: true,\r\n ShowPrimaryExtension: true,\r\n ShowSeatType: false,\r\n ShowLineType: true,\r\n ShowListingType: true,\r\n ShowListingName: true,\r\n ShowOmitAddress: true,\r\n ShowAccessCode: true,\r\n ShowLineEmail: true,\r\n ShowTerminatingNumber: true,\r\n ShowCNAM: false,\r\n ShowBlockType: false,\r\n ShowExtension: false,\r\n ShowAddonPartNum: false,\r\n ShowTrunkID: false,\r\n ShowCallLimitOld: false,\r\n ShowCallLimitNew: false,\r\n ShowNewProduct: false,\r\n ModalClass: 'macd-listing-order-details'\r\n }\r\n case \"CHNG_LISTING\":\r\n return {\r\n ShowServiceID: true,\r\n ShowLineName: true,\r\n ShowPrimaryExtension: true,\r\n ShowSeatType: false,\r\n ShowLineType: false,\r\n ShowListingType: true,\r\n ShowListingName: true,\r\n ShowOmitAddress: true,\r\n ShowAccessCode: false,\r\n ShowLineEmail: false,\r\n ShowTerminatingNumber: false,\r\n ShowCNAM: false,\r\n ShowBlockType: false,\r\n ShowExtension: false,\r\n ShowAddonPartNum: false,\r\n ShowTrunkID: false,\r\n ShowCallLimitOld: false,\r\n ShowCallLimitNew: false,\r\n ShowNewProduct: false,\r\n ModalClass: 'macd-listing-order-details'\r\n }\r\n case \"CHNG_VIRT_TERM_NUM\":\r\n return {\r\n ShowServiceID: true,\r\n ShowLineName: true,\r\n ShowPrimaryExtension: true,\r\n ShowSeatType: false,\r\n ShowLineType: false,\r\n ShowListingType: false,\r\n ShowListingName: false,\r\n ShowOmitAddress: false,\r\n ShowAccessCode: false,\r\n ShowLineEmail: false,\r\n ShowTerminatingNumber: true,\r\n ShowCNAM: false,\r\n ShowBlockType: false,\r\n ShowAddonPartNum: false,\r\n ShowTrunkID: false,\r\n ShowCallLimitOld: false,\r\n ShowCallLimitNew: false,\r\n ShowNewProduct: false,\r\n ModalClass: 'macd-single-extension-order-details'\r\n }\r\n case \"ASSIGN_USER_ADDON\":\r\n case \"UNASSIGN_USER_ADDON\":\r\n return {\r\n ShowServiceID: true,\r\n ShowLineName: true,\r\n ShowPrimaryExtension: true,\r\n ShowSeatType: false,\r\n ShowLineType: false,\r\n ShowListingType: false,\r\n ShowListingName: false,\r\n ShowOmitAddress: false,\r\n ShowAccessCode: false,\r\n ShowLineEmail: false,\r\n ShowTerminatingNumber: false,\r\n ShowCNAM: false,\r\n ShowBlockType: false,\r\n ShowExtension: false,\r\n ShowAddonPartNum: true,\r\n ShowTrunkID: false,\r\n ShowCallLimitOld: false,\r\n ShowCallLimitNew: false,\r\n ShowNewProduct: false,\r\n ModalClass: 'macd-ula-order-details'\r\n }\r\n case \"CHNG_IPTRUNK_CP_CNT\":\r\n return {\r\n ShowServiceID: false,\r\n ShowLineName: false,\r\n ShowPrimaryExtension: false,\r\n ShowSeatType: false,\r\n ShowLineType: false,\r\n ShowListingType: false,\r\n ShowListingName: false,\r\n ShowOmitAddress: false,\r\n ShowAccessCode: false,\r\n ShowLineEmail: false,\r\n ShowTerminatingNumber: false,\r\n ShowCNAM: false,\r\n ShowBlockType: false,\r\n ShowAddonPartNum: false,\r\n ShowTrunkID: true,\r\n ShowCallLimit: true,\r\n ShowCallLimitOld: true,\r\n ShowCallLimitNew: true,\r\n ShowNewProduct: true,\r\n ModalClass: 'macd-ula-order-details'\r\n }\r\n default:\r\n //redirect b/c we don't display these orders\r\n break;\r\n }\r\n }\r\n\r\n handleShow = () => {\r\n this.fetchOrderDetails();\r\n this.setState({ showModal: true });\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n sortChange(event) {\r\n this.setState({\r\n Listings: this.sortSearchResults(event.sort),\r\n sort: event.sort\r\n });\r\n }\r\n\r\n sortSearchResults(sort, Listings = null) {\r\n if (Listings == null) Listings = this.state.Listings.slice();\r\n let sortedSet = orderBy(Listings, sort);\r\n if (sort.length) {\r\n return helper.blanksAfterZ(sortedSet, sort);\r\n } else {\r\n return sortedSet;\r\n }\r\n }\r\n gridContent = () => {\r\n if (this.state.loading) {\r\n return \r\n }\r\n else {\r\n return (\r\n
    \r\n \r\n {this.state.ColumnConfig.ShowTrunkID ? : null }\r\n \r\n {this.state.ColumnConfig.ShowNewProduct ? : null }\r\n {this.state.ColumnConfig.ShowServiceID ? : null } \r\n {this.state.ColumnConfig.ShowPrimaryExtension ? : null}\r\n {this.state.ColumnConfig.ShowLineName ? : null }\r\n \r\n {this.state.ColumnConfig.ShowSeatType ? : null}\r\n {this.state.ColumnConfig.ShowLineType ? : null}\r\n {this.state.ColumnConfig.ShowListingType ? : null}\r\n {this.state.ColumnConfig.ShowListingName ? : null}\r\n {this.state.ColumnConfig.ShowOmitAddress ? : null}\r\n {this.state.ColumnConfig.ShowAccessCode ? : null}\r\n {this.state.ColumnConfig.ShowLineEmail ? : null}\r\n {this.state.ColumnConfig.ShowTerminatingNumber ? : null}\r\n {this.state.ColumnConfig.ShowCNAM ? : null}\r\n {this.state.ColumnConfig.ShowExtension ? : null}\r\n {this.state.ColumnConfig.ShowBlockType ? : null}\r\n {this.state.ColumnConfig.ShowAddonPartNum ? : null}\r\n {this.state.ColumnConfig.ShowLineTypeOld ? : null}\r\n {this.state.ColumnConfig.ShowCallLimitOld ? : null }\r\n {this.state.ColumnConfig.ShowCallLimitNew ? : null }\r\n {this.state.ColumnConfig.ShowE911Address ? : null }\r\n \r\n
    \r\n\r\n )\r\n }\r\n }\r\n\r\n render() {\r\n let button = '';\r\n button = ( this.handleShow()} >View);\r\n let classNames = \"macd-order-details \" + this.state.ColumnConfig.ModalClass;\r\n return (\r\n \r\n {button}\r\n { this.setState({ showModal: !this.state.showModal }) }} >\r\n \r\n {this.state.MacdType} Order Details\r\n \r\n \r\n {this.gridContent()}\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\nexport default MacdOrder;","import React from 'react';\r\n\r\nexport const filtercell = (data, defaultItem) => {\r\n return class extends React.Component {\r\n hasValue(value) {\r\n return value && value !== defaultItem;\r\n };\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n };\r\n}","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport * as helper from '../../../scripts/helper';\r\nimport * as macdHelper from './macd_helper';\r\nimport MacdOrder from '../modals/macd_order';\r\nimport { filtercell } from '../components/dropdownFilter';\r\nimport WrappedCell from '../../../components/wordWrappedCell';\r\nimport { withRouter } from \"react-router\";\r\n\r\nclass MacdOrderListings extends Component {\r\n\r\n initialState = (props) => {\r\n\r\n return {\r\n ListingPage: props.ListingPage,\r\n MomentumAccountNumber: props.MomentumAccountNumber,\r\n searchStatus: \"\",\r\n searchOrderId: \"\",\r\n searchMACDType: \"\",\r\n searchAcctNumber: \"\",\r\n searchCustomerName: \"\",\r\n searchCreated: \"\",\r\n searchCreatedBy: \"\",\r\n MACDListings: [],\r\n gridHeight: props.ListingPage === 'Open Requests' ? props.GridHeight : props.GridHeight + 150,\r\n sort: [{ field: \"OrderId\", dir: \"desc\" }],\r\n useFilter: true,\r\n filter: { logic: \"and\", filters: [] },\r\n loading: false,\r\n showOk: false,\r\n deleting: false,\r\n isConfirmationDialogOpen: false,\r\n ConfirmationMessage: '',\r\n ConfirmationTitle: '',\r\n tempRecord: {}\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = this.initialState(props);\r\n this.gridContent = this.gridContent.bind(this);\r\n this.fetchSearchResults = this.fetchSearchResults.bind(this);\r\n const handleViewMACD = this.handleViewMACD.bind(this);\r\n const handleTerminateMACD = this.handleTerminateMACD.bind(this);\r\n // const handleCloneMACD = this.handleCloneMACD.bind(this);\r\n // const handleViewMACDStatus = this.handleViewMACDStatus.bind(this);\r\n // const handleViewMACDNotes = this.handleViewMACDNotes.bind(this);\r\n const handleEditMACD = this.handleEditMACD.bind(this);\r\n // const handleCheckMACDError = this.handleCheckMACDError.bind(this);\r\n const handleDeleteMACD = this.handleDeleteMACD.bind(this);\r\n this.ConfirmationYesAction = this.ConfirmationYesAction.bind(this);\r\n this.DeleteMACD = this.DeleteMACD.bind(this);\r\n this.terminateMacd = this.terminateMacd.bind(this);\r\n this.sortChange = this.sortChange.bind(this);\r\n this.dropDownOptions = this.dropDownOptions.bind(this);\r\n const handleClearFilter = this.handleClearFilter.bind(this);\r\n \r\n class ClearFilterCell extends React.Component {\r\n render() {\r\n return (\r\n Clear Filters\r\n );\r\n }\r\n };\r\n \r\n\r\n class MyCommandCell extends GridCell {\r\n render() {\r\n let flag = this.props.dataItem.ProcessFlag;\r\n let macdtype = this.props.dataItem.MacdTypeName;\r\n let orderSystem = this.props.dataItem.OrderSource;\r\n if (macdHelper.CheckPermissionsForLinks(macdtype)) {\r\n const OrderId = this.props.dataItem.OrderId;\r\n const LocationAccountNumber = this.props.dataItem.MomentumAccountNumber;\r\n \r\n let editLink = () => {\r\n if (orderSystem === 'MSP' && macdtype === macdHelper.MACDTYPES.AddServices && flag === macdHelper.MACDStatus.Open)\r\n return (\r\n handleEditMACD(this.props.dataItem)}>Edit\r\n )\r\n }\r\n\r\n let deleteLink = () => {\r\n if (orderSystem === 'MSP' \r\n && (macdtype === macdHelper.MACDTYPES.AddServices || macdtype === macdHelper.MACDTYPES.ChangeListing || macdHelper === macdHelper.MACDTYPES.ChangeCNAM)\r\n && (flag === macdHelper.MACDStatus.Open || flag === macdHelper.MACDStatus.Closed || flag === macdHelper.MACDStatus.Submitted))\r\n {\r\n return (\r\n handleDeleteMACD(this.props.dataItem)}>Delete\r\n )\r\n }\r\n }\r\n let viewLink = () => {\r\n if (macdtype !== macdHelper.MACDTYPES.AddServices) {\r\n return (\r\n \r\n );\r\n } else if (macdtype === macdHelper.MACDTYPES.AddServices && ((orderSystem !== 'MSP') || flag !== macdHelper.MACDStatus.Open)) {\r\n return (\r\n handleViewMACD(this.props.dataItem)} >\r\n View\r\n )\r\n }\r\n }\r\n let terminateLink = () => { \r\n if (macdtype === macdHelper.MACDTYPES.AddServices) {\r\n return (\r\n handleTerminateMACD(this.props.dataItem)}>Terminate\r\n )\r\n }\r\n }\r\n return (\r\n \r\n {viewLink()}\r\n {editLink()}\r\n {deleteLink()}\r\n {terminateLink()}\r\n \r\n )\r\n } else //if no permissions then no links should be available for this order\r\n return ()\r\n }\r\n }\r\n this.CommandCell = MyCommandCell;\r\n this.ClearFilterCell = ClearFilterCell;\r\n };\r\n\r\n componentDidMount() {\r\n this.fetchSearchResults(); /// PROMISE.ALL\r\n }\r\n componentWillReceiveProps(props) {\r\n if (props) {\r\n if (props.MomentumAccountNumber)\r\n this.setState({ MomentumAccountNumber: props.MomentumAccountNumber });\r\n if (props.GridHeight && props.GridHeight !== this.state.gridHeight) {\r\n let gridHeight = this.state.ListingPage === \"Open Requests\" ? props.GridHeight : props.GridHeight + 150\r\n this.setState({ gridHeight: gridHeight });\r\n }\r\n }\r\n\r\n }\r\n\r\n fetchSearchResults = () => {\r\n this.setState({ loading: true });\r\n let orderProcessFlag = this.state.ListingPage === \"Open Requests\" ? \"MSP_STATUS\" : 'ALL';\r\n let apiPath = `admin/macd/GetOrderList?status=${orderProcessFlag}`;\r\n\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n //console.log(data);\r\n if (data !== null) {\r\n //// OrderId TO STRING ***\r\n let copy = JSON.parse(JSON.stringify(data));\r\n copy.map((itm) => itm.OrderId = itm.OrderId.toString());\r\n this.setState({\r\n loading: false,\r\n MACDListings: this.revisedData(copy)\r\n });\r\n } else if (data === null) {\r\n this.setState({ MACDListings: [], loading: false });\r\n };\r\n });\r\n }\r\n\r\n sortSearchResults(sort, MACDListings = null) {\r\n if (MACDListings == null) MACDListings = this.state.MACDListings.slice();\r\n let sortedSet = orderBy(MACDListings, sort);\r\n if (sort.length) {\r\n return helper.blanksAfterZ(sortedSet, sort);\r\n } else {\r\n return sortedSet;\r\n }\r\n }\r\n\r\n revisedData = (data) => {\r\n let sortedData = this.sortSearchResults(this.state.sort, data);\r\n sortedData.map((item, idx) => {\r\n item.CreatedDate = new Date(item.CreatedDate);\r\n item.ModifiedDate = new Date(item.ModifiedDate);\r\n item.Filler = ' ';\r\n });\r\n return sortedData;\r\n }\r\n\r\n handleViewMACD = (record) => {\r\n switch (record.MacdTypeName) {\r\n case macdHelper.MACDTYPES.AddServices:\r\n this.props.history.push(macdHelper.ReviewPageUrl(parseInt(record.OrderId)));\r\n break;\r\n case macdHelper.MACDTYPES.AssignAddOn:\r\n break;\r\n case macdHelper.MACDTYPES.UnassignAddOn:\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n handleTerminateMACD = (record) => {\r\n this.setState({\r\n tempRecord: record,\r\n isConfirmationDialogOpen: true,\r\n ConfirmationMessage: 'Are you sure you wish to terminate this MACD Order?',\r\n ConfirmationTitle: 'Terminate MACD Request?'\r\n });\r\n }\r\n\r\n terminateMacd = async () => {\r\n await this.setState({deleting: true, isConfirmationDialogOpen: false});\r\n let record = this.state.tempRecord;\r\n let apiPath = macdHelper.apiTerminateOrder();\r\n let data = JSON.stringify(parseInt(record.OrderId));\r\n let resp = await apiCalls.post(apiPath, 'PATCH', data).then(resp => resp);\r\n let dialogMsg = '';\r\n let bFailure = false;\r\n if (resp.ok) {\r\n let records = this.state.MACDListings;\r\n records = records.filter(r => r.OrderId !== record.OrderId);\r\n dialogMsg = 'Your request to terminate the selected order has been completed successfully. Your order may still appear as processing for a few minutes.';\r\n this.setState({\r\n MACDListings: records\r\n });\r\n } else {\r\n dialogMsg = 'Your order was not terminated due to an error.';\r\n bFailure = true;\r\n }\r\n this.setState({\r\n deleting: false,\r\n isConfirmationDialogOpen: true,\r\n showOk: true,\r\n error: bFailure,\r\n ConfirmationMessage: dialogMsg,\r\n tempRecord: {}\r\n });\r\n }\r\n\r\n handleCloneMACD = (record) => {\r\n //TODO: aim for v1, but not MVP\r\n }\r\n\r\n handleViewMACDNotes = (record) => {\r\n //Not in scope at time b/c Customer will not be working on provisioning which these notes are usually for\r\n }\r\n\r\n handleViewMACDStatus = (record) => {\r\n //not in scope at the time b/c the status will be visible in the list already and none of the 'bells & whistles' in MPO are necessary on the Customer Side\r\n }\r\n\r\n handleEditMACD = (record) => {\r\n switch (record.MacdTypeName) {\r\n case macdHelper.MACDTYPES.AddServices:\r\n // let uri = macdHelper.AddEditPage(parseInt(record.OrderId), 'RO')\r\n // window.location.replace(uri);\r\n this.props.history.push(macdHelper.AddEditPage(parseInt(record.OrderId)));\r\n break;\r\n case macdHelper.MACDTYPES.AssignAddOn:\r\n break;\r\n case macdHelper.MACDTYPES.UnassignAddOn:\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n handleCheckMACDError = (record) => {\r\n\r\n }\r\n\r\n ConfirmationYesAction = (e) => {\r\n if (this.state.ConfirmationTitle === 'Delete Service Change Request?') {\r\n this.DeleteMACD();\r\n }\r\n if (this.state.ConfirmationTitle === 'Terminate MACD Request?') this.terminateMacd();\r\n }\r\n\r\n handleDeleteMACD = (record) => {\r\n this.setState({\r\n tempRecord: record,\r\n isConfirmationDialogOpen: true,\r\n ConfirmationMessage: 'Are you sure you want to discard this Service Change?',\r\n ConfirmationTitle: 'Delete Service Change Request?'\r\n });\r\n }\r\n\r\n DeleteMACD = async () => {\r\n await this.setState({deleting: true, isConfirmationDialogOpen: false});\r\n let record = this.state.tempRecord;\r\n let apiPath = macdHelper.apiDiscardOrder();\r\n let data = parseInt(record.OrderId);\r\n \r\n let resp = await apiCalls.post(apiPath, 'PATCH', JSON.stringify(data)).then(resp => resp);\r\n\r\n let dialogMsg = '';\r\n let bFailure = false;\r\n if (resp.ok) {\r\n dialogMsg = 'Your order has been discarded successfully';\r\n let records = this.state.MACDListings;\r\n records = records.filter(r => r.OrderId !== record.OrderId);\r\n this.setState({\r\n MACDListings: records\r\n });\r\n } else {\r\n dialogMsg = 'Your order was not discarded due to an error.';\r\n bFailure = true;\r\n }\r\n this.setState({\r\n deleting: false,\r\n isConfirmationDialogOpen: true,\r\n ConfirmationMessage: dialogMsg,\r\n showOk: true,\r\n error: bFailure,\r\n tempRecord: {}\r\n });\r\n\r\n }\r\n\r\n // isConfirmationDialogOpen: false,\r\n // ConfirmationMessage: '',\r\n // ConfirmationTitle: '',\r\n\r\n setGridData = () => {\r\n if (this.state.ListingPage !== 'Open Requests' || (this.state.ListingPage === 'Open Requests' && (this.props.MomentumAccountNumber === \"All Locations\" || this.props.MomentumAccountNumber === \"\"))) {\r\n return this.state.MACDListings;\r\n } else {\r\n return helper.filterNestedObject('MomentumAccountNumber', this.props.MomentumAccountNumber, this.state.MACDListings)\r\n }\r\n }\r\n\r\n getMACDListings = (filter) => {\r\n let x = filterBy(this.setGridData(), filter);\r\n return x;\r\n }\r\n\r\n handleFilterChange = async (event) => {\r\n await this.setState({\r\n filter: event.filter\r\n });\r\n }\r\n\r\n handleClearFilter = () => {\r\n let newFilter = {\r\n logic: 'and',\r\n filters: []\r\n };\r\n this.setState({filter: newFilter});\r\n }\r\n\r\n closeConfirmationDialog = (e) => {\r\n this.setState({ isConfirmationDialogOpen: false, showOk: false });\r\n }\r\n\r\n sortChange(event) {\r\n this.setState({\r\n MACDListings: this.sortSearchResults(event.sort),\r\n sort: event.sort\r\n });\r\n }\r\n\r\n dropDownOptions = (key) => {\r\n\r\n let sort =[{ field: key, dir: \"asc\" }];\r\n let listings = orderBy(this.state.MACDListings.slice(), sort);\r\n let info = [...listings.map(item => item[key]).filter(helper.onlyUnique)];\r\n return info;\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading || this.state.deleting) {\r\n return \r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n )\r\n }\r\n }\r\n\r\n render() {\r\n\r\n let statusClass = this.state.showOk === true ? (this.state.error ? ' error text-danger' : ' success text-success') : '';\r\n return (\r\n
    \r\n {this.gridContent()}\r\n \r\n \r\n {this.state.ConfirmationTitle}\r\n \r\n \r\n

    {this.state.ConfirmationMessage}

    \r\n
    \r\n \r\n {this.state.showOk ? :\r\n
    \r\n \r\n \r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\nconst MacdOrderListingsWithRouter = withRouter(MacdOrderListings)\r\nexport default MacdOrderListingsWithRouter;","import React, { Component } from 'react';\r\nimport MacdOrderListingsWithRouter from './../components/order_listings'\r\n\r\n\r\nclass OpenReqTab extends Component { \r\n\r\n constructor(props) {\r\n super(props); \r\n this.state = {MomentumAccountNumber: props.MomentumAccountNumber, gridHeight: props.GridHeight};\r\n }\r\n componentDidMount() {\r\n \r\n }\r\n componentWillReceiveProps(props) {\r\n this.setState({ MomentumAccountNumber: props.MomentumAccountNumber, gridHeight: props.GridHeight })\r\n }\r\n\r\n // getMACDListings = (filter) => filterBy(this.setGridData(), filter);\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n}\r\nexport default OpenReqTab;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport * as helper from '../../../scripts/helper';\r\nimport * as macdHelper from '../components/macd_helper';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport _ from 'lodash';\r\nimport MACDSaveStatus from '../modals/orderResultModal';\r\nimport ValidationCell from '../components/validationCell';\r\nimport MACDSearch from '../components/macdSearch';\r\n\r\nexport default class IpTrunkTab extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n Listings: [],\r\n FullListings: [],\r\n OriginalListings: [],\r\n NewPlanList: [],\r\n loading: false,\r\n saving: false,\r\n gridHeight: props.GridHeight,\r\n MomentumAccountNumber: props.MomentumAccountNumber,\r\n LocationName: props.LocationName,\r\n isCancelDialogOpen: false,\r\n ValidationErrorMessages: [],\r\n Sort: [{ field: \"TrunkGroupID\", dir: \"asc\" }],\r\n }\r\n const updateInputValue = this.updateInputValue.bind(this);\r\n const getNewPlanList = this.getNewPlanList.bind(this);\r\n\r\n class inputCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n const item = this.props.dataItem;\r\n const field = this.props.field;\r\n let err = '';\r\n if (field === 'NewQuantity' && item[field] != '' && ((parseInt(item[field]) === item['Quantity']) || isNaN(parseInt(item[field])) === true)) {\r\n err = 'err';\r\n }\r\n return (\r\n \r\n updateInputValue(item, field, e)}\r\n style={{\r\n width: '50%',\r\n border: (err && err === 'err') ? '2px solid red' : ''\r\n }}\r\n value={item[field]}\r\n >\r\n \r\n )\r\n }\r\n };\r\n\r\n class DropdownCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n const item = this.props.dataItem;\r\n const field = this.props.field;\r\n let options = getNewPlanList();\r\n let existingPath = \r\n let finalOptions = options.slice();\r\n finalOptions.push(existingPath);\r\n return (\r\n \r\n updateInputValue(item, field, e)}\r\n >\r\n {finalOptions}\r\n \r\n \r\n )\r\n }\r\n };\r\n\r\n this.inputCell = inputCell;\r\n this.DropdownCell = DropdownCell;\r\n this.ValidationCell = ValidationCell;\r\n\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.MomentumAccountNumber !== '') {\r\n this.fetchListings();\r\n }\r\n }\r\n\r\n async componentWillReceiveProps(props) {\r\n if (props) {\r\n if (props.MomentumAccountNumber != this.state.MomentumAccountNumber) {\r\n await this.setState({\r\n MomentumAccountNumber: props.MomentumAccountNumber,\r\n LocationName: props.LocationName,\r\n ValidationErrorMessages: []\r\n });\r\n this.fetchListings();\r\n }\r\n if (props.GridHeight && props.GridHeight !== this.state.gridHeight)\r\n this.setState({ gridHeight: props.GridHeight });\r\n }\r\n }\r\n\r\n getNewPlanList = () => {\r\n let newPlanList = JSON.parse(JSON.stringify(this.state.NewPlanList));\r\n return newPlanList.map(itm => );\r\n }\r\n\r\n fetchListings = async () => {\r\n await this.setState({ loading: true });\r\n let apiPath = `admin/GetChangeIpTrunkCPCountList?LocationAccountNumber=${this.state.MomentumAccountNumber}`;\r\n let response = await apiCalls.fetchData(apiPath).then(data => data).catch(err => console.error(err));\r\n if (response && response.ServiceList && response.ServiceList.length > 0) {\r\n let { ServiceList, NewPlanList } = response;\r\n let copy = JSON.parse(JSON.stringify(ServiceList));\r\n ServiceList.forEach(res => res.NewQuantity = '');\r\n this.setState({\r\n loading: false,\r\n Listings: ServiceList,\r\n FullListings: ServiceList,\r\n OriginalListings: copy,\r\n NewPlanList: NewPlanList,\r\n });\r\n } else {\r\n this.setState({\r\n loading: false,\r\n Listings: [],\r\n FullListings: [],\r\n OriginalListings: [],\r\n });\r\n }\r\n }\r\n\r\n CancelYesAction = async () => {\r\n await this.fetchListings();\r\n this.props.TabHasChanges(false);\r\n this.setState({ isCancelDialogOpen: false, ValidationErrorMessages: [] });\r\n\r\n }\r\n\r\n closeCancelDialog = () => {\r\n this.setState({ isCancelDialogOpen: false });\r\n }\r\n\r\n handleSave = async () => {\r\n let changedItems = this.state.Listings.filter(res => res.HasChanges === true);\r\n let quantityComparison = changedItems.filter(itm => itm && itm.NewQuantity && parseInt(itm.NewQuantity) === itm.Quantity); // Q cant be same as before\r\n let quantityIsNan = changedItems.filter(itm => itm && itm.NewQuantity && (isNaN(parseInt(itm.NewQuantity)) === true)); // Q must be number\r\n if (!changedItems || changedItems.length === 0 || (quantityComparison && quantityComparison.length > 0) || (quantityIsNan && quantityIsNan.length > 0)) {\r\n return;\r\n }\r\n await this.setState({ saving: true });\r\n let originalListings = this.state.OriginalListings.slice();\r\n let newPathPlan = this.state.NewPlanList.slice()\r\n let submittedItems = changedItems.map((itm, idx) => {\r\n let oldService = originalListings.filter(res => res.CustomerProductId === itm.CustomerProductId);\r\n let newPathCatalogId = newPathPlan.filter(res => res.CatalogItemId === itm.CatalogItemId)[0].CatalogItemId;\r\n return {\r\n OldService: oldService[0],\r\n Quantity: parseInt(itm.NewQuantity),\r\n CatalogItemId: newPathCatalogId,\r\n TrunkGroupID: itm.TrunkGroupID\r\n };\r\n });\r\n let reqBody = {\r\n LocationAccountNumber: this.state.MomentumAccountNumber,\r\n ServiceList: submittedItems,\r\n }\r\n let apiPath = 'admin/macd/SaveChangeIpTrunkCPCountList';\r\n try\r\n {\r\n await apiCalls.post(apiPath, 'POST', JSON.stringify(reqBody)).then((res) => {\r\n let validationErrors = [];\r\n if (res.ok === true) {\r\n this.handleSaveSuccess();\r\n } else {\r\n if (helper.IsJsonString(res.message))\r\n {\r\n let responseObject = JSON.parse(res.message);\r\n if (responseObject.length && responseObject.length > 0) {\r\n validationErrors = responseObject.map((itm, idx) => {\r\n if (itm.CustomerProductId && itm.CustomerProductId != '')\r\n return {\r\n CustomerProductId: parseInt(itm.CustomerProductId),\r\n ValidationMessage: helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)\r\n }\r\n else {\r\n //console.log(\"NON VALIDATION ERROR FOUND!\");\r\n throw [helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)];\r\n }\r\n });\r\n } else {\r\n if (responseObject.MPOStatus && responseObject.MPOStatus.MPOErrorList && responseObject.MPOStatus.MPOErrorList.length > 0) {\r\n let ErrorList = responseObject.MPOStatus.MPOErrorList[0];\r\n let ErrorMessages = ErrorList.MPOResultText;\r\n validationErrors = ErrorMessages.map((itm, idx) => {\r\n if (itm.CustomerProductId && itm.CustomerProductId != '')\r\n return {\r\n CustomerProductId: parseInt(itm.CustomerProductId),\r\n ValidationMessage: helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)\r\n }\r\n else {\r\n throw [helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)];\r\n }\r\n });\r\n }\r\n if (validationErrors) {\r\n this.showErrorAndResetModal('Your order could not be completed due to entry errors indicated in the grid.', validationErrors);\r\n }\r\n }\r\n } else {\r\n this.showErrorAndResetModal(res.message);\r\n }\r\n }\r\n }).catch((msg, ValidationErrors = null) => {\r\n this.showErrorAndResetModal(msg);\r\n }).finally(() => {\r\n this.setState({ saving: false });\r\n });\r\n }\r\n catch (e) {\r\n console.log('Error saving trunk macd');\r\n }\r\n }\r\n\r\n handleCancel = () => {\r\n let changedItems = this.state.Listings.filter(res => res.HasChanges === true);\r\n if (!changedItems || changedItems.length === 0) return;\r\n this.setState({ isCancelDialogOpen: true });\r\n }\r\n\r\n handleSaveSuccess = async () => {\r\n \r\n await this.setState({\r\n loading: true,\r\n ValidationErrorMessages: [],\r\n statusMessage: 'Your order has been saved and submitted successfully.'\r\n });\r\n this.props.TabHasChanges(false);\r\n this.fetchListings();\r\n }\r\n\r\n showErrorAndResetModal = (msg, ValidationErrorMessages = []) => {\r\n let inconsistentCatcher = null;\r\n if (msg && msg.message)\r\n inconsistentCatcher = msg.message;\r\n else if (msg)\r\n inconsistentCatcher = msg;\r\n else\r\n inconsistentCatcher = 'An unexpected error occurred';\r\n\r\n this.setState({\r\n error: true,\r\n statusMessage: inconsistentCatcher,\r\n ValidationErrorMessages: ValidationErrorMessages\r\n });\r\n }\r\n\r\n closeSaveMessage = async () => {\r\n let listings = orderBy(this.state.Listings.slice(), this.state.Sort);\r\n let validationErrors = this.state.ValidationErrorMessages.slice();\r\n validationErrors.map((itm, idx) => {\r\n let itmInListings = listings.filter(resp => resp.CustomerProductId === itm.CustomerProductId);\r\n let index = _.indexOf(listings, itmInListings[0]);\r\n listings[index].ValidationMessage = itm.ValidationMessage;\r\n });\r\n await this.setState({ error: false, statusMessage: '', Listings: listings, FullListings: listings });\r\n }\r\n\r\n updateInputValue = async (productItem, field, e) => {\r\n let { value } = e.target;\r\n productItem[field] = value;\r\n let existingArray = this.state.Listings.slice();\r\n let index = _.findIndex(existingArray, itm => itm.CustomerProductId === productItem.CustomerProductId);\r\n existingArray[index] = productItem;\r\n\r\n let originalItem = this.state.OriginalListings.filter(itm => itm.CustomerProductId === productItem.CustomerProductId);\r\n if (originalItem && originalItem.length > 0) {\r\n originalItem = originalItem[0]\r\n if (productItem['PartDescription'] !== originalItem['PartDescription'] || productItem['NewQuantity'] != '') {\r\n productItem.HasChanges = true;\r\n this.props.TabHasChanges(true);\r\n } else {\r\n delete productItem.HasChanges;\r\n this.props.TabHasChanges(false);\r\n }\r\n }\r\n await this.setState({\r\n Listings: existingArray,\r\n FullListings: existingArray,\r\n });\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.MomentumAccountNumber == '') {\r\n return macdHelper.locationSelectLabel(this.state.MomentumAccountNumber);\r\n }\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n if (!this.state.loading && this.state.Listings.length === 0) return

    There are no applicable changes available for services at this location. Please review your search criteria.

    \r\n if (this.state.Listings && this.state.Listings.length > 0) {\r\n let columnWidth = '200px';\r\n let columnWidth2 = '150px';\r\n return (\r\n \r\n {this.state.ValidationErrorMessages && this.state.ValidationErrorMessages.length > 0 ? : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullListings.slice();\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'TrunkGroupID', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'USOC', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'PartDescription', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'LineDescription', operator: 'contains', value: searchText, ignoreCase: true}\r\n ]\r\n });\r\n\r\n this.setState({ Listings: services })\r\n }\r\n else {\r\n this.setState({ Listings: fullDetails });\r\n }\r\n\r\n }\r\n\r\n sortListings = (sort, Listings = null) => {\r\n let returnObj = [];\r\n if (this.state.Listings) {\r\n if (Listings == null) Listings = this.state.Listings.slice();\r\n let sortedSet = orderBy(Listings, sort);\r\n returnObj = sortedSet;\r\n if (sort.length) {\r\n returnObj = helper.blanksAfterZ(sortedSet, sort);\r\n }\r\n }\r\n return returnObj;\r\n }\r\n\r\n sortChange = async (event) => {\r\n await this.setState({\r\n Listings: this.sortListings(event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n Cancel Order?\r\n \r\n \r\n

    Are you sure you wish to cancel this order?

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n \r\n\r\n {this.gridContent()}\r\n
    \r\n );\r\n }\r\n};","import React, { Component } from 'react';\r\nimport BlockTab from './tabs/blockTab'\r\nimport CnamTab from './tabs/cnamTab';\r\nimport ExtensionTab from './tabs/extensionTab';\r\nimport LineTab from './tabs/lineTab';\r\nimport ListingTab from './tabs/listingTab';\r\nimport SeatTab from './tabs/seatTab';\r\nimport VirtualTab from './tabs/virtualTab';\r\nimport OpenRequestTab from './tabs/openReqTab';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport * as settings from '../../scripts/settings';\r\nimport * as macdHelper from './components/macd_helper';\r\nimport * as helper from '../../scripts/helper';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport IpTrunkTab from './tabs/ipTrunkTab';\r\n\r\nclass Macd extends Component {\r\n\r\n \r\n constructor(props) {\r\n super(props);\r\n let tab = this.parseViewFilter(props);\r\n this.state = {\r\n tab: tab ? tab : macdHelper.MACDTABS.OpenRequests,\r\n MomentumAccountNumber: \"\",\r\n LocationName: \"\",\r\n locations: [],\r\n locationOptions: [],\r\n tabHasChanges: false\r\n };\r\n\r\n this.getTab = this.getTab.bind(this);\r\n this.changeTab = this.changeTab.bind(this);\r\n this.changeLocation = this.changeLocation.bind(this);\r\n this.fetchLocations = this.fetchLocations.bind(this);\r\n this.LoadAddServices = this.LoadAddServices.bind(this);\r\n this.LoadUserAddOn = this.LoadUserAddOn.bind(this);\r\n this.LoadAllSearch = this.LoadAllSearch.bind(this);\r\n this.getTabDisplay = this.getTabDisplay.bind(this);\r\n this.DisplayCancelOrderConfirmationTab = this.DisplayCancelOrderConfirmationTab.bind(this);\r\n this.handleTabEdit = this.handleTabEdit.bind(this);\r\n this.closeCancelConfirmationDialog = this.closeCancelConfirmationDialog.bind(this);\r\n };\r\n\r\n parseViewFilter = (props) => {\r\n let tab = macdHelper.MACDTABS.OpenRequests;\r\n if (props.match.params && props.match.params.tabName) {\r\n tab = props.match.params.tabName;\r\n };\r\n return tab;\r\n }\r\n\r\n handleResize = async () => {\r\n await this.setState({\r\n gridHeight: (window.innerHeight - 350)\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.handleResize)\r\n }\r\n\r\n componentDidMount() {\r\n let obj = sessionStorage.getItem('MacdPerms');\r\n if (obj.indexOf(1) < 0) {\r\n this.props.history.push(helper.homePageUrl());\r\n return;\r\n }\r\n this.fetchLocations();\r\n this.handleResize();\r\n window.addEventListener('resize', this.handleResize)\r\n }\r\n\r\n componentWillReceiveProps(props) {\r\n let tab = this.state.tab;\r\n if (props.location.pathname === '/macd')\r\n {\r\n //set Open Requests as the open tab AZDO: 1467\r\n if (!this.state.tabHasChanges)\r\n tab = macdHelper.MACDTABS.OpenRequests;\r\n else\r\n { \r\n this.DisplayCancelOrderConfirmationTab(macdHelper.MACDTABS.OpenRequests);\r\n }\r\n }\r\n this.setState({tab: tab});\r\n }\r\n\r\n handleTabEdit = (val) => {\r\n this.setState({ tabHasChanges: val });\r\n }\r\n\r\n changeTab(event) {\r\n if (event.target.dataset.act !== this.state.tab) {\r\n if (!this.state.tabHasChanges) {\r\n this.setState({ tab: event.target.dataset.act, tabHasChanges: false });\r\n } else {\r\n this.DisplayCancelOrderConfirmationTab(event.target.dataset.act);\r\n }\r\n }\r\n }\r\n\r\n DisplayCancelOrderConfirmationTab = (tab) => {\r\n this.setState({ isCancelConfirmOpen: true, tmpTab: tab });\r\n }\r\n\r\n apiLocationsPathWithParams = () => {\r\n let path = 'admin/Locations';\r\n return path;\r\n }\r\n\r\n fetchLocations = async (apiPath = null) => {\r\n if (!apiPath) apiPath = this.apiLocationsPathWithParams();\r\n await this.setState({ loadingLocations: true });\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n if (data !== null) {\r\n let accountNumber = '';\r\n let locationName = '';\r\n let locationOptions = data.map((location, index) => {\r\n return (this.locationOption(location, index));\r\n });\r\n if (locationOptions.length > 1) {\r\n locationOptions.unshift(\r\n this.locationOption({ LocationAccountNumber: '', LocationName: 'All Locations' }, '')\r\n );\r\n if (sessionStorage.LocNum && sessionStorage.LocNum !== '') {\r\n let filteredLocName = data.filter(res => res.LocationAccountNumber === sessionStorage.LocNum)[0].LocationName;\r\n locationName = filteredLocName;\r\n accountNumber = sessionStorage.LocNum;\r\n }\r\n } else {\r\n accountNumber = data[0].LocationAccountNumber;\r\n locationName = data[0].LocationName;\r\n sessionStorage.setItem('LocNum', data[0].LocationAccountNumber);\r\n }\r\n this.setState({ locationOptions: locationOptions, loading: false, MomentumAccountNumber: accountNumber, LocationName: locationName });\r\n } else if (data === null) {\r\n this.setState({ locations: [], loadingLocations: false, resultsMsg: settings.noResultsMsg });\r\n };\r\n });\r\n }\r\n locationOption = (location, index) => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n changeLocation = (event) => {\r\n let getLocationName = (acctNum) => {\r\n return this.state.locationOptions.map(itm => itm.props).filter(res => {\r\n if (acctNum === res.value) return res;\r\n })[0].children;\r\n }\r\n let LocNum = event.target.value;\r\n if (LocNum && LocNum !== '') {\r\n sessionStorage.setItem('LocNum', LocNum);\r\n } else {\r\n sessionStorage.removeItem('LocNum');\r\n }\r\n if (!this.state.tabHasChanges) {\r\n this.setState({\r\n MomentumAccountNumber: LocNum,\r\n LocationName: event.target.selectedOptions ? event.target.selectedOptions[0].text : getLocationName(LocNum)\r\n });\r\n } else {\r\n this.setState({\r\n isCancelConfirmOpen: true,\r\n tmpAccountNumber: LocNum,\r\n tmpLocName: event.target.selectedOptions ? event.target.selectedOptions[0].text : getLocationName(LocNum)\r\n });\r\n }\r\n }\r\n\r\n LoadAddServices = () => {\r\n if (!this.state.tabHasChanges)\r\n this.props.history.push(macdHelper.AddEditPage());\r\n else\r\n this.DisplayCancelOrderConfirmationTab(macdHelper.MACDTABS.AddServices);\r\n }\r\n\r\n LoadUserAddOn = () => {\r\n if (!this.state.tabHasChanges) \r\n this.props.history.push(macdHelper.UserAddOn());\r\n else\r\n this.DisplayCancelOrderConfirmationTab(macdHelper.MACDTABS.AddOns);\r\n }\r\n LoadAllSearch = () => {\r\n if (!this.state.tabHasChanges) \r\n this.props.history.push(macdHelper.AllSearch());\r\n else\r\n this.DisplayCancelOrderConfirmationTab(macdHelper.MACDTABS.AllRequests);\r\n }\r\n\r\n DisplayAddServices = () => {\r\n return macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.AddServices) === 1 ? 'inline-block' : 'none';\r\n }\r\n\r\n DisplayManageAddOns = () => {\r\n return macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.AssignAddOn) === 1 || macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.UnassignAddOn) === 1 ? 'inline-block' : 'none'\r\n }\r\n\r\n getTabDisplay() {\r\n let seatTypeHTML = macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.ChangeSeatType) === 1 ?\r\n (Seat Type)\r\n : null;\r\n\r\n let cnamHTML = macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.ChangeCNAM) === 1 ?\r\n (Caller ID [CNAM])\r\n : null;\r\n\r\n let blockHTML = macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.ChangeBlock) === 1 ?\r\n (Block)\r\n : null;\r\n\r\n let extHTML = macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.ChangeExtension) === 1 ?\r\n (Extension)\r\n : null;\r\n\r\n let lineTypeHTML = macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.ChangeLineType) === 1 ?\r\n (Line Type)\r\n : null;\r\n\r\n let listingHTML = macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.ChangeListing) === 1 ?\r\n (Listing)\r\n : null;\r\n\r\n let virtualHTML = macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.ChangeVirtualTerminatingNumber) === 1 ?\r\n (Virtual Terminating Number\r\n )\r\n : null;\r\n\r\n let ipTrunkHTML = macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.ChangeIPTrunkCpCount) === 1 && sessionStorage.hasIpTrunk === 'true' ?\r\n (IP Trunking Call Path\r\n )\r\n : null;\r\n return (\r\n
    \r\n Open Requests\r\n {seatTypeHTML}\r\n {cnamHTML}\r\n {blockHTML}\r\n {extHTML}\r\n {lineTypeHTML}\r\n {listingHTML}\r\n {virtualHTML}\r\n {ipTrunkHTML}\r\n
    \r\n )\r\n }\r\n\r\n CancelConfirmationYesAction = () => {\r\n if (this.state.tmpTab === macdHelper.MACDTABS.AddServices || this.state.tmpTab === macdHelper.MACDTABS.AllRequests || this.state.tmpTab === macdHelper.MACDTABS.AddOns)\r\n {\r\n let page = this.state.tmpTab;\r\n this.setState({\r\n isCancelConfirmOpen: false,\r\n tmpTab: null,\r\n tmpLocName: null,\r\n tmpAccountNumber: null,\r\n tabHasChanges: false\r\n });\r\n if (page === macdHelper.MACDTABS.AddServices)\r\n this.LoadAddServices();\r\n else if (page === macdHelper.MACDTABS.AllRequests)\r\n this.LoadAllSearch();\r\n else\r\n this.LoadUserAddOn();\r\n } else \r\n this.setState({\r\n isCancelConfirmOpen: false,\r\n tab: this.state.tmpTab ? this.state.tmpTab : this.state.tab,\r\n MomentumAccountNumber: this.state.tmpAccountNumber ? this.state.tmpAccountNumber : this.state.MomentumAccountNumber,\r\n LocationName: this.state.tmpLocName ? this.state.tmpLocName : this.state.LocationName,\r\n tmpTab: null,\r\n tmpLocName: null,\r\n tmpAccountNumber: null,\r\n tabHasChanges: false\r\n });\r\n\r\n }\r\n\r\n closeCancelConfirmationDialog = () => {\r\n this.setState({\r\n isCancelConfirmOpen: false,\r\n tmpTab: null,\r\n tmpLocName: null,\r\n tmpAccountNumber: null\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Service Changes

    \r\n \r\n
    \r\n
    \r\n
    \r\n View All Service Changes\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n {this.getTabDisplay()}\r\n
    \r\n {this.getTab()}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Cancel Existing Order?\r\n \r\n \r\n

    Continuing this action will cancel existing changes you have made for a new MACD Order. Are you sure you wish to continue and lose all changes?

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n getTab() {\r\n switch (this.state.tab) {\r\n case macdHelper.MACDTABS.ChangeSeatType:\r\n return (\r\n \r\n );\r\n case macdHelper.MACDTABS.ChangeCNAM:\r\n return (\r\n \r\n )\r\n case macdHelper.MACDTABS.ChangeBlock:\r\n return (\r\n \r\n );\r\n case macdHelper.MACDTABS.ChangeExtension:\r\n return (\r\n \r\n );\r\n case macdHelper.MACDTABS.ChangeLineType:\r\n return (\r\n \r\n );\r\n case macdHelper.MACDTABS.ChangeListing:\r\n return (\r\n \r\n );\r\n case macdHelper.MACDTABS.ChangeVirtualTerminatingNumber:\r\n return (\r\n \r\n );\r\n case macdHelper.MACDTABS.ChangeIPTrunkCpCount:\r\n return (\r\n \r\n );\r\n case macdHelper.MACDTABS.OpenRequests:\r\n return (\r\n \r\n );\r\n default:\r\n console.log('Sorry there isn\\'t a tab named ' + this.state.tab + '.');\r\n }\r\n }\r\n\r\n\r\n}\r\nexport default Macd;","import React, { Component } from 'react';\r\nimport MacdOrderListingsWithRouter from './components/order_listings';\r\nimport * as helper from '../../scripts/helper';\r\n\r\nclass MacdAll extends Component { \r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n gridHeight: (window.innerHeight - 350)\r\n };\r\n };\r\n\r\n componentDidMount() {\r\n this.handleResize();\r\n window.addEventListener('resize', this.handleResize)\r\n\r\n let obj = sessionStorage.getItem('MacdPerms');\r\n if (obj.indexOf(1) < 0) {\r\n this.props.history.push(helper.homePageUrl());\r\n }\r\n\r\n } \r\n\r\n handleResize = async() => {\r\n await this.setState({\r\n gridHeight: (window.innerHeight - 350)\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.handleResize)\r\n }\r\n \r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    All Service Changes

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n ) \r\n }\r\n}\r\n\r\nexport default MacdAll;","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from './spinners';\r\n\r\nconst SaveSpinner = (props) => {\r\n if (props.Message) {\r\n return (\r\n
    \r\n
    \r\n {props.Message}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport default SaveSpinner;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\nclass UploadOrderData extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n Upload Order Data\r\n \r\n \r\n
    \r\n

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Est amet doloribus pariatur esse consequuntur saepe, odit, iusto ex optio quibusdam.

    \r\n Download Order Template\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \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\r\nexport default UploadOrderData;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { AutoComplete } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport _ from 'lodash';\r\nimport * as helper from '../../../scripts/helper'\r\nimport * as macdHelper from '../components/macd_helper';\r\nimport SaveSpinner from '../../../components/AddServicesSaveStatus';\r\nimport EllipsisWithTooltip from 'react-ellipsis-with-tooltip';\r\nimport ValidationMessagePopup from '../components/validationMessagePopup';\r\nimport { DatePicker } from '@progress/kendo-dateinputs-react-wrapper';\r\nimport AddressFormE911 from '../../../components/e911AddressForm';\r\n\r\nclass WrappedCell extends GridCell {\r\n\r\n render() {\r\n let fieldName = this.props.field;\r\n let value = this.props.dataItem[fieldName];\r\n if (fieldName === 'StartDate') {\r\n let dateValue = new Date(value);\r\n value = dateValue.getMonth() + '/' + dateValue.getDate() + \"/\" + dateValue.getFullYear();\r\n }\r\n\r\n let msg = helper.StringReplaceAll(this.props.dataItem[fieldName], '
    ','',false);\r\n return (\r\n \r\n \r\n
    {value}
    \r\n
    \r\n \r\n )\r\n }\r\n}\r\nclass ValidationCell extends GridCell {\r\n render() {\r\n if (this.props.dataItem.ErrorMessage && this.props.dataItem.ErrorMessage !== '') {\r\n let msg = helper.StringReplaceAll(this.props.dataItem.ErrorMessage, '
    ','', false);\r\n return (\r\n \r\n \r\n \r\n )\r\n } else return \r\n }\r\n}\r\n\r\n\r\n\r\nclass ConfigureProductModal extends Component {\r\n\r\n initialState = (props) => { \r\n return {\r\n showModal: false,\r\n className: props.ConfigureClassName ? props.ConfigureClassName : 'product-configuration',\r\n quantity: props.OrderItem.configurationDetails.length,\r\n rcStateOptions: props.OrderItem.RCStateOptions,\r\n getProductProperties: props.ColumnConfig ? false : true,\r\n ColumnConfig: props.ColumnConfig ? props.ColumnConfig : macdHelper.getDefaultColumnConfig(),\r\n productData: props.OrderItem,\r\n configurationDetails: props.OrderItem.configurationDetails,\r\n loading: true,\r\n catalogItemId: props.OrderItem.CatalogItemId,\r\n defaultRateCenterOptions: props.OrderItem.DefaultRateCenterOptions,\r\n defaultRCState: props.OrderItem.DefaultRCState,\r\n defaultRCName: props.OrderItem.DefaultRCName,\r\n defaultLineFirstName: \"\",\r\n defaultLineLastName: \"\",\r\n defaultCNAM: \"\",\r\n serviceAddressRCState: props.OrderItem.DefaultRCState,\r\n serviceAddressRCName: props.OrderItem.DefaultRCName,\r\n serviceAddressRCNameOptions: props.OrderItem.DefaultRateCenterOptions,\r\n TerminatingNumbers: props.OrderItem.TerminatingNumbersList,\r\n //InventoryTNList: props.OrderItem.InventoryTNList,\r\n TNDefaultDiv: '',\r\n CurrentDetailId: 0,\r\n CurrentItemNumber: 0,\r\n SaveQueue: [],\r\n tmpQuantity: props.OrderItem.configurationDetails.length,\r\n ValidationMessage: '',\r\n DisplayValidationModal: false,\r\n SaveMessage: '',\r\n updating: false,\r\n ReadOnly: props.ReadOnly ? props.ReadOnly : false,\r\n ProductName: props.ProductName,\r\n isConfirmationDialogOpen: false,\r\n ValidationErrorMessages: [],\r\n IPTrunkGroupOptions: props.IPTrunkGroupOptions ? props.IPTrunkGroupOptions : [],\r\n IPTrunkGroups: props.IPTrunkGroupOptions ? props.IPTrunkGroups : [],\r\n RemovalError: false,\r\n showE911Modal: false,\r\n e911AddressItem: {},\r\n e911Index: -1,\r\n CustomerId: props.CustomerId\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = this.initialState(props);\r\n this.handleShow = this.handleShow.bind(this);\r\n this.postProductUpdate = this.postProductUpdate.bind(this);\r\n\r\n this.SetRCToDefaultByServiceAddress = this.SetRCToDefaultByServiceAddress.bind(this);\r\n this.delayedUpdate = this.delayedUpdate.bind(this);\r\n\r\n const updateStateValue = this.updateStateValue.bind(this);\r\n const updateRCValue = this.updateRCValue.bind(this);\r\n const updateInputValue = this.updateInputValue.bind(this);\r\n const clearListingName = this.clearListingName.bind(this);\r\n const updateTerminatingNumber = this.updateTerminatingNumber.bind(this);\r\n const AddItemToSaveQueue = this.AddItemToSaveQueue.bind(this);\r\n const displayValidationModal = this.displayValidationModal.bind(this);\r\n const updateTrunkGroupSelection = this.updateTrunkGroupSelection.bind(this);\r\n const updateDropdownColumnSelection = this.updateDropdownColumnSelection.bind(this);\r\n const getTrunkGroupOptions = this.getTrunkGroupOptions.bind(this);\r\n const handleUpdateDate = this.handleUpdateDate.bind(this);\r\n const showE911Modal = this.showE911Modal.bind(this);\r\n const getReadOnlyStatus = this.getReadOnlyStatus.bind(this);\r\n this.SaveLineItemDetail = this.SaveLineItemDetail.bind(this);\r\n this.fetchRcNameList = this.fetchRcNameList.bind(this);\r\n this.fetchProductProperties = this.fetchProductProperties.bind(this);\r\n this.refreshDefaultRCName = this.refreshDefaultRCName.bind(this);\r\n this.ApplyDefaultLineNames = this.ApplyDefaultLineNames.bind(this);\r\n this.ApplyDefaultCNAM = this.ApplyDefaultCNAM.bind(this);\r\n\r\n this.ApplyDefaultRCValues = this.ApplyDefaultRCValues.bind(this);\r\n this.ResetRCValues = this.ResetRCValues.bind(this);\r\n\r\n this.handleDefaultLineCNAMChange = this.handleDefaultLineCNAMChange.bind(this);\r\n this.handleDefaultLineFirstNameChange = this.handleDefaultLineFirstNameChange.bind(this);\r\n this.handleDefaultLineLastNameChange = this.handleDefaultLineLastNameChange.bind(this);\r\n this.CycleThruSaveQueue = this.CycleThruSaveQueue.bind(this);\r\n this.getGrid = this.getGrid.bind(this);\r\n this.handleE911AddressUpdate = this.handleE911AddressUpdate.bind(this);\r\n\r\n class E911AddressCell extends GridCell {\r\n render() {\r\n let addressDisplay = '';\r\n const productItem = this.props.dataItem; \r\n let isReadOnly = getReadOnlyStatus();\r\n \r\n let address1 = helper.CreateFullStreet1(productItem.address);\r\n let address2 = helper.CreateFullStreet2(productItem.address);\r\n let address3 = productItem.address ? `${productItem.address.City !== undefined ? productItem.address.City : ''},${productItem.address.State !== undefined ? productItem.address.State : ''} ${productItem.address.ZipCode !== undefined ? productItem.address.ZipCode : ''}` : '';\r\n \r\n if (address1 !== '' && address2 !== '' && address3 != ', ' && address3 !== '')\r\n addressDisplay = ({address1}
    {address2}
    {address3}
    )\r\n else if (address1 !== '' && address3 !== ', ' && address3 !== '')\r\n addressDisplay = ({address1}
    {address3}
    )\r\n else if (address1 !== '' && address2 !== '')\r\n addressDisplay = ({address1}
    {address2}
    )\r\n else if (address2 !== '' && address3 !== ', ' && address3 !== '')\r\n addressDisplay = ({address2}
    {address3}
    )\r\n else if (address1 !== '')\r\n addressDisplay = ({address1});\r\n else if (address2 !== '')\r\n addressDisplay = ({address2});\r\n else if (address3 !== ', ' && address3 !== '')\r\n addressDisplay = ({address3});\r\n else if (!isReadOnly)\r\n addressDisplay = (Click to add an E911 Address)\r\n if (addressDisplay !== '')\r\n {\r\n return (\r\n \r\n showE911Modal(productItem)}>\r\n {addressDisplay}\r\n \r\n \r\n )\r\n } else return ();\r\n }\r\n }\r\n\r\n class RCStateCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n const productItem = this.props.dataItem;\r\n const value = this.props.dataItem[this.props.field];\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n class RCNameCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let productItem = this.props.dataItem;\r\n const value = this.props.dataItem[this.props.field];\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n class InputTextCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n const value = this.props.dataItem[this.props.field];\r\n const productItem = this.props.dataItem;\r\n if (this.props.field === \"ListingName\" && this.props.dataItem.ListingType === \"4\") {\r\n return (\r\n \r\n \r\n \r\n )\r\n } else {\r\n return (\r\n \r\n { updateInputValue(productItem, this.props.field, e) }}\r\n onBlur={(e) => { if (productItem.HasChanges) AddItemToSaveQueue(productItem) }}>\r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n class InputNumericTextCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n const value = this.props.dataItem[this.props.field];\r\n const productItem = this.props.dataItem;\r\n return (\r\n \r\n { updateInputValue(productItem, this.props.field, e, true) }}\r\n onBlur={(e) => { if (productItem.HasChanges) AddItemToSaveQueue(productItem) }}>\r\n \r\n )\r\n }\r\n }\r\n class InputCheckField extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n const value = !!+this.props.dataItem[this.props.field];\r\n const productItem = this.props.dataItem;\r\n \r\n if (this.props.className === 'ReadOnly') \r\n return (\r\n \r\n \r\n \r\n )\r\n else if (this.props.field === \"OmitAddress\" && (productItem.ListingType === \"3\" || productItem.ListingType === \"4\"))\r\n return (\r\n \r\n \r\n \r\n )\r\n else\r\n return (\r\n \r\n { updateInputValue(productItem, this.props.field, e) }}\r\n onBlur={(e) => { if (productItem.HasChanges) AddItemToSaveQueue(productItem) }}>\r\n \r\n )\r\n }\r\n }\r\n class ListingTypeCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let value = '';\r\n let isReadOnly = getReadOnlyStatus();\r\n value = this.props.dataItem[this.props.field];\r\n const productItem = this.props.dataItem;\r\n \r\n return (\r\n \r\n \r\n \r\n ) \r\n }\r\n \r\n }\r\n class AutoCompleteCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n if (this.props.field === \"TerminatingNumber\") {\r\n let termArray = this.props.dataItem.TerminatingNumbersList ? this.props.dataItem.TerminatingNumbersList : [];\r\n const value = this.props.dataItem[this.props.field];\r\n const productItem = this.props.dataItem;\r\n return (\r\n \r\n { updateTerminatingNumber(productItem, e); }} close={(e) => { if (productItem.HasChanges) AddItemToSaveQueue(productItem) }}\r\n />\r\n \r\n )\r\n }\r\n }\r\n }\r\n class TrunkGroupPickerCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let trunkGroupArray = getTrunkGroupOptions()\r\n let finalArray = [];\r\n let blankEntry = ();\r\n finalArray.push(blankEntry);\r\n finalArray = Array.concat(finalArray, trunkGroupArray);\r\n //finalArray.concat(trunkGroupArray);\r\n const value = this.props.dataItem[this.props.field];\r\n const productItem = this.props.dataItem;\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n \r\n class GroupPolicyColumn extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let groupPolicyOptions = [];\r\n groupPolicyOptions.push(\r\n ()\r\n );\r\n\r\n groupPolicyOptions.push(\r\n ()\r\n );\r\n const value = this.props.dataItem[this.props.field];\r\n const productItem = this.props.dataItem;\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n class InputDateField extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n const value = this.props.dataItem[this.props.field];\r\n const productItem = this.props.dataItem;\r\n return (\r\n \r\n { handleUpdateDate(e, productItem, this.props.field); }}\r\n />\r\n \r\n )\r\n }\r\n }\r\n\r\n class ServiceStatusColumn extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let statusOptions = [];\r\n statusOptions.push(\r\n ()\r\n );\r\n\r\n statusOptions.push(\r\n ()\r\n );\r\n\r\n const value = this.props.dataItem[this.props.field];\r\n const productItem = this.props.dataItem;\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n this.RCStateCell = RCStateCell;\r\n this.RCNameCell = RCNameCell;\r\n this.InputTextCell = InputTextCell;\r\n this.InputCheckField = InputCheckField;\r\n this.InputAutoCompleteField = AutoCompleteCell;//(TerminatingNumbers = this.state.TerminatingNumbers);\r\n this.ListingTypeCell = ListingTypeCell;\r\n this.InputNumericTextCell = InputNumericTextCell;\r\n this.TrunkGroupPickerCell = TrunkGroupPickerCell;\r\n this.GroupPolicyColumn = GroupPolicyColumn;\r\n this.ServiceStatusColumn = ServiceStatusColumn;\r\n this.InputDateField = InputDateField;\r\n this.E911AddressCell = E911AddressCell;\r\n }\r\n\r\n async handleShow() {\r\n await this.setState({loading: true, showModal: true, quantity: this.state.configurationDetails.length, editID: 1});\r\n if (this.state.getProductProperties)\r\n await this.fetchProductProperties();\r\n\r\n // this.TNDefaults();\r\n let validationMessages = [];\r\n this.state.configurationDetails.map((itm, idx) => {\r\n if (itm.ErrorMessage !== '') {\r\n validationMessages.push(itm.ErrorMessage);\r\n }\r\n });\r\n await this.setState({ loading: false, showModal: true, quantity: this.state.configurationDetails.length, editID: 1, ValidationErrorMessages: validationMessages, RemovalError: false });\r\n \r\n }\r\n\r\n componentDidMount() {\r\n this.setState({loading: true});\r\n }\r\n\r\n componentWillReceiveProps = (props) => {\r\n if (props.catalogItemId && props.catalogItemId !== this.state.catalogItemId) {\r\n let state = this.initialState(props);\r\n this.setState({...state});\r\n } else if (props.IPTrunkGroupOptions !== this.state.IPTrunkGroupOptions) {\r\n let state = this.state;\r\n state.IPTrunkGroups = props.IPTrunkGroups;\r\n state.IPTrunkGroupOptions = props.IPTrunkGroupOptions;\r\n this.setState({...state});\r\n }\r\n }\r\n\r\n getReadOnlyStatus = () => {\r\n return this.state.ReadOnly;\r\n }\r\n\r\n fetchProductProperties = async() => { \r\n let PartNum = this.state.productData.PartNum;\r\n let apiPath = macdHelper.apiGetProductPropertiesWithParams(PartNum);\r\n await apiCalls.fetchData(apiPath).then((data) => {\r\n let [ColumnConfig, className] = macdHelper.getColumnConfigFromDatabase(data, PartNum);\r\n this.setState({\r\n loading: false,\r\n className: className,\r\n ColumnConfig: ColumnConfig\r\n });\r\n });\r\n }\r\n\r\n fetchRcNameList = (productItem, rcState) => {\r\n let apiPath = macdHelper.apiGetRCNameByState(rcState);\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n let configDetails = this.state.configurationDetails.slice();\r\n if (data !== null) {\r\n let rcCenterOptions = [];\r\n data.map((rc, index) => {\r\n if (rc.InventoryAvailable > 0) {\r\n rcCenterOptions.push(macdHelper.rcNameOption(rc));\r\n }\r\n });\r\n if (this.state.configurationDetails && this.state.configurationDetails.length > 0) {\r\n configDetails[configDetails.indexOf(productItem)].RateCenterOptions = rcCenterOptions;\r\n this.setState({ configurationDetails: configDetails });\r\n }\r\n } else if (data === null) {\r\n configDetails[configDetails.indexOf(productItem)].RateCenterOptions = [];\r\n this.setState({ configurationDetails: configDetails });\r\n };\r\n }).catch(message => {\r\n let configDetails = this.state.configurationDetails.slice();\r\n configDetails[configDetails.indexOf(productItem)].RateCenterOptions = [];\r\n this.setState({ configurationDetails: configDetails });\r\n });\r\n }\r\n\r\n postProductUpdate = async (OrderItem, configDetails, idx, SaveAll) => {\r\n await this.setState({ closing: true, SaveMessage: 'Reviewing Product Configuration...' });\r\n if (this.state.waitingOnTempUpdate) {\r\n await this.handleQuantityUpdate();\r\n }\r\n if (!SaveAll) {\r\n this.completeModalClose(OrderItem, configDetails, idx, false);\r\n //this.setState({ closing: false, showModal: false, ValidationErrorMessages: [] });\r\n return;\r\n }\r\n let errorList = [];\r\n let res = {};\r\n if (this.state.SaveQueue && this.state.SaveQueue.length > 0) {\r\n res = await this.CycleThruSaveQueue();\r\n } else if (SaveAll) {\r\n const promises = [];\r\n configDetails.map((cd) => {\r\n promises.push(this.SaveLineItemDetail(cd));\r\n });\r\n res = await Promise.all(promises).then(res => res);\r\n }\r\n let [DetailItemValidations, LineItemErrors, TrunkGroupValidations] = await macdHelper.ItemValidations(this.state.productData.OrderId, this.state.productData.MPOLocationId);\r\n let ConfigurationDetailArray = this.state.configurationDetails.slice();\r\n await ConfigurationDetailArray.map((cda) => { \r\n let detailId = cda.DetailId;\r\n let detailMessages = _.filter(DetailItemValidations, o => o.SourceId === detailId );\r\n if (detailMessages) {\r\n detailMessages.forEach(responseObject => {\r\n errorList.push(responseObject.ErrorMessage);\r\n cda.ErrorMessage += cda.ErrorMessage === '' ? responseObject.ErrorMessage : '\\n' + responseObject.ErrorMessage;\r\n });\r\n cda.ErrorMessage = helper.StringReplaceAll(cda.ErrorMessage, \"
    \",\"\", false);\r\n }\r\n if (OrderItem.PartNum === 'IP100') {\r\n _.filter(TrunkGroupValidations, lie => cda.IPTrunkConfigId === lie.SourceId).map((trunkError) => {\r\n let msg = helper.StringReplaceAll(trunkError.ErrorMessage, '
    ', '', false) + '\\n';\r\n cda.ErrorMessage += msg;\r\n });\r\n }\r\n });\r\n let LineMessages = _.filter(LineItemErrors, o => o.SourceId === this.state.productData.LineItemId);\r\n if (LineMessages && LineMessages.length > 0) {\r\n let productData = this.state.productData;\r\n productData.ErrorMessage = LineMessages[0].ErrorMessage;\r\n await this.setState({productData: productData});\r\n }\r\n OrderItem.isConfigured = macdHelper.configuredCheck(OrderItem.configurationDetails, OrderItem, DetailItemValidations, LineItemErrors, TrunkGroupValidations); \r\n //Get all promise responses\r\n //if any promise returns a validation error then we should keep the window open\r\n //otherwise need to close the save message spinner and let user review their errors\r\n let showModal = false;\r\n if (res.length > 0)\r\n {\r\n showModal = true;\r\n if (res.length > 0)\r\n res.forEach(responseObject => {\r\n if (responseObject && responseObject.ErrorMessage && (responseObject.ErrorMessage !== '' || responseObject.SipsError !== '')) {\r\n errorList.push((responseObject.ErrorMessage !== '' ? helper.StringReplaceAll(responseObject.ErrorMessage,\"
    \",\"\",false) : helper.StringReplaceAll(responseObject.SipsError,\"
    \",\"\",false)));\r\n }\r\n });\r\n }\r\n if (errorList.length === 0) {//if no errors from save queue then set to configured and close.\r\n // if (!this.state.productData.ErrorMessage || this.state.productData.ErrorMessage === '')\r\n // OrderItem.isConfigured = true;\r\n // else //if error message on line item itself then it needs to continue to keep the product 'unconfigured'\r\n // OrderItem.isConfigured = false;\r\n\r\n this.completeModalClose(OrderItem, configDetails, idx, true);\r\n }\r\n else {\r\n //OrderItem.isConfigured = false;\r\n await this.setState({closing: false, configurationDetails: ConfigurationDetailArray, showModal: showModal, ValidationErrorMessages: errorList});\r\n await this.props.updateParentArrayItem(OrderItem, configDetails, idx, this.state.IPTrunkGroups);\r\n }\r\n }\r\n\r\n completeModalClose = async(OrderItem, configDetails, idx, bShowVerifying = false) => {\r\n if (bShowVerifying)\r\n this.setState({ closing: true, SaveMessage: 'Verifying Configuration Entries...' });\r\n await this.props.updateParentArrayItem(OrderItem, configDetails, idx, this.state.IPTrunkGroups);\r\n this.setState({ closing: false, showModal: false, ValidationErrorMessages: [], RemovalError: false });\r\n }\r\n\r\n CycleThruSaveQueue = async () => {\r\n let arrSaveQueue = this.state.SaveQueue.slice();\r\n let responses = [];\r\n while (arrSaveQueue.length > 0) {\r\n let DetailId = this.state.SaveQueue[0].DetailId;\r\n let ItemNumber = this.state.SaveQueue[0].ItemNumber;\r\n\r\n let DetailItemsFromQueue = arrSaveQueue.filter(resp => (DetailId !== 0 && resp.DetailId === DetailId) || (DetailId === 0 && resp.ItemNumber === ItemNumber));\r\n let latestSave = DetailItemsFromQueue[DetailItemsFromQueue.length - 1];\r\n responses.push(await this.SaveLineItemDetail(latestSave));\r\n arrSaveQueue = arrSaveQueue.filter(resp => (DetailId !== 0 && resp.DetailId !== DetailId) || (DetailId === 0 && resp.ItemNumber !== ItemNumber));\r\n }\r\n this.setState({ SaveQueue: [] });\r\n return responses;\r\n }\r\n\r\n updateStateValue = (productItem, e) => {\r\n let searchText = e.target.value;\r\n productItem.RCState = searchText;\r\n productItem.HasChanges = true;\r\n this.fetchRcNameList(productItem, searchText);\r\n }\r\n\r\n updateRCValue = (productItem, e) => {\r\n let searchText = e.target.value;\r\n productItem.RCName = searchText;\r\n productItem.HasChanges = true;\r\n let existingArray = this.state.configurationDetails;\r\n let index = _.findIndex(existingArray, s => s.ItemNumber == productItem.ItemNumber);\r\n let newOptions = this.state.configurationDetails.slice();\r\n newOptions[index] = productItem;\r\n this.setState({ configurationDetails: newOptions });\r\n }\r\n\r\n getTrunkGroupOptions = () => {\r\n return this.state.IPTrunkGroupOptions;\r\n }\r\n\r\n updateTrunkGroupSelection = (productItem, e) => {\r\n let selectedValue = parseInt(e.target.value);\r\n //TODO: determine if this is a new trunk group or an old trunk group and update the correct field\r\n let tgs = this.state.IPTrunkGroups.slice();\r\n let selectedTrunkGroup = tgs.filter(resp => resp.ConcatId === selectedValue);\r\n productItem.TrunkId = selectedValue;\r\n if (selectedTrunkGroup && selectedTrunkGroup.length === 1) { \r\n selectedTrunkGroup = selectedTrunkGroup[0];\r\n if (selectedTrunkGroup.IsNew) {\r\n productItem.ParentDetailId = selectedValue;\r\n productItem.IPTrunkGroupCustomerProductId = 0;\r\n }\r\n else {\r\n productItem.ParentDetailId = 0;\r\n productItem.IPTrunkGroupCustomerProductId = selectedValue;\r\n }\r\n } else {\r\n productItem.ParentDetailId = 0;\r\n productItem.IPTrunkGroupCustomerProductId = 0;\r\n }\r\n\r\n productItem.HasChanges = true;\r\n let existingArray = this.state.configurationDetails;\r\n let index = _.findIndex(existingArray, s => s.ItemNumber == productItem.ItemNumber);\r\n let newOptions = this.state.configurationDetails.slice();\r\n newOptions[index] = productItem;\r\n this.setState({configurationDetails: newOptions});\r\n }\r\n\r\n updateDropdownColumnSelection = (field, productItem, e) => {\r\n let selection = e.target.value;\r\n productItem[field] = selection;\r\n productItem.HasChanges = true;\r\n let existingArray = this.state.configurationDetails;\r\n let index = _.findIndex(existingArray, s => s.ItemNumber == productItem.ItemNumber);\r\n let newOptions = this.state.configurationDetails.slice();\r\n newOptions[index] = productItem;\r\n this.setState({configurationDetails: newOptions});\r\n }\r\n\r\n updateInputValue = (productItem, field, e, isNumeric) => {\r\n let newValue = \"\";\r\n let validationMessages = this.state.ValidationErrorMessages.slice();\r\n if (field === \"OmitAddress\" || field === 'CNAMDelivery' || field === 'AllowInternational') {\r\n newValue = productItem[field] === true ? false : true;\r\n } else if (field === \"ListingType\") {\r\n //if listing type is updated. we have to clear and disable certain fields based on selection\r\n newValue = isNumeric && isNumeric == true ? parseInt(e.target.value) : e.target.value;\r\n let listingName = productItem.ListingName, omitAddress = productItem.OmitAddress;\r\n if (newValue === \"4\") {\r\n listingName = \"\";\r\n omitAddress = false;\r\n } else if (newValue === \"3\") {\r\n omitAddress = false;\r\n }\r\n productItem.ListingName = listingName;\r\n productItem.OmitAddress = omitAddress;\r\n } \r\n // else if (field.startsWith('IP')) {\r\n // //validate ip address\r\n // // if (!helper.ValidateIPaddress(e.target.value)) {\r\n // // productItem.ErrorMessage = 'IP Address for ' + field + ' is not a valid IP Address format!';\r\n // // validationMessages.push(productItem.ErrorMessage);\r\n // // } else {\r\n // let currentMsg = productItem.ErrorMessage;\r\n // productItem.ErrorMessage = '';\r\n // let tmpVE = validationMessages.slice();\r\n // validationMessages = [];\r\n // let iCountRemove = 0;\r\n // for (var i = 0; i < tmpVE.length; i++) {\r\n // if (tmpVE[i] !== currentMsg && iCountRemove === 0) {\r\n // validationMessages.push(tmpVE[i]);\r\n // } else iCountRemove++;\r\n // }\r\n \r\n // //}\r\n // newValue = e.target.value;\r\n // }\r\n else {\r\n if (isNumeric && isNumeric === true) {//if numeric make sure entry is numeric before accepting or that it is blank\r\n if (e.target.value !== '') {\r\n if (isNaN(parseInt(e.target.value)))\r\n newValue = productItem[field]\r\n else\r\n newValue = parseInt(e.target.value);\r\n } else newValue = '';\r\n } else newValue = e.target.value;\r\n }\r\n productItem[field] = newValue;\r\n productItem.HasChanges = true;\r\n let existingArray = this.state.configurationDetails;\r\n let index = _.findIndex(existingArray, s => s.ItemNumber == productItem.ItemNumber);\r\n let newOptions = this.state.configurationDetails.slice();\r\n newOptions[index] = productItem;\r\n this.setState({ configurationDetails: newOptions, ValidationErrorMessages: validationMessages });\r\n }\r\n\r\n updateTerminatingNumber = (productItem, e) => {\r\n let newVal = ''\r\n if (e.sender.element[0].value === '' || isNaN(e.sender.element[0].value)) {\r\n newVal = '';\r\n e.sender.element[0].value = '';\r\n } else\r\n newVal = parseInt(e.sender.element[0].value);\r\n\r\n productItem.TerminatingNumber = newVal;\r\n productItem.HasChanges = true;\r\n let existingArray = this.state.configurationDetails;\r\n let index = _.findIndex(existingArray, s => s.ItemNumber == productItem.ItemNumber);\r\n let newOptions = this.state.configurationDetails.slice();\r\n newOptions[index] = productItem;\r\n this.setState({ configurationDetails: newOptions });\r\n }\r\n\r\n handleUpdateDate = (e, productItem, field) => {\r\n let selection = e.sender.value();\r\n if (selection !== null) {\r\n let ServiceDateProp = selection.getMonth() + 1 + '/' + selection.getDate() + '/' + selection.getFullYear();\r\n productItem[field] = ServiceDateProp;\r\n } else productItem[field] = '';\r\n productItem.HasChanges = true;\r\n let existingArray = this.state.configurationDetails;\r\n let index = _.findIndex(existingArray, s => s.ItemNumber == productItem.ItemNumber);\r\n let newOptions = this.state.configurationDetails.slice();\r\n newOptions[index] = productItem;\r\n this.setState({configurationDetails: newOptions});\r\n }\r\n\r\n clearListingName = (productItem) => {\r\n productItem.ListingName = \"\";\r\n productItem.HasChanges = true;\r\n let existingArray = this.state.configurationDetails;\r\n let index = _.findIndex(existingArray, s => s.ItemNumber == productItem.ItemNumber);\r\n let newOptions = this.state.configurationDetails.slice();\r\n newOptions[index] = productItem;\r\n this.setState({ configurationDetails: newOptions });\r\n }\r\n\r\n handleQuantityUpdate = async() => {\r\n let saveQueue = this.state.SaveQueue.splice();\r\n //need to add an entry to configurationDetails that is blank\r\n let newVal = parseInt(this.state.tmpQuantity);\r\n await this.setState({ updating: true, SaveMessage: this.state.ColumnConfig.ConfigType === 'NOCONFIG' ? 'Updating Quantity...' : 'Updating Grid...' });\r\n let productConfigs = [];\r\n let iCount = this.state.configurationDetails.length;\r\n let trunkGroups = this.state.IPTrunkGroups.slice();\r\n if (this.state.quantity > newVal) {\r\n \r\n while (iCount > newVal) {\r\n let pc = this.state.configurationDetails[iCount - 1];\r\n if (pc.DetailId !== 0)\r\n {\r\n // if (pc.ConfigType === 'IPTCONFIG') {\r\n // trunkGroups = trunkGroups.filter(resp => resp.DetailId !== pc.DetailId);\r\n // if (this.props.CheckTrunkGroupAssociations(trunkGroups))\r\n // {\r\n // await macdHelper.RemoveTrunkGroupConfigFromOrder(this.state.productData.OrderId, this.state.productData.MPOLocationId, pc.LineItem, pc.IPTrunkConfigId);\r\n // } else {\r\n // //TODO: show an error message that says there are other items tied to the configuration being removed\r\n // this.setState({RemovalError: true, updating: false, waitingOnTempUpdate: false});\r\n // return;\r\n // }\r\n // }\r\n macdHelper.RemoveDetailItemFromOrder(this.state.productData.OrderId, this.state.productData.MPOLocationId, pc.LineItemId, pc.DetailId);\r\n if (pc.ConfigType === 'IPTCONFIG' && pc.DetailId > 0)\r\n this.props.RemoveNewTrunkGroup(pc.DetailId)\r\n }\r\n iCount--;\r\n }\r\n productConfigs = this.state.configurationDetails.slice(0, newVal);//.splice(this.state.configurationDetails.length - 1, 1);\r\n } else { \r\n if (this.state.ColumnConfig.ConfigType !== 'NOCONFIG') \r\n productConfigs = macdHelper.MapConfigDetails(newVal, this.state.configurationDetails, this.state.productData, null, null, null, null, null, false);\r\n else {\r\n iCount += 1;//doing this so that the next configuration Item it saves is one of the new indexes\r\n while (iCount <= newVal) {\r\n let DetailId = await macdHelper.ReviewAndSaveNoConfigItem(this.state.productData.OrderId, this.state.productData.MPOLocationId, this.state.productData.PartNum, this.state.productData.LineItemId);\r\n productConfigs = macdHelper.MapConfigDetails(iCount, this.state.configurationDetails, this.state.productData, DetailId, null, null, null, null, false);\r\n iCount++;\r\n }\r\n }\r\n }\r\n\r\n let productData = this.state.productData;\r\n productData.configurationDetails = productConfigs;\r\n\r\n let data = {\r\n OrderId: this.state.productData.OrderId,\r\n LocationId: this.state.productData.MPOLocationId,\r\n LineItemId: this.state.productData.LineItemId,\r\n NewCount: newVal\r\n }\r\n let lineItemResponse = await macdHelper.UpdateLineItemInOrder(data);\r\n let lineItemFromDB = JSON.parse(lineItemResponse.message);\r\n if (lineItemFromDB) {\r\n productData.ErrorMessage = lineItemFromDB.ErrorMessage;\r\n }\r\n let validationMessages = this.state.ValidationErrorMessages.slice();\r\n if (this.state.ColumnConfig.ConfigType !== 'NOCONFIG') {\r\n validationMessages = [];\r\n productConfigs.map((ci) => {\r\n if (ci.ErrorMessage && ci.ErrorMessage.length > 0)\r\n validationMessages.push(ci.ErrorMessage);\r\n });\r\n }\r\n saveQueue = saveQueue.filter(resp => resp.ItemNumber > productData.configurationDetails[productData.configurationDetails.length - 1].ItemNumber);\r\n //await this.props.updateParentArrayItem(productData, productConfigs, -1, null)\r\n await this.setState({ \r\n quantity: newVal, \r\n ValidationErrorMessages: validationMessages,\r\n configurationDetails: productConfigs, \r\n productData: productData, \r\n SaveQueue: saveQueue, \r\n updating: false, \r\n SaveMessage: '', \r\n waitingOnTempUpdate: false \r\n });\r\n }\r\n\r\n AddItemToSaveQueue = async (ConfigItem) => {\r\n let saveQueue = this.state.SaveQueue;\r\n if (this.state.CurrentDetailId != ConfigItem.DetailId || this.state.CurrentItemNumber != ConfigItem.ItemNumber) {\r\n let saveItm = this.state.configurationDetails.filter(resp => resp.ItemNumber == this.state.CurrentItemNumber);\r\n this.setState({ CurrentDetailId: ConfigItem.DetailId, CurrentItemNumber: ConfigItem.ItemNumber });\r\n if (saveItm && saveItm.length > 0) {\r\n saveQueue = saveQueue.filter(resp => resp.ItemNumber !== saveItm[0].ItemNumber);\r\n this.SaveLineItemDetail(saveItm[0]);\r\n }\r\n }\r\n if (ConfigItem && (!saveQueue || saveQueue.length === 0 || saveQueue.indexOf(ConfigItem) < 0)) {\r\n saveQueue.push(ConfigItem);\r\n }\r\n this.setState({ SaveQueue: saveQueue });\r\n }\r\n\r\n SaveLineItemDetail = async (ConfigItem) => {\r\n let apiPath = '', method = '';\r\n let reqBody = {};\r\n if (!ConfigItem)\r\n return;\r\n this.setState({ saving: true });\r\n\r\n if (ConfigItem.DetailId === 0) {\r\n apiPath = macdHelper.apiAddServicesDetailItem();\r\n method = 'POST';\r\n } else {\r\n apiPath = macdHelper.apiUpdateDetailItem();\r\n method = 'PATCH';\r\n }\r\n reqBody = {\r\n OrderId: this.state.productData.OrderId,\r\n LocationId: this.state.productData.MPOLocationId,\r\n LineItemId: this.state.productData.LineItemId,\r\n DetailId: ConfigItem.DetailId,\r\n ServiceNumber: ConfigItem.InventoryTN,\r\n Extension: ConfigItem.Extension,\r\n LineFirstName: ConfigItem.LineFirstName,\r\n LineLastName: ConfigItem.LineLastName,\r\n ListingType: ConfigItem.ListingType,\r\n ListingName: ConfigItem.ListingName,\r\n OmitAddress: Number(ConfigItem.OmitAddress),\r\n CNAM: ConfigItem.CNAM,\r\n TerminatingNumber: ConfigItem.TerminatingNumber,\r\n LineEmail: ConfigItem.LineEmail,\r\n RateCenterState: this.state.ColumnConfig.ShowRCFields ? ConfigItem.RCState : '',\r\n RateCenterName: this.state.ColumnConfig.ShowRCFields ? ConfigItem.RCName : '',\r\n AccessCode: ConfigItem.AccessCode,\r\n IPTrunkGroupID: ConfigItem.IPTrunkGroupID,\r\n ParentDetailId: ConfigItem.ParentDetailId,\r\n IPTrunkGroupCustomerProductId: ConfigItem.IPTrunkGroupCustomerProductId, \r\n ErrorMessage: ConfigItem.ErrorMessage,\r\n Temp911AddressId: ConfigItem.address.AddressId,\r\n Description: ConfigItem.Description\r\n }\r\n\r\n\r\n let configDetails = this.state.configurationDetails.slice();\r\n let productData = this.state.productData;\r\n let response = await apiCalls.post(apiPath, method, JSON.stringify(reqBody)).then(data => data);\r\n this.setState({ saving: false });\r\n if (response.ok) {\r\n let responseBody = JSON.parse(response.message);\r\n let itmToUpdate = configDetails.filter(resp => resp.DetailId == ConfigItem.DetailId);\r\n if (!itmToUpdate || itmToUpdate.length > 1) {\r\n itmToUpdate = configDetails.filter(resp => resp.ItemNumber === ConfigItem.ItemNumber)[0];\r\n } else {\r\n itmToUpdate = itmToUpdate[0];\r\n }\r\n let idxItem = configDetails.indexOf(itmToUpdate);\r\n itmToUpdate.DetailId = responseBody.DetailId;\r\n let trunkGroupError = '';\r\n if (this.state.ColumnConfig.ConfigType === 'IPTCONFIG') {\r\n let TrunkGroupSaveResponse = await this.SaveTrunkGroup(itmToUpdate);\r\n let TrunkGroupDetails = TrunkGroupSaveResponse.TrunkGroupDetails;\r\n \r\n // if (TrunkGroupSaveResponse.IsSuccess) {\r\n // itmToUpdate.IPTrunkConfigId = TrunkGroupSaveResponse.IPTrunkConfigId;\r\n // } else {\r\n // itmToUpdate.ErrorMessage = 'An error occurred saving the new trunk group!';\r\n // }\r\n itmToUpdate.IPTrunkConfigId = TrunkGroupSaveResponse.IPTrunkConfigId;\r\n itmToUpdate.ErrorMessage = TrunkGroupSaveResponse.ErrorMessage;\r\n trunkGroupError = itmToUpdate.ErrorMessage;\r\n itmToUpdate.TrunkDescription = TrunkGroupDetails.TrunkDescription;\r\n itmToUpdate.CNAMDelivery = TrunkGroupDetails.CNAMDelivery;\r\n itmToUpdate.AllowInternational = TrunkGroupDetails.AllowInternational;\r\n itmToUpdate.ServiceStatus = TrunkGroupDetails.ServiceStatus;\r\n itmToUpdate.GroupPolicy = TrunkGroupDetails.GroupPolicy;\r\n itmToUpdate.TechPrefix = TrunkGroupDetails.TechPrefix;\r\n itmToUpdate.IPAddress1 = TrunkGroupDetails.IPAddress1;\r\n itmToUpdate.IPAddress2 = TrunkGroupDetails.IPAddress2;\r\n itmToUpdate.IPAddress3 = TrunkGroupDetails.IPAddress3;\r\n itmToUpdate.IPAddress4 = TrunkGroupDetails.IPAddress4;\r\n itmToUpdate.IPAddress5 = TrunkGroupDetails.IPAddress5;\r\n itmToUpdate.IPAddress6 = TrunkGroupDetails.IPAddress6;\r\n itmToUpdate.IPAddress7 = TrunkGroupDetails.IPAddress7;\r\n itmToUpdate.IPAddress8 = TrunkGroupDetails.IPAddress8\r\n itmToUpdate.IPAddress9 = TrunkGroupDetails.IPAddress9;\r\n itmToUpdate.IPAddress10 = TrunkGroupDetails.IPAddress10;\r\n itmToUpdate.IPAddress11 = TrunkGroupDetails.IPAddress11;\r\n itmToUpdate.IPAddress12 = TrunkGroupDetails.IPAddress12;\r\n\r\n this.props.UpdateTrunkGroups(TrunkGroupDetails, itmToUpdate.DetailId, method === 'PATCH' ? false : true);\r\n\r\n // if (newTrunkConfigId === 0) {\r\n // ConfigItem.ErrorMessage = 'Trunk Group failed to save configurations!'\r\n // }\r\n // ConfigItem.IPTrunkConfigId = newTrunkGroupId;\r\n }\r\n\r\n itmToUpdate.HasChanges = false;\r\n itmToUpdate.ErrorMessage = helper.StringReplaceAll(responseBody.ErrorMessage, \"
    \",\"\",false);\r\n if (itmToUpdate.ErrorMessage !== '')\r\n itmToUpdate.ErrorMessage += '\\n' + helper.StringReplaceAll(itmToUpdate.address.ErrorMessage, \"
    \",\"\",false);\r\n else\r\n itmToUpdate.ErrorMessage = helper.StringReplaceAll(itmToUpdate.address.ErrorMessage, \"
    \",\"\",false);\r\n \r\n configDetails[idxItem] = itmToUpdate;\r\n productData.configurationDetails = configDetails;\r\n this.setState({ configurationDetails: configDetails, productData: productData });\r\n\r\n return responseBody;\r\n } else {\r\n //TODO: Error display\r\n }\r\n }\r\n\r\n SaveTrunkGroup = async(itm) => {\r\n let apiPath = '';\r\n let method = '';\r\n let postBody = {};\r\n if (!itm.IPTrunkConfigId || itm.IPTrunkConfigId === 0 || itm.IPTrunkConfigId === '') {\r\n apiPath = macdHelper.apiAddServicesIPTrunkItem();\r\n method = 'POST';\r\n } else {\r\n apiPath = macdHelper.apiUpdateTrunkItem();\r\n method = 'PATCH';\r\n }\r\n \r\n postBody = {\r\n OrderId: this.state.productData.OrderId,\r\n LocationId: this.state.productData.MPOLocationId,\r\n DetailId: itm.DetailId,\r\n IPTrunkConfigId: itm.IPTrunkConfigId,\r\n IPTrunkGroupID: itm.IPTrunkGroupID,\r\n GroupPolicy: itm.GroupPolicy,\r\n Direction: '',\r\n IPAddress1: itm.IPAddress1,\r\n Description: itm.TrunkDescription,\r\n StartDate: itm.StartDate === '' ? null : itm.StartDate,\r\n CNAMDelivery: itm.CNAMDelivery,\r\n AllowInternational: itm.AllowInternational,\r\n TechPrefix: itm.TechPrefix,\r\n ServiceStatus: itm.ServiceStatus,\r\n IPAddress2: itm.IPAddress2,\r\n IPAddress3: itm.IPAddress3,\r\n IPAddress4: itm.IPAddress4,\r\n IPAddress5: itm.IPAddress5,\r\n IPAddress6: itm.IPAddress6,\r\n IPAddress7: itm.IPAddress7,\r\n IPAddress8: itm.IPAddress8,\r\n IPAddress9: itm.IPAddress9,\r\n IPAddress10: itm.IPAddress10,\r\n IPAddress11: itm.IPAddress11,\r\n IPAddress12: itm.IPAddress12\r\n };\r\n // let finalPost = {};\r\n \r\n let response = await apiCalls.post(apiPath, method, JSON.stringify(postBody)).then(data => data);\r\n if (response.ok) {\r\n let body = JSON.parse(response.message);\r\n //return new TrunkGroupID?\r\n return {\r\n IsSuccess: true,\r\n IPTrunkConfigId: body.IPTrunkConfigId,\r\n TrunkGroupDetails: itm,\r\n ErrorMessage: body.ErrorMessage\r\n }\r\n } else {\r\n return {\r\n IsSuccess: false,\r\n IPTrunkConfigId: 0,\r\n TrunkGroupDetails: itm,\r\n ErrorMessage: response.message\r\n };\r\n }\r\n }\r\n\r\n // RemoveTrunkGroupErrorMessage = () => {\r\n // if (this.state.RemovalError === true) {\r\n // return (\r\n //
    \r\n // Error: \r\n // There are currently items associated with the new trunk groups that are going to be removed. Please update trunk group assignments before removing new trunk groups. \r\n //
    \r\n // );\r\n // }\r\n // }\r\n\r\n ErrorDisplay = () => {\r\n let htmlContents = null;\r\n let errors = [];\r\n if (this.state.ColumnConfig.ConfigType === 'NOCONFIG') {\r\n htmlContents =this.state.productData.configurationDetails.map((cd) => {\r\n if (cd.ErrorMessage && cd.ErrorMessage !== '')\r\n return macdHelper.ErrorMessageDisplayItem(cd.ErrorMessage);\r\n });\r\n }\r\n if (this.state.productData.ErrorMessage && this.state.productData.ErrorMessage != '') {\r\n if (htmlContents && htmlContents.length > 0) {\r\n htmlContents.push(macdHelper.ErrorMessageDisplayItem(this.state.productData.ErrorMessage));\r\n errors.push(this.state.productData.ErrorMessage);\r\n }\r\n else {\r\n htmlContents = macdHelper.ErrorMessageDisplayItem(this.state.productData.ErrorMessage)\r\n errors.push(this.state.productData.ErrorMessage);\r\n }\r\n }\r\n if (errors && errors.length > 0 && this.state.updating === false)\r\n return (\r\n
    \r\n

    Configuration Errors:

    \r\n
      \r\n {htmlContents}\r\n
    \r\n
    \r\n )\r\n else return null;\r\n } \r\n\r\n gridContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else if (this.state.closing || this.state.updating) {\r\n return \r\n }\r\n else if (this.state.ColumnConfig.ConfigType === 'NOCONFIG') {\r\n return null;\r\n }\r\n else {\r\n let gridHTML = this.getGrid();\r\n return (\r\n
    \r\n {gridHTML}\r\n
    \r\n\r\n )\r\n }\r\n } \r\n\r\n getGrid = () => {\r\n let ColumnConfig = this.state.ColumnConfig;\r\n let dynamicColumn = (field, title, cell, width, editVal, sortable, classTitle = '') => \r\n let columnArray = [];\r\n \r\n if (this.state.ValidationErrorMessages && this.state.ValidationErrorMessages.length > 0) {\r\n columnArray.push(dynamicColumn('ValidationMessage', ' ', ValidationCell, '50px', false, false));\r\n }\r\n columnArray.push(dynamicColumn('ItemNumber', 'Item #', GridCell, '60px', false, false));\r\n\r\n if (this.state.ReadOnly === true) { \r\n //RC Fields\r\n if (ColumnConfig.ShowRCFields === true) {\r\n columnArray.push(dynamicColumn('RCState', 'RC State', WrappedCell, '120px', false, true));\r\n columnArray.push(dynamicColumn('RCName', 'Rate Center', WrappedCell, '200px', false, true));\r\n }\r\n if (ColumnConfig.ShowTN === true)\r\n columnArray.push(dynamicColumn('InventoryTN', 'Inventory TN', WrappedCell, '150px', false, true));\r\n\r\n if (ColumnConfig.ShowExtension === true)\r\n columnArray.push(dynamicColumn('Extension', 'Extension', WrappedCell, '100px', false, true));\r\n\r\n if (ColumnConfig.ShowLineFirst === true) {\r\n columnArray.push(dynamicColumn('LineFirstName', 'First Name', WrappedCell, '150px', false, true));\r\n columnArray.push(dynamicColumn('LineLastName', 'Last Name', WrappedCell, '150px', false, true));\r\n }\r\n if (ColumnConfig.ShowListingType === true)\r\n columnArray.push(dynamicColumn('ListingType', 'Listing Type', this.ListingTypeCell, '140px', false, true));\r\n if (ColumnConfig.ShowListingName === true) \r\n columnArray.push(dynamicColumn('ListingName', 'Listing Name', WrappedCell, '150px', false, true));\r\n if (ColumnConfig.ShowOmitAddress === true)\r\n columnArray.push(dynamicColumn('OmitAddress', 'Omit Address', this.InputCheckField, '130px', false, false, 'ReadOnly'));\r\n if (ColumnConfig.ShowAccessCode === true) \r\n columnArray.push(dynamicColumn('AccessCode', 'Access Code', WrappedCell, '150px', false, true));\r\n if (ColumnConfig.ShowLineEmail === true)\r\n columnArray.push(dynamicColumn('LineEmail', 'Line Email', WrappedCell, '150px', false, true));\r\n if (ColumnConfig.ShowTerminatingNumber === true)\r\n columnArray.push(dynamicColumn('TerminatingNumber', 'Terminating Number', WrappedCell, '150px', false, true));\r\n if (ColumnConfig.ShowCNAM === true)\r\n columnArray.push(dynamicColumn('CNAM', 'CNAM', WrappedCell, '150px', false, true));\r\n if (ColumnConfig.ShowTrunkGroupPicker === true)\r\n columnArray.push(dynamicColumn('AssociatedTrunkDescription', 'Trunk Group', WrappedCell, '170px', false, true));\r\n //IP Addresses for Trunk Group\r\n if (ColumnConfig.ShowTrunkDescription === true)\r\n columnArray.push(dynamicColumn('TrunkDescription', 'Description', WrappedCell, '150px', false, true));\r\n if (ColumnConfig.ShowStartDate === true)\r\n columnArray.push(dynamicColumn('StartDate', 'Start Date', WrappedCell, '150px', false, true));\r\n if (ColumnConfig.ShowCNAMDelivery === true)\r\n columnArray.push(dynamicColumn('CNAMDelivery', 'CNAM Delivery', this.InputCheckField, '150px', false, false, 'ReadOnly'));\r\n if (ColumnConfig.ShowInternational === true)\r\n columnArray.push(dynamicColumn('AllowInternational', 'Allow International', this.InputCheckField, '150px', false, false, 'ReadOnly'));\r\n if (ColumnConfig.ShowTechPrefix === true)\r\n columnArray.push(dynamicColumn('TechPrefix', 'Tech Prefix', WrappedCell, '150px', false, true));\r\n if (ColumnConfig.ShowGroupPolicy === true)\r\n columnArray.push(dynamicColumn('GroupPolicy', 'Group Policy', WrappedCell, '150px', false, true));\r\n if (ColumnConfig.ShowServiceStatus === true)\r\n columnArray.push(dynamicColumn('ServiceStatus', 'Status', WrappedCell, '150px', false, true));\r\n\r\n if (ColumnConfig.ShowIPAddresses === true) {\r\n for (var i = 1; i < 13; i++) {\r\n columnArray.push(dynamicColumn('IPAddress' + i.toString(), 'IP Address ' + i.toString(), this.WrappedCell, '120px', false, true));\r\n }\r\n }\r\n if (ColumnConfig.Show911 === true) {\r\n columnArray.push(dynamicColumn('E911Address', 'E911 Address', this.E911AddressCell, '200px', false, true));\r\n }\r\n if (ColumnConfig.ShowDescription === true)\r\n columnArray.push(dynamicColumn('Description', 'Description', WrappedCell, '150px', false, true));\r\n \r\n } else {\r\n //RC Fields\r\n if (ColumnConfig.ShowRCFields === true) {\r\n columnArray.push(dynamicColumn('RCState', 'RC State', this.RCStateCell, '120px', true, false));\r\n columnArray.push(dynamicColumn('RCName', 'Rate Center', this.RCNameCell, '200px', true, false));\r\n }\r\n if (ColumnConfig.ShowExtension === true)\r\n columnArray.push(dynamicColumn('Extension', 'Extension', this.InputNumericTextCell, '100px', true, false));\r\n if (ColumnConfig.ShowLineFirst === true) {\r\n columnArray.push(dynamicColumn('LineFirstName', 'First Name', this.InputTextCell, '150px', true, false));\r\n columnArray.push(dynamicColumn('LineLastName', 'Last Name', this.InputTextCell, '150px', true, false));\r\n }\r\n if (ColumnConfig.ShowListingType === true)\r\n columnArray.push(dynamicColumn('ListingType', 'Listing Type', this.ListingTypeCell, '140px', true, false));\r\n if (ColumnConfig.ShowListingName === true) \r\n columnArray.push(dynamicColumn('ListingName', 'Listing Name', this.InputTextCell, '150px', true, false));\r\n if (ColumnConfig.ShowOmitAddress === true)\r\n columnArray.push(dynamicColumn('OmitAddress', 'Omit Address', this.InputCheckField, '130px', true, false));\r\n if (ColumnConfig.ShowAccessCode === true) \r\n columnArray.push(dynamicColumn('AccessCode', 'Access Code', this.InputTextCell, '150px', true, false));\r\n if (ColumnConfig.ShowLineEmail === true)\r\n columnArray.push(dynamicColumn('LineEmail', 'Line Email', this.InputTextCell, '150px', true, false));\r\n if (ColumnConfig.ShowTerminatingNumber === true)\r\n columnArray.push(dynamicColumn('TerminatingNumber', 'Terminating Number', this.InputAutoCompleteField, '150px', true, false));\r\n if (ColumnConfig.ShowCNAM === true)\r\n columnArray.push(dynamicColumn('CNAM', 'CNAM', this.InputTextCell, '150px', true, false));\r\n if (ColumnConfig.ShowTrunkGroupPicker === true)\r\n columnArray.push(dynamicColumn('TrunkId', 'Trunk Group', this.TrunkGroupPickerCell, '170px', true, false));\r\n\r\n if (ColumnConfig.ShowTrunkDescription === true)\r\n columnArray.push(dynamicColumn('TrunkDescription', 'Description', this.InputTextCell, '150px', true, false));\r\n if (ColumnConfig.ShowStartDate === true)\r\n columnArray.push(dynamicColumn('StartDate', 'Start Date', this.InputDateField, '150px', true, false));\r\n if (ColumnConfig.ShowCNAMDelivery === true)\r\n columnArray.push(dynamicColumn('CNAMDelivery', 'CNAM Delivery', this.InputCheckField, '150px', true, false));\r\n if (ColumnConfig.ShowInternational === true)\r\n columnArray.push(dynamicColumn('AllowInternational', 'Allow International', this.InputCheckField, '150px', true, false));\r\n if (ColumnConfig.ShowTechPrefix === true)\r\n columnArray.push(dynamicColumn('TechPrefix', 'Tech Prefix', this.InputTextCell, '150px', true, false));\r\n if (ColumnConfig.ShowGroupPolicy === true)\r\n columnArray.push(dynamicColumn('GroupPolicy', 'Group Policy', this.GroupPolicyColumn, '150px', true, false));\r\n if (ColumnConfig.ShowServiceStatus === true)\r\n columnArray.push(dynamicColumn('ServiceStatus', 'Status', this.ServiceStatusColumn, '150px', true, false));\r\n //IP Addresses for Trunk Group \r\n if (ColumnConfig.ShowIPAddresses === true) {\r\n for (var i = 1; i < 13; i++) {\r\n columnArray.push(dynamicColumn('IPAddress' + i.toString(), 'IP Address ' + i.toString(), this.InputTextCell, '120px', true, false));\r\n }\r\n }\r\n\r\n if (ColumnConfig.Show911 === true) {\r\n columnArray.push(dynamicColumn('E911Address', 'E911 Address', this.E911AddressCell, '200px', true, false));\r\n }\r\n if (ColumnConfig.ShowDescription === true)\r\n columnArray.push(dynamicColumn('Description', 'Description', this.InputTextCell, '150px', true, false));\r\n\r\n }\r\n //columnArray.push(dynamicColumn('ErrorMessage', 'Validation Message', WrappedCell, '200px', false, false ));\r\n return (\r\n \r\n {columnArray}\r\n \r\n \r\n );\r\n }\r\n \r\n handleDefaultLineFirstNameChange = (e) => {\r\n\r\n this.setState({ defaultLineFirstName: e.target.value });\r\n }\r\n handleDefaultLineLastNameChange = (e) => {\r\n\r\n this.setState({ defaultLineLastName: e.target.value });\r\n }\r\n\r\n handleDefaultLineCNAMChange = (e) => {\r\n\r\n this.setState({ defaultLineCNAM: e.target.value });\r\n }\r\n\r\n SetRCToDefaultByServiceAddress = () => {\r\n let rcState = this.state.serviceAddressRCState;\r\n let rcName = this.state.serviceAddressRCName;\r\n let rcNameOptions = this.state.serviceAddressRCNameOptions;\r\n this.setState({ defaultRCState: rcState, defaultRateCenterOptions: rcNameOptions, defaultRCName: rcName });\r\n }\r\n\r\n refreshDefaultRCName = (e) => {\r\n this.setState({ defaultRCState: e.target.value });\r\n let apiPath = macdHelper.apiGetRCNameByState(e.target.value);\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n if (data !== null) {\r\n let rateCenterArray = data.map((rc, idx) => {\r\n return macdHelper.rcNameOption(rc);\r\n });\r\n this.setState({ defaultRateCenterOptions: rateCenterArray });\r\n } else {\r\n this.setState({ defaultRateCenterOptions: [], defaultRCName: '' });\r\n }\r\n });\r\n\r\n }\r\n\r\n ApplyDefaultLineNames = () => {\r\n let configDetails = this.state.configurationDetails;\r\n let firstName = this.state.defaultLineFirstName;\r\n let lastName = this.state.defaultLineLastName;\r\n configDetails.map((itm, idx) => {\r\n itm.LineFirstName = firstName;\r\n itm.LineLastName = lastName;\r\n });\r\n this.setState({ configurationDetails: configDetails });\r\n }\r\n\r\n ApplyDefaultCNAM = () => {\r\n let configDetails = this.state.configurationDetails;\r\n let cnam = this.state.defaultLineCNAM;\r\n configDetails.map((itm, idx) => {\r\n itm.CNAM = cnam;\r\n });\r\n this.setState({ configurationDetails: configDetails });\r\n }\r\n\r\n ApplyDefaultRCValues = () => {\r\n let configDetails = this.state.configurationDetails;\r\n let rcName = this.state.defaultRCName;\r\n let rcState = this.state.defaultRCState;\r\n let rcNameOptions = this.state.defaultRateCenterOptions;\r\n configDetails.map((itm, idx) => {\r\n itm.rcNameOptions = rcNameOptions\r\n itm.RCName = rcName;\r\n itm.RCState = rcState;\r\n });\r\n this.setState({ configurationDetails: configDetails });\r\n }\r\n\r\n ResetRCValues = () => {\r\n let configDetails = this.state.configurationDetails;\r\n let rcName = this.state.serviceAddressRCName;\r\n let rcState = this.state.serviceAddressRCState;\r\n let rcNameOptions = this.state.serviceAddressRCName;\r\n configDetails.map((itm, idx) => {\r\n itm.rcNameOptions = rcNameOptions\r\n itm.RCName = rcName;\r\n itm.rcState = rcState;\r\n });\r\n this.setState({ configurationDetails: configDetails, defaultRCName: rcName, defaultRCState: rcState, defaultRateCenterOptions: rcNameOptions });\r\n }\r\n\r\n displayValidationModal = (message) => {\r\n this.setState({ ValidationMessage: message, DisplayValidationModal: true });\r\n }\r\n closeValidationModal = (e) => {\r\n this.setState({ ValidationMessage: \"\", DisplayValidationModal: false });\r\n }\r\n\r\n delayedUpdate = async(newVal) => {\r\n if (newVal !== '') {\r\n newVal = parseInt(newVal);\r\n if (isNaN(newVal) || newVal < 1 || newVal == this.state.quantity) {\r\n let quantity = this.state.quantity;\r\n this.setState({tmpQuantity: quantity});\r\n return;//do nothing if value was not different and proper\r\n }\r\n await this.setState({ tmpQuantity: newVal, waitingOnTempUpdate: true });\r\n \r\n if (this.state.ColumnConfig.ConfigType !== 'NOCONFIG') { \r\n if (this.timeout)\r\n clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.handleQuantityUpdate();\r\n }, 2000\r\n );\r\n } else {\r\n this.handleQuantityUpdate();\r\n }\r\n } else {\r\n this.setState({tmpQuantity: ''});\r\n }\r\n }\r\n\r\n handleRemoveItem = () => { \r\n let msg = 'Are you sure you wish to remove this item from your order?';\r\n let title = 'Remove Item from Order?';\r\n this.setState({ isConfirmationDialogOpen: true, ConfirmationTitle: title, ConfirmationMessage: msg });\r\n }\r\n\r\n ConfirmationYesAction = async(e) => {\r\n // if (this.state.ColumnConfig.ConfigType === 'IPTCONFIG') {\r\n // let trunks = this.state.IPTrunkGroups.slice().filter(resp => resp.IsNew === false);\r\n // if (!this.props.CheckTrunkGroupAssociations(trunks)) {\r\n // this.setState({RemovalError: true, isConfirmationDialogOpen: false});\r\n // return;\r\n // }\r\n // }\r\n await this.props.RemoveItemFromOrder(this.state.productData.LineItemId);\r\n this.setState({isConfirmationDialogOpen: false, showModal: false});\r\n }\r\n\r\n closeConfirmationDialog = (e) => {\r\n this.setState({isConfirmationDialogOpen: false});\r\n }\r\n\r\n showActionButtons = () => {\r\n if (this.state.updating === false)\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n else return null;\r\n }\r\n\r\n displayTNDetails = () => {\r\n if (this.state.ColumnConfig.ShowLineFirst || this.state.ColumnConfig.ShowLineLast || this.state.ColumnConfig.ShowCNAM)\r\n return (\r\n
    \r\n

    \r\n Note:
    \r\n Line First Name and Line Last Name will be the on-net Caller ID name seen for internal calls.\r\n Caller ID [CNAM] is the off-net Caller ID that the Called Party will see for external, off-net outbound calls.\r\n Leaving Caller ID blank will display the name as Unavailable, and only the telephone number will show.\r\n

    \r\n
    \r\n );\r\n else return null;\r\n }\r\n\r\n handleE911AddressUpdate = (isSuccess, addressId, addressEntry, errorMsg) => {\r\n addressEntry.ErrorMessage = errorMsg;\r\n if (isSuccess) {\r\n this.saveE911Address(addressEntry, addressId, errorMsg);\r\n this.closeE911Modal();\r\n } else {\r\n this.saveE911Address(addressEntry, addressId, errorMsg);\r\n this.setState({e911AddressItem: addressEntry});\r\n }\r\n }\r\n\r\n showE911Modal = (selectedItem) => {\r\n let selectedIndex = _.indexOf(this.state.configurationDetails, selectedItem);\r\n this.setState({showE911Modal: true, e911Index: selectedIndex, e911AddressItem: selectedItem.address});\r\n }\r\n\r\n saveE911Address = (updatedAddress, addressId = 0, errorMsg = '') => {\r\n let addressItem = this.state.e911AddressItem;\r\n let existingItem = this.state.configurationDetails[this.state.e911Index];\r\n\r\n //need to save the line item detail if an address has now been tied to the detail item\r\n let bSave = addressItem.AddressId !== addressId ? true : false;\r\n \r\n let newValidationErrorMessages = this.state.ValidationErrorMessages.slice();\r\n if (existingItem)\r\n {\r\n let idx = _.indexOf(this.state.configurationDetails, existingItem);\r\n let newListings = this.state.configurationDetails.slice();\r\n if (addressItem.ErrorMessage !== '')\r\n {\r\n let idxMessage = _.indexOf(newValidationErrorMessages, addressItem.ErrorMessage);\r\n newValidationErrorMessages.splice(idxMessage,1);\r\n }\r\n updatedAddress.AddressId = addressId;\r\n if (errorMsg !== '')\r\n newValidationErrorMessages.push(errorMsg);\r\n //update displayed grid\r\n newListings[idx].address = updatedAddress;\r\n newListings[idx].Temp911AddressId = updatedAddress.AddressId;\r\n newListings[idx].ErrorMessage = errorMsg;\r\n\r\n if (bSave)\r\n this.SaveLineItemDetail(newListings[idx]);\r\n this.setState({configurationDetails: newListings, ValidationErrorMessages: newValidationErrorMessages});\r\n }\r\n \r\n }\r\n\r\n closeE911Modal = () => {\r\n this.setState({showE911Modal: false, e911AddressItem: {}, e911Index: -1});\r\n }\r\n\r\n render() {\r\n let labelStyle = {\r\n 'fontWeight': 'bold',\r\n 'fontSize': 'small',\r\n 'width': '100px'\r\n }\r\n let quantityStyle = {\r\n 'fontWeight': 'bold',\r\n 'fontSize': 'small',\r\n 'width': '50px'\r\n }\r\n let button = '';\r\n if (this.state.productData.isConfigured === true) {\r\n button = ( Configured);\r\n } else {\r\n button = ();\r\n }\r\n\r\n return (\r\n \r\n {button}\r\n { if (this.state.ReadOnly === false) this.postProductUpdate(this.state.productData, this.state.configurationDetails, this.props.OrderItemIdx); else this.completeModalClose(this.state.productData, this.state.configurationDetails, -1) } }>\r\n \r\n {this.state.ProductName} Configuration\r\n \r\n \r\n
    \r\n
    \r\n Quantity: \r\n { this.delayedUpdate(e.target.value)}} /> {/* this.setState({ tmpQuantity: e.target.value }); }} /> */}\r\n { this.props.RemoveItemFromOrder(this.state.productData.LineItemId) }} className=\"remove\" style={{marginLeft:'10px', display:this.state.ReadOnly && this.state.ReadOnly === true ? 'none' : 'inline'}}>Remove\r\n
    \r\n {/*//TBD -> would need a way to save all items at once after applying updates. not in current specs either */}\r\n
    \r\n

    Default Rate Center

    \r\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
    RC State:\r\n \r\n { this.SetRCToDefaultByServiceAddress(); }}>Set from Service Address
    RC Name/Inventory:\r\n \r\n { this.NPANXXLookup(e); }}>NPANXX Lookup
     \r\n \r\n \r\n \r\n
    \r\n
    \r\n {/*
    */}\r\n {this.state.TNDefaultDiv}\r\n {/*
    */}\r\n {/* {this.RemoveTrunkGroupErrorMessage()} */}\r\n {this.ErrorDisplay()}\r\n {this.gridContent()}\r\n
    \r\n {this.displayTNDetails()}\r\n
    \r\n
    \r\n \r\n
    \r\n {this.showActionButtons()}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {this.state.ConfirmationTitle}\r\n \r\n \r\n

    {this.state.ConfirmationMessage}

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n Update E911 Address\r\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 ConfigureProductModal;","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport UploadOrderData from '../../containers/modals/uploadOrderModal';\r\nimport InfoPop from './../../components/infopop';\r\nimport ConfigureProductModal from './modals/configureProductModal';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport * as settings from '../../scripts/settings';\r\nimport * as helper from '../../scripts/helper';\r\nimport * as macdHelper from './components/macd_helper'; \r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\n//const paramsSeparator = (apiPath) => apiPath.indexOf('?') >= 0 ? '&' : '?';\r\n\r\nclass MacdAdd extends Component {\r\n\r\n initialState = (props) => {\r\n let orderId = 0;\r\n if (props && props.match && props.match.params) {\r\n if (props.match.params.OrderId)\r\n orderId = props.match.params.OrderId;\r\n }\r\n return {\r\n filter: { logic: \"and\", filters: [] },\r\n productSearchText: '',\r\n serviceUserFilter: props && props.location ? props.location.serviceUserFilter : null,\r\n useFilter: true, \r\n OrderId: orderId,\r\n MPOLocationId: 0,\r\n sort: [{ field: \"PartDescription\", dir: \"asc\" }],\r\n skip: 0,\r\n gridHeight: (window.innerHeight - 400),\r\n loading: true,\r\n loadingAddedProducts: false,\r\n loadingPB: true,\r\n error: false,\r\n saving: false,\r\n defaultRCState: '',\r\n defaultRCName: '', \r\n SelectedLocationId: \"\",\r\n SelectedLocationName: '', \r\n isConfirmationDialogOpen: false,\r\n ConfirmationTitle: '',\r\n ConfirmationMessage: '',\r\n RemoveItemId: 0,\r\n isConfirmSaveDialogOpen: false, \r\n defaultRCState: '',\r\n defaultRCName: '',\r\n resultsMsg: \"\",\r\n isChange: false,\r\n ReadOnly: false,\r\n creating: false,\r\n disabledUSOCs: require('./components/DisabledUSOCs.json'),\r\n searchResults: [],\r\n OrderDetails: [],//actual datadetails\r\n pricebookDetails: [],\r\n fullPricebookDetails: [],//used when the items are filtered to reference the full dataset\r\n DeletedOrderItems: [],\r\n DeletedConfigItems: [],\r\n //InventoryTNList: [],\r\n TerminatingNumbersList: [],\r\n IPTrunkGroupOptions: [],\r\n IPTrunkGroups: [],\r\n defaultRateCenterOptions: [],\r\n locations: JSON.parse(sessionStorage.locationList),\r\n locationOptions: [],\r\n rcStateOptions: [],\r\n CustomerId: 0\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = this.initialState(props);\r\n\r\n this.fetchPricebookDetails = this.fetchPricebookDetails.bind(this);\r\n this.setupLocations = this.setupLocations.bind(this);\r\n this.sortChange = this.sortChange.bind(this);\r\n this.handleRemoveItem = this.handleRemoveItem.bind(this);\r\n const handleAddProduct = this.handleAddProduct.bind(this);\r\n this.handleContinueClick = this.handleContinueClick.bind(this);\r\n\r\n this.handleCancelClick = this.handleCancelClick.bind(this);\r\n this.CancelOrderConfirmation = this.CancelOrderConfirmation.bind(this);\r\n this.gridContent = this.gridContent.bind(this);\r\n this.updateOrderItemFromModal = this.updateOrderItemFromModal.bind(this);\r\n this.confirmLocationChange = this.confirmLocationChange.bind(this);\r\n this.closeConfirmationDialog = this.closeConfirmationDialog.bind(this);\r\n this.SaveAddItemToOrder = this.SaveAddItemToOrder.bind(this);\r\n this.AddLineItemToState = this.AddLineItemToState.bind(this);\r\n this.LoadItemConfigs = this.LoadItemConfigs.bind(this);\r\n this.RetrieveSavedOrder = this.RetrieveSavedOrder.bind(this);\r\n this.AreTrunkGroupAssociationsValid = this.AreTrunkGroupAssociationsValid.bind(this);\r\n this.RemoveItemFromOrder = this.RemoveItemFromOrder.bind(this);\r\n this.RemoveTrunkGroups = this.RemoveTrunkGroups.bind(this);\r\n this.RemoveTrunkGroupsFromDB = this.RemoveTrunkGroupsFromDB.bind(this);\r\n\r\n class MyAddCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n if (this.props.dataItem.ReadOnly) {\r\n return (\r\n \r\n )\r\n } else if (this.props.dataItem.disabled) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n } else {\r\n return (\r\n \r\n handleAddProduct(this.props.dataItem)} className=\"btn\">Add\r\n \r\n )\r\n }\r\n }\r\n }\r\n this.CommandCell = MyAddCell;\r\n };\r\n\r\n handleResize = async () => {\r\n await this.setState({\r\n gridHeight: (window.innerHeight - 400)\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.handleResize)\r\n }\r\n\r\n componentDidMount() {\r\n if (macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.AddServices) === 0) {\r\n this.props.history.push('/macd');\r\n }\r\n this.fetchRcStateList();\r\n this.setupLocations();\r\n \r\n if (this.state.OrderId > 0) {\r\n this.RetrieveSavedOrder(this.state.OrderId);\r\n }\r\n this.handleResize();\r\n window.addEventListener('resize', this.handleResize);\r\n }\r\n\r\n RetrieveSavedOrder = async (OrderId, RefreshCatalog = true) => {\r\n try\r\n {\r\n await this.setState({ loading: RefreshCatalog, loadingSO: RefreshCatalog, loadingAddedProducts: RefreshCatalog, loadingPB: RefreshCatalog, ReadOnly: RefreshCatalog, saving: !RefreshCatalog });\r\n let StateOrderDetails = this.state.OrderDetails.slice();\r\n \r\n //await order information\r\n //order information is the Order itself & OrderItems w/enough details to be able to go from there\r\n let [OrderDetails, LocationDetails, LineItems, DetailItems, TrunkItems, AddressItems] = await macdHelper.RetrieveOrderDetails(OrderId);\r\n let momentumAcctNum = OrderDetails.MomentumAccountNumber;\r\n let locationId = LocationDetails[0].LocationId;\r\n let selectedLocation = this.state.locations.filter(res => res.LocationAccountNumber === momentumAcctNum)[0];\r\n let ReadOnlyStatus = OrderDetails.ProcessFlag.toUpperCase() !== macdHelper.MACDStatus.Open || OrderDetails.OrderSource !== 'MSP' ? true : false;\r\n await this.setState({\r\n MPOLocationId: locationId,\r\n SelectedLocationId: momentumAcctNum,\r\n CustomerId: selectedLocation.CustomerId\r\n });\r\n if (RefreshCatalog)\r\n {\r\n await this.fetchLocationDetails(TrunkItems, DetailItems);\r\n\r\n if (!TrunkItems || TrunkItems.length === 0)\r\n await this.fetchIPTrunks();\r\n\r\n await this.LoadItemConfigs();\r\n }\r\n let pricebookDetails = this.state.pricebookDetails;\r\n let [DetailItemValidations, LineItemErrors, TrunkGroupValidations] = await macdHelper.ItemValidations(this.state.OrderId, locationId);\r\n\r\n if (LineItems && LineItems.length > 0) {\r\n LineItems.map((LineItem, idx) => {\r\n //console.log(LineItem);\r\n let ConfigurationDetailArray = [];\r\n if (DetailItems) {\r\n ConfigurationDetailArray = _.filter(DetailItems, function (o) { return o.LineItemId == LineItem.LineItemId; });\r\n }\r\n\r\n let catalogItm = _.filter(pricebookDetails, function (o) { return o.CatalogItemId === LineItem.CatalogItemId; })[0];\r\n let PartNumber = LineItem.PartNumber;\r\n let PartDescription = LineItem.PartDescription;\r\n \r\n ConfigurationDetailArray.map((cda) => {\r\n let detailItemErrorArray = [];\r\n if (cda.ErrorMessage !== '')\r\n {\r\n cda.ErrorMessage = helper.StringReplaceAll(cda.ErrorMessage, '
    ','', false) + '\\n';\r\n detailItemErrorArray.push(cda.ErrorMessage);\r\n }\r\n _.filter(DetailItemValidations, div => cda.DetailId === div.SourceId).map((detailItem) => {\r\n let msg = cda.ErrorMessage === '' ? detailItem.ErrorMessage : '\\n' + detailItem.ErrorMessage;\r\n if (detailItemErrorArray.length === 0 || (detailItemErrorArray.length > 0 && _.indexOf(detailItemErrorArray, msg.replace('\\n','')) < 0))\r\n {\r\n cda.ErrorMessage += msg;\r\n detailItemErrorArray.push(msg.replace('\\n', ''));\r\n }\r\n });\r\n\r\n if (LineItem.PartNumber === 'IP100') {\r\n let trunkItem = TrunkItems.filter(resp => resp.DetailId === cda.DetailId);\r\n if (trunkItem && trunkItem.length > 0)\r\n {\r\n trunkItem = trunkItem[0];\r\n _.filter(TrunkGroupValidations, lie => trunkItem.IPTrunkConfigId === lie.SourceId).map((trunkError) => {\r\n let msg = helper.StringReplaceAll(trunkError.ErrorMessage, '
    ', '', false) + '\\n';\r\n cda.ErrorMessage += msg;\r\n });\r\n }\r\n }\r\n\r\n if (cda.Temp911AddressId !== 0)\r\n {\r\n let AddressItem = AddressItems.filter(resp => resp.AddressId === cda.Temp911AddressId)[0];\r\n if (AddressItem.ErrorMessage !== '') {\r\n let msg = helper.StringReplaceAll(AddressItem.ErrorMessage, '
    ', '', false);\r\n cda.ErrorMessage += msg;\r\n }\r\n }\r\n\r\n if (cda.ErrorMessage && cda.ErrorMessage !== '')\r\n cda.ErrorMessage = helper.StringReplaceAll(cda.ErrorMessage, '
    ', '', false);\r\n });\r\n let lineItemErrorArray = [];\r\n if (LineItem.ErrorMessage !== '')\r\n {\r\n LineItem.ErrorMessage = helper.StringReplaceAll(LineItem.ErrorMessage, '
    ','', false) + '\\n';\r\n lineItemErrorArray.push(LineItem.ErrorMessage);\r\n }\r\n \r\n \r\n _.filter(LineItemErrors, lie => LineItem.LineItemId === lie.SourceId).map((lineError) => {\r\n let msg = helper.StringReplaceAll(lineError.ErrorMessage, '
    ', '', false) + '\\n';\r\n if (lineItemErrorArray.length === 0 || (lineItemErrorArray.length > 0 && _.indexOf(lineItemErrorArray, msg) < 0))\r\n {\r\n LineItem.ErrorMessage += msg;\r\n lineItemErrorArray.push(msg);\r\n }\r\n });\r\n\r\n let NewItem = macdHelper.LoadItem(\r\n LineItem,\r\n PartNumber,\r\n PartDescription,\r\n momentumAcctNum,\r\n this.state.SelectedLocationName, //not needed on this page\r\n this.state.MPOLocationId,\r\n this.state.TerminatingNumbersList,\r\n //this.state.InventoryTNList,\r\n this.state.DefaultRateCenterOptions,\r\n this.state.rcStateOptions,\r\n this.state.DefaultRCState,\r\n this.state.DefaultRCName,\r\n catalogItm,\r\n ReadOnlyStatus\r\n //this.state.ReadOnly\r\n )\r\n\r\n let existingTrunkGroups = this.state.IPTrunkGroups.slice();\r\n NewItem.configurationDetails = macdHelper.MapConfigDetails(LineItem.NewCount === 0 ? 1 : LineItem.NewCount, [], NewItem, 0, ConfigurationDetailArray, TrunkItems, existingTrunkGroups, AddressItems, false);\r\n //TODO: need to add address validations to list\r\n NewItem.isConfigured = macdHelper.configuredCheck(NewItem.configurationDetails, NewItem, DetailItemValidations, LineItemErrors, TrunkGroupValidations, AddressItems);\r\n StateOrderDetails.push(NewItem);\r\n });\r\n }\r\n await this.setState({\r\n OrderDetails: StateOrderDetails,\r\n originalOrderDetails: StateOrderDetails,\r\n loadingAddedProducts: false,\r\n loading: false,\r\n loadingSO: false,\r\n ReadOnly: ReadOnlyStatus,\r\n saving: false\r\n });\r\n\r\n } catch(ex) {\r\n this.setState({\r\n loadingAddedProducts: false,\r\n loading: false,\r\n loadingSO: false,\r\n loadingPB: false,\r\n saving: false\r\n });\r\n }\r\n }\r\n\r\n\r\n fetchRcStateList = () => {\r\n this.setState({ loading: true });\r\n let apiPath = macdHelper.apiGetRCStateList();\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n this.setState({ loading: true });\r\n if (data !== null) {\r\n let rcStateOptions = data.map((state, index) => {\r\n return (macdHelper.rcStateOption(state, index));\r\n });\r\n this.setState({ rcStateOptions: rcStateOptions });\r\n\r\n } else if (data === null) {\r\n this.setState({ rcStateOptions: [] });\r\n };\r\n\r\n });\r\n }\r\n\r\n fetchLocationDetails = async (TrunkItems = null, Details = null) => {\r\n let requests = [\r\n //fetchInventoryTN(OrderId),\r\n this.fetchPricebookDetails(),\r\n this.fetchIPTrunks(TrunkItems, Details)\r\n ];\r\n return await Promise.all(requests).then(dataArray => dataArray);\r\n }\r\n\r\n fetchPricebookDetails = async () => {\r\n this.setState({ loadingPB: true });\r\n let apiPath = macdHelper.apiPricebookPathWithParams(this.state.SelectedLocationId);\r\n await apiCalls.fetchData(apiPath).then(data => {\r\n if (data !== null) {\r\n this.setState({\r\n loadingPB: false,\r\n fullPricebookDetails: this.revisedData(data),\r\n pricebookDetails: this.revisedData(data),\r\n resultsMsg: null\r\n });\r\n } else if (data === null) {\r\n this.setState({ pricebookDetails: [], loadingPB: false, resultsMsg: settings.noResultsMsg });\r\n };\r\n });\r\n\r\n }\r\n\r\n async handleAddProduct(dataItem) {\r\n if (this.state.creating) return; //do nothing while creating the order\r\n \r\n let fullCatalog = this.state.pricebookDetails.slice();\r\n let idxCatalog = _.indexOf(fullCatalog, dataItem);\r\n dataItem.adding = true;\r\n fullCatalog[idxCatalog] = dataItem;\r\n await this.setState({ saving: true, pricebookDetails: fullCatalog, creating: this.state.OrderId > 0 ? false : true });\r\n\r\n let existingProducts = this.state.OrderDetails.slice();\r\n let LineItem = existingProducts.filter(res => res.CatalogItemId === dataItem.CatalogItemId);\r\n if (LineItem && LineItem.length > 0) {\r\n LineItem = LineItem[0];\r\n LineItem.Quantity += 1;\r\n let idx = _.indexOf(existingProducts, LineItem);\r\n let dbLineItem = {\r\n OrderId: this.state.OrderId,\r\n LocationId: this.state.MPOLocationId,\r\n LineItemId: LineItem.LineItemId,\r\n CatalogItemId: dataItem.CatalogItemId,\r\n NewCount: LineItem.Quantity,\r\n NRCAdjustedPrice: dataItem.NRCAdjustedPrice ? dataItem.NRCAdjustedPrice : dataItem.ActivationCharge,\r\n NRCDiscountPercent: dataItem.NRCAdjustedPrice ? (1.00) - parseFloat(dataItem.NRCAdjustedPrice / dataItem.ActivationCharge) : 0.00,\r\n MRCAdjustedPrice: dataItem.MRCAdjustedPrice ? dataItem.MRCAdjustedPrice : dataItem.BasePrice,\r\n MRCDiscountPercent: dataItem.MRCAdjustedPrice ? (1.00) - parseFloat(dataItem.MRCAdjustedPrice - dataItem.BasePrice) : 0.00\r\n }\r\n await macdHelper.UpdateLineItemInOrder(dbLineItem);\r\n //Need to check if a noconfig item, if so then we have to save the detail item too\r\n let DetailId = 0\r\n let ColumnConfig = macdHelper.getDefaultColumnConfig();\r\n let className = 'product-configuration';\r\n [DetailId, ColumnConfig, className] = await macdHelper.ReviewAndSaveNoConfigItem(this.state.OrderId, this.state.MPOLocationId, LineItem.PartNum, LineItem.LineItemId);\r\n LineItem.ColumnConfig = ColumnConfig;\r\n LineItem.ConfigureClassName = className;\r\n LineItem.configurationDetails = macdHelper.MapConfigDetails(LineItem.Quantity, LineItem.configurationDetails, LineItem, DetailId, null, null, null, null, false);\r\n\r\n \r\n if (DetailId && DetailId > 0 && LineItem.ErrorMessage === '') {\r\n let bConfigured = true;\r\n LineItem.configurationDetails.map((cd, idx) => {\r\n if (cd.ErrorMessage && cd.ErrorMessage !== '')\r\n bConfigured = false;\r\n });\r\n LineItem.isConfigured = bConfigured;\r\n } else if (LineItem.ColumnConfig.ConfigType !== 'NOCONFIG') {\r\n LineItem.isConfigured = false;\r\n }\r\n\r\n existingProducts[idx] = LineItem;\r\n await this.setState({ OrderDetails: existingProducts, saving: false });\r\n } else {\r\n LineItem = {\r\n OrderId: this.state.OrderId,\r\n LocationId: this.state.MPOLocationId,\r\n LineItemId: 0,\r\n CatalogItemId: dataItem.CatalogItemId,\r\n NewCount: 1,\r\n NRCAdjustedPrice: dataItem.NRCAdjustedPrice ? dataItem.NRCAdjustedPrice : dataItem.ActivationCharge,\r\n NRCDiscountPercent: dataItem.NRCAdjustedPrice ? (1.00) - parseFloat(dataItem.NRCAdjustedPrice / dataItem.ActivationCharge) : 0.00,\r\n MRCAdjustedPrice: dataItem.MRCAdjustedPrice ? dataItem.MRCAdjustedPrice : dataItem.BasePrice,\r\n MRCDiscountPercent: dataItem.MRCAdjustedPrice ? (1.00) - parseFloat(dataItem.MRCAdjustedPrice - dataItem.BasePrice) : 0.00\r\n }\r\n await this.SaveAddItemToOrder(false, false, LineItem, dataItem.PartNum, dataItem.PartDescription);\r\n }\r\n\r\n fullCatalog[idxCatalog].adding = false;\r\n await this.setState({ pricebookDetails: fullCatalog });\r\n }\r\n\r\n handleRemoveItem(id) {\r\n let msg = 'Are you sure you wish to remove this item from your order?';\r\n let title = 'Remove Item from Order?';\r\n this.setState({ isConfirmationDialogOpen: true, ConfirmationTitle: title, ConfirmationMessage: msg, RemoveItemId: id });\r\n }\r\n\r\n RemoveItemFromOrder = (id) => {\r\n //if trying to remove an IP Trunk Group we need to test to make sure user hasn't configured another new product to one of these new trunk groups\r\n let currentDetails = this.state.OrderDetails;\r\n let LineItemRemoved = currentDetails.filter(resp => resp.LineItemId === id);\r\n if (LineItemRemoved && LineItemRemoved.length > 0 && LineItemRemoved[0].PartNum === 'IP100') {\r\n //let newTrunkGroups = this.state.IPTrunkGroups.slice().filter(resp => resp.IsNew !== true);\r\n // if (this.AreTrunkGroupAssociationsValid(newTrunkGroups)) {\r\n // this.setState({ error: true, resultsMsg: 'There are currently items associated with the new trunk groups that are going to be removed. Please update trunk group assignments before removing new trunk groups' });\r\n // return;\r\n // } \r\n }\r\n \r\n let verb = \"PATCH\";\r\n let reqBody = {\r\n OrderId: this.state.OrderId,\r\n LocationId: this.state.MPOLocationId,\r\n LineItemId: id\r\n };\r\n let data = JSON.stringify(reqBody);\r\n let apiPath = macdHelper.apiDiscardLineItem();\r\n this.setState({ saving: true });\r\n apiCalls.post(apiPath, verb, data).then(resp => {\r\n if (resp.ok) {\r\n let newTrunkGroups = this.state.IPTrunkGroups.slice();\r\n let newTrunkGroupOptions = this.state.IPTrunkGroupOptions.slice();\r\n let array = this.state.OrderDetails;\r\n var itmToRemove = array.find((element) => {\r\n return element.LineItemId === id;\r\n });\r\n var index = this.state.OrderDetails.indexOf(itmToRemove);\r\n array.splice(index, 1);\r\n\r\n let quantityRules = _.filter(macdHelper.QuantityValidationRules, resp => resp.PartNum === itmToRemove.PartNum);\r\n \r\n if (itmToRemove.PartNum === 'IP100') {\r\n let removedTrunkGroups = newTrunkGroups.filter(resp => resp.IsNew === true);\r\n newTrunkGroups = newTrunkGroups.filter(resp => resp.IsNew !== true);\r\n newTrunkGroupOptions = macdHelper.getIPTrunkGroupOptions(newTrunkGroups);\r\n removedTrunkGroups.map((rd,idx) => {\r\n if (rd.IPTrunkGroupID !== 0)\r\n this.RemoveTrunkGroupsFromDB(rd);\r\n });\r\n \r\n }\r\n this.setState({ OrderDetails: array, error: false, saving: false, RemoveItemId: 0, isConfirmationDialogOpen: false, IPTrunkGroups: newTrunkGroups, IPTrunkGroupOptions: newTrunkGroupOptions });\r\n if (quantityRules !== null && quantityRules.length > 0)\r\n {\r\n //if removing a product where quantity validation is performed, we need to mimic the save updateItemFromModal task and update those items and refresh\r\n let otherUSOCs = quantityRules[0].DependencyList;\r\n let dependentOrderItems = _.filter(array, resp => _.indexOf(otherUSOCs, resp.PartNum) > -1);\r\n //Get all other call recording products and validate those\r\n if (dependentOrderItems !== null && dependentOrderItems.length > 0)\r\n this.ReviewAndRefreshQuantityDependencies(dependentOrderItems);\r\n }\r\n }\r\n else {\r\n this.setState({ error: true, saving: false, errorMsg: resp.message, RemoveItemId: 0, isConfirmationDialogOpen: false });\r\n }\r\n }).catch(message => {\r\n this.setState({ error: true, saving: false, errorMsg: message, RemoveItemId: 0, isConfirmationDialogOpen: false });\r\n });\r\n }\r\n\r\n handleContinueClick(e) {\r\n let items = this.state.OrderDetails;\r\n var data = items.filter(item => item.isConfigured === false);\r\n if (data.length > 0)\r\n this.setState({ error: true, resultsMsg: 'Not all of the selected products are configured. Please configure to Continue!' });\r\n else if (this.state.OrderId > 0 && this.state.isChange === false) {\r\n //go to the next page passing in the order id\r\n this.props.history.push(macdHelper.ReviewPageUrl(this.state.OrderId));\r\n }\r\n }\r\n\r\n AddedProducts() {\r\n if (this.state.saving === true) {\r\n return (\r\n \r\n );\r\n } else {\r\n let arrayPC = [];\r\n this.state.OrderDetails.map((OrderItem) => {\r\n let productOptions = this.productCard(OrderItem, arrayPC.length);\r\n arrayPC.push(productOptions);\r\n });\r\n return arrayPC;\r\n }\r\n }\r\n\r\n productCard = (product, idx) => {\r\n if (this.state.ReadOnly === true) {\r\n return (\r\n
    \r\n
    \r\n

    {product.PartDescription} {product.PartNum}

    \r\n
    \r\n Quantity: {product.Quantity}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n } else {\r\n //CallPathCustomerProductId\r\n let ipTrunks = this.state.IPTrunkGroups;\r\n let newIPTrunks = ipTrunks.slice();\r\n \r\n if (product.PartNum === 'IP101' || product.PartNum === 'IP102' || product.PartNum === 'IP103') {\r\n newIPTrunks = []; //clearing b/c you can't set a call path on an IP Trunk that already has one\r\n let configDetailIds = [];\r\n product.configurationDetails.map((cd) => {\r\n if (cd.ParentDetailId && parseInt(cd.ParentDetailId) > 0)\r\n configDetailIds.push(cd.DetailId);\r\n else if (cd.IPTrunkGroupCustomerProductId && parseInt(cd.IPTrunkGroupCustomerProductId) > 0)\r\n configDetailIds.push(cd.DetailId);\r\n });\r\n //filtering out IP Trunks that have been associated with other call plan types in the order from the modal. \r\n //Also filtering out previously setup IP Trunks whose IP Trunk already has a call path plan.\r\n ipTrunks.map((ipt) => {\r\n if (!ipt.CallPathId || ipt.CallPathId === 0)\r\n newIPTrunks.push(ipt);\r\n else if (_.indexOf(configDetailIds, ipt.CallPathId) > -1 && ipt.IsNew === true)\r\n newIPTrunks.push(ipt);\r\n });\r\n }\r\n let ipTrunkOptions = macdHelper.getIPTrunkGroupOptions(newIPTrunks);\r\n return (\r\n
    \r\n
    \r\n

    {product.PartDescription} {product.PartNum}

    \r\n
    \r\n Quantity: {product.Quantity}\r\n
    \r\n { this.handleRemoveItem(product.LineItemId) }} className=\"remove\">Remove\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n updateOrderItemFromModal = async (ProductItem, newConfigDetails, arrayIdx, IPTrunkGroups) => {\r\n let OrderDetails = this.state.OrderDetails;\r\n let newTrunkGroups = this.state.IPTrunkGroups.slice();\r\n let newTrunkGroupOptions = this.state.IPTrunkGroupOptions.slice();\r\n if (IPTrunkGroups) {\r\n if (ProductItem.PartNum === 'IP101' || ProductItem.PartNum === 'IP102' || ProductItem.PartNum === 'IP103')\r\n {\r\n let ipTrunks = this.state.IPTrunkGroups.slice();\r\n newConfigDetails.map((cd) => {\r\n //remove the old association\r\n let idx = -1;\r\n let updatedTrunk = ipTrunks.filter(resp => resp.CallPathId === cd.DetailId);\r\n if (updatedTrunk && updatedTrunk.length > 0) { \r\n updatedTrunk = updatedTrunk[0];\r\n idx = _.indexOf(ipTrunks, updatedTrunk);\r\n if (cd.ParentDetailId !== updatedTrunk.ConcatId && idx > -1)\r\n ipTrunks[idx].CallPathId = 0;\r\n }\r\n //update new association\r\n let newTrunk = ipTrunks.filter(resp => parseInt(resp.ConcatId) === parseInt(cd.ParentDetailId) || parseInt(resp.ConcatId) === parseInt(cd.IPTrunkGroupCustomerProductId));\r\n if (newTrunk && newTrunk.length > 0) {\r\n newTrunk = newTrunk[0];\r\n idx = _.indexOf(ipTrunks, newTrunk);\r\n if (cd.ParentDetailId === newTrunk.ConcatId && idx > -1)\r\n ipTrunks[idx].CallPathId = cd.DetailId;\r\n }\r\n });\r\n this.setState({IPTrunkGroups: ipTrunks});\r\n } else {\r\n newTrunkGroupOptions = macdHelper.getIPTrunkGroupOptions(IPTrunkGroups); \r\n newTrunkGroups = IPTrunkGroups;\r\n }\r\n }\r\n\r\n //Quantity Validations\r\n if (ProductItem.Quantity != newConfigDetails.length)\r\n {\r\n let dependencyRules = _.filter(macdHelper.QuantityValidationRules, resp => resp.PartNum === ProductItem.PartNum);\r\n if (dependencyRules !== null && dependencyRules.length === 1)\r\n {\r\n \r\n let otherUSOCs = dependencyRules[0].DependencyList;\r\n let dependentOrderItems = _.filter(OrderDetails, resp => _.indexOf(otherUSOCs, resp.PartNum) > -1);\r\n //Get all other call recording products and validate those\r\n if (dependentOrderItems !== null && dependentOrderItems.length > 0) {\r\n await this.ReviewAndRefreshQuantityDependencies(dependentOrderItems);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n try {\r\n var result = newConfigDetails.filter(obj => {\r\n return obj.DetailId === 0\r\n });\r\n //if any item in config details has a DetailId = 0 then its not configured\r\n if (result && result.length > 0) {\r\n ProductItem.isConfigured = false;\r\n }\r\n } catch (msg) {\r\n console.log(msg);\r\n } \r\n if (arrayIdx === -1 && ProductItem.LineItemId !== 0)\r\n {\r\n let existingLineItem = OrderDetails.filter(resp => resp.LineItemId === ProductItem.LineItemId)[0]\r\n arrayIdx = _.indexOf(OrderDetails, existingLineItem);\r\n }\r\n\r\n OrderDetails[arrayIdx].configurationDetails = newConfigDetails;\r\n OrderDetails[arrayIdx].Quantity = newConfigDetails.length;\r\n OrderDetails[arrayIdx].isConfigured = ProductItem.isConfigured;\r\n\r\n let bShowError = false;\r\n let errorMsg = '';\r\n if (this.state.error) {\r\n OrderDetails.map((itm, idx) => {\r\n if (itm.isConfigured === false) {\r\n bShowError = true;\r\n errorMsg = 'Not all of the selected products are configured. Please configure to Continue!';\r\n }\r\n });\r\n }\r\n\r\n this.setState({ OrderDetails: OrderDetails, IPTrunkGroups: newTrunkGroups, IPTrunkGroupOptions: newTrunkGroupOptions, error: bShowError, resultsMsg: errorMsg });\r\n }\r\n\r\n UpdateTrunkGroups = async(TrunkGroupDetails, DetailId, IsAdd) => {\r\n let existingTrunks = this.state.IPTrunkGroups.slice();\r\n if (IsAdd)\r\n {\r\n let newTrunkEntry = { \r\n IsNew: true, \r\n ConcatId: DetailId, \r\n CustomerProductId: 0, \r\n DetailId: DetailId, \r\n IPTrunkGroupID: TrunkGroupDetails.IPTrunkConfigId, \r\n LineDescription: TrunkGroupDetails.TrunkDescription,\r\n CallPathId: 0\r\n };\r\n\r\n existingTrunks.push(newTrunkEntry);\r\n } else {\r\n let updatedTrunk = existingTrunks.filter(resp => resp.DetailId === DetailId)[0];\r\n let idx = _.indexOf(existingTrunks, updatedTrunk);\r\n existingTrunks[idx].LineDescription = TrunkGroupDetails.TrunkDescription\r\n }\r\n let sort = [{ field: \"LineDescription\", dir: \"asc\" }]\r\n let sortedSet = orderBy(existingTrunks, sort);\r\n let trunkOptions = macdHelper.getIPTrunkGroupOptions(sortedSet);\r\n this.setState({IPTrunkGroupOptions: trunkOptions, IPTrunkGroups: sortedSet});\r\n }\r\n\r\n RemoveTrunkGroups = async(DetailId) => {\r\n let existingTrunks = this.state.IPTrunkGroups.slice();\r\n let trunk = existingTrunks.filter(resp => resp.DetailId === DetailId);\r\n trunk = trunk[0];\r\n this.RemoveTrunkGroupsFromDB(trunk);\r\n existingTrunks = existingTrunks.filter(resp => resp.DetailId !== DetailId);\r\n\r\n let LineItems = this.state.OrderDetails;\r\n LineItems.map((li, idx) => {\r\n let configDetails = li.configurationDetails.slice();\r\n configDetails.map((cd, idxCD) => {\r\n if (cd.ParentDetailId === DetailId) {\r\n cd.ParentDetailId = 0;\r\n cd.IPTrunkGroupCustomerProductId = 0;\r\n cd.TrunkId = 0;\r\n configDetails[idxCD] = cd;\r\n }\r\n });\r\n LineItems[idx].configurationDetails = configDetails;\r\n });\r\n\r\n let sort = [{ field: \"LineDescription\", dir: \"asc\" }]\r\n let sortedSet = orderBy(existingTrunks, sort);\r\n let trunkOptions = macdHelper.getIPTrunkGroupOptions(sortedSet);\r\n this.setState({IPTrunkGroupOptions: trunkOptions, IPTrunkGroups: sortedSet, OrderDetails: LineItems});\r\n }\r\n\r\n RemoveTrunkGroupsFromDB = async(trunk) => {\r\n let apiPath = macdHelper.apiDiscardTrunkItem();\r\n let reqBody = {\r\n OrderId: this.state.OrderId,\r\n LocationId: this.state.MPOLocationId,\r\n DetailId: trunk.DetailId,\r\n IPTrunkConfigId: trunk.IPTrunkGroupID\r\n }\r\n apiCalls.post(apiPath, 'PATCH', JSON.stringify(reqBody)).then((data) => data);//.error((message) => console.error(message));\r\n }\r\n\r\n AreTrunkGroupAssociationsValid = async(IPTrunkGroups, OrderDetails = this.state.OrderDetails) => {\r\n // for (var i = 0; i < OrderDetails.length; i++) {\r\n // for (var j = 0; j < OrderDetails[i].configurationDetails.length; j++) {\r\n // if (OrderDetails[i].configurationDetails[j].IPTrunkConfigId !== 0) {\r\n // let TrunkConfigId = OrderDetails[i].configurationDetails[j].IPTrunkConfigId;\r\n // let test = IPTrunkGroups.filter(resp => resp.IsNew === true && resp.IPTrunkConfigId === OrderDetails[i].configurationDetails[j].IPTrunkConfigId)\r\n // // if (test && test.length > 1)\r\n // // return false;\r\n // }\r\n // }\r\n // }\r\n return true;\r\n }\r\n\r\n ReviewAndRefreshQuantityDependencies = async (dependentOrderItems) =>\r\n {\r\n //dependentOrderItems.map(async (od) => {\r\n this.setState({saving: true});\r\n let pricebook = this.state.pricebookDetails;\r\n for (let i = 0; i < dependentOrderItems.length; i++)\r\n {\r\n let pricebookItem = _.filter(pricebook, resp => resp.CatalogItemId === dependentOrderItems[i].CatalogItemId);\r\n if (pricebookItem && pricebookItem.length > 0)\r\n pricebookItem = pricebookItem[0];\r\n else \r\n continue; \r\n \r\n let apiPath = macdHelper.apiUpdateLineItem();\r\n let dbLineItem = {\r\n OrderId: this.state.OrderId,\r\n LocationId: this.state.MPOLocationId,\r\n LineItemId: dependentOrderItems[i].LineItemId,\r\n CatalogItemId: dependentOrderItems[i].CatalogItemId,\r\n NewCount: dependentOrderItems.Quantity,\r\n NRCAdjustedPrice: pricebookItem.NRCAdjustedPrice ? pricebookItem.NRCAdjustedPrice : pricebookItem.ActivationCharge,\r\n NRCDiscountPercent: pricebookItem.NRCAdjustedPrice ? (1.00) - parseFloat(pricebookItem.NRCAdjustedPrice / pricebookItem.ActivationCharge) : 0.00,\r\n MRCAdjustedPrice: pricebookItem.MRCAdjustedPrice ? pricebookItem.MRCAdjustedPrice : pricebookItem.BasePrice,\r\n MRCDiscountPercent: pricebookItem.MRCAdjustedPrice ? (1.00) - parseFloat(pricebookItem.MRCAdjustedPrice - pricebookItem.BasePrice) : 0.00,\r\n UpdateNeeded: true //no values are changing in the dependent order item so this is used to force an update\r\n }\r\n\r\n let reqBody = JSON.stringify(dbLineItem);\r\n let responseMessage = await apiCalls.post(apiPath, 'PATCH', reqBody).then(resp => resp)\r\n .catch(message => {\r\n // this.setState({\r\n // saving: false,\r\n // error: true,\r\n // loading: false,\r\n // resultsMsg: 'An error occurred. Please check the Open Requests tab and reload your Order!'\r\n // });\r\n });\r\n //});\r\n }\r\n await this.setState({ OrderDetails: [], saving: false });\r\n //need to save those order items\r\n this.RetrieveSavedOrder(this.state.OrderId, false);\r\n }\r\n\r\n\r\n handleCancelClick = (e) => {\r\n let msg = 'Are you sure you wish to discard the order?';\r\n let title = 'Cancel Order?';\r\n this.setState({ isConfirmationDialogOpen: true, ConfirmationMessage: msg, ConfirmationTitle: title });\r\n }\r\n\r\n CancelOrderConfirmation = () => {\r\n if (this.state.OrderId > 0) {\r\n this.setState({\r\n saving: true,\r\n error: false\r\n });\r\n let apiPath = macdHelper.apiDiscardOrder();\r\n apiCalls.post(apiPath, 'PATCH', JSON.stringify(this.state.OrderId)).then(resp => {\r\n if (resp.ok) {\r\n this.setState({\r\n saving: false,\r\n error: false,\r\n OrderId: 0,\r\n OrderDetails: [],\r\n isConfirmationDialogOpen: false,\r\n ConfirmationMessage: '',\r\n ConfirmationTitle: ''\r\n });\r\n }\r\n }).catch(message => {\r\n console.log(message)\r\n this.setState({\r\n saving: false,\r\n error: true,\r\n resultsMsg: 'An error occurred. Your order was not discarded! Refresh the page to review old details.',\r\n isConfirmationDialogOpen: false,\r\n ConfirmationMessage: '',\r\n ConfirmationTitle: ''\r\n });\r\n });\r\n } else {\r\n this.setState({ OrderDetails: this.state.originalOrderDetails });\r\n }\r\n }\r\n\r\n SaveAddItemToOrder = async (IsContinue, Redirect, LineItem, PartNum = '') => {\r\n let bCreate = this.state.OrderId === 0\r\n await this.setState({ saving: true });\r\n let apiPath = bCreate ? macdHelper.apiAddServicesOrderWithLineItem() : macdHelper.apiAddServicesSaveLineItem();\r\n let verb = 'POST';\r\n let reqBody = {};\r\n let reqLineItem = {};\r\n if (bCreate) {\r\n reqLineItem = {\r\n CatalogItemId: LineItem.CatalogItemId,\r\n NRCAdjustedPrice: LineItem.NRCAdjustedPrice,\r\n NRCDiscountPercent: LineItem.NRCDiscountPercent,\r\n MRCAdjustedPrice: LineItem.MRCAdjustedPrice,\r\n MRCDiscountPercent: LineItem.MRCDiscountPercent,\r\n NewCount: LineItem.NewCount\r\n };\r\n reqBody = {\r\n MacdType: 'ADD_SERVICES',\r\n MomentumAccountNumber: this.state.SelectedLocationId,\r\n LineItemSaveData: reqLineItem\r\n };\r\n } else {\r\n reqLineItem = LineItem;\r\n reqBody = LineItem;\r\n }\r\n let data = JSON.stringify(reqBody);\r\n\r\n\r\n let message = await apiCalls.post(apiPath, verb, data).then(resp => resp)\r\n .catch(message => {\r\n this.setState({\r\n saving: false,\r\n error: true,\r\n loading: false,\r\n resultsMsg: 'An error occurred. Please check the Open Requests tab and reload your Order!'\r\n });\r\n });\r\n if (message.ok) {\r\n let messageBody = JSON.parse(message.message);\r\n\r\n if (IsContinue || Redirect) {\r\n if (IsContinue) {\r\n //go to the next page passing in the order id\r\n let uri = '/macd_review?oid=' + NewOrderId;\r\n window.location.replace(uri);\r\n return;\r\n } else\r\n window.location.replace('/macd');\r\n return;\r\n }\r\n let OrderDetails = {};//messageBody.Order;\r\n let NewOrderId = this.state.OrderId ? this.state.OrderId : OrderDetails.OrderId;\r\n let LineItem = {};//messageBody.LineItem;\r\n let setConfigs = this.state.OrderId === 0 ? true : false;\r\n\r\n if (setConfigs) {\r\n let LocationDetails = messageBody.Location;\r\n OrderDetails = messageBody.Order;\r\n LineItem = messageBody.LineItem;\r\n await this.setState({ OrderId: OrderDetails.OrderId, MPOLocationId: LocationDetails.LocationId });\r\n } else {\r\n LineItem = messageBody;\r\n }\r\n let DetailId = 0\r\n let ColumnConfig = [];\r\n let className = 'product-configuration';\r\n [DetailId, ColumnConfig, className] = await macdHelper.ReviewAndSaveNoConfigItem(this.state.OrderId, this.state.MPOLocationId, PartNum, LineItem.LineItemId);\r\n LineItem.ColumnConfig = ColumnConfig; \r\n LineItem.ConfigureClassName = className;\r\n\r\n \r\n this.AddLineItemToState(setConfigs, LineItem, DetailId);\r\n //If we're adding a product with quantity validation, need to make sure other order item validations are updated\r\n if (!bCreate)\r\n {\r\n let quantityRules = _.filter(macdHelper.QuantityValidationRules, resp => resp.PartNum === PartNum );\r\n if (quantityRules && quantityRules.length > 0)\r\n {\r\n //if removing a product where quantity validation is performed, we need to mimic the save updateItemFromModal task and update those items and refresh\r\n let otherUSOCs = quantityRules[0].DependencyList;\r\n let dependentOrderItems = _.filter(this.state.OrderDetails, resp => _.indexOf(otherUSOCs, resp.PartNum) > -1);\r\n //Get all other call recording products and validate those\r\n if (dependentOrderItems !== null && dependentOrderItems.length > 0)\r\n this.ReviewAndRefreshQuantityDependencies(dependentOrderItems);\r\n }\r\n }\r\n \r\n\r\n } else {\r\n this.setState({\r\n saving: false,\r\n error: true,\r\n tempLocationId: \"\",\r\n tempLocationName: '',\r\n resultsMsg: message.message,\r\n creating: false\r\n });\r\n }\r\n }\r\n\r\n LoadItemConfigs = async () => {\r\n let [RateCenterDetails, TerminatingNumbers, LocationDetails] = await macdHelper.fetchItemConfig(this.state.OrderId, this.state.MPOLocationId);\r\n\r\n let serviceAddress = LocationDetails && LocationDetails.ServiceAddress ? LocationDetails.ServiceAddress : '';\r\n let revisedTerminatingNumbers = [];\r\n if (TerminatingNumbers && TerminatingNumbers.length > 0) {\r\n revisedTerminatingNumbers = TerminatingNumbers.map((tn) => {\r\n return tn.ServiceNumber;\r\n });\r\n }\r\n\r\n let defaultRCOptions = await macdHelper.fetchRateCenterOptions(serviceAddress.AdrState);\r\n let rcNameOptions = [];\r\n if (defaultRCOptions) {\r\n rcNameOptions = defaultRCOptions.map((rc) => {\r\n return (macdHelper.rcNameOption(rc));\r\n });\r\n }\r\n\r\n this.setState({\r\n //InventoryTNList: InventoryTN ? InventoryTN : [],\r\n TerminatingNumbersList: revisedTerminatingNumbers,\r\n DefaultRCState: serviceAddress.AdrState,\r\n DefaultRCName: RateCenterDetails && RateCenterDetails.length > 0 ? RateCenterDetails[0].RCNameAbbr : \"\",\r\n DefaultRateCenterOptions: rcNameOptions\r\n });\r\n }\r\n\r\n AddLineItemToState = async (refreshDefaults, LineItem, DetailId) => {\r\n if (refreshDefaults) {\r\n await this.LoadItemConfigs();\r\n }\r\n if (LineItem) {\r\n let OrderDetailArray = this.state.OrderDetails.slice();\r\n let pricebookDetails = this.state.fullPricebookDetails;\r\n\r\n let catalogItm = pricebookDetails.filter(function (o) { return o.CatalogItemId === LineItem.CatalogItemId })[0];\r\n let PartNumber = catalogItm.PartNum;\r\n let PartDescription = catalogItm.PartDescription;\r\n\r\n let NewItem = macdHelper.LoadItem(\r\n LineItem,\r\n PartNumber,\r\n PartDescription,\r\n this.state.SelectedLocationId,\r\n this.state.SelectedLocationName,\r\n this.state.MPOLocationId,\r\n this.state.TerminatingNumbersList,\r\n //this.state.InventoryTNList,\r\n this.state.DefaultRateCenterOptions,\r\n this.state.rcStateOptions,\r\n this.state.DefaultRCState,\r\n this.state.DefaultRCName,\r\n catalogItm\r\n );\r\n if (LineItem.ColumnConfig)\r\n NewItem.ColumnConfig = LineItem.ColumnConfig;\r\n if (LineItem.ConfigureClassName)\r\n NewItem.ConfigureClassName = LineItem.ConfigureClassName;\r\n\r\n NewItem.configurationDetails = macdHelper.MapConfigDetails(LineItem.NewCount, NewItem.configurationDetails, NewItem, DetailId);\r\n if (DetailId && DetailId > 0 && NewItem.ErrorMessage === '') {\r\n let bConfigured = true;\r\n NewItem.configurationDetails.map((cd, idx) => {\r\n if (cd.ErrorMessage && cd.ErrorMessage !== '')\r\n bConfigured = false;\r\n if (PartNumber === 'IP100') {\r\n \r\n bConfigured = (cd.IPTrunkConfigId === '' || cd.IPTrunkConfigId == 0 || (cd.ErrorMessage && cd.ErrorMessage !== '')) ? false : true;\r\n }\r\n });\r\n NewItem.isConfigured = bConfigured;\r\n }\r\n OrderDetailArray.push(NewItem); \r\n this.setState({ \r\n saving: false, \r\n isChange: false, \r\n error: false, \r\n resultsMsg: \"\", \r\n OrderDetails: OrderDetailArray,\r\n creating: false \r\n }); \r\n }\r\n }\r\n\r\n showCancelAndContinue = () => {\r\n if (this.state.saving) {\r\n return \r\n }\r\n else if (this.state.OrderDetails.length > 0)\r\n return (\r\n \r\n )\r\n }\r\n\r\n sortChange(event) {\r\n this.setState({\r\n pricebookDetails: this.sortPricebookDetails(event.sort),\r\n sort: event.sort\r\n });\r\n }\r\n\r\n sortPricebookDetails(sort, pricebookDetails = null) {\r\n if (pricebookDetails == null) pricebookDetails = this.state.pricebookDetails.slice();\r\n let sortedSet = orderBy(pricebookDetails, sort);\r\n if (sort.length && sort[0].field !== 'BasePrice' && sort[0].field !== 'ActivationCharge') {\r\n return helper.blanksAfterZ(sortedSet, sort);\r\n } else {\r\n return sortedSet;\r\n }\r\n }\r\n\r\n revisedData = (data) => {\r\n let revisedData = [];\r\n let removedUSOCs = this.state.disabledUSOCs;\r\n data.map((sd) => {\r\n let disabledUSOCEntry = _.filter(removedUSOCs, resp => resp.USOC === sd.PartNum && resp.ProductSetTypeName === sd.ProductSetTypeName);\r\n if (!(disabledUSOCEntry.length > 0 && disabledUSOCEntry[0].ShowListing === false)) {\r\n if (sd.MSP_Visible === 0) {\r\n sd.adding = false;\r\n sd.disabled = true;\r\n sd.DisabledMessage = \"This product requires additional manual configuration. Please contact support to order this item.\";\r\n } \r\n revisedData.push(sd);\r\n }\r\n \r\n });\r\n let sortedData = this.sortPricebookDetails(this.state.sort, revisedData)\r\n return sortedData;\r\n }\r\n\r\n getSearchResults = (event) => {\r\n let searchText = '';\r\n let fullDetails = this.state.fullPricebookDetails;\r\n if (event && event.target && event.target.value && event.target.value.trim() !== '') {\r\n searchText = event.target.value;\r\n let products = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'PartDescription', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'PartNum', operator: 'contains', value: searchText, ignoreCase: true }\r\n ]\r\n });\r\n\r\n this.setState({ pricebookDetails: products })\r\n }\r\n else {\r\n this.setState({ pricebookDetails: fullDetails });\r\n }\r\n }\r\n\r\n gridContent = () => {\r\n // if (sessionStorage.IsEmulatingUser) {\r\n // return (\r\n // \r\n // \r\n // \r\n // \r\n // \r\n // {/* (\r\n // \r\n // )}\r\n // />\r\n // (\r\n // \r\n // )} /> */}\r\n // \r\n // \r\n // )\r\n // } else {\r\n return (\r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n //}\r\n }\r\n\r\n setupLocations = async (apiPath = null) => {\r\n let data = this.state.locations;\r\n if (data !== null) {\r\n let locationOptions = data.map((location, index) => {\r\n return (this.locationOption(location, index));\r\n });\r\n let defaultOption = ();\r\n locationOptions.unshift(defaultOption);\r\n\r\n if (this.state.OrderId === 0) {\r\n if (!sessionStorage.LocNum) {\r\n await this.setState({\r\n loading: false,\r\n loadingPB: false,\r\n loadingAddedProducts: false,\r\n loadingSO: false,\r\n locations: data,\r\n locationOptions: locationOptions,\r\n CustomerId: 0,\r\n SelectedLocationId: \"0\",//data[0].LocationAccountNumber,\r\n SelectedLocationName: 'Select Location' //data[0].LocationName\r\n })\r\n } else {\r\n let selectedLocation = data.filter(res => res.LocationAccountNumber === sessionStorage.LocNum)[0];\r\n await this.setState({\r\n loadingSO: false,\r\n loadingAddedProducts: false,\r\n locations: data,\r\n locationOptions: locationOptions,\r\n CustomerId: selectedLocation.CustomerId,\r\n SelectedLocationId: sessionStorage.LocNum,\r\n SelectedLocationName: selectedLocation.LocationName,\r\n loading: true,\r\n loadingPB: true\r\n });\r\n await this.fetchLocationDetails();\r\n this.setState({loading: false, loadingPB: false});\r\n }\r\n } else {\r\n this.setState({ locationOptions: locationOptions, locations: data });\r\n }\r\n } else if (data === null) {\r\n this.setState({ locations: [], resultsMsg: settings.noResultsMsg });\r\n };\r\n }\r\n\r\n locationOption = (location, index) => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n confirmLocationChange = async (e) => {\r\n let index = e.nativeEvent.target.selectedIndex;\r\n let selectedText = e.nativeEvent.target[index].text\r\n if (this.state.OrderId > 0) {\r\n let msg = 'Changing location will start a new order. Do you wish to continue?'\r\n let title = 'Change Location?';\r\n\r\n await this.setState({\r\n isConfirmationDialogOpen: true,\r\n ConfirmationTitle: title,\r\n ConfirmationMessage: msg,\r\n ConfirmationYesAction: this.changeLocation,\r\n tempLocationId: e.target.value,\r\n tempLocationName: selectedText\r\n });\r\n } else {\r\n if (parseInt(e.target.value) !== 0)\r\n {\r\n let location = this.state.locations.filter(resp => resp.LocationAccountNumber === e.target.value)[0];\r\n await this.setState({ SelectedLocationId: e.target.value, LocationName: selectedText, loadingPB: true, CustomerId: location.CustomerId });\r\n await this.fetchLocationDetails();\r\n await this.setState({loadingPB: false, loading: false});\r\n } else {\r\n this.setState({\r\n loadingAddedProducts: false,\r\n loadingPB: false, \r\n loadingSO: false,\r\n CustomerId: 0, \r\n SelectedLocationId: \"0\", \r\n SelectedLocationName: 'Select Location', \r\n fullPricebookDetails: [], \r\n pricebookDetails: [], \r\n resultsMsg: null\r\n });\r\n }\r\n }\r\n }\r\n\r\n closeConfirmationDialog = (e) => {\r\n this.setState({ isConfirmationDialogOpen: false });\r\n }\r\n\r\n changeLocation = async (e) => {\r\n this.state.OrderId = 0;\r\n this.state.OrderDetails = [];\r\n this.state.originalOrderDetails = [];\r\n \r\n let location = this.state.locations.filter(resp => resp.LocationId === this.state.tempLocationId)[0];\r\n await this.setState({loading: true, loadingPB: true});\r\n //let [pricebookDetails] = await this.fetchLocationDetails();\r\n\r\n await this.setState({\r\n tempLocationId: '',\r\n tempLocationName: '',\r\n CustomerId: location ? location.CustomerId : 0,\r\n SelectedLocationId: this.state.tempLocationId,\r\n SelectedLocationName: this.state.tempLocationName,\r\n OrderId: 0,\r\n OrderDetails: [],\r\n isConfirmationDialogOpen: false,\r\n ConfirmationMessage: '',\r\n ConfirmationTitle: '',\r\n loading: false,\r\n loadingPB: false\r\n });\r\n if (location)\r\n this.fetchIPTrunks();\r\n }\r\n ConfirmationYesAction = (e) => {\r\n if (this.state.ConfirmationTitle === 'Remove Item from Order?') {\r\n this.RemoveItemFromOrder(this.state.RemoveItemId);\r\n } else if (this.state.ConfirmationTitle === 'Change Location?') {\r\n this.changeLocation();\r\n } else\r\n this.CancelOrderConfirmation();\r\n\r\n }\r\n\r\n fetchIPTrunks = async (TrunkItems = null, Details = null) => {\r\n let trunks = [];\r\n let apiPath = macdHelper.apiRetrieveIPTrunks(this.state.SelectedLocationId);\r\n let data = await apiCalls.fetchData(apiPath).then((data) => data);\r\n if (data !== null) {\r\n data.map((record, idx) => {\r\n let existingTrunkEntry = {};\r\n\r\n existingTrunkEntry = { \r\n IsNew: false, \r\n ConcatId: record.CustomerProductId, \r\n CustomerProductId: record.CustomerProductId, \r\n DetailId: null, \r\n IPTrunkGroupID: record.IPTrunkGroupID, \r\n LineDescription: record.LineDescription,\r\n CallPathId: record.CallPathCustomerProductId\r\n };\r\n trunks.push(existingTrunkEntry); \r\n });\r\n\r\n if (TrunkItems) {\r\n TrunkItems.map((record, idx) => {\r\n let newTrunkEntry = {};\r\n let trunkGroupDetailRecord = Details.filter(resp => resp.DetailId === record.DetailId)[0];\r\n if (trunkGroupDetailRecord)\r\n {\r\n let callPath = Details.filter(resp => (resp.PartNumber === 'IP101' || resp.PartNumber === 'IP102' || resp.PartNumber === 'IP103') && resp.ParentDetailId === trunkGroupDetailRecord.DetailId);\r\n if (callPath)\r\n callPath = callPath[0];\r\n newTrunkEntry = { \r\n IsNew: true, \r\n ConcatId: record.DetailId, \r\n CustomerProductId: null, \r\n DetailId: record.DetailId, \r\n IPTrunkGroupID: record.IPTrunkGroupID, \r\n LineDescription: record.Description,\r\n CallPathId: callPath ? callPath.DetailId : 0\r\n };\r\n trunks.push(newTrunkEntry); \r\n }\r\n });\r\n }\r\n \r\n let sort = [{ field: \"LineDescription\", dir: \"asc\" }]\r\n let sortedSet = orderBy(trunks, sort);\r\n let trunkOptions = macdHelper.getIPTrunkGroupOptions(sortedSet);\r\n await this.setState({IPTrunkGroupOptions: trunkOptions, IPTrunkGroups: sortedSet});\r\n } else {\r\n await this.setState({IPTrunkGroupOptions: [], IPTrunkGroups: []});\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.loadingPB || this.state.loadingAddedProducts) {\r\n return (\r\n
    \r\n\r\n
    \r\n
    \r\n

    Add Services

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n } else if (this.state.SelectedLocationId === \"0\") {\r\n return (\r\n
    \r\n\r\n
    \r\n
    \r\n

    Add Services

    \r\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 else {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Add Services

    \r\n\r\n {/*
    \r\n \r\n
    */}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n {this.state.ConfirmationTitle}\r\n \r\n \r\n

    {this.state.ConfirmationMessage}

    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.AddedProducts()}\r\n
    \r\n
    \r\n
    \r\n

    {this.state.resultsMsg}

    \r\n
    \r\n {this.showCancelAndContinue()}\r\n
    \r\n
    \r\n
    \r\n this.getSearchResults(e)} placeholder=\"Search Momentum Products by Part Num or Description\" />\r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    \r\n
    \r\n\r\n
    \r\n )\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default MacdAdd;","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { DatePicker } from '@progress/kendo-dateinputs-react-wrapper';\r\nimport ConfigureProductModal from './modals/configureProductModal';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport * as helper from '../../scripts/helper';\r\nimport * as macdHelper from './components/macd_helper';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport SaveSpinner from '../../components/AddServicesSaveStatus';\r\nimport _ from 'lodash';\r\n\r\nclass MacdReview extends Component {\r\n initialState = (props) => {\r\n let orderId = 0;\r\n if (props.match && props.match.params) {\r\n if (props.match.params.OrderId)\r\n orderId = props.match.params.OrderId;\r\n }\r\n let maxDate = new Date();\r\n maxDate.setDate(maxDate.getDate() + 30);\r\n\r\n return {\r\n filter: { logic: \"and\", filters: [] },\r\n useFilter: true,\r\n OrderDetails: [],//actual datadetails\r\n OrderId: orderId ? orderId : 0,\r\n sort: [{ field: \"PartDescription\", dir: \"asc\" }],\r\n skip: 0,\r\n gridHeight: (window.innerHeight - 300),\r\n error: false,\r\n submitting: false,\r\n loading: true,\r\n isConfirmSubmitDialogOpen: false,\r\n resultsMsg: \"\",\r\n MaxServiceDate: maxDate,\r\n currentLocation: 0,\r\n MPOLocationId: 0,\r\n TerminatingNumbersList: [],\r\n //InventoryTNList: [],\r\n DefaultRateCenterOptions: [],\r\n rcStateOptions: [],\r\n DefaultRCState: '',\r\n DefaultRCName: '',\r\n pricebookDetails: [],\r\n SaveMessage: '',\r\n ServiceDateError: '',\r\n updateServiceDate: true,\r\n ServiceDateUpdateMessage: 'Loading Service Date...',\r\n ReadOnly: false,\r\n OrderLocationErrors: [],\r\n DisabledUSOCs: require('./components/DisabledUSOCs.json'),\r\n IPTrunkGroupOptions: [],\r\n IPTrunkGroups: [],\r\n locations: JSON.parse(sessionStorage.locationList),//need to get the location's customerId to pass it so if E911 address is being validated it can be\r\n CustomerId: 0\r\n }\r\n }\r\n constructor(props) {\r\n super(props);\r\n this.state = this.initialState(props);\r\n this.gridContent = this.gridContent.bind(this);\r\n this.sortChange = this.sortChange.bind(this);\r\n this.RetrieveSavedOrder = this.RetrieveSavedOrder.bind(this);\r\n const RemoveItemFromOrder = this.RemoveItemFromOrder.bind(this);\r\n this.handleSubmitClick = this.handleSubmitClick.bind(this);\r\n this.handleBackClick = this.handleBackClick.bind(this);\r\n this.handleContinueClick = this.handleContinueClick.bind(this);\r\n this.LoadSupportingData = this.LoadSupportingData.bind(this);\r\n this.fetchLocations = this.fetchLocations.bind(this);\r\n this.fetchIPTrunks = this.fetchIPTrunks.bind(this);\r\n this.fetchPricebookDetails = this.fetchPricebookDetails.bind(this);\r\n this.fetchRcStateList = this.fetchRcStateList.bind(this);\r\n const updateOrderItemFromModal = this.updateOrderItemFromModal.bind(this);\r\n this.handleUpdateServiceDate = this.handleUpdateServiceDate.bind(this);\r\n this.SubmitOrder = this.SubmitOrder.bind(this);\r\n this.redirectToConfirm = this.redirectToConfirm.bind(this);\r\n this.CheckConfigurations = this.CheckConfigurations.bind(this);\r\n this.DisplayOrderLocationErrors = this.DisplayOrderLocationErrors.bind(this);\r\n\r\n const getIPTrunks = this.getIPTrunks.bind(this);\r\n const getIPTrunkOptions = this.getIPTrunkOptions.bind(this);\r\n const updateTrunkGroups = this.UpdateTrunkGroups.bind(this);\r\n const removeTrunkGroups = this.RemoveTrunkGroups.bind(this);\r\n const getCustomerId = this.getCustomerId.bind(this);\r\n\r\n class MyAddCell extends GridCell {\r\n render() {\r\n let TrunksGroups = getIPTrunks(this.props.dataItem);\r\n let TrunkGroupOptions = getIPTrunkOptions(this.props.dataItem);\r\n let CustomerId = getCustomerId();\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n this.CommandCell = MyAddCell;\r\n };\r\n\r\n componentDidMount() {\r\n let obj = sessionStorage.getItem('MacdPerms');\r\n if (obj.indexOf(1) < 0) {\r\n this.props.history.push(helper.homePageUrl());\r\n return;\r\n }\r\n this.fetchRcStateList();\r\n this.RetrieveSavedOrder(this.state.OrderId);\r\n }\r\n\r\n LoadItemConfigs = async () => {\r\n let [RateCenterDetails, TerminatingNumbers, LocationDetails] = await macdHelper.fetchItemConfig(this.state.OrderId, this.state.MPOLocationId);\r\n //RateCenterDetails => [{InventoryAvailable, RCNameAbbr}]\r\n //TerminatingNumbers = [{CustomerProductId, ServiceNumber}]\r\n let serviceAddress = LocationDetails.ShippingAddress;\r\n let defaultRCOptions = await macdHelper.fetchRateCenterOptions(serviceAddress.AdrState);\r\n let rcNameOptions = [];\r\n if (defaultRCOptions) {\r\n rcNameOptions = defaultRCOptions.map((rc) => {\r\n return (macdHelper.rcNameOption(rc));\r\n });\r\n }\r\n this.setState({\r\n //InventoryTNList: InventoryTN ? InventoryTN : [],\r\n TerminatingNumbersList: TerminatingNumbers ? TerminatingNumbers : [],\r\n DefaultRCState: serviceAddress.AdrState,\r\n DefaultRCName: RateCenterDetails && RateCenterDetails.length > 0 ? RateCenterDetails[0].RCNameAbbr : \"\",\r\n DefaultRateCenterOptions: rcNameOptions\r\n });\r\n }\r\n\r\n\r\n RetrieveSavedOrder = async (OrderId) => {\r\n this.setState({ loading: true });\r\n let StateOrderDetails = this.state.OrderDetails.slice();\r\n //await order information\r\n //order information is the Order itself & OrderItems w/enough details to be able to go from there\r\n\r\n let [OrderDetails, LocationDetails, LineItems, DetailItems, TrunkItems, AddressItems] = await macdHelper.RetrieveOrderDetails(OrderId);\r\n let locationId = LocationDetails[0].LocationId;\r\n let currentLocation = OrderDetails.MomentumAccountNumber;\r\n let bReadOnly = false;\r\n let selectedLocation = this.state.locations.filter(res => res.LocationAccountNumber === currentLocation)[0];\r\n if (OrderDetails.ProcessFlag.toUpperCase() !== 'OPEN' || OrderDetails.OrderSource !== 'MSP')\r\n bReadOnly = true;\r\n\r\n await this.setState({ ReadOnly: bReadOnly, MPOLocationId: locationId, currentLocation: currentLocation, CustomerId: selectedLocation.CustomerId });\r\n //if (!TrunkItems || TrunkItems.length === 0)\r\n let trunkGroups = await this.fetchIPTrunks(TrunkItems, DetailItems);\r\n await this.setState({IPTrunkGroups: trunkGroups});\r\n\r\n\r\n await this.LoadItemConfigs();\r\n //if read-only don't call ValidateMACD b/c it saves location when called\r\n let [pricebookDetails, MPOLocationDetails] = this.state.ReadOnly ? await this.LoadClosedSupportingData(this.state.OrderId, this.state.MPOLocationId) : await this.LoadSupportingData(this.state.OrderId, this.state.MPOLocationId);\r\n \r\n let LocationName = selectedLocation.LocationName;\r\n let ServiceDate = MPOLocationDetails.RequestDueDate ? MPOLocationDetails.RequestDueDate : '';\r\n let DateErrorMsg = helper.StripHtml(MPOLocationDetails.ErrorMessage);\r\n let [DetailItemValidations, LineItemErrors, TrunkGroupValidations] = [[],[],[]];\r\n //can we combine these?\r\n if (bReadOnly !== true) \r\n [DetailItemValidations, LineItemErrors, TrunkGroupValidations] = await macdHelper.ItemValidations(this.state.OrderId, locationId);\r\n \r\n if (LineItems && LineItems.length > 0) {\r\n LineItems.map((LineItem, idx) => {\r\n let ConfigurationDetailArray = [];\r\n if (DetailItems) {\r\n ConfigurationDetailArray = DetailItems.filter(function (o) { return o.LineItemId === LineItem.LineItemId; });\r\n }\r\n\r\n let catalogItm = pricebookDetails.filter(function (o) { return o.CatalogItemId === LineItem.CatalogItemId; })[0];\r\n // if (!catalogItm) {\r\n // let disabledListings = this.state.DisabledUSOCs;\r\n // catalogItm = this.state.DisabledUSOCs.filter(function (o) { return o.USOC === LineItem.PartNumber})[0];\r\n // }\r\n let PartNumber = LineItem.PartNumber;\r\n let PartDescription = LineItem.PartDescription;\r\n\r\n //if (bReadOnly !== true) {\r\n ConfigurationDetailArray.map((cda) => {\r\n let detailItemErrorArray = [];\r\n if (cda.ErrorMessage !== '')\r\n {\r\n cda.ErrorMessage = helper.StringReplaceAll(cda.ErrorMessage, '
    ','', false) + '\\n';\r\n detailItemErrorArray.push(cda.ErrorMessage);\r\n }\r\n _.filter(DetailItemValidations, div => cda.DetailId === div.SourceId).map((detailItem) => {\r\n let msg = cda.ErrorMessage === '' ? detailItem.ErrorMessage : '\\n' + detailItem.ErrorMessage;\r\n if (detailItemErrorArray.length === 0 || (detailItemErrorArray.length > 0 && _.indexOf(detailItemErrorArray, msg.replace('\\n','')) < 0))\r\n {\r\n cda.ErrorMessage += msg;\r\n detailItemErrorArray.push(msg.replace('\\n', ''));\r\n }\r\n });\r\n\r\n\r\n if (LineItem.PartNumber === 'IP100') {\r\n let trunkItem = TrunkItems.filter(resp => resp.DetailId === cda.DetailId);\r\n if (trunkItem && trunkItem.length > 0)\r\n {\r\n trunkItem = trunkItem[0];\r\n _.filter(TrunkGroupValidations, lie => trunkItem.IPTrunkConfigId === lie.SourceId).map((trunkError) => {\r\n let msg = helper.StringReplaceAll(trunkError.ErrorMessage, '
    ', '', false) + '\\n';\r\n cda.ErrorMessage += msg;\r\n });\r\n }\r\n }\r\n\r\n if (cda.Temp911AddressId !== 0)\r\n {\r\n let AddressItem = AddressItems.filter(resp => resp.AddressId === cda.Temp911AddressId)[0];\r\n if (AddressItem.ErrorMessage !== '') {\r\n let msg = helper.StringReplaceAll(AddressItem.ErrorMessage, '
    ', '', false);\r\n cda.ErrorMessage += msg;\r\n }\r\n }\r\n\r\n if (cda.ErrorMessage && cda.ErrorMessage !== '')\r\n cda.ErrorMessage = helper.StringReplaceAll(cda.ErrorMessage, '
    ', '', false);\r\n });\r\n\r\n let lineItemErrorArray = [];\r\n if (LineItem.ErrorMessage !== '')\r\n {\r\n LineItem.ErrorMessage = helper.StringReplaceAll(LineItem.ErrorMessage, '
    ','', false) + '\\n';\r\n lineItemErrorArray.push(LineItem.ErrorMessage);\r\n }\r\n\r\n _.filter(LineItemErrors, lie => LineItem.LineItemId === lie.SourceId).map((lineError) => {\r\n let msg = helper.StringReplaceAll(lineError.ErrorMessage, '
    ', '', false) + '\\n';\r\n if (lineItemErrorArray.length === 0 || (lineItemErrorArray.length > 0 && _.indexOf(lineItemErrorArray, msg) < 0))\r\n {\r\n LineItem.ErrorMessage += msg;\r\n lineItemErrorArray.push(msg);\r\n }\r\n });\r\n //}\r\n\r\n\r\n let NewItem = macdHelper.LoadItem(\r\n LineItem,\r\n PartNumber,\r\n PartDescription,\r\n this.state.currentLocation,\r\n LocationName,\r\n this.state.MPOLocationId,\r\n this.state.TerminatingNumbersList,\r\n //this.state.InventoryTNList,\r\n this.state.DefaultRateCenterOptions,\r\n this.state.rcStateOptions,\r\n this.state.DefaultRCState,\r\n this.state.DefaultRCName,\r\n catalogItm,\r\n this.state.ReadOnly\r\n )\r\n\r\n //let existingTrunkGroups = trunkGroups && trunkGroups.length > 0 ? trunkGroups.filter(resp => resp.IsNew === false) : []; //this.state.IPTrunkGroups.slice();\r\n NewItem.configurationDetails = macdHelper.MapConfigDetails(LineItem.NewCount === 0 ? 1 : LineItem.NewCount, [], NewItem, 0, ConfigurationDetailArray, TrunkItems, trunkGroups, AddressItems, false);\r\n NewItem.isConfigured = macdHelper.configuredCheck(NewItem.configurationDetails, NewItem, DetailItemValidations, LineItemErrors, TrunkGroupValidations, AddressItems);\r\n\r\n StateOrderDetails.push(NewItem);\r\n });\r\n }\r\n this.setState({\r\n OrderDetails: this.sortOrderDetails(this.state.sort, StateOrderDetails),\r\n pricebookDetails: pricebookDetails,\r\n ServiceDate: ServiceDate,\r\n ServiceDateError: DateErrorMsg,\r\n loading: false,\r\n updateServiceDate: false,\r\n saving: false\r\n });\r\n }\r\n\r\n LoadClosedSupportingData = async (OrderId, LocationId) => {\r\n let requests = [\r\n this.fetchPricebookDetails(),\r\n this.fetchMPOLocation(OrderId, LocationId)\r\n ];\r\n return await Promise.all(requests).then(dataArray => dataArray);\r\n }\r\n\r\n\r\n LoadSupportingData = async (OrderId, LocationId) => {\r\n let requests = [\r\n this.fetchPricebookDetails(),\r\n this.fetchMPOLocation(OrderId, LocationId),\r\n macdHelper.GetItemValidations(OrderId, LocationId),\r\n ];\r\n return await Promise.all(requests).then(dataArray => dataArray);\r\n }\r\n\r\n fetchPricebookDetails = async () => {\r\n let apiPath = macdHelper.apiPricebookPathWithParams(this.state.currentLocation);\r\n return apiCalls.fetchData(apiPath).then(data => data);\r\n }\r\n\r\n fetchLocations = async () => {\r\n let apiPath = macdHelper.apiGetLocations();\r\n return apiCalls.fetchData(apiPath).then(data => data);\r\n }\r\n\r\n fetchMPOLocation = async (OrderId, LocationId) => {\r\n let apiPath = macdHelper.apiGetMPOLocation(OrderId, LocationId);\r\n return apiCalls.fetchData(apiPath).then(data => data);\r\n }\r\n\r\n fetchRcStateList = (apiPath = null) => {\r\n this.setState({ loading: true });\r\n if (!apiPath) apiPath = 'admin/macd/GetRCStateList';\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n this.setState({ loading: true });\r\n if (data !== null) {\r\n let rcStateOptions = data.map((state, index) => {\r\n return (macdHelper.rcStateOption(state, index));\r\n });\r\n\r\n this.setState({ rcStateOptions: rcStateOptions });\r\n\r\n if (this.state.OrderDetails && this.state.OrderDetails.length > 0) {\r\n this.state.OrderDetails.map((itm, idx) => {\r\n this.itm.configurationDetails.map((ci, idx2) => {\r\n ci.rcStateOptions = rcStateOptions;\r\n this.state.OrderDetails[idx].configurationDetails[idx2] = ci;\r\n });\r\n });\r\n }\r\n } else if (data === null) {\r\n this.setState({ rcStateOptions: [] });\r\n };\r\n\r\n });\r\n }\r\n\r\n getCustomerId = () => {\r\n return this.state.CustomerId;\r\n }\r\n\r\n sortChange(event) {\r\n this.setState({\r\n OrderDetails: this.sortOrderDetails(event.sort),\r\n sort: event.sort\r\n });\r\n }\r\n\r\n sortOrderDetails(sort, OrderDetails = null) {\r\n if (OrderDetails == null) OrderDetails = this.state.OrderDetails.slice();\r\n let sortedSet = orderBy(OrderDetails, sort);\r\n if (sort.length) {\r\n return helper.blanksAfterZ(sortedSet, sort);\r\n } else {\r\n return sortedSet;\r\n }\r\n }\r\n\r\n revisedData = (data) => {\r\n let sortedData = this.sortOrderDetails(this.state.sort, data)\r\n return sortedData;\r\n }\r\n\r\n gridContent = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n ServiceDateContent = () => {\r\n if (this.state.updateServiceDate) {\r\n return (\r\n \r\n )\r\n }\r\n else {\r\n if (this.state.ReadOnly) {\r\n // Kendo package containing Datepicker is out of date, unable use a disabled/enabled property... this is short-term solution for Read-Only\r\n if (!this.state.ServiceDate) {\r\n return (\r\n
    \r\n Service Date: N/A\r\n
    \r\n );\r\n } else {\r\n let date = new Date(this.state.ServiceDate);\r\n let serviceDate = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();\r\n return (\r\n
    \r\n Service Date:\r\n
    \r\n {serviceDate}\r\n
    \r\n
    \r\n {this.state.ServiceDateError}\r\n
    \r\n
    \r\n );\r\n }\r\n } else {\r\n return (\r\n
    \r\n Service Date:\r\n
    \r\n { this.handleUpdateServiceDate(e); }}\r\n />\r\n
    \r\n
    \r\n {this.state.ServiceDateError}\r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n }\r\n\r\n handleBackClick(e) {\r\n this.props.history.push(macdHelper.AddEditPage(this.state.OrderId));\r\n }\r\n\r\n updateOrderItemFromModal = async (ProductItem, newConfigDetails, LineItemId) => {\r\n if (this.state.ReadOnly === true)\r\n return;\r\n let OrderDetails = this.state.OrderDetails;\r\n try {\r\n var result = newConfigDetails.filter(obj => {\r\n return obj.DetailId === 0\r\n });\r\n //if any item in config details has a DetailId = 0 then its not configured\r\n if (result && result.length > 0) {\r\n ProductItem.isConfigured = false;\r\n }\r\n else {//else need to run back-end validation. if valid then isConfigured = true.\r\n let [DetailItemValidations, LineItemErrors, TrunkGroupValidations] = await macdHelper.ItemValidations(this.state.OrderId, this.state.MPOLocationId);\r\n ProductItem.isConfigured = true;\r\n if ((LineItemErrors && LineItemErrors.length > 0) || (DetailItemValidations && DetailItemValidations.length > 0) || (TrunkGroupValidations && TrunkGroupValidations.length > 0)) {\r\n \r\n let errorLine = LineItemErrors.filter(function (o) { return o.SourceId === LineItemId });\r\n if (errorLine && errorLine.length > 0)\r\n ProductItem.isConfigured = false;\r\n\r\n newConfigDetails.map((cd, idx) => {\r\n errorLine = DetailItemValidations.filter(function (o) { return o.SourceId === cd.DetailId });\r\n if (errorLine && errorLine.length > 0) {\r\n cd.ErrorMessage = errorLine[0].ErrorMessage;\r\n newConfigDetails[idx] = cd;\r\n if (newConfigDetails[idx].LineItemId == ProductItem.LineItemId)\r\n ProductItem.isConfigured = false;\r\n } else {\r\n cd.ErrorMessage = \"\";\r\n newConfigDetails[idx] = cd;\r\n }\r\n if (ProductItem.PartNum === 'IP100') {\r\n _.filter(TrunkGroupValidations, lie => cd.IPTrunkConfigId === lie.SourceId).map((trunkError) => {\r\n let msg = helper.StringReplaceAll(trunkError.ErrorMessage, '
    ', '', false) + '\\n';\r\n cd.ErrorMessage += msg;\r\n });\r\n }\r\n\r\n if (cd.Temp911AddressId !== 0)\r\n {\r\n let AddressItem = cd.address;\r\n if (AddressItem.ErrorMessage !== '') {\r\n let msg = helper.StringReplaceAll(AddressItem.ErrorMessage, '
    ', '', false);\r\n cd.ErrorMessage += msg;\r\n }\r\n }\r\n\r\n if (cd.ErrorMessage && cd.ErrorMessage !== '')\r\n ProductItem.isConfigured = false;\r\n });\r\n }\r\n if (ProductItem.PartNum === 'IP101' || ProductItem.PartNum === 'IP102' || ProductItem.PartNum === 'IP103') {\r\n let ipTrunks = this.state.IPTrunkGroups.slice();\r\n newConfigDetails.map((cd) => {\r\n //remove the old association\r\n let idx = -1;\r\n let updatedTrunk = ipTrunks.filter(resp => resp.CallPathId === cd.DetailId);\r\n if (updatedTrunk && updatedTrunk.length > 0) { \r\n updatedTrunk = updatedTrunk[0];\r\n idx = _.indexOf(ipTrunks, updatedTrunk);\r\n if (cd.ParentDetailId !== updatedTrunk.ConcatId && idx > -1)\r\n ipTrunks[idx].CallPathId = 0;\r\n }\r\n //update new association\r\n let newTrunk = ipTrunks.filter(resp => parseInt(resp.ConcatId) === parseInt(cd.ParentDetailId) || parseInt(resp.ConcatId) === parseInt(cd.IPTrunkGroupCustomerProductId));\r\n if (newTrunk && newTrunk.length > 0) {\r\n newTrunk = newTrunk[0];\r\n idx = _.indexOf(ipTrunks, newTrunk);\r\n if (cd.ParentDetailId === newTrunk.ConcatId && idx > -1)\r\n ipTrunks[idx].CallPathId = cd.DetailId;\r\n }\r\n });\r\n this.setState({IPTrunkGroups: ipTrunks});\r\n }\r\n\r\n //Quantity Validations\r\n console.log('Stupid console statement to make debugs work because react be trippin');\r\n if (ProductItem.Quantity != newConfigDetails.length)\r\n {\r\n let dependencyRules = _.filter(macdHelper.QuantityValidationRules, resp => resp.PartNum === ProductItem.PartNum);\r\n if (dependencyRules !== null && dependencyRules.length === 1)\r\n {\r\n \r\n let otherUSOCs = dependencyRules[0].DependencyList;\r\n let dependentOrderItems = _.filter(OrderDetails, resp => _.indexOf(otherUSOCs, resp.PartNum) > -1);\r\n //Get all other call recording products and validate those\r\n if (dependentOrderItems !== null && dependentOrderItems.length > 0) {\r\n await this.ReviewAndRefreshQuantityDependencies(dependentOrderItems);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n } catch (msg) {\r\n console.log(msg);\r\n }\r\n if (LineItemId !== -1)\r\n {\r\n let arrayIdx = OrderDetails.indexOf(OrderDetails.filter(resp => resp.LineItemId === LineItemId)[0]);\r\n OrderDetails[arrayIdx].configurationDetails = newConfigDetails;\r\n OrderDetails[arrayIdx].Quantity = newConfigDetails.length;\r\n OrderDetails[arrayIdx].isConfigured = ProductItem.isConfigured;\r\n }\r\n await this.setState({ OrderDetails: OrderDetails });\r\n this.CheckConfigurations();\r\n \r\n }\r\n\r\n handleUpdateServiceDate = async (e) => {\r\n let ServiceDateVal = e.sender.value();\r\n if (ServiceDateVal == null) ServiceDateVal = new Date(); // if a past/undefined date is selected, defaults to current date\r\n this.setState({ ServiceDate: ServiceDateVal, updateServiceDate: true, ServiceDateUpdateMessage: 'Validating Service Date...' });\r\n let ServiceDateProp = ServiceDateVal.getMonth() + 1 + '/' + ServiceDateVal.getDate() + '/' + ServiceDateVal.getFullYear();\r\n var reqObject = {\r\n OrderId: this.state.OrderId,\r\n LocationId: this.state.MPOLocationId,\r\n RequestDueDate: ServiceDateProp\r\n }\r\n let response = await apiCalls.post(macdHelper.apiUpdateLocation(), 'PATCH', JSON.stringify(reqObject)).then(data => data);\r\n let errorMsg = '';\r\n if (!response.ok) {\r\n //display error message below\r\n errorMsg = 'An error occurred. Please select another date';\r\n } else {\r\n let responseMsg = JSON.parse(response.message);\r\n errorMsg = helper.StripHtml(responseMsg.ErrorMessage);\r\n }\r\n this.setState({ ServiceDateError: errorMsg, updateServiceDate: false });\r\n }\r\n\r\n handleSubmitClick = (e) => {\r\n //need to save, then need to validate, then need to submit, then redirect to macd_confirm page\r\n this.setState({ submitting: true, SaveMessage: 'Saving Order Updates...' });\r\n try {\r\n this.setState({ SaveMessage: 'Validating Order Items...' });\r\n this.SubmitOrder();\r\n } catch (ex) {\r\n this.setState({ submitting: false, SaveMessage: '' });\r\n }\r\n }\r\n\r\n CheckConfigurations = () => {\r\n let bIsConfigured = true;\r\n let newServices = this.state.OrderDetails.slice();\r\n bIsConfigured = newServices.map((ns) => {\r\n if (ns.isConfigured === false)\r\n return false;\r\n });\r\n if (!bIsConfigured) {\r\n let ValidationMessage = 'Order contains errors. Please review configurations.';\r\n this.setState({ submitting: false, SaveMessage: '', error: true, resultsMsg: ValidationMessage });\r\n } else {\r\n this.setState({ error: false, resultsMsg: '' });\r\n }\r\n return bIsConfigured;\r\n }\r\n\r\n ReviewAndRefreshQuantityDependencies = async (dependentOrderItems) =>\r\n {\r\n //dependentOrderItems.map(async (od) => {\r\n //this.setState({saving: true});\r\n let pricebook = this.state.pricebookDetails;\r\n for (let i = 0; i < dependentOrderItems.length; i++)\r\n {\r\n let pricebookItem = _.filter(pricebook, resp => resp.CatalogItemId === dependentOrderItems[i].CatalogItemId);\r\n if (pricebookItem && pricebookItem.length > 0)\r\n pricebookItem = pricebookItem[0];\r\n else \r\n continue; \r\n \r\n let apiPath = macdHelper.apiUpdateLineItem();\r\n let dbLineItem = {\r\n OrderId: this.state.OrderId,\r\n LocationId: this.state.MPOLocationId,\r\n LineItemId: dependentOrderItems[i].LineItemId,\r\n CatalogItemId: dependentOrderItems[i].CatalogItemId,\r\n NewCount: dependentOrderItems.Quantity,\r\n NRCAdjustedPrice: pricebookItem.NRCAdjustedPrice ? pricebookItem.NRCAdjustedPrice : pricebookItem.ActivationCharge,\r\n NRCDiscountPercent: pricebookItem.NRCAdjustedPrice ? (1.00) - parseFloat(pricebookItem.NRCAdjustedPrice / pricebookItem.ActivationCharge) : 0.00,\r\n MRCAdjustedPrice: pricebookItem.MRCAdjustedPrice ? pricebookItem.MRCAdjustedPrice : pricebookItem.BasePrice,\r\n MRCDiscountPercent: pricebookItem.MRCAdjustedPrice ? (1.00) - parseFloat(pricebookItem.MRCAdjustedPrice - pricebookItem.BasePrice) : 0.00,\r\n UpdateNeeded: true //no values are changing in the dependent order item so this is used to force an update\r\n }\r\n\r\n let reqBody = JSON.stringify(dbLineItem);\r\n let responseMessage = await apiCalls.post(apiPath, 'PATCH', reqBody).then(resp => resp)\r\n .catch(message => {\r\n // this.setState({\r\n // saving: false,\r\n // error: true,\r\n // loading: false,\r\n // resultsMsg: 'An error occurred. Please check the Open Requests tab and reload your Order!'\r\n // });\r\n });\r\n //});\r\n }\r\n await this.setState({ OrderDetails: [], saving: false });\r\n //need to save those order items\r\n this.RetrieveSavedOrder(this.state.OrderId, false);\r\n }\r\n\r\n SubmitOrder = () => {\r\n let apiPath = macdHelper.apiSubmitOrder();\r\n if (!this.CheckConfigurations()) return;\r\n //let reqData = { OrderId: this.state.OrderId};\r\n apiCalls.post(apiPath, 'PATCH', this.state.OrderId).then(resp => {\r\n if (resp.ok) {\r\n let ValidationMessages = [];\r\n if (!ValidationMessages || ValidationMessages.length === 0) {\r\n this.setState({ SaveMessage: 'Submitting Order...' });\r\n this.redirectToConfirm();\r\n }\r\n } else {\r\n let ValidationMessage = 'Order contains errors. Please review configurations.';\r\n this.setState({ submitting: false, SaveMessage: '', error: true, resultsMsg: ValidationMessage })\r\n }\r\n }).catch(message => {\r\n console.log(message)\r\n this.setState({\r\n submitting: false,\r\n SaveMessage: '',\r\n error: true,\r\n resultsMsg: message\r\n });\r\n });\r\n }\r\n\r\n handleContinueClick = () => {\r\n this.props.history.push(macdHelper.ConfirmPageUrl(this.state.OrderId));\r\n }\r\n\r\n redirectToConfirm = () => {\r\n this.props.history.push(macdHelper.ConfirmPageUrl(this.state.OrderId));\r\n }\r\n\r\n handleRemoveItem(id) {\r\n let msg = 'Are you sure you wish to remove this item from your order?';\r\n let title = 'Remove Item from Order?';\r\n this.setState({ isConfirmationDialogOpen: true, ConfirmationTitle: title, ConfirmationMessage: msg, RemoveItemId: id });\r\n }\r\n\r\n RemoveItemFromOrder = (id) => {\r\n //if trying to remove an IP Trunk Group we need to test to make sure user hasn't configured another new product to one of these new trunk groups\r\n let currentDetails = this.state.OrderDetails;\r\n //let LineItemRemoved = currentDetails.filter(resp => resp.LineItemId === id);\r\n \r\n let verb = \"PATCH\";\r\n let reqBody = {\r\n OrderId: this.state.OrderId,\r\n LocationId: this.state.MPOLocationId,\r\n LineItemId: id\r\n };\r\n let data = JSON.stringify(reqBody);\r\n let apiPath = macdHelper.apiDiscardLineItem();\r\n this.setState({ saving: true });\r\n apiCalls.post(apiPath, verb, data).then(resp => {\r\n if (resp.ok) {\r\n let newTrunkGroups = this.state.IPTrunkGroups.slice();\r\n let newTrunkGroupOptions = this.state.IPTrunkGroupOptions.slice();\r\n \r\n let array = this.state.OrderDetails;\r\n var itmToRemove = array.find((element) => {\r\n return element.LineItemId === id;\r\n });\r\n var index = this.state.OrderDetails.indexOf(itmToRemove);\r\n array.splice(index, 1);\r\n\r\n if (itmToRemove.PartNum === 'IP100') {\r\n let removedTrunkGroups = newTrunkGroups.filter(resp => resp.IsNew === true);\r\n newTrunkGroups = newTrunkGroups.filter(resp => resp.IsNew !== true);\r\n newTrunkGroupOptions = macdHelper.getIPTrunkGroupOptions(newTrunkGroups);\r\n removedTrunkGroups.map((rd,idx) => {\r\n if (rd.IPTrunkGroupID !== 0)\r\n this.RemoveTrunkGroupsFromDB(rd);\r\n });\r\n \r\n }\r\n\r\n this.setState({ OrderDetails: array, error: false, saving: false, RemoveItemId: 0, isConfirmationDialogOpen: false, IPTrunkGroups: newTrunkGroups, IPTrunkGroupOptions: newTrunkGroupOptions });\r\n\r\n let quantityRules = _.filter(macdHelper.QuantityValidationRules, resp => resp.PartNum === itmToRemove.PartNum);\r\n if (quantityRules !== null && quantityRules.length > 0)\r\n {\r\n //if removing a product where quantity validation is performed, we need to mimic the save updateItemFromModal task and update those items and refresh\r\n let otherUSOCs = quantityRules[0].DependencyList;\r\n let dependentOrderItems = _.filter(array, resp => _.indexOf(otherUSOCs, resp.PartNum) > -1);\r\n //Get all other call recording products and validate those\r\n if (dependentOrderItems !== null && dependentOrderItems.length > 0)\r\n this.ReviewAndRefreshQuantityDependencies(dependentOrderItems);\r\n }\r\n\r\n\r\n } else {\r\n this.setState({ error: true, saving: false, errorMsg: resp.message, RemoveItemId: 0, isConfirmationDialogOpen: false });\r\n }\r\n }).catch(message => {\r\n this.setState({ error: true, saving: false, errorMsg: message, RemoveItemId: 0, isConfirmationDialogOpen: false });\r\n });\r\n }\r\n\r\n DisplayOrderLocationErrors = () => {\r\n let htmlContents = [];\r\n let errors = [];\r\n if (this.state.OrderLocationErrors && this.state.OrderLocationErrors.length > 0) {\r\n this.state.OrderLocationErrors.map((ole) => {\r\n htmlContents.push(macdHelper.ErrorMessageDisplayItem(ole));\r\n errors.push(ole);\r\n });\r\n }\r\n if (errors && errors.length > 0)\r\n return (\r\n
    \r\n

    Configuration Errors:

    \r\n
      \r\n {htmlContents}\r\n
    \r\n
    \r\n )\r\n else return null;\r\n }\r\n\r\n fetchIPTrunks = async (TrunkItems = null, Details = null) => {\r\n let trunks = [];\r\n let apiPath = macdHelper.apiRetrieveIPTrunks(this.state.currentLocation);\r\n let data = await apiCalls.fetchData(apiPath).then((data) => data);\r\n if (data !== null) {\r\n data.map((record, idx) => {\r\n let existingTrunkEntry = {};\r\n existingTrunkEntry = { \r\n IsNew: false, \r\n ConcatId: record.CustomerProductId, \r\n CustomerProductId: record.CustomerProductId, \r\n DetailId: null, \r\n IPTrunkGroupID: record.IPTrunkGroupID, \r\n LineDescription: record.LineDescription,\r\n CallPathId: record.CallPathCustomerProductId\r\n };\r\n trunks.push(existingTrunkEntry); \r\n });\r\n\r\n if (TrunkItems) {\r\n TrunkItems.map((record, idx) => {\r\n let newTrunkEntry = {};\r\n let trunkGroupDetailRecord = Details.filter(resp => resp.DetailId === record.DetailId)[0];\r\n if (trunkGroupDetailRecord)\r\n {\r\n let callPath = Details.filter(resp => (resp.PartNumber === 'IP101' || resp.PartNumber === 'IP102' || resp.PartNumber === 'IP103') && resp.ParentDetailId === trunkGroupDetailRecord.DetailId);\r\n if (callPath)\r\n callPath = callPath[0];\r\n newTrunkEntry = { \r\n IsNew: true, \r\n ConcatId: record.DetailId, \r\n CustomerProductId: null, \r\n DetailId: record.DetailId, \r\n IPTrunkGroupID: record.IPTrunkGroupID, \r\n LineDescription: record.Description,\r\n CallPathId: callPath ? callPath.DetailId : 0\r\n };\r\n trunks.push(newTrunkEntry); \r\n }\r\n });\r\n }\r\n return trunks;\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n\r\n UpdateTrunkGroups = async(TrunkGroupDetails, DetailId, IsAdd) => {\r\n let existingTrunks = this.state.IPTrunkGroups.slice();\r\n if (IsAdd)\r\n {\r\n let newTrunkEntry = { \r\n IsNew: true, \r\n ConcatId: DetailId, \r\n CustomerProductId: 0, \r\n DetailId: DetailId, \r\n IPTrunkGroupID: TrunkGroupDetails.IPTrunkConfigId, \r\n LineDescription: TrunkGroupDetails.TrunkDescription,\r\n CallPathId: 0\r\n };\r\n\r\n existingTrunks.push(newTrunkEntry);\r\n } else {\r\n let updatedTrunk = existingTrunks.filter(resp => resp.DetailId === DetailId)[0];\r\n let idx = _.indexOf(existingTrunks, updatedTrunk);\r\n existingTrunks[idx].LineDescription = TrunkGroupDetails.TrunkDescription\r\n }\r\n let sort = [{ field: \"LineDescription\", dir: \"asc\" }]\r\n let sortedSet = orderBy(existingTrunks, sort);\r\n let trunkOptions = macdHelper.getIPTrunkGroupOptions(sortedSet);\r\n this.setState({IPTrunkGroupOptions: trunkOptions, IPTrunkGroups: sortedSet});\r\n }\r\n\r\n RemoveTrunkGroups = async(DetailId) => {\r\n let existingTrunks = this.state.IPTrunkGroups.slice();\r\n let trunk = existingTrunks.filter(resp => resp.DetailId === DetailId);\r\n trunk = trunk[0];\r\n this.RemoveTrunkGroupsFromDB(trunk);\r\n existingTrunks = existingTrunks.filter(resp => resp.DetailId !== DetailId);\r\n\r\n let LineItems = this.state.OrderDetails;\r\n LineItems.map((li, idx) => {\r\n let configDetails = li.configurationDetails.slice();\r\n configDetails.map((cd, idxCD) => {\r\n if (cd.ParentDetailId === DetailId) {\r\n cd.ParentDetailId = 0;\r\n cd.IPTrunkGroupCustomerProductId = 0;\r\n cd.TrunkId = 0;\r\n configDetails[idxCD] = cd;\r\n }\r\n });\r\n LineItems[idx].configurationDetails = configDetails;\r\n });\r\n\r\n let sort = [{ field: \"LineDescription\", dir: \"asc\" }]\r\n let sortedSet = orderBy(existingTrunks, sort);\r\n let trunkOptions = macdHelper.getIPTrunkGroupOptions(sortedSet);\r\n this.setState({IPTrunkGroupOptions: trunkOptions, IPTrunkGroups: sortedSet, OrderDetails: LineItems});\r\n }\r\n\r\n RemoveTrunkGroupsFromDB = async(trunk) => {\r\n let apiPath = macdHelper.apiDiscardTrunkItem();\r\n let reqBody = {\r\n OrderId: this.state.OrderId,\r\n LocationId: this.state.MPOLocationId,\r\n DetailId: trunk.DetailId,\r\n IPTrunkConfigId: trunk.IPTrunkGroupID\r\n }\r\n apiCalls.post(apiPath, 'PATCH', JSON.stringify(reqBody)).then((data) => data);//.error((message) => console.error(message));\r\n }\r\n\r\n getIPTrunks = (product) => {\r\n //CallPathCustomerProductId\r\n let ipTrunks = this.state.IPTrunkGroups;\r\n let newIPTrunks = ipTrunks.slice();\r\n \r\n if (product.PartNum === 'IP101' || product.PartNum === 'IP102' || product.PartNum === 'IP103') {\r\n newIPTrunks = []; //clearing b/c you can't set a call path on an IP Trunk that already has one\r\n let configDetailIds = [];\r\n product.configurationDetails.map((cd) => {\r\n if (cd.ParentDetailId && parseInt(cd.ParentDetailId) > 0)\r\n configDetailIds.push(cd.DetailId);\r\n else if (cd.IPTrunkGroupCustomerProductId && parseInt(cd.IPTrunkGroupCustomerProductId) > 0)\r\n configDetailIds.push(cd.DetailId);\r\n });\r\n //filtering out IP Trunks that have been associated with other call plan types in the order from the modal. \r\n //Also filtering out previously setup IP Trunks whose IP Trunk already has a call path plan.\r\n ipTrunks.map((ipt) => {\r\n if (ipt.CallPathId === 0)\r\n newIPTrunks.push(ipt);\r\n else if (_.indexOf(configDetailIds, ipt.CallPathId) > -1 && ipt.IsNew === true)\r\n newIPTrunks.push(ipt);\r\n });\r\n }\r\n return newIPTrunks;\r\n }\r\n \r\n getIPTrunkOptions = (product) => {\r\n let existingTrunks = this.getIPTrunks(product);\r\n let sort = [{ field: \"LineDescription\", dir: \"asc\" }]\r\n let sortedSet = orderBy(existingTrunks, sort);\r\n let ipTrunkOptions = macdHelper.getIPTrunkGroupOptions(sortedSet);\r\n return ipTrunkOptions;\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Order Summary

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n } else if (this.state.submitting) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Order Summary

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Order Summary

    \r\n
    This order may be subject to MRC and NRC charges. Please review charges before submitting the service change below.
    \r\n
    \r\n
    \r\n

    {this.state.resultsMsg}

    \r\n
    \r\n
    \r\n {this.DisplayOrderLocationErrors()}\r\n
    \r\n
    \r\n {this.gridContent()}\r\n\r\n
    \r\n {this.ServiceDateContent()}\r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n}\r\n\r\nexport default MacdReview;","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport * as config from './../../requests/config';\r\nimport * as helper from '../../scripts/helper';\r\nimport * as macdHelper from './components/macd_helper';\r\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\n\r\nclass MacdConfirm extends Component {\r\n\r\n initialState(props) {\r\n let orderId = 0;\r\n if (props.match && props.match.params) {\r\n if (props.match.params.OrderId)\r\n orderId = props.match.params.OrderId;\r\n }\r\n \r\n return {\r\n OrderId: orderId,\r\n Listings: [],\r\n MPOLocationId: 0,\r\n sort: [{field: \"PartDescription\", dir: \"asc\"}],\r\n gridHeight: (window.innerHeight - 300),\r\n loading: true\r\n\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = this.initialState(props);\r\n\r\n\r\n this.fetchOrderDetails = this.fetchOrderDetails.bind(this);\r\n this.sortChange = this.sortChange.bind(this);\r\n this.LoadLocationsForAccount = this.LoadLocationsForAccount.bind(this);\r\n };\r\n\r\n componentDidMount() {\r\n let obj = sessionStorage.getItem('MacdPerms');\r\n if (obj.indexOf(1) < 0) {\r\n this.props.history.push(helper.homePageUrl());\r\n return;\r\n }\r\n this.setState({loading: true});\r\n this.fetchOrderDetails();\r\n }\r\n\r\n fetchOrderDetails = async() => { \r\n let ListingArr = [];\r\n let locationId = 0;\r\n //try \r\n //{\r\n let [OrderDetails, LocationDetails, LineItems, DetailItems] = await macdHelper.RetrieveOrderDetails(this.state.OrderId);\r\n locationId = LocationDetails[0].LocationId; \r\n let [LocationListDetails, MPOLocationDetails] = await this.LoadLocationData(this.state.OrderId, locationId);\r\n let selectedLocation = OrderDetails.MomentumAccountNumber;\r\n let LocationFromList = LocationListDetails.filter(resp => resp.LocationAccountNumber === selectedLocation);\r\n let LocationName = LocationFromList[0].LocationName;\r\n let ServiceDate = MPOLocationDetails.RequestDueDate ? MPOLocationDetails.RequestDueDate : '';\r\n let svcAddress = MPOLocationDetails.ServiceAddress.AddressLine1 + ' ' + MPOLocationDetails.ServiceAddress.AddressLine2\r\n + MPOLocationDetails.ServiceAddress.City + ', ' + MPOLocationDetails.ServiceAddress.AdrState + ' ' + MPOLocationDetails.ServiceAddress.ZipCode;\r\n \r\n DetailItems.map((DetailItem, idx) => {\r\n let LineItem = LineItems.filter(resp => resp.LineItemId === DetailItem.LineItemId)[0];\r\n let PartNumber = LineItem.PartNumber;\r\n let PartDescription = LineItem.PartDescription;\r\n\r\n let Listing = {\r\n DetailId: DetailItem.DetailId,\r\n LineItemId: LineItem.LineItemId,\r\n PartNum: PartNumber,\r\n PartDescription: PartDescription,\r\n MRCAdjustedPrice: LineItem.MRCAdjustedPrice,\r\n NRCAdjustedPrice: LineItem.NRCAdjustedPrice,\r\n ServiceAddress: svcAddress,\r\n Location: LocationName,\r\n Extension: DetailItem.Extension,\r\n DueDate: new Date(OrderDetails.ModifiedDate),\r\n ServiceDate: new Date(ServiceDate),\r\n ServiceNumber: DetailItem.ServiceNumber,\r\n LineEmail: DetailItem.LineEmail,\r\n Filler: ' '\r\n }\r\n ListingArr.push(Listing);\r\n });\r\n //}\r\n //catch (ex) {\r\n //console.log('error');\r\n //}\r\n\r\n this.setState({MPOLocationId: locationId, Listings: this.sortOrderDetails(this.state.sort, ListingArr), loading: false});\r\n }\r\n\r\n LoadLocationData = async(OrderId, LocationId) => {\r\n let requests = [\r\n macdHelper.fetchLocations(), \r\n macdHelper.fetchMPOLocation(OrderId, LocationId)\r\n ];\r\n return await Promise.all(requests).then(dataArray => dataArray); \r\n }\r\n LoadLocationsForAccount = async(OrderId, LocationId) => {\r\n let apiPath = macdHelper.apiGetMPOLocation(OrderId, LocationId);\r\n return apiCalls.fetchData(apiPath).then(data => data); \r\n }\r\n fetchPricebookDetails = async(selectedLocation) => {\r\n let apiPath = macdHelper.apiPricebookPathWithParams(selectedLocation);\r\n return apiCalls.fetchData(apiPath).then(data => data);\r\n }\r\n\r\n\r\n sortChange(event) {\r\n this.setState({\r\n Listings: this.sortOrderDetails(event.sort),\r\n sort: event.sort\r\n });\r\n }\r\n\r\n sortOrderDetails(sort, OrderDetails = null) {\r\n if (OrderDetails == null) OrderDetails = this.state.Listings.slice();\r\n let sortedSet = orderBy(OrderDetails, sort);\r\n if (sort.length) {\r\n return helper.blanksAfterZ(sortedSet, sort);\r\n } else {\r\n return sortedSet;\r\n }\r\n }\r\n\r\n gridContent = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n exportOrderDetailsBtn = () => {\r\n if (this.state.allDevices.length > 0) {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n this.exportOrder()} >Print Confirmation\r\n
    \r\n )\r\n } else null;\r\n }\r\n\r\n exportDevices = () => {\r\n this.refs.exportDevices.submit();\r\n this.refs.exportBtn.text = 'Downloading...';\r\n setTimeout(() => {\r\n this.refs.exportBtn.text = 'Print Confirmation';\r\n }, 2000);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Services Confirmation - Order ID: {this.state.OrderId}

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    \r\n
    \r\n {/* {this.exportOrderDetailsBtn()} */}\r\n { window.print(); }}>Print Confirmation\r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default MacdConfirm;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as apiCalls from './../../../requests/api_calls';\r\nimport * as helper from './../../../scripts/helper';\r\nimport * as macdHelper from '../components/macd_helper';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport _ from 'lodash';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\n\r\nclass MacdUserModal extends Component {\r\n\r\n initialState = (props) => {\r\n\r\n return {\r\n orderSubmitted: false,\r\n userListings: [],\r\n gridCopy: [],\r\n gridData: [],\r\n loading: false,\r\n postCompleted: false,\r\n errorMsg: '',\r\n ConfirmationTitle: '',\r\n ConfirmationMessage: '',\r\n isConfirmationDialogOpen: false,\r\n isAssign: props.isAssign,\r\n ReadOnly: false,\r\n AvailableCount: this.props.countAvailable,\r\n AssignedCount: this.props.countAssigned,\r\n selectedForAction: [],\r\n showModal: false,\r\n CatalogItemId: props && props.CatalogItemId ? props.CatalogItemId : '',\r\n MomentumAccountNumber: props && props.MomentumAccountNumber ? props.MomentumAccountNumber : '',\r\n sort: [{field: 'ServiceNumber', dir: 'asc'}]\r\n }\r\n }\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleCounts = this.handleCounts.bind(this);\r\n this.state = this.initialState(props);\r\n\r\n const updateConfiguredVal = this.updateConfiguredVal.bind(this);\r\n const getInfo = this.getInfo.bind(this);\r\n\r\n class MyActions extends GridCell {\r\n render() {\r\n let productItem = this.props.dataItem;\r\n const selectedVal = this.props.dataItem.IsSelected;\r\n let isAssign = props.isAssign;\r\n let BSSaved = this.props.dataItem.BSSaved;\r\n let successfulPost = this.props.dataItem.successfulPost;\r\n\r\n\r\n let [countAvailable, countAssigned, countRemaining, userListings, readOnly, changedItems] = getInfo();\r\n \r\n\r\n let updateConfiguredValues = () => {\r\n updateConfiguredVal(productItem, selectedVal);\r\n };\r\n\r\n if (readOnly === true) { // AFTER SUBMISSION BTN\r\n return (\r\n \r\n \r\n {isAssign === true ? \"Assigned\" : \"Un-Assigned\"}\r\n \r\n )\r\n }\r\n\r\n if (selectedVal && readOnly === false) {\r\n return (\r\n \r\n \r\n {isAssign === true ? \"✓ Assign\" : \"✓ Un-Assign\"}\r\n \r\n )\r\n }\r\n if (!selectedVal && readOnly === false) {\r\n return (\r\n \r\n \r\n {isAssign === true ? \"Assign\" : \"Un-Assign\"}\r\n \r\n )\r\n }\r\n }\r\n }\r\n this.CommandCell = MyActions;\r\n\r\n }\r\n\r\n componentWillReceiveProps = (props) => {\r\n if (props) {\r\n if (this.state.AvailableCount !== props.countAvailable) {\r\n this.setState({ AvailableCount: props.countAvailable });\r\n }\r\n if (this.state.AssignedCount !== props.countAssigned) {\r\n this.setState({ AssignedCount: props.countAssigned });\r\n }\r\n }\r\n }\r\n\r\n getChangedItems = () => {\r\n let items = this.state.gridData && this.state.gridData.length > 0 ? this.state.gridData.filter(itm => itm.IsSelected === true) : [];\r\n return items;\r\n }\r\n\r\n getInfo = () => {\r\n let changedItems = this.getChangedItems();\r\n const remaining = this.state.AvailableCount - this.state.AssignedCount;\r\n return [this.state.AvailableCount, this.state.AssignedCount, remaining, this.state.userListings, this.state.ReadOnly, changedItems];\r\n }\r\n\r\n correspondingBSSavedItems = (initialItems, assignedArr, unassignedArr) => {\r\n // SHOWS ITEMS THAT SAVED TO BS AND THOSE THAT FAILED\r\n let copy = JSON.parse(JSON.stringify(initialItems));\r\n let savedToBroadSoft = (data) => {\r\n data.map((item) => {\r\n copy.forEach(res => {\r\n if (res.CustomerProductId === item.CustomerProductId) {\r\n res.BSSaved = true;\r\n }\r\n });\r\n });\r\n return copy;\r\n }\r\n if ((this.state.isAssign && assignedArr.length > 0) || (!this.state.isAssign && unassignedArr.length > 0)) {\r\n return this.state.isAssign ? savedToBroadSoft(assignedArr) : savedToBroadSoft(unassignedArr);\r\n } else return initialItems;\r\n }\r\n\r\n postAddons = async () => {\r\n let changedItems = this.getChangedItems();\r\n if (!changedItems || changedItems.length === 0) return;\r\n if (changedItems.length > 10) {\r\n this.setState({ errorMsg: 'Unable to Submit more than 10 Items...' });\r\n return;\r\n }\r\n await this.setState({ loading: true, orderSubmitted: true, errorMsg: '' });\r\n let changedItemsCopy = JSON.parse(JSON.stringify(changedItems));\r\n let originalList = changedItemsCopy.map((itm) => {\r\n return this.state.userListings.filter(res => res.CustomerProductId === itm.CustomerProductId)[0];\r\n });\r\n let assignReq = {\r\n LocationAccountNumber: this.props.currentLocation,\r\n Addon: this.props.parentAddon,\r\n ServiceList: originalList,\r\n };\r\n let unassignReq = {\r\n LocationAccountNumber: this.props.currentLocation,\r\n ServiceList: originalList\r\n };\r\n let reqBody = this.state.isAssign ? assignReq : unassignReq;\r\n //console.log('request', reqBody);\r\n let apiPath = this.state.isAssign ? macdHelper.apiPostAssignedAddons() : macdHelper.apiPostUnassignedAddons();\r\n await apiCalls.post(apiPath, 'POST', JSON.stringify(reqBody)).then((res) => {\r\n let response = res ? (JSON.parse(res.message) || res.message) : null;\r\n //console.log('response', response);\r\n let BSAssigned = response.BSStatus.BSAssignedServices;\r\n let BSUnassigned = response.BSStatus.BSUnassignedServices;\r\n let BSErrors = response.BSStatus.BSErrorList;\r\n\r\n let MPOError = response.MPOStatus.MPOErrorList && response.MPOStatus.MPOErrorList.length > 0 ? response.MPOStatus.MPOErrorList[0].MPOResultText : 'An error occurred.';\r\n\r\n if (res.ok) {\r\n // IF SUCCESSFUL SUBMISSION\r\n if (BSErrors.length === 0) {\r\n let success = (data) => data.map((item) => {\r\n item.successfulPost = true;\r\n return item;\r\n });\r\n this.setState({\r\n errorMsg: 'Success!',\r\n gridData: success(changedItems),\r\n ReadOnly: true,\r\n loading: false,\r\n });\r\n }\r\n if (BSErrors.length > 0) {\r\n // BROADSOFT ERRORS PRESENT\r\n // SOME PARTIAL SUCCESS, SOME ITEMS SAVED TO BS\r\n if ((this.state.isAssign && BSAssigned && BSAssigned.length > 0) || (!this.state.isAssign && BSUnassigned && BSUnassigned.length > 0)) {\r\n this.setState({\r\n errorMsg: BSErrors,\r\n gridData: this.correspondingBSSavedItems(changedItems, BSAssigned, BSUnassigned),\r\n ReadOnly: true,\r\n loading: false,\r\n });\r\n }\r\n // NO ITEMS WERE SAVED TO BS, NO PARTIAL SUCCESS\r\n if ((this.state.isAssign && BSAssigned.length === 0) || (!this.state.isAssign && BSUnassigned.length === 0)) {\r\n this.setState({\r\n errorMsg: BSErrors,\r\n gridData: changedItems,\r\n ReadOnly: true,\r\n AssignedCount: this.props.countAssigned,\r\n loading: false,\r\n });\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n loading: false,\r\n ReadOnly: true,\r\n gridData: this.correspondingBSSavedItems(changedItems, BSAssigned, BSUnassigned),\r\n errorMsg: MPOError\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchUserAddons = async () => {\r\n await this.setState({ loading: true });\r\n let apiPath = this.props.isAssign ? macdHelper.apiGetUserAvailableAddons(this.props.currentLocation, this.props.partNum) : macdHelper.apiGetUserAssignedAddons(this.props.currentLocation, this.props.partNum);\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n if (data) {\r\n let copy = JSON.parse(JSON.stringify(data));\r\n this.setState({ gridData: copy, gridCopy: copy, userListings: data, loading: false });\r\n } else this.setState({ gridData: [], gridCopy: [], userListings: [], loading: false })\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n updateConfiguredVal = (item, val) => {\r\n item.IsSelected = !item.IsSelected;\r\n if (this.state.isAssign) {\r\n if (val) this.setState({ AssignedCount: this.state.AssignedCount - 1 });\r\n else this.setState({ AssignedCount: this.state.AssignedCount + 1 });\r\n } else if (!this.state.isAssign) {\r\n if (val) this.setState({ AssignedCount: this.state.AssignedCount + 1 });\r\n else this.setState({ AssignedCount: this.state.AssignedCount - 1 });\r\n }\r\n }\r\n\r\n handleClose = async () => {\r\n await this.setState({ showModal: false });\r\n this.props.refresh(true);\r\n }\r\n\r\n handleShow = async () => {\r\n await this.setState({ showModal: true });\r\n this.fetchUserAddons();\r\n }\r\n\r\n handleCounts = () => {\r\n return (\r\n
    \r\n Available: {this.state.AvailableCount}   Assigned: {this.state.AssignedCount}   Remaining: {this.state.AvailableCount - this.state.AssignedCount}\r\n
    \r\n )\r\n }\r\n\r\n getSearchResults = (event) => {\r\n let searchText = '';\r\n let fullDetails = this.state.gridCopy;\r\n if (event && event.target && event.target.value && event.target.value.trim() !== '') {\r\n searchText = event.target.value;\r\n let users = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'ServiceNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Extension', operator: 'contains', value: searchText, ignoreCase: true }, \r\n { field: 'LineName', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n\r\n this.setState({ gridData: users })\r\n }\r\n else {\r\n this.setState({ gridData: fullDetails });\r\n }\r\n }\r\n\r\n sortChange = (e) => {\r\n this.setState({\r\n gridData: orderBy(this.state.gridData, e.sort),\r\n sort: e.sort\r\n })\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading) return \r\n if (this.state.userListings.length === 0) return

    No Qualifiying Products Available to Assign

    \r\n if (this.state.userListings && this.state.userListings.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n );\r\n }\r\n }\r\n\r\n confirmationYesAction = () => {\r\n this.postAddons();\r\n }\r\n\r\n errorMsg = () => {\r\n if (this.state.errorMsg && this.state.errorMsg.length > 0) {\r\n if (this.state.errorMsg === '') return;\r\n if (this.state.errorMsg === 'Success!') return {this.state.errorMsg};\r\n if (this.state.errorMsg && typeof this.state.errorMsg === 'string' && this.state.errorMsg !== 'Success!' && this.state.errorMsg !== '') {\r\n return {this.state.errorMsg};\r\n }\r\n return this.state.errorMsg.map((itm, index) => {\r\n if (itm && itm.ErrorMessage) return {helper.StringReplaceAll(itm.ErrorMessage, '
    ', '', false)}

    ;\r\n if (itm && itm.APIError) return {helper.StringReplaceAll(itm.APIError, '
    ', '', false)}

    ;\r\n return;\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {this.state.isAssign ? \"Assign\" : \"Un-Assign\"}\r\n \r\n { return } : this.handleClose}>\r\n \r\n {this.state.isAssign ? \"Assign\" : \"Un-Assign\"} User Add-On\r\n \r\n \r\n
    \r\n {this.props.parentAddon.PartDescription}\r\n {this.handleCounts()}\r\n
    \r\n
    \r\n
    \r\n this.getSearchResults(e)} placeholder=\"Search Users by Name or TN\" />\r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    \r\n
    \r\n {this.errorMsg()}\r\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 MacdUserModal;\r\n","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport MacdUserModal from './modals/macdUserModal';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport * as settings from '../../scripts/settings';\r\nimport * as macdHelper from './components/macd_helper';\r\nimport * as session from './../../scripts/session';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\n\r\nclass MacdUser extends Component {\r\n\r\n initialState = (props, e) => {\r\n return {\r\n serviceUserFilter: props && props.location ? props.location.serviceUserFilter : null,\r\n productListings: [],\r\n sort: [{ field: 'PartDescription', dir: 'asc' }],\r\n gridHeight: (window.innerHeight - 200),\r\n error: false,\r\n saving: false,\r\n loading: true,\r\n SelectedLocationId: \"\",\r\n SelectedLocationName: '',\r\n locations: [],\r\n locationOptions: [],\r\n currentLocation: '',\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = this.initialState();\r\n const currentLocation = this.getCurrentLocation.bind(this);\r\n const handleRefreshAfterSubmission = this.handleRefreshAfterSubmission.bind(this);\r\n\r\n class MyActions extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const IsWholesaleUser = session.IsWholesale();\r\n\r\n let assignBtn = () => {\r\n let remainingCount = this.props.dataItem.CountRemaining;\r\n if (macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.AssignAddOn) === 1 && remainingCount > 0) {\r\n return \r\n }\r\n }\r\n let unassignBtn = () => {\r\n let assignedCount = this.props.dataItem.CountAssigned;\r\n if (macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.UnassignAddOn) === 1 && assignedCount > 0) {\r\n return \r\n }\r\n }\r\n return (\r\n \r\n {assignBtn()}\r\n {unassignBtn()}\r\n \r\n )\r\n }\r\n }\r\n\r\n class MyCountCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n return (\r\n \r\n Available: {this.props.dataItem.CountAvailable}   Assigned: {this.props.dataItem.CountAssigned}   Remaining: {this.props.dataItem.CountRemaining}\r\n \r\n )\r\n }\r\n }\r\n this.CommandCell = MyActions;\r\n this.CountCell = MyCountCell;\r\n };\r\n\r\n handleRefreshAfterSubmission = async (data) => {\r\n if (data === true) {\r\n this.fetchUserLevelAddonList();\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.AssignAddOn) === 0 && macdHelper.CheckPermissionsForLinks(macdHelper.MACDTYPES.UnassignAddOn) === 0) {\r\n this.props.history.push('/macd');\r\n return;\r\n }\r\n this.fetchLocations();\r\n }\r\n\r\n getCurrentLocation = () => {\r\n const x = this.state.currentLocation;\r\n return x;\r\n }\r\n\r\n fetchUserLevelAddonList = async () => {\r\n await this.setState({ loading: true });\r\n let apiPath = macdHelper.apiGetUserLevelAddons(this.state.currentLocation);\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n if (data) {\r\n let sortedData = orderBy(data, this.state.sort);\r\n this.setState({\r\n productListings: sortedData,\r\n loading: false\r\n });\r\n }\r\n else this.setState({ productListings: [], loading: false });\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchLocations = async (apiPath = null) => {\r\n let locationOption = (location, index) => \r\n\r\n if (!apiPath) apiPath = macdHelper.apiGetLocations();\r\n await this.setState({ loading: true });\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n if (data) {\r\n let locationOptions = data.map((location, index) => locationOption(location, index));\r\n let defaultOption = ();\r\n locationOptions.unshift(defaultOption);\r\n\r\n if (!sessionStorage.LocNum) {\r\n this.setState({ locationOptions: locationOptions, loading: false, currentLocation: \"0\" });\r\n } else {\r\n this.setState({ locationOptions: locationOptions, loading: false, currentLocation: sessionStorage.LocNum });//stored value\r\n this.fetchUserLevelAddonList();\r\n }\r\n } else {\r\n this.setState({ locations: [], loadingLocations: false, resultsMsg: settings.noResultsMsg, loading: false });\r\n };\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n changeLocation = async (event) => {\r\n await this.setState({ currentLocation: event.target.value });\r\n if (this.state.currentLocation !== \"0\")\r\n this.fetchUserLevelAddonList();\r\n }\r\n\r\n // handleAssignProduct = (dataItem, isAssign) => {\r\n\r\n // }\r\n\r\n sortChange = (e) => {\r\n this.setState({\r\n productListings: orderBy(this.state.productListings, e.sort),\r\n sort: e.sort\r\n })\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else if (this.state.currentLocation === \"0\") {\r\n return null;\r\n } else {\r\n if (this.state.productListings && this.state.productListings.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n )\r\n } else return

    There are no available User-Level Add-Ons on this account!

    \r\n\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Manage User Add-ons

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n}\r\n\r\nexport default MacdUser;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { Switch } from '@progress/kendo-inputs-react-wrapper';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\nimport { DataLoadingSpinner } from './../../../components/spinners';\r\nimport SaveStatus from './../../../components/save_status';\r\nimport * as apiCalls from './../../../requests/api_calls';\r\nimport * as config from './../../../requests/config';\r\nimport _ from 'lodash';\r\n\r\nconst validationDelay = 500;\r\n\r\nclass FQDNSetupModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { \r\n showModal:false, \r\n validFqdn: false,\r\n newFqdn: '',\r\n fqdns: [],\r\n status: null\r\n };\r\n this.timer = null;\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.fetchFqdns = this.fetchFqdns.bind(this);\r\n this.setNewFqdn = this.setNewFqdn.bind(this);\r\n this.saveNewFqdn = this.saveNewFqdn.bind(this);\r\n this.removeFqdn = this.removeFqdn.bind(this);\r\n this.fqdnsTable = this.fqdnsTable.bind(this);\r\n this.delayedValidation = this.delayedValidation.bind(this);\r\n }\r\n\r\n componentDidMount() { \r\n this.fetchFqdns()\r\n }\r\n\r\n componentWillUnmount() {\r\n if(this.timer) {\r\n clearTimeout(this.timer);\r\n }\r\n }\r\n\r\n fetchFqdns = () => {\r\n let params = '?locationAccountNumber=' + this.props.locationAccNum;\r\n apiCalls.fetchData('admin/GetFqdns' + params).then((data) => {\r\n if (data !== null) {\r\n this.setState({loading: false, fqdns: data});\r\n } else if (data === null) {\r\n this.setState({fqdns: [], loading: false});\r\n }\r\n });\r\n }\r\n\r\n handleClose() {\r\n this.setState({...this.state, error: false, statusMessage:'', saving: false, showModal: false, newFqdn: '' });\r\n }\r\n\r\n handleShow() {\r\n this.setState({...this.state, showModal: true, saving_show_success:false });\r\n }\r\n\r\n showClearForm = () => this.setState({error: false});\r\n\r\n validFqdn = () => {\r\n let regex = /(?=^.{1,254}$)(^(?:(?!\\d+\\.)[a-zA-Z0-9_\\-]{1,63}\\.?)+(?:[a-zA-Z]{2,})$)|(^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$)/;\r\n return regex.test(this.state.newFqdn);\r\n }\r\n\r\n delayedValidation = () => {\r\n if(this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n if (this.validFqdn()) {\r\n this.setState({validFqdn: true});\r\n } else {\r\n this.setState({validFqdn: false});\r\n }\r\n }, validationDelay);\r\n }\r\n\r\n setNewFqdn = (e) => {\r\n this.setState({newFqdn: e.target.value});\r\n this.delayedValidation();\r\n }\r\n\r\n showInvalidFqdnClass = () => {\r\n return this.state.newFqdn && !this.validFqdn();\r\n }\r\n\r\n verifyValidFqdnClass = () => {\r\n return this.state.newFqdn && this.validFqdn();\r\n }\r\n\r\n saveOnEnter = (e) => {\r\n if (e.key === 'Enter') this.saveNewFqdn();\r\n }\r\n\r\n saveNewFqdn = () => {\r\n if (this.state.newFqdn) {\r\n let newFqdn = this.state.newFqdn;\r\n let data = JSON.stringify({Fqdn: newFqdn});\r\n apiCalls.send('admin/AddFqdn', 'POST', data).then(resp => {\r\n if(resp.ok) {\r\n let updatedFqdns = this.state.fqdns.slice();\r\n updatedFqdns.unshift(newFqdn);\r\n this.setState({fqdns: updatedFqdns, newFqdn: '', saving: false, status: 'Successfully saved FQDN'});\r\n } else {\r\n this.setState({...this.state, \r\n error: true,\r\n statusMessage: this.notSavedErrorMsg(resp),\r\n parentCallback: this.showClearForm,\r\n status: false\r\n })\r\n }\r\n }).catch(message => {\r\n console.log('caught an exception saving a new FQDN');\r\n console.log(message);\r\n });\r\n }\r\n }\r\n \r\n removeFqdn = (fqdn) => {\r\n let data = JSON.stringify({Fqdn: fqdn});\r\n this.setState({removedFqdn: fqdn});\r\n apiCalls.send('admin/DeleteFqdn', 'DELETE', data).then(resp => {\r\n if(resp.ok) {\r\n let updatedFqdns = this.state.fqdns.filter(fqdn => fqdn !== this.state.removedFqdn);\r\n this.setState({fqdns: updatedFqdns, removedFqdn: null, status: 'Successfully removed FQDN'});\r\n } else {\r\n this.setState({error: true, statusMessage: this.notSavedErrorMsg(resp), status: false});\r\n }\r\n }).catch(message => {\r\n console.log(message)\r\n });\r\n }\r\n\r\n notSavedErrorMsg = (resp) => {\r\n if (resp.message.indexOf(\"already exists\") >= 0) {\r\n return \"FQDN already exists\"\r\n } else {\r\n return 'FQDN not saved. Error: ' + resp.message;\r\n }\r\n }\r\n\r\n closeSavingMessage = () => {\r\n this.setState({saving: false, error: false, statusMessage: ''});\r\n }\r\n\r\n modalBody = () => {\r\n if (this.state.error || this.state.saving)\r\n return (\r\n \r\n )\r\n return (\r\n
    \r\n

    Add and remove Fully Qualified Domain Names (FQDNs) to be used by devices.

    \r\n {this.state.status \r\n &&
    {this.state.status}
    \r\n }\r\n
    \r\n \r\n \r\n \r\n This FQDN format is invalid.\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {this.fqdnsTable()}\r\n
    \r\n )\r\n }\r\n\r\n fqdnsTable = () => {\r\n if (this.state.fqdns.length) {\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n \r\n {this.state.fqdns.map((fqdn) => this.fqdnRow(fqdn))}\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n fqdnRow = (fqdn) => {\r\n return (\r\n \r\n {fqdn}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n displayTimedStatus = () => {\r\n this.timer = setTimeout(() => {\r\n this.setState({ status: false });\r\n },3000)\r\n }\r\n\r\n render() {\r\n if(this.state.status) {\r\n this.displayTimedStatus();\r\n }\r\n\r\n return (\r\n
    \r\n \r\n FQDN Setup\r\n \r\n \r\n \r\n \r\n FQDN Setup\r\n \r\n \r\n {this.modalBody()}\r\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 FQDNSetupModal;\r\n","import React, { useEffect, useState, useRef } from \"react\";\r\nimport { MultiSelect } from \"@progress/kendo-react-dropdowns\";\r\nimport { Button } from \"@progress/kendo-react-buttons\";\r\nimport * as apiCalls from \"../../../requests/api_calls\";\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\nimport * as config from \"../../../requests/config\";\r\nimport { Upload } from \"@progress/kendo-react-upload\";\r\nimport { Grid, GridColumn } from \"@progress/kendo-react-grid\";\r\nimport { DataLoadingSpinner } from \"../../../components/spinners\";\r\nimport { Modal } from \"react-bootstrap\";\r\nimport * as helper from \"../../../scripts/helper\";\r\nimport moment from \"moment\";\r\n\r\n// TODO: Eval to merge with the other AutoAttendantRepoManagerV2 file\r\n// as the other file differs with setting the section to collapse by default\r\n// Note: This file is included in Iframe page so changes will replicate to\r\n// all views that uses Iframe and displays this modal/section\r\nconst AutoAttendantRepoManager = () => {\r\n const [locValues, setLocValues] = useState([]);\r\n const [selectedLocs, setSelectedLocs] = useState([]);\r\n const [hrsValues, setHrsValues] = useState({\r\n business: false,\r\n after: false,\r\n holidays: false,\r\n });\r\n const [selectAll, setSelectAll] = useState({\r\n locSelect: false,\r\n hrsSelect: false,\r\n });\r\n const [loading, setLoading] = useState({\r\n loadingOverrideRepo: false,\r\n loadingAAList: false,\r\n loadingAAAOverride: false,\r\n load: false,\r\n });\r\n const [fetchMsg, setFetchMsg] = useState({\r\n Submission: false,\r\n submitError: false,\r\n msgDetails: \"\",\r\n });\r\n const [dispErr, setDispErr] = useState({\r\n filesMsg: false,\r\n applyMsg: false,\r\n fileClickMsg: false,\r\n deleteMsg: false,\r\n });\r\n const [showDeletePrompt, setShowDeletePrompt] = useState(false);\r\n const [serviceList, setServiceList] = useState([]);\r\n const hoursData = [\"Business Hours\", \"After Hours\", \"Holidays\"];\r\n const [files, setFiles] = useState([]);\r\n const locationsData1 = sessionStorage.locationList ? JSON.parse(sessionStorage.locationList) : [];\r\n const [filteredLoc, setFilteredLoc] = useState(locationsData1?.slice());\r\n const [fileName, setFileName] = useState(\"\");\r\n const [uploadFile, setUploadFile] = useState([]);\r\n const [fileSelected, setFileSelected] = useState(\"All\");\r\n const [getFilesUpdate, setGetFilesUpdate] = useState(false);\r\n const uploadRef = useRef(null);\r\n const [deleteFileName, setDeleteFileName] = useState(\"\");\r\n\r\n const [isCollapsedTwo, setIsCollapsedTwo] = useState(true);\r\n const [isCollapsedOne, setIsCollapsedOne] = useState(true);\r\n\r\n const [isCollapsedThree, setIsCollapsedThree] = useState(true);\r\n const [isCollapsedSeven, setIsCollapsedSeven] = useState(true);\r\n\r\n const toggleCollapseSeven = () => {\r\n setIsCollapsedSeven(!isCollapsedSeven);\r\n };\r\n const toggleCollapseOne = () => {\r\n setIsCollapsedOne(!isCollapsedOne);\r\n };\r\n const toggleCollapseTwo = () => {\r\n setIsCollapsedTwo(!isCollapsedTwo);\r\n };\r\n const toggleCollapseThree = () => {\r\n setIsCollapsedThree(!isCollapsedThree);\r\n };\r\n const handleUpload = (event) => {\r\n const allowedExtensions = [\".WMA\", \".WAV\", \".3GP\", \".MOV\", \".wma\", \".wav\", \".3gp\", \".mov\"]; // Allowed file extensions\r\n const selectedFiles = event.affectedFiles[0];\r\n // Check if any of the selected files have an invalid extension\r\n const invalidFiles = event.affectedFiles.filter((file) => {\r\n console.log(file.extension);\r\n return !allowedExtensions.includes(file.extension);\r\n });\r\n\r\n if (invalidFiles.length > 0) {\r\n alert(\"Invalid file extension. Only WAV, WMA, 3GP, and MOV files are allowed.\");\r\n setUploadFile([]);\r\n setFileName(\"\");\r\n uploadRef.current.onClear();\r\n } else if (selectedFiles) {\r\n event.affectedFiles\r\n .filter((file) => !file.validationErrors)\r\n .forEach((file) => {\r\n const reader = new FileReader();\r\n reader.onload = (event) => {\r\n const fileContent = reader.result.split(\",\")[1];\r\n setUploadFile(fileContent);\r\n setFileName(file.name);\r\n };\r\n reader.readAsDataURL(file.getRawFile());\r\n });\r\n }\r\n };\r\n\r\n const handleClearButton = (e) => {\r\n setUploadFile([]);\r\n setFileName(\"\");\r\n uploadRef.current.onClear();\r\n };\r\n\r\n const handlePost = () => {\r\n addFiles(fileName, uploadFile);\r\n };\r\n\r\n const getFiles = () => {\r\n let apiPath = \"/announcement/enterprise/GetFiles\";\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n load: true,\r\n }));\r\n\r\n setGetFilesUpdate(false);\r\n apiCalls\r\n .fetchData(apiPath)\r\n .then((data) => {\r\n if (data !== null) {\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n load: false,\r\n }));\r\n setFiles(data);\r\n }\r\n })\r\n .catch((e) => {\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n load: false,\r\n }));\r\n setFiles([]);\r\n console.error(e);\r\n });\r\n };\r\n\r\n const addFiles = async (name, content) => {\r\n const apiPath = \"announcement/enterprise/Add\";\r\n const req = {\r\n Name: name,\r\n Content: content,\r\n };\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n loadingOverrideRepo: true,\r\n }));\r\n\r\n setDispErr({ filesMsg: true });\r\n let response = await apiCalls\r\n .post(apiPath, \"POST\", JSON.stringify(req))\r\n .then((res) => res)\r\n .catch((err) => {\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n loadingOverrideRepo: false,\r\n }));\r\n console.error(err);\r\n });\r\n if (response?.ok) {\r\n if (!response.message.includes(\"Error\")) {\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n loadingOverrideRepo: false,\r\n }));\r\n setGetFilesUpdate(true);\r\n setFetchMsg({\r\n Submission: true,\r\n submitError: false,\r\n msgDetails: name + \" uploaded successfully\",\r\n verify: true,\r\n });\r\n }\r\n } else {\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n loadingOverrideRepo: false,\r\n }));\r\n let msg = response?.message;\r\n let i = msg?.indexOf(\":\");\r\n let i2 = msg?.indexOf(\"UserId\");\r\n let result = msg?.slice(i + 1, i2);\r\n setFetchMsg({\r\n Submission: true,\r\n submitError: true,\r\n msgDetails: result && result,\r\n });\r\n setUploadFile([]);\r\n setFileName(\"\");\r\n uploadRef.current.onClear();\r\n }\r\n };\r\n\r\n const deleteFiles = (name) => {\r\n let req = {\r\n Name: name,\r\n };\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n load: true,\r\n }));\r\n\r\n let apiPath = \"announcement/enterprise/Delete\";\r\n apiCalls\r\n .send(apiPath, \"DELETE\", JSON.stringify(req))\r\n .then((data) => {\r\n if (data) {\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n load: false,\r\n }));\r\n getFiles();\r\n setFetchMsg({\r\n Submission: true,\r\n submitError: false,\r\n msgDetails: \"File deleted successfully.\",\r\n verify: true,\r\n });\r\n } else {\r\n setFetchMsg({\r\n Submission: true,\r\n submitError: true,\r\n msgDetails: \"File could not be deleted.\",\r\n });\r\n }\r\n })\r\n .catch((message) => {\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n load: false,\r\n }));\r\n setFetchMsg({\r\n Submission: true,\r\n submitError: true,\r\n msgDetails: \"An error occurred while deleting the file. Please try again\",\r\n });\r\n });\r\n };\r\n\r\n const announceSelect = (e) => {\r\n if (e.target.value === \"All\") {\r\n setFileSelected(files);\r\n }\r\n setFileSelected(e.target.value);\r\n };\r\n\r\n const onApply = async () => {\r\n if (\r\n (hrsValues.business || hrsValues.after || hrsValues.holidays) &&\r\n (selectAll.locSelect || selectedLocs.length != 0) &&\r\n (!fileSelected || fileSelected !== \"All\")\r\n ) {\r\n let dataItemKeys = [];\r\n if (selectAll.locSelect) {\r\n dataItemKeys = locationsData1.map((item) => item.LocationAccountNumber);\r\n }\r\n let req = {\r\n AnnouncementName: fileSelected,\r\n Locations: selectAll.locSelect ? dataItemKeys : selectedLocs,\r\n BusinessHours: hrsValues.business,\r\n AfterHours: hrsValues.after,\r\n Holidays: hrsValues.holidays,\r\n AutoAttendants: null,\r\n };\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n loadingAAAOverride: true,\r\n }));\r\n setDispErr({ applyMsg: true });\r\n let apiPath = \"announcement/enterprise/ApplyAutoAttendant\";\r\n let response = await apiCalls\r\n .post(apiPath, \"POST\", JSON.stringify(req))\r\n .then((res) => {\r\n if (res?.ok) {\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n loadingAAAOverride: false,\r\n }));\r\n onCancel();\r\n if (!response.message.includes(\"Error\")) {\r\n setFetchMsg({\r\n Submission: true,\r\n submitError: false,\r\n msgDetails: \"Successfully updated the request.\",\r\n });\r\n }\r\n } else {\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n loadingAAAOverride: false,\r\n }));\r\n onCancel();\r\n setFetchMsg({\r\n Submission: true,\r\n submitError: true,\r\n msgDetails: \"Update failed, please try again.\",\r\n });\r\n }\r\n })\r\n .catch((err) => {\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n loadingAAAOverride: false,\r\n }));\r\n console.error(err);\r\n });\r\n } else {\r\n alert(\"Please select all the required fields.\");\r\n }\r\n };\r\n\r\n const onCancel = () => {\r\n setLocValues([]);\r\n setHrsValues({\r\n business: false,\r\n after: false,\r\n holidays: false,\r\n });\r\n setSelectAll({\r\n locSelect: false,\r\n hrsSelect: false,\r\n });\r\n setFileSelected(\"All\");\r\n };\r\n\r\n const handleChange = (e) => {\r\n let { checked, name } = e.target;\r\n name = name.toLowerCase().split(\" \")[0];\r\n switch (name) {\r\n case \"business\":\r\n setHrsValues({ ...hrsValues, business: checked ? true : false });\r\n break;\r\n case \"after\":\r\n setHrsValues({ ...hrsValues, after: checked ? true : false });\r\n break;\r\n case \"holidays\":\r\n setHrsValues({ ...hrsValues, holidays: checked ? true : false });\r\n break;\r\n default:\r\n setHrsValues({ ...hrsValues });\r\n }\r\n };\r\n\r\n const handleSelectAllChange = (event) => {\r\n event.target.name === \"locations\"\r\n ? setSelectAll({\r\n ...selectAll,\r\n locSelect: event.target.checked,\r\n })\r\n : setSelectAll({\r\n ...selectAll,\r\n hrsSelect: event.target.checked,\r\n });\r\n event.target.name === \"hours\"\r\n ? setHrsValues({\r\n business: event.target.checked ? true : false,\r\n after: event.target.checked ? true : false,\r\n holidays: event.target.checked ? true : false,\r\n })\r\n : setLocValues(event.target.checked ? locationsData1 && locationsData1 : []);\r\n };\r\n\r\n const handleValueChange = (event) => {\r\n let val = event.target.value;\r\n const dataItemKeys = val.map((item) => item.LocationAccountNumber);\r\n setLocValues(val);\r\n setSelectedLocs(dataItemKeys);\r\n setSelectAll({\r\n ...selectAll,\r\n locSelect: event.target.value?.length === locationsData1?.length,\r\n });\r\n };\r\n\r\n const filterChange = (event) => {\r\n setFilteredLoc(filterBy(locationsData1?.slice(), event.filter));\r\n };\r\n\r\n const CustomClickableCell = ({ dataItem }) => {\r\n const getUsedServiceList = async (name, content) => {\r\n try {\r\n let req = {\r\n Name: name,\r\n Content: content,\r\n };\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n loadingAAList: true,\r\n }));\r\n\r\n setDispErr({ fileClickMsg: true });\r\n let apiPath = \"announcement/enterprise/GetServicesList\";\r\n let response = await apiCalls\r\n .post(apiPath, \"POST\", JSON.stringify(req))\r\n .then((data) => data)\r\n .catch((err) => console.error(err));\r\n if (response?.ok && helper.IsJsonString(response?.message)) {\r\n let messageObj = JSON.parse(response.message);\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n loadingAAList: false,\r\n }));\r\n setFetchMsg({\r\n Submission: true,\r\n submitError: false,\r\n msgDetails: \"Successfully fetched services.\",\r\n verify: true,\r\n });\r\n setServiceList(messageObj);\r\n setShowDeletePrompt(true);\r\n setDeleteFileName(name);\r\n } else {\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n loadingAAList: false,\r\n }));\r\n setFetchMsg({\r\n Submission: true,\r\n submitError: true,\r\n msgDetails: \"Error occurred while fetching for services list.\",\r\n });\r\n }\r\n } catch (err) {\r\n setLoading((prevLoading) => ({\r\n ...prevLoading,\r\n loadingAAList: false,\r\n }));\r\n setFetchMsg({\r\n Submission: true,\r\n submitError: true,\r\n msgDetails: err,\r\n });\r\n console.error(err);\r\n }\r\n };\r\n\r\n const handleClick = () => {\r\n getUsedServiceList(dataItem.Name, dataItem.Content);\r\n };\r\n\r\n return (\r\n \r\n \r\n {dataItem.Name}\r\n \r\n \r\n );\r\n };\r\n\r\n const submissionMsg = () => {\r\n if (fetchMsg.Submission) {\r\n if (fetchMsg.submitError) {\r\n return (\r\n \r\n {fetchMsg.msgDetails}\r\n

    \r\n );\r\n } else {\r\n return (\r\n \r\n {fetchMsg.msgDetails}\r\n

    \r\n );\r\n }\r\n }\r\n };\r\n const handleCancelDelete = () => {\r\n setShowDeletePrompt(false);\r\n };\r\n\r\n const handleConfirmedDelete = () => {\r\n if (serviceList.length < 1 && deleteFileName !== \"\") {\r\n setShowDeletePrompt(false);\r\n deleteFiles(deleteFileName);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getFiles();\r\n window.scrollTo(0, 0);\r\n }, [getFilesUpdate]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n Delete File\r\n \r\n \r\n {serviceList.length < 1 && (\r\n
    \r\n

    Are you sure you wish to remove this contact from Enterprise Directory?

    \r\n

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

    \r\n
    \r\n )}\r\n {serviceList.length > 0 && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
    \r\n \r\n {serviceList.length > 0 && (\r\n

    \r\n File Can't be deleted while being used\r\n

    \r\n )}\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n Auto Attendant Override\r\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 Enterprise AA Announcement Override Repository\r\n \r\n \r\n \r\n \r\n \r\n

    \r\n \r\n
    \r\n {loading.loadingOverrideRepo ? (\r\n \r\n ) : (\r\n \r\n \r\n {dispErr.filesMsg && submissionMsg()}\r\n

    \r\n Allowed file formats are: WMA, WAV, 3GP, MOV.\r\n
    \r\n Max file size for audio announcements is 5MB in CCIT u-Law 8kHz, 8bit Mono\r\n format\r\n

    \r\n \r\n {fileName &&

    {fileName}

    }\r\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 Auto Attendant Repository List\r\n \r\n \r\n \r\n \r\n \r\n

    \r\n \r\n
    \r\n {loading.loadingAAList ? (\r\n \r\n ) : (\r\n \r\n \r\n To delete a file please click on the filename.\r\n
    \r\n
    \r\n {dispErr.fileClickMsg && submissionMsg()}\r\n \r\n \r\n (\r\n {props.dataItem[props.field].toLocaleString(\"en-US\")}\r\n )}\r\n />\r\n (\r\n \r\n {moment(props.dataItem[props.field]).utc().format(\"MM-DD-YYYY\")}\r\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 Enterprise AA Announcement Override\r\n \r\n \r\n \r\n \r\n \r\n

    \r\n \r\n
    \r\n {loading.loadingAAAOverride ? (\r\n \r\n ) : (\r\n \r\n \r\n {dispErr.applyMsg && submissionMsg()}\r\n
    \r\n Select an announcement from the drop-down and then select one or more\r\n locations/groups from those displayed below.\r\n
    \r\n The selected announcement will override normal announcement/prompts for\r\n all Auto-Attendants for the selected locations/groups while they continue\r\n to be selected here.\r\n
    \r\n
    \r\n
    \r\n \r\n announceSelect(e)}\r\n value={fileSelected}\r\n >\r\n \r\n {files.map((item, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n   \r\n \r\n  \r\n 0 ? filteredLoc : []}\r\n value={locValues}\r\n textField=\"LocationName\"\r\n dataItemKey=\"LocationAccountNumber\"\r\n onChange={handleValueChange}\r\n filterable={true}\r\n key={locValues.LocationId}\r\n onFilterChange={filterChange}\r\n size=\"medium\"\r\n fillMode=\"outline\"\r\n rounded=\"large\"\r\n />\r\n
    \r\n
    \r\n   \r\n \r\n  \r\n {hoursData.map((item, i) => {\r\n let itemName = item.toLowerCase().split(\" \")[0];\r\n return (\r\n
    \r\n \r\n  \r\n \r\n
    \r\n );\r\n })}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AutoAttendantRepoManager;\r\n","import React, { Component, useEffect, useState } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { fetchData, post } from '../../../requests/api_calls';\r\n\r\nimport '../../../css/enterprise-settings/enterprise_settings.css'\r\n\r\nconst CustomCollapse = ({ departmentIndex, department, type = 'EDIT', onSaveDepartment, onDeleteDepartment }) => {\r\n const [loading, setLoading] = useState(false);\r\n const [name, setName] = useState(department?.DepartmentName || '');\r\n const [parent, setParent] = useState(department?.ParentDepartment?.DepartmentName || null);\r\n const [newName, setNewName] = useState('');\r\n const [availableParentDepartments, setAvailableParentDepartments] = useState([]);\r\n\r\n const isAddDepartmentType = type === 'ADD';\r\n \r\n useEffect(() => {\r\n setLoading(true);\r\n const path = isAddDepartmentType\r\n ? 'admin/enterprise/GetAvailableParentDepartments?departmentName='\r\n : `admin/enterprise/GetAvailableParentDepartments?departmentName=${department?.DepartmentName}`;\r\n const fetchAvailableDepartments = async () => {\r\n const data = await fetchData(path)\r\n .then(departments => departments).then(data => data);\r\n await setAvailableParentDepartments(data);\r\n await setLoading(false);\r\n };\r\n\r\n fetchAvailableDepartments().catch(console.error);\r\n }, []);\r\n\r\n const saveDepartment = async () => {\r\n await setLoading(true);\r\n await onSaveDepartment(name, parent, newName, type);\r\n await setLoading(false);\r\n };\r\n\r\n const deleteDepartment = async (name) => {\r\n await setLoading(true);\r\n await onDeleteDepartment(name);\r\n };\r\n\r\n if(loading) {\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n \r\n );\r\n }\r\n\r\n if(!department && !isAddDepartmentType) return <>;\r\n \r\n if(department && Object.keys(department).length <= 0 && !isAddDepartmentType) {\r\n return <>;\r\n }\r\n \r\n return (\r\n \r\n
    \r\n {!isAddDepartmentType \r\n ? \r\n : null\r\n }\r\n
    \r\n \r\n {isAddDepartmentType ? (\r\n setName(e.target.value)}\r\n />\r\n ) : \r\n ()\r\n }\r\n
    \r\n
    \r\n \r\n {availableParentDepartments && \r\n ()\r\n }\r\n
    \r\n {!isAddDepartmentType && (\r\n
    \r\n \r\n setNewName(e.target.value)} />\r\n
    \r\n )}\r\n \r\n
    \r\n \r\n )\r\n}\r\n\r\nconst DepartmentItem = ({ department, index, saveDepartment, deleteDepartment }) => {\r\n const [showCollapse, setShowCollapse] = useState(false);\r\n\r\n return (\r\n <>\r\n \r\n {department.FullPathName}\r\n \r\n setShowCollapse(!showCollapse)}> \r\n \r\n \r\n {showCollapse && (\r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nclass DepartmentModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = {\r\n showModal: false,\r\n loading: false,\r\n departments: [],\r\n };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n async handleShow() {\r\n await this.setState({ showModal: true, loading: true });\r\n const data = await this.fetchDepartments();\r\n await this.setState({ departments: data, loading: false, });\r\n }\r\n\r\n fetchDepartments = async () => {\r\n return await fetchData('admin/enterprise/GetDepartments').then(departmentsData => departmentsData);\r\n }\r\n\r\n\tcomponentDidMount() {\r\n\t}\r\n\r\n saveDepartment = async (name, parent, newName, type) => {\r\n const isAddDepartmentType = type === 'ADD';\r\n const path = isAddDepartmentType ? 'admin/enterprise/AddDepartment' : 'admin/enterprise/UpdateDepartment';\r\n try {\r\n const data = isAddDepartmentType ?\r\n {\r\n DepartmentName: name,\r\n ParentDepartment: parent ? { DepartmentName: parent } : null,\r\n } : {\r\n DepartmentName: name,\r\n NewDepartmentName: newName || name,\r\n ParentDepartment: parent ? { DepartmentName: parent } : null,\r\n };\r\n const response = await post(path, \"POST\", JSON.stringify(data));\r\n if (response.ok) {\r\n this.setState({ loading: true });\r\n const updatedDepartments = await this.fetchDepartments();\r\n await this.setState({ departments: updatedDepartments, loading: false })\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n this.setState({ loading: false });\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n deleteDepartment = async(name) => {\r\n const path = `admin/enterprise/DeleteDepartment?departmentName=${name}`;\r\n try {\r\n const response = await post(path, \"DELETE\", {});\r\n if (response.ok) {\r\n this.setState({ loading: true });\r\n const updatedDepartments = await this.fetchDepartments();\r\n await this.setState({ departments: updatedDepartments, loading: false })\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n this.setState({ loading: false });\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n cancelEditDepartment = () => {\r\n this.handleClose();\r\n }\r\n\r\n render() {\r\n let modalContent;\r\n const { departments, loading } = this.state;\r\n \r\n if(loading) {\r\n modalContent = (\r\n
    \r\n \r\n
    \r\n );\r\n } else if(departments.length > 0){ \r\n modalContent = (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {departments.map((department, index) => {\r\n return (\r\n \r\n )}\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Department Name
    \r\n
    \r\n Add Department\r\n
    \r\n
    \r\n
    \r\n )\r\n } else {\r\n modalContent = <>;\r\n };\r\n \r\n return (\r\n
    \r\n \r\n Departments\r\n \r\n \r\n \r\n \r\n Departments\r\n \r\n \r\n {modalContent}\r\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 DepartmentModal;\r\n","import React, { Component, useEffect } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { createPortal } from 'react-dom';\r\nimport { fetchData } from '../../../requests/api_calls';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { Grid, GridColumn } from '@progress/kendo-react-grid';\r\nimport { useRef } from 'react';\r\n\r\nimport '../../../css/enterprise-settings/enterprise_settings.css'\r\n\r\nconst EnterpriseDirectoryWindow = (props) => {\r\n let content;\r\n const { directory, directoryType, closeWindowPortal } = props;\r\n const externalWindow = useRef(\r\n window.open(\r\n \"about:blank\",\r\n \"newWin\",\r\n `width=1000,height=700,left=${window.screen.availWidth / 2},top=${window.screen.availHeight / 2}`\r\n )\r\n );\r\n\r\n const containerEl = document.createElement(\"div\");\r\n\r\n useEffect(() => {\r\n const currentWindow = externalWindow.current;\r\n return () => currentWindow.close();\r\n }, []);\r\n\r\n const styles = require('../../../css/enterprise-settings/enterprise_settings.css');\r\n\r\n externalWindow.current.document.title = \"Enterprise Directory\";\r\n externalWindow.current.document.write = ``\r\n externalWindow.current.document.body.appendChild(containerEl);\r\n copyStyles(document, externalWindow.current.document);\r\n\r\n externalWindow.current.addEventListener(\"beforeunload\", () => {\r\n closeWindowPortal();\r\n });\r\n\r\n const printWindow = () => externalWindow.current.print();\r\n\r\n if(directoryType === 'summary') {\r\n content = (\r\n \r\n )\r\n } else if(directoryType === 'details') {\r\n content = (\r\n \r\n )\r\n }\r\n\r\n return createPortal(content, containerEl);\r\n}\r\n\r\nconst copyStyles = (sourceDoc, targetDoc) => {\r\n Array.from(sourceDoc.styleSheets).forEach(styleSheet => {\r\n if (styleSheet.cssRules) {\r\n // true for inline styles\r\n const newStyleEl = sourceDoc.createElement(\"style\");\r\n\r\n Array.from(styleSheet.cssRules).forEach(cssRule => {\r\n newStyleEl.appendChild(sourceDoc.createTextNode(cssRule.cssText));\r\n });\r\n\r\n targetDoc.head.appendChild(newStyleEl);\r\n } else if (styleSheet.href) {\r\n // true for stylesheets loaded from a URL\r\n const newLinkEl = sourceDoc.createElement(\"link\");\r\n\r\n newLinkEl.rel = \"stylesheet\";\r\n newLinkEl.href = styleSheet.href;\r\n targetDoc.head.appendChild(newLinkEl);\r\n }\r\n });\r\n}\r\n\r\nconst CardDetail = ({item}) => {\r\n return (\r\n
    \r\n
    \r\n {item.nameField}\r\n
    \r\n
    \r\n
    {item.userIdField}
    \r\n
    Voice: {item.numberField}
    \r\n
    Extension: {item.extensionField}
    \r\n
    \r\n {item.addressLine1Field}
    \r\n {item.cityField} - {item.stateField} - {item.zipField}\r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nconst EnterpriseDirectoryDetails = (props) => {\r\n const { directory, printWindow } = props;\r\n\r\n return (\r\n
    \r\n \r\n \r\n {directory.map(item => {\r\n return \r\n })}\r\n
    \r\n );\r\n}\r\n\r\nconst EnterpriseDirectorySummary = (props) => {\r\n const { directory, printWindow } = props;\r\n \r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\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\nclass EnterpriseDirectoryModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.state = {\r\n showModal: false,\r\n\t\t\tloading: false,\r\n\t\t\tdirectory: [],\r\n gridData: {\r\n items: [],\r\n skip: 0,\r\n take: 10,\r\n },\r\n isEnterpriseDirectoryWindowOpen: false,\r\n directoryType: '',\r\n\t\t};\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.closeWindowPortal = this.closeWindowPortal.bind(this);\r\n\t}\r\n\r\n\thandleClose() {\r\n\t\tthis.setState({ showModal: false });\r\n\t}\r\n\r\n\tasync handleShow() {\r\n\t\tawait this.setState({ showModal: true, loading: true });\r\n\t\tconst data = await this.fetchEnterpriseDirectory();\r\n if(data && data.length > 0) {\r\n const { gridData } = this.state;\r\n await this.setState({ directory: data, gridData: { ...gridData, items: data.slice(gridData.skip, gridData.skip + gridData.take) }})\r\n }\r\n await this.setState({ loading: false })\r\n\t} \r\n\t\r\n\tfetchEnterpriseDirectory = async () => {\r\n\t\treturn await fetchData('admin/enterprise/GetEnterpriseDirectory').then(directoryData => directoryData);\r\n\t}\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n closeWindowPortal() {\r\n this.setState({ isEnterpriseDirectoryWindowOpen: false });\r\n }\r\n\r\n gridPageChange = async (event) => {\r\n const skip = event.page.skip;\r\n const take = event.page.take;\r\n const { directory, gridData } = this.state;\r\n await this.setState({ \r\n gridData: { \r\n ...gridData, \r\n items: directory.slice(skip, skip+take),\r\n skip,\r\n take\r\n }\r\n })\r\n };\r\n\r\n render() {\r\n let modalContent;\r\n const { directory, gridData, loading, isEnterpriseDirectoryWindowOpen, directoryType } = this.state;\r\n\r\n if(loading) {\r\n modalContent = (\r\n
    \r\n \r\n
    \r\n );\r\n } else if(directory.length > 0){ \r\n modalContent = (\r\n <>\r\n

    The Enterprise Directory lists all the services and users within your entire organization. A summary or a detail of the Enterprise Directory can be generated, which can be easily printed.

    \r\n {/* Enterprise Directory Summary\r\n Enterprise Directory Details */}\r\n this.setState({ isEnterpriseDirectoryWindowOpen: true, directoryType: 'summary' })}>Enterprise Directory Summary\r\n this.setState({ isEnterpriseDirectoryWindowOpen: true, directoryType: 'details' })}>Enterprise Directory Details\r\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 } else {\r\n modalContent = <>;\r\n };\r\n \r\n return (\r\n
    \r\n \r\n Enterprise Directory\r\n \r\n \r\n \r\n \r\n Enterprise Directory\r\n \r\n \r\n \t{modalContent}\r\n \r\n \r\n {isEnterpriseDirectoryWindowOpen && (\r\n \r\n )}\r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default EnterpriseDirectoryModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { fetchData, post } from '../../../requests/api_calls';\r\nimport { Input } from '@progress/kendo-react-inputs';\r\nimport { connect } from 'react-redux';\r\n\r\nclass EmergencyCallNotificationModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n\t\tthis.handleShow = this.handleShow.bind(this);\r\n\t\tthis.handleClose = this.handleClose.bind(this);\r\n\t\tthis.state = {\r\n\t\t\tshowModal: false,\r\n\t\t\tloading: false,\r\n\t\t\temergencyCallNotificationSettings: null,\r\n errorMessage: '',\r\n successMessage: '',\r\n\t\t};\r\n\r\n this.sendTestEmail = this.sendTestEmail.bind(this);\r\n this.updateEmergencyCallNotificationSettings = this.updateEmergencyCallNotificationSettings.bind(this);\r\n\t}\r\n\r\n\thandleClose() {\r\n\t\tthis.setState({ showModal: false });\r\n\t}\r\n\r\n\tasync handleShow() {\r\n\t\tawait this.setState({ showModal: true, loading: true });\r\n\t\tconst data = await this.fetchEmergencyCallNotificationSettings();\r\n // const locations = await this.fetchLocations();\r\n\t\tawait this.setState({ emergencyCallNotificationSettings: data, loading: false, })\r\n\t} \r\n\t\r\n fetchEmergencyCallNotificationSettings = async () => {\r\n return await fetchData('admin/enterprise/GetEmergencyCallNotificationSettings').then(notificationsData => notificationsData);\r\n }\r\n\r\n // API to get Location details in case it's necessary to fill in the details for sendTestEmail\r\n // fetchLocations = async () => {\r\n // return await fetchData('admin/Locations').then(data => data);\r\n // }\r\n\r\n sendTestEmail = async () => {\r\n const { emergencyCallNotificationSettings } = this.state;\r\n let apiPath = 'admin/locations/SendTestEmailNotification';\r\n let postData = {\r\n LocationAccountNumber: \"\",\r\n LocationName: \"\",\r\n LocationAddress: \"\",\r\n EmailAddress: emergencyCallNotificationSettings.Email\r\n };\r\n\r\n try {\r\n const response = await post(apiPath, 'POST', JSON.stringify(postData));\r\n if(response.ok) {\r\n this.setState({ successMessage: 'Success! An Email should be received by the email address specified!', errorMessage: ''})\r\n }\r\n } catch (error) {\r\n this.setState({errorMessage: 'An error occurred generating an emergency notification test email to the designated email address!', successMessage: ''});\r\n console.error(error)\r\n }\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n updateEmergencyCallNotificationSettings = async () => {\r\n //hunter.sherouse@momentumtelecom.com\r\n const { emergencyCallNotificationSettings } = this.state;\r\n const path = 'admin/enterprise/UpdateEmergencyCallNotificationSettings';\r\n this.setState({ loading: true });\r\n try {\r\n const data = {...emergencyCallNotificationSettings}\r\n const response = await post(path, \"POST\", JSON.stringify(data));\r\n if (response.ok) {\r\n await this.setState({ loading: false })\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n this.setState({ loading: false });\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n render() {\r\n let modalContent;\r\n const { emergencyCallNotificationSettings, loading, errorMessage, successMessage } = this.state;\r\n\r\n if(loading) {\r\n modalContent = (\r\n
    \r\n \r\n
    \r\n );\r\n } else if(emergencyCallNotificationSettings && Object.keys(emergencyCallNotificationSettings).length > 0){ \r\n modalContent = (\r\n <>\r\n
    \r\n Emergency Call Notification Email: \r\n this.setState({ emergencyCallNotificationSettings: {...emergencyCallNotificationSettings, Email: e.target.value} })}/>\r\n \r\n
    \r\n {errorMessage && (
    {errorMessage}
    )}\r\n {successMessage && (
    {successMessage}
    )}\r\n
    \r\n

    \r\n {\r\n this.setState({ \r\n emergencyCallNotificationSettings: {\r\n ...emergencyCallNotificationSettings, \r\n OverrideEmailForGroups: e.target.checked\r\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 } else {\r\n modalContent = <>;\r\n };\r\n \r\n return (\r\n
    \r\n \r\n Emergency Call Notification Email\r\n \r\n \r\n \r\n \r\n Emergency Call Notification Email\r\n \r\n \r\n \t{modalContent}\r\n \r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\n// export default EmergencyCallNotificationModal;\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n AccountNumber: state.reducer.AccountNumber,\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(EmergencyCallNotificationModal);","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\nimport { fetchData, post } from '../../../requests/api_calls';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\n\r\nclass AgentDefaultSettingModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.fetchAgentDefaultSettings = this.fetchAgentDefaultSettings.bind(this);\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.updateAgentDefaultSettings = this.updateAgentDefaultSettings.bind(this);\r\n\r\n this.state = {\r\n showModal: false,\r\n checkForceUnavailable3: false,\r\n enableGuardTime: false,\r\n loading: false,\r\n settings: null,\r\n };\r\n }\r\n\r\n handleClose() {\r\n this.setState({\r\n showModal: false,\r\n checkForceUnavailable3: false,\r\n enableGuardTime: false,\r\n loading: false,\r\n settings: null,\r\n });\r\n }\r\n\r\n handleShow = async() => {\r\n\t\tawait this.setState({ showModal: true, loading: true });\r\n\t\tconst data = await this.fetchAgentDefaultSettings();\r\n\t\tawait this.setState({ settings: data, loading: false });\r\n }\r\n\r\n fetchAgentDefaultSettings = async () => {\r\n return await fetchData('admin/enterprise/GetAgentDefaultSettings').then(agentDefaultSettings => agentDefaultSettings);\r\n }\r\n\r\n updateAgentDefaultSettings = async () => {\r\n\t\tawait this.setState({ loading: true });\r\n const path = 'admin/enterprise/UpdateAgentDefaultSettings';\r\n const { settings } = this.state;\r\n\r\n try {\r\n const response = await post(path, \"POST\", JSON.stringify(settings));\r\n if(response.ok) {\r\n await this.setState({ loading: false });\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n this.setState({ loading: false });\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n await this.setState({ loading: false });\r\n }\r\n }\r\n\r\n render() {\r\n let modalContent;\r\n const { loading, settings } = this.state;\r\n\r\n if (loading) {\r\n modalContent = (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (Boolean(settings && Object.keys(settings).length > 0)) {\r\n modalContent = (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Enable guard time\r\n {settings?.EnableGuardTimer && (\r\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 Force Agent to unavailable on do not disturb activation\r\n
    \r\n
    \r\n \r\n Force Agent to unavailable on personal calls\r\n
    \r\n
    \r\n \r\n Force Agent to unavailable after consecutive bounces\r\n {settings.ForceAgentUnavailableOnBouncedCallLimit &&(\r\n
    \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n Force Agent to unavailable on not reachable\r\n
    \r\n
    \r\n );\r\n } else {\r\n modalContent = <>;\r\n }\r\n\r\n return (\r\n
    \r\n \r\n Agent Default Settings\r\n \r\n \r\n \r\n \r\n Agent Default Settings\r\n \r\n \r\n {modalContent}\r\n \r\n \r\n {!loading && (\r\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 AgentDefaultSettingModal;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Button } from \"@progress/kendo-buttons-react-wrapper\";\r\nimport { post } from \"../../../../requests/api_calls\";\r\nimport { DataLoadingSpinner } from \"../../../../components/spinners\";\r\n\r\nexport const UnavailableCodesSectionItem = ({ code, onUpdate, onDelete, onItemChange }) => {\r\n const [item, setItem] = useState({ ...code });\r\n const [showItemDetail, setShowItemDetail] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n onItemChange(item);\r\n }, [item]);\r\n\r\n if (loading) {\r\n return (\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {item.Code}\r\n {item.Description}\r\n \r\n setShowItemDetail(!showItemDetail)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {showItemDetail && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst UnavailableCodesItem = ({ item, onUpdate, onDelete }) => {\r\n const [itemData, setItemData] = useState({ ...item });\r\n const [loading, setLoading] = useState(false);\r\n\r\n const updateAgentUnavailableCode = async () => {\r\n setLoading(true);\r\n const path = \"admin/enterprise/UpdateAgentUnavailableCode\";\r\n try {\r\n const response = await post(path, \"POST\", JSON.stringify(itemData));\r\n if (response.ok) {\r\n setLoading(false);\r\n await onUpdate();\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const deleteAgentUnavailableCode = async () => {\r\n setLoading(true);\r\n const path = `admin/enterprise/DeleteAgentUnavailableCode?code=${itemData.Code}`;\r\n try {\r\n const response = await post(path, \"DELETE\", {});\r\n if (response.ok) {\r\n setLoading(false);\r\n await onDelete();\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n setLoading(false);\r\n }\r\n };\r\n if (loading) {\r\n return (\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n \r\n
    \r\n {\r\n deleteAgentUnavailableCode();\r\n }}\r\n >\r\n Delete Code\r\n \r\n
    \r\n \r\n Activate Code\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n setItemData({ ...itemData, Description: e.target.value })}\r\n />\r\n
    \r\n
    \r\n {\r\n updateAgentUnavailableCode();\r\n }}\r\n >\r\n Save\r\n \r\n
    \r\n
    \r\n \r\n \r\n );\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { Button } from \"@progress/kendo-buttons-react-wrapper\";\r\nimport _ from \"lodash\";\r\nimport { post } from \"../../../../requests/api_calls\";\r\nimport { DataLoadingSpinner } from \"../../../../components/spinners\";\r\n\r\nexport const AddAgentUnavailableCodeItem = ({ onAdd }) => {\r\n const [newItem, setNewItem] = useState({});\r\n const [showAddItem, setShowAddItem] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const addEntAgentUnavailableCode = async () => {\r\n await setLoading(true);\r\n const path = \"admin/enterprise/AddAgentUnavailableCode\";\r\n try {\r\n const response = await post(path, \"POST\", JSON.stringify(newItem));\r\n if (response.ok) {\r\n await setLoading(false);\r\n await onAdd();\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n await setLoading(false);\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n await setLoading(false);\r\n }\r\n };\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n return (\r\n <>\r\n
    \r\n {\r\n setShowAddItem(!showAddItem);\r\n }}\r\n >\r\n Add Agent Unavailable Code\r\n \r\n
    \r\n {showAddItem && (\r\n
    \r\n
    \r\n
    \r\n \r\n Activate Code\r\n
    \r\n
    \r\n \r\n setNewItem({ ...newItem, Code: e.target.value })}\r\n />\r\n
    \r\n
    \r\n \r\n setNewItem({ ...newItem, Description: e.target.value })}\r\n />\r\n
    \r\n
    \r\n {\r\n addEntAgentUnavailableCode();\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","import React, { Component } from \"react\";\r\nimport { Modal } from \"react-bootstrap\";\r\nimport { Button } from \"@progress/kendo-buttons-react-wrapper\";\r\nimport { fetchData, post } from \"../../../../requests/api_calls\";\r\nimport { DataLoadingSpinner } from \"../../../../components/spinners\";\r\nimport { UnavailableCodesSectionItem } from \"./unavailable-codes-item\";\r\nimport { AddAgentUnavailableCodeItem } from \"./add-unavailable-code\";\r\n\r\nclass AgentUnavailableCodesModal extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = {\r\n showModal: false,\r\n loading: false,\r\n unavailableCodesData: null,\r\n errorMessage: \"\",\r\n availableCodeOptions: [],\r\n };\r\n }\r\n\r\n handleClose() {\r\n this.setState({\r\n showModal: false,\r\n loading: false,\r\n unavailableCodesData: null,\r\n errorMessage: \"\",\r\n availableCodeOptions: [],\r\n });\r\n }\r\n\r\n handleShow = async () => {\r\n this.setState({ showModal: true });\r\n await this.reloadView();\r\n };\r\n\r\n fetchAgentUnavailableCodes = async () => {\r\n return await fetchData(\"admin/enterprise/GetAgentUnavailableCodes\").then(\r\n (agentUnavailableCodes) => agentUnavailableCodes\r\n );\r\n };\r\n\r\n getIfDefaultCodeOptionNotSelected = () => {\r\n const { unavailableCodesData } = this.state;\r\n const isForceUseOfAgentUnavailableCodesOn = Boolean(\r\n unavailableCodesData.ForceUseOfAgentUnavailableCodes\r\n );\r\n\r\n const hasDefaultCodeOptionSelected = Boolean(\r\n unavailableCodesData.DefaultAgentForceUnavailableCode\r\n );\r\n\r\n const hasActiveCodeForDefaultCode = unavailableCodesData.UnavailableCodes.some(\r\n (code) => unavailableCodesData.DefaultAgentForceUnavailableCode === code.Code && code.IsActive\r\n );\r\n\r\n return (\r\n isForceUseOfAgentUnavailableCodesOn &&\r\n hasDefaultCodeOptionSelected &&\r\n !hasActiveCodeForDefaultCode\r\n );\r\n };\r\n\r\n updateAgentUnavailableCodes = async () => {\r\n this.setState({ loading: true, errorMessage: \"\" });\r\n const path = \"admin/enterprise/UpdateAgentUnavailableCodes\";\r\n const { unavailableCodesData } = this.state;\r\n\r\n const isCodeOptionNotSelected = this.getIfDefaultCodeOptionNotSelected();\r\n\r\n // Check for disabled option but Force Agent Default Code on\r\n if (isCodeOptionNotSelected) {\r\n this.setState({\r\n errorMessage: \"Cannot delete or deactivate the code. It is being used as default code.\",\r\n });\r\n this.setState({ loading: false });\r\n return;\r\n }\r\n\r\n const isForceUseOfAgentOnWithNoOption = Boolean(\r\n unavailableCodesData.ForceUseOfAgentUnavailableCodes &&\r\n !unavailableCodesData.DefaultAgentForceUnavailableCode\r\n );\r\n\r\n if (isForceUseOfAgentOnWithNoOption) {\r\n this.setState({ errorMessage: \"Missing default unavailable code.\" });\r\n this.setState({ loading: false });\r\n return;\r\n }\r\n\r\n try {\r\n const response = await post(path, \"POST\", JSON.stringify(unavailableCodesData));\r\n if (response.ok) {\r\n await this.reloadView();\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n this.setState({ loading: false });\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n await this.setState({ loading: false });\r\n }\r\n };\r\n\r\n reloadView = async () => {\r\n this.setState({ loading: true });\r\n const data = await this.fetchAgentUnavailableCodes();\r\n const activeCodes = data.UnavailableCodes.filter((code) => code.IsActive);\r\n this.setState({\r\n unavailableCodesData: data,\r\n loading: false,\r\n availableCodeOptions: [...activeCodes],\r\n });\r\n };\r\n\r\n updateItem = async (item) => {\r\n const updateCodes = this.state.unavailableCodesData?.UnavailableCodes.map((code) => {\r\n if (code.Code === item.Code) {\r\n code = { ...code, ...item };\r\n }\r\n return code;\r\n });\r\n await this.setState({\r\n ...this.state,\r\n unavailableCodesData: {\r\n ...this.state.unavailableCodesData,\r\n UnavailableCodes: updateCodes,\r\n },\r\n });\r\n };\r\n\r\n componentDidMount() {}\r\n\r\n componentDidUpdate() {}\r\n\r\n render() {\r\n let modalContent;\r\n const { loading, unavailableCodesData, availableCodeOptions, errorMessage } = this.state;\r\n\r\n if (loading) {\r\n modalContent = (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (Boolean(unavailableCodesData && Object.keys(unavailableCodesData).length > 0)) {\r\n const defaultOptions = (\r\n <>\r\n \r\n {availableCodeOptions.map((unavailableCode, index) => {\r\n if (unavailableCode && unavailableCode?.IsActive) {\r\n return (\r\n \r\n );\r\n }\r\n })}\r\n \r\n );\r\n\r\n const isAnyCodeActive = unavailableCodesData.UnavailableCodes.some((code) => code.IsActive);\r\n const hasCodes =\r\n unavailableCodesData.UnavailableCodes && unavailableCodesData.UnavailableCodes.length > 0;\r\n\r\n modalContent = (\r\n
    \r\n
    \r\n \r\n Enable Agent Unavailable Codes\r\n {unavailableCodesData.EnableAgentUnavailableCodes && (\r\n
    \r\n
    \r\n \r\n \r\n this.setState({\r\n ...this.state,\r\n unavailableCodesData: {\r\n ...this.state.unavailableCodesData,\r\n DefaultAgentUnavailableCodeOnDND: e.target.value,\r\n },\r\n })\r\n }\r\n >\r\n {defaultOptions}\r\n \r\n
    \r\n
    \r\n \r\n \r\n this.setState({\r\n ...this.state,\r\n unavailableCodesData: {\r\n ...this.state.unavailableCodesData,\r\n DefaultAgentUnavailableCodeOnPersonalCalls: e.target.value,\r\n },\r\n })\r\n }\r\n >\r\n {defaultOptions}\r\n \r\n
    \r\n
    \r\n \r\n \r\n this.setState({\r\n ...this.state,\r\n unavailableCodesData: {\r\n ...this.state.unavailableCodesData,\r\n DefaultAgentUnavailableCodeOnConsecutiveBounces: e.target.value,\r\n },\r\n })\r\n }\r\n >\r\n {defaultOptions}\r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n Force use of Agent Codes Unavailable\r\n {unavailableCodesData.ForceUseOfAgentUnavailableCodes && (\r\n
    \r\n
    \r\n \r\n {\r\n this.setState({\r\n ...this.state,\r\n unavailableCodesData: {\r\n ...this.state.unavailableCodesData,\r\n DefaultAgentForceUnavailableCode: e.target.value,\r\n },\r\n errorMessage: \"\",\r\n });\r\n }}\r\n >\r\n {defaultOptions}\r\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 {!Boolean(hasCodes) && (\r\n
    \r\n No items found.\r\n
    \r\n )}\r\n {unavailableCodesData.UnavailableCodes.map((code) => {\r\n if (code) {\r\n return (\r\n \r\n );\r\n }\r\n })}\r\n \r\n
    ActiveCodeDescriptionEdit
    \r\n\r\n
    \r\n {errorMessage}\r\n
    \r\n
    \r\n );\r\n } else {\r\n modalContent = <>;\r\n }\r\n\r\n return (\r\n
    \r\n \r\n Agent Unavailable Codes\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Agent Unavailable Codes\r\n \r\n {modalContent}\r\n \r\n {!loading && (\r\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 AgentUnavailableCodesModal;\r\n","import React from \"react\";\r\nimport { Button } from \"@progress/kendo-buttons-react-wrapper\";\r\nimport { DataLoadingSpinner } from \"../../../../components/spinners\";\r\nimport { fetchData, post } from \"../../../../requests/api_calls\";\r\nimport { useState } from \"react\";\r\nimport { useEffect } from \"react\";\r\n\r\nexport const CallDispositionCodeSectionItem = ({ code, onUpdate, onItemChange }) => {\r\n const [item, setItem] = useState({ ...code, selectToDelete: false });\r\n const [showItemDetail, setShowItemDetail] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const { IsActive, selectToDelete } = item;\r\n\r\n useEffect(() => {\r\n onItemChange(item);\r\n }, [IsActive, selectToDelete]);\r\n\r\n if (loading) {\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 return (\r\n <>\r\n \r\n \r\n \r\n \r\n {item.Code}\r\n {item.Description}\r\n \r\n setShowItemDetail(!showItemDetail)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {showItemDetail && (\r\n setShowItemDetail(false)}\r\n onUpdate={onUpdate}\r\n />\r\n )}\r\n \r\n );\r\n};\r\n\r\nconst CallDispositionCodeItem = ({ item, onClose, onUpdate }) => {\r\n const [selectedTab, setSelectedTab] = useState(\"CODE\");\r\n const [itemData, setItemData] = useState({ ...item });\r\n const [usages, setUsages] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n getEntCallDispositionCodeUsages();\r\n }, []);\r\n\r\n const updateCallDispositionCode = async () => {\r\n setLoading(true);\r\n const path = \"admin/enterprise/UpdateCallDispositionCode\";\r\n try {\r\n const response = await post(path, \"POST\", JSON.stringify(itemData));\r\n if (response.ok) {\r\n setLoading(false);\r\n await onUpdate();\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n setLoading(false);\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const getEntCallDispositionCodeUsages = async () => {\r\n setLoading(true);\r\n const path = `admin/enterprise/GetCallDispositionCodeUsage?code=${itemData.Code}`;\r\n try {\r\n const response = await fetchData(path);\r\n if (response && response.length > 0) {\r\n setUsages(response);\r\n }\r\n setLoading(false);\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n setLoading(false);\r\n }\r\n };\r\n\r\n if (loading) {\r\n return (\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n setSelectedTab(\"CODE\")}\r\n >\r\n Code\r\n \r\n \r\n
    \r\n {selectedTab === \"CODE\" && (\r\n <>\r\n
    \r\n \r\n Activate Code\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n setItemData({ ...itemData, Description: e.target.value })}\r\n />\r\n
    \r\n
    \r\n {\r\n updateCallDispositionCode();\r\n }}\r\n >\r\n Save\r\n \r\n {\r\n onClose();\r\n }}\r\n >\r\n Close\r\n \r\n
    \r\n \r\n )}\r\n {selectedTab === \"USAGE\" && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {Boolean(usages && usages.length === 0) && (\r\n \r\n \r\n \r\n )}\r\n {usages.map((usedByItem, index) => {\r\n if (usedByItem) {\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
    IdGroupIdNameType
    \r\n
    \r\n

    No items found.

    \r\n
    \r\n
    {usedByItem.Id}{usedByItem.GroupId}{usedByItem.Name}{usedByItem.Type}
    \r\n \r\n )}\r\n
    \r\n \r\n \r\n );\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { Button } from \"@progress/kendo-buttons-react-wrapper\";\r\nimport { DataLoadingSpinner } from \"../../../../components/spinners\";\r\nimport { post } from \"../../../../requests/api_calls\";\r\n\r\nexport const AddCallDispositionCodeItem = ({ onAdd }) => {\r\n const [newItem, setNewItem] = useState({});\r\n const [showAddItem, setShowAddItem] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const addEntAgentUnavailableCode = async () => {\r\n await setLoading(true);\r\n const path = \"admin/enterprise/AddCallDispositionCode\";\r\n try {\r\n const response = await post(path, \"POST\", JSON.stringify(newItem));\r\n if (response.ok) {\r\n await setLoading(false);\r\n await onAdd();\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n await setLoading(false);\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n await setLoading(false);\r\n }\r\n };\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n return (\r\n <>\r\n
    \r\n {\r\n setShowAddItem(!showAddItem);\r\n }}\r\n >\r\n Add Code\r\n \r\n
    \r\n {showAddItem && (\r\n
    \r\n
    \r\n
    \r\n \r\n Activate Code\r\n
    \r\n
    \r\n \r\n setNewItem({ ...newItem, Code: e.target.value })}\r\n />\r\n
    \r\n
    \r\n \r\n setNewItem({ ...newItem, Description: e.target.value })}\r\n />\r\n
    \r\n
    \r\n {\r\n addEntAgentUnavailableCode();\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","import React from \"react\";\r\nimport { CallDispositionCodeSectionItem } from \"./disposition-code-item\";\r\nimport { AddCallDispositionCodeItem } from \"./add-disposition-code\";\r\n\r\nexport const CallDispositionCodesTable = ({ codes, reloadView, updateItem }) => {\r\n const hasCodes = codes && codes.length > 0;\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!Boolean(hasCodes) && (\r\n \r\n \r\n \r\n )}\r\n {codes.map((code, index) => {\r\n if (code) {\r\n return (\r\n \r\n );\r\n }\r\n })}\r\n \r\n
    ActiveCodeDescriptionEditSelect
    \r\n
    \r\n No items found.\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n","import React, { Component } from \"react\";\r\nimport { Modal } from \"react-bootstrap\";\r\nimport { Button } from \"@progress/kendo-buttons-react-wrapper\";\r\nimport { DataLoadingSpinner } from \"../../../../components/spinners\";\r\nimport { fetchData, post } from \"../../../../requests/api_calls\";\r\nimport { filterErrorMessage } from \"../../../../utility/utility\";\r\nimport { CallDispositionCodesTable } from \"./disposition-codes-table\";\r\n\r\nclass CallDispositionCodesModal extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = {\r\n callDispositionCodes: null,\r\n errorMessage: \"\",\r\n loading: false,\r\n showModal: false,\r\n itemsToDelete: [],\r\n };\r\n }\r\n\r\n handleClose() {\r\n this.setState({\r\n callDispositionCodes: null,\r\n errorMessage: \"\",\r\n loading: false,\r\n showModal: false,\r\n itemsToDelete: [],\r\n });\r\n }\r\n\r\n handleShow = async () => {\r\n await this.setState({ showModal: true });\r\n await this.reloadView();\r\n };\r\n\r\n fetchDispositionCodes = async () => {\r\n return await fetchData(\"admin/enterprise/GetCallDispositionCodes\").then(\r\n (dispositionCodes) => dispositionCodes\r\n );\r\n };\r\n\r\n updateCallDispositionCodesActiveList = async () => {\r\n const { callDispositionCodes } = this.state;\r\n const path = \"admin/enterprise/UpdateCallDispositionCodesActiveList\";\r\n this.setState({ loading: true, errorMessage: \"\" });\r\n try {\r\n const response = await post(path, \"POST\", JSON.stringify(callDispositionCodes));\r\n if (response.ok) {\r\n await this.reloadView();\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n this.setState({ loading: false, errorMessage: filterErrorMessage(response.message) });\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n this.setState({ loading: false, errorMessage: filterErrorMessage(error) });\r\n }\r\n };\r\n\r\n deleteCallDispositionCodes = async () => {\r\n const path = \"admin/enterprise/DeleteCallDispositionCodes\";\r\n this.setState({ loading: true, errorMessage: \"\" });\r\n try {\r\n const response = await post(path, \"DELETE\", JSON.stringify(this.state.itemsToDelete));\r\n if (response.ok) {\r\n await this.reloadView();\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n this.setState({ loading: false, errorMessage: filterErrorMessage(response.message) });\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n this.setState({ loading: false, errorMessage: filterErrorMessage(error) });\r\n }\r\n };\r\n\r\n reloadView = async () => {\r\n this.setState({ loading: true });\r\n const data = await this.fetchDispositionCodes();\r\n this.setState({ callDispositionCodes: data, loading: false });\r\n };\r\n\r\n updateItem = (item) => {\r\n const updateCodes = this.state.callDispositionCodes.map((code) => {\r\n if (code.Code === item.Code) {\r\n code = { ...code, ...item };\r\n }\r\n return code;\r\n });\r\n const itemsToDelete = updateCodes.filter((code) => code.selectToDelete);\r\n this.setState({ ...this.state, callDispositionCodes: updateCodes, itemsToDelete });\r\n };\r\n\r\n componentDidMount() {}\r\n\r\n render() {\r\n let modalContent;\r\n const { loading, callDispositionCodes, errorMessage, itemsToDelete } = this.state;\r\n\r\n if (loading) {\r\n modalContent = (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (callDispositionCodes && callDispositionCodes.length > 0) {\r\n modalContent = (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n } else {\r\n modalContent = <>;\r\n }\r\n\r\n return (\r\n
    \r\n \r\n Call Disposition Codes\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Call Disposition Codes\r\n \r\n {modalContent}\r\n \r\n {!loading && (\r\n <>\r\n {errorMessage && (\r\n
    \r\n {errorMessage}\r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n {itemsToDelete.length > 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\nexport default CallDispositionCodesModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { fetchData, post } from '../../../requests/api_calls';\r\n\r\nclass CenterRoutingPoliciesModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = {\r\n showModal:false,\r\n routingPolicies: null,\r\n loading: false,\r\n };\r\n this.updateRoutingPolicies = this.updateRoutingPolicies.bind(this);\r\n }\r\n\r\n handleClose() {\r\n this.setState({\r\n showModal:false,\r\n routingPolicies: null,\r\n loading: false,\r\n });\r\n }\r\n\r\n handleShow = async () => {\r\n await this.setState({...this.state, showModal: true, loading: true });\r\n\t\tconst data = await this.fetchRoutingPolicies();\r\n\t\tawait this.setState({ routingPolicies: data, loading: false });\r\n }\r\n\r\n fetchRoutingPolicies = async () => {\r\n return await fetchData('admin/enterprise/GetContactCenterRoutingPolicies').then(routingPolicies => routingPolicies);\r\n }\r\n\r\n updateRoutingPolicies = async () => {\r\n const { routingPolicies } = this.state;\r\n const path = 'admin/enterprise/UpdateContactCenterRoutingPolicies';\r\n await this.setState({ loading: true });\r\n try {\r\n const response = await post(path, \"POST\", JSON.stringify(routingPolicies));\r\n if(response.ok) {\r\n await this.setState({ loading: false });\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n this.setState({ loading: false });\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n await this.setState({ loading: false });\r\n }\r\n }\r\n\r\n updateCallCenterPriority = async (event, selectedCallCenter) => {\r\n const { routingPolicies } = this.state;\r\n const updateCallCenters = routingPolicies.CallCenters.map(callCenter => {\r\n if(callCenter.Id === selectedCallCenter.Id) {\r\n callCenter.Priority = event.target.value;\r\n }\r\n return callCenter;\r\n })\r\n \r\n await this.setState({ ...this.state, routingPolicies: {\r\n ...routingPolicies,\r\n CallCenters: updateCallCenters\r\n }});\r\n }\r\n \r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n let modalContent;\r\n const { loading, routingPolicies } = this.state;\r\n \r\n if (loading) {\r\n modalContent = (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (routingPolicies && Object.keys(routingPolicies).length > 0) {\r\n const hasCallCenters = Boolean(routingPolicies.CallCenters && routingPolicies.CallCenters.length > 0);\r\n modalContent = (\r\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 {hasCallCenters && routingPolicies.CallCenters.map(callCenter => (\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    Contact Center NamePriority
    \r\n {callCenter.Name}\r\n \r\n this.updateCallCenterPriority(e, callCenter)}\r\n />\r\n
    \r\n
    \r\n
    \r\n );\r\n } else {\r\n modalContent = <>;\r\n }\r\n \r\n return (\r\n
    \r\n \r\n Contact Center Routing Policies\r\n \r\n \r\n \r\n \r\n Contact Center Routing Policies\r\n \r\n \r\n {modalContent}\r\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 CenterRoutingPoliciesModal;\r\n","export const BUSINESS_HOURS = \"BUSINESS_HOURS\";\r\nexport const HOLIDAY_SCHEDULE = \"HOLIDAY_SCHEDULE\";\r\nexport const ADD_EVENT = \"ADD_EVENT\";\r\nexport const EDIT_EVENT = \"EDIT_EVENT\";\r\n\r\nexport const recurrenceValues = [\r\n \"Never\",\r\n \"Daily\",\r\n \"Weekly\",\r\n \"MonthlyByDay\",\r\n \"MonthlyByWeek\",\r\n \"YearlyByDay\",\r\n \"YearlyByWeek\",\r\n];\r\n","export const getErrorMessage = (errorResponse) => {\r\n const pattern = /(?:\\(\\):|failed:) \\[Error \\d+\\] (.+?)\\.?(?=( UserId=|, Name=|$))/;\r\n const match = errorResponse.match(pattern);\r\n const errorMessage = match ? match[1].trim() + \".\" : errorResponse;\r\n\r\n return errorMessage;\r\n};\r\n\r\nexport const formatDateToISOString = (date) => {\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\r\n const day = String(date.getDate()).padStart(2, \"0\");\r\n\r\n return `${year}-${month}-${day}T00:00:00`;\r\n};\r\n","import { useEffect, useState } from \"react\";\r\n\r\nimport { ADD_EVENT, EDIT_EVENT, recurrenceValues } from \"./constants\";\r\nimport { fetchData, post } from \"../../../../requests/api_calls\";\r\nimport { DateTimePicker } from \"@progress/kendo-dateinputs-react-wrapper\";\r\nimport { DataLoadingSpinner } from \"../../../../components/spinners\";\r\nimport { formatDateToISOString, getErrorMessage } from \"./utils\";\r\n\r\nexport const EventItem = ({\r\n type,\r\n scheduleName,\r\n scheduleType,\r\n eventItem,\r\n selectItemToDelete,\r\n onAddEvent,\r\n onCancelAddOrEditEvent,\r\n}) => {\r\n const isAddEventItem = type === ADD_EVENT;\r\n const eventItemId = isAddEventItem\r\n ? \"addEvent\"\r\n : `${eventItem?.EventName.replace(/[^\\w\\s]/g, \"\").replace(/\\s+/g, \"\")}`;\r\n\r\n const [showItemDetails, setShowItemDetails] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [event, setEvent] = useState(null);\r\n const [showRequired, setShowRequired] = useState(false);\r\n\r\n const [currentEventName, setCurrentEventName] = useState(eventItem?.EventName || \"\");\r\n const [newEventName, setNewEventName] = useState(eventItem?.EventName || \"\");\r\n const [recurValue, setRecurValue] = useState(\"\");\r\n const [startDate, setStartDate] = useState(new Date());\r\n const [endDate, setEndDate] = useState(new Date());\r\n const [allDayEvent, setAllDayEvent] = useState(false);\r\n const [dailyRecurrence, setDailyRecurrence] = useState();\r\n const [weeklyRecurrence, setWeeklyRecurrence] = useState();\r\n const [monthlyByDayRecurrence, setMonthlyByDayRecurrence] = useState();\r\n const [monthlyByWeekRecurrence, setMonthlyByWeekRecurrence] = useState();\r\n const [yearlyByDayRecurrence, setYearlyByDayRecurrence] = useState();\r\n const [yearlyByWeekRecurrence, setYearlyByWeekRecurrence] = useState();\r\n\r\n const [recurEndType, setRecurEndType] = useState(0);\r\n const [recurEndOccurrence, setRecurEndOccurrence] = useState();\r\n const [recurEndDate, setRecurEndDate] = useState(new Date());\r\n const [recurForEver, setRecurForEver] = useState(false);\r\n\r\n const [dayOfWeekRecurrence, setDayOfWeekRecurrence] = useState(0);\r\n const [weekOfMonthRecurrence, setWeekOfMonthRecurrence] = useState(0);\r\n const [monthRecurrence, setMonthRecurrence] = useState(0);\r\n\r\n const [errorMessage, setErrorMessage] = useState(\"\");\r\n\r\n useEffect(() => {\r\n if (event) {\r\n const {\r\n RecurrenceType,\r\n StartDate,\r\n StartTime,\r\n EndDate,\r\n EndTime,\r\n AllDayEvent,\r\n DailyRecurrence,\r\n WeeklyRecurrence,\r\n MonthlyByDayRecurrence,\r\n MonthlyByWeekRecurrence,\r\n YearlyByDayRecurrence,\r\n YearlyByWeekRecurrence,\r\n RecurEndType,\r\n RecurEndDate,\r\n RecurEndOccurrence,\r\n RecurForEver,\r\n } = event;\r\n\r\n let startDateAndTime = new Date(StartDate);\r\n startDateAndTime.setHours(StartTime?.Hour || 0);\r\n startDateAndTime.setMinutes(StartTime?.Minute || 0);\r\n let endDateAndTime = new Date(EndDate);\r\n endDateAndTime.setHours(EndTime?.Hour || 0);\r\n endDateAndTime.setMinutes(EndTime?.Minute || 0);\r\n\r\n setRecurValue(RecurrenceType);\r\n setStartDate(startDateAndTime);\r\n setEndDate(endDateAndTime);\r\n setAllDayEvent(AllDayEvent);\r\n setDailyRecurrence(DailyRecurrence);\r\n setWeeklyRecurrence(WeeklyRecurrence);\r\n setMonthlyByDayRecurrence(MonthlyByDayRecurrence);\r\n setRecurEndType(RecurEndType);\r\n setRecurEndDate(RecurEndDate);\r\n setRecurEndOccurrence(RecurEndOccurrence);\r\n setRecurForEver(RecurForEver);\r\n\r\n if (MonthlyByWeekRecurrence) {\r\n setMonthlyByWeekRecurrence(MonthlyByWeekRecurrence);\r\n setDayOfWeekRecurrence(MonthlyByWeekRecurrence.DayOfWeek);\r\n setWeekOfMonthRecurrence(MonthlyByWeekRecurrence.DayOfWeekInMonth);\r\n }\r\n if (YearlyByDayRecurrence) {\r\n setYearlyByDayRecurrence(YearlyByDayRecurrence);\r\n setMonthRecurrence(YearlyByDayRecurrence.Month);\r\n }\r\n if (YearlyByWeekRecurrence) {\r\n setYearlyByWeekRecurrence(YearlyByWeekRecurrence);\r\n setDayOfWeekRecurrence(YearlyByWeekRecurrence.DayOfWeek);\r\n setWeekOfMonthRecurrence(YearlyByWeekRecurrence.DayOfWeekInMonth);\r\n setMonthRecurrence(YearlyByWeekRecurrence.Month);\r\n }\r\n }\r\n }, [event]);\r\n\r\n useEffect(() => {\r\n checkForEventItemForm();\r\n }, [\r\n newEventName,\r\n recurValue,\r\n recurEndType,\r\n dailyRecurrence,\r\n weeklyRecurrence,\r\n monthlyByDayRecurrence,\r\n monthlyByWeekRecurrence,\r\n yearlyByDayRecurrence,\r\n yearlyByWeekRecurrence,\r\n ]);\r\n\r\n const fetchEventItemDetail = async () => {\r\n const request = await fetchData(\r\n \"admin/enterprise/GetTimeScheduleEvent\" +\r\n `?scheduleName=${scheduleName}` +\r\n `&scheduleType=${scheduleType}` +\r\n `&eventName=${currentEventName}`\r\n ).then((data) => data);\r\n setEvent(request);\r\n setNewEventName(currentEventName);\r\n };\r\n\r\n /* Event Actions */\r\n const loadItemDetails = async () => {\r\n if (!showItemDetails) {\r\n setLoading(true);\r\n await fetchEventItemDetail();\r\n setLoading(false);\r\n setShowItemDetails(true);\r\n } else if (showItemDetails) {\r\n setShowItemDetails(false);\r\n }\r\n };\r\n\r\n const checkForEventItemForm = () => {\r\n if (\r\n !Boolean(newEventName) ||\r\n ![\"number\", \"string\"].includes(typeof recurValue) ||\r\n (recurValue === 1 && !dailyRecurrence?.Interval) ||\r\n (recurValue !== 0 && typeof recurEndType !== \"number\") ||\r\n (recurEndType === 2 && !recurEndOccurrence) ||\r\n (recurEndType === 1 && !recurEndDate) ||\r\n (recurValue === 2 && !weeklyRecurrence?.Interval) ||\r\n (recurValue === 2 &&\r\n !(\r\n weeklyRecurrence.Monday ||\r\n weeklyRecurrence.Tuesday ||\r\n weeklyRecurrence.Wednesday ||\r\n weeklyRecurrence.Thursday ||\r\n weeklyRecurrence.Friday ||\r\n weeklyRecurrence.Saturday ||\r\n weeklyRecurrence.Sunday\r\n )) ||\r\n (recurValue === 3 && !monthlyByDayRecurrence?.Interval) ||\r\n (recurValue === 3 && !monthlyByDayRecurrence?.DayOfMonth) ||\r\n (recurValue === 4 && !monthlyByWeekRecurrence?.Interval)\r\n ) {\r\n setShowRequired(true);\r\n return false;\r\n }\r\n setShowRequired(false);\r\n return true;\r\n };\r\n\r\n const cancelAddOrEditEvent = () => {\r\n if (isAddEventItem) {\r\n onCancelAddOrEditEvent();\r\n } else {\r\n loadItemDetails();\r\n }\r\n };\r\n\r\n const saveEvent = async () => {\r\n const isFormAvailable = await checkForEventItemForm();\r\n if (isFormAvailable) {\r\n const path = isAddEventItem\r\n ? \"admin/enterprise/AddTimeScheduleEvent\"\r\n : \"admin/enterprise/UpdateTimeScheduleEvent\";\r\n const data = {\r\n ScheduleName: scheduleName,\r\n ScheduleType: scheduleType,\r\n EventName: currentEventName || newEventName,\r\n NewEventName: !isAddEventItem && newEventName !== currentEventName ? newEventName : null,\r\n StartDate: formatDateToISOString(startDate),\r\n EndDate: formatDateToISOString(endDate),\r\n AllDayEvent: allDayEvent,\r\n StartTime: allDayEvent\r\n ? null\r\n : { Hour: startDate.getHours(), Minute: startDate.getMinutes() },\r\n EndTime: allDayEvent ? null : { Hour: endDate.getHours(), Minute: endDate.getMinutes() },\r\n RecurrenceType: recurValue || null,\r\n RecurEndType: recurEndType || null,\r\n RecurEndDate: recurEndDate || null,\r\n RecurEndOccurrence: recurEndOccurrence || null,\r\n RecurForEver: recurForEver || null,\r\n DailyRecurrence: dailyRecurrence || null,\r\n WeeklyRecurrence: weeklyRecurrence || null,\r\n MonthlyByDayRecurrence: monthlyByDayRecurrence || null,\r\n MonthlyByWeekRecurrence: monthlyByWeekRecurrence\r\n ? {\r\n ...monthlyByWeekRecurrence,\r\n DayOfWeekInMonth: weekOfMonthRecurrence,\r\n DayOfWeek: dayOfWeekRecurrence,\r\n }\r\n : null,\r\n YearlyByDayRecurrence: yearlyByDayRecurrence\r\n ? {\r\n ...yearlyByDayRecurrence,\r\n Month: monthRecurrence,\r\n }\r\n : null,\r\n YearlyByWeekRecurrence: yearlyByWeekRecurrence\r\n ? {\r\n ...yearlyByWeekRecurrence,\r\n DayOfWeekInMonth: weekOfMonthRecurrence,\r\n DayOfWeek: dayOfWeekRecurrence,\r\n Month: monthRecurrence,\r\n }\r\n : null,\r\n };\r\n\r\n try {\r\n setErrorMessage(\"\");\r\n setLoading(true);\r\n const response = await post(path, \"POST\", JSON.stringify(data));\r\n if (response.ok) {\r\n setLoading(false);\r\n // Action for Add Event\r\n if (isAddEventItem) {\r\n await onAddEvent({ EventName: data.EventName });\r\n }\r\n if (!isAddEventItem) {\r\n setCurrentEventName(data.NewEventName || currentEventName);\r\n }\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n setLoading(false);\r\n setErrorMessage(getErrorMessage(response.message));\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n setLoading(false);\r\n setErrorMessage(getErrorMessage(error));\r\n }\r\n }\r\n };\r\n\r\n /* End Event Actions */\r\n\r\n const changeRecurs = (event) => {\r\n setRecurValue(event.target.value);\r\n };\r\n\r\n const updateAllDayEventAndTime = (value) => {\r\n setAllDayEvent(value);\r\n if (value) {\r\n const newStartDate = new Date(startDate);\r\n newStartDate.setHours(0);\r\n newStartDate.setMinutes(0);\r\n newStartDate.setSeconds(0);\r\n setStartDate(newStartDate);\r\n const newEndDate = new Date(endDate);\r\n newEndDate.setHours(0);\r\n newEndDate.setMinutes(0);\r\n newEndDate.setSeconds(0);\r\n setEndDate(newEndDate);\r\n }\r\n };\r\n\r\n const getRecurrentControl = () => {\r\n const recurrenceValue = recurrenceValues[recurValue];\r\n\r\n switch (recurrenceValue) {\r\n case \"Never\":\r\n return
    {getTime()}
    ;\r\n case \"Daily\":\r\n return (\r\n
    \r\n {getTime()}\r\n
    \r\n \r\n setDailyRecurrence({ Interval: e.target.value })}\r\n />\r\n {showRequired && !dailyRecurrence?.Interval && (\r\n Required\r\n )}\r\n
    \r\n {getRecurEnd()}\r\n
    \r\n );\r\n case \"Weekly\":\r\n return (\r\n
    \r\n {getTime()}\r\n
    \r\n \r\n \r\n setWeeklyRecurrence({\r\n ...weeklyRecurrence,\r\n Interval: e.target.value,\r\n })\r\n }\r\n />\r\n {showRequired && !recurEndDate && (\r\n Required\r\n )}\r\n
    \r\n {/* \r\n {(showRequired && !recurEndDate) && (Required)} */}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {getRecurEnd()}\r\n
    \r\n );\r\n case \"MonthlyByDay\":\r\n return (\r\n
    \r\n {getTime()}\r\n
    \r\n \r\n \r\n setMonthlyByDayRecurrence({\r\n ...monthlyByDayRecurrence,\r\n Interval: e.target.value,\r\n })\r\n }\r\n />\r\n {showRequired && !monthlyByDayRecurrence?.Interval && (\r\n Required\r\n )}\r\n
    \r\n
    \r\n \r\n \r\n setMonthlyByDayRecurrence({\r\n ...monthlyByDayRecurrence,\r\n DayOfMonth: e.target.value,\r\n })\r\n }\r\n />\r\n {showRequired && !monthlyByDayRecurrence?.DayOfMonth && (\r\n Required\r\n )}\r\n
    \r\n {getRecurEnd()}\r\n
    \r\n );\r\n case \"MonthlyByWeek\":\r\n return (\r\n
    \r\n {getTime()}\r\n
    \r\n \r\n \r\n setMonthlyByWeekRecurrence({\r\n ...monthlyByWeekRecurrence,\r\n Interval: e.target.value,\r\n })\r\n }\r\n />\r\n {showRequired && !monthlyByWeekRecurrence?.Interval && (\r\n Required\r\n )}\r\n
    \r\n
    \r\n \r\n {getRecurWeekOfMonths()}\r\n
    \r\n
    \r\n \r\n {getRecurDays()}\r\n
    \r\n {getRecurEnd()}\r\n
    \r\n );\r\n case \"YearlyByDay\":\r\n return (\r\n
    \r\n {getTime()}\r\n
    \r\n \r\n \r\n setYearlyByDayRecurrence({\r\n ...yearlyByDayRecurrence,\r\n Interval: e.target.value,\r\n })\r\n }\r\n />\r\n {showRequired && !yearlyByDayRecurrence?.Interval && (\r\n Required\r\n )}\r\n
    \r\n
    \r\n \r\n {getRecurMonths()}\r\n
    \r\n
    \r\n \r\n \r\n setMonthlyByDayRecurrence({\r\n ...yearlyByDayRecurrence,\r\n DayOfMonth: e.target.value,\r\n })\r\n }\r\n />\r\n {showRequired && !yearlyByDayRecurrence?.DayOfMonth && (\r\n Required\r\n )}\r\n
    \r\n {getRecurEnd()}\r\n
    \r\n );\r\n case \"YearlyByWeek\":\r\n return (\r\n
    \r\n {getTime()}\r\n
    \r\n \r\n \r\n setYearlyByWeekRecurrence({\r\n ...yearlyByWeekRecurrence,\r\n Interval: e.target.value,\r\n })\r\n }\r\n />\r\n {showRequired && !yearlyByWeekRecurrence?.Interval && (\r\n Required\r\n )}\r\n
    \r\n
    \r\n \r\n {getRecurMonths()}\r\n
    \r\n
    \r\n \r\n {getRecurWeekOfMonths()}\r\n
    \r\n
    \r\n \r\n {getRecurDays()}\r\n
    \r\n {getRecurEnd()}\r\n
    \r\n );\r\n }\r\n };\r\n\r\n const getTime = () => {\r\n return (\r\n
    \r\n \r\n All Day Event\r\n
    \r\n
    \r\n \r\n setStartDate(e.sender.value())}\r\n />\r\n
    \r\n
    \r\n \r\n setEndDate(e.sender.value())}\r\n />\r\n
    \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n const changeRecurEndType = (event) => {\r\n const { value } = event.target;\r\n if (value === 0) {\r\n setRecurForEver(true);\r\n } else {\r\n setRecurForEver(false);\r\n }\r\n setRecurEndType(value);\r\n };\r\n\r\n const getRecurEnd = () => {\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n
    \r\n {recurEndType == \"2\" && (\r\n
    \r\n \r\n setRecurEndOccurrence(e.target.value)}\r\n />\r\n Occurrences\r\n {showRequired && !recurEndOccurrence && (\r\n
    \r\n Required\r\n
    \r\n )}\r\n
    \r\n )}\r\n {recurEndType == \"1\" && (\r\n
    \r\n \r\n setRecurEndDate(e.sender.value())}\r\n />\r\n {showRequired && !recurEndDate && (\r\n Required\r\n )}\r\n
    \r\n )}\r\n \r\n );\r\n };\r\n\r\n const getRecurMonths = () => {\r\n return (\r\n setMonthRecurrence(e.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 \r\n );\r\n };\r\n\r\n const getRecurDays = () => {\r\n return (\r\n setDayOfWeekRecurrence(e.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 const getRecurWeekOfMonths = () => {\r\n return (\r\n setWeekOfMonthRecurrence(e.target.value)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const selectItemCheckbox = (e, eventItem) => {\r\n const deleteEventData = {\r\n EventName: currentEventName,\r\n ScheduleName: scheduleName,\r\n ScheduleType: scheduleType,\r\n };\r\n selectItemToDelete(e.target.checked, deleteEventData);\r\n };\r\n\r\n return (\r\n <>\r\n {type === EDIT_EVENT && (\r\n \r\n \r\n selectItemCheckbox(e, eventItem)} />\r\n \r\n {currentEventName}\r\n \r\n loadItemDetails()}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {loading && (\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n )}\r\n {!loading && (showItemDetails || isAddEventItem) && (\r\n \r\n \r\n
    \r\n
    \r\n \r\n setNewEventName(e.target.value)}\r\n />\r\n {showRequired && !newEventName && (\r\n Required\r\n )}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {showRequired && !recurValue && (\r\n Required\r\n )}\r\n
    \r\n {getRecurrentControl()}\r\n
    \r\n {errorMessage &&

    {errorMessage}

    }\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n","import { EventItem } from \"./event-item\";\r\n\r\nimport { EDIT_EVENT } from \"./constants\";\r\n\r\nexport const EventList = ({ events, selectItemToDelete, scheduleItem, onCancelAddOrEditEvent }) => {\r\n const hasEvents = Boolean(events && events.length > 0);\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 {!hasEvents && (\r\n \r\n \r\n \r\n )}\r\n {hasEvents &&\r\n events.map((event, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n
    \r\n \r\n Event Name
    \r\n
    \r\n No events added for this schedule yet.\r\n
    \r\n
    \r\n );\r\n};\r\n","import { useEffect, useState } from \"react\";\r\n\r\nimport { EventItem } from \"./event-item\";\r\nimport { EventList } from \"./event-list\";\r\nimport { ADD_EVENT } from \"./constants\";\r\n\r\nexport const ScheduleItem = ({ scheduleItem, selectItemToDelete, onUpdateScheduleName }) => {\r\n const { ScheduleName, ScheduleType, events } = scheduleItem;\r\n\r\n const [newScheduleName, setNewScheduleName] = useState(ScheduleName || \"\");\r\n const [showAddEventItemSection, setShowAddEventItemSection] = useState(false);\r\n const [eventList, setEventList] = useState(events || []);\r\n\r\n const onAddEvent = (event) => {\r\n const newEventList = [...eventList, event];\r\n setEventList(newEventList);\r\n setShowAddEventItemSection(false);\r\n };\r\n\r\n const closeEventItemSection = () => {\r\n setShowAddEventItemSection(false);\r\n };\r\n\r\n useEffect(() => {\r\n onUpdateScheduleName(newScheduleName);\r\n }, [newScheduleName]);\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n setNewScheduleName(e.target.value)}\r\n />\r\n
    \r\n {\r\n setShowAddEventItemSection(!showAddEventItemSection);\r\n }}\r\n >\r\n Add Event\r\n \r\n {showAddEventItemSection && (\r\n \r\n \r\n \r\n \r\n
    \r\n )}\r\n \r\n \r\n );\r\n};\r\n","import { useEffect, useState } from \"react\";\r\n\r\nimport { fetchData } from \"../../../../requests/api_calls\";\r\n\r\nimport { DataLoadingSpinner } from \"../../../../components/spinners\";\r\n\r\nexport const ScheduleList = ({\r\n schedulesList,\r\n onShowScheduleItem,\r\n onSetListScheduleItemToDelete,\r\n}) => {\r\n const [listWithEvents, setListWithEvents] = useState(schedulesList || []);\r\n const [loading, setLoading] = useState(true);\r\n\r\n const fetchEventsForSchedule = async () => {\r\n let schedulesData;\r\n if (schedulesList && schedulesList.length > 0) {\r\n let requests = [];\r\n for (const schedule of schedulesList) {\r\n const request = fetchData(\r\n `admin/enterprise/GetTimeScheduleEvents?scheduleName=${schedule.ScheduleName}&scheduleType=${schedule.ScheduleType}`\r\n ).then((data) => data);\r\n requests.push(request);\r\n }\r\n\r\n const eventsResponse = await Promise.all(requests)\r\n .then((dataArray) => dataArray)\r\n .catch((err) => console.error(err));\r\n\r\n schedulesData = schedulesList.map((schedule, index) => {\r\n const events = eventsResponse[index];\r\n return {\r\n ...schedule,\r\n selectToDelete: false,\r\n events: events\r\n ? events.map((eventName) => {\r\n return { EventName: eventName };\r\n })\r\n : null,\r\n };\r\n });\r\n }\r\n setListWithEvents(schedulesData);\r\n setLoading(false);\r\n };\r\n\r\n useEffect(() => {\r\n fetchEventsForSchedule();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (listWithEvents && listWithEvents.length > 0) {\r\n const listWithEventsToDelete = listWithEvents.filter((item) => item.selectToDelete);\r\n onSetListScheduleItemToDelete(listWithEventsToDelete);\r\n }\r\n }, [listWithEvents]);\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n \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 {listWithEvents.map((item, index) => (\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    SelectSchedule NameEdit
    \r\n \r\n {item.ScheduleName}\r\n \r\n onShowScheduleItem(item)}>\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n","import { useState } from \"react\";\r\n\r\nimport { Button } from \"@progress/kendo-buttons-react-wrapper\";\r\nimport { DataLoadingSpinner } from \"../../../../components/spinners\";\r\n\r\nexport const AddScheduleItem = ({ addSchedule }) => {\r\n const [showAddScheduleItem, setShowAddScheduleItem] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [newScheduleName, setNewScheduleName] = useState(\"\");\r\n\r\n const [errorMessage, setErrorMessage] = useState(\"\");\r\n\r\n const createSchedule = async () => {\r\n if (newScheduleName) {\r\n await setLoading(true);\r\n await addSchedule(newScheduleName);\r\n await setLoading(false);\r\n }\r\n };\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n setShowAddScheduleItem(!showAddScheduleItem);\r\n }}\r\n >\r\n Create a Schedule\r\n \r\n {showAddScheduleItem && (\r\n
    \r\n
    \r\n \r\n setNewScheduleName(e.target.value)}\r\n />\r\n
    \r\n \r\n {\r\n setShowAddScheduleItem(!showAddScheduleItem);\r\n }}\r\n >\r\n Cancel\r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n {errorMessage && (\r\n
    \r\n

    {errorMessage}

    \r\n
    \r\n )}\r\n \r\n );\r\n};\r\n","import React, { Component } from \"react\";\r\nimport { Modal } from \"react-bootstrap\";\r\nimport { Button } from \"@progress/kendo-buttons-react-wrapper\";\r\n\r\nimport { fetchData, post } from \"../../../../requests/api_calls\";\r\n\r\nimport { DataLoadingSpinner } from \"../../../../components/spinners\";\r\n\r\nimport { BUSINESS_HOURS, HOLIDAY_SCHEDULE } from \"./constants\";\r\nimport { ScheduleItem } from \"./schedule-item\";\r\nimport { ScheduleList } from \"./schedule-list\";\r\nimport { AddScheduleItem } from \"./add-schedule-item\";\r\n\r\nclass ScheduleModal extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = {\r\n type: \"\",\r\n showModal: false,\r\n loading: false,\r\n allSchedulesData: null,\r\n timeSchedules: null,\r\n selectedSchedulesData: null,\r\n itemsToDelete: [],\r\n selectedSchedule: null,\r\n showScheduleItemContent: false,\r\n scheduleItemsToDelete: [],\r\n };\r\n }\r\n\r\n handleClose() {\r\n this.setState({\r\n type: \"\",\r\n showModal: false,\r\n loading: false,\r\n allSchedulesData: null,\r\n timeSchedules: null,\r\n itemsToDelete: [],\r\n selectedSchedule: null,\r\n showScheduleItemContent: false,\r\n scheduleItemsToDelete: [],\r\n });\r\n }\r\n\r\n async handleShow() {\r\n this.setState({ showModal: true, loading: true });\r\n await this.fetchTimeSchedules();\r\n this.setState({ loading: false });\r\n }\r\n\r\n fetchTimeSchedules = async () => {\r\n const allSchedulesData = await fetchData(\"admin/enterprise/GetTimeSchedules\").then(\r\n (allSchedulesData) => allSchedulesData\r\n );\r\n this.setState({\r\n allSchedulesData: allSchedulesData,\r\n });\r\n };\r\n\r\n handleSelectScheduleType = (type) => {\r\n const timeSchedules = !type\r\n ? null\r\n : type === HOLIDAY_SCHEDULE\r\n ? this.state.allSchedulesData?.HolidaySchedules\r\n : this.state.allSchedulesData?.TimeSchedules;\r\n this.setState({ type: type, timeSchedules: timeSchedules });\r\n };\r\n\r\n addSchedule = async (newScheduleName) => {\r\n const scheduleType = this.state.type === HOLIDAY_SCHEDULE ? 0 : 1;\r\n const data = {\r\n ScheduleName: newScheduleName,\r\n ScheduleType: scheduleType,\r\n };\r\n const path = \"admin/enterprise/AddTimeSchedule\";\r\n try {\r\n this.setState({ loading: true });\r\n const response = await post(path, \"POST\", JSON.stringify(data));\r\n if (response.ok) {\r\n await this.fetchTimeSchedules();\r\n this.handleSelectScheduleType(this.state.type);\r\n this.setState({ loading: false });\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n this.setState({ loading: false });\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n this.setState({ loading: false });\r\n }\r\n };\r\n\r\n onShowScheduleItem = async (item) => {\r\n this.setState({\r\n selectedSchedule: item || null,\r\n showScheduleItemContent: Boolean(item),\r\n });\r\n };\r\n\r\n selectScheduleItemsToDelete = async (scheduleListToDelete) => {\r\n this.setState({ scheduleItemsToDelete: scheduleListToDelete });\r\n };\r\n\r\n selectItemToDelete = (isItemSelected, deleteEventData) => {\r\n const isItemInItemsToDeleteArray = this.state.itemsToDelete.some(\r\n (item) => item.EventName === deleteEventData.EventName\r\n );\r\n if (isItemSelected && !isItemInItemsToDeleteArray) {\r\n const itemListToDelete = [...this.state.itemsToDelete, deleteEventData];\r\n this.setState({ itemsToDelete: itemListToDelete });\r\n }\r\n if (!isItemSelected && isItemInItemsToDeleteArray) {\r\n const itemListToDelete = this.state.itemsToDelete.filter(\r\n (item) => item.EventName !== deleteEventData.EventName\r\n );\r\n\r\n this.setState({ itemsToDelete: itemListToDelete });\r\n }\r\n };\r\n\r\n updateScheduleName = (newScheduleName) => {\r\n console.log({ newScheduleName });\r\n this.setState({\r\n selectedSchedule: { ...this.state.selectedSchedule, NewScheduleName: newScheduleName },\r\n });\r\n };\r\n\r\n updateSchedule = async () => {\r\n const path = \"admin/enterprise/UpdateTimeSchedule\";\r\n const { selectedSchedule } = this.state;\r\n\r\n const data = {\r\n ...selectedSchedule,\r\n };\r\n console.log({ data });\r\n try {\r\n this.setState({ loading: true });\r\n const response = await post(path, \"POST\", JSON.stringify(data));\r\n if (response.ok) {\r\n await this.fetchTimeSchedules();\r\n this.handleSelectScheduleType(this.state.type);\r\n this.setState({\r\n loading: false,\r\n itemsToDelete: [],\r\n showScheduleItemContent: false,\r\n });\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n this.setState({ loading: false });\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n this.setState({ loading: false });\r\n }\r\n };\r\n\r\n deleteSchedules = async () => {\r\n const path = \"admin/enterprise/DeleteTimeSchedules\";\r\n const { scheduleItemsToDelete, type } = this.state;\r\n try {\r\n this.setState({ loading: true });\r\n const response = await post(path, \"DELETE\", JSON.stringify(scheduleItemsToDelete));\r\n if (response.ok) {\r\n await this.fetchTimeSchedules();\r\n this.handleSelectScheduleType(type);\r\n this.setState({\r\n loading: false,\r\n type: type,\r\n scheduleItemsToDelete: [],\r\n });\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n this.setState({ loading: false });\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n this.setState({ loading: false });\r\n }\r\n };\r\n\r\n deleteListedEvents = async () => {\r\n const path = \"admin/enterprise/DeleteTimeScheduleEvents\";\r\n const { selectedSchedule, itemsToDelete } = this.state;\r\n try {\r\n this.setState({ loading: true });\r\n const response = await post(path, \"DELETE\", JSON.stringify(itemsToDelete));\r\n if (response.ok) {\r\n const newEventList =\r\n selectedSchedule?.events.length > 0\r\n ? selectedSchedule?.events.filter(\r\n (event) =>\r\n !itemsToDelete.some(\r\n (eventToDelete) => eventToDelete.EventName === event.EventName\r\n )\r\n )\r\n : [];\r\n this.setState({\r\n loading: false,\r\n itemsToDelete: [],\r\n selectedSchedule: {\r\n ...selectedSchedule,\r\n events: newEventList,\r\n },\r\n });\r\n } else {\r\n console.error(`${path}: failed: ${response.message}`);\r\n this.setState({ loading: false });\r\n }\r\n } catch (error) {\r\n console.error(`${path}: failed: ${error}`);\r\n this.setState({ loading: false });\r\n }\r\n };\r\n\r\n componentDidMount() {}\r\n\r\n getInfo() {\r\n switch (this.state.type) {\r\n case \"BUSINESS_HOURS\":\r\n return \"Set Business Hours Schedules to automatically trigger feature functionality and time-of-day routing for services.\";\r\n case \"HOLIDAY_SCHEDULE\":\r\n return \"Set Holiday Hours Schedules to automatically trigger feature functionality and day(s)-of-year routing for services.\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n getTitle() {\r\n switch (this.state.type) {\r\n case \"BUSINESS_HOURS\":\r\n return \"Time Schedule - Business Hours\";\r\n case \"HOLIDAY_SCHEDULE\":\r\n return \"Time Schedule - Holiday\";\r\n default:\r\n return \"Time Schedules\";\r\n }\r\n }\r\n\r\n render() {\r\n let modalContent;\r\n const {\r\n type,\r\n showModal,\r\n timeSchedules,\r\n loading,\r\n itemsToDelete,\r\n showScheduleItemContent,\r\n selectedSchedule,\r\n scheduleItemsToDelete,\r\n } = this.state;\r\n\r\n if (loading) {\r\n modalContent = (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (!type) {\r\n modalContent = (\r\n
    \r\n
    \r\n this.handleSelectScheduleType(HOLIDAY_SCHEDULE)}>\r\n {\"HOLIDAY SCHEDULE\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n this.handleSelectScheduleType(BUSINESS_HOURS)}>\r\n {\"BUSINESS HOURS\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n } else if (showScheduleItemContent) {\r\n modalContent = (\r\n \r\n );\r\n } else if (type && timeSchedules && Object.keys(timeSchedules).length > 0) {\r\n modalContent = (\r\n <>\r\n

    {this.getInfo()}

    \r\n
    \r\n
    \r\n {\r\n this.setState({ type: \"\" });\r\n }}\r\n >\r\n Return to previous view\r\n \r\n
    \r\n \r\n\r\n \r\n
    \r\n \r\n );\r\n } else {\r\n modalContent = <>;\r\n }\r\n\r\n return (\r\n
    \r\n \r\n Time Schedules\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {showScheduleItemContent && selectedSchedule !== null\r\n ? `Edit - ${selectedSchedule.ScheduleName}`\r\n : this.getTitle()}\r\n \r\n \r\n {modalContent}\r\n \r\n {showScheduleItemContent && selectedSchedule !== null && (\r\n <>\r\n
    \r\n
    \r\n \r\n {itemsToDelete.length > 0 && (\r\n \r\n )}\r\n \r\n \r\n
    \r\n \r\n )}\r\n {type && timeSchedules && Object.keys(timeSchedules).length > 0 && (\r\n <>\r\n {scheduleItemsToDelete.length > 0 && (\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 ScheduleModal;\r\n","import React, { Component } from \"react\";\r\nimport { fetchData } from \"./../requests/api_calls\";\r\n\r\nimport FQDNSetupModal from \"./locations/modals/fQDNSetupModal\";\r\nimport AutoAttendantRepoManager from \"./locations/modals/autoAttendantRepoManager\";\r\n\r\nimport DepartmentModal from \"./modals/enterprise_settings/departmentModal\";\r\nimport EnterpriseDirectoryModal from \"./modals/enterprise_settings/enterpriseDirectoryModal\";\r\nimport EmergencyCallNotificationModal from \"./modals/enterprise_settings/emergencyCallNotificationModal\";\r\n\r\nimport AgentDefaultSettingModal from \"./modals/enterprise_settings/agentDefaultSettingModal\";\r\nimport AgentUnavailableCodesModal from \"./modals/enterprise_settings/agentUnavailableCodesModal/index.js\";\r\nimport CallDispositionCodesModal from \"./modals/enterprise_settings/callDispositionCodesModal/index.js\";\r\nimport CenterRoutingPoliciesModal from \"./modals/enterprise_settings/centerRoutingPoliciesModal\";\r\nimport ScheduleModal from \"./modals/enterprise_settings/scheduleModal/index.js\";\r\nimport { connect } from \"react-redux\";\r\nimport { DataLoadingSpinner } from \"../components/spinners\";\r\n\r\nclass EnterpriseSettings extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n hasContactCenter: false,\r\n loading: false,\r\n isEnterpriseSectionCollapsed: true,\r\n isContactCenterSectionCollapsed: true,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.checkIfHasContactCenter();\r\n }\r\n\r\n checkIfHasContactCenter = async () => {\r\n this.setState({ loading: true });\r\n const response = await fetchData(\"admin/HasContactCenter\").then((data) => data);\r\n this.setState({ hasContactCenter: response.HasContactCenter, loading: false });\r\n };\r\n\r\n toggleCollapseEnterpriseSection = () => {\r\n this.setState({ isEnterpriseSectionCollapsed: !this.state.isEnterpriseSectionCollapsed });\r\n };\r\n\r\n toggleCollapseContactCenterSection = () => {\r\n this.setState({\r\n isContactCenterSectionCollapsed: !this.state.isContactCenterSectionCollapsed,\r\n });\r\n };\r\n\r\n getEnterpriseSection = () => {\r\n return (\r\n
    \r\n \r\n
    \r\n {/* Section heading: Enterprise Settings */}\r\n
    \r\n \r\n \r\n Enterprise Services\r\n \r\n \r\n \r\n \r\n \r\n

    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n {sessionStorage.IsNetSapiens === 'true'?null:}\r\n \r\n {sessionStorage.IsNetSapiens === 'true'?null:}\r\n {sessionStorage.IsNetSapiens === 'true'?null:}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n };\r\n\r\n getContactCenterSection = () => {\r\n return (\r\n
    \r\n \r\n
    \r\n {/* Section heading: Contact Center */}\r\n
    \r\n \r\n \r\n Contact Center\r\n \r\n \r\n \r\n \r\n \r\n

    \r\n \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Enterprise Settings

    \r\n
    \r\n {sessionStorage.IsNetSapiens === 'true'?null:\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n \r\n
    */}\r\n
    \r\n }\r\n\r\n {this.getEnterpriseSection()}\r\n {this.state.loading && (\r\n
    \r\n \r\n
    \r\n )}\r\n {this.state.hasContactCenter && this.getContactCenterSection()}\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n AccountNumber: state.reducer.AccountNumber,\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(EnterpriseSettings);\r\n// export default EnterpriseSettings;","export default \"data:image/png;base64,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\"","import React, { Component } from \"react\";\nimport * as settings from \"./../scripts/session\";\nimport * as config from \"./../requests/config\";\nimport ReactDom from \"react-dom\";\nimport { DataLoadingSpinner } from \"./../components/spinners\";\nimport { connect } from \"react-redux\";\nimport FQDNSetupModal from \"./locations/modals/fQDNSetupModal\";\nimport AutoAttendantRepoManager from \"./locations/modals/autoAttendantRepoManager\";\nimport * as session from \"../scripts/session\";\nimport { homePageUrl } from \"../scripts/helper\";\n\n// 1. Group Features Page - \"MSP_GROUP\"\n// 2. Settings Feature Page - \"MSP_SUBSCRIBER\" + tn param\n// 3. Call Center Page - \"MSP_CC\"\n// 4. Enterprise Page - \"MSP_ENTERPRISE\"\n// 5. Support page - \"MSP_SUPPORT\"\n// 6. Training page - \"MSP_TRAINING\"\n// 7. Payments Pages - \"MSP_PAYMENT\"\nclass IframeSettings extends Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n showBillingMessage: false,\n };\n this.handleSubmit = this.handleSubmit.bind(this);\n this.updatePageIframe = this.updatePageIframe.bind(this);\n this.handleClose = this.handleClose.bind(this);\n }\n componentWillReceiveProps() {\n if (!this.state.loading) this.setState({ loading: true });\n }\n\n componentDidUpdate() {\n //need to replace this with checking if token is valid.\n var user = config.clientApp.getAccount();\n if (this.state.loading && (user || sessionStorage.RPXLogin)) {\n this.updatePageIframe();\n } else if (this.state.loading) {\n this.setState({ loading: false });\n }\n }\n\n // If contact only shows when enterprise settings shows, does that mean that enterprise settgins will have an empty option (4)\n\n componentDidMount() {\n var user = config.clientApp.getAccount();\n let iframekey = this.props.match.params.page;\n\n if (\n iframekey === \"MSP_PAYMENT\" &&\n (session.IsWholesale() ||\n sessionStorage.userEnterpriseNumber === \"3904000825\" ||\n sessionStorage.hasBillingAdminPermission == \"false\")\n ) {\n const homePathToRedirect = homePageUrl();\n this.props.history.push(homePathToRedirect);\n }\n if (\n iframekey === \"MSP_PAYMENT\" &&\n process.env.REACT_APP_BILLING_MESSAGE &&\n process.env.REACT_APP_BILLING_MESSAGE !== \"\"\n )\n this.setState({ showBillingMessage: true });\n // else if (iframekey === \"MSP_ENTERPRISE\" && (sessionStorage.userTypeId === \"1107\" || sessionStorage.userTypeId === \"1105\")) {\n // this.fetchTermsAndConditions();\n // }\n else if (user || sessionStorage.RPXLogin) {\n this.updatePageIframe();\n }\n }\n\n updatePageIframe = () => {\n let timeout = setInterval(() => {\n try {\n this.refs.submitform.submit();\n\n let iframeChecker = setInterval(() => {\n try {\n //do not remove this. this will throw a cross-origin exception when the body is loaded.\n //In the catch it will stop the setInterval and hide the loading spinner\n ReactDom.findDOMNode(this.refs.iframe).contentDocument.body;\n } catch (e) {\n clearInterval(iframeChecker);\n this.setState({ loading: false });\n }\n }, 2000);\n } catch (e) {}\n clearInterval(timeout);\n }, 1000);\n };\n\n handleSubmit() {\n // console.log(\"handleSubmit\");\n }\n\n handleClose = async () => {\n await this.setState({ showCustomModal: false });\n };\n\n CustomEditActionCell = (props) => {\n return (\n \n this.updateTimeSchedule(props)}>Edit\n \n );\n };\n\n CustomCheckboxCell = () => {\n return (\n \n
    \n \n
    \n \n );\n };\n\n handleSelect = (e) => {\n this.setState({ selected: e.selected });\n };\n\n /*********************************************************************\n * This function supplies a good title attribute for iframes and\n * helps us comply with accessibility standards.\n ********************************************************************/\n getiFrameTitle = (iframekey) => {\n switch (iframekey) {\n case \"MSP_GROUP\":\n return \"Group Features Page\";\n case \"MSP_SUBSCRIBER\":\n return \"Settings Feature Page\";\n case \"MSP_CC\":\n return \"Call Center Page\";\n case \"MSP_ENTERPRISE\":\n return \"Enterprise Page\";\n case \"MSP_SUPPORT\":\n return \"Support Page\";\n case \"MSP_TRAINING\":\n return \"Training Page\";\n case \"MSP_PAYMENT\":\n return \"Payments Page\";\n default:\n return \"MSP Page\";\n }\n };\n\n render() {\n // console.log(\"renderring MSP page\");\n // console.log('component props...')\n let iframekey = this.props.match.params.page;\n let actionUrl = config.baseUrl + \"IFrame.aspx?page=\" + this.props.match.params.page;\n let locationAccNumber = this.props.match.params.LocationAccountNumber;\n let tn = this.props.match.params.tn;\n if (tn) {\n iframekey += \"\" + tn;\n actionUrl = actionUrl + \"&tn=\" + tn;\n }\n if (iframekey !== \"MSP_ENTERPRISE\" && locationAccNumber) {\n actionUrl += \"&locationID=\" + locationAccNumber;\n }\n const VendorId = sessionStorage.getItem(\"vendorId\") || 0;\n iframekey += \"\" + VendorId;\n actionUrl = actionUrl + \"&VendorId=\" + VendorId;\n\n const { showBillingMessage } = this.state;\n\n if (showBillingMessage === false)\n return (\n
    \n
    \n {this.getEnterpriseSetting()}\n {this.getGroupSetting(locationAccNumber)}\n {this.state.loading ? (\n \n ) : (\n \"\"\n )}\n \n \n \n \n \n \n \n \n \n \n
    \n
    \n );\n else {\n let billingMessage = process.env.REACT_APP_BILLING_MESSAGE;\n return (\n
    \n
    \n

    {billingMessage}

    \n
    \n
    \n );\n }\n }\n\n getEnterpriseSetting = () => {\n ////// Commenting this out until devices are released\n if (this.props.match.params.page === \"MSP_ENTERPRISE\") {\n return (\n <>\n
    \n \n
    \n
    \n \n
    \n \n );\n }\n };\n\n getGroupSetting = (locationAccNum) => {\n //// Commenting this out until devices are released\n // console.log(this.props.match.params.page)\n // if(this.props.match.params.page !== \"MSP_GROUP\") return \"\";\n return \"\";\n // if (helper.showEditGroupFqdnBtn() || helper.showEditGroupVlanBtn()) {\n // return (\n //
    \n // \n // \n // \n // \n // \n // \n //
    \n // )\n // }\n };\n}\n\nconst mapStateToProps = (state) => {\n return {\n AccountNumber: state.reducer.AccountNumber,\n loggedIn: state.reducer.loggedIn,\n };\n};\n\nexport default connect(mapStateToProps)(IframeSettings);","export default __webpack_public_path__ + \"static/media/archive.e1c9e589.png\";","export default __webpack_public_path__ + \"static/media/call-center.bbcd1cc6.png\";","export default __webpack_public_path__ + \"static/media/collaborate.2325a994.png\";","export default __webpack_public_path__ + \"static/media/incontact.a11d61f9.png\";","export default __webpack_public_path__ + \"static/media/exchange.9e5177a6.png\";","export default __webpack_public_path__ + \"static/media/ivr.15513340.png\";","export default __webpack_public_path__ + \"static/media/receptionist.1e73d185.png\";","export default __webpack_public_path__ + \"static/media/skype-for-bus.39e8b445.png\";","export default __webpack_public_path__ + \"static/media/voice-analytics.bf3866b0.png\";","import React, { Component } from 'react';\r\nimport { BrowserRouter, Route, Link } from 'react-router-dom';\r\nimport * as settings from './../scripts/session';\r\nimport ReactDom from 'react-dom';\r\n\r\nimport archive from './../images/connect-buttons/archive.png';\r\nimport callCenter from './../images/connect-buttons/call-center.png';\r\nimport collaborate from './../images/connect-buttons/collaborate.png';\r\nimport exchange from './../images/connect-buttons/exchange.png';\r\nimport incontact from './../images/connect-buttons/incontact.png';\r\nimport ivr from './../images/connect-buttons/ivr.png';\r\nimport receptionist from './../images/connect-buttons/receptionist.png';\r\nimport skypeForBus from './../images/connect-buttons/skype-for-bus.png';\r\nimport voiceAnalytics from './../images/connect-buttons/voice-analytics.png';\r\n\r\nclass Support extends Component {\r\n \r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n\tcomponentDidMount() {\r\n \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Support

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

    Have questions about your service?

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

    Subscribing to Call Recording services?

    \r\n
    Click the link above to launch the Call Recording Administration and Management portal. The portal requires an administrative username and password provided by your service provider. Please contact your administrator or service provider to purchase and configure Call Recording services.
    \r\n \r\n
    \r\n
    Apps
    \r\n
    \r\n \"App\"\r\n \"App\"\r\n \"App\"\r\n \"App\"\r\n \"App\"\r\n \"App\"\r\n \"App\"\r\n \"App\"\r\n
    \r\n
    \r\n

    Description: Momentum Mobility is a Unified Communications (UC) application that offers Instant Messaging, Video Conferencing, Call Control, Click-to-Dial, Presence, and Messaging, as well as soft-phone/soft-client functionality. Momentum Mobility instant messaging is federated with Google Chat, so Momentum Mobility users can chat with Gmail/Google Chat users. Application software is supported for both Windows and Mac. Apple iPhone/iPad and Android versions of the software are available for mobile device download from iTunes and Google Play stores.

    \r\n

    System requirements for native desktop are as follows:

    \r\n
      \r\n
    • Operating system (OS): Mac OS 10.9 Mavericks, Mac OS 10.10 Yosemite, MAC OS 10.1.1 El Capitan, Windows 7, Windows 8/8.1, or Windows 10 (Classical view only).
    • \r\n
    • The installation footprint is approximately 125 megabytes (MB) on OS X and 215 MB on Windows.
    • \r\n
    • For voice calls, a sound card, speakers, and a microphone or a headset are required.
    • \r\n
    • For video calls, a web cam is required.
    • \r\n
    \r\n

    Minimum system requirements for respective operating systems must be fulfilled, with the following additions:

    \r\n
      \r\n
    • A minimum of 2 GB random access memory (RAM) is required.
    • \r\n
    • A minimum 1.5 GHz CPU is recommended. Dual-core CPU is recommended for video calls at a minimum.
    • \r\n
    • Open Graphics Library (OpenGL) 1.5 or higher is recommended.
    • \r\n
    • For HD video, the following is recommended:
    • \r\n
    • HD camera
    • \r\n
    • HD resolution support in display
    • \r\n
    • Quad Core x86 or equivalent at a minimum
    • \r\n
    \r\n

    System requirements for Mobile are as follows for Apple iOS and Android:

    \r\n

    Communicator Release 21.3.1 for iOS supports devices with iOS 7, iOS 8 or iOS 9 running on iPhone 4S and later. The client has been validated on the following reference devices:

    \r\n
      \r\n
    • iPhone 4S – iOS 7.1.2
    • \r\n
    • iPhone 5S – iOS 8.4.1
    • \r\n
    • iPhone 6 – iOS 9.1
    • \r\n
    • iPhone 6 plus – iOS 9.1
    • \r\n
    • iPhone 6s – iOS 9.1
    • \r\n
    • iPhone 6s Plus – iOS 9.1
    • \r\n
    \r\n

    Communicator Mobile Release 21.3.1 for iOS has not been validated on iPods although these devices match the specifications above and the application should work with the exception of the telephony functions.

    \r\n

    Communicator Mobile Release 21.3.1 for Android supports devices with Android OS 4 or later that conform to the following requirements:

    \r\n
      \r\n
    • Dual-core CPU (or higher)
    • \r\n
    • 1 GB RAM (or higher)
    • \r\n
    • ARMv7 instruction set
    • \r\n
    • Minimum screen resolution 320 x 480
    • \r\n
    • The client has been validated on the following reference devices:
    • \r\n
    • Samsung Galaxy S4(GT-I9505) – OS 4.4.2
    • \r\n
    • HTC One M8 – 4.4.4
    • \r\n
    • Motorola Moto G (XT1032) - OS 5.1
    • \r\n
    • Nexus 5X (LG) – OS 6
    • \r\n
    • Nexus 6P (Huawei) – OS 6
    • \r\n
    • Communicator Tablet (Android) Release 21.0.1 support devices with Android 4 OS or later.
    • \r\n
    \r\n

    Click here for configuration instructions

    \r\n\r\n
    Unity Desktop
    \r\n

    Description: Unity Desktop is a Microsoft Windows®-based Unified Communications (UC) application that combines call control, Instant Messaging, voice service configuration, click-to-dial from Outlook Contacts, directory integration and a busy lamp field to enhance the user experience. Featuring an intuitive icon based interface, Unity provides point and click call control within the familiar desktop environment. Unity improves collaboration by bringing users closer to each other and simplifying internal and external communication.

    \r\n

    System Requirements: The PC must be running Window 2000, XP SP2 or higher and must have the Microsoft .NET 1.1 framework installed. The PC must also have an internet connection with visibility of the voice network. CPU – single core 2Ghz. Ram – 2MB. GPU 256MB onboard RAM. Apple’s Mac OS is not supported at this time

    \r\n

    Configuration: Upon installation, you will be prompted to enter a server address, username, and password. Your username and password will be the username and password you use to login to this portal; however, you will append the domain “@mymtm.us\" to the username. See example and other settings below:

    \r\n

    \r\n Server address: app.mymtm.us
    \r\n Server port: 2208
    \r\n Username (example): 5555551234@mymtm.us or 5555551234X100@mymtm.us
    \r\n Password (example): *********\r\n

    \r\n

    Licensing: Unity Desktop comes with a 14-day trial license. You will need to contact your administrator or service provider to purchase a permanent license.

    \r\n

    Unity Desktop application download

    \r\n \r\n
    Call Control Toolbar
    \r\n

    Description: Call Control Toolbar provides access to calling services from a toolbar. This application enables users to place and accept telephone calls and change telephone settings from within Outlook, Internet Explorer and Firefox. This PC-based application is an available Add-on to Executive and Advanced seat types.

    \r\n

    Licensing: You will need to contact your administrator or service provider to purchase a license to use Call Control Toolbar.

    \r\n

    Call Control Toolbar download

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default Support;","import React, { Component } from 'react';\r\nimport * as settings from './../scripts/session';\r\nimport ReactDom from 'react-dom';\r\n\r\nclass Training extends Component {\r\n \r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n\tcomponentDidMount() {\r\n \r\n }\r\n\r\n render() {\r\n\t return (\r\n
    \r\n
    \r\n
    \r\n

    Training

    \r\n
    \r\n
    \r\n {/*
    \r\n Video Window Placeholder\r\n \r\n
    */}\r\n
    User Features
    \r\n
    \r\n \r\n
    \r\n Anywhere\r\n
    \r\n
    \r\n Barge-In\r\n
    \r\n
    \r\n Call Block\r\n
    \r\n
    \r\n Call Control\r\n
    \r\n \r\n
    \r\n Call Forwarding\r\n
    \r\n
    \r\n Call Waiting\r\n
    \r\n
    \r\n Do Not Disturb\r\n
    \r\n
    \r\n Find Me\r\n
    \r\n
    \r\n Hoteling\r\n
    \r\n
    \r\n Voicemail\r\n
    \r\n
    \r\n
    Unified Communications
    \r\n
    \r\n \r\n
    \r\n
    Group Features
    \r\n
    \r\n \r\n \r\n
    \r\n Auto Attendant\r\n
    \r\n
    \r\n Hunt Groups\r\n
    \r\n
    \r\n Time Schedules\r\n
    \r\n
    \r\n
    Devices
    \r\n
    \r\n
    \r\n Polycom VVX 300\r\n
    \r\n
    \r\n Polycom VVX 400\r\n
    \r\n \r\n
    \r\n
    Contact Center
    \r\n \r\n
    Collaboration Tools
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default Training;","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport format from 'string-format';\nimport * as apiCalls from '../requests/api_calls';\nimport moment from 'moment';\nimport { DatePicker } from '@progress/kendo-dateinputs-react-wrapper';\nimport * as settings from '../scripts/settings';\nimport * as config from '../requests/config';\nimport BSCallLogsTab from '../components/bs_call_logs_tab';\nimport SansayCallLogsTab from '../components/sansay_call_logs_tab';\nimport FaxCallLogsTab from '../components/fax_call_logs_tab';\n\nclass CallLogsAll extends Component {\n constructor(props) {\n super(props);\n this.state = {\n LocationAccountNumber: '',\n BSCallLogs: [],\n SansayCallLogs: [],\n FaxCallLogs: [],\n tab: 'bs',\n loading: false,\n call_category: (sessionStorage.usercl_call_category || \"1\"),\n call_type: (sessionStorage.usercl_call_type || \"1\"),\n status_type: (sessionStorage.usercl_status_type || \"1\"),\n date_type: (sessionStorage.usercl_date_type || \"1\"), // Today\n from_date: (sessionStorage.usercl_from_date ||moment(Date.now()).startOf(\"day\").format(\"YYYY-MM-DD\")),\n to_date: (sessionStorage.usercl_to_date || moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\")),\n PBXUserID: props.match.params.PBXUserID && props.match.params.PBXUserID !== '1' ? props.match.params.PBXUserID : '',\n ServiceNumber: props.match.params.ServiceNumber && props.match.params.ServiceNumber !== '1' ? props.match.params.ServiceNumber : ''\n }\n this.handleCallCategory = this.handleCallCategory.bind(this);\n this.handleCallType = this.handleCallType.bind(this);\n this.handleStatusType = this.handleStatusType.bind(this);\n this.handleDate = this.handleDate.bind(this);\n this.handleChangeFromDate = this.handleChangeFromDate.bind(this);\n this.handleChangeToDate = this.handleChangeToDate.bind(this);\n //this.changeTab = this.changeTab.bind(this);\n };\n\n componentDidMount() {\n this.fetchCallLogs(this.getApiUrl(), settings.noResultsMsg);\n }\n\n componentWillReceiveProps(nextProps) {\n this.setState({ ...{ BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], loading: true } });\n this.fetchCallLogs(this.getApiUrl(nextProps), settings.noResultsMsg);\n }\n\n UpdateStoreAndListings = () => {\n settings.setCLFilters(this.state.call_type, this.state.status_type, this.state.call_category, \n this.state.date_type, this.state.from_date, this.state.to_date, this.state.PBXUserID\n );\n this.fetchCallLogs(this.getApiUrl(this.props), settings.noResultsMsg);\n }\n\n getApiUrl() {\n let newParams = this.props.match.params;\n if (newParams.PBXUserID === '1')\n newParams.PBXUserID = '';\n if (newParams.ServiceNumber === '1')\n newParams.ServiceNumber = ''\n\n let finalToDate = this.state.to_date + '%2023:59:59';\n let newOptions = {\n call_type: this.state.call_type,\n status_type: this.state.status_type,\n call_category: this.state.call_category,\n from_date: this.state.from_date,\n to_date: finalToDate\n };\n\n let apiUrl = format('usr/GetCallLogs?LocationAccountNumber={LocationAccountNumber}&PBXUserID={PBXUserID}&ServiceNumber={ServiceNumber}', newParams);\n apiUrl += format('&CallType={call_type}&CallStatus={status_type}&CallCategory={call_category}&FromDate={from_date}&ToDate={to_date}', newOptions);\n return apiUrl;\n }\n\n fetchCallLogs = async (apiPath) => {\n let selectedTab = this.state.tab;\n await this.setState({ loading: true });\n apiCalls.fetchData(apiPath).then(async (data) => {\n if (data !== null && data !== undefined) {\n let { BSCallLogs, SansayCallLogs, FDRCallLogs } = data;\n let CallStatus = this.state.status_type;\n if (BSCallLogs.length === 0 && SansayCallLogs.length > 0)\n selectedTab = 'sansay'\n \n if (SansayCallLogs.length === 0 && BSCallLogs.length > 0) \n selectedTab = 'bs'\n \n if (BSCallLogs.length === 0 && SansayCallLogs.length === 0 && FDRCallLogs.length > 0) {\n selectedTab = 'fax';\n CallStatus = '1';\n }\n\n await this.setState({\n BSCallLogs: this.revisedData(BSCallLogs), \n SansayCallLogs: this.revisedData(SansayCallLogs,true), \n FaxCallLogs: this.revisedData(FDRCallLogs, false, true),\n loading: false, \n tab: selectedTab,\n status_type: CallStatus\n });\n } else this.setState({ BSCallLogs: [], SansayCallLogs: [], FaxCallLogs: [], loading: false });\n }).catch((msg) => console.error(msg));\n }\n\n revisedData = (data, isIPTrunking = false, isFax = false) => {\n let revisedData = [];\n if (isIPTrunking)\n revisedData = data.map((item, idx) => {\n item.Release_Time = new Date(item.Release_Time);\n item.Start_Time = new Date(item.Start_Time);\n return item;\n });\n else if (isFax)\n revisedData = data.map((item, idx) => {\n item.StartTime = new Date(item.StartTime);\n return item;\n });\n else \n revisedData = data.map((item, idx) => {\n item.Date = new Date(item.Date);\n return item;\n });\n\n return revisedData;\n }\n\n handleChangeFromDate = (event) => {\n let from = moment(event.sender._oldText, \"M/D/YYYY\");\n if (from.isValid()) {\n this.setState({ ...{ from_date: from.format(\"YYYY-MM-DD\") } }, () => {\n let to = moment(this.state.to_date);\n if (to.isValid() && to.isSameOrAfter(from)) {\n this.setState({ ...{ SansayCallLogs: [], BSCallLogs: [], FaxCallLogs: [], loading: true } }, this.UpdateStoreAndListings);\n }\n });\n }\n }\n\n handleChangeToDate = (event) => {\n let to = moment(event.sender._oldText, \"M/D/YYYY\");\n if (to.isValid()) {\n this.setState({ ...{ to_date: to.format(\"YYYY-MM-DD\") } }, () => {\n let from = moment(this.state.from_date);\n if (from.isValid() && from.isSameOrBefore(to)) {\n this.setState({ ...{ SansayCallLogs: [], BSCallLogs: [], FaxCallLogs: [], loading: true } }, this.UpdateStoreAndListings);\n }\n });\n }\n }\n\n handleDate = (event) => {\n switch (event.target.value) {\n case \"1\":\n this.setState({\n ...{\n SansayCallLogs: [], BSCallLogs: [], FaxCallLogs: [], date_type: event.target.value, from_date: moment(Date.now()).startOf(\"day\").format(\"YYYY-MM-DD\"),\n to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\"), loading: true\n }\n }, this.UpdateStoreAndListings);\n return;\n case \"2\":\n this.setState({\n ...{\n SansayCallLogs: [], BSCallLogs: [], FaxCallLogs: [], date_type: event.target.value, from_date: moment(Date.now()).subtract(1, \"days\").startOf(\"day\").format(\"YYYY-MM-DD\"),\n to_date: moment(Date.now()).endOf(\"day\").subtract(1, \"days\").format(\"YYYY-MM-DD\"), loading: true\n }\n }, this.UpdateStoreAndListings);\n return;\n case \"3\":\n this.setState({\n ...{\n SansayCallLogs: [], BSCallLogs: [], FaxCallLogs: [], date_type: event.target.value, from_date: moment(Date.now()).subtract(7, \"days\").startOf(\"day\").format(\"YYYY-MM-DD\"),\n to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\"), loading: true\n }\n }, this.UpdateStoreAndListings);\n return;\n case \"4\":\n this.setState({\n ...{\n SansayCallLogs: [], BSCallLogs: [], FaxCallLogs: [], date_type: event.target.value, from_date: moment(Date.now()).subtract(30, \"days\").startOf(\"day\").format(\"YYYY-MM-DD\"),\n to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\"), loading: true\n }\n }, this.UpdateStoreAndListings);\n return;\n case \"5\":\n this.setState({\n ...{\n SansayCallLogs: [], BSCallLogs: [], FaxCallLogs: [], date_type: event.target.value, from_date: moment(Date.now()).subtract(90, \"days\").startOf(\"day\").format(\"YYYY-MM-DD\"),\n to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\"), loading: true\n }\n }, this.UpdateStoreAndListings);\n return;\n case \"6\":\n this.setState({ ...{ SansayCallLogs: [], BSCallLogs: [], FaxCallLogs: [], date_type: event.target.value, from_date: \"From\", to_date: \"To\" } });\n settings.setCLFilters(this.state.call_type, this.state.status_type, this.state.call_category, \n this.state.date_type, this.state.from_date, this.state.to_date, this.state.PBXUserID\n );\n return;\n }\n }\n\n handleCallCategory = (event) => {\n this.setState({ ...{ SansayCallLogs: [], BSCallLogs: [], FaxCallLogs: [], call_category: event.target.value, loading: true } }, this.UpdateStoreAndListings);\n }\n\n handleCallType = (event) => {\n this.setState({ ...{ SansayCallLogs: [], BSCallLogs: [], FaxCallLogs: [], call_type: event.target.value, loading: true } }, this.UpdateStoreAndListings);\n }\n\n handleStatusType = (event) => {\n this.setState({ ...{ SansayCallLogs: [], BSCallLogs: [], FaxCallLogs: [], status_type: event.target.value, loading: true } }, this.UpdateStoreAndListings);\n }\n\n exportSansayBtn = () => {\n if (this.state.tab === 'sansay' && this.state.SansayCallLogs.length > 0) {\n return (\n
    \n
    \n \n \n \n \n \n \n \n \n \n
    \n \n this.exportCallLogs()} >Export Call Logs\n
    \n )\n } else return null;\n }\n\n exportBsBtn = () => {\n if (this.state.tab === 'bs' && this.state.BSCallLogs.length > 0) {\n return (\n
    \n
    \n \n \n \n \n \n \n \n \n \n
    \n \n this.exportCallLogs()} >Export Call Logs\n
    \n )\n } else return null;\n }\n\n exportFaxBtn = () => {\n if (this.state.tab === 'fax' && this.state.FaxCallLogs.length > 0) {\n return (\n
    \n
    \n \n \n \n \n \n \n \n \n \n
    \n \n this.exportCallLogs()} >Export Call Logs\n
    \n )\n } else return null;\n }\n\n exportCallLogs = () => {\n this.refs.downloadCsv.submit();\n this.refs.exportBtn.text = 'Downloading...';\n setTimeout(() => {\n this.refs.exportBtn.text = 'Export Call Logs';\n }, 2000);\n }\n\n extension = () => {\n let ext = this.props.Extension;\n if (ext) {\n return ({ext})\n } else return null;\n }\n\n callLogFilter = (htmlSelect) => {\n return (\n
    \n {htmlSelect}\n
    \n )\n }\n\n tabDisplay = () => {\n if ((this.state.BSCallLogs && this.state.BSCallLogs.length > 0) || (this.state.SansayCallLogs && this.state.SansayCallLogs.length > 0) ||\n (this.state.FaxCallLogs && this.state.FaxCallLogs.length > 0)) {\n return (\n
    \n 0 ? 'inline-block' : 'none' }}\n className={this.state.tab === \"bs\" ? \"active tab\" : \"tab\"} data-act=\"bs\" onClick={this.changeTab}>Cloud Voice\n 0 ? 'inline-block' : 'none' }}\n className={this.state.tab === \"sansay\" ? \"active tab\" : \"tab\"} data-act=\"sansay\" onClick={this.changeTab}>IP Trunking\n 0 ? 'inline-block' : 'none' }}\n className={this.state.tab === \"fax\" ? \"active tab\" : \"tab\"} data-act=\"fax\" onClick={this.changeTab}>Fax\n
    \n )\n } else return;\n }\n\n changeTab = (event) => {\n if (event.target.dataset.act !== this.state.tab) {\n this.setState({ tab: event.target.dataset.act });\n }\n }\n\n getTab() {\n let { tab, BSCallLogs, SansayCallLogs, FaxCallLogs, loading } = this.state;\n switch (tab) {\n case 'bs':\n return (\n \n )\n case 'sansay':\n return (\n \n )\n case 'fax':\n return (\n \n )\n default:\n console.log('Sorry there isn\\'t a tab named ' + tab + '.');\n }\n }\n\n render() {\n return (\n
    \n
    \n
    \n
    \n

    \n Call Logs\n {this.props.ServiceNumber} {this.extension()}\n

    \n
    \n
    \n {this.exportSansayBtn()}\n {this.exportBsBtn()}\n {this.exportFaxBtn()}\n
    \n
    \n {this.tabDisplay()}\n
    \n {this.callLogFilter()}\n {this.callLogFilter()}\n {this.callLogFilter()}\n {\n (this.state.date_type === \"6\") ?\n (
    \n
    \n \n
    \n
    \n \n
    \n
    )\n : \"\"\n }\n
    \n
    \n
    \n
    \n {this.getTab()}\n
    \n
    \n
    \n
    \n
    \n );\n }\n};\n\nconst mapStateToProps = (state) => {\n return {\n ServiceNumber: state.ServiceNumber,\n Extension: state.Extension\n }\n}\n\nexport default connect(mapStateToProps)(CallLogsAll);","import React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport Voicemail from './voicemail';\r\nimport VoicemailSettingsButton from './../voicemailSettingsButton'; //move file and change import\r\nimport ManageGreetingsButton from './../manageGreetingsButton';\r\nimport ChangePinModal from './../modals/changePinModal';\r\nimport VoicemailBlockModal from './../modals/voicemailBlockModal';\r\nimport VoicemailDeleteModal from './../modals/voicemailDeleteModal';\r\nimport PinResetButton from './components/pinResetButton';\r\nimport MessageDepositButton from './modals/messageDepositButton'\r\nimport PinResetModal from './modals/pinResetModal';\r\nimport { DataLoadingSpinner } from './../../components/spinners';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\nimport LongSwitch from './../../components/long_switch';\r\nimport SuperLink from './../../components/super_link';\r\nimport { fetchData, postData, postDataWithCustomHeader, post } from './../../requests/api_calls';\r\nimport * as settings from './../../scripts/session';\r\nimport * as config from './../../requests/config'\r\nimport format from 'string-format';\r\nimport { noResultsMsg } from './../../scripts/settings';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst VMsConfirmationMsg = \"Are you sure you want to block all calls and voicemails from these numbers?\";\r\nconst VMConfirmationMsg = \"Are you sure you want to block all calls and voicemails from this number?\";\r\n\r\nclass VoiceMailAll extends Component {\r\n\r\n constructor() {\r\n super();\r\n\r\n this.state = this.initialState();\r\n\r\n this.handleHideSendModal = this.handleHideSendModal.bind(this);\r\n this.handleSend = this.handleSend.bind(this);\r\n this.handleChangeEmailText = this.handleChangeEmailText.bind(this);\r\n\r\n }\r\n\r\n initialState = () => {\r\n return {\r\n enable: false,\r\n voicemail_switch: {\r\n visible: false,\r\n isActive: true,\r\n show_success: false,\r\n show_error: false,\r\n loading: false,\r\n vm_settings: null\r\n },\r\n voicemails: [],\r\n voicemail_count: 0,\r\n voicemail_fetch_error: \"\",\r\n loading: true,\r\n activevm: {\r\n account_number: \"\",\r\n directory_number: \"\",\r\n filename: \"\"\r\n },\r\n sendModal: {\r\n show: false,\r\n emailText: \"\",\r\n emailTextValid: true,\r\n errorMessage: \"\",\r\n loading: false,\r\n },\r\n delete: {\r\n voicemails: [],\r\n error_message: [],\r\n loading: false\r\n },\r\n block: {\r\n voicemails: [],\r\n error_message: [],\r\n show_dialog: false,\r\n show_success: false,\r\n loading: false,\r\n save_result: []\r\n }\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.enableUserMessaging(this.props);\r\n }\r\n\r\n enableUserMessaging = (props) => {\r\n this.setState(this.initialState());\r\n let basicData = { ServiceNumber: this.props.ServiceNumber, PBXUserID: this.props.PBXUserID };\r\n let apiUrl = \"\";\r\n if (this.props.ServiceNumber && this.props.PBXUserID)\r\n apiUrl = format('usr/AssignedServices?ServiceNumber={ServiceNumber}&PBXUserID={PBXUserID}', basicData);\r\n else if (this.props.ServiceNumber)\r\n apiUrl = format('usr/AssignedServices?ServiceNumber={ServiceNumber}', basicData);\r\n else if (this.props.PBXUserID)\r\n apiUrl = format('usr/AssignedServices?PBXUserID={PBXUserID}', basicData);\r\n\r\n // let state = {...this.state};\r\n // state.enable = true;\r\n // state.loading = false;\r\n // this.loadSettings(props);\r\n fetchData(apiUrl).then((data) => {\r\n //console.log('--- ARRAY WITH 52 OBJECTS (line 389) ---', data);\r\n\r\n let state = { ...this.state };\r\n state.enable = false;\r\n state.loading = false;\r\n if (data) {\r\n //console.log(\"user/AssignedServices\");\r\n //console.log(data);\r\n let filterService = data.filter((item) => { return item.ServiceName === \"VoiceMessagingUser\" && item.IsActiveSpecified })\r\n //console.log(filterService);\r\n if (filterService.length > 0) {\r\n let service = filterService[0];\r\n state.enable = true;\r\n state.loading = true;\r\n // if(service.IsActive){\r\n // state.enable = true;\r\n // state.loading = true;\r\n // console.log(\"enableUserMessaging.props\")\r\n // console.log(props);\r\n // this.loadSettings(props);\r\n // }\r\n this.loadSettings(props);\r\n }\r\n }\r\n this.setState(state);\r\n }).catch((message) => {\r\n let state = { ...this.state };\r\n state.enable = false;\r\n state.loading = false;\r\n this.setState(state);\r\n });\r\n }\r\n\r\n loadSettings = (props) => {\r\n let vmOnOffApi = format('usr/VMSettings?ServiceNumber={ServiceNumber}&PBXUserID={PBXUserID}&AccountNumber={AccountNumber}&DirectoryNumber={DirectoryNumber}', props);\r\n fetchData(vmOnOffApi).then((data) => {\r\n let state = { ...this.state };\r\n state.voicemail_switch.visible = true;\r\n state.voicemail_switch.vm_settings = data;\r\n if (data !== null) {\r\n // console.log(\"loadSettings\")\r\n // console.log(data);\r\n state.voicemail_switch.isActive = data.isActive;\r\n state.voicemails = [];\r\n state.voicemail_count = 0;\r\n if (state.voicemail_switch.isActive) {\r\n state.loading = true;\r\n let apiUrl = format('vm/VMList?AccountNumber={AccountNumber}&DirectoryNumber={DirectoryNumber}', props);\r\n //console.log('--- PERSONAL ACCOUNT INFO ---', data);\r\n this.fetchVoiceMails(apiUrl);\r\n }\r\n else {\r\n state.loading = false;\r\n }\r\n }\r\n else {\r\n state.voicemails = [];\r\n state.voicemail_count = 0;\r\n\r\n state.loading = true;\r\n let apiUrl = format('vm/VMList?AccountNumber={AccountNumber}&DirectoryNumber={DirectoryNumber}', props);\r\n this.fetchVoiceMails(apiUrl);\r\n }\r\n\r\n this.setState(state);\r\n }).catch((message) => {\r\n let state = { ...this.state };\r\n state.voicemail_switch.show_error = true;\r\n this.setState(state);\r\n });\r\n }\r\n\r\n fetchVoiceMails = (apiPath, errorMsg) => {\r\n fetchData(apiPath).then((data) => {\r\n //console.log('--- LIST OF VOICEMAILS ---', data);\r\n\r\n\r\n if (data) {\r\n this.loadData(data);\r\n }\r\n else {\r\n let state = { ...this.state };\r\n state.voicemails = [];\r\n state.voicemail_count = 0;\r\n state.loading = 0;\r\n this.setState(state);\r\n }\r\n }).catch((message) => {\r\n let state = { ...this.state };\r\n state.voicemails = [];\r\n state.voicemail_count = 0;\r\n state.loading = 0;\r\n state.voicemail_fetch_error = message.toString()\r\n });\r\n }\r\n\r\n loadData = (data) => {\r\n // individual VMs, removed the limit of 5\r\n let state = { ...this.state };\r\n\r\n let voicemails_data = this.sortedByDate(data);\r\n // if (data.length > 5) {\r\n // voicemails_data = data.slice(0, 5);\r\n // }\r\n voicemails_data = voicemails_data.map((vm, index) => {\r\n vm.selected = false;\r\n //console.log(vm);\r\n return vm;\r\n });\r\n\r\n state.voicemails = voicemails_data;\r\n state.voicemail_count = data.length;\r\n state.loading = false;\r\n\r\n this.setState(state);\r\n }\r\n\r\n sortedByDate = (data) => {\r\n data.sort((a, b) => new Date(b.DateTimeLocal) - new Date(a.DateTimeLocal));\r\n return data;\r\n }\r\n\r\n handleDeleteModalShow() {\r\n this.setState({ ...{ delete: { voicemails: [], error_message: [], show_dialog: true } } });\r\n }\r\n\r\n handleDeleteVM() {\r\n let selected_voicemails = this.state.voicemails.filter((vmLocal, index) => {\r\n return vmLocal.selected;\r\n });\r\n\r\n this.setState({ ...{ delete: { voicemails: selected_voicemails, error_message: [] } } });\r\n selected_voicemails.forEach(element => {\r\n let body = {\r\n AccountNumber: element.AccountNumber,\r\n DirectoryNumber: element.DirectoryNumber,\r\n FileName: element.Location,\r\n access_token: settings.storedAccessToken(),\r\n x_policy: settings.storedXPolicy(),\r\n };\r\n let headers = {\r\n 'Content-Type': 'application/x-www-form-urlencoded', \r\n 'Accept': 'text/html'\r\n }\r\n postDataWithCustomHeader(\"vm/VMDelete\", body, headers)\r\n .then(response => {\r\n\r\n let newdeletedvms = this.state.delete.voicemails.filter((vmLocal, index) => {\r\n return vmLocal.Location != element.Location;\r\n });\r\n\r\n if (response.ok) {\r\n let newvoicemails = this.state.voicemails.filter((vmLocal, index) => {\r\n return vmLocal.Location != element.Location;\r\n });\r\n this.setState({ ...{ voicemails: newvoicemails, voicemail_count: this.state.voicemail_count - 1, delete: { voicemails: newdeletedvms } } });\r\n }\r\n else {\r\n let error_message = this.state.delete.error_message;\r\n error_message.push(response.message);\r\n this.setState({ ...{ delete: { error_message: error_message, voicemails: newdeletedvms } } });\r\n }\r\n\r\n })\r\n .catch((message) => {\r\n let newdeletedvms = this.state.delete.voicemails.filter((vmLocal, index) => {\r\n return vmLocal.Location != element.Location;\r\n });\r\n\r\n let error_message = this.state.delete.error_message;\r\n error_message.push(message.toString());\r\n this.setState({ ...{ delete: { error_message: error_message, voicemails: newdeletedvms } } });\r\n });\r\n });\r\n }\r\n\r\n handleBlockModalShow() {\r\n this.setState({ ...{ block: { voicemails: [], error_message: [], show_dialog: true, show_success: false, loading: false, save_result: [] } } });\r\n }\r\n\r\n handleBlockModalClose() {\r\n let state = { ...this.state };\r\n state.voicemails.forEach((vmLocal, index) => {\r\n vmLocal.selected = false;\r\n });\r\n state.block.voicemails = [];\r\n state.block.error_message = [];\r\n state.block.show_dialog = false;\r\n state.block.show_success = false;\r\n state.block.loading = false;\r\n state.block.save_result = [];\r\n this.setState(state);\r\n }\r\n\r\n handleBlockVM() {\r\n let state = { ...this.state };\r\n let selected_block_numbers = state.voicemails.filter((vmLocal, index) => {\r\n return vmLocal.selected;\r\n }).map(e => e.FromPhone);\r\n state.block.voicemails = selected_block_numbers;\r\n state.block.error_message = [];\r\n state.block.loading = true;\r\n this.setState(state);\r\n\r\n let body = {\r\n BlockNumbers: selected_block_numbers,\r\n AccountNumber: this.props.AccountNumber,\r\n DirectoryNumber: this.props.DirectoryNumber,\r\n PBXUserID: this.props.PBXUserID,\r\n };\r\n\r\n body = JSON.stringify(body);\r\n let header = {\r\n 'Authorization': 'Bearer ' + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy(),\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n post(\"vm/VMBlock\", \"POST\", body, header)\r\n .then(response => {\r\n let state = { ...this.state };\r\n state.block.loading = false;\r\n state.block.show_success = response.ok;\r\n if (!response.ok)\r\n state.block.error_message.push(\"Failed to save\");\r\n else {\r\n state.block.save_result = JSON.parse(response.message);\r\n }\r\n this.setState(state);\r\n })\r\n .catch((message) => {\r\n let state = { ...this.state };\r\n state.block.loading = false;\r\n state.block.error_message.push(\"Failed to save\");\r\n state.block.show_success = false;\r\n this.setState(state);\r\n });\r\n\r\n }\r\n\r\n handleChangeEmailText(event) {\r\n let sendModal = this.state.sendModal;\r\n sendModal.emailText = event.target.value;\r\n sendModal.errorMessage = \"\";\r\n sendModal.emailTextValid = true;\r\n this.setState({ ...{ sendModal: sendModal } });\r\n }\r\n\r\n validateEmail() {\r\n return this.state.sendModal.emailText.match(/^([\\w.%+-]+)@([\\w-]+\\.)+([\\w]{2,})$/i);\r\n }\r\n\r\n handleSend() {\r\n let sendModal = this.state.sendModal;\r\n\r\n if (!this.validateEmail()) {\r\n sendModal.emailTextValid = false;\r\n this.setState({ ...{ sendModal: sendModal } });\r\n return;\r\n }\r\n\r\n sendModal.emailTextValid = true;\r\n sendModal.loading = true;\r\n sendModal.errorMessage = null;\r\n this.setState({ ...{ sendModal: sendModal } });\r\n\r\n let body = {\r\n AccountNumber: this.state.activevm.account_number,\r\n DirectoryNumber: this.state.activevm.directory_number,\r\n FileName: this.state.activevm.filename,\r\n ToEmail: this.state.sendModal.emailText,\r\n access_token: settings.storedAccessToken(),\r\n x_policy: settings.storedXPolicy(),\r\n };\r\n\r\n let headers = {\r\n 'Content-Type': 'application/x-www-form-urlencoded', \r\n 'Accept': 'text/html'\r\n }\r\n\r\n postDataWithCustomHeader(\"vm/VMForward\", body, headers)\r\n .then(response => {\r\n if (response.ok) {\r\n this.setState({ ...{ sendModal: { show: false, emailText: \"\", errorMessage: \"\" } } });\r\n }\r\n else {\r\n this.setState({ ...{ sendModal: { show: true, emailText: this.state.sendModal.emailText, errorMessage: \"Error: Please contact administrator\" } } });\r\n }\r\n }\r\n ).catch((message) => {\r\n this.setState({ ...{ sendModal: { show: true, emailText: this.state.sendModal.emailText, errorMessage: \"Error: Please contact administrator\" } } });\r\n\r\n });\r\n }\r\n\r\n handleHideSendModal() {\r\n\r\n let sendModal = this.state.sendModal;\r\n sendModal.show = false;\r\n sendModal.emailText = \"\";\r\n this.setState({ ...{ sendModal: sendModal } });\r\n }\r\n\r\n handledSelectChanged = (vm, event) => {\r\n let voicemails_data = this.state.voicemails.map((vmLocal, index) => {\r\n if (vmLocal.Location === vm.Location) {\r\n vmLocal.selected = !vmLocal.selected;\r\n }\r\n return vmLocal;\r\n });\r\n let state = { ...this.state };\r\n state.voicemails = voicemails_data;\r\n console.log(\"handledSelectChanged\");\r\n console.log(state);\r\n this.setState(state);\r\n }\r\n\r\n handleShowSendModal = (vm, event) => {\r\n let activevm =\r\n {\r\n account_number: vm.AccountNumber,\r\n directory_number: vm.DirectoryNumber,\r\n filename: vm.Location\r\n };\r\n let sendModal = this.state.sendModal;\r\n sendModal.show = true;\r\n sendModal.emailText = \"\";\r\n sendModal.emailTextValid = true;\r\n sendModal.errorMessage = \"\";\r\n this.setState({ ...{ sendModal: sendModal, activevm: activevm } });\r\n }\r\n\r\n handleDownload = (vm, event) => {\r\n let activevm = {\r\n account_number: vm.AccountNumber,\r\n directory_number: vm.DirectoryNumber,\r\n filename: vm.Location\r\n };\r\n this.setState({ ...{ activevm: activevm } });\r\n\r\n setTimeout(() => {\r\n this.refs.downloadSubmit.submit();\r\n }, 500);\r\n }\r\n\r\n handlePlay = (vm, event) => {\r\n let activevm = {\r\n account_number: vm.AccountNumber,\r\n directory_number: vm.DirectoryNumber,\r\n filename: vm.Location\r\n };\r\n this.setState({ ...{ activevm: activevm } });\r\n\r\n setTimeout(() => {\r\n this.refs.playSubmit.submit();\r\n }, 500);\r\n }\r\n\r\n onHandleVoicemail = (event) => {\r\n let state = { ...this.state };\r\n state.voicemail_switch.isActive = event.target.checked;\r\n state.voicemail_switch.loading = true;\r\n state.voicemail_switch.show_success = false;\r\n state.voicemail_switch.show_error = false;\r\n\r\n state.voicemail_switch.vm_settings.isActive = event.target.checked\r\n this.setState(state);\r\n\r\n let body = JSON.stringify(state.voicemail_switch.vm_settings);\r\n let headers = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n post(\"usr/VMSettings\", \"POST\", body)\r\n .then(response => {\r\n let state = { ...state };\r\n state.voicemail_switch.loading = false;\r\n if (response.ok) {\r\n state.voicemail_switch.show_success = true;\r\n state.voicemail_switch.show_error = false;\r\n state.voicemails = [];\r\n state.voicemail_count = 0;\r\n\r\n if (state.voicemail_switch.isActive) {\r\n state.loading = true;\r\n let apiUrl = format('vm/VMList?AccountNumber={AccountNumber}&DirectoryNumber={DirectoryNumber}', this.props);\r\n this.fetchVoiceMails(apiUrl);\r\n }\r\n else {\r\n state.loading = false;\r\n }\r\n }\r\n else {\r\n state.voicemail_switch.show_success = true;\r\n state.voicemail_switch.show_error = false;\r\n }\r\n this.setState(state);\r\n })\r\n .catch((message) => {\r\n let state = { ...this.state };\r\n state.voicemail_switch.loading = false;\r\n state.voicemail_switch.show_success = true;\r\n state.voicemail_switch.show_error = false;\r\n this.setState(state);\r\n });\r\n }\r\n\r\n handleVMSettingChange = (vmSetting) => {\r\n let state = { ...this.state };\r\n state.voicemail_switch.isActive = vmSetting.isActive;\r\n this.setState(state);\r\n }\r\n\r\n errorMessage() {\r\n if (!this.state.sendModal.loading && this.state.sendModal.errorMessage && this.state.sendModal.errorMessage !== \"\")\r\n return
    {this.state.sendModal.errorMessage}
    ;\r\n\r\n if (!this.state.sendModal.emailTextValid)\r\n return
    Invalid Email
    ;\r\n\r\n return \"\";\r\n }\r\n\r\n sendModalLoading() {\r\n if (this.state.sendModal.loading)\r\n return ;\r\n\r\n return \"\";\r\n }\r\n\r\n getVoiceMails() {\r\n let voicemails_data = this.state.voicemails;\r\n let voicemails = voicemails_data.map((vm, index) => {\r\n return (\r\n \r\n )\r\n });\r\n\r\n if (voicemails.length < 5) {\r\n let vmLength = 5 - voicemails.length;\r\n voicemails.push();\r\n }\r\n\r\n return voicemails;\r\n }\r\n\r\n getBlockAndDeleteRow() {\r\n let selectedVMcount = this.state.voicemails.filter((vm, index) => { return vm.selected }).length;\r\n if (selectedVMcount > 0) {\r\n let vm_delete_error_body = null;\r\n if (this.state.delete.error_message && this.state.delete.error_message.length && this.state.delete.error_message.length > 0)\r\n this.state.delete.error_message.map((message, index) => {\r\n return
    {message}
    \r\n });\r\n\r\n // let vm_block_error_body = \r\n // (
    \r\n // {\r\n // this.state.block.error_message.map((message, index)=>{ \r\n // return
    {message}
    \r\n // })\r\n // }\r\n //
    );\r\n\r\n // let vm_block_error_body = this.state.block.error_message.map((message, index)=>{ \r\n // return
    {message}
    \r\n // });\r\n\r\n // Decide which confirmation message will be displayed on the block calls modal\r\n let confirmationMsg = selectedVMcount > 1 ? VMsConfirmationMsg : VMConfirmationMsg;\r\n\r\n return (\r\n \r\n 0}\r\n saveResult={this.state.block.save_result}\r\n loading={this.state.block.loading}\r\n show={this.state.block.show_dialog}\r\n showSuccess={this.state.block.show_success}\r\n handleYes={this.handleBlockVM.bind(this)}\r\n handleShow={this.handleBlockModalShow.bind(this)}\r\n handleClose={this.handleBlockModalClose.bind(this)}\r\n /> |\r\n 0}\r\n handleYes={this.handleDeleteVM.bind(this)}\r\n handleShow={this.handleDeleteModalShow.bind(this)} />\r\n \r\n );\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n getFetchVoiceMailError() {\r\n if (this.state.voicemail_fetch_error.length > 0)\r\n return (\r\n (\r\n \r\n {this.state.voicemail_fetch_error}\r\n \r\n )\r\n )\r\n\r\n }\r\n\r\n getVoiceMailOnOff() {\r\n\r\n let vm_switch = this.state.voicemail_switch;\r\n let showSuccess = \"\";\r\n if (!vm_switch.vm_settings) {\r\n return (
    )\r\n }\r\n\r\n if (vm_switch.show_success) {\r\n showSuccess = \r\n
    Success!
    \r\n \r\n }\r\n\r\n let showError = \"\";\r\n if (vm_switch.show_error) {\r\n showError =
    The switch failed! Please try again.
    \r\n }\r\n\r\n let showLoading = \"\"\r\n if (vm_switch.loading) {\r\n showLoading =
    \r\n \r\n
    ;\r\n }\r\n return (\r\n
    \r\n
    \r\n \r\n {showSuccess}\r\n {showError}\r\n {showLoading}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n getVoiceMailAction = () => {\r\n if (!this.state.enable)\r\n return \"\";\r\n return (
    \r\n \r\n \r\n {/* */}\r\n \r\n \r\n
    );\r\n }\r\n\r\n voicemailsTable = () => {\r\n if (this.state.voicemail_switch.visible && !this.state.voicemail_switch.isActive)\r\n return (
    );\r\n\r\n if (this.state.voicemails.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.getBlockAndDeleteRow()}\r\n {this.getVoiceMails()}\r\n {this.getFetchVoiceMailError()}\r\n \r\n
    PlayPhoneDate
    \r\n )\r\n }\r\n else if (!this.state.enable) {\r\n return (\r\n

    \r\n Voicemail is a not a feature of this service\r\n

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

    \r\n No recent voicemails\r\n

    \r\n )\r\n }\r\n }\r\n\r\n vmTable() {\r\n return (\r\n
    Table Here
    \r\n )\r\n }\r\n\r\n render() {\r\n let playUrl = config.baseApiUrl + \"vm/VMPlay\";\r\n let saveUrl = config.baseApiUrl + \"vm/VMSave\";\r\n if (this.state.loading) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Voicemail

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n let voiceCount = \"\"\r\n if (this.state.enable)\r\n voiceCount = this.state.voicemail_count;\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Voicemail {voiceCount}

    \r\n
    \r\n
    \r\n {this.getVoiceMailOnOff()}\r\n
    \r\n
    \r\n {this.voicemailsTable()}\r\n \r\n {/*
    \r\n \r\n
    */}\r\n
    \r\n
    \r\n {this.getVoiceMailAction()}\r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n Send Voicemail \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n {this.errorMessage()}\r\n
    \r\n
    \r\n \r\n
    \r\n {this.sendModalLoading()}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n AccountNumber: state.reducer.AccountNumber,\r\n DirectoryNumber: state.reducer.DirectoryNumber,\r\n ServiceNumber: state.reducer.ServiceNumber,\r\n PBXUserID: state.reducer.PBXUserID\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(VoiceMailAll);","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\n\r\nclass ChangePinModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n \r\n Change Pin\r\n\r\n \r\n \r\n What would you like your voicemail pin to be?\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default ChangePinModal;","import React, { Component } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\nimport PinResetModal from './../modals/pinResetModal';\n\nclass PinResetButton extends Component {\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n this.handleShow = this.handleShow.bind(this);\n this.handleClose = this.handleClose.bind(this);\n\n this.state = { showModal: false };\n }\n\n handleClose() {\n this.setState({ showModal: false });\n }\n\n handleShow() {\n this.setState({ showModal: true });\n }\n\n\tcomponentDidMount() {\t\t\n\t}\n\n render() {\n return (\n \n Reset Voicemail Pin\n \n \n \n Reset Voicemail Pin\n \n \n \n \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n};\n\nexport default PinResetButton;\n","import React, { Component } from 'react';\r\nimport * as config from './../../requests/config';\r\nimport { DataLoadingSpinner } from './../../components/spinners';\r\n\r\nconst callChartParams = \"?CallType=All_CALLS&CallView=CALLS&CallStatus=ALL_CALLS&FromDate=2017-12-11&ToDate=2018-03-09\";\r\nconst vmListParams = '?AccountNumber=3100001237-01&DirectoryNumber=6785726904AA4500';\r\nconst userAppsParams = '?ServiceNumber=2057219499&PBXUserID=0'; // UserID=0 for logged in user\r\nconst myServicesParams = '?UserId=0'; // UserID=0 for logged in user\r\n// const userProfileParams = '?ServiceNumber=77030700877&PBXUserID='\r\n\r\nconst apiMethods = [\r\n ['2.1', 'admin/UserServices', 'User Services'],\r\n ['2.2', 'admin/FavoriteServices', 'Favorite Services'],\r\n ['2.5', 'admin/LocationStat', 'Location Stats'],\r\n ['2.6', 'admin/DeviceStat', 'Device Stats'],\r\n ['2.7', 'admin/QuickView', 'Quick View'],\r\n ['2.8', 'admin/Locations', 'Locations'],\r\n ['2.9', 'admin/BillingStat', 'Billing Stats'],\r\n ['2.10', 'admin/ServiceNumbers', 'Service Numbers'],\r\n ['2.11', 'admin/CallActivity', 'Call Activity | On Page Load', callChartParams],\r\n ['2.12', 'admin/Services', 'Services'],\r\n ['2.22', 'usr/MyServices', 'My Services'],\r\n ['2.23', 'usr/UserApplications', 'User Applications', userAppsParams],\r\n ['2.24', 'admin/HasTrunking', 'Has Trunking'],\r\n ['2.25', 'admin/SipTrunking', 'SIP Trunking'],\r\n\r\n // Not yet ready\r\n // ['2.13', 'vm/VMList', 'VM List', vmListParams],\r\n]\r\n\r\nclass ApiStatuses extends Component {\r\n\r\n constructor() {\r\n super();\r\n this.state = {};\r\n this.apiRequest = this.apiRequest.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n apiMethods.forEach((method) => this.apiRequest(...method) );\r\n }\r\n\r\n apiRequest = async (testId, apiPath, name, params='') => {\r\n let url = config.baseApiUrl + apiPath + params;\r\n console.log('url: ' + url);\r\n let response = await fetch(url, {headers: config.headers() });\r\n this.setState({\r\n [testId + '-status']: response.status,\r\n [testId + '-statusText']: response.statusText\r\n });\r\n }\r\n\r\n testResultsRow = (index, testId, apipPath, name, params=null) => {\r\n return (\r\n \r\n {this.state[testId + '-status']}\r\n {this.state[testId + '-statusText']}\r\n {testId}: {name}\r\n {apipPath}\r\n {params}\r\n \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n { apiMethods.map((method, index) => this.testResultsRow(index,...method) )}\r\n \r\n
    StatusMessageMethodURLPARAMS
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default ApiStatuses;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { Tooltip } from '@progress/kendo-popups-react-wrapper';\r\n\r\n\r\nclass AnnouncementRepositoryModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false, deleteable: false };\r\n this.changeAction = this.changeAction.bind(this);\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n changeAction(event){\r\n this.setState({deleteable: true})\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Announcement Repository\r\n \r\n \r\n \r\n \r\n Announcement Repository\r\n \r\n \r\n
    \r\n

    Announcement repository allows you to manage all the audio announcements

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.deleteRow()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    DescriptionFile TypeFile SizePlay
    Cool Desc.wav36mb\r\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 Max file size for audio announcements is 5MB in CCIT u-Law 8kHz, 8bit Mono format\r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    Cool Desc.wav36mb\r\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 Max file size for audio announcements is 5MB in CCIT u-Law 8kHz, 8bit Mono format\r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n File Storage: used 14 MB. available 984 MB.\r\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 deleteRow() {\r\n if (this.state.deleteable){ \r\n return (\r\n \r\n \r\n Delete Items\r\n Cancel\r\n \r\n \r\n )\r\n }\r\n }\r\n};\r\n\r\nexport default AnnouncementRepositoryModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\n\r\nclass AcceptanceModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleAddPhoneNumber = this.handleAddPhoneNumber.bind(this);\r\n this.state = { showModal: false, numberOfPhoneCount:1, numberOfPhoneLimit:10 };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n handleAddPhoneNumber(){\r\n if(this.state.numberOfPhoneCount < 10)\r\n this.setState({ numberOfPhoneCount: this.state.numberOfPhoneCount + 1 });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n return (\r\n
    \r\n \r\n Anywhere\r\n \r\n \r\n\r\n \r\n \r\n Anywhere Settings\r\n \r\n \r\n

    Lorem ipsum

    \r\n View Available Portal List\r\n
    \r\n
    \r\n \r\n Alert all locations for Click-to-Dial calls\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Phone NoDescription
    2057062114lorem ipsum
    \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 Enable this Location\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Enable diversion inhibitor\r\n
    \r\n
    \r\n \r\n Require Answer Confirmation\r\n
    \r\n
    \r\n \r\n Use Call Control Services\r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Phone NoDescription
    2057062114lorem ipsum
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n Add Criteria\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Add Anywhere\r\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 AcceptanceModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\nclass CallBlockModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleAddPhoneNumber = this.handleAddPhoneNumber.bind(this);\r\n this.state = { showModal: false, numberOfPhoneCount:1, numberOfPhoneLimit:10 };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n handleAddPhoneNumber(){\r\n if(this.state.numberOfPhoneCount < 10)\r\n this.setState({ numberOfPhoneCount: this.state.numberOfPhoneCount + 1 });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n return (\r\n
    \r\n \r\n Call Block\r\n \r\n \r\n\r\n \r\n \r\n Call Block\r\n \r\n \r\n
    \r\n

    Call Block rejects calls that meet your pre-defined criteria. Callers meeting these criteria will hear an automated message advising them that you cannot be reached. Use this feature to prevent nuisance calls.

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    DescriptionBlockCall From
    NuisancerCaller_91234Yes5555
    \r\n
    \r\n Delete Call Block\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Reject Call?\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    NuisancerCaller_91234Yes5555
    \r\n
    \r\n Delete Call Block\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Reject Call?\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n Add Call Block\r\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 CallBlockModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\n\r\nclass CallNotifyModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleAddPhoneNumber = this.handleAddPhoneNumber.bind(this);\r\n this.state = { showModal: false, numberOfPhoneCount:1, numberOfPhoneLimit:10 };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n handleAddPhoneNumber(){\r\n if(this.state.numberOfPhoneCount < 10)\r\n this.setState({ numberOfPhoneCount: this.state.numberOfPhoneCount + 1 });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n return (\r\n
    \r\n \r\n Call Notify\r\n \r\n \r\n\r\n \r\n \r\n Call Notify\r\n \r\n \r\n
    \r\n

    Call Notify allows you to receive email notifications containing specific callers’ names and numbers based on predefined criteria.

    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\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
    DescriptionCall NotifyCall From
    NuisancerCaller_91234Yes5555
    \r\n
    \r\n Delete Call Notify\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Activate Call Notify?\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    NuisancerCaller_91234Yes5555
    \r\n
    \r\n Delete Call Notify\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Activate Call Notify?\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    NuisancerCaller_91234Yes5555
    \r\n
    \r\n Delete Call Notify\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Activate Call Notify?\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\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 CallNotifyModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\n// \r\n\r\nclass CallTransferModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Call Transfer\r\n \r\n \r\n\r\n \r\n \r\n Call Transfer\r\n \r\n \r\n
    \r\n

    The Call Transfer service enables a user to transfer a call to a specified destination. Call transfer can be blind, with third-party consultation, or with three-way consultation. In addition, Busy Camp On and Call Transfer Recall features allow users to camp the call to transfer on a busy destination and recall the transferring party if the transferred call is not answered for any reason. Another option, diversion inhibitor enables users to prevent transferred calls from being redirected.

    \r\n
    \r\n
    \r\n
    \r\n \r\n Call transfer Recall\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Use Busy Camp On\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Use Diversion inhibitor for Blind Transfer\r\n
    \r\n
    \r\n \r\n Use Diversion inhibitor for Consultative Calls\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default CallTransferModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\n// \r\n\r\nclass CollaborateBridgeModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Collaborate Bridge\r\n \r\n \r\n\r\n \r\n \r\n Collaborate Bridge\r\n \r\n \r\n
    \r\n
    \r\n

    Collaborate Bridge is your “My Room” audio conferencing dial-in that supports conference calls of up to 60 participants.

    \r\n
    \r\n

    Your Collaborate Bridge Details:
    \r\n Name: Collaborate Bridge 1249195
    \r\n Supports Outdial: Yes
    \r\n Phone Number: 123 123 1234 #1111

    \r\n
    \r\n
    \r\n
    \r\n
    Instant Rooms Common Configuration Settings
    \r\n
    \r\n \r\n Play tone on arrival and exit?\r\n
    \r\n
    \r\n \r\n End room session when owner leaves\r\n
    \r\n
    \r\n \r\n Require owner to start room session\r\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
    Room TypeRoom IDName
    My Room12345My Room
    \r\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 Play tone on arrival and exit?\r\n
    \r\n
    \r\n \r\n End room session when owner leaves\r\n
    \r\n
    \r\n \r\n Require owner to start room session\r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\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 CollaborateBridgeModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DateTimePicker } from '@progress/kendo-dateinputs-react-wrapper';\r\n\r\n\r\nclass ConferenceListModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.changeType = this.changeType.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n changeType(event){\r\n this.setState({typeValue: event.target.value})\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Conference List\r\n \r\n \r\n\r\n \r\n \r\n Conference List\r\n \r\n \r\n
    \r\n

    Add, delete, and manage individual conferences, as well as download conference recordings.

    \r\n Download Microsoft Outlook Add-in\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    NameTitleBridgeStatusTypeStart TimeRecordingModerate
    NameTitleBridgeStatusTypeStart TimeRecordingsModerate
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    NameTitleBridgeStart TimeFile Size
    testtestMeet-Me CNF 12491942018-02-05T16:08:32:752-0600413484\r\n Download\r\n
    testtestMeet-Me CNF 12491942018-02-05T16:08:32:752-0600413484\r\n Download\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    For security, please enter your account password and click Launch Moderate Conference button to launch the moderator portal.

    \r\n\r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Mute Participants on Entry\r\n
    \r\n
    \r\n \r\n End conference when moderator leaves\r\n
    \r\n
    \r\n \r\n Moderator required to start\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {this.getConferenceType()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    NameTitleBridgeStatusTypeStart TimeRecordingsModerate
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    NameTitleBridgeStart TimeFile Size
    testtestMeet-Me CNF 12491942018-02-05T16:08:32:752-0600413484\r\n Download\r\n
    testtestMeet-Me CNF 12491942018-02-05T16:08:32:752-0600413484\r\n Download\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    For security, please enter your account password and click Launch Moderate Conference button to launch the moderator portal.

    \r\n\r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Mute Participants on Entry\r\n
    \r\n
    \r\n \r\n End conference when moderator leaves\r\n
    \r\n
    \r\n \r\n Moderator required to start\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {this.getConferenceType()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\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 getConferenceType(){\r\n switch(this.state.typeValue){\r\n case \"onetime\":\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {console.log(\"value changed to:\" + e.sender.value())}}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {console.log(\"value changed to:\" + e.sender.value())}}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n case \"recurring\":\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {console.log(\"value changed to:\" + e.sender.value())}}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {console.log(\"value changed to:\" + e.sender.value())}}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n ); \r\n case \"reservationless\":\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {console.log(\"value changed to:\" + e.sender.value())}}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {console.log(\"value changed to:\" + e.sender.value())}}\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 ConferenceListModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\n// \r\n\r\nclass DirectCallModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Direct Call Pickup with Barge-in\r\n \r\n \r\n\r\n \r\n \r\n Direct Call Pickup with Barge-in Settings\r\n \r\n \r\n
    \r\n

    Directed Call Pickup with Barge-in (DPUBI) allows users to dial a feature access code (FAC) followed by an extension to pickup (answer) a call directed to another user in the same customer group (or enterprise, if the group is part of an enterprise), or barge in on the call if the call was already answered. When a barge-in occurs, a three-way call is established between the parties with the DPUBI user as the controller.

    \r\n
    \r\n
    \r\n \r\n Barge-in Warning Tone\r\n
    \r\n
    \r\n \r\n Automatic Target Selection\r\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 DirectCallModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\n\r\n// \r\n\r\nclass HotelingGuestModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Hoteling Guest\r\n \r\n \r\n\r\n \r\n \r\n Hoteling Guest\r\n \r\n \r\n
    \r\n

    Hoteling Guest allows a user to associate their service profile with a Hoteling Host user. This allows the guest user to use the host's device with the guest user's service profile. This is useful for transient employees.

    \r\n
    \r\n
    \r\n \r\n Hoteling Guest\r\n
    \r\n
    \r\n \r\n Limit Association\r\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 HotelingGuestModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\n// \r\n\r\nclass HotelingHostModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Hoteling Host\r\n \r\n \r\n\r\n \r\n \r\n Hoteling Host\r\n \r\n \r\n
    \r\n

    Hoteling Host allows a user to be designated as a host user. A user, who is assigned the hoteling guest service, can then be associated to the host user. When associated, the host user allows the guest user to use the host's device with the guest's service profile. If association limit is not enforced, the Guest user is allowed to associate with the Host user indefinitely.

    \r\n
    \r\n

    Associated Guest:
    \r\n Name: Jared Malan
    \r\n 123 123 1234 #1111
    \r\n Associated on 17 Dec 2017

    \r\n
    \r\n
    \r\n
    \r\n \r\n Hoteling Host\r\n
    \r\n
    \r\n \r\n Enforce Association Limit 24 Hours\r\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 HotelingHostModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\nclass PriorityAlertModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleAddPhoneNumber = this.handleAddPhoneNumber.bind(this);\r\n this.state = { showModal: false, numberOfPhoneCount:1, numberOfPhoneLimit:10 };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n handleAddPhoneNumber(){\r\n if(this.state.numberOfPhoneCount < 10)\r\n this.setState({ numberOfPhoneCount: this.state.numberOfPhoneCount + 1 });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n return (\r\n
    \r\n \r\n Priority Alert\r\n \r\n \r\n\r\n \r\n \r\n Priority Alert\r\n \r\n \r\n
    \r\n

    Priority Alert service enables a user to define criteria to have certain incoming calls trigger distinctive alerting.

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    DescriptionPriority AlertCall From
    NuisancerCaller_91234Yes5555
    \r\n
    \r\n Delete Priority Alert\r\n
    \r\n \r\n Use Priority Alert\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    NuisancerCaller_91234Yes5555
    \r\n
    \r\n Delete Priority Alert\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Use Priority Alert\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\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 PriorityAlertModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\n\r\n// \r\n\r\nclass PrivacyModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Privacy\r\n \r\n \r\n\r\n \r\n \r\n Privacy\r\n \r\n \r\n
    \r\n

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Odio ab modi necessitatibus illo, tempore corrupti!

    \r\n
    \r\n
    \r\n \r\n Enable Directory Privacy\r\n
    \r\n
    \r\n \r\n Enable Auto Attendant Extention Dialing Privacy\r\n
    \r\n
    \r\n \r\n Enable Auto Attendant Name Dialing Privacy\r\n
    \r\n
    \r\n \r\n Enable Phone Status Privacy\r\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 PrivacyModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\n\r\nclass receptionistDashboardModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Receptionist Dashboard\r\n \r\n \r\n\r\n \r\n \r\n Receptionist Dashboard\r\n \r\n \r\n
    \r\n

    Select users whom you want to monitor presence status.

    \r\n Go to Client App\r\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 receptionistDashboardModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\n\r\nclass SelectiveCallAcceptanceModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleAddPhoneNumber = this.handleAddPhoneNumber.bind(this);\r\n this.state = { showModal: false, numberOfPhoneCount:1, numberOfPhoneLimit:10 };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n handleAddPhoneNumber(){\r\n if(this.state.numberOfPhoneCount < 10)\r\n this.setState({ numberOfPhoneCount: this.state.numberOfPhoneCount + 1 });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n return (\r\n
    \r\n \r\n Selective Call Acceptance\r\n \r\n \r\n\r\n \r\n \r\n Selective Call Acceptance\r\n \r\n \r\n
    \r\n

    Call Block rejects calls that meet your pre-defined criteria. Callers meeting these criteria will hear an automated message advising them that you cannot be reached. Use this feature to prevent nuisance calls.

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    DescriptionAcceptCall From
    NuisancerCaller_91234YesAll Calls
    \r\n
    \r\n Delete Call Acceptance\r\n
    \r\n \r\n Accept Call?\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    NuisancerCaller_91234YesAll Calls
    \r\n
    \r\n Delete Call Acceptance\r\n
    \r\n \r\n Accept Call?\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n Add Call Block\r\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 SelectiveCallAcceptanceModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\n// \r\n\r\nclass SpeedDialModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Speed Dial\r\n \r\n \r\n\r\n \r\n \r\n Speed Dial\r\n \r\n \r\n
    \r\n

    Speed Dial allows you to set up quick dial shortcuts for your most frequent calls.

    \r\n Export Contacts\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    NamePhone NumberSpeed Dial
    Joe Single123 123 123401
    \r\n
    \r\n Delete Speed Dial Contact\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    Note: Some Speed Dial codes conflict with certain Feature Access Codes. See below for a list of conflicting Speed Dial codes that completely over-ride their Feature Access Code functionality when active: \r\n
    \r\n
    \r\n #31 Calling Line ID Delivery Blocking Persistent Deactivation
    \r\n #40 Call Forwarding Busy To Voice Mail Deactivation
    \r\n #41 Call Forwarding No Answer To Voice Mail Deactivation
    \r\n #43 Call Waiting Persistent Deactivation
    \r\n #58 Group Call Park
    \r\n #70 Night Service Activation Manual Override
    \r\n #71 Night Service Deactivation Manual Override
    \r\n #72 Forced Forwarding Activation
    \r\n #73 Forced Forwarding Deactivation
    \r\n #76 Call Forwarding Selective Activation
    \r\n #77 Call Forwarding Selective Deactivation
    \r\n #80 Make Outgoing Call as Call Center
    \r\n #81 Make Personal Outgoing Call
    \r\n #83 Escalate Call to Supervisor
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    Joe Single123 123 123401
    \r\n
    \r\n Delete Speed Dial Contact\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    Note: Some Speed Dial codes conflict with certain Feature Access Codes. See below for a list of conflicting Speed Dial codes that completely over-ride their Feature Access Code functionality when active: \r\n
    \r\n
    \r\n #31 Calling Line ID Delivery Blocking Persistent Deactivation
    \r\n #40 Call Forwarding Busy To Voice Mail Deactivation
    \r\n #41 Call Forwarding No Answer To Voice Mail Deactivation
    \r\n #43 Call Waiting Persistent Deactivation
    \r\n #58 Group Call Park
    \r\n #70 Night Service Activation Manual Override
    \r\n #71 Night Service Deactivation Manual Override
    \r\n #72 Forced Forwarding Activation
    \r\n #73 Forced Forwarding Deactivation
    \r\n #76 Call Forwarding Selective Activation
    \r\n #77 Call Forwarding Selective Deactivation
    \r\n #80 Make Outgoing Call as Call Center
    \r\n #81 Make Personal Outgoing Call
    \r\n #83 Escalate Call to Supervisor
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n Add Contact\r\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 SpeedDialModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\n// \r\n\r\nclass CallForwardingModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Call Forwarding\r\n \r\n \r\n\r\n \r\n \r\n Call Forwarding\r\n \r\n \r\n
    \r\n

    Forward your calls to another number.

    \r\n
    \r\n
    \r\n \r\n Call Forward Always\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Call Forward Don't Answer\r\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 Call Forward Busy Line\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Call Forward Not Reachable\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n Save\r\n Close\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default CallForwardingModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\n\r\nclass CallForwardingSelectiveModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleAddPhoneNumber = this.handleAddPhoneNumber.bind(this);\r\n this.state = { showModal: false, numberOfPhoneCount:1, numberOfPhoneLimit:10 };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n handleAddPhoneNumber(){\r\n if(this.state.numberOfPhoneCount < 10)\r\n this.setState({ numberOfPhoneCount: this.state.numberOfPhoneCount + 1 });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n return (\r\n
    \r\n \r\n Call Forwarding Selective\r\n \r\n \r\n\r\n \r\n \r\n Call Forwarding Selective\r\n \r\n \r\n
    \r\n

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Odio ab modi necessitatibus illo, tempore corrupti!

    \r\n
    \r\n \r\n Call Forwarding Selective\r\n
    \r\n
    \r\n \r\n Play ring reminder when a call is forwarded\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    DescriptionActive
    NuisancerCaller_91234Yes
    \r\n
    \r\n Delete Selective Criteria\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    NuisancerCaller_91234Yes
    \r\n
    \r\n Delete Selective Criteria\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\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 CallForwardingSelectiveModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\n\r\nclass FindMeSimultaneousModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleAddPhoneNumber = this.handleAddPhoneNumber.bind(this);\r\n this.handleAddSimNumber = this.handleAddSimNumber.bind(this);\r\n this.state = { \r\n showModal: false, \r\n numberOfPhoneCount:1, \r\n numberOfSimCount:1, \r\n numberOfPhoneLimit:10\r\n };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n handleAddPhoneNumber(){\r\n if(this.state.numberOfPhoneCount < 10)\r\n this.setState({ numberOfPhoneCount: this.state.numberOfPhoneCount + 1 });\r\n }\r\n handleAddSimNumber(){\r\n if(this.state.numberOfSimCount < 10)\r\n this.setState({ numberOfSimCount: this.state.numberOfSimCount + 1 });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n let simNumberCountReachLimit = this.state.numberOfSimCount >= this.state.numberOfPhoneLimit;\r\n return (\r\n
    \r\n \r\n Find Me - Simultaneous\r\n \r\n \r\n\r\n \r\n \r\n Find Me - Simultaneous\r\n \r\n \r\n
    \r\n

    Forward your calls to up to ten alternate locations.

    \r\n
    \r\n
    \r\n \r\n Simultaneous Ring\r\n
    \r\n
    \r\n \r\n Do not ring my simultaneous ring numbers if I'm already on a call\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    DescriptionSimultaneous Ring
    NuisancerCaller_91234Yes
    \r\n
    \r\n Delete Criteria\r\n
    \r\n \r\n Use Simultaneous Ring?\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    NuisancerCaller_91234Yes
    \r\n
    \r\n Delete Criteria\r\n
    \r\n \r\n Use Simultaneous Ring?\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\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 {_.times(this.state.numberOfSimCount, i =>\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
    Phone Number Answer Confirmation Required
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default FindMeSimultaneousModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\n\r\nclass FindMeSequentialModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleAddPhoneNumber = this.handleAddPhoneNumber.bind(this);\r\n this.handleAddSimNumber = this.handleAddSimNumber.bind(this);\r\n this.state = { \r\n showModal: false, \r\n numberOfPhoneCount:1, \r\n numberOfSimCount:1, \r\n numberOfPhoneLimit:10\r\n };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n handleAddPhoneNumber(){\r\n if(this.state.numberOfPhoneCount < 10)\r\n this.setState({ numberOfPhoneCount: this.state.numberOfPhoneCount + 1 });\r\n }\r\n handleAddSimNumber(){\r\n if(this.state.numberOfSimCount < 10)\r\n this.setState({ numberOfSimCount: this.state.numberOfSimCount + 1 });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n let simNumberCountReachLimit = this.state.numberOfSimCount >= this.state.numberOfPhoneLimit;\r\n return (\r\n
    \r\n \r\n Find Me - Sequential\r\n \r\n \r\n\r\n \r\n \r\n Find Me - Sequential\r\n \r\n \r\n
    \r\n

    Forward your calls to up to five alternate locations.

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    DescriptionSimultaneous Ring
    NuisancerCaller_91234Yes
    \r\n
    \r\n Delete Criteria\r\n
    \r\n \r\n Use Simultaneous Ring?\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    NuisancerCaller_91234Yes
    \r\n
    \r\n Delete Criteria\r\n
    \r\n \r\n Use Simultaneous Ring?\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n Use base location first \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Continue the search process if the base location is busy.\r\n
    \r\n
    \r\n \r\n Enable caller to skip search process. \r\n Forwarding or messaging must be enabled.\r\n
    \r\n
    \r\n
    \r\n \r\n Do not ring my simultaneous ring numbers if I'm already on a call\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {_.times(this.state.numberOfSimCount, i =>\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
    Phone Number Number of Rings Answer Confirmation Required
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default FindMeSequentialModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\n\r\n\r\nclass PushToTalkModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Push To Talk\r\n \r\n \r\n\r\n \r\n \r\n Push To Talk\r\n \r\n \r\n
    \r\n

    Push to Talk allows people to call each other and have the call answered automatically via speakerphone/intercom. You can define which users have Push to Talk access to your phone.

    \r\n
    \r\n
    \r\n \r\n Auto Answer\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default PushToTalkModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\nclass ContactCenterModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Contact Center\r\n \r\n \r\n\r\n \r\n \r\n Contact Center\r\n \r\n \r\n
    \r\n

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Odio ab modi necessitatibus illo, tempore corrupti!

    \r\n
    \r\n

    Contact Center Service Assigned: Premium

    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Make outgoing calls as another 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
    \r\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 Force agent to unavailable on Do Not Disturb activation\r\n
    \r\n
    \r\n \r\n Force agent to unavailable after consecutive bounced calls\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    JoinContact Center IDPhone NumberExtSkill Level
    123123123@test.com123 123 123412310
    \r\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 ContactCenterModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\n\r\nclass CustomRingbackModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleAddPhoneNumber = this.handleAddPhoneNumber.bind(this);\r\n this.state = { showModal: false, numberOfPhoneCount:1, numberOfPhoneLimit:10 };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n handleAddPhoneNumber(){\r\n if(this.state.numberOfPhoneCount < 10)\r\n this.setState({ numberOfPhoneCount: this.state.numberOfPhoneCount + 1 });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n return (\r\n
    \r\n \r\n Custom Ringback User\r\n \r\n \r\n\r\n \r\n \r\n Custom Ringback User Settings\r\n \r\n \r\n

    Custom Ringback User allows you to specify the ringback to be played to your callers, for specific calls matching your pre-defined criteria. Use this service to play a different ringback to your manager, a family member, or a customer. The criteria for each Custom Ringback Selective entry can be a list of up to 12 phone numbers or digit patterns, a specified time schedule, and a specified holiday schedule. All criteria for an entry must be satisfied for the ringback to be played (phone number and day of week and time of day). Otherwise, regular ringback is played to the caller, as if this service was not used.

    \r\n
    \r\n
    \r\n \r\n Distinctive Ring\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    ActiveDescriptionTime ScheduleCall From
    Activelorem ipsumDefaultJohn
    \r\n
    \r\n Delete\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Play custom ringback\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n Add Criteria\r\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 CustomRingbackModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\n\r\nclass RemoteOfficeModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n return (\r\n
    \r\n \r\n Remote Office\r\n \r\n \r\n\r\n \r\n \r\n Remote Office Settings\r\n \r\n \r\n

    Remote Office allows you to use your home phone, your cell phone or even a hotel phone as your business phone. By using the CommPilot Call Manager, you can make phone calls from this remote phone and have them billed to your business. This service also directs all calls coming to your business phone to ring the remote office phone.

    \r\n
    \r\n \r\n
    \r\n \r\n Remote Office\r\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 RemoteOfficeModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\nclass ClientAppModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Client App\r\n \r\n \r\n\r\n \r\n \r\n Client App\r\n \r\n \r\n
    \r\n

    To access the Contact Center Agent or Supervisor client applications, please click the link above. You will be prompted to enter a username and password. Your username and password will be the username and password you use to login to this portal; however, you will append the domain “@mymtm.us\" to the username. See example and other settings below:

    \r\n

    Username (example): 5555551234@mymtm.us or 555551234X100@mymtm.us
    \r\n Password (example): *********

    \r\n

    Please contact your administrator or service provider to purchase Contact Center Agent and Supervisor client applications.

    \r\n Go To Client App\r\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 ClientAppModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\nclass VoicemailToTextModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Transcribe Voicemail\r\n \r\n \r\n\r\n \r\n \r\n Transcribe Voicemail\r\n \r\n \r\n
    \r\n
    \r\n \r\n Transcribe Voicemail\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    To complete the configuration and setup of the service please insert the email address, vm2text@atlvm.voipinternetcable.net, into the voicemail to email Unified Messaging, Forward, or carbon copy fields of “Voicemail” above.

    \r\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 VoicemailToTextModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\nclass DistributionListModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleAddPhoneNumber = this.handleAddPhoneNumber.bind(this);\r\n this.handleAddList = this.handleAddList.bind(this);\r\n this.state = { showModal: false, numberOfPhoneCount:1, numberOfPhoneLimit:10, numberOfListCount: 1, numberOfListLimit: 15 };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n handleAddPhoneNumber(){\r\n if(this.state.numberOfPhoneCount < 10)\r\n this.setState({ numberOfPhoneCount: this.state.numberOfPhoneCount + 1 });\r\n }\r\n handleAddList(){\r\n if(this.state.numberOfListCount < 15)\r\n this.setState({ numberOfListCount: this.state.numberOfListCount + 1 });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n let listCountReachLimit = this.state.numberOfListCount >= this.state.numberOfListLimit;\r\n return (\r\n
    \r\n \r\n Distribution List\r\n \r\n \r\n\r\n \r\n \r\n Distribution List\r\n \r\n \r\n
    \r\n

    Distribution lists allow you to send a message to multiple people. You can have up to 15 lists.

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {_.times(this.state.numberOfListCount, i =>\r\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
    Distribution List
    Soccer Team
    \r\n
    \r\n Delete Distribution List\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
    Phone Number / SIPURI
    \r\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 DistributionListModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport VoicemailSettingsModal from './modals/voicemailSettingsModal';\r\n\r\n\r\nclass VoicemailSettingsRow extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.changeForward = this.changeForward.bind(this);\r\n\r\n this.state = { \r\n showModal: false, \r\n forwardValue: \"\" ,\r\n voice_messaging: {\r\n\t\t\t\tselected: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n show_error: false,\r\n api: \"VoiceMessage\",\r\n label: \"Voice Messaging\"\r\n },\r\n send_all_calls_to_vm: {\r\n\t\t\t\tselected: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n show_error: false,\r\n api: \"SendAllCallsToVoicemail\",\r\n\t\t\t\tlabel: \"Send All Calls to Voicemail\"\r\n },\r\n send_busy_calls_to_vm: {\r\n\t\t\t\tselected: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n show_error: false,\r\n api: \"SendBusyCallsToVoicemail\",\r\n\t\t\t\tlabel: \"Send Busy Calls to Voicemail\"\r\n\t\t\t\t\r\n },\r\n send_unanswered_calls_to_vm: {\r\n forward_value: null,\r\n\t\t\t\tselected: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n show_error: false,\r\n api: \"SendUnansweredCallstoVoicemail\",\r\n label: \"Send Unanswered Calls to Voicemail\"\r\n },\r\n notify_me_email_when_new_messages_arrive: {\r\n\t\t\t\tselected: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n show_error: false,\r\n api: \"NotifyMebyEmailwhennewmessagesarrive\",\r\n label: \"Notify me by Email when new messages arrive\",\r\n email: null\r\n },\r\n email_carbon_copy_message: {\r\n\t\t\t\tselected: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n show_error: false,\r\n api: \"EmailaCarbonCopyoftheMessage\",\r\n label: \"Email a carbon copy of the message\",\r\n email: null\r\n },\r\n transfer_on_0_to_phone_number: {\r\n\t\t\t\tselected: false,\r\n\t\t\t\tloading: true,\r\n\t\t\t\tshow_success: false,\r\n show_error: false,\r\n api: \"Transfer_0_to_Phone_Number\",\r\n label: \"Transfer on '0' to Phone Number\",\r\n email: null\r\n }, \r\n };\r\n }\r\n\r\n changeOnOffValue =(setting, event)=>{\r\n let checked = event.target.checked;\r\n setting.selected = checked;\r\n switch(setting.details.api){\r\n case this.state.voice_messaging.details.api:\r\n this.setState({...{voice_messaging: setting}})\r\n break;\r\n case this.state.send_all_calls_to_vm.details.api:\r\n this.setState({...{send_all_calls_to_vm: setting}})\r\n break;\r\n case this.state.send_busy_calls_to_vm.details.api:\r\n this.setState({...{send_busy_calls_to_vm: setting}})\r\n break;\r\n case this.state.send_unanswered_calls_to_vm.details.api:\r\n this.setState({...{send_unanswered_calls_to_vm: setting}})\r\n break;\r\n case this.state.notify_me_email_when_new_messages_arrive.details.api:\r\n this.setState({...{notify_me_email_when_new_messages_arrive: setting}})\r\n break;\r\n case this.state.email_carbon_copy_message.details.api:\r\n this.setState({...{email_carbon_copy_message: setting}})\r\n break;\r\n case this.state.transfer_on_0_to_phone_number.details.api:\r\n this.setState({...{transfer_on_0_to_phone_number: setting}})\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n changeEmailValue =(setting, event)=>{\r\n let email = event.target.value.trim();\r\n setting.email = email;\r\n switch(setting.api){\r\n case this.state.send_unanswered_calls_to_vm.api:\r\n this.setState({...{send_unanswered_calls_to_vm: setting}})\r\n break;\r\n case this.state.notify_me_email_when_new_messages_arrive.api:\r\n this.setState({...{notify_me_email_when_new_messages_arrive: setting}})\r\n break;\r\n case this.state.email_carbon_copy_message.api:\r\n this.setState({...{email_carbon_copy_message: setting}})\r\n break;\r\n case this.state.transfer_on_0_to_phone_number.api:\r\n this.setState({...{transfer_on_0_to_phone_number: setting}})\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n \r\n handleSave() {\r\n\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n changeForward(event){\r\n let setting = this.state.send_unanswered_calls_to_vm;\r\n setting.forward_value = event.target.value;\r\n this.setState({...{send_unanswered_calls_to_vm: setting}})\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Voicemail Settings\r\n \r\n \r\n\r\n \r\n \r\n Voicemail Settings\r\n \r\n \r\n this.changeOnOffValue(e, b)} \r\n onHandleChangeEmail={(e,b) => this.changeEmailValue(e, b)}\r\n onHandleChangeForward={this.changeForward}\r\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 getForwardOption(){\r\n switch(this.state.forwardValue){\r\n case \"multiple\":\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n case \"single\":\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n};\r\n\r\n\r\n\r\nexport default VoicemailSettingsRow;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\n\r\nclass VirtualNumberModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleAddPhoneNumber = this.handleAddPhoneNumber.bind(this);\r\n this.state = { showModal: false, numberOfPhoneCount:1, numberOfPhoneLimit:10 };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n handleAddPhoneNumber(){\r\n if(this.state.numberOfPhoneCount < 10)\r\n this.setState({ numberOfPhoneCount: this.state.numberOfPhoneCount + 1 });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n return (\r\n
    \r\n \r\n Virtual Number\r\n \r\n \r\n\r\n \r\n \r\n Virtual Number Settings\r\n \r\n \r\n

    Virtual Numbers allows up to ten additional phone numbers and extensions to your primary number and extension. All additional numbers ring your phone(s) just like your primary phone. You can specify a distinctive ringing pattern for each number, if your phone supports it. Only your administrator can configure new numbers and extensions for you.

    \r\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
    Phone NumberDescriptionRing Pattern
    123 123 1234lorem ipsumDefault
    \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
    \r\n Save\r\n Cancel\r\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 VirtualNumberModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\n\r\nclass PreAlertModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleAddPhoneNumber = this.handleAddPhoneNumber.bind(this);\r\n this.state = { showModal: false, numberOfPhoneCount:1, numberOfPhoneLimit:10 };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n handleAddPhoneNumber(){\r\n if(this.state.numberOfPhoneCount < 10)\r\n this.setState({ numberOfPhoneCount: this.state.numberOfPhoneCount + 1 });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n\r\n render() {\r\n let phoneNumberCountReachLimit = this.state.numberOfPhoneCount >= this.state.numberOfPhoneLimit;\r\n return (\r\n
    \r\n \r\n Pre-Alerting Announcement\r\n \r\n \r\n\r\n \r\n \r\n Pre-Alerting Announcement Settings\r\n \r\n \r\n

    Pre-alerting Announcement allows you to specify an audio or video announcement to be played to your callers, before the call is actually connected, for specific calls matching your pre-defined criteria. The criteria for each entry can be a list of up to 12 phone numbers or digit patterns, a specified time schedule, and a specified holiday schedule. All criteria for an entry must be satisfied for the announcement to be played (phone number and day of week and time of day). Otherwise, no pre-alerting announcement is played.

    \r\n
    \r\n \r\n
    \r\n \r\n Pre-Alerting Announcement\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    DescriptionAnnouncementCall From
    NuisancerCaller_91234Yes5555
    \r\n
    \r\n Delete Call Notify\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Play custom ringback?\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {_.times(this.state.numberOfPhoneCount, i =>\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n Add additional phone number\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\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 PreAlertModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport ManageGreetingsModal from './modals/manageGreetingsModal';\r\n\r\n\r\nclass ManageGreetingsRow extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Manage Greetings\r\n \r\n \r\n\r\n \r\n \r\n Manage Greetings\r\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 ManageGreetingsRow;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\nclass PinResetRow extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n\r\n this.state = { showModal: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n\t}\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Reset Voicemail Pin\r\n \r\n \r\n\r\n \r\n \r\n Reset Voicemail Pin\r\n \r\n \r\n
    \r\n

    Click the Reset button below to temporarily reset your Voicemail PIN to 8642. When you access your voicemail with this temporary PIN, you will be prompted to assign a new PIN.

    \r\n Reset Voicemail Pin\r\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 PinResetRow;\r\n","import React from 'react';\r\n\r\nimport AnnouncementRepositoryModal from './modals/announcementRepositoryModal';\r\nimport AcceptanceModal from './modals/anywhereModal.js';\r\nimport CallBlockModal from './modals/callBlockModal';\r\nimport CallNotifyModal from './modals/callNotifyModal';\r\nimport CallTransferModal from './modals/callTransferModal';\r\nimport CollaborateBridgeModal from './modals/collaborateBridgeModal';\r\nimport ConferenceListModal from './modals/conferenceListModal';\r\nimport DirectCallModal from './modals/directCallModal';\r\nimport HotelingGuestModal from './modals/hotelingGuestModal';\r\nimport HotelingHostModal from './modals/hotelingHostModal';\r\nimport PriorityAlertModal from './modals/priorityAlertModal';\r\nimport PrivacyModal from './modals/privacyModal';\r\nimport ReceptionistDashboardModal from './modals/receptionistDashboardModal';\r\nimport SelectiveCallAcceptanceModal from './modals/selectiveCallAcceptanceModal';\r\nimport SpeedDialModal from './modals/speedDialModal';\r\nimport CallForwardingModal from './modals/callForwardingModal';\r\nimport CallForwardingSelectiveModal from './modals/callForwardingSelectiveModal';\r\nimport FindMeSimultaneousModal from './modals/findMeSimultaneousModal';\r\nimport FindMeSequentialModal from './modals/findMeSequentialModal';\r\nimport PushToTalkModal from './modals/pushToTalkModal';\r\nimport ContactCenterModal from './modals/contactCenterModal';\r\nimport CustomRingbackModal from './modals/customRingbackModal';\r\nimport RemoteOfficeModal from './modals/remoteOfficeModal';\r\nimport ClientAppModal from './modals/clientAppModal';\r\nimport VoicemailToTextModal from './modals/voicemailToTextModal';\r\nimport EnterpriseDirectoryModal from './modals/enterpriseDirectoryModal';\r\nimport ScheduleModal from './modals/scheduleModal';\r\nimport DistributionListModal from './modals/distributionListModal';\r\nimport VoicemailSettingsRow from './voicemailSettingsRow';\r\nimport VirtualNumberModal from './modals/virtualNumberModal';\r\nimport PreAlertModal from './modals/preAlertModal';\r\nimport ManageGreetingsRow from './manageGreetingsRow';\r\nimport PinResetRow from './pinResetRow';\r\n\r\nconst EnterpriseSettings = () => (\r\n \t
    \r\n\t\t
    \r\n\t\t\t

    Service Settings

    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \t\r\n\t\t\t\t\r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t \r\n\t\t \r\n\t\t \r\n\t\t \t\r\n\t\t \r\n\t\t\t\t\r\n\t\t \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n)\r\n\r\nexport default EnterpriseSettings;","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { store } from '../../store/store';\r\nimport { fetchData } from './../../requests/api_calls';\r\nimport { userIsAdmin } from './../../scripts/helper';\r\nimport * as settings from './../../scripts/settings';\r\nimport { DataLoadingSpinner } from './../../components/spinners';\r\nimport * as actions from '../../store/actions';\r\n\r\nclass MyServices extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n userServices: [],\r\n ServiceId: props.ServiceId ? parseInt(props.ServiceId) : 0,\r\n SelectedUserId: props.SelectedUserId ? parseInt(props.SelectedUserId) : 0,\r\n selectedService: null,\r\n loading: false\r\n };\r\n\r\n this.updateMyServicesMenu = this.updateMyServicesMenu.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let apiPath = 'usr/MyServices';\r\n let userId = (this.props.SelectedUserId || sessionStorage.SelectedUserId);\r\n if (userIsAdmin() && userId) \r\n apiPath += '?UserId=' + userId;\r\n this.fetchMyServices(apiPath);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if(this.serviceHasChanged(prevProps) && !this.loading) {\r\n let apiPath = 'usr/MyServices';\r\n let userId = (this.props.SelectedUserId || sessionStorage.SelectedUserId);\r\n if (userId) apiPath += '?UserId=' + userId;\r\n this.fetchMyServices(apiPath);\r\n } else if (prevProps.serviceLoading !== this.props.serviceLoading) {\r\n store.dispatch({type: actions.SERVICES_SET});\r\n }\r\n }\r\n\r\n serviceHasChanged = (prevProps) => {\r\n return this.firstServiceSelected(prevProps) || this.newServiceSelected(prevProps);\r\n }\r\n\r\n firstServiceSelected = (prevProps) => this.props.SelectedUserId && prevProps.SelectedUserId === undefined;\r\n\r\n newServiceSelected = (prevProps) => {\r\n return this.props.SelectedUserId && prevProps.SelectedUserId && \r\n this.props.SelectedUserId.toString() !== prevProps.SelectedUserId.toString()\r\n }\r\n\r\n updateMyServicesMenu = (data) => {\r\n let currentServiceId = this.props.ServiceId;\r\n if (this.selectedServiceAlreadyInMenu()) {\r\n this.setState({loading: false, ServiceId: currentServiceId});\r\n } else {\r\n // update service in MyServices Menu\r\n let selectedServiceId = 0;\r\n if (data && data.length > 0) {\r\n data.map((service, idx) => {\r\n if (service.ServiceId === currentServiceId)\r\n selectedServiceId = service.ServiceId;\r\n });\r\n }\r\n this.setState({userServices: data, ServiceId: selectedServiceId, loading: false});\r\n }\r\n }\r\n\r\n selectedServiceAlreadyInMenu = () => {\r\n let matchingItemsInMenu = this.state.userServices.filter(item => {\r\n return item.ServiceId === this.props.ServiceId;\r\n });\r\n return matchingItemsInMenu.length > 0;\r\n }\r\n\r\n fetchMyServices = (apiPath) => {\r\n \r\n fetchData(apiPath).then((data) => {\r\n if (data) {\r\n this.storeServiceProperties(data);\r\n this.updateMyServicesMenu(data);\r\n store.dispatch({type: actions.SERVICES_SET});\r\n } else if (data === null && userIsAdmin() ) {\r\n let noService = {\r\n ServiceId: 0,\r\n ServiceNumber: '', \r\n SelectedUserId: sessionStorage.SelectedUserId,\r\n AccountNumber: sessionStorage.userEnterpriseNumber,\r\n DirectoryNumber:'',\r\n PBXUserID: '',\r\n Extension: '',\r\n isSelectedServiceIpTrunking: false\r\n };\r\n settings.setService(noService);\r\n this.setState({userServices: [], loading: false});\r\n store.dispatch({type: actions.SERVICES_SET});\r\n }\r\n \r\n });\r\n }\r\n\r\n storeServiceProperties = (data) => {\r\n let serviceIdentifier = this.props.ServiceNumber || this.props.Extension;\r\n if (userIsAdmin() && serviceIdentifier || this.state.selectedService) {\r\n let selectedService = this.matchSelectedService(data, serviceIdentifier);\r\n if(selectedService) settings.setService(selectedService);\r\n } else { // non admin will default to first service unless service was clicked in MyServices\r\n if (this.state.ServiceId) {\r\n let selectedService = this.matchByServiceId(data);\r\n settings.setService(selectedService);\r\n } else if (data && data.length > 0){\r\n let firstService = data[0];\r\n settings.setService(firstService);\r\n }\r\n }\r\n }\r\n\r\n matchByServiceId = (data) => {\r\n // used when service is activated from MyServices\r\n let matches = data.filter((service) => service.ServiceId === this.state.ServiceId);\r\n if (matches.length) {\r\n return matches[0];\r\n } else {\r\n return data[0];\r\n }\r\n }\r\n\r\n matchSelectedService = (data, serviceIdentifier) => {\r\n let selectedService = data.filter((service) => service.ServiceNumber === serviceIdentifier);\r\n if(selectedService.length > 0)\r\n selectedService = selectedService[0];\r\n else\r\n selectedService = null;\r\n\r\n if (!selectedService) {\r\n selectedService = data.filter((service) => service.Extension === serviceIdentifier);\r\n if(selectedService.length > 0)\r\n selectedService = selectedService[0];\r\n else\r\n selectedService = null;\r\n }\r\n return selectedService;\r\n }\r\n\r\n serviceLink = (service, index) => {\r\n let anchorClassName = 'nav-item';\r\n let serviceNameClassName = 'name';\r\n if (this.state.loading) {\r\n anchorClassName = 'nav-item disabled';\r\n serviceNameClassName = 'disabled';\r\n }\r\n if (this.isDefaultOrSelectedService(service)) {\r\n anchorClassName = \"nav-item selected\"\r\n }\r\n return (\r\n this.setServiceAndRedirect(service)}>\r\n {service.ServiceNumber}\r\n {this.extension(service)}\r\n {service.PackageName}\r\n \r\n )\r\n }\r\n\r\n isDefaultOrSelectedService = (service) => {\r\n return (service.ServiceId > 0 && this.state.ServiceId > 0 && service.ServiceId === this.state.ServiceId) ||\r\n (this.state.loading && this.state.ServiceId === service.ServiceId);\r\n }\r\n\r\n extension = (service) => {\r\n let ext = service.Extension;\r\n if (ext && service.ServiceNumber) {\r\n return ({ext})\r\n } else if (ext) {\r\n return {ext}\r\n } else return null;\r\n }\r\n\r\n setServiceAndRedirect = async (service) => {\r\n if (!this.state.loading) {\r\n await this.setState({ServiceId: service.ServiceId});\r\n settings.selectService(service.UserId, service.ServiceNumber, service.PBXUserID);\r\n this.props.history.push('/dashboard');\r\n }\r\n }\r\n\r\n servicesMenuLabel = () => {\r\n if ((this.props.SelectedUserId && this.props.UserId && this.props.SelectedUserId === this.props.UserId && userIsAdmin() )\r\n || (this.props.SelectedUserId && !userIsAdmin())\r\n ){\r\n return
    My Services
    \r\n } else {\r\n return
    User Services
    \r\n }\r\n }\r\n\r\n serviceLinksClass = () => {\r\n if (this.state.loading && !this.selectedServiceAlreadyInMenu()) {\r\n return 'hidden'\r\n } else {\r\n return 'service-links'\r\n }\r\n }\r\n\r\n render() {\r\n if ( this.state.userServices.length > 0 ) {\r\n let userServices = this.state.userServices.map((service, i) => this.serviceLink(service, i) );\r\n return (\r\n
    \r\n
    \r\n {this.servicesMenuLabel()}\r\n \r\n
    \r\n
    \r\n {userServices}\r\n
    \r\n
    \r\n ) \r\n } else return null\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n SelectedUserId: state.reducer.SelectedUserId,\r\n ServiceNumber: state.reducer.ServiceNumber,\r\n ServiceId: state.reducer.ServiceId,\r\n Extension: state.reducer.Extension,\r\n serviceLoading: state.reducer.serviceLoading\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(withRouter(MyServices));","import React, { Component } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { fetchData } from \"./../../requests/api_calls\";\r\nimport { store } from \"./../../store/store\";\r\nimport { connect } from \"react-redux\";\r\nimport { userIsAdmin, userIsContactManager, userIsSuperAdmin } from \"./../../scripts/helper\";\r\nimport * as actions from \"./../../store/actions\";\r\nimport * as icons from \"./../../scripts/icons\";\r\nimport * as session from \"../../scripts/session\";\r\nimport { checkBillingAccount } from \"../../utility/utility\";\r\n\r\nconst IsWholesaleUser = session.IsWholesale();\r\n\r\nclass AdminMenu extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n permissions: {},\r\n hasTrunking: false,\r\n hasContactCenter: false,\r\n hasMacd: false,\r\n hasDevices: false,\r\n hasIpTrunk: false,\r\n hasTicketing: \"NONE\",\r\n hasVmUsageReport: false,\r\n Header: \"Admin Tools\",\r\n hasAtLeastOneAdminLink: false,\r\n permissionsRetrieved: false,\r\n enableServiceChanges: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n // avoids 401 error by not calling for non admin\r\n //TODO - limit to one API call for access to various pages\r\n if (userIsAdmin()) {\r\n this.buildPermissions();\r\n this.setState({ hasAtLeastOneAdminLink: true });\r\n } else {\r\n this.buildSubscriberPermissions();\r\n }\r\n }\r\n\r\n componentWillReceiveProps = (props) => {\r\n let state = this.state;\r\n if (\r\n state.hasContactCenter !== props.hasContactCenter ||\r\n state.hasTrunking !== props.hasTrunking ||\r\n state.hasDevices !== props.hasDevices ||\r\n state.hasDevices !== props.hasDevices ||\r\n state.hasMacd !== props.hasMacd ||\r\n state.hasIpTrunk !== props.hasIpTrunk ||\r\n state.hasTicketing !== props.hasTicketing ||\r\n state.permissionsRetrieved !== props.permissionsRetrieved\r\n ) {\r\n this.setState({\r\n hasContactCenter: props.hasContactCenter,\r\n hasTrunking: props.hasTrunking,\r\n hasMacd: props.hasMacd,\r\n hasDevices: props.hasDevices,\r\n hasIpTrunk: props.hasIpTrunk,\r\n hasTicketing: props.hasTicketing,\r\n permissionsRetrieved: props.permissionsRetrieved,\r\n });\r\n }\r\n };\r\n\r\n buildSubscriberPermissions = async () => {\r\n let hasAtLeastOneAdminLink = false;\r\n let ID = sessionStorage.PBXUserID ? sessionStorage.PBXUserID : \"\";\r\n let accNum = this.props.LocationAccountNumber;\r\n\r\n let apiPath = `admin/GetEnterpriseLeftMenuLayout?PBXUserId=${ID}&LocationAccountNumber=${accNum}`;\r\n fetchData(apiPath)\r\n .then(async (data) => {\r\n var hasMacdSettingsEnabled = Object.values(data.MACDSettings).some(value => value == 1);\r\n await this.setState({\r\n hasAtLeastOneAdminLink: hasAtLeastOneAdminLink,\r\n Header: \"Admin Tools\",\r\n permissions: data,\r\n hasMacd: data.AllowMACDs == 1 ? true : false,\r\n hasDevices: data.NEPSSettings.NepsPermitted,\r\n enableServiceChanges: data.AllowMACDs == 1 && hasMacdSettingsEnabled\r\n });\r\n //\r\n if (data.TicketingPermission !== \"NONE\") {\r\n hasAtLeastOneAdminLink = true;\r\n }\r\n if (sessionStorage.IsWholesale === \"true\") {\r\n hasAtLeastOneAdminLink = true;\r\n }\r\n //\r\n sessionStorage.setItem(\r\n \"hasCallRecordingMenu\",\r\n data.HasCallRecordingMenu == 1 ? true : false\r\n );\r\n sessionStorage.setItem(\r\n \"hasCallRecordingService\",\r\n data.HasCallRecordingService == 1 ? true : false\r\n );\r\n sessionStorage.setItem(\r\n \"hasContactCenter\",\r\n data.HasContactCenter == 1 ? true : false\r\n );\r\n if (data && !IsWholesaleUser) {\r\n sessionStorage.setItem(\"hasTicketing\", data.TicketingPermission);\r\n }\r\n if (data.TicketingPermission !== \"NONE\") {\r\n hasAtLeastOneAdminLink = true;\r\n }\r\n if (sessionStorage.IsWholesale === \"true\") {\r\n // wrote condition this way (instead of using IsWholesaleUser var at the top) because there seems to be async issue when the string is converted to a boolean\r\n hasAtLeastOneAdminLink = true;\r\n }\r\n store.dispatch({ type: actions.PERMISSIONS_UPDATED });\r\n })\r\n .catch((err) => console.error(err));\r\n\r\n };\r\n\r\n buildPermissions = async () => {\r\n let ID = sessionStorage.PBXUserID ? sessionStorage.PBXUserID : \"\";\r\n let accNum = this.props.LocationAccountNumber ? this.props.LocationAccountNumber : \"\";\r\n\r\n let apiPath = `admin/GetEnterpriseLeftMenuLayout?PBXUserId=${ID}&LocationAccountNumber=${accNum}`;\r\n await fetchData(apiPath)\r\n .then(async (data) => {\r\n var hasMacdSettingsEnabled = Object.values(data.MACDSettings).some(value => value == 1);\r\n await this.setState({\r\n permissions: data,\r\n hasMacd: data.AllowMACDs == 1 ? true : false,\r\n hasDevices: data.NEPSSettings.NepsPermitted,\r\n enableServiceChanges: data.AllowMACDs == 1 && hasMacdSettingsEnabled\r\n });\r\n //Start MACD\r\n // if any MACD Permissions equal 1, then show the \"Service Changes\" link\r\n // unless permissions that are not valid for Wholesale users are included\r\n let permsObj = {\r\n addServices:\r\n data && data.MACDSettings.Add_Services && !IsWholesaleUser\r\n ? data.MACDSettings.Add_Services\r\n : 0,\r\n assignUserAddons:\r\n data && data.MACDSettings.Assign_UserAddons\r\n ? data.MACDSettings.Assign_UserAddons\r\n : 0,\r\n changeTfTerminatingNumber: 0,\r\n changeVnTerminatingNumber:\r\n data && data.MACDSettings.ChangeVN_TerminatingNumber\r\n ? data.MACDSettings.ChangeVN_TerminatingNumber\r\n : 0,\r\n changeAddress: 0,\r\n changeBillingInfo: 0,\r\n changeBlock:\r\n data && data.MACDSettings.Change_Block\r\n ? data.MACDSettings.Change_Block\r\n : 0,\r\n changeCNAM:\r\n data && data.MACDSettings.Change_CNAM\r\n ? data.MACDSettings.Change_CNAM\r\n : 0,\r\n changeCallPathCount: 0,\r\n changeExtension:\r\n data && data.MACDSettings.Change_Extension && !IsWholesaleUser\r\n ? data.MACDSettings.Change_Extension\r\n : 0,\r\n changeLineType:\r\n data && data.MACDSettings.Change_LineType && !IsWholesaleUser\r\n ? data.MACDSettings.Change_LineType\r\n : 0,\r\n changeListing:\r\n data && data.MACDSettings.Change_Listing && !IsWholesaleUser\r\n ? data.MACDSettings.Change_Listing\r\n : 0,\r\n changeSeatType:\r\n data && data.MACDSettings.Change_SeatType && !IsWholesaleUser\r\n ? data.MACDSettings.Change_SeatType\r\n : 0,\r\n disconnectServices: 0,\r\n unassignUserAddons:\r\n data && data.MACDSettings.Unassign_UserAddons\r\n ? data.MACDSettings.Unassign_UserAddons\r\n : 0,\r\n ipTrunkCallPathBurst:\r\n data && data.MACDSettings.Change_IPTrunking_CallPathPlan_and_Count\r\n ? data.MACDSettings.Change_IPTrunking_CallPathPlan_and_Count\r\n : 0,\r\n };\r\n\r\n sessionStorage.setItem(\r\n \"hasTrunk\",\r\n data.HasTrunking == 1 ? true : false\r\n );\r\n sessionStorage.setItem(\r\n \"hasContactCenter\",\r\n data.HasContactCenter == 1 ? true : false\r\n );\r\n sessionStorage.setItem(\"MacdPerms\", JSON.stringify(permsObj));\r\n // if any NEPS permissions are 1, show the \"Devices\" link\r\n sessionStorage.setItem(\r\n \"DevicePerms\",\r\n JSON.stringify(data.NEPSSettings)\r\n );\r\n sessionStorage.setItem(\r\n \"hasDevices\",\r\n data.NEPSSettings.NepsPermitted == true ? true : false\r\n );\r\n\r\n //Start IP Trunking\r\n if (data) {\r\n sessionStorage.setItem(\"hasIpTrunk\", data.HasIpTrunking == 1 ? true : false);\r\n }\r\n if (data) {\r\n sessionStorage.setItem(\"hasBillingAdminPermission\", data.BillingAdminPermission == 1 ? true : false);\r\n }\r\n // Start Ticketing\r\n // Returns \"NONE\", \"READONLY\", or \"FULL\". ***\r\n // I did some quick testing with new ticketing permission.\r\n // For a SuperAdmin all works as before.\r\n // But, for a user login you should probably call the new API to get permission, and if not \"NONE\" you should add the ticketing menu to the left menu bar.\r\n // Then enable update/create/delete operations on tickets only of the permission is \"FULL\".\r\n if (data && !IsWholesaleUser) {\r\n sessionStorage.setItem(\"hasTicketing\", data.TicketingPermission);\r\n }\r\n //End Ticketing\r\n sessionStorage.setItem(\"hasMacd\", data.AllowMACDs == 1 ? true : false)\r\n // Start VM Usage Report\r\n sessionStorage.setItem(\r\n \"hasVmUsageReport\",\r\n data.ShowVoiceMailReport == 1 ? true : false\r\n );\r\n\r\n // End VM Usage Report\r\n\r\n //Start Ent Trunking\r\n sessionStorage.setItem(\r\n \"hasEntTrunking\",\r\n data.ShowEnterpriseTrunk === 1 ? true : false\r\n );\r\n\r\n sessionStorage.setItem(\r\n \"hasActiveDirectory\",\r\n data.ShowActiveDirectory === 1 ? true : false\r\n );\r\n\r\n //End AD Sync\r\n sessionStorage.setItem(\r\n \"hasTeams\",\r\n data.MSTeamsRoutingType == \"NONE\" ? false : true\r\n );\r\n\r\n sessionStorage.setItem(\r\n \"hasCallRecordingMenu\",\r\n data.HasCallRecordingMenu == 1 ? true : false\r\n );\r\n sessionStorage.setItem(\r\n \"hasCallRecordingService\",\r\n data.HasCallRecordingService == 1 ? true : false\r\n );\r\n\r\n sessionStorage.setItem(\r\n \"hasCircuits\",\r\n data.EnterpriseType === \"VOICE\" ? false : true\r\n );\r\n\r\n sessionStorage.setItem(\r\n \"hasWebEx\",\r\n data.IsWebExAllowed == 1 ? true : false\r\n );\r\n\r\n // Start Locations\r\n await fetchData(\"admin/Locations\")\r\n .then((locations) => {\r\n //\r\n sessionStorage.setItem(\"locationList\", JSON.stringify(locations));\r\n //\r\n let ipTrunkTest = locations.filter((resp) => resp.IsIPTrunking === false);\r\n if (!ipTrunkTest || ipTrunkTest.length === 0) {\r\n sessionStorage.setItem(\"isIpTrunkingOnly\", true);\r\n }\r\n store.dispatch({ type: actions.IP_TRUNKING_ONLY_SET });\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n store.dispatch({ type: actions.IP_TRUNKING_ONLY_SET });\r\n });\r\n //End Locations\r\n })\r\n .catch((err) => console.error(err));\r\n store.dispatch({ type: actions.PERMISSIONS_UPDATED });\r\n };\r\n\r\n serviceChangesLink = () => {\r\n if (this.state.enableServiceChanges) {\r\n return (\r\n \r\n Service Changes\r\n \r\n );\r\n } else return null;\r\n };\r\n\r\n menuLink = (path, icon, label) => {\r\n return (\r\n \r\n {icon}\r\n {label}\r\n \r\n );\r\n };\r\n\r\n trunkingLink = () => {\r\n if (this.state.permissions.HasTrunking) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Trunking\r\n \r\n );\r\n } else return null;\r\n };\r\n\r\n LocationsLink = (path, icon, label) => {\r\n return (\r\n \r\n {icon}\r\n {label}\r\n \r\n );\r\n };\r\n\r\n devicesLink = () => {\r\n let { NEPSSettings } = this.state.permissions;\r\n if (NEPSSettings) {\r\n if (NEPSSettings.NepsPermitted) {\r\n return this.menuLink(\"/devices\", icons.devices, \"Devices\");\r\n } else return null;\r\n } else return null;\r\n };\r\n\r\n contactCenterLink = () => {\r\n if (userIsContactManager() || this.state.permissions.HasContactCenter) {\r\n return this.menuLink(\r\n \"/iframe_page/MSP_CC\",\r\n icons.contactCenter,\r\n \"Contact Center\"\r\n );\r\n } else return null;\r\n };\r\n\r\n billingLink = () => {\r\n if (\r\n !session.IsWholesale() &&\r\n sessionStorage.userEnterpriseNumber !== \"3904000825\" &&\r\n this.state.permissions.BillingAdminPermission == 1\r\n ) {\r\n return this.menuLink(\r\n \"/iframe_page/MSP_PAYMENT\",\r\n icons.billing,\r\n \"Billing\"\r\n );\r\n } else return null;\r\n };\r\n\r\n ipTrunkingLink = () => {\r\n if (this.state.permissions.HasIpTrunking) {\r\n return this.menuLink(\"/ip_trunking\", icons.trunking, \"IP Trunking\");\r\n }\r\n };\r\n\r\n ticketingLink = () => {\r\n if (\r\n this.state.permissions.TicketingPermission && this.state.permissions.TicketingPermission !== \"NONE\" &&\r\n (this.state.permissions.EnterpriseType === \"DATA\" || this.state.permissions.EnterpriseType === \"VOICE\" || this.state.permissions.EnterpriseType === \"MIXED\")\r\n ) {\r\n return this.menuLink(\"/tickets_all\", icons.ticketing, \"Support Tickets\");\r\n }\r\n };\r\n\r\n documentsLink = () => {\r\n if (sessionStorage.IsWholesale === \"true\") {\r\n return this.menuLink(\"/documents\", icons.documents, \"Documents\");\r\n } else return;\r\n };\r\n\r\n addressBookLink = () => {\r\n if (\r\n sessionStorage.IsWholesale === \"true\" &&\r\n this.state.permissionsRetrieved &&\r\n !sessionStorage.isIpTrunkingOnly\r\n ) {\r\n return this.menuLink(\r\n \"/enterprise_contact_directory\",\r\n icons.addressBook,\r\n \"Contact Directory\"\r\n );\r\n } else return;\r\n };\r\n\r\n entTrunkLink = () => {\r\n if (this.state.permissions.ShowEnterpriseTrunk) {\r\n return this.menuLink(\r\n \"/enterprise-trunking\",\r\n icons.entTrunk,\r\n \"Enterprise Trunking\"\r\n );\r\n } else return;\r\n };\r\n\r\n adLink = () => {\r\n if (this.state.permissions.ShowActiveDirectory) {\r\n return this.menuLink(\r\n `/active-directory`,\r\n icons.addressBook,\r\n \"Single Sign On\"\r\n );\r\n } else return;\r\n };\r\n\r\n msTeamsLink = () => {\r\n if (this.state.permissions.MSTeamsRoutingType) {\r\n if (this.state.permissions.MSTeamsRoutingType !== \"OPERATOR_CONNECT\" && this.state.permissions.MSTeamsRoutingType !== \"NONE\") {\r\n return this.menuLink(\r\n `/microsoft-teams`,\r\n icons.msTeams,\r\n \"Microsoft Teams\"\r\n );\r\n }\r\n } else return;\r\n };\r\n\r\n ShowCallRecordingLink = () => {\r\n const userTypeIdViewOnly = ['1102', '1103', '1104', '1105', '1107'];\r\n let userTypeId = [sessionStorage.userTypeId];\r\n let val = userTypeId.every(userTypeId => { return userTypeIdViewOnly.includes(userTypeId) });\r\n return val;\r\n }\r\n\r\n callRecordingLink = () => {\r\n const showCallRecordingLink = this.ShowCallRecordingLink();\r\n if ((showCallRecordingLink === true || showCallRecordingLink === \"true\") && this.state.permissions.HasCallRecordingMenu)\r\n return this.menuLink(\r\n `/call-recording`,\r\n icons.callRecording,\r\n \"Call Recording\"\r\n );\r\n };\r\n\r\n webExLink = () => {\r\n if (this.state.permissions.IsWebExAllowed) {\r\n return this.menuLink(`/webex`, icons.webex, \"WebEx\");\r\n }\r\n };\r\n\r\n circuitsMonitioringLink = () => {\r\n if (this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"VOICE\") {\r\n return this.menuLink(`/circuits-monitoring`, icons.circuits, \"Circuits\");\r\n }\r\n };\r\n\r\n circuitDevicesLink = () => {\r\n if (this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"VOICE\") {\r\n return this.menuLink(\r\n `/circuit-devices`,\r\n icons.circuits,\r\n \"Circuit Devices\"\r\n );\r\n }\r\n };\r\n\r\n circuitMapLink = () => {\r\n if (this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"VOICE\") {\r\n return this.menuLink(\r\n \"/service-locations\",\r\n icons.circuitsMap,\r\n \"Service Locations\"\r\n )\r\n }\r\n }\r\n\r\n mfaAdminTool = () => {\r\n if (sessionStorage.enableMFA === \"true\" &&\r\n ( // super admins\r\n sessionStorage.userTypeId === \"1107\" ||\r\n sessionStorage.userTypeId === \"1105\" ||\r\n sessionStorage.userTypeId === \"1104\" ||\r\n sessionStorage.userTypeId === \"1103\" ||\r\n sessionStorage.userTypeId === \"1102\" ||\r\n // group admins\r\n sessionStorage.userTypeId === \"1106\" ||\r\n sessionStorage.userTypeId === \"1109\" ||\r\n sessionStorage.userTypeId === \"1114\" ||\r\n sessionStorage.userTypeId === \"1115\" ||\r\n sessionStorage.userTypeId === \"1116\")\r\n ) {\r\n return this.menuLink(\r\n \"/manage-mfa-configuration\",\r\n icons.mfa,\r\n \"Manage MFA\"\r\n )\r\n }\r\n }\r\n\r\n operatorConnectLink = () => {\r\n //if (sessionStorage.userRole === \"SUPER_ADMIN\" && sessionStorage.userTypeId === \"1107\") {\r\n return this.menuLink(\r\n //\"/operator-connect\",\r\n \"/operator-connectv1\",\r\n icons.mfa,\r\n \"Operator Connect\"\r\n )\r\n //}\r\n }\r\n\r\n render() {\r\n if (userIsAdmin()) {\r\n if (checkBillingAccount()) {\r\n return (\r\n
    \r\n \r\n {this.state.Header}\r\n
    \r\n {this.menuLink(\"/admin\", icons.dashboard, \"Dashboard\")}\r\n {/* {this.billingLink()} */}\r\n {!session.IsWholesale() &&\r\n sessionStorage.userEnterpriseNumber !== \"3904000825\" &&\r\n this.state.permissions.BillingAdminPermission == 1 && this.menuLink(\r\n \"/BillingNew\",\r\n icons.billing,\r\n \"Billing\"\r\n )}\r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n {this.state.Header}\r\n
    \r\n {this.menuLink(\"/admin\", icons.dashboard, \"Dashboard\")}\r\n {this.LocationsLink(\r\n { pathname: \"/locations\", state: {} },\r\n icons.locations,\r\n \"Locations & Groups\"\r\n )}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" &&\r\n this.menuLink(\r\n \"/services\",\r\n icons.servicesAndUsers,\r\n \"Services & Users\"\r\n )}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.devicesLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.trunkingLink()}\r\n {/* {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" &&\r\n this.menuLink(\r\n \"/iframe_page/MSP_ENTERPRISE\",\r\n icons.enterpriseSettings,\r\n \"Enterprise Settings\"\r\n )} */}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" &&\r\n this.menuLink(\r\n \"/enterprise_settings\",\r\n icons.enterpriseSettings,\r\n \"Enterprise Settings\"\r\n )}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" &&\r\n this.contactCenterLink()}\r\n {/* {this.billingLink()} */}\r\n {!session.IsWholesale() &&\r\n sessionStorage.userEnterpriseNumber !== \"3904000825\" &&\r\n this.state.permissions.BillingAdminPermission == 1 && this.menuLink(\r\n \"/BillingNew\",\r\n icons.billing,\r\n \"Billing\"\r\n )}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.ipTrunkingLink()}\r\n {this.ticketingLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.documentsLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.addressBookLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.entTrunkLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.adLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.msTeamsLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" &&\r\n this.callRecordingLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.webExLink()}\r\n {this.circuitsMonitioringLink()}\r\n {this.mfaAdminTool()}\r\n {this.state.permissions.MSTeamsRoutingType && this.state.permissions.MSTeamsRoutingType == \"OPERATOR_CONNECT\" && this.operatorConnectLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" &&\r\n this.serviceChangesLink()}\r\n \r\n );\r\n }\r\n } else {\r\n // test w/ non-admin user\r\n return (\r\n
    \r\n \r\n {this.state.Header}\r\n
    \r\n {!session.IsWholesale() &&\r\n sessionStorage.userEnterpriseNumber !== \"3904000825\" &&\r\n this.state.permissions.BillingAdminPermission == 1 && this.menuLink(\r\n \"/BillingNew\",\r\n icons.billing,\r\n \"Billing\"\r\n )}\r\n {this.contactCenterLink()}\r\n {this.ticketingLink()}\r\n {this.addressBookLink()}\r\n {this.documentsLink()}\r\n {this.callRecordingLink()}\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n LocationAccountNumber: state.reducer.AccountNumber,\r\n hasTrunking: state.reducer.hasTrunking,\r\n hasContactCenter: state.reducer.hasContactCenter,\r\n hasMacd: state.reducer.hasMacd,\r\n hasDevices: state.reducer.hasDevices,\r\n hasIpTrunk: state.reducer.hasIpTrunk,\r\n hasTicketing: state.reducer.hasTicketing,\r\n permissionsRetrieved: state.reducer.permissionsRetrieved,\r\n };\r\n};\r\nexport default connect(mapStateToProps)(AdminMenu);","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { store } from '../../store/store';\r\nimport { userIsAdmin } from './../../scripts/helper';\r\nimport * as settings from './../../scripts/settings';\r\nimport { training_url} from \"../../constants/urls\"\r\nimport {support_url} from \"../../constants/urls\"\r\nimport * as session from \"../../scripts/session\";\r\nimport { checkBillingAccount } from '../../utility/utility';\r\n\r\nclass HelpCenter extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n\r\n userSelected = () => {\r\n // user was selected in another component and updated in redux store\r\n let newUserId = this.props.UserId;\r\n let currentUserId = this.state.UserId;\r\n if (newUserId !== currentUserId) {\r\n // only make a new API call if the selected user has changed\r\n let apiPath = 'usr/MyServices?UserId=' + newUserId;\r\n this.setState({UserId: newUserId})\r\n this.fetchMyServices(apiPath)\r\n }\r\n }\r\n\r\n subscriberSettings = () => {\r\n \tif (this.props.ServiceNumber) {\r\n \t\treturn (\r\n\t \r\n\t Subscriber Settings\r\n\t \r\n \t\t)\r\n \t} else {\r\n\t \treturn null;\r\n \t}\r\n \t\t\r\n }\r\n\r\n render() {\r\n const isWholesale = session.IsWholesale();\r\n if (!isWholesale && !checkBillingAccount()) {\r\n return (\r\n
    \r\n {/*
    Applications
    */}\r\n {/*this.subscriberSettings()*/}\r\n {/* \r\n Support\r\n */}\r\n \r\n Support\r\n \r\n \r\n Training\r\n \r\n
    \r\n ) \r\n } else return null;\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n ServiceNumber: state.reducer.ServiceNumber\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(HelpCenter);","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport _ from 'lodash';\r\nimport SaveStatus from '../../../components/save_status';\r\nimport * as helper from '../../../scripts/helper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\n\r\nexport default class ManageTrunkModal extends Component {\r\n \r\n initialState = (props = null) => {\r\n return {\r\n TrunkGroupId: 0,\r\n TrunkCustomerProductId: 0,\r\n LocationAccountNumber: '',\r\n loading: false,\r\n saving: false,\r\n error: false,\r\n statusMessage: '',\r\n showModal: false,\r\n DIDAssigned: [],//fakeAssigned,\r\n DIDUnassigned: [],\r\n DIDPending: [],\r\n SelectedAssigned: [],\r\n SelectedUnassigned: [],\r\n SelectedPending: [],\r\n TrunkGroupOptions: [],\r\n TrunkGroups: props ? props.TrunkGroups : []\r\n };\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = this.initialState(props);\r\n this.OpenModal = this.OpenModal.bind(this);\r\n this.CloseModal = this.CloseModal.bind(this);\r\n this.fetchTrunkGroups = this.fetchTrunkGroups.bind(this);\r\n this.RetrieveDataForAssociations = this.RetrieveDataForAssociations.bind(this);\r\n this.SubmitChanges = this.SubmitChanges.bind(this);\r\n this.handleSelection = this.handleSelection.bind(this);\r\n this.handleTransition = this.handleTransition.bind(this);\r\n this.ClearSaveStatusModal = this.ClearSaveStatusModal.bind(this);\r\n }\r\n\r\n // componentWillReceiveProps(props) {\r\n // if ((!this.state.TrunkGroups || this.state.TrunkGroups.length === 0) && props.TrunkGroups && props.TrunkGroups.length > 0)\r\n // {\r\n // this.setState({TrunkGroups: props.TrunkGroups});\r\n // this.setTrunkGroupOptions(props.TrunkGroups);\r\n // }\r\n // }\r\n\r\n OpenModal = async() => {\r\n this.setState({showModal: true, loading: true});\r\n this.fetchTrunkGroups();\r\n }\r\n\r\n CloseModal = () => {\r\n let state = this.initialState();\r\n let {TrunkGroupId, TrunkGroups, TrunkGroupOptions} = this.state;\r\n this.setState({...state, TrunkGroups: TrunkGroups, TrunkGroupOptions: TrunkGroupOptions, TrunkGroupId: TrunkGroupId}\r\n , async () => {\r\n try {\r\n await this.props.loadTrunks();\r\n } catch (e) {\r\n // handle error\r\n }\r\n });\r\n }\r\n\r\n fetchTrunkGroups = async() => {\r\n let apiPath = 'admin/GetIpTrunkGroupList'\r\n let TrunkGroups = await apiCalls.fetchData(apiPath).then((data) => data);\r\n let blankTrunkEntry = {\r\n LocationId: 0,\r\n TrunkGroupID: '',\r\n LineDescription: '- Select Trunk Group -',\r\n LocationAccountNumber: '',\r\n LocationName: '',\r\n CustomerName: '',\r\n CustomerProductId: 0\r\n }\r\n TrunkGroups.unshift(blankTrunkEntry);\r\n let trunkGroupOptions = [];\r\n // let blankOption = (\r\n // \r\n // );\r\n\r\n // trunkGroupOptions.push(blankOption);\r\n if (TrunkGroups && TrunkGroups.length > 0)\r\n {\r\n TrunkGroups.map((record, idx) => {\r\n if (record.CustomerProductId !== 0)\r\n trunkGroupOptions.push((\r\n \r\n )\r\n );\r\n else\r\n trunkGroupOptions.push((\r\n \r\n )\r\n );\r\n });\r\n }\r\n this.setState({TrunkGroupOptions: trunkGroupOptions, TrunkGroups: TrunkGroups, loading: false});\r\n } \r\n\r\n RetrieveDataForAssociations = async(LocationAccountNumber, TrunkGroupID) => {\r\n try\r\n {\r\n await this.setState({loading: true});\r\n let apiPath = `admin/macd/GetIPTrunkAssociation?LocationAccountNumber=${LocationAccountNumber}&TrunkGroupID=${TrunkGroupID}`;\r\n let DIDs = await apiCalls.fetchData(apiPath).then(data => data);\r\n \r\n let assignedDIDs = [];\r\n let unAssignedDIDs = [];\r\n DIDs.map((item) => {\r\n let DIDEntry = {\r\n isSelected: false,\r\n Status: item.TrunkGroupID && item.TrunkGroupID > 0 ? 'Assigned' : 'Unassigned',\r\n ServiceNumber: item.TN,\r\n CustomerProductId: item.CustomerProductId\r\n }\r\n if (DIDEntry.Status === 'Assigned')\r\n assignedDIDs.push(DIDEntry);\r\n else\r\n unAssignedDIDs.push(DIDEntry);\r\n });\r\n\r\n\r\n \r\n \r\n await this.setState({DIDAssigned: assignedDIDs, DIDUnassigned: unAssignedDIDs, loading: false});\r\n }\r\n catch (ex) {\r\n await this.setState({DIDAssigned: [], DIDUnassigned: [], loading: false});\r\n }\r\n }\r\n\r\n formatDids = (queue, arr = []) => {\r\n if (arr && arr.length > 0) {\r\n return arr.map((itm, index) => {\r\n let itemClass = itm.isSelected === true ? 'selectedItem' : '';\r\n let label = itm.ServiceNumber;\r\n if (queue === 'pending')\r\n label += ' (' + itm.Status + ')';\r\n return { this.handleSelection(queue, itm.CustomerProductId);}}\r\n >{label}\r\n })\r\n }\r\n }\r\n\r\n didField = (queue, arr = []) => {\r\n return (\r\n
    \r\n {this.formatDids(queue, arr)}\r\n
    \r\n )\r\n }\r\n\r\n handleSelection = async(queue, CustomerProductId) => {\r\n let newSelectionList = [];\r\n let dynamicDID = 'DID' + queue[0].toUpperCase() + queue.substring(1);\r\n let dynamicSelected = 'Selected' + queue[0].toUpperCase() + queue.substring(1);\r\n let DIDQueue = this.state[dynamicDID].slice();\r\n\r\n let currentItem = null;\r\n currentItem = this.state[dynamicDID].filter(resp => resp.CustomerProductId === CustomerProductId); //from the grids\r\n if (currentItem)\r\n currentItem = currentItem[0];\r\n\r\n let currentItemIdx = _.indexOf(DIDQueue, currentItem); //get before toggling selected status\r\n currentItem.isSelected = !currentItem.isSelected;\r\n newSelectionList = this.state[dynamicSelected].filter(resp => resp.CustomerProductId !== currentItem.CustomerProductId);\r\n if (currentItem.isSelected)\r\n newSelectionList.push(currentItem);\r\n\r\n DIDQueue[currentItemIdx] = currentItem;\r\n await this.setState({ [dynamicSelected]: newSelectionList, [dynamicDID] : DIDQueue });\r\n }\r\n\r\n handleTransition = async(actionName) => {\r\n let {DIDAssigned, DIDPending, DIDUnassigned, SelectedAssigned, SelectedPending, SelectedUnassigned} = this.state;\r\n let newPendingList = DIDPending.slice();\r\n let newAssignedList = DIDAssigned.slice();\r\n let newUnassignedList = DIDUnassigned.slice();\r\n let selectedItems = [];\r\n switch (actionName) {\r\n case 'add':\r\n SelectedUnassigned.map((record, idx) => {\r\n let newRecord = {\r\n CustomerProductId: record.CustomerProductId,\r\n ServiceNumber: record.ServiceNumber,\r\n Status: 'Add',\r\n isSelected: false\r\n };\r\n newPendingList.push(newRecord);\r\n newUnassignedList = newUnassignedList.filter(resp => resp.CustomerProductId !== record.CustomerProductId);\r\n });\r\n SelectedUnassigned = [];\r\n break;\r\n case 'undoAdd':\r\n SelectedPending.map((record, idx) => {\r\n if (record.Status === 'Add')\r\n {\r\n let newRecord = {\r\n CustomerProductId: record.CustomerProductId,\r\n ServiceNumber: record.ServiceNumber,\r\n Status: 'Unassigned',\r\n isSelected: false\r\n }\r\n newUnassignedList.push(newRecord);\r\n newPendingList = newPendingList.filter(resp => resp.CustomerProductId !== record.CustomerProductId);\r\n } else selectedItems.push(record);\r\n\r\n });\r\n SelectedPending = selectedItems;\r\n break;\r\n case 'remove':\r\n SelectedAssigned.map((record, idx) => {\r\n let newRecord = {\r\n CustomerProductId: record.CustomerProductId,\r\n ServiceNumber: record.ServiceNumber,\r\n Status: 'Remove',\r\n isSelected: false\r\n }\r\n newPendingList.push(newRecord);\r\n newAssignedList = newAssignedList.filter(resp => resp.CustomerProductId !== record.CustomerProductId);\r\n });\r\n SelectedAssigned = [];\r\n break;\r\n case 'undoRemove':\r\n\r\n SelectedPending.map((record, idx) => {\r\n if (record.Status === 'Remove')\r\n {\r\n let newRecord = {\r\n CustomerProductId: record.CustomerProductId,\r\n ServiceNumber: record.ServiceNumber,\r\n Status: 'Assigned',\r\n isSelected: false\r\n }\r\n newAssignedList.push(newRecord);\r\n newPendingList = newPendingList.filter(resp => resp.CustomerProductId !== record.CustomerProductId);\r\n } else selectedItems.push(record);\r\n });\r\n SelectedPending = selectedItems;\r\n break;\r\n }\r\n await this.setState({\r\n SelectedAssigned: SelectedAssigned,\r\n SelectedPending: SelectedPending,\r\n SelectedUnassigned: SelectedAssigned,\r\n DIDAssigned: newAssignedList,\r\n DIDPending: newPendingList,\r\n DIDUnassigned: newUnassignedList\r\n });\r\n }\r\n\r\n SubmitChanges = async() => {\r\n try {\r\n if (this.state.DIDPending.length === 0) return; //end process if nothing selected\r\n let apiPath = 'admin/macd/AssociateIPTrunk';\r\n let reqBody = { };\r\n let statusMessage = '';\r\n let bError = false;\r\n let bPartialSuccess = false;\r\n let pending = this.state.DIDPending.slice();\r\n let arrAssigned = pending.filter(resp => resp.Status === 'Add').map((record,idx) => {\r\n return record.CustomerProductId;\r\n });\r\n let arrUnassigned = pending.filter(resp => resp.Status === 'Remove').map((record,idx) => {\r\n return record.CustomerProductId;\r\n });\r\n if (arrAssigned && arrAssigned.length > 0)\r\n {\r\n reqBody = {\r\n TrunkCustomerProductId: this.state.TrunkCustomerProductId,\r\n LocationAccountNumber: this.state.LocationAccountNumber,\r\n ServiceCustomerProductIdList: arrAssigned\r\n }\r\n\r\n await this.setState({saving: true});\r\n let responseAssigns = await apiCalls.post(apiPath, 'PATCH', JSON.stringify(reqBody)).then((data) => data);//.error((message) => {\r\n //bError = true;\r\n //statusMessage = 'An error occurred assigning : ' + message.toString();\r\n //});\r\n if (helper.IsJsonString(responseAssigns.message)) {\r\n let messageObj = JSON.parse(responseAssigns.message);\r\n if (messageObj.MPOErrorList && messageObj.MPOErrorList.length > 0) {\r\n statusMessage += this.displayErrors(messageObj.MPOErrorList);\r\n bError = true;\r\n }\r\n }\r\n else if (responseAssigns.ok) {\r\n statusMessage = 'All DIDs marked for assignment have updated successfully';\r\n bPartialSuccess = true;\r\n }\r\n }\r\n if (arrUnassigned && arrUnassigned.length > 0)\r\n {\r\n apiPath = 'admin/macd/UnassociateIPTrunk';\r\n if (!this.state.saving)\r\n await this.setState({saving: true});\r\n reqBody = {\r\n TrunkCustomerProductId: this.state.TrunkCustomerProductId,\r\n LocationAccountNumber: this.state.LocationAccountNumber,\r\n ServiceCustomerProductIdList: arrUnassigned\r\n }\r\n let responseUnassigns = await apiCalls.post(apiPath, 'PATCH', JSON.stringify(reqBody)).then((assignData) => assignData);//.error((message) => {\r\n //statusMessage += '\\nAn error occurred unassigning : ' + message.toString();\r\n //});\r\n if (helper.IsJsonString(responseUnassigns.message)) {\r\n let messageObj = JSON.parse(responseUnassigns.message);\r\n if (messageObj.MPOErrorList && messageObj.MPOErrorList.length > 0) {\r\n statusMessage += this.displayErrors(messageObj.MPOErrorList);\r\n bError = true;\r\n }\r\n }\r\n else if (responseUnassigns.ok)\r\n {\r\n statusMessage += '\\nAll DIDs marked for unassignment have updated successfully';\r\n bPartialSuccess = true;\r\n }\r\n }\r\n if (!bError)\r\n statusMessage = 'All DIDs marked for assignment and unassignment have updated successfully'\r\n else if (bError && !bPartialSuccess)\r\n statusMessage = 'All DIDs marked for assignment and/or unassignment have failed\\n' + statusMessage;\r\n\r\n await this.setState({saving: false, statusMessage: statusMessage, error: bError});\r\n }\r\n catch (ex) {\r\n this.setState({\r\n saving: false,\r\n error: true,\r\n statusMessage: 'An error occurred: ' + ex.toString(),\r\n });\r\n }\r\n }\r\n\r\n displayErrors = (ErrorList) => {\r\n let errorMsg = '';\r\n ErrorList.map((err, idx) => {\r\n if (err.MPOResultText && err.MPOResultText.length > 0){\r\n err.MPOResultText.map((rt,idx2) => {\r\n errorMsg = errorMsg === '' ? rt.ErrorMessage : '\\n' + rt.ErrorMessage;\r\n });\r\n } else\r\n errorMsg = errorMsg === '' ? err.APIError : '\\n' + err.APIError;\r\n });\r\n return errorMsg;\r\n }\r\n\r\n ClearSaveStatusModal = async() => {\r\n let selectedTrunk = this.state.TrunkCustomerProductId;\r\n let TrunkGroup = this.state.TrunkGroups.filter(resp => resp.CustomerProductId === selectedTrunk);\r\n TrunkGroup = TrunkGroup[0];\r\n \r\n //let selectedText = e.target.selectedText;\r\n //let TrunkGroupId =\r\n await this.setState({error: false, statusMessage: '', loading: true, DIDAssigned: [], DIDPending: [], DIDUnassigned: [], SelectedAssigned: [], SelectedPending: [], SelectedUnassigned: []});\r\n this.RetrieveDataForAssociations(TrunkGroup.LocationAccountNumber, TrunkGroup.TrunkGroupID);\r\n }\r\n\r\n ChangeTrunkGroup = async(e) => {\r\n let selection = parseInt(e.target.value);\r\n \r\n \r\n let TrunkGroup = this.state.TrunkGroups.filter(resp => resp.CustomerProductId === selection);\r\n TrunkGroup = TrunkGroup[0];\r\n \r\n //let selectedText = e.target.selectedText;\r\n //let TrunkGroupId =\r\n await this.setState({\r\n TrunkCustomerProductId: selection, \r\n LocationAccountNumber: TrunkGroup.LocationAccountNumber,\r\n saving: false, \r\n loading: selection > 0 ? true : false, \r\n DIDAssigned: [], DIDPending: [], DIDUnassigned: [], \r\n SelectedAssigned: [], SelectedPending: [], SelectedUnassigned: []\r\n });\r\n if (selection > 0)\r\n this.RetrieveDataForAssociations(TrunkGroup.LocationAccountNumber, TrunkGroup.TrunkGroupID);\r\n }\r\n\r\n savingOrConfirming = () => this.state.saving || this.state.statusMessage;\r\n\r\n modalBody = () => {\r\n if (this.state.loading === true) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n
    \r\n Trunk ID:\r\n \r\n
    \r\n
    \r\n
    \r\n Un-assigned DID(s)\r\n
    \r\n {this.didField('unassigned', this.state.DIDUnassigned)}\r\n
    \r\n
    \r\n
    \r\n { this.handleTransition('add'); }}>{'Assign >'}\r\n {/* SPACING DIV */}\r\n
    \r\n {/* SPACING DIV */}\r\n { this.handleTransition('undoAdd')}}>{'< Undo'}\r\n
    \r\n
    \r\n Pending DID(s)\r\n
    \r\n {this.didField('pending', this.state.DIDPending)}\r\n
    \r\n
    \r\n \r\n
    \r\n Assigned DID(s)\r\n
    \r\n {this.didField('assigned', this.state.DIDAssigned)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n this.OpenModal()}>Manage Associated DIDs\r\n \r\n \r\n \r\n IP Trunk Management\r\n \r\n \r\n {this.modalBody()}\r\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/// IP100 - IP Trunk Group [Node 1=209.134.218.134 - Trunk id=72377 - Product id=1924899]\r\n/// IP100 - IP Trunk Group [Node 1=209.134.220.134 - Trunk id=72378 - Product id=1925144]\r\n// trunk ids under same trunk group share same modal... option to select diff trunk ids in dropdown at the top of the modal\r\n\r\n\r\n//CSAA\r\n// a. 2 Locations with 4 trunks.\r\n//\r\n// i. Location part is TBD as part of implementation\r\n//\r\n// ii. 2 Separate Trunks (2 Ips from ATL and PHX from Momentum each)\r\n//\r\n// iii. Each Trunk will have 750 SIP - Trunk Licenses - Each\r\n//\r\n// iv. Location can have multiple trunks\r\n//\r\n// v. Lowest ID Trunk will be picked first if there are multiple trunks with same IP address\r\n//\r\n// b. 21 DIDs - One Per location","import React, { Component } from 'react';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport Popup from \"reactjs-popup\";\r\nimport moment from 'moment';\r\nimport { serviceFilters } from '../../constants/filters.js';\r\nimport { Link } from 'react-router-dom';\r\nimport ManageTrunkModal from './components/manageTrunkModal';\r\nimport * as settings from '../../scripts/settings';\r\nimport WrappedCell from '../../components/wordWrappedCell';\r\nexport default class IPTrunking extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n Listings: [],\r\n FullListings: [],\r\n Sort: [{ field: \"TrunkGroupID\", dir: \"asc\" }],\r\n gridHeight: (window.innerHeight - 200),\r\n }\r\n const transitionToManagePage = this.transitionToManagePage.bind(this);\r\n const transitionToDetailedCallLogs = this.transitionToDetailedCallLogs.bind(this);\r\n this.fetchTrunkList = this.fetchTrunkList.bind(this);\r\n\r\n class IPCountCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n LoadPop: false,\r\n IPInfo: [],\r\n }\r\n }\r\n\r\n fetchIpList = async (trunkId) => {\r\n await this.setState({ LoadPop: true });\r\n let apiPath = `admin/GetIpTrunkIPList?TrunkGroupID=${trunkId}`;\r\n await apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n let IPContainer = [];\r\n data.forEach(itm => {\r\n if (itm) { IPContainer.push({ IP: itm }); }\r\n });\r\n this.setState({\r\n IPInfo: IPContainer,\r\n LoadPop: false\r\n });\r\n } else {\r\n this.setState({\r\n IPInfo: [],\r\n LoadPop: false,\r\n })\r\n }\r\n });\r\n }\r\n\r\n loadIpList = () => {\r\n if (this.state.LoadPop) {\r\n return \r\n } else {\r\n return (\r\n \r\n

    IP Addresses:

    \r\n \r\n \r\n \r\n
    \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n let trunkGroupId = this.props.dataItem.TrunkGroupID;\r\n let IpCount = this.props.dataItem.IPCount;\r\n let field = this.props.field;\r\n\r\n if (IpCount && IpCount > 0 && field === 'IPCount') {\r\n return (\r\n \r\n (\r\n {IpCount}\r\n )}\r\n onOpen={() => { this.fetchIpList(trunkGroupId) }}\r\n position=\"bottom center\"\r\n closeOnDocumentClick\r\n contentStyle={{\r\n padding: '20px', border: 'unset', width: '250px',\r\n }}\r\n >\r\n {this.loadIpList()}\r\n \r\n \r\n )\r\n } else return {IpCount}\r\n }\r\n }\r\n /* Rolled back changes to release CM5469 - restore later */\r\n class DataLink extends GridCell {\r\n\r\n render() {\r\n let { TrunkGroupID, LocationAccountNumber, LocationName, StartDate, CountServiceNumbers, IPTrunkGroupServiceId } = this.props.dataItem;\r\n\r\n switch (this.props.field) {\r\n case \"TrunkGroupID\":\r\n return (\r\n \r\n { transitionToManagePage(TrunkGroupID, LocationName, StartDate) }} className='no-btn'>{TrunkGroupID}\r\n \r\n );\r\n case \"LocationName\":\r\n return (\r\n \r\n
    \r\n { transitionToManagePage(TrunkGroupID, LocationName, StartDate) }}\r\n className='no-btn'\r\n >\r\n {LocationName}\r\n \r\n
    \r\n \r\n );\r\n case \"CountServiceNumbers\":\r\n if (CountServiceNumbers > 0) {\r\n let path = `/services/${LocationAccountNumber}/ALL_SERVICES/${IPTrunkGroupServiceId}`;\r\n let link = sessionStorage.setItem('AssignedDIDTrunkID', TrunkGroupID)}>\r\n {CountServiceNumbers}\r\n \r\n return {link}\r\n } else {\r\n return {CountServiceNumbers}\r\n }\r\n case \"Detailed_Logs\":\r\n return (\r\n \r\n transitionToDetailedCallLogs(LocationAccountNumber, TrunkGroupID)} className='no-btn'>Call Logs\r\n \r\n );\r\n default:\r\n return (\r\n \r\n { transitionToManagePage(TrunkGroupID, LocationName, StartDate) }} className=\"icon btn\">\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n }\r\n \r\n class IconCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let { TrunkGroupID, LocationName, StartDate } = this.props.dataItem;\r\n return (\r\n \r\n { transitionToManagePage(TrunkGroupID, LocationName, StartDate) }} className=\"icon btn\">\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n this.IconCell = IconCell;\r\n this.DataLink = DataLink;\r\n this.IPCountCell = IPCountCell;\r\n }\r\n\r\n componentDidMount() {\r\n let hasIpTrunk = sessionStorage.hasIpTrunk;\r\n if (hasIpTrunk === 'true') {\r\n this.fetchTrunkList();\r\n } else {\r\n this.props.history.push('/');\r\n }\r\n }\r\n\r\n trunkIDtoString = (data) => {\r\n data.forEach(itm => {\r\n itm.StartDate = new Date(itm.StartDate);\r\n itm.TrunkGroupID = itm.TrunkGroupID.toString();\r\n });\r\n return data;\r\n }\r\n\r\n fetchTrunkList = async () => {\r\n await this.setState({ loading: true });\r\n let apiPath = 'admin/GetIpTrunkingList';\r\n await apiCalls.fetchData(apiPath).then((data) => {\r\n if (data) {\r\n // convert trunkid to string for grid search ability\r\n let newData = this.trunkIDtoString(data);\r\n this.setState({\r\n Listings: newData,\r\n FullListings: newData,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n Listings: [],\r\n FullListings: [],\r\n loading: false,\r\n });\r\n }\r\n }).catch(error => console.error(error));\r\n }\r\n\r\n transitionToManagePage = (trunkId, LocationName, StartDate) => {\r\n sessionStorage.setItem('IPTrunkLocationName', LocationName); // creates values used in Manage IP Trunk form\r\n sessionStorage.setItem('IPTrunkStartDate', moment(StartDate).format(\"M-DD-YYYY hh:mm:ss A\"));\r\n this.props.history.push(`/manage_ip_trunking/${trunkId}`);\r\n }\r\n\r\n transitionToDetailedCallLogs = (LocationAccountNumber, TrunkID) => {\r\n this.props.history.push(`/ip_detailed_call_logs/${LocationAccountNumber}/${TrunkID}`);\r\n }\r\n\r\n sortChange = (event) => {\r\n this.setState({\r\n Listings: orderBy(this.state.Listings, event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullListings;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'TrunkGroupID', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'TrunkName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'LocationName', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n this.delayedSearch(services);\r\n }\r\n else {\r\n this.delayedSearch(fullDetails);\r\n }\r\n }\r\n\r\n delayedSearch = async (services) => {\r\n await this.setState({ loading: true });\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.setState({ Listings: services, loading: false });\r\n }, settings.searchDelay);\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n if (this.state.Listings && this.state.Listings.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n if (this.state.Listings && this.state.Listings.length === 0) {\r\n return

    No Available Data

    \r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    IP Trunking

    \r\n
    \r\n
    \r\n
    { e.preventDefault() }}>\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n};","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from './../../../components/spinners';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\nexport default class IPTrunkReviewModal extends Component {\r\n modalTitle = () => {\r\n if (this.props.reviewSub) {\r\n return Reviewing Submission...\r\n }\r\n if (this.props.successSub) {\r\n return Success!\r\n }\r\n if (this.props.failedSub) {\r\n return Unsuccessful\r\n }\r\n }\r\n\r\n modalBody = () => {\r\n if (this.props.reviewSub) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n if (this.props.failedSub || this.props.successSub) {\r\n let msg = this.props.failedSub ? 'There was an error in your submission attempt, please re-evaluate your input data.' : 'Your submission was successful. Thank you.'\r\n return (\r\n
    \r\n
    {msg}
    \r\n
    \r\n )\r\n }\r\n }\r\n render() {\r\n return (\r\n \r\n \r\n {this.modalTitle()}\r\n \r\n \r\n {this.modalBody()}\r\n \r\n {\r\n this.props.reviewSub ? null : \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n )\r\n }\r\n};","import React, { Component } from 'react';\r\nimport * as helper from '../../scripts/helper';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport ManageTrunkModal from './components/manageTrunkModal';\r\nimport * as _ from 'lodash';\r\nimport IPTrunkReviewModal from './components/ipTrunkReviewModal';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\n\r\nexport default class ManageTrunkGroup extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n TrunkId: props.match.params.trunkId,\r\n Data: [],\r\n ValidIps: [],\r\n OriginalCopy: [],\r\n CustomerProductId: null,\r\n }\r\n this.handleInputChange = this.handleInputChange.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (sessionStorage.hasIpTrunk === 'true' && sessionStorage.IPTrunkLocationName && sessionStorage.IPTrunkStartDate) {\r\n this.fetchIpTrunk();\r\n } else {\r\n this.props.history.push('/');\r\n }\r\n }\r\n\r\n formGroupDropdown = (labelFor, labelName, val, type = 'text') => {\r\n if (labelFor === 'Direction') {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n }\r\n if (labelFor === 'GroupPolicy') {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n }\r\n if (labelFor === 'ServiceState') {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n }\r\n }\r\n\r\n formGroupCheckBox = (labelFor, labelName, val, type = 'checkbox', enabled = true) => {\r\n return (\r\n
    \r\n \r\n this.handleInputChange(e, labelFor, type)}\r\n />\r\n
    \r\n )\r\n }\r\n\r\n formGroupInput = (labelFor, labelName, val, type = 'text') => {\r\n let nodeLabel = labelFor.length === 5 ? labelFor.slice(0, -1) : labelFor.slice(0, -2);\r\n let validIp = helper.ValidateIPaddress(val);\r\n if (nodeLabel === 'Node' && val !== '' && validIp === false) {\r\n return (\r\n
    \r\n \r\n this.handleInputChange(e, labelFor, type)}\r\n />\r\n
    \r\n )\r\n }\r\n return (\r\n
    \r\n \r\n this.handleInputChange(e, labelFor, type)}\r\n />\r\n
    \r\n )\r\n }\r\n\r\n fetchIpTrunk = async () => {\r\n await this.setState({ loading: true });\r\n let apiPath = `admin/GetIpTrunk?TrunkGroupID=${this.state.TrunkId}`;\r\n await apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n let { IPAddress, SIPS, Sansay } = data.ProvInfo;\r\n let obj = {\r\n // SIPS\r\n PromotionOfferPackageID: SIPS.PromotionOfferPackageID,\r\n TrunkId: SIPS.TrunkId,\r\n GroupPolicy: SIPS.GroupPolicy,\r\n ServiceState: SIPS.ServiceState,\r\n Direction: SIPS.Direction,\r\n TechPrefix: SIPS.TechPrefix,\r\n IncomingCNAM: SIPS.IncomingCNAM,\r\n International: SIPS.International,\r\n LineDescription: SIPS.LineDescription,\r\n TerminationCode: SIPS.TerminationCode,\r\n TerminationNotes: SIPS.TerminationNotes,\r\n TNActivation: SIPS.TNActivation,\r\n VoipSwitch: SIPS.VoipSwitch,\r\n UserEmail: SIPS.UserEmail,\r\n // SANSAY\r\n Block: Sansay.Block,\r\n PseudoCarrier: Sansay.PseudoCarrier,\r\n E911Carrier: Sansay.E911Carrier,\r\n Status: Sansay.Status,\r\n SentDate: Sansay.SentDate,\r\n LastUpdatedDate: Sansay.LastUpdatedDate,\r\n // IP Address\r\n Node1: IPAddress.Node1,\r\n Node2: IPAddress.Node2,\r\n Node3: IPAddress.Node3,\r\n Node4: IPAddress.Node4,\r\n Node5: IPAddress.Node5,\r\n Node6: IPAddress.Node6,\r\n Node7: IPAddress.Node7,\r\n Node8: IPAddress.Node8,\r\n Node9: IPAddress.Node9,\r\n Node10: IPAddress.Node10,\r\n Node11: IPAddress.Node11,\r\n Node12: IPAddress.Node12,\r\n }\r\n let copy = JSON.parse(JSON.stringify(obj));\r\n this.setState({\r\n Data: [obj],\r\n OriginalCopy: [copy],\r\n loading: false,\r\n CustomerProductId: data.CustomerProductId,\r\n CustomerLocationId: data.CustomerLocationId,\r\n })\r\n } else {\r\n this.setState({\r\n Data: [],\r\n OriginalCopy: [],\r\n loading: false,\r\n })\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n handleInputChange = (e, labelFor, type) => {\r\n let newValue = type === 'text' ? e.target.value : e.target.checked;\r\n let existingArray = this.state.Data.slice();\r\n existingArray[0][labelFor] = newValue;\r\n // COMPARE ORIGINAL TO UPDATED ARRAY\r\n let originalCopy = this.state.OriginalCopy.slice();\r\n if (originalCopy && originalCopy.length > 0) {\r\n // Using Lodash for Obj comparison... had to add 'HasChanges' prop to Original for lodash to work properly\r\n let objIsEqual = _.isEqual(originalCopy, existingArray);\r\n if (objIsEqual === true) {\r\n delete existingArray[0].HasChanges;\r\n delete originalCopy[0].HasChanges;\r\n } else {\r\n existingArray[0].HasChanges = true;\r\n originalCopy[0].HasChanges = true;\r\n }\r\n }\r\n this.setState({ Data: existingArray });\r\n }\r\n\r\n updateIpTrunk = async () => {\r\n let apiPath = `admin/UpdateIPTrunk`;\r\n let obj = this.state.Data[0];\r\n let ipTrunkDTO = {\r\n CustomerLocationId: this.state.CustomerLocationId,\r\n CustomerProductId: this.state.CustomerProductId,\r\n ProvInfo:\r\n {\r\n SIPS:\r\n {\r\n PromotionOfferPackageID: obj.PromotionOfferPackageID,\r\n TrunkId: obj.TrunkId,\r\n GroupPolicy: obj.GroupPolicy,\r\n ServiceState: obj.ServiceState,\r\n Direction: obj.Direction,\r\n TechPrefix: obj.TechPrefix,\r\n IncomingCNAM: obj.IncomingCNAM,\r\n International: obj.International,\r\n LineDescription: obj.LineDescription,\r\n TerminationCode: obj.TerminationCode,\r\n TerminationNotes: obj.TerminationNotes,\r\n TNActivation: obj.TNActivation,\r\n VoipSwitch: obj.VoipSwitch,\r\n UserEmail: obj.UserEmail\r\n },\r\n Sansay:\r\n {\r\n Block: obj.Block,\r\n PseudoCarrier: obj.PseudoCarrier,\r\n E911Carrier: obj.E911Carrier,\r\n Status: obj.Status,\r\n SentDate: obj.SentDate,\r\n LastUpdatedDate: \"\",\r\n },\r\n IPAddress:\r\n {\r\n Node1: obj.Node1,\r\n Node2: obj.Node2,\r\n Node3: obj.Node3,\r\n Node4: obj.Node4,\r\n Node5: obj.Node5,\r\n Node6: obj.Node6,\r\n Node7: obj.Node7,\r\n Node8: obj.Node8,\r\n Node9: obj.Node9,\r\n Node10: obj.Node10,\r\n Node11: obj.Node11,\r\n Node12: obj.Node12\r\n }\r\n }\r\n }\r\n await this.setState({ SubmitModalOpen: true, reviewSub: true });\r\n let response = await apiCalls.send(apiPath, 'PATCH', JSON.stringify(ipTrunkDTO)).then(res => res).catch(err => console.error(err));\r\n let { message } = response;\r\n if (response.ok === true) {\r\n this.setState({\r\n reviewSub: false,\r\n successSub: true,\r\n });\r\n } else {\r\n this.setState({\r\n reviewSub: false,\r\n failedSub: true,\r\n });\r\n }\r\n }\r\n\r\n handleSubmitForm = async () => {\r\n await this.setState({ errorMsg: null })\r\n let changedItems = this.state.Data.filter(res => res.HasChanges === true);\r\n if (!changedItems || changedItems.length === 0) {\r\n this.setState({ errorMsg: 'No Changes have been made...' });\r\n return;\r\n }\r\n let obj = this.state.Data[0];\r\n let fullIpList = [];\r\n let validIpList = Object.keys(obj).filter(res => {\r\n if (res) {\r\n let nodeLabel = res.length === 5 ? res.slice(0, -1) : res.slice(0, -2);\r\n if (nodeLabel === \"Node\") {\r\n fullIpList.push(res);\r\n if (helper.ValidateIPaddress(obj[res]) === true || obj[res] === '') return res;\r\n }\r\n }\r\n });\r\n if (validIpList && fullIpList && (validIpList.length === fullIpList.length)) {\r\n if (!obj.Node1 || obj.Node1 === '' || obj.Node1 === null) {\r\n this.setState({ errorMsg: 'IP Address Node 1 may not be empty...' });\r\n return;\r\n }\r\n this.updateIpTrunk();\r\n return;\r\n } else {\r\n this.setState({ errorMsg: 'The requested submission contains an invalid IP Address...' });\r\n return;\r\n }\r\n }\r\n\r\n errorHandler = () => {\r\n if (this.state.errorMsg) {\r\n return \r\n {this.state.errorMsg === 'Success!' ?
    {this.state.errorMsg}
    :
    {this.state.errorMsg}
    }\r\n \r\n }\r\n }\r\n\r\n ipTrunkForm = () => {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n if (this.state.Data && this.state.Data.length > 0) {\r\n let Data = this.state.Data[0];\r\n return (\r\n
    \r\n
    \r\n
    Provisioning Information
    \r\n {/* {this.manageTrunkModal()} */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.formGroupInput('TrunkId', 'Trunk ID', this.state.TrunkId)}\r\n {this.formGroupInput('TrunkLocationAddress', 'Trunk Location Address', sessionStorage.IPTrunkLocationName)}\r\n {this.formGroupCheckBox('IncomingCNAM', 'CNAM Delivery', Data.IncomingCNAM)}\r\n {this.formGroupCheckBox('International', 'International Allowed', Data.International, 'checkbox', false)}\r\n {this.formGroupInput('TechPrefix', 'Tech Prefix')}\r\n
    \r\n {this.formGroupInput('Node1', 'IP Address Node 1', Data.Node1)}\r\n {this.formGroupInput('Node3', 'IP Address Node 3', Data.Node3)}\r\n {this.formGroupInput('Node5', 'IP Address Node 5', Data.Node5)}\r\n {this.formGroupInput('Node7', 'IP Address Node 7', Data.Node7)}\r\n {this.formGroupInput('Node9', 'IP Address Node 9', Data.Node9)}\r\n {this.formGroupInput('Node11', 'IP Address Node 11', Data.Node11)}\r\n
    \r\n
    \r\n {this.formGroupInput('LineDescription', 'Line Description', Data.LineDescription)}\r\n {this.formGroupInput('SentDate', 'Trunk Start Date', sessionStorage.IPTrunkStartDate)}\r\n {this.formGroupDropdown('GroupPolicy', 'Group Policy', Data.GroupPolicy)}\r\n {this.formGroupDropdown('ServiceState', 'Service State', Data.ServiceState)}\r\n {this.formGroupDropdown('Direction', 'Direction', Data.Direction)}\r\n {this.formGroupInput('Node2', 'IP Address Node 2', Data.Node2)}\r\n {this.formGroupInput('Node4', 'IP Address Node 4', Data.Node4)}\r\n {this.formGroupInput('Node6', 'IP Address Node 6', Data.Node6)}\r\n {this.formGroupInput('Node8', 'IP Address Node 8', Data.Node8)}\r\n {this.formGroupInput('Node10', 'IP Address Node 10', Data.Node10)}\r\n {this.formGroupInput('Node12', 'IP Address Node 12', Data.Node12)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Submit\r\n {this.errorHandler()}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n }\r\n\r\n handleShow = () => {\r\n if (!this.state.showModal)\r\n this.setState({ showModal: true });\r\n else\r\n this.setState({ showModal: false })\r\n }\r\n\r\n manageTrunkModal = () => {\r\n return \r\n }\r\n\r\n handleSubmitModal = () => {\r\n if (!this.state.SubmitModalOpen)\r\n this.setState({ SubmitModalOpen: true });\r\n else {\r\n this.fetchIpTrunk();\r\n this.setState({ SubmitModalOpen: false })\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    IP Trunking

    \r\n
    \r\n {this.ipTrunkForm()}\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n};","import React, { Component } from 'react';\nimport { homePageUrl } from './../scripts/helper';\n\nclass UnMatchedPath extends Component {\n\n componentWillMount() {\n this.props.history.push(homePageUrl());\n }\n\n render() {\n return null\n }\n\n}\n\nexport default UnMatchedPath;","import React, { Component } from 'react';\r\nimport format from 'string-format';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport moment from 'moment';\r\nimport { DatePicker } from '@progress/kendo-dateinputs-react-wrapper';\r\nimport * as settings from '../../../scripts/settings';\r\nimport * as config from '../../../requests/config';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { Grid, GridColumn as Column } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport * as helper from '../../../scripts/helper';\r\n\r\nexport default class CallLogsFrame extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n LocationAccountNumber: '',\r\n logs: [],\r\n Sort: [],\r\n loading: false,\r\n call_category: \"ALL\",\r\n call_type: \"1\",\r\n status_type: \"1\",\r\n date_type: \"1\", // Today\r\n from_date: moment(Date.now()).startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\")\r\n }\r\n this.handleCallCategory = this.handleCallCategory.bind(this);\r\n this.handleCallType = this.handleCallType.bind(this);\r\n this.handleStatusType = this.handleStatusType.bind(this);\r\n this.handleDate = this.handleDate.bind(this);\r\n this.handleChangeFromDate = this.handleChangeFromDate.bind(this);\r\n this.handleChangeToDate = this.handleChangeToDate.bind(this);\r\n };\r\n\r\n componentDidMount() {\r\n if (this.props.isLocation) {\r\n this.fetchLocations()\r\n } else {\r\n this.fetchCallLogs(this.getApiUrl(), settings.noResultsMsg);\r\n }\r\n }\r\n\r\n getApiUrl() {\r\n let apiUrl = this.props.apiPath;\r\n if (this.props.isLocation) {\r\n apiUrl = format(apiUrl, this.state);\r\n }\r\n\r\n // let finalToDate = this.state.to_date + '%2023:59:59';\r\n // let newOptions = {\r\n // call_type: this.state.call_type,\r\n // status_type: this.state.status_type,\r\n // call_category: this.state.call_category,\r\n // from_date: this.state.from_date,\r\n // to_date: finalToDate\r\n // };\r\n\r\n apiUrl += format('&CallType={call_type}&CallStatus={status_type}&CallCategory={call_category}&FromDate={from_date}&ToDate={to_date}', this.state);\r\n return apiUrl;\r\n }\r\n\r\n fetchCallLogs = async (apiPath) => {\r\n await this.setState({ loading: true });\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n if (data !== null && data !== undefined) {\r\n let revisedData = this.revisedData(data);\r\n this.setState({ logs: revisedData, loading: false });\r\n\r\n } else this.setState({ logs: [], loading: false });\r\n }).catch((msg) => console.error(msg));\r\n }\r\n\r\n revisedData = (data) => {\r\n let revisedData = data.map((item, idx) => {\r\n item.Release_Time = new Date(item.Release_Time);\r\n item.Start_Time = new Date(item.Start_Time);\r\n return item;\r\n });\r\n return revisedData;\r\n }\r\n\r\n handleChangeFromDate = (event) => {\r\n let from = moment(event.sender._oldText, \"M/D/YYYY\");\r\n if (from.isValid()) {\r\n this.setState({ ...{ from_date: from.format(\"YYYY-MM-DD\") } }, () => {\r\n let to = moment(this.state.to_date);\r\n if (to.isValid() && to.isSameOrAfter(from)) {\r\n this.setState({ ...{ logs: [], loading: true } }, this.componentDidMount);\r\n }\r\n });\r\n }\r\n }\r\n\r\n handleChangeToDate = (event) => {\r\n let to = moment(event.sender._oldText, \"M/D/YYYY\");\r\n if (to.isValid()) {\r\n this.setState({ ...{ to_date: to.format(\"YYYY-MM-DD\") } }, () => {\r\n let from = moment(this.state.from_date);\r\n if (from.isValid() && from.isSameOrBefore(to)) {\r\n this.setState({ ...{ logs: [], loading: true } }, this.componentDidMount);\r\n }\r\n });\r\n }\r\n }\r\n\r\n handleDate = (event) => {\r\n switch (event.target.value) {\r\n case \"1\":\r\n this.setState({\r\n ...{\r\n logs: [], date_type: event.target.value, from_date: moment(Date.now()).startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\"), loading: true\r\n }\r\n }, this.componentDidMount);\r\n return;\r\n case \"2\":\r\n this.setState({\r\n ...{\r\n logs: [], date_type: event.target.value, from_date: moment(Date.now()).subtract(1, \"days\").startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now()).endOf(\"day\").subtract(1, \"days\").format(\"YYYY-MM-DD\"), loading: true\r\n }\r\n }, this.componentDidMount);\r\n return;\r\n case \"3\":\r\n this.setState({\r\n ...{\r\n logs: [], date_type: event.target.value, from_date: moment(Date.now()).subtract(7, \"days\").startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\"), loading: true\r\n }\r\n }, this.componentDidMount);\r\n return;\r\n case \"4\":\r\n this.setState({\r\n ...{\r\n logs: [], date_type: event.target.value, from_date: moment(Date.now()).subtract(30, \"days\").startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\"), loading: true\r\n }\r\n }, this.componentDidMount);\r\n return;\r\n case \"5\":\r\n this.setState({\r\n ...{\r\n logs: [], date_type: event.target.value, from_date: moment(Date.now()).subtract(90, \"days\").startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\"), loading: true\r\n }\r\n }, this.componentDidMount);\r\n return;\r\n case \"6\":\r\n this.setState({ ...{ logs: [], date_type: event.target.value, from_date: \"From\", to_date: \"To\" } });\r\n return;\r\n }\r\n }\r\n\r\n handleCallCategory = (event) => {\r\n this.setState({ ...{ logs: [], call_category: event.target.value, loading: true } }, this.componentDidMount);\r\n }\r\n\r\n handleCallType = (event) => {\r\n this.setState({ ...{ logs: [], call_type: event.target.value, loading: true } }, this.componentDidMount);\r\n }\r\n\r\n handleStatusType = (event) => {\r\n this.setState({ ...{ logs: [], status_type: event.target.value, loading: true } }, this.componentDidMount);\r\n }\r\n\r\n searchStatus = () => {\r\n if (this.state.loading) {\r\n return \r\n } else if (this.state.logs.length < 1) {\r\n return (\r\n
    \r\n No results for the filters selected.\r\n
    \r\n )\r\n } else return null\r\n }\r\n\r\n exportBtn = () => {\r\n if (this.state.logs.length > 0) {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n this.exportCallLogs()} >Export Call Logs\r\n
    \r\n )\r\n } else null;\r\n }\r\n\r\n exportCallLogs = () => {\r\n this.refs.downloadCsv.submit();\r\n this.refs.exportBtn.text = 'Downloading...';\r\n setTimeout(() => {\r\n this.refs.exportBtn.text = 'Export Call Logs';\r\n }, 2000);\r\n }\r\n\r\n sortListings = (sort, logs = null) => {\r\n let returnObj = [];\r\n if (this.state.logs) {\r\n if (logs == null) logs = this.state.logs.slice();\r\n let sortedSet = orderBy(logs, sort);\r\n returnObj = sortedSet;\r\n if (sort.length) {\r\n returnObj = helper.blanksAfterZ(sortedSet, sort);\r\n }\r\n }\r\n return returnObj;\r\n }\r\n\r\n sortChange = async (event) => {\r\n await this.setState({\r\n logs: this.sortListings(event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading || this.state.logs.length === 0) {\r\n return (\r\n
    {this.searchStatus()}
    \r\n )\r\n } else {\r\n if (this.state.logs && this.state.logs.length > 0) {\r\n let colWidth = '150px';\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n locationDropDown = () => {\r\n if (this.props.isLocation) {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n } else return null;\r\n }\r\n\r\n fetchLocations = async (apiPath = null) => {\r\n await this.setState({ loading: true });\r\n if (!apiPath) apiPath = 'admin/GetIpTrunkingLocationList';\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n if (data) {\r\n let locationOptions = data.map((location, index) => {\r\n return this.locationOption(location, index);\r\n });\r\n if (!sessionStorage.ipTrunkLocationNum) {\r\n this.setState({ locationOptions: locationOptions, LocationAccountNumber: data[0].LocationAccountNumber, LocationName: data[0].LocationName });\r\n } else {\r\n this.setState({ locationOptions: locationOptions, LocationAccountNumber: sessionStorage.ipTrunkLocationNum, LocationName: data[0].LocationName });\r\n }\r\n if (this.state.LocationAccountNumber !== undefined || this.state.LocationAccountNumber !== null) {\r\n this.fetchCallLogs(this.getApiUrl(), settings.noResultsMsg);\r\n }\r\n } else if (data === null) {\r\n this.setState({ locations: [], resultsMsg: settings.noResultsMsg });\r\n };\r\n });\r\n }\r\n\r\n locationOption = (location, index) => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n changeLocation = (event) => {\r\n let { value } = event.target;\r\n let getLocationName = (acctNum) => {\r\n return this.state.locationOptions.map(itm => itm.props).filter(res => res.value === acctNum)[0].children;\r\n }\r\n if (value && value !== '') {\r\n sessionStorage.setItem('ipTrunkLocationNum', value);\r\n }\r\n this.setState({\r\n LocationAccountNumber: value,\r\n LocationName: event.target.selectedOptions ? event.target.selectedOptions[0].text : getLocationName(value)\r\n }, this.componentDidMount);\r\n }\r\n\r\n callLogFilter = (htmlSelect) => {\r\n return (\r\n
    \r\n {htmlSelect}\r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {this.props.cardTitle}\r\n {this.state.loading ? null : this.state.logs.length} \r\n

    \r\n
    \r\n
    \r\n {this.exportBtn()}\r\n
    \r\n
    \r\n {this.locationDropDown()}\r\n
    \r\n {this.callLogFilter()}\r\n {this.callLogFilter()}\r\n {this.callLogFilter()}\r\n {\r\n (this.state.date_type === \"6\") ?\r\n (
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    )\r\n : \"\"\r\n }\r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n};","import React, { Component } from 'react';\r\nimport CallLogsFrame from './call_logs_frame';\r\n\r\nexport default class IPCallLogsLocation extends Component {\r\n\r\n getApiUrl = () => {\r\n let apiUrl = `usr/GetIpTrunkingCallLogs?LocationAccountNumber={LocationAccountNumber}&TrunkID=0`;\r\n return apiUrl;\r\n }\r\n\r\n render() {\r\n return \r\n }\r\n};","import React, { Component } from 'react';\r\nimport format from 'string-format';\r\nimport CallLogsFrame from './call_logs_frame';\r\n\r\nexport default class IPCallLogsDetailed extends Component {\r\n\r\n getApiUrl() {\r\n let apiUrl = format('usr/GetIpTrunkingCallLogs?LocationAccountNumber={LocationAccountNumber}&TrunkID={TrunkID}', this.props.match.params);\r\n return apiUrl;\r\n }\r\n\r\n render() {\r\n return \r\n }\r\n};","import React, { Component } from \"react\";\r\nimport format from \"string-format\";\r\nimport moment from \"moment\";\r\nimport { DatePicker } from \"@progress/kendo-dateinputs-react-wrapper\";\r\nimport * as settings from \"../scripts/settings\";\r\nimport * as config from \"../requests/config\";\r\nimport * as apiCalls from \"../requests/api_calls\";\r\nimport { connect } from \"react-redux\";\r\nimport BSCallLogsTab from \"../components/bs_call_logs_tab\";\r\nimport SansayCallLogsTab from \"../components/sansay_call_logs_tab\";\r\nimport FaxCallLogsTab from \"../components/fax_call_logs_tab\";\r\n\r\nclass EnterpriseCallLogsAll extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n LocationAccountNumber: \"\",\r\n PBXUserID: \"\",\r\n BSCallLogs: [],\r\n SansayCallLogs: [],\r\n FaxCallLogs: [],\r\n Sort: [],\r\n tab: \"bs\",\r\n PBXUserID: \"\",\r\n loading: false,\r\n call_category: this.getStoredCallFilters()[2],\r\n call_type: this.getStoredCallFilters()[0],\r\n status_type: this.getStoredCallFilters()[1],\r\n date_type: this.getStoredCallFilters()[5],\r\n from_date: this.getStoredCallFilters()[3],\r\n to_date: this.getStoredCallFilters()[4],\r\n hasIpTrunking: sessionStorage.hasIpTrunk\r\n };\r\n this.handleCallCategory = this.handleCallCategory.bind(this);\r\n this.handleCallType = this.handleCallType.bind(this);\r\n this.handleStatusType = this.handleStatusType.bind(this);\r\n this.handleDate = this.handleDate.bind(this);\r\n this.handleChangeFromDate = this.handleChangeFromDate.bind(this);\r\n this.handleChangeToDate = this.handleChangeToDate.bind(this);\r\n this.changeTab = this.changeTab.bind(this);\r\n }\r\n\r\n getStoredCallFilters = () => {\r\n let callType = \"1\";\r\n let callStatus = \"1\";\r\n let callCategory = \"1\";\r\n let dateType = \"3\";\r\n let { EnterpriseCallCategoryFilter, CallActivityFilters } = sessionStorage;\r\n let from = moment(Date.now())\r\n .subtract(7, \"days\")\r\n .startOf(\"day\")\r\n .format(\"YYYY-MM-DD\");\r\n let to = moment(Date.now())\r\n .endOf(\"day\")\r\n .format(\"YYYY-MM-DD\");\r\n\r\n if (CallActivityFilters) {\r\n let { status, type, fromDate, toDate } = JSON.parse(CallActivityFilters);\r\n if (type) {\r\n if (type === \"INCOMING\") {\r\n callType = \"2\";\r\n } else if (type === \"OUTGOING\") {\r\n callType = \"3\";\r\n } else {\r\n callType = \"1\";\r\n }\r\n }\r\n if (status) {\r\n if (status === \"CONNECTED\") {\r\n callStatus = \"2\";\r\n } else if (status === \"NO_ANSWER\") {\r\n callStatus = \"3\";\r\n } else if (status === \"INCOMPLETE\") {\r\n callStatus = \"4\";\r\n } else if (status === \"FORWARDED\") {\r\n callStatus = \"5\";\r\n } else {\r\n callStatus = \"1\";\r\n }\r\n }\r\n if (fromDate && toDate) {\r\n from = fromDate;\r\n to = toDate;\r\n let date1 = new Date(fromDate);\r\n let date2 = new Date(toDate);\r\n let timeDiff = Math.abs(date2.getTime() - date1.getTime());\r\n let dayDifference = Math.ceil(timeDiff / (1000 * 3600 * 24));\r\n if (dayDifference === 6) {\r\n dateType = \"3\";\r\n } else if (dayDifference === 29) {\r\n dateType = \"4\";\r\n } else if (dayDifference === 89) {\r\n dateType = \"5\";\r\n } else {\r\n dateType = \"6\";\r\n }\r\n }\r\n }\r\n if (EnterpriseCallCategoryFilter) {\r\n if (EnterpriseCallCategoryFilter === \"International\") {\r\n callCategory = \"2\";\r\n } else if (EnterpriseCallCategoryFilter === \"Internal\") {\r\n callCategory = \"3\";\r\n } else if (EnterpriseCallCategoryFilter === \"Inbound\") {\r\n callCategory = \"4\";\r\n } else if (EnterpriseCallCategoryFilter === \"Out Local\") {\r\n callCategory = \"5\";\r\n } else if (EnterpriseCallCategoryFilter === \"Out LD\") {\r\n callCategory = \"6\";\r\n } else if (EnterpriseCallCategoryFilter === \"Other\") {\r\n callCategory = \"7\";\r\n } else {\r\n callCategory = \"1\";\r\n }\r\n }\r\n return [callType, callStatus, callCategory, from, to, dateType];\r\n };\r\n\r\n componentDidMount() {\r\n this.fetchLocations();\r\n setTimeout(() => {\r\n sessionStorage.removeItem(\"EnterpriseCallCategoryFilter\");\r\n sessionStorage.removeItem(\"CallActivityFilters\");\r\n }, 3000);\r\n }\r\n\r\n getApiUrl() {\r\n\r\n let finalToDate = this.state.to_date + '%2023:59:59';\r\n let newOptions = {\r\n call_type: this.state.call_type,\r\n status_type: this.state.status_type,\r\n call_category: this.state.call_category,\r\n from_date: this.state.from_date,\r\n to_date: finalToDate\r\n };\r\n\r\n let apiUrl = `usr/GetCallLogs?LocationAccountNumber=${this.state.LocationAccountNumber}&PBXUserID=${this.state.PBXUserID}`;\r\n apiUrl += format(\"&CallType={call_type}&CallStatus={status_type}&CallCategory={call_category}&FromDate={from_date}&ToDate={to_date}\", newOptions);\r\n return apiUrl;\r\n }\r\n\r\n fetchCallLogs = async apiPath => {\r\n let selectedTab = this.state.tab;\r\n await this.setState({ loading: true });\r\n apiCalls\r\n .fetchData(apiPath)\r\n .then(async data => {\r\n if (data !== null && data !== undefined) {\r\n if (typeof data === \"string\" && data.includes(\"Unable to handle request size. Out of memory.\")) {\r\n // too much data\r\n this.setState({\r\n BSCallLogs: [],\r\n SansayCallLogs: [],\r\n FaxCallLogs: [],\r\n logs: [],\r\n loading: false,\r\n isLimited: true,\r\n });\r\n }\r\n let { BSCallLogs, SansayCallLogs, FDRCallLogs } = data;\r\n let CallStatus = this.state.status_type;\r\n if (BSCallLogs.length === 0 && SansayCallLogs.length > 0) {\r\n selectedTab = \"sansay\";\r\n }\r\n if (SansayCallLogs.length === 0 && BSCallLogs.length > 0) {\r\n selectedTab = \"bs\";\r\n }\r\n if (BSCallLogs.length === 0 && SansayCallLogs.length === 0 && FDRCallLogs.length > 0) {\r\n selectedTab = 'fax';\r\n CallStatus = this.getStoredCallFilters()[1];\r\n }\r\n\r\n let revisedBSCallLogs = this.revisedData(BSCallLogs);\r\n let revisedSansayLogs = this.revisedData(SansayCallLogs, true);\r\n let revisedFaxLogs = this.revisedData(FDRCallLogs, false, true);\r\n\r\n await this.setState({\r\n BSCallLogs: revisedBSCallLogs,\r\n SansayCallLogs: revisedSansayLogs,\r\n FaxCallLogs: revisedFaxLogs,\r\n status_type: CallStatus,\r\n loading: false,\r\n tab: selectedTab,\r\n isLimited: false,\r\n });\r\n } else\r\n this.setState({\r\n BSCallLogs: [],\r\n SansayCallLogs: [],\r\n FaxCallLogs: [],\r\n logs: [],\r\n loading: false,\r\n isLimited: false,\r\n });\r\n })\r\n .catch((msg) => {\r\n console.error(msg);\r\n });\r\n };\r\n\r\n revisedData = (data, isIPTrunking = false, isFax = false) => {\r\n let revisedData = [];\r\n if (data && data.length > 0) {\r\n if (isIPTrunking)\r\n revisedData = data.map((item, idx) => {\r\n item.Release_Time = new Date(item.Release_Time);\r\n item.Start_Time = new Date(item.Start_Time);\r\n return item;\r\n });\r\n else if (isFax)\r\n revisedData = data.map((item, idx) => {\r\n item.StartTime = new Date(item.StartTime);\r\n return item;\r\n });\r\n else\r\n revisedData = data.map((item, idx) => {\r\n item.Date = new Date(item.Date);\r\n return item;\r\n });\r\n }\r\n\r\n return revisedData;\r\n };\r\n\r\n handleChangeFromDate = event => {\r\n let from = moment(event.sender._oldText, \"M/D/YYYY\");\r\n if (from.isValid()) {\r\n this.setState({ ...{ from_date: from.format(\"YYYY-MM-DD\") } }, () => {\r\n let to = moment(this.state.to_date);\r\n if (to.isValid() && to.isSameOrAfter(from)) {\r\n this.setState(\r\n {\r\n ...{\r\n SansayCallLogs: [],\r\n BSCallLogs: [],\r\n FaxCallLogs: [],\r\n loading: true\r\n }\r\n },\r\n this.componentDidMount\r\n );\r\n }\r\n });\r\n }\r\n };\r\n\r\n handleChangeToDate = event => {\r\n let to = moment(event.sender._oldText, \"M/D/YYYY\");\r\n if (to.isValid()) {\r\n this.setState({ ...{ to_date: to.format(\"YYYY-MM-DD\") } }, () => {\r\n let from = moment(this.state.from_date);\r\n if (from.isValid() && from.isSameOrBefore(to)) {\r\n this.setState(\r\n {\r\n ...{\r\n SansayCallLogs: [],\r\n BSCallLogs: [],\r\n FaxCallLogs: [],\r\n loading: true\r\n }\r\n },\r\n this.componentDidMount\r\n );\r\n }\r\n });\r\n }\r\n };\r\n\r\n handleDate = event => {\r\n switch (event.target.value) {\r\n case \"1\":\r\n this.setState(\r\n {\r\n ...{\r\n SansayCallLogs: [],\r\n BSCallLogs: [],\r\n FaxCallLogs: [],\r\n date_type: event.target.value,\r\n from_date: moment(Date.now())\r\n .startOf(\"day\")\r\n .format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now())\r\n .endOf(\"day\")\r\n .format(\"YYYY-MM-DD\"),\r\n loading: true\r\n }\r\n },\r\n this.componentDidMount\r\n );\r\n return;\r\n case \"2\":\r\n this.setState(\r\n {\r\n ...{\r\n SansayCallLogs: [],\r\n BSCallLogs: [],\r\n FaxCallLogs: [],\r\n date_type: event.target.value,\r\n from_date: moment(Date.now())\r\n .subtract(1, \"days\")\r\n .startOf(\"day\")\r\n .format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now())\r\n .endOf(\"day\")\r\n .subtract(1, \"days\")\r\n .format(\"YYYY-MM-DD\"),\r\n loading: true\r\n }\r\n },\r\n this.componentDidMount\r\n );\r\n return;\r\n case \"3\":\r\n this.setState(\r\n {\r\n ...{\r\n SansayCallLogs: [],\r\n BSCallLogs: [],\r\n FaxCallLogs: [],\r\n date_type: event.target.value,\r\n from_date: moment(Date.now())\r\n .subtract(7, \"days\")\r\n .startOf(\"day\")\r\n .format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now())\r\n .endOf(\"day\")\r\n .format(\"YYYY-MM-DD\"),\r\n loading: true\r\n }\r\n },\r\n this.componentDidMount\r\n );\r\n return;\r\n case \"4\":\r\n this.setState(\r\n {\r\n ...{\r\n SansayCallLogs: [],\r\n BSCallLogs: [],\r\n FaxCallLogs: [],\r\n date_type: event.target.value,\r\n from_date: moment(Date.now())\r\n .subtract(30, \"days\")\r\n .startOf(\"day\")\r\n .format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now())\r\n .endOf(\"day\")\r\n .format(\"YYYY-MM-DD\"),\r\n loading: true\r\n }\r\n },\r\n this.componentDidMount\r\n );\r\n return;\r\n case \"5\":\r\n this.setState(\r\n {\r\n ...{\r\n SansayCallLogs: [],\r\n BSCallLogs: [],\r\n FaxCallLogs: [],\r\n date_type: event.target.value,\r\n from_date: moment(Date.now())\r\n .subtract(90, \"days\")\r\n .startOf(\"day\")\r\n .format(\"YYYY-MM-DD\"),\r\n to_date: moment(Date.now())\r\n .endOf(\"day\")\r\n .format(\"YYYY-MM-DD\"),\r\n loading: true\r\n }\r\n },\r\n this.componentDidMount\r\n );\r\n return;\r\n case \"6\":\r\n this.setState({\r\n ...{\r\n SansayCallLogs: [],\r\n BSCallLogs: [],\r\n FaxCallLogs: [],\r\n date_type: event.target.value,\r\n from_date: \"From\",\r\n to_date: \"To\"\r\n }\r\n });\r\n return;\r\n }\r\n };\r\n\r\n handleCallCategory = event => {\r\n this.setState(\r\n {\r\n ...{\r\n SansayCallLogs: [],\r\n BSCallLogs: [],\r\n FaxCallLogs: [],\r\n call_category: event.target.value,\r\n loading: true\r\n }\r\n },\r\n this.componentDidMount\r\n );\r\n };\r\n\r\n handleCallType = event => {\r\n this.setState(\r\n {\r\n ...{\r\n SansayCallLogs: [],\r\n BSCallLogs: [],\r\n FaxCallLogs: [],\r\n call_type: event.target.value,\r\n loading: true\r\n }\r\n },\r\n this.componentDidMount\r\n );\r\n };\r\n\r\n handleStatusType = event => {\r\n this.setState(\r\n {\r\n ...{\r\n SansayCallLogs: [],\r\n BSCallLogs: [],\r\n FaxCallLogs: [],\r\n status_type: event.target.value,\r\n loading: true\r\n }\r\n },\r\n this.componentDidMount\r\n );\r\n };\r\n\r\n exportSansayBtn = () => {\r\n if ((this.state.tab === \"sansay\" && this.state.SansayCallLogs.length > 0) || (this.state.tab === \"sansay\" && this.state.isLimited)) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.exportCallLogs()}\r\n >\r\n Export Call Logs\r\n \r\n
    \r\n );\r\n } else return null;\r\n };\r\n\r\n exportBsBtn = () => {\r\n if ((this.state.tab === \"bs\" && this.state.BSCallLogs.length > 0) || (this.state.tab === \"bs\" && this.state.isLimited)) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.exportCallLogs()}\r\n >\r\n Export Call Logs\r\n \r\n
    \r\n );\r\n } else return null;\r\n };\r\n\r\n exportFaxBtn = () => {\r\n if ((this.state.tab === \"fax\" && this.state.FaxCallLogs.length > 0) || (this.state.tab === \"fax\" && this.state.isLimited)) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.exportCallLogs()}\r\n >\r\n Export Call Logs\r\n \r\n
    \r\n );\r\n } else return null;\r\n };\r\n\r\n exportCallLogs = () => {\r\n this.refs.downloadCsv.submit();\r\n this.refs.exportBtn.text = \"Downloading...\";\r\n setTimeout(() => {\r\n this.refs.exportBtn.text = \"Export Call Logs\";\r\n }, 2000);\r\n };\r\n\r\n fetchLocations = async (apiPath = null) => {\r\n await this.setState({ loading: true });\r\n if (!apiPath) apiPath = \"admin/Locations\";\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n let locationOptions = data.map((location, index) => {\r\n return this.locationOption(location, index);\r\n });\r\n this.setState({ locationOptions: locationOptions, PBXUserID: \"\" });\r\n this.fetchCallLogs(this.getApiUrl(), settings.noResultsMsg);\r\n } else if (data === null) {\r\n this.setState({ locations: [], resultsMsg: settings.noResultsMsg });\r\n }\r\n });\r\n };\r\n\r\n changeLocation = event => {\r\n let { value } = event.target;\r\n let getLocationName = acctNum => {\r\n return this.state.locationOptions\r\n .map(itm => itm.props)\r\n .filter(res => res.value === acctNum)[0].children;\r\n };\r\n this.setState(\r\n {\r\n LocationAccountNumber: value,\r\n LocationName: event.target.selectedOptions\r\n ? event.target.selectedOptions[0].text\r\n : getLocationName(value)\r\n },\r\n this.componentDidMount\r\n );\r\n };\r\n\r\n locationOption = (location, index) => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n callLogFilter = htmlSelect => {\r\n return (\r\n \r\n {htmlSelect}\r\n \r\n );\r\n };\r\n\r\n tabDisplay = () => {\r\n if (\r\n (this.state.BSCallLogs && this.state.BSCallLogs.length > 0) ||\r\n (this.state.SansayCallLogs && this.state.SansayCallLogs.length > 0) ||\r\n (this.state.FaxCallLogs && this.state.FaxCallLogs.length > 0) ||\r\n this.state.isLimited\r\n ) {\r\n return (\r\n
    \r\n \r\n Cloud Voice\r\n \r\n \r\n IP Trunking\r\n \r\n \r\n Fax\r\n \r\n
    \r\n {this.exportSansayBtn()}\r\n {this.exportBsBtn()}\r\n {this.exportFaxBtn()}\r\n
    \r\n
    \r\n );\r\n } else return;\r\n };\r\n\r\n changeTab = event => {\r\n if (event.target.dataset.act !== this.state.tab) {\r\n this.setState({ tab: event.target.dataset.act });\r\n }\r\n };\r\n\r\n getTab() {\r\n if (this.state.isLimited) {\r\n return (\r\n
    Due to the large volume of call records, please use the export tool
    \r\n )\r\n }\r\n let { tab, BSCallLogs, SansayCallLogs, FaxCallLogs, loading } = this.state;\r\n switch (tab) {\r\n case \"bs\":\r\n return ;\r\n case \"sansay\":\r\n return (\r\n \r\n );\r\n case \"fax\":\r\n return (\r\n \r\n );\r\n default:\r\n console.log(\"Sorry there isn't a tab named \" + tab + \".\");\r\n }\r\n }\r\n\r\n headerTag = () => {\r\n let { isLimited, loading, FaxCallLogs, SansayCallLogs, BSCallLogs, tab } = this.state;\r\n if (!loading && SansayCallLogs && tab === \"sansay\") {\r\n return isLimited ? \"\" : SansayCallLogs.length;\r\n } \r\n if (!loading && BSCallLogs && tab === \"bs\") {\r\n return isLimited ? \"\" : BSCallLogs.length;\r\n }\r\n if (!loading && FaxCallLogs && tab === \"fax\") {\r\n return isLimited ? \"\" : FaxCallLogs.length;\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Enterprise Call Logs\r\n {this.headerTag()}\r\n

    \r\n
    \r\n\r\n
    \r\n
    \r\n {this.callLogFilter(\r\n \r\n \r\n {this.state.locationOptions}\r\n \r\n )}\r\n {this.callLogFilter(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {this.callLogFilter(\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {this.callLogFilter(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {this.callLogFilter(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {this.state.date_type === \"6\" ? (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n ) : (\r\n \"\"\r\n )}\r\n
    \r\n {this.tabDisplay()}\r\n
    \r\n
    \r\n
    \r\n {this.getTab()}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n PBXUserID: state.PBXUserID\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(EnterpriseCallLogsAll);","import React from 'react';\r\n\r\nexport const filtercell = (data, defaultItem) => {\r\n return class extends React.Component {\r\n hasValue(value) {\r\n return value && value !== defaultItem;\r\n };\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n };\r\n}","import React, { Component, Fragment } from 'react';\r\nimport * as icons from '../../scripts/icons';\r\nimport * as helper from '../../scripts/helper';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport * as config from '../../requests/config';\r\nimport * as settings from '../../scripts/settings';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport { filtercell } from '../../components/dropdownFilter';\r\nimport _ from 'lodash';\r\nimport { filterList } from '../../constants/filters';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\n\r\nexport default class AllTickets extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n gridHeight: (window.innerHeight - 210),\r\n loading: false,\r\n Listings: [],\r\n FullListings: [],\r\n Sort: [{ field: \"TicketNumber\", dir: \"desc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n LocationAccountNumber: '',\r\n ContactId: '',\r\n Filter: 'NONE',\r\n Term: '',\r\n QueryLocator: ''\r\n }\r\n\r\n const transitionToDetailPage = this.transitionToDetailPage.bind(this);\r\n const favoriteTicket = this.favoriteTicket.bind(this);\r\n const starClass = this.starClass.bind(this);\r\n const handleClearFilter = this.handleClearFilter.bind(this);\r\n\r\n class FavoriteButton extends GridCell {\r\n render() {\r\n let ticket = this.props.dataItem;\r\n let cannotFavorite = ticket.TicketId == \"\" && ticket.TicketId == \"\";\r\n if (cannotFavorite) {\r\n return \r\n } else {\r\n const cursorType = ticket.isTogglingStatus === true ? 'wait' : 'pointer';\r\n return (\r\n \r\n favoriteTicket(ticket)}\r\n style={{ cursor: cursorType }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n class ClearFilterCell extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n return (\r\n Clear Filters\r\n );\r\n }\r\n };\r\n\r\n class DataLink extends GridCell {\r\n\r\n render() {\r\n let { TicketNumber, TicketId } = this.props.dataItem;\r\n return (\r\n \r\n transitionToDetailPage(TicketId)}\r\n >{TicketNumber}\r\n \r\n )\r\n\r\n }\r\n }\r\n\r\n class IconCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let { TicketId } = this.props.dataItem;\r\n return (\r\n \r\n transitionToDetailPage(TicketId)}\r\n className=\"icon btn\">\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n this.IconCell = IconCell;\r\n this.favBtn = FavoriteButton;\r\n this.ticketNumberCell = DataLink;\r\n this.ClearFilterCell = ClearFilterCell;\r\n }\r\n\r\n componentDidMount() {\r\n if (sessionStorage.hasTicketing === 'NONE') {\r\n this.props.history.push('/');\r\n }\r\n this.fetchTicketList();\r\n setTimeout(() => {\r\n sessionStorage.removeItem('ticketView');\r\n }, 2000);\r\n }\r\n\r\n applyTicketViewFilter = () => {\r\n let { ticketView } = sessionStorage;\r\n if (ticketView) {\r\n switch (ticketView) {\r\n case 'escalated':\r\n this.setState({ Filter: 'ESCALATED' });\r\n return;\r\n case 'pendingCustomer':\r\n this.setState({ Filter: 'PENDING_CUSTOMER' });\r\n return;\r\n case 'recentClosed':\r\n this.setState({ Filter: 'CLOSED' });\r\n return;\r\n case 'recentUpdated':\r\n this.setState({ Filter: 'UPDATED' });\r\n return;\r\n case 'open':\r\n this.setState({ Filter: 'OPEN' });\r\n return;\r\n case 'all':\r\n this.setState({ Filter: 'NONE' });\r\n return;\r\n }\r\n }\r\n }\r\n\r\n starClass = (service) => service.Starred ? 'star' : 'dim-star';\r\n\r\n favoriteTicket = async (ticket) => {\r\n if (ticket) {\r\n //show waiting cursor on change\r\n ticket.isTogglingStatus = true;\r\n let newTickets = this.state.Listings.slice();\r\n let index = _.findIndex(newTickets, s => s.TicketId == ticket.TicketId);\r\n newTickets[index] = ticket;\r\n this.setState({ Listings: newTickets });\r\n\r\n let apiPath = `admin/UpdateTicket`;\r\n let dto = {\r\n TicketId: ticket.TicketId,\r\n Starred: ticket.Starred === false ? true : false,\r\n };\r\n let response = await apiCalls.post(apiPath, 'PATCH', JSON.stringify(dto)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n this.updateStarredTicket(ticket);\r\n } else {\r\n //restore normal cursor on change\r\n ticket.isTogglingStatus = false;\r\n newTickets[index] = ticket;\r\n this.setState({ Listings: newTickets });\r\n }\r\n }\r\n }\r\n\r\n updateStarredTicket = (item, newFavServiceId = null) => {\r\n //restore normal cursor on change\r\n item.isTogglingStatus = false;\r\n\r\n let newIsFavState = item.Starred ? false : true;\r\n let updatedItem = new Object(item);\r\n updatedItem.Starred = newIsFavState;\r\n if (newFavServiceId) updatedItem.FavoriteServiceId = newFavServiceId;\r\n let newTickets = this.state.Listings.slice();\r\n let index = _.findIndex(newTickets, s => s.TicketId == updatedItem.TicketId);\r\n newTickets[index] = updatedItem;\r\n this.setState({ Listings: newTickets });\r\n }\r\n\r\n fetchTicketList = async () => {\r\n await this.setState({ loading: true });\r\n await this.applyTicketViewFilter();\r\n let apiPath = `admin/GetTicketList`;\r\n apiPath += `?LocationAccountNumber=${this.state.LocationAccountNumber}&ContactId=${this.state.ContactId}&filter=${this.state.Filter}&term=${this.state.Term}&QueryLocator=${this.state.QueryLocator}`;\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n if(sessionStorage.locationList=== undefined || sessionStorage.locationList ==null)\r\n {\r\n this.setState({ loading: false });\r\n return

    No Available Tickets

    \r\n }else{\r\n let parsedList = JSON.parse(sessionStorage.locationList)\r\n let locationAccountNumberList = parsedList.map((x)=>(x.LocationAccountNumber));\r\n locationAccountNumberList.push(\"1\");\r\n let userLocationMatchedList=[];\r\n for(const key in locationAccountNumberList){\r\n for(let i =0; i { // convert Escalated boolean to string in order to filter\r\n ticket.isTogglingStatus = false;\r\n if (ticket.CreatedDate) {\r\n ticket.CreatedDate += ' ' + sessionStorage.userTimeZone;\r\n }\r\n if (ticket.ClosedDate) {\r\n ticket.ClosedDate += ' ' + sessionStorage.userTimeZone;\r\n }\r\n if (ticket.Escalated === true) {\r\n ticket.Escalated = 'yes';\r\n } else {\r\n ticket.Escalated = 'no';\r\n }\r\n });\r\n this.setState({ Listings: TicketList, FullListings: TicketList, QueryLocator: QueryLocator, loading: false });\r\n }\r\n \r\n } else {\r\n this.setState({ Listings: [], FullListings: [], loading: false });\r\n }\r\n\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n transitionToDetailPage = (ticketId) => {\r\n this.props.history.push(`/ticket/${ticketId}`);\r\n }\r\n\r\n sortChange = (event) => {\r\n this.setState({\r\n Listings: orderBy(this.state.Listings, event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n handleFilterChange = async (event) => {\r\n await this.setState({\r\n filter: event.filter\r\n });\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n if (this.state.Listings && this.state.Listings.length > 0) {\r\n let columnWidth = '140px';\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n if (this.state.Listings && this.state.Listings.length === 0) {\r\n return

    No Available Tickets

    \r\n }\r\n }\r\n }\r\n\r\n handleClearFilter = () => {\r\n let newFilter = {\r\n logic: 'and',\r\n filters: []\r\n };\r\n this.setState({ filter: newFilter });\r\n }\r\n\r\n contactFilterCell = (sortKey, nestedKey) => {\r\n const options = () => {\r\n let sort = [{ field: sortKey, dir: \"asc\" }];\r\n let listings = orderBy(this.state.Listings.slice(), sort);\r\n return [...listings.map(item => item && item.Contact ? item.Contact[nestedKey] : '').filter(helper.onlyUnique)].filter(nonEmpty => nonEmpty);\r\n }\r\n if (options() && options().length > 0) {\r\n return filtercell(options());\r\n }\r\n }\r\n\r\n searchListings = (event) => {\r\n if (this.state.FullListings && this.state.FullListings.length > 0) {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullListings;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'TicketNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Status', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Subject', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Contact.Name', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Priority', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'CreatedDate', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'ClosedDate', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Escalated', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Category', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Contact.PreferredCommunication', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n this.delayedSearch(services);\r\n }\r\n else {\r\n this.delayedSearch(fullDetails);\r\n }\r\n }\r\n }\r\n\r\n delayedSearch = async (services) => {\r\n await this.setState({ loading: true });\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.setState({ Listings: services, loading: false });\r\n }, settings.searchDelay);\r\n }\r\n\r\n dropDownOptions = (key) => {\r\n let sort = [{ field: key, dir: \"asc\" }];\r\n let listings = orderBy(this.state.Listings.slice(), sort);\r\n let info = [...listings.map(item => item[key]).filter(helper.onlyUnique)].filter(nonEmpty => nonEmpty);\r\n return info;\r\n }\r\n\r\n getTicketListings = (filter) => {\r\n return filterBy(orderBy(this.state.Listings, this.state.Sort), filter);\r\n }\r\n\r\n activeFilters = () => {\r\n let { Filter } = this.state;\r\n let possibleFilters = [Filter];\r\n let filters = possibleFilters.filter((item) => item); // removed empty filters\r\n if (Filter && Filter !== 'NONE') {\r\n return (\r\n \r\n Filters: {filterList(filters)}\r\n ×\r\n \r\n )\r\n }\r\n }\r\n\r\n clearFilter = () => {\r\n this.setState({ Filter: 'NONE' });\r\n this.fetchTicketList();\r\n }\r\n\r\n exportBtn = () => {\r\n if (this.state.Listings.length > 0) {\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 this.exportTickets()} >Export Tickets\r\n
    \r\n )\r\n } else return null;\r\n }\r\n\r\n exportTickets = () => {\r\n this.refs.downloadCsv.submit();\r\n this.refs.exportBtn.text = 'Downloading...';\r\n setTimeout(() => {\r\n this.refs.exportBtn.text = 'Export Tickets';\r\n }, 2000);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Support

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

    For immediate assistance please CALL Customer Care

    \r\n

    888.538.3960

    \r\n

    (If referencing a submitted ticket, have your ticket # ready)

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

    Support Tickets\r\n  {!this.state.loading ? this.getTicketListings(this.state.filter).length : null} \r\n \r\n \r\n {this.activeFilters()}\r\n \r\n \r\n

    \r\n {this.state.Filter === 'NONE' ? * List reflecting all open tickets & tickets closed within last 7 days : null}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {sessionStorage.hasTicketing === 'FULL' ? this.props.history.push('/new_ticket')}\r\n className=\"no-btn\">Enter New Ticket : null}\r\n {this.exportBtn()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React from 'react';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\n\r\nexport const retailTrouble = '0121A000000MZv3QAG'; //VOICE\r\nexport const dataServices = '0120h000000Upkk';//DATA\r\nexport const btnStyles = {\r\n fontSize: '80%',\r\n width: '18%',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n};\r\n\r\nexport const btnStyles2 = {\r\n fontSize: '95%',\r\n width: '32%',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n};\r\n\r\nexport const btnStyles3 = {\r\n fontSize: '95%',\r\n width: '30%',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n};\r\n\r\nexport const pickListOptions = (data) => {\r\n let options = data.map((item, idx) => {\r\n return \r\n });\r\n return options;\r\n}\r\n\r\nexport const contactOptions = (data) => {\r\n let options = data.map((contact, idx) => {\r\n return \r\n });\r\n return options;\r\n}","import React, { Component } from 'react';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport _ from 'lodash';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\n\r\n\r\nexport default class AffectedDevicesModal extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n Devices: [],\r\n FullDevices: [],\r\n showModal: false,\r\n Sort: [{ field: \"MAC\", dir: \"asc\" }],\r\n }\r\n const selectDevice = this.selectDevice.bind(this);\r\n\r\n class SelectDeviceCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let device = this.props.dataItem\r\n let { Selected } = device;\r\n return (\r\n \r\n selectDevice(e, device)} />\r\n \r\n )\r\n }\r\n }\r\n this.SelectDeviceCell = SelectDeviceCell;\r\n }\r\n\r\n fetchDeviceList = async () => {\r\n await this.setState({ loading: true });\r\n let apiPath = 'admin/GetDevices';\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n this.setState({ Devices: data, FullDevices: data, loading: false });\r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n selectDevice = async (e, productItem) => {\r\n let selectedValue = e.target.checked;\r\n let deviceList = this.state.Devices.slice();\r\n productItem.Selected = selectedValue;\r\n let item = deviceList.filter(itm => itm.MacAddress === productItem.MacAddress)[0];\r\n let idx = _.indexOf(deviceList, item);\r\n deviceList[idx] = productItem;\r\n await this.setState({ Devices: deviceList });\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow = async () => {\r\n await this.setState({ showModal: true });\r\n let { deviceList } = sessionStorage;\r\n if (deviceList) {\r\n let savedDevices = JSON.parse(deviceList);\r\n this.setState({ Services: savedDevices, FullServices: savedDevices });\r\n } else {\r\n this.fetchDeviceList();\r\n }\r\n }\r\n\r\n sortChange = (event) => {\r\n this.setState({\r\n Devices: orderBy(this.state.Devices, event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n if (this.state.Devices && this.state.Devices.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n if (this.state.Devices && this.state.Devices.length === 0) {\r\n return

    No Available Devices

    \r\n }\r\n }\r\n }\r\n\r\n assignDevices = () => {\r\n let deviceList = this.state.Devices.filter(itm => itm.Selected === true);\r\n this.props.affectedDevices(deviceList);\r\n if (this.props.saveSelections) {\r\n sessionStorage.setItem('deviceList', JSON.stringify(this.state.Devices));\r\n }\r\n this.handleClose();\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullDevices;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'MacAddress', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'MakeModel', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'AssignedTo', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n this.setState({ Devices: services })\r\n }\r\n else {\r\n this.setState({ Devices: fullDetails });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n Add Affected Devices\r\n {this.state.loading ? null\r\n :
    \r\n \r\n \r\n \r\n
    }\r\n
    \r\n \r\n
    \r\n {this.gridContent()}\r\n
    \r\n
    \r\n \r\n
    \r\n {!this.state.loading ?
    \r\n \r\n \r\n
    : null}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n};","import React, { Component } from 'react';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport _ from 'lodash';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport { userIsAdmin } from '../../../scripts/helper';\r\n\r\nexport default class AffectedServicesModal extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n Services: [],\r\n FullServices: [],\r\n showModal: false,\r\n Sort: [{ field: 'CombinedTypes', dir: \"asc\" }],\r\n }\r\n\r\n const selectService = this.selectService.bind(this);\r\n\r\n\r\n class SelectServiceCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let service = this.props.dataItem;\r\n let { Selected } = service;\r\n return (\r\n \r\n selectService(e, service)} />\r\n \r\n )\r\n }\r\n }\r\n\r\n class ExtensionCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let service = this.props.dataItem\r\n let { Extension, Username } = service;\r\n return (\r\n \r\n {Extension ? Extension : Username}\r\n \r\n )\r\n }\r\n }\r\n this.SelectServiceCell = SelectServiceCell;\r\n this.ExtensionCell = ExtensionCell;\r\n }\r\n\r\n fetchServiceList = async () => {\r\n await this.setState({ loading: true });\r\n let apiPath = 'admin/Services';\r\n apiCalls.fetchData(apiPath).then(async data => {\r\n if (data) {\r\n let filteredData =data.filter(x=> x.ServiceNumber !==\"\" || x.Extension!==\"\")\r\n filteredData.forEach((itm) => {\r\n itm.CombinedTypes = itm.ServiceType ? itm.ServiceType : itm.UserType;\r\n });\r\n this.setState({\r\n Services: filteredData,\r\n FullServices: filteredData,\r\n loading: false\r\n });\r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow = async () => {\r\n await this.setState({ showModal: true });\r\n let { serviceList } = sessionStorage;\r\n if (serviceList) {\r\n let savedServices = JSON.parse(serviceList);\r\n this.setState({ Services: savedServices, FullServices: savedServices });\r\n } else {\r\n this.fetchServiceList();\r\n }\r\n }\r\n\r\n selectService = async (e, productItem) => {\r\n let selectedValue = e.target.checked;\r\n let serviceList = this.state.Services.slice();\r\n productItem.Selected = selectedValue;\r\n let item = serviceList.filter(itm => {\r\n if (itm.ServiceType) {\r\n return (itm.ServiceNumber === productItem.ServiceNumber && itm.ServiceType === productItem.ServiceType && itm.ServiceId === productItem.ServiceId);\r\n } else {\r\n return (itm.UserId === productItem.UserId && itm.UserType === productItem.UserType);\r\n }\r\n })[0];\r\n let idx = _.indexOf(serviceList, item);\r\n serviceList[idx] = productItem;\r\n await this.setState({ Services: serviceList });\r\n }\r\n\r\n sortChange = (event) => {\r\n this.setState({\r\n Services: orderBy(this.state.Services, event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n if (this.state.Services && this.state.Services.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n if (this.state.Services && this.state.Services.length === 0) {\r\n return

    No Available Services & Users

    \r\n }\r\n }\r\n }\r\n\r\n assignServices = () => {\r\n let serviceList = this.state.Services.filter(itm => itm.Selected === true);\r\n this.props.affectedServices(serviceList);\r\n if (this.props.saveSelections) {\r\n sessionStorage.setItem('serviceList', JSON.stringify(this.state.Services));\r\n }\r\n this.handleClose();\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullServices;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'CombinedTypes', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'ServiceNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Extension', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n this.setState({ Services: services })\r\n }\r\n else {\r\n this.setState({ Services: fullDetails });\r\n }\r\n }\r\n\r\n render() {\r\n if (userIsAdmin())\r\n {\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n Add Affected Services & Users\r\n {this.state.loading ? null\r\n :
    \r\n \r\n \r\n \r\n
    }\r\n
    \r\n \r\n
    \r\n {this.gridContent()}\r\n
    \r\n
    \r\n \r\n
    \r\n {!this.state.loading ?
    \r\n \r\n \r\n
    : null}\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n return null;\r\n }\r\n};","import React, { Component } from 'react';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport _ from 'lodash';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport { userIsAdmin } from '../../../scripts/helper';\r\n\r\nexport default class AffectedCircuitsModal extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n Circuits: [],\r\n RedirectedFromCircuitsSaved:props.RedirectedFromCircuitsSaved ? props.RedirectedFromCircuitsSaved : null,\r\n FullCircuits: [],\r\n showModal: false,\r\n Sort: [{ field: 'CombinedTypes', dir: \"asc\" }],\r\n }\r\n\r\n const selectService = this.selectService.bind(this);\r\n\r\n\r\n class SelectServiceCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let service = this.props.dataItem;\r\n let { Selected } = service;\r\n return (\r\n \r\n selectService(e, service)} />\r\n \r\n )\r\n }\r\n }\r\n\r\n class ExtensionCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let service = this.props.dataItem\r\n let { Extension, Username } = service;\r\n return (\r\n \r\n {Extension ? Extension : Username}\r\n \r\n )\r\n }\r\n }\r\n this.SelectServiceCell = SelectServiceCell;\r\n this.ExtensionCell = ExtensionCell;\r\n }\r\n\r\n fetchServiceList = async () => {\r\n await this.setState({ loading: true });\r\n let apiPath = 'admin/GetCircuitsList';\r\n apiCalls.fetchData(apiPath).then(async data => {\r\n if (data) {\r\n let filteredData =data.filter(x=> x.CircuitId !==\"\" || x.CircuitName!==\"\")\r\n if(this.state.RedirectedFromCircuitsSaved)\r\n {\r\n let filtered =filteredData.filter(x=> x.CircuitId ===this.state.RedirectedFromCircuitsSaved[0].CircuitId)\r\n filtered[0].Selected = true\r\n }\r\n this.setState({\r\n Circuits: filteredData,\r\n FullCircuits: filteredData,\r\n loading: false\r\n });\r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow = async () => {\r\n await this.setState({ showModal: true });\r\n let { circuitsList } = sessionStorage;\r\n if (circuitsList) {\r\n let savedCircuits = JSON.parse(circuitsList);\r\n this.setState({ Circuits: savedCircuits });\r\n } else {\r\n this.fetchServiceList();\r\n }\r\n }\r\n\r\n selectService = async (e, productItem) => {\r\n let selectedValue = e.target.checked;\r\n let circuitsList = this.state.Circuits.slice();\r\n productItem.Selected = selectedValue;\r\n let item = circuitsList.filter(itm => {\r\n if (itm.CircuitId) {\r\n return (itm.CircuitId === productItem.CircuitId && itm.CircuitName === productItem.CircuitName);\r\n } else {\r\n return (itm.UserId === productItem.UserId && itm.UserType === productItem.UserType);\r\n }\r\n })[0];\r\n let idx = _.indexOf(circuitsList, item);\r\n circuitsList[idx] = productItem;\r\n await this.setState({ Circuits: circuitsList });\r\n }\r\n\r\n sortChange = (event) => {\r\n this.setState({\r\n Circuits: orderBy(this.state.Circuits, event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading) {\r\n return ;\r\n } else {\r\n if (this.state.Circuits && this.state.Circuits.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n if (this.state.Circuits && this.state.Circuits.length === 0) {\r\n return (\r\n

    No Available Circuits To Load

    \r\n );\r\n }\r\n }\r\n }\r\n\r\n assignCircuits = () => {\r\n let circuitsList = this.state.Circuits.filter(itm => itm.Selected === true);\r\n if(circuitsList && this.state.RedirectedFromCircuitsSaved!=null)\r\n {\r\n circuitsList =circuitsList.filter(object =>{return object.CircuitId !== this.state.RedirectedFromCircuitsSaved[0].CircuitId})\r\n }\r\n this.props.affectedCircuits(circuitsList);\r\n if (this.props.saveSelections) {\r\n sessionStorage.setItem('circuitsList', JSON.stringify(this.state.Circuits));\r\n }\r\n this.handleClose();\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullCircuits;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let circuits = filterBy(fullDetails, { \r\n logic: 'or',\r\n filters: [\r\n { field: 'CombinedTypes', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'ServiceNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Extension', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n this.setState({ Circuits: circuits })\r\n }\r\n else {\r\n this.setState({ Circuits: fullDetails });\r\n }\r\n }\r\n\r\n render() {\r\n if (userIsAdmin())\r\n {\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n Add Affected Circuits\r\n {this.state.loading ? null\r\n :
    \r\n \r\n \r\n \r\n
    }\r\n
    \r\n \r\n
    \r\n {this.gridContent()}\r\n
    \r\n
    \r\n \r\n
    \r\n {!this.state.loading ?
    \r\n \r\n \r\n
    : null}\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n return null;\r\n }\r\n};","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\n\r\nexport default class ConfirmDeleteAttachmentModal extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n readOnly: props.ReadOnly,\r\n showModal: false,\r\n loading: false,\r\n completed: false,\r\n }\r\n\r\n }\r\n\r\n removeAttachment = async (attachmentID) => {\r\n let filteredList = this.props.AttachmentList.filter(itm => itm.AttachmentId !== attachmentID);\r\n this.props.refresh(filteredList);\r\n }\r\n\r\n deleteAttachment = async (attachmentID) => {\r\n await this.setState({ loading: true });\r\n let apiPath = 'admin/DeleteAttachment';\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(attachmentID)).then(data => data).catch(err => console.error(err));\r\n if (response) {\r\n if (response.ok) {\r\n this.setState({ message: 'Success!', loading: false, completed: true });\r\n } else {\r\n this.setState({ message: 'Incomplete', loading: false, completed: true });\r\n }\r\n }\r\n }\r\n\r\n handleShow = () => {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n handleClose = (attachmentID) => {\r\n if (this.state.message === 'Success!') {\r\n this.removeAttachment(attachmentID);\r\n }\r\n this.setState({ showModal: false, completed: false, message: '' });\r\n }\r\n\r\n modalFooter = () => {\r\n if (this.state.loading && !this.state.completed) {\r\n return ;\r\n } else if (this.state.completed) {\r\n return (\r\n
    \r\n
    \r\n {this.state.message}\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n return \r\n \r\n \r\n ;\r\n }\r\n }\r\n\r\n render() {\r\n if (!this.state.readOnly)\r\n {\r\n return (\r\n \r\n \r\n x\r\n \r\n \r\n \r\n Are you sure you want to delete this attachment?\r\n \r\n \r\n
    {this.props.FileName}
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n {this.modalFooter()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n } else return null;\r\n }\r\n}","import React, { Component } from 'react';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport * as config from '../../requests/config';\r\nimport * as helper from './helper/ticket_helper';\r\nimport * as _ from 'lodash';\r\nimport AffectedDevicesModal from './components/affeced_devices_modal';\r\nimport AffectedServicesModal from './components/affected_services_modal';\r\nimport AffectedCircuitsModal from './components/affected_circuits_modal'\r\nimport ConfirmDeleteAttachmentModal from './components/delete_attachment_modal';\r\n\r\n\r\nexport default class DetailedTicket extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n gridHeight: (window.innerHeight - 210),\r\n loading: true,\r\n Sort: [{ field: \"TicketNum\", dir: \"desc\" }],\r\n TicketNumber: '',\r\n AddComment: false,\r\n TicketId: this.props.match.params.TicketId,\r\n NewComment: '',\r\n commentSubmitted: false,\r\n DetailedTicket: undefined,\r\n contactSubmitted: false,\r\n AttachmentList: [],\r\n attachmentSubmitted: false,\r\n //\r\n requestedClose: false,\r\n escalateTicket: false,\r\n //\r\n EmailList: [],\r\n Edit: false,\r\n savingTicket: false,\r\n //\r\n AffectedDevices: [],\r\n AffectedServices: [],\r\n AffectedCircuits:[],\r\n //\r\n olderThan3Days: false,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (sessionStorage.hasTicketing === 'NONE') {\r\n this.props.history.push('/');\r\n }\r\n sessionStorage.removeItem('serviceList');\r\n sessionStorage.removeItem('deviceList');\r\n sessionStorage.removeItem('circuitsList')\r\n this.fetchTicketData();\r\n }\r\n\r\n fetchTicketData = () => {\r\n let requests = [\r\n this.fetchTicketDetails(),\r\n this.fetchContactList(),\r\n this.getPriorityList(),\r\n this.getCommMethodList(),\r\n this.fetchEmailList(),\r\n ];\r\n Promise.all(requests).catch(err => console.error(err));\r\n }\r\n\r\n getCommMethodList = () => {\r\n let apiPath;\r\n sessionStorage.enterpriseType == \"DATA\"?apiPath= `admin/GetPicklistValues?RecordTypeId=${helper.dataServices}&Picklist=COMM_METHOD&ControllerValue=`:\r\n apiPath= `admin/GetPicklistValues?RecordTypeId=${helper.retailTrouble}&Picklist=COMM_METHOD&ControllerValue=`;\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n if(data.ValueList.includes('Portal'))\r\n {\r\n data.ValueList.splice(data.ValueList.indexOf('Portal'),1);\r\n }\r\n this.setState({ CommMethodOptions: data.ValueList });\r\n } else {\r\n this.setState({ CommMethodOptions: [] });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n getPriorityList = () => {\r\n let apiPath;\r\n sessionStorage.enterpriseType == \"DATA\"?apiPath= `admin/GetPicklistValues?RecordTypeId=${helper.dataServices}&Picklist=PRIORITY&ControllerValue=`:\r\n apiPath= `admin/GetPicklistValues?RecordTypeId=${helper.retailTrouble}&Picklist=PRIORITY&ControllerValue=`;\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n this.setState({ PriorityOptions: data.ValueList });\r\n } else {\r\n this.setState({ PriorityOptions: [] });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchEmailList = () => {\r\n let apiPath = `admin/GetTicketEmailList?TicketId=${this.state.TicketId}`;\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n this.setState({ EmailList: data });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchAttachments = async () => {\r\n let apiPath = `admin/GetAttachmentList?TicketId=${this.state.TicketId}`;\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n this.setState({ AttachmentList: data });\r\n } else {\r\n this.setState({ AttachmentList: [] });\r\n }\r\n }).catch(err => console.error(err)).finally(() => {\r\n this.setState({ attachmentSubmitted: false });\r\n });\r\n }\r\n\r\n fetchContactList = () => {\r\n let apiPath = 'admin/GetContactList';\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n this.setState({ ContactOptions: data });\r\n } else {\r\n this.setState({ ContactOptions: [] });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchTicketDetails = () => {\r\n let apiPath = `admin/GetTicket?TicketId=${this.state.TicketId}`;\r\n apiCalls.fetchData(apiPath).then(async (data) => {\r\n if (data) {\r\n if (data.CreatedDate) {\r\n data.CreatedDate += ' ' + sessionStorage.userTimeZone;\r\n let date1 = new Date(data.CreatedDate);\r\n let date2 = new Date();\r\n let diffTime = Math.abs(date2 - date1);\r\n let diffHours = Math.ceil(diffTime / (1000 * 60 * 60));\r\n if (diffHours > 72) {\r\n this.setState({ olderThan3Days: true });\r\n }\r\n }\r\n if (data.SubCategory === null) {\r\n data.SubCategory = ''\r\n }\r\n if (data.OtherCategory === null) {\r\n data.OtherCategory = ''\r\n }\r\n if (data.PreferredCommunication === null) {\r\n data.PreferredCommunication = ''\r\n }\r\n let copy = JSON.parse(JSON.stringify(data));\r\n let { IsLess24 } = data;\r\n await this.fetchAttachments();\r\n this.setState({\r\n DetailedTicket: data,\r\n OriginalTicket: copy,\r\n commentSubmitted: false,\r\n requestedClose: false,\r\n escalateTicket: false,\r\n loading: false,\r\n Edit: IsLess24 === true ? true : false,\r\n savingTicket: false,\r\n AddComment: false,\r\n });\r\n } else {\r\n this.setState({\r\n commentSubmitted: false,\r\n requestedClose: false,\r\n escalateTicket: false,\r\n loading: false,\r\n Edit: false,\r\n savingTicket: false,\r\n AddComment: false,\r\n })\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n addCommentBtn = () => {\r\n if (this.state.DetailedTicket.Status !== 'Closed' && sessionStorage.hasTicketing === 'FULL') {\r\n if (!this.state.AddComment) {\r\n return (\r\n \r\n )\r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n } else return;\r\n }\r\n\r\n newCommentTextBox = () => {\r\n if (this.state.AddComment) {\r\n return (\r\n
    \r\n

    New Comment

    \r\n \r\n
    \r\n 3000 ? 'red' : '#b3b1b1'\r\n }}\r\n >{`Max Character Limit = ${this.state.NewComment.length}/3000`}\r\n
    \r\n )\r\n } else return;\r\n }\r\n\r\n handleWriteComment = (e) => {\r\n let { value } = e.target;\r\n this.setState({ NewComment: value });\r\n }\r\n\r\n handleSubmitNewComment = async () => {\r\n await this.setState({ commentSubmitted: true });\r\n let apiPath = 'admin/CreateComment';\r\n let commentDTO = {\r\n CommentId: '',\r\n TicketId: this.state.DetailedTicket.TicketId,\r\n CommentBody: this.state.NewComment\r\n };\r\n if (this.state.NewComment != '') {\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(commentDTO)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n await this.fetchTicketDetails();\r\n this.setState({\r\n AddComment: false, NewComment: '',\r\n });\r\n } else {\r\n let msg = response.message;\r\n this.fetchTicketDetails();\r\n }\r\n }\r\n }\r\n\r\n handleChangeSelect = (e, key) => {\r\n let { value } = e.target;\r\n let DetailedTicket = { ...this.state.DetailedTicket };\r\n if (key === 'ContactId') {\r\n DetailedTicket.Contact.ContactId = value;\r\n } else {\r\n DetailedTicket[key] = value;\r\n }\r\n this.setState({ DetailedTicket });\r\n }\r\n\r\n formGroupInput = (labelFor, labelName, val, key, type = 'text') => {\r\n if ((this.state.requestedClose && labelFor === 'Status') || (this.state.escalateTicket && labelFor === 'Escalated')) {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n } else {\r\n let bReadOnly = this.state.Edit && sessionStorage.hasTicketing === 'FULL' && this.state.DetailedTicket.Status !== 'Closed' &&\r\n (labelFor === 'Contact' || labelFor === 'Priority' || labelFor === 'CommunicationMethod')\r\n ? false : true;\r\n return (\r\n
    \r\n \r\n this.handleChangeSelect(e, key)}\r\n />\r\n
    \r\n )\r\n }\r\n }\r\n\r\n\r\n formSelect = (labelFor, labelName, val, options, key) => {\r\n let bDisabled = sessionStorage.hasTicketing === 'FULL' && (this.state.Edit || labelFor === 'Contact') && this.state.DetailedTicket.Status !== 'Closed' ? false : true;\r\n let cursor = bDisabled === true ? 'not-allowed' : 'pointer';\r\n let htmlSelect = () => {\r\n if (options) {\r\n if (labelFor === 'Contact') {\r\n options = helper.contactOptions(options)\r\n } else {\r\n options = helper.pickListOptions(options);\r\n }\r\n return (\r\n \r\n )\r\n } else {\r\n return \r\n }\r\n }\r\n return (\r\n
    \r\n \r\n {htmlSelect()}\r\n
    \r\n )\r\n }\r\n\r\n commentContainer = (CommentList) => {\r\n if (this.state.commentSubmitted) {\r\n return \r\n } else {\r\n if (CommentList && CommentList.length > 0) {\r\n return CommentList.map((comment, idx) => {\r\n let commentView =comment.CommentBody.split(\"\\n\");\r\n if(sessionStorage.enterpriseType === \"DATA\")\r\n {\r\n let cv= commentView.filter(e=>e!== 'ServiceType: undefined')\r\n var commentBody = cv.join(\"\\n\").toString();\r\n }\r\n return (\r\n
    \r\n
    \r\n Comment: \r\n {sessionStorage.enterpriseType===\"DATA\"?commentBody: comment.CommentBody}\r\n
    \r\n
    Date: {`${comment.CreatedDate} ${sessionStorage.userTimeZone}`}
    \r\n
    By: {comment.CreatedBy}
    \r\n
    \r\n )\r\n });\r\n } else return;\r\n }\r\n\r\n }\r\n\r\n ticketEmails = () => {\r\n if (this.state.EmailList && this.state.EmailList.length > 0) {\r\n return (\r\n
    \r\n

    Emails

    \r\n
    \r\n {this.state.EmailList.map((itm, idx) => {\r\n return (\r\n
    \r\n
    From: {itm.FromAddress}
    \r\n
    Subject: {itm.Subject}
    \r\n
    Description: {itm.TextBody}
    \r\n
    Date: {`${itm.CreatedDate} ${sessionStorage.userTimeZone}`}
    \r\n
    \r\n )\r\n })}\r\n
    \r\n
    \r\n )\r\n } else return;\r\n }\r\n\r\n storeAffectedDevices = async (data) => {\r\n let { TicketId } = this.state;\r\n let devices = data.map(itm => {\r\n return `MAC: ${itm.MacAddress || ''}\\nMake/Model: ${itm.MakeModel || ''}\\nAssignedTo: ${itm.AssignedTo || ''}\\n\\n`;\r\n });\r\n await this.setState({ AffectedDevices: devices });\r\n if (this.state.AffectedDevices.length > 0) {\r\n this.submitAffectedUtilities(TicketId);\r\n }\r\n }\r\n\r\n storeAffectedServices = async (data) => {\r\n let { TicketId } = this.state;\r\n let services = data.map(itm => {\r\n let extension = ''\r\n if (itm.Extension)\r\n extension = \"Extension: \" + itm.Extension + '\\n';\r\n else if (itm.Username && itm.ServiceNumber !== itm.Username)\r\n extension = \"Username: \" + itm.Username + '\\n';\r\n let serviceID = itm.ServiceNumber ? \"ServiceID: \" + itm.ServiceNumber + '\\n' : ''\r\n return `ServiceType: ${itm.ServiceType || itm.UserType}\\n${serviceID}${extension}\\n`;\r\n });\r\n await this.setState({ AffectedServices: services });\r\n if (this.state.AffectedServices.length > 0) {\r\n this.submitAffectedUtilities(TicketId);\r\n }\r\n }\r\n\r\n storeAffectedCircuits = async (data) => {\r\n let { TicketId } = this.state;\r\n let circuits = data.map(itm => {\r\n return `Circuits: ${itm.CircuitId}\\n${itm.CircuitName}\\n`;\r\n });\r\n await this.setState({ AffectedCircuits: circuits });\r\n if (this.state.AffectedCircuits.length > 0) {\r\n this.submitAffectedUtilities(TicketId);\r\n }\r\n }\r\n\r\n closeAndEscalateBtns = () => {\r\n if (sessionStorage.hasTicketing === 'FULL') {\r\n return (\r\n
    \r\n Request Close\r\n
    \r\n )\r\n } else return;\r\n }\r\n\r\n requestTicketClose = async () => {\r\n let { TicketId } = this.state.DetailedTicket;\r\n let apiPath = `admin/UpdateTicket`;\r\n let dto = {\r\n TicketId: TicketId,\r\n Status: 'Closed',\r\n };\r\n await this.setState({ requestedClose: true });\r\n let response = await apiCalls.post(apiPath, 'PATCH', JSON.stringify(dto)).then(res => res).catch(err => console.error(err));\r\n if (response) {\r\n this.fetchTicketDetails();\r\n }\r\n }\r\n\r\n detailedViewContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n if (this.state.DetailedTicket) {\r\n let { Status, Escalated, LocationAccountNumber, Contact, Priority, Category, SubCategory, OtherCategory, Description, CommentList, PreferredCommunication,TicketType } = this.state.DetailedTicket;\r\n let Location = LocationAccountNumber==='1'?'':LocationAccountNumber;\r\n let contactId = '';\r\n if (Contact) {\r\n contactId = Contact.ContactId;\r\n }\r\n let type =\"\";\r\n if(TicketType ===\"\")\r\n {\r\n type = \"Data\"\r\n }\r\n else{\r\n type= \"Voice\"\r\n }\r\n let DescriptionDisabled = this.state.Edit && sessionStorage.hasTicketing === 'FULL' && this.state.DetailedTicket.Status === 'New' ? false : true;\r\n return (\r\n
    \r\n {!this.state.savingTicket ?
    \r\n
    \r\n {this.formGroupInput('Type', 'Type', type)}\r\n {this.formGroupInput('Status', 'Status', Status)}\r\n {this.formGroupInput('Location', 'Location', Location)}\r\n {Contact=== null?this.formGroupInput('Contact', 'Contact', Contact):this.formSelect('Contact', 'Contact', contactId, this.state.ContactOptions, 'ContactId')}\r\n {sessionStorage.enterpriseType===\"VOICE\" || this.state.DetailedTicket.TicketType===\"RETAIL_TROUBLE\" ? null : this.formGroupInput('Category', 'Category', Category)}\r\n {/* {sessionStorage.enterpriseType===\"VOICE\" || this.state.DetailedTicket.TicketType===\"RETAIL_TROUBLE\" ? null : this.formGroupInput('SubCategory', 'Sub Category', SubCategory)} */}\r\n {this.formSelect('CommunicationMethod', 'Contact Method', PreferredCommunication, this.state.CommMethodOptions, 'PreferredCommunication')}\r\n
    \r\n {this.ticketUpdateBtns()}\r\n
    \r\n
    \r\n {this.closeAndEscalateBtns()}\r\n
    \r\n
    \r\n {this.state.AffectedDevices.length > 0\r\n ?
    \r\n {`Affected Devices: ${this.state.AffectedDevices.length}`}\r\n
    \r\n
    : null}\r\n {this.state.AffectedServices.length > 0\r\n ?
    \r\n {`Affected Services & Users: ${this.state.AffectedServices.length}`}\r\n
    \r\n
    : null}\r\n\r\n {this.state.AffectedCircuits.length > 0\r\n ?
    \r\n {`Affected Circuits & Users: ${this.state.AffectedCircuits.length}`}\r\n
    \r\n
    : null}\r\n {this.state.AttachmentList.length > 0\r\n ?
    \r\n {`Attachments: ${!this.state.attachmentSubmitted ? this.state.AttachmentList.length : ''}`}\r\n
    \r\n
    : null}\r\n

    Description

    \r\n this.handleChangeSelect(e, 'Description')}\r\n >\r\n
    \r\n {this.state.DetailedTicket.Status !== 'Closed' && sessionStorage.hasTicketing === 'FULL'\r\n ?
    \r\n {sessionStorage.enterpriseType===\"VOICE\" || this.state.DetailedTicket.TicketType===\"RETAIL_TROUBLE\" ?:}\r\n {!this.state.attachmentSubmitted ?\r\n : \r\n \r\n \r\n }\r\n \r\n
    : null}\r\n
    \r\n
    : \r\n }\r\n
    \r\n
    \r\n
    \r\n {this.newCommentTextBox()}\r\n
    \r\n

    Comments

    \r\n {this.addCommentBtn()}\r\n
    \r\n {this.commentContainer(CommentList)}\r\n
    \r\n
    \r\n {this.ticketEmails()}\r\n
    \r\n
    \r\n )\r\n } else {\r\n return

    No Available Ticket

    \r\n }\r\n }\r\n }\r\n\r\n ticketUpdateBtns = () => {\r\n let { DetailedTicket, OriginalTicket } = this.state;\r\n if ((!DetailedTicket.Contact || DetailedTicket.Contact.ContactId === OriginalTicket.Contact.ContactId) &&\r\n DetailedTicket.Priority === OriginalTicket.Priority && DetailedTicket.Category === OriginalTicket.Category &&\r\n // DetailedTicket.SubCategory === OriginalTicket.SubCategory && DetailedTicket.OtherCategory === OriginalTicket.OtherCategory &&\r\n DetailedTicket.PreferredCommunication === OriginalTicket.PreferredCommunication && DetailedTicket.Description === OriginalTicket.Description\r\n )\r\n return;\r\n else {\r\n return (\r\n \r\n Save\r\n Cancel\r\n \r\n )\r\n }\r\n \r\n }\r\n\r\n submitAffectedUtilities = async (ticketId) => {\r\n await this.setState({ commentSubmitted: true })\r\n let string = '';\r\n if (this.state.AffectedDevices.length > 0 && this.state.AffectedServices.length > 0) {\r\n string = `AFFECTED DEVICES COUNT: ${this.state.AffectedDevices.length}\\n${this.state.AffectedDevices.join().replace(/,/g, '')} AFFECTED SERVICES & USERS COUNT: ${this.state.AffectedServices.length}\\n${this.state.AffectedServices.join().replace(/,/g, '')}`;\r\n } else if (this.state.AffectedDevices.length > 0 && this.state.AffectedServices.length < 1) {\r\n string = `AFFECTED DEVICES COUNT: ${this.state.AffectedDevices.length}\\n${this.state.AffectedDevices.join().replace(/,/g, '')}`;\r\n } \r\n else if (this.state.AffectedCircuits.length > 0 && this.state.AffectedDevices.length < 1) {\r\n string = `AFFECTED CIRCUITS COUNT: ${this.state.AffectedCircuits.length}\\n${this.state.AffectedCircuits.join().replace(/,/g, '')}`;\r\n }\r\n else if(this.state.AffectedCircuits.length>0 &&this.state.AffectedDevices.length>0){\r\n string = `AFFECTED CIRCUITS COUNT: ${this.state.AffectedCircuits.length}\\n${this.state.AffectedDevices.join().replace(/,/g, '')} AFFECTED DEVICES COUNT: ${this.state.AffectedDevices.length}\\n${this.state.AffectedDevices.join().replace(/,/g, '')}`;\r\n }\r\n else {\r\n string = `AFFECTED SERVICES & USERS COUNT: ${this.state.AffectedServices.length}\\n${this.state.AffectedServices.join().replace(/,/g, '')}`\r\n }\r\n let apiPath = 'admin/CreateComment';\r\n let commentDTO = {\r\n CommentId: '',\r\n TicketId: ticketId,\r\n CommentBody: string,\r\n };\r\n if (this.state.AffectedDevices.length > 0 || this.state.AffectedServices.length > 0 || this.state.AffectedCircuits.length > 0) {\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(commentDTO)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n await this.fetchTicketDetails();\r\n this.setState({\r\n AffectedDevices: [],\r\n AffectedServices: [],\r\n AffectedCircuits:[]\r\n });\r\n } else {\r\n let msg = response.message;\r\n await this.fetchTicketDetails();\r\n }\r\n }\r\n }\r\n\r\n saveTicket = async () => {\r\n let { DetailedTicket, TicketId } = this.state;\r\n let { Contact, Priority, Category, OtherCategory, Description, PreferredCommunication } = DetailedTicket;\r\n let contactId = '';\r\n if (Contact) {\r\n contactId = Contact.ContactId;\r\n }\r\n await this.setState({ savingTicket: true });\r\n let apiPath = `admin/UpdateTicket`;\r\n let dto = {};\r\n if (this.state.Edit) {\r\n dto = {\r\n TicketId: TicketId,\r\n ContactId: contactId,\r\n Priority: Priority,\r\n Category: Category,\r\n OtherCategory: OtherCategory,\r\n Description: Description,\r\n PreferredCommunication: PreferredCommunication\r\n };\r\n } else {\r\n dto = {\r\n TicketId: TicketId,\r\n ContactId: contactId,\r\n };\r\n }\r\n let response = await apiCalls.post(apiPath, 'PATCH', JSON.stringify(dto)).then(res => res).catch(err => console.error(err));\r\n if (response) {\r\n this.fetchTicketDetails();\r\n }\r\n }\r\n\r\n undoTicket = async () => {\r\n let { OriginalTicket } = this.state;\r\n this.setState({ DetailedTicket: OriginalTicket });\r\n }\r\n\r\n exportAttachment = (refName) => {\r\n this.refs[refName].submit();\r\n }\r\n\r\n attachmentDropdown = () => {\r\n let bReadOnly = sessionStorage.hasTicketing === 'FULL' && this.state.DetailedTicket.Status !== 'Closed' ? false : true\r\n return (\r\n
    \r\n \r\n View Attachments\r\n \r\n \r\n
      \r\n {this.state.AttachmentList.map((file, idx) => {\r\n let refName = file.AttachmentId;\r\n return (\r\n
    • \r\n \r\n \r\n \r\n \r\n \r\n \r\n
      \r\n this.exportAttachment(refName)}\r\n >{file.FileName}\r\n \r\n
      \r\n
      \r\n
    • \r\n )\r\n })}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n handleRefreshAttachments = async (data) => {\r\n await this.setState({ AttachmentList: data });\r\n }\r\n\r\n addAttachment = async (event) => {\r\n let file = event.target.files[0];\r\n let reader = new FileReader();\r\n reader.addEventListener('loadend', () => {\r\n let body = reader.result.split(',')[1];\r\n let name = file.name;\r\n this.createAttachment(body, name);\r\n }, false);\r\n if (file) {\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n\r\n createAttachment = async (body, name, ticketId) => {\r\n let apiPath = 'admin/CreateAttachment';\r\n let attachmentDTO = {\r\n TicketId: this.state.TicketId,\r\n AttachmentBody: body,\r\n FileName: name,\r\n };\r\n await this.setState({ attachmentSubmitted: true });\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(attachmentDTO)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n this.fetchAttachments();\r\n } else {\r\n let msg = JSON.parse(response.message);\r\n console.log('res error', msg);\r\n }\r\n }\r\n\r\n openAttachments = () => {\r\n this.refs.fileUploader.click();\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Ticket {this.state.DetailedTicket ? {`# ${this.state.DetailedTicket.TicketNumber}`} {`- ${this.state.DetailedTicket.Subject}`} : null}

    \r\n
    \r\n
    \r\n {this.state.AttachmentList.length > 0 && !this.state.attachmentSubmitted ? this.attachmentDropdown() : null}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.detailedViewContent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport AffectedCircuitsModal from './components/affected_circuits_modal';\r\nimport AffectedDevicesModal from './components/affeced_devices_modal';\r\nimport AffectedServicesModal from './components/affected_services_modal';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport * as helper from './helper/ticket_helper';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { userIsAdmin } from '../../scripts/helper';\r\n\r\nconst accountID = '0010h00001XhZxcAAF';\r\n\r\n\r\nclass NewTicket extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n TicketSubject: '',\r\n CircuitId: '',\r\n TicketDescription: '',\r\n SelectedLocation: '',\r\n SelectedContact: '',\r\n SelectedPriority: 'Minor',\r\n SelectedCategory: '',\r\n SelectedType: '',\r\n // SelectedSubCategory: '',\r\n SelectedOtherCategory: '',\r\n SelectedCommMethod: '',\r\n SelectCircuitsFromList: '',\r\n submittedTicket: false,\r\n ticketSubFailed: false,\r\n AffectedDevices: [],\r\n AffectedServices: [],\r\n AttachmentList: [],\r\n AffectedCircuits: [],\r\n fileIndex: 0,\r\n redirectedFromCircuitsList: props.location.state ? props.location.state.redirectedFromCircuitsList : null,\r\n showConfirmationModal: false,\r\n type: [{ key: \"\", value: \"Select\" }, { key: \"DATA_SERVICES\", value: \"Data\" }, { key: \"RETAIL_TROUBLE\", value: \"Voice\" }, { key: \"VOICE_DUPLICATE\", value: \"Both\" }],\r\n SelectedMixedType: props.location.state ? \"DATA_SERVICES\" : '',\r\n ContactName: '',\r\n ContactEmail: '',\r\n ContactPhone: '',\r\n ShowTextBoxesForContactDetails: false,\r\n LoggedUser: sessionStorage.userEmail\r\n }\r\n this.handleCloseConfirmation = this.handleCloseConfirmation.bind(this);\r\n this.handleCancelTicketYes = this.handleCancelTicketYes.bind(this);\r\n this.ticketType = \"\";\r\n }\r\n\r\n componentDidMount() {\r\n if (sessionStorage.hasTicketing !== 'FULL') {\r\n this.props.history.push('/');\r\n }\r\n sessionStorage.removeItem('serviceList');\r\n sessionStorage.removeItem('circuitsList');\r\n sessionStorage.removeItem('deviceList');\r\n this.fetchTicketData();\r\n this.storeAffectedCircuitsRedirectedFromCircuits();\r\n\r\n }\r\n\r\n fetchTicketData = () => {\r\n let requests = [\r\n this.fetchContactList(),\r\n this.getCategoryList(),\r\n this.fetchLocations(),\r\n this.getPriorityList(),\r\n this.getCommMethodList(),\r\n this.getTypeList(),\r\n this.getCircuitsList()\r\n ];\r\n Promise.all(requests).catch(err => console.error(err));\r\n }\r\n\r\n getTypeList = () => {\r\n const type = this.state.type.map((i) => {\r\n return \r\n })\r\n this.setState({ TypeListOptions: type });\r\n }\r\n\r\n getCommMethodList = () => {\r\n let apiPath;\r\n sessionStorage.enterpriseType == \"DATA\" ? apiPath = `admin/GetPicklistValues?RecordTypeId=${helper.dataServices}&Picklist=COMM_METHOD&ControllerValue=` :\r\n apiPath = `admin/GetPicklistValues?RecordTypeId=${helper.retailTrouble}&Picklist=COMM_METHOD&ControllerValue=`;\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n if (data.ValueList.includes('Portal')) {\r\n data.ValueList.splice(data.ValueList.indexOf('Portal'), 1);\r\n }\r\n let options = data.ValueList.map((item, idx) => {\r\n return \r\n });\r\n this.setState({ CommMethodOptions: options });\r\n } else {\r\n this.setState({ CommMethodOptions: [] });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n getCircuitsList = () => {\r\n let apiPath = \"admin/GetCircuitsList\";\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n //console.log(data, \"CircuitsList\")\r\n // if (data.ValueList.includes('Portal')) {\r\n // data.ValueList.splice(data.ValueList.indexOf('Portal'), 1);\r\n // }\r\n let options = data.map((circuit, idx) => {\r\n return \r\n });\r\n\r\n // let options = data.ValueList.map((item, idx) => {\r\n // return \r\n // });\r\n this.setState({ CircuitsOptions: options });\r\n } else {\r\n this.setState({ CircuitsOptions: [] });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n getPriorityList = () => {\r\n let apiPath;\r\n sessionStorage.enterpriseType == \"DATA\" ? apiPath = `admin/GetPicklistValues?RecordTypeId=${helper.dataServices}&Picklist=PRIORITY&ControllerValue=` :\r\n apiPath = `admin/GetPicklistValues?RecordTypeId=${helper.retailTrouble}&Picklist=PRIORITY&ControllerValue=`;\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n let options = data.ValueList.map((item, idx) => {\r\n return \r\n });\r\n this.setState({ PriorityOptions: options });\r\n } else {\r\n this.setState({ PriorityOptions: [] });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n getCategoryList = () => {\r\n let apiPath;\r\n\r\n sessionStorage.enterpriseType == \"DATA\" ? apiPath = `admin/GetPicklistValues?RecordTypeId=${helper.dataServices}&Picklist=CATEGORY&ControllerValue=` :\r\n apiPath = `admin/GetPicklistValues?RecordTypeId=${helper.retailTrouble}&Picklist=CATEGORY&ControllerValue=`;\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n let options = data.ValueList.filter(option => option !== \"Other\").map((item, idx) => {\r\n return \r\n });\r\n this.setState({ CategoryOptions: options });\r\n } else {\r\n this.setState({ CategoryOptions: [] });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n // getSubCategoryList = (categoryValue) => {\r\n // if (categoryValue === '' || categoryValue === 'Other') {\r\n // return;\r\n // } else {\r\n // let apiPath;\r\n // sessionStorage.enterpriseType == \"DATA\" ? apiPath = `admin/GetPicklistValues?RecordTypeId=${helper.dataServices}&Picklist=SUB_CATEGORY&ControllerValue=${categoryValue}` :\r\n // apiPath = `admin/GetPicklistValues?RecordTypeId=${helper.retailTrouble}&Picklist=SUB_CATEGORY&ControllerValue=${categoryValue}`;\r\n // apiCalls.fetchData(apiPath).then(data => {\r\n // if (data) {\r\n // let options = data.ValueList.map((item, idx) => {\r\n // return \r\n // });\r\n // this.setState({ SubCategoryOptions: options });\r\n // } else {\r\n // this.setState({ SubCategoryOptions: [] });\r\n // }\r\n // }).catch(err => console.error(err));\r\n // }\r\n // }\r\n\r\n fetchLocations = () => {\r\n let apiPath = '';\r\n if (userIsAdmin())\r\n apiPath = 'admin/Locations';\r\n else\r\n apiPath = 'usr/GetUserLocation';\r\n\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n let options = data.map((location, idx) => {\r\n return \r\n });\r\n if (data.length === 1)\r\n this.setState({ SelectedLocation: data[0].LocationAccountNumber, LocationOptions: options });\r\n else\r\n this.setState({ LocationOptions: options });\r\n } else {\r\n this.setState({ LocationOptions: [] });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchContactList = () => {\r\n let apiPath = 'admin/GetContactList';\r\n apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n let options = data.map((contact, idx) => {\r\n return \r\n });\r\n this.setState({ ContactOptions: options });\r\n } else {\r\n this.setState({ ContactOptions: [] });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n formGroupDropDown = (labelFor, labelName, val, options) => {\r\n let setOptions = (options) => {\r\n if (options) {\r\n if (labelFor === 'Contact' && labelName === 'Contact') {\r\n return (\r\n \r\n )\r\n }\r\n if (labelFor === 'Type' && labelName === 'Type') {\r\n return (\r\n \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n )\r\n }\r\n } else {\r\n return \r\n }\r\n }\r\n if (labelFor === 'Type') {\r\n return (\r\n
    \r\n {sessionStorage.enterpriseType == \"DATA\" ?\r\n :\r\n this.state.SelectedMixedType === 'RETAIL_TROUBLE' || sessionStorage.enterpriseType === 'VOICE' || this.state.SelectedMixedType === \"VOICE_DUPLICATE\" ?\r\n :\r\n \r\n }\r\n {setOptions(options)}\r\n
    \r\n )\r\n }\r\n else {\r\n return (\r\n
    \r\n {sessionStorage.enterpriseType == \"DATA\" ?\r\n :\r\n this.state.SelectedMixedType === 'RETAIL_TROUBLE' || sessionStorage.enterpriseType === 'VOICE' || this.state.SelectedMixedType === \"VOICE_DUPLICATE\" ?\r\n :\r\n \r\n }\r\n {setOptions(options)}\r\n
    \r\n )\r\n }\r\n\r\n }\r\n\r\n renderMandatorySymbol = () => {\r\n return (\r\n
    \r\n {sessionStorage.enterpriseType == \"DATA\" ?\r\n :\r\n this.state.SelectedMixedType === 'RETAIL_TROUBLE' || sessionStorage.enterpriseType === 'VOICE' || this.state.SelectedMixedType === \"VOICE_DUPLICATE\" ?\r\n :\r\n \r\n }\r\n {setOptions(options)}\r\n
    \r\n )\r\n }\r\n\r\n formGroupInput = (labelFor, labelName, val, type = 'text') => {\r\n return (\r\n
    \r\n \r\n this.handleInputChange(e, labelFor)}\r\n />\r\n
    \r\n )\r\n }\r\n\r\n selectOptions = (options) => {\r\n return options.map((option, index) => {\r\n return \r\n })\r\n }\r\n\r\n handleInputChange = (e, labelFor) => {\r\n let { value } = e.target;\r\n switch (labelFor) {\r\n case 'Location':\r\n this.setState({ SelectedLocation: value });\r\n return;\r\n case 'Contact':\r\n this.setState({ SelectedContact: value });\r\n value === 'Others' ?\r\n this.setState({ ShowTextBoxesForContactDetails: true }) :\r\n this.setState({ ShowTextBoxesForContactDetails: false })\r\n return;\r\n case 'Priority':\r\n this.setState({ SelectedPriority: value });\r\n return;\r\n case 'Category':\r\n // this.setState({ SubCategoryOptions: undefined })\r\n // this.getSubCategoryList(value);\r\n this.setState({ SelectedCategory: value });\r\n return;\r\n // case 'SubCategory':\r\n // this.setState({ SelectedSubCategory: value });\r\n // return;\r\n case 'Type':\r\n this.setState({ SelectedMixedType: value });\r\n if(value=== 'RETAIL_TROUBLE' ||value === 'VOICE' ||value === \"VOICE_DUPLICATE\"){\r\n this.setState({SelectCircuitsFromList:\"\"})\r\n this.setState({ TicketSubject: \"\" });\r\n }\r\n return;\r\n case 'ContactName':\r\n this.setState({ ContactName: value });\r\n return;\r\n case 'ContactEmail':\r\n this.setState({ ContactEmail: value });\r\n return;\r\n case 'ContactPhone':\r\n this.setState({ ContactPhone: value });\r\n return;\r\n case 'CommunicationMethod':\r\n this.setState({ SelectedCommMethod: value });\r\n return;\r\n case 'CircuitsList':\r\n this.setState({ SelectCircuitsFromList: value });\r\n if(value !== \"\"){\r\n this.setState({TicketSubject: value+'- Trouble Ticket'})\r\n }else{\r\n this.setState({TicketSubject: value})\r\n }\r\n return;\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n handleTicketSubject = (e) => {\r\n let { value } = e.target;\r\n this.setState({ TicketSubject: value });\r\n }\r\n\r\n handleTicketSubjectInternal = (e) => {\r\n let { value } = e.target;\r\n this.setState({ TicketSubject: value });\r\n }\r\n\r\n handleTicketSubjectRFC = (e) => {\r\n let { value } = e.target;\r\n this.setState({ TicketSubject: value });\r\n }\r\n\r\n handleTicketDescription = (e) => {\r\n let { value } = e.target;\r\n this.setState({ TicketDescription: value });\r\n }\r\n\r\n renderModelButtons = () => {\r\n if (sessionStorage.enterpriseType === \"MIXED\" && this.state.SelectedMixedType === 'VOICE_DUPLICATE') {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n }\r\n if (sessionStorage.enterpriseType === \"MIXED\" && this.state.SelectedMixedType === 'DATA_SERVICES') {\r\n return (\r\n \r\n )\r\n }\r\n if (sessionStorage.enterpriseType === \"MIXED\" && this.state.SelectedMixedType === 'RETAIL_TROUBLE') {\r\n return (\r\n
    \r\n )\r\n }\r\n if (sessionStorage.enterpriseType === \"DATA\") {\r\n return (\r\n \r\n )\r\n }\r\n if (sessionStorage.enterpriseType === \"VOICE\") {\r\n return (\r\n
    \r\n )\r\n }\r\n }\r\n\r\n renderContent = () => {\r\n if (sessionStorage.enterpriseType !== \"MIXED\") {\r\n return this.newTicketContent();\r\n }\r\n else if (sessionStorage.enterpriseType === 'MIXED' && this.state.SelectedMixedType !== '') {\r\n return this.newTicketContent()\r\n }\r\n else {\r\n return null\r\n }\r\n\r\n }\r\n\r\n newTicketContent = () => {\r\n var via = \"\"\r\n let ticketCircuitSubject = \"\";\r\n const rfc = this.state.redirectedFromCircuitsList !== null ? true : false;\r\n if (rfc) {\r\n var circuitName = this.state.redirectedFromCircuitsList[0].CircuitName;\r\n ticketCircuitSubject = circuitName + '- Trouble Ticket';\r\n var locationRfc = this.state.redirectedFromCircuitsList[0].SelectedLocation;\r\n var circuitIdRfc = this.state.redirectedFromCircuitsList[0].CircuitId;\r\n }\r\n // if (this.state.SelectCircuitsFromList !== \"\") {\r\n // //var ticketCircuitIdSubject = this.state.SelectCircuitsFromList + '- Trouble Ticket';\r\n // ticketCircuitSubject=this.state.SelectCircuitsFromList + '- Trouble Ticket';\r\n // }\r\n\r\n if (this.state.submittedTicket) {\r\n return \r\n } else {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {/* {this.state.SelectedMixedType === 'RETAIL_TROUBLE' || sessionStorage.enterpriseType === 'VOICE' || this.state.SelectedMixedType === \"VOICE_DUPLICATE\" ? null : {this.formGroupDropDown('Category', 'Category', this.state.SelectedCategory, this.state.CategoryOptions)}} */}\r\n {/* {(this.state.SelectedCategory === '' || this.state.SelectedCategory === 'Other' ||this.state.SelectedMixedType === 'RETAIL_TROUBLE' || sessionStorage.enterpriseType === 'VOICE'||this.state.SelectedMixedType ===\"VOICE_DUPLICATE\")\r\n ? null\r\n : this.formGroupDropDown(\r\n 'SubCategory',\r\n 'Sub Category',\r\n this.state.SelectedSubCategory,\r\n this.state.SubCategoryOptions\r\n )} */}\r\n {rfc ? this.formGroupInput('Location', 'Location', locationRfc) : this.formGroupDropDown('Location', 'Location', this.state.SelectedLocation, this.state.LocationOptions)}\r\n {this.state.SelectedMixedType === 'RETAIL_TROUBLE' || sessionStorage.enterpriseType === 'VOICE' || this.state.SelectedMixedType === \"VOICE_DUPLICATE\"\r\n ? null\r\n : {rfc ? this.formGroupInput('CircuitsList', 'Circuit ID', circuitIdRfc) : this.formGroupDropDown('CircuitsList', 'Circuit ID', this.state.SelectCircuitsFromList, this.state.CircuitsOptions)}}\r\n {this.formGroupDropDown('Contact', 'Contact', this.state.SelectedContact, this.state.ContactOptions)}\r\n {/* {this.state.SelectedMixedType === 'RETAIL_TROUBLE' || sessionStorage.enterpriseType === 'VOICE' || this.state.SelectedMixedType === \"VOICE_DUPLICATE\"\r\n ? null\r\n : {rfc ? this.formGroupInput('CircuitsList', 'Circuits Id', circuitIdRfc) : this.formGroupDropDown('CircuitsList', 'Circuits Id', this.state.SelectCircuitsFromList, this.state.CircuitsOptions)}} */}\r\n {/* {rfc ? this.formGroupInput('CircuitsList', 'Circuits Id', circuitIdRfc) : this.formGroupDropDown('CircuitsList', 'Circuits Id', this.state.SelectCircuitsFromList, this.state.CircuitsOptions)} */}\r\n {/* {this.formGroupDropDown('CircuitsList', 'Circuits Id', this.state.SelectCircuitsFromList, this.state.CircuitsOptions)} */}\r\n {this.state.ShowTextBoxesForContactDetails ? this.formGroupInput('ContactName', 'Contact Name', this.state.ContactName) : null}\r\n {this.state.ShowTextBoxesForContactDetails ? this.formGroupInput('ContactEmail', 'Contact Email', this.state.ContactEmail) : null}\r\n {this.state.ShowTextBoxesForContactDetails ? this.formGroupInput('ContactPhone', 'Contact Phone', this.state.ContactPhone) : null}\r\n {this.formGroupDropDown('CommunicationMethod', 'Contact Method', this.state.SelectedCommMethod, this.state.CommMethodOptions)}\r\n
    \r\n
    \r\n {this.state.AffectedDevices.length > 0\r\n ?
    \r\n {`Affected Devices: ${this.state.AffectedDevices.length}`}\r\n
    \r\n
    : null}\r\n {this.state.AffectedServices.length > 0\r\n ?
    \r\n {`Affected Services & Users: ${this.state.AffectedServices.length}`}\r\n
    \r\n
    : null}\r\n {this.state.AffectedCircuits.length > 0\r\n ?
    \r\n {`Affected Circuits & Users: ${this.state.AffectedCircuits.length}`}\r\n
    \r\n
    : null}\r\n {this.state.AttachmentList.length > 0\r\n ?
    \r\n {`Attachments: ${this.state.AttachmentList.length}`}\r\n
    \r\n
    : null}\r\n {rfc ? \r\n Subject *:\r\n \r\n :\r\n \r\n Subject *:\r\n \r\n \r\n }\r\n\r\n Description *:\r\n \r\n
    \r\n Allowed Attachment Types are PDF, Image(GIF, TIF, JPEG, Etc..)\r\n Recommendation: Send .doc, .txt, .csv, etc. via email.\r\n \r\n
    \r\n
    \r\n \r\n {this.renderModelButtons()}\r\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 addAttachment = (event) => {\r\n let file = event.target.files[0];\r\n let fileTypes = ['image/jpeg', 'image/gif', 'image/png', 'application/pdf', 'image/x-eps'];\r\n if (fileTypes.indexOf(file.type) > -1) {\r\n $('#filePopup').hide();\r\n let reader = new FileReader();\r\n let newFileIndex = this.state.fileIndex + 1;\r\n reader.addEventListener('loadend', async () => {\r\n let fileParams = {\r\n id: newFileIndex,\r\n body: reader.result.split(',')[1],\r\n name: file.name\r\n };\r\n this.state.AttachmentList.push(fileParams);\r\n await this.setState({ AttachmentList: this.state.AttachmentList, fileIndex: newFileIndex });\r\n }, false);\r\n if (file) {\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n else {\r\n $('#filePopup').show();\r\n }\r\n }\r\n\r\n createAttachment = async (body, name, ticketId) => {\r\n let apiPath = 'admin/CreateAttachment';\r\n let attachmentDTO = {\r\n TicketId: ticketId,\r\n AttachmentBody: body,\r\n FileName: name,\r\n };\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(attachmentDTO)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n } else {\r\n let msg = JSON.parse(response.message);\r\n console.log('res error', msg);\r\n }\r\n }\r\n\r\n openAttachments = () => {\r\n this.refs.fileUploader.click();\r\n }\r\n\r\n storeAffectedDevices = (data) => {\r\n let devices = data.map(itm => {\r\n return `MAC: ${itm.MacAddress || ''}\\nMake/Model: ${itm.MakeModel || ''}\\nAssignedTo: ${itm.AssignedTo || ''}\\n\\n`;\r\n });\r\n this.setState({ AffectedDevices: devices });\r\n }\r\n\r\n storeAffectedCircuitsRedirectedFromCircuits = (data) => {\r\n const rfc = this.state.redirectedFromCircuitsList !== null ? true : false;\r\n console.log(\"new_ticket.js\", this.state.redirectedFromCircuitsList);\r\n if (this.state.redirectedFromCircuitsList !== null) {\r\n var circuits = this.state.redirectedFromCircuitsList.map(itm => {\r\n return `CircuitId: ${itm.CircuitId || ''}\\nCircuitName: ${itm.CircuitName || ''}\\nSelected: ${true || ''}\\n\\n`;\r\n });\r\n }\r\n if (rfc && data != null) {\r\n var circuitsData = data.map(itm => {\r\n return `CircuitId: ${itm.CircuitId || ''}\\nCircuitName: ${itm.CircuitName || ''}\\nSelected: ${true || ''}\\n\\n`;\r\n })\r\n const affectedCircuits = [...circuits, ...circuitsData]\r\n this.setState({ AffectedCircuits: affectedCircuits });\r\n }\r\n if (rfc && data === undefined) {\r\n this.setState({ AffectedCircuits: circuits });\r\n }\r\n if (data != null && rfc == false) {\r\n var circuitsData = data.map(itm => {\r\n return `CircuitId: ${itm.CircuitId || ''}\\nCircuitName: ${itm.CircuitName || ''}\\nSelected: ${true || ''}\\n\\n`;\r\n })\r\n this.setState({ AffectedCircuits: circuitsData });\r\n }\r\n console.log(this.state.AffectedCircuits, \"AffectedCircuits\")\r\n }\r\n\r\n storeAffectedServices = (data) => {\r\n let services = data.map(itm => {\r\n let extension = ''\r\n if (itm.Extension)\r\n extension = \"Extension: \" + itm.Extension + '\\n';\r\n else if (itm.Username && itm.ServiceNumber !== itm.Username)\r\n extension = \"Username: \" + itm.Username + '\\n';\r\n let serviceID = itm.ServiceNumber ? \"ServiceID: \" + itm.ServiceNumber + '\\n' : ''\r\n return `ServiceType: ${itm.ServiceType || itm.UserType}\\n${serviceID}${extension}\\n`;\r\n });\r\n this.setState({ AffectedServices: services });\r\n }\r\n\r\n submitNewTicketComment = async (ticketId) => {\r\n let apiPath = 'admin/CreateComment';\r\n let string = '';\r\n if (this.state.AffectedDevices.length > 0 && this.state.AffectedServices.length > 0) {\r\n string = `AFFECTED DEVICES COUNT: ${this.state.AffectedDevices.length}\\n${this.state.AffectedDevices.join().replace(/,/g, '')} AFFECTED SERVICES & USERS COUNT: ${this.state.AffectedServices.length}\\n${this.state.AffectedServices.join().replace(/,/g, '')}`;\r\n } else if (this.state.AffectedDevices.length > 0 && this.state.AffectedServices.length < 1) {\r\n string = `AFFECTED DEVICES COUNT: ${this.state.AffectedDevices.length}\\n${this.state.AffectedDevices.join().replace(/,/g, '')}`;\r\n }\r\n else if (this.state.AffectedCircuits.length > 0 && this.state.AffectedDevices.length < 1) {\r\n string = `AFFECTED CIRCUITS COUNT: ${this.state.AffectedCircuits.length}\\n${this.state.AffectedCircuits.join().replace(/,/g, '')}`;\r\n }\r\n else if (this.state.AffectedCircuits.length > 0 && this.state.AffectedDevices.length > 0) {\r\n string = `AFFECTED CIRCUITS COUNT: ${this.state.AffectedCircuits.length}\\n${this.state.AffectedDevices.join().replace(/,/g, '')} AFFECTED DEVICES COUNT: ${this.state.AffectedDevices.length}\\n${this.state.AffectedDevices.join().replace(/,/g, '')}`;\r\n }\r\n else {\r\n string = `AFFECTED SERVICES & USERS COUNT: ${this.state.AffectedServices.length}\\n${this.state.AffectedServices.join().replace(/,/g, '')}`\r\n }\r\n let commentDTO = {\r\n CommentId: '',\r\n TicketId: ticketId,\r\n CommentBody: string,\r\n };\r\n if (this.state.AffectedDevices.length > 0 || this.state.AffectedServices.length > 0 || this.state.AffectedCircuits.length > 0) {\r\n await apiCalls.post(apiPath, 'POST', JSON.stringify(commentDTO)).then(res => res).catch(err => console.error(err));\r\n }\r\n }\r\n\r\n submitNewTicket = async () => {\r\n let {\r\n TicketSubject,\r\n TicketDescription,\r\n SelectedLocation,\r\n SelectedContact,\r\n SelectedPriority,\r\n SelectedCategory,\r\n // SelectedSubCategory,\r\n SelectedOtherCategory,\r\n SelectedCommMethod,\r\n AttachmentList,\r\n ContactName,\r\n ContactEmail,\r\n ContactPhone,\r\n SelectedType,\r\n LoggedUser,\r\n CircuitId,\r\n SelectCircuitsFromList\r\n } = this.state;\r\n if (this.state.TicketDescription === \"\") {\r\n this.setState({ submittedTicket: false, ticketSubFailed: true });\r\n }\r\n let apiPath = 'admin/CreateTicket';this.state.redirectedFromCircuitsList !== null ? true : false;\r\n const rfc = this.state.redirectedFromCircuitsList !== null ? true : false;\r\n if (rfc) {\r\n var ticketSubjectCircuits = this.state.redirectedFromCircuitsList[0].CircuitName + '- Trouble Ticket'\r\n var ticketDTO = {\r\n AccountId: accountID,\r\n LocationAccountNumber: this.state.redirectedFromCircuitsList[0].LocationAccountNumber,\r\n CircuitId: this.state.redirectedFromCircuitsList[0].CircuitId,\r\n Subject: ticketSubjectCircuits,\r\n Description: ContactName !== '' && SelectedCommMethod !== \"\" ?\r\n \"Contact Name:- \" + ContactName + \"\\n\\nContactEmail:- \" + ContactEmail + \"\\n\\nContactPhone:-\" + ContactPhone + \"\\n\\nInitial Contact Method:- \" + SelectedCommMethod + \"\\n\\nSubmitted By:-\" + LoggedUser + \"\\n\\n\" + TicketDescription\r\n : ContactName !== '' && SelectedCommMethod === \"\" ?\r\n \"Contact Name:-\" + ContactName + \"\\n\\nContactEmail:-\" + ContactEmail + \"\\n\\nContactPhone:-\" + ContactPhone + \"\\n\\nSubmitted By:-\" + LoggedUser + \"\\n\\n\" + TicketDescription\r\n : ContactName === '' && SelectedCommMethod !== \"\" ?\r\n \"Initial Contact Method:- \" + SelectedCommMethod + \"\\n\\nSubmitted By:-\" + LoggedUser + \"\\n\\n\" + TicketDescription :\r\n \"Submitted By:-\" + LoggedUser + \"\\n\\n\" + TicketDescription,\r\n Category: SelectedCategory,\r\n // SubCategory: SelectedSubCategory || \"N/A\",\r\n OtherCategory: SelectedOtherCategory,\r\n Priority: SelectedPriority,\r\n ContactId: SelectedContact,\r\n PreferredCommunication: SelectedCommMethod,\r\n TicketType: sessionStorage.enterpriseType == 'MIXED' ? this.state.SelectedMixedType : this.ticketType\r\n };\r\n console.log(JSON.stringify(ticketDTO));\r\n }\r\n else {\r\n var ticketDTO = {\r\n AccountId: accountID,\r\n LocationAccountNumber: SelectedLocation,\r\n Subject: TicketSubject,\r\n Description: ContactName !== '' && SelectedCommMethod !== \"\" ?\r\n \"Contact Name:- \" + ContactName + \"\\n\\nContactEmail:- \" + ContactEmail + \"\\n\\nContactPhone:-\" + ContactPhone + \"\\n\\nInitial Contact Method:- \" + SelectedCommMethod + \"\\n\\nSubmitted By:-\" + LoggedUser + \"\\n\\n\" + TicketDescription\r\n : ContactName !== '' && SelectedCommMethod === \"\" ?\r\n \"Contact Name:-\" + ContactName + \"\\n\\nContactEmail:-\" + ContactEmail + \"\\n\\nContactPhone:-\" + ContactPhone + \"\\n\\nSubmitted By:-\" + LoggedUser + \"\\n\\n\" + TicketDescription\r\n : ContactName === '' && SelectedCommMethod !== \"\" ?\r\n \"Initial Contact Method:- \" + SelectedCommMethod + \"\\n\\nSubmitted By:-\" + LoggedUser + \"\\n\\n\" + TicketDescription :\r\n \"Submitted By:-\" + LoggedUser + \"\\n\\n\" + TicketDescription,\r\n Category: SelectedCategory,\r\n // SubCategory: SelectedSubCategory || \"N/A\",\r\n OtherCategory: SelectedOtherCategory,\r\n Priority: SelectedPriority,\r\n ContactId: SelectedContact,\r\n PreferredCommunication: SelectedCommMethod,\r\n CircuitId: SelectCircuitsFromList,\r\n TicketType: sessionStorage.enterpriseType == 'MIXED' ? this.state.SelectedMixedType : this.ticketType\r\n };\r\n //PBI:6610 :- this condition will enact in case of SelectedMixedType as \"Both\", \r\n // in case of \"Both\", the key needs to be same as of VOICE i.e. RETAIL_TROUBLE,\r\n // and as the keys could not be same for VOICE & BOTH so replacing them before submission\r\n if (ticketDTO.TicketType === \"VOICE_DUPLICATE\") {\r\n ticketDTO.TicketType = \"RETAIL_TROUBLE\";\r\n }\r\n }\r\n if (this.state.TicketDescription === \"\") {\r\n this.setState({ submittedTicket: false, ticketSubFailed: true });\r\n }\r\n else {\r\n if(this.state.SelectedMixedType==='DATA_SERVICES' && this.state.SelectCircuitsFromList ===\"\" && rfc=== false){\r\n this.setState({ submittedTicket: false, ticketSubFailed: true });\r\n }\r\n else{\r\n await this.setState({ submittedTicket: true, ticketSubFailed: false });\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(ticketDTO)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n let newTicketID = JSON.parse(response.message).ObjectId;\r\n await this.submitNewTicketComment(newTicketID);\r\n await AttachmentList.forEach((itm) => {\r\n this.createAttachment(itm.body, itm.name, newTicketID);\r\n });\r\n this.props.history.push(`/ticket/${newTicketID}`);\r\n } else {\r\n this.setState({ submittedTicket: false, ticketSubFailed: true });\r\n }\r\n }\r\n }\r\n }\r\n\r\n cancelNewTicket = () => {\r\n this.setState({ showConfirmationModal: true });\r\n }\r\n\r\n handleCancelTicketYes = () => {\r\n this.props.history.push('/tickets_all')\r\n }\r\n\r\n handleCloseConfirmation = () => {\r\n this.setState({ showConfirmationModal: false });\r\n }\r\n\r\n attachmentDropdown = () => {\r\n return (\r\n
    \r\n \r\n View Attachments\r\n \r\n \r\n \r\n
    \r\n )\r\n }\r\n\r\n removeAttachment = (id) => {\r\n let { AttachmentList } = this.state;\r\n let filteredList = AttachmentList.filter(itm => itm.id !== id);\r\n this.setState({ AttachmentList: filteredList });\r\n }\r\n\r\n createTextBox = () => {\r\n const rfc = this.state.redirectedFromCircuitsList !== null ? true : false;\r\n if (rfc && sessionStorage.enterpriseType == 'MIXED') {\r\n this.ticketType = \"DATA\";\r\n return (\r\n {this.formGroupDropDown('Type', 'Type', this.state.SelectedMixedType, this.state.TypeListOptions)}\r\n \r\n )\r\n }\r\n else {\r\n if (sessionStorage.enterpriseType == 'DATA') {\r\n this.ticketType = \"DATA\";\r\n return (

    Type

    )\r\n }\r\n else if (sessionStorage.enterpriseType == 'MIXED') {\r\n this.ticketType = \"DATA\";\r\n return (\r\n {this.formGroupDropDown('Type', 'Type', this.state.SelectedMixedType, this.state.TypeListOptions)}\r\n \r\n )\r\n }\r\n else {\r\n this.ticketType = \"VOICE\";\r\n return (

    Type

    )\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const rfc = this.state.redirectedFromCircuitsList !== null ? true : false;\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    New Ticket \r\n \r\n {this.createTextBox()}\r\n {this.state.ticketSubFailed ?\r\n Submission Error: Confirm All Required Fields\r\n : null}

    \r\n
    \r\n
    \r\n {this.state.AttachmentList.length > 0 ? this.attachmentDropdown() : null}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Are you sure you want to cancel this ticket?\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.renderContent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n};\r\nexport default NewTicket;","import React, { Component } from 'react';\r\nimport * as apiCalls from '../requests/api_calls';\r\nimport * as config from '../requests/config';\r\nimport * as settings from '../scripts/settings';\r\nimport { DataLoadingSpinner } from '../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy, filterBy } from '@progress/kendo-data-query';\r\n\r\nexport default class DocumentRepository extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n loading: false,\r\n UserFiles: [],\r\n AdditionalFiles: [],\r\n FullListings: [],\r\n Sort: [{ field: \"FileName\", dir: \"asc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n }\r\n\r\n class DataLink extends GridCell {\r\n render() {\r\n //let test = this.props.dataItem;\r\n let { FileName, DocumentId, URL } = this.props.dataItem;\r\n return (\r\n \r\n
    \r\n \r\n \r\n {URL}\r\n \r\n \r\n
    \r\n \r\n )\r\n }\r\n }\r\n this.FileDownloadLink = DataLink;\r\n }\r\n\r\n componentDidMount() {\r\n let { IsWholesale } = sessionStorage;\r\n if (IsWholesale === 'false') {\r\n this.props.history.push('/');\r\n } else {\r\n this.fetchFiles();\r\n }\r\n }\r\n\r\n fetchFiles = async () => {\r\n this.setState({ loading: true });\r\n let apiPath = `usr/GetDocuments`;\r\n let response = await apiCalls.fetchData(apiPath).then(data => data).catch(err => console.error(err));\r\n if (response)\r\n {\r\n let userFiles = response.filter(itm => itm.DocumentType !== 'User Guides');\r\n userFiles.map((doc, idx) => {\r\n doc.FileDescription = doc.FileDescription.replace(/</g,'<').replace(/>/g,'>').replace(/&/g,'&').replace(/"/g, '\"');\r\n doc.InsertedDate = new Date(doc.InsertedDate);\r\n doc.LastUpdatedDate = new Date(doc.LastUpdatedDate);\r\n });\r\n this.setState({\r\n UserFiles: response.filter(itm => itm.DocumentType === \"User Guides\"),\r\n AdditionalFiles: userFiles, //response.filter(itm => itm.DocumentType !== \"User Guides\"),\r\n FullListings: userFiles, //response.filter(itm => itm.DocumentType !== \"User Guides\"),\r\n loading: false\r\n });\r\n } else {\r\n this.setState({\r\n UserFiles: [],\r\n AdditionalFiles: [],\r\n FullListings: [],\r\n loading: false\r\n })\r\n }\r\n }\r\n\r\n sortChange = (event) => {\r\n this.setState({\r\n AdditionalFiles: orderBy(this.state.AdditionalFiles, event.sort),\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n searchListings = (event) => {\r\n // only searching off the additional files grid based on requirements\r\n if (this.state.FullListings && this.state.FullListings.length > 0) {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullListings;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let files = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'FileName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'FileDescription', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n this.delayedSearch(files);\r\n }\r\n else {\r\n this.delayedSearch(fullDetails);\r\n }\r\n }\r\n }\r\n\r\n delayedSearch = async (files) => {\r\n await this.setState({ loading: true });\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.setState({ AdditionalFiles: files, loading: false });\r\n }, settings.searchDelay);\r\n }\r\n\r\n additionalFilesGrid = () => {\r\n if (this.state.AdditionalFiles && this.state.AdditionalFiles.length > 0) {\r\n return (\r\n
    \r\n

    Additional Files

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n )\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n userFilesGrid = () => {\r\n let { UserFiles } = this.state;\r\n if (UserFiles && UserFiles.length > 0) {\r\n return (\r\n
    \r\n

    User Guides

    \r\n {UserFiles.map((file, idx) => {\r\n\r\n return (\r\n
    \r\n \r\n \r\n {file.URL}\r\n \r\n \r\n
    \r\n )\r\n })}\r\n
    \r\n )\r\n } else {\r\n return (\r\n
    \r\n

    User Files

    \r\n
    No User Guides are currently available
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Documents

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n {!this.state.loading ?
    \r\n
    \r\n {this.userFilesGrid()}\r\n
    \r\n
    \r\n {this.additionalFilesGrid()}\r\n
    \r\n
    : }\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\nimport PropTypes from 'prop-types';\r\nimport InputMask from 'react-input-mask';\r\n\r\nclass AddEditEnterpriseContact extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n let canEdit = false;\r\n if (props.AddEditMode === 'Add')\r\n canEdit = true;\r\n else if (props.ContactDetails)\r\n canEdit = props.ContactDetails.CanEdit;\r\n\r\n this.state = {\r\n isAdd: props.AddEditMode === 'Add' ? true : false,\r\n saving: false,\r\n ContactDetails: {\r\n EnterpriseId: props.ContactDetails && props.ContactDetails.EnterpriseId ? props.ContactDetails.EnterpriseId : 0,\r\n OldName: props.ContactDetails && props.ContactDetails.OldName ? props.ContactDetails.OldName : '',\r\n Name: props.ContactDetails && props.ContactDetails.Name ? props.ContactDetails.Name : '',\r\n TN: props.ContactDetails && props.ContactDetails.TN ? props.ContactDetails.TN : '',\r\n CanEdit: canEdit\r\n },\r\n showModal: false,\r\n savingShowSuccess: false,\r\n savingShowError: false,\r\n saveResultsMessage: '',\r\n SuccessMessage: 'Success',\r\n adding: false\r\n };\r\n this.handleOnSave = this.handleOnSave.bind(this);\r\n this.callUpdateFromModal = this.callUpdateFromModal.bind(this);\r\n }\r\n\r\n getBlankContactDetails = () => {\r\n return {\r\n EnterpriseId: 0,\r\n OldName: '',\r\n Name: '',\r\n TN: '',\r\n CanEdit: true\r\n };\r\n }\r\n\r\n showModal = () => {\r\n this.setState({showModal: true, ErrorMessage: '', savingShowError: false});\r\n }\r\n\r\n handleClose = () => {\r\n let state = this.state;\r\n if (state.isAdd)\r\n state.ContactDetails = this.getBlankContactDetails();\r\n \r\n state.showModal = false;\r\n state.savingShowSuccess = false;\r\n state.savingShowError = false;\r\n \r\n this.setState(state);\r\n }\r\n\r\n handleOnChange=(field, event)=>{\r\n\r\n let state = {...this.state};\r\n state.ContactDetails[field] = event.target.value;\r\n this.setState(state);\r\n }\r\n\r\n handleOnStateChange = (e) => {\r\n let state = this.state;\r\n state.ContactDetails.State = e.target.value;\r\n this.setState(state);\r\n }\r\n\r\n callUpdateFromModal = (newContactModel) => {\r\n this.props.UpdateParentFromModal(newContactModel, this.state.adding);\r\n }\r\n\r\n getSaveMessage = () => {\r\n if (this.state.saving)\r\n {\r\n return ()\r\n } else if (this.state.savingShowError) {\r\n return (\r\n
    \r\n {this.state.saveResultsMessage}\r\n
    \r\n );\r\n } else if (this.state.savingShowSuccess) {\r\n return (\r\n \r\n
    {this.state.SuccessMessage}
    \r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n handleOnSave = () => {\r\n\r\n if (this.state.ContactDetails.Name.toString().trim() === '')\r\n {\r\n this.setState({savingShowError: true, saveResultsMessage: 'A Name must be provided!'})\r\n return;\r\n }\r\n if (this.state.ContactDetails.TN.toString().trim() === '')\r\n {\r\n this.setState({savingShowError: true, saveResultsMessage: 'A TN must be provided!'})\r\n return;\r\n }\r\n\r\n this.setState({saving: true, adding: (this.state.ContactDetails.Name && this.state.ContactDetails.OldName === '') ? true : false});\r\n let apiPath = '';\r\n let verb = '';//this.state.isAdd ? 'POST' : 'PATCH';''\r\n let requestData = {};\r\n if (this.state.ContactDetails.OldName === '')\r\n {\r\n apiPath = 'admin/AddContactToContactBook';\r\n verb = 'POST'\r\n requestData = {\r\n EnterpriseId: 0,\r\n TN: this.state.ContactDetails.TN.replace(/_/gi, \"\"),\r\n OldName: '',\r\n Name: this.state.ContactDetails.Name,\r\n CanEdit: this.state.ContactDetails.CanEdit\r\n };\r\n } else {\r\n apiPath = 'admin/UpdateContactInContactBook';\r\n verb = 'PATCH';\r\n requestData = {\r\n EnterpriseId: this.state.ContactDetails.EnterpriseId,\r\n OldName: this.state.ContactDetails.OldName,\r\n TN: this.state.ContactDetails.TN.replace(/_/gi, \"\"),\r\n Name: this.state.ContactDetails.Name,\r\n CanEdit: this.state.ContactDetails.CanEdit\r\n }\r\n }\r\n apiCalls.post(apiPath, verb, JSON.stringify(requestData)).then((data) => {\r\n if (data.ok)\r\n {\r\n let newContactModel = JSON.parse(data.message);\r\n this.callUpdateFromModal(newContactModel);\r\n this.setState({ContactDetails: newContactModel, savingShowSuccess: true, saving: false, SuccessMessage: \"Success\", ErrorMessage: '', savingShowError: false});\r\n } else {\r\n this.setState({savingShowError: true, saving: false, saveResultsMessage: 'An error occurred saving Contact in Contact Directory: ' + data.message })\r\n }\r\n })\r\n .catch(message => {\r\n this.setState({\r\n saving: false,\r\n savingShowError: true,\r\n loading: false,\r\n saveResultsMessage: 'An error occurred saving Contact in Contact Directory: ' + message\r\n });\r\n });\r\n \r\n }\r\n\r\n getModalButtons = () => { \r\n if (this.state.ContactDetails.CanEdit === true)\r\n {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } \r\n }\r\n\r\n getEditViewButton = () => {\r\n if (this.state.ContactDetails.CanEdit === true)\r\n return (\r\n \r\n );\r\n else\r\n return (\r\n \r\n {this.showModal()}}>View\r\n \r\n )\r\n }\r\n\r\n render() {\r\n let contact = this.state.ContactDetails;\r\n let canEdit = contact.CanEdit === true ? true : false;\r\n if (this.state.isAdd)\r\n {\r\n return (\r\n \r\n
    \r\n Add Contact\r\n
    \r\n \r\n \r\n Add Enterprise Contact\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {this.getModalButtons()}\r\n {this.getSaveMessage()}\r\n {/* */}\r\n
    \r\n
    \r\n
    \r\n ); \r\n } else {\r\n let Button = this.getEditViewButton();\r\n return (\r\n \r\n {Button}\r\n \r\n \r\n Edit Enterprise Contact\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {this.getModalButtons()}\r\n {this.getSaveMessage()}\r\n {/* */}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n}\r\n\r\nclass ContactTextField extends Component {\r\n render() {\r\n if (this.props.Mask && this.props.Mask !== '')\r\n {\r\n return (\r\n
    \r\n \r\n { if (this.props.enabled === true) this.props.onChange(this.props.id,e) } } />\r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n { if (this.props.enabled === true) this.props.onChange(this.props.id,e) } }/>\r\n
    \r\n );\r\n }\r\n }\r\n};\r\n\r\nContactTextField.propTypes = {\r\n label: PropTypes.string.isRequired,\r\n textvalue: PropTypes.string,\r\n id: PropTypes.string.isRequired,\r\n onChange: PropTypes.func\r\n}\r\n\r\n\r\n\r\nexport default AddEditEnterpriseContact;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport _ from 'lodash';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { DataLoadingSpinner } from '../components/spinners';\r\nimport { connect } from 'react-redux';\r\nimport * as apiCalls from '../requests/api_calls';\r\nimport * as EmailValidator from 'email-validator';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\nimport PropTypes from 'prop-types';\r\nimport WrappedCell from '../components/wordWrappedCell'\r\nimport AddEditEnterpriseContact from './modals/AddEditEnterpriseContact';\r\nimport { headerToolTip } from '../components/ellipsisHeaderTooltip';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport * as helper from './../scripts/helper';\r\n\r\nclass EnterpriseContactDirectory extends Component {\r\n\r\n initialState = (props) => {\r\n return {\r\n Contacts: [],\r\n ContactsCopy: [],\r\n loading: true,\r\n showDeletePrompt: false,\r\n Sort: [{ field: \"Name\", dir: 'asc' }],\r\n gridHeight: (window.innerHeight - 180),\r\n searchTerm: '',\r\n savingShowSuccess: false,\r\n savingShowError: false,\r\n saveResultsMessage: ''\r\n };\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = this.initialState(props);\r\n\r\n const handleDeleteItem = this.handleDeleteItem.bind(this);\r\n const updateFromModal = this.updateFromModal.bind(this);\r\n\r\n class ContactEditButton extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n return (\r\n \r\n \r\n \r\n\r\n );\r\n }\r\n }\r\n\r\n class ContactDeleteButton extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n if (this.props.dataItem.CanEdit === true)\r\n return (\r\n \r\n \r\n \r\n );\r\n else\r\n return (\r\n \r\n\r\n \r\n )\r\n }\r\n }\r\n\r\n this.sortChange = this.sortChange.bind(this);\r\n this.searchContacts = this.searchContacts.bind(this);\r\n this.handleCancelDelete = this.handleCancelDelete.bind(this);\r\n\r\n this.ContactEditButton = ContactEditButton;\r\n this.ContactDeleteButton = ContactDeleteButton;\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n fetchData = () => {\r\n this.setState({ loading: true });\r\n let apiPath = 'admin/GetEnterpriseContactBook'\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n if (data !== null) {\r\n this.setState({ Contacts: data, ContactsCopy: data, loading: false });\r\n } else {\r\n this.setState({ Contacts: [], ContactsCopy: [], loading: false });\r\n }\r\n }).catch(ex => {\r\n console.log(ex);\r\n this.setState({ Contacts: [], ContactsCopy: [], loading: false });\r\n });\r\n }\r\n\r\n gridContent = () => {\r\n let EditTitle = sessionStorage.userRole === 'SUPER_ADMIN' ? 'Edit' : 'View';\r\n let DeleteTitle = sessionStorage.userRole === 'SUPER_ADMIN' ? 'Delete' : ' ';\r\n return (\r\n \r\n \r\n {/* */}\r\n \r\n {/* \r\n \r\n \r\n */}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n sortChange = (event) => {\r\n let sortedSet = this.sortContacts(event.sort);\r\n this.setState({\r\n Contacts: sortedSet,\r\n ContactsCopy: sortedSet,\r\n Sort: event.sort\r\n });\r\n }\r\n\r\n sortContacts(sort) {\r\n\r\n let contacts = this.state.Contacts.slice();\r\n let sortedSet = orderBy(contacts, sort);\r\n if (sort.length) {\r\n return helper.blanksAfterZ(sortedSet, sort);\r\n } else {\r\n return sortedSet;\r\n }\r\n }\r\n\r\n searchContacts = (event) => {\r\n let searchText = '';\r\n let fullDetails = this.state.Contacts;\r\n if (event && event.target && event.target.value && event.target.value.trim() !== '') {\r\n searchText = event.target.value;\r\n let contacts = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'Name', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'TN', operator: 'contains', value: searchText, ignoreCase: true }\r\n\r\n ]\r\n });\r\n\r\n this.setState({ ContactsCopy: contacts, searchTerm: searchText })\r\n }\r\n else {\r\n this.setState({ ContactsCopy: fullDetails, searchTerm: '' });\r\n }\r\n }\r\n\r\n handleDeleteItem = (productItem) => {\r\n this.setState({ showDeletePrompt: true, selectedDeleteItem: productItem });\r\n }\r\n\r\n handleCancelDelete = () => {\r\n this.setState({ showDeletePrompt: false, selectedDeleteItem: null });\r\n }\r\n\r\n handleConfirmedDelete = () => {\r\n this.setState({ saving: true });\r\n let contact = this.state.selectedDeleteItem;\r\n let apiPath = 'admin/RemoveContactInContactBook';\r\n let verb = 'POST';\r\n let requestData = contact.Name;\r\n apiCalls.post(apiPath, verb, JSON.stringify(requestData)).then((data) => {\r\n console.log(data);\r\n if (data.ok) {\r\n let Contacts = this.state.Contacts.slice();\r\n let ContactsCopy = this.state.ContactsCopy.slice();\r\n\r\n let newContacts = Contacts.filter(resp => resp.Name !== contact.Name);\r\n let newContactsCopy = ContactsCopy.filter(resp => resp.Name !== contact.Name);\r\n this.setState({\r\n saving: false,\r\n savingShowSuccess: true,\r\n saveResultsMessage: 'Contact Removed Successfully!',\r\n Contacts: newContacts,\r\n ContactsCopy: newContactsCopy,\r\n showDeletePrompt: false\r\n });\r\n this.fetchData();\r\n } else {\r\n this.setState({ savingShowError: true, saveResultsMessage: data, saving: false, showDeletePrompt: false })\r\n }\r\n })\r\n .catch(message => {\r\n this.setState({\r\n saving: false,\r\n savingShowError: true,\r\n saveResultsMessage: 'An error occurred while attempting to remove contact from contact directory!',\r\n showDeletePrompt: false\r\n });\r\n });\r\n }\r\n\r\n updateFromModal = (contact, isAdd) => {\r\n let Contacts = this.state.Contacts.slice();\r\n let ContactsCopy = this.state.ContactsCopy.slice();\r\n if (!isAdd) {\r\n let oldContact = Contacts.filter(resp => resp.Name === contact.OldName)[0];\r\n let oldContactCopy = ContactsCopy.filter(resp => resp.Name === contact.OldName)[0];\r\n let idxOldContact = _.indexOf(Contacts, oldContact);\r\n let idxOldContactCopy = _.indexOf(ContactsCopy, oldContactCopy);\r\n\r\n contact.OldName = contact.Name;\r\n Contacts[idxOldContact] = contact;\r\n ContactsCopy[idxOldContactCopy] = contact;\r\n }\r\n else {\r\n Contacts.push(contact);\r\n ContactsCopy.push(contact);\r\n }\r\n this.setState({ Contacts: Contacts, ContactsCopy: ContactsCopy });\r\n }\r\n\r\n showAddContactButton = () => {\r\n if (sessionStorage.userRole && sessionStorage.userRole === 'SUPER_ADMIN') {\r\n return (\r\n \r\n );\r\n }\r\n else\r\n return null;\r\n }\r\n\r\n uploadBtn = () => {\r\n return (\r\n
    \r\n {\r\n event.target.value = null;\r\n }}\r\n />\r\n \r\n
    )\r\n }\r\n\r\n openAttachments = () => {\r\n this.refs.fileUploader.click();\r\n }\r\n\r\n addAttachment = async (event) => {\r\n let file = event.target.files[0];\r\n let reader = new FileReader();\r\n reader.addEventListener('loadend', () => {\r\n let body = reader.result.split(',')[1];\r\n let name = file.name;\r\n this.createAttachment(body, name);\r\n }, false);\r\n if (file) {\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n createAttachment = async (body, name, ticketId) => {\r\n let apiPath = 'admin/UploadEnterpriseLevelContacts';\r\n let attachmentDTO = {\r\n TicketId: this.state.TicketId,\r\n AttachmentBody: body,\r\n FileName: name,\r\n };\r\n await this.setState({ attachmentSubmitted: true });\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(attachmentDTO)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n await this.setState({\r\n Submission: true,\r\n submitError: false,\r\n });\r\n this.fetchData();\r\n } else {\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n });\r\n }\r\n }\r\n\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n let displayTitle = () => {\r\n if (sessionStorage.serviceProviderName === \"Vyve_Broadband\") {\r\n if (window.location.href.indexOf(\"mydigitalservices\") != -1 || window.location.href.indexOf(\"driveuc\") != -1) {\r\n return \"Enterprise Common Directory\";\r\n } else {\r\n return \"Enterprise Contact Directory\";\r\n }\r\n } else {\r\n return \"Enterprise Contact Directory\";\r\n }\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {displayTitle()} {this.state.ContactsCopy.length}

    \r\n
    \r\n
    \r\n \r\n this.searchContacts(e)} value={this.state.searchTerm} />\r\n \r\n
    \r\n
    \r\n {this.uploadBtn()}\r\n {this.showAddContactButton()}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n \r\n \r\n Remove Contact?\r\n \r\n \r\n

    Are you sure you wish to remove this contact from Enterprise Directory?

    \r\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\nclass SavingMessageControl extends Component {\r\n render() {\r\n let successMessage = \"\";\r\n if (this.props.showSuccess) {\r\n successMessage = (\r\n
    {this.props.SuccessMessage}
    \r\n )\r\n }\r\n\r\n let loadingMessage = \"\";\r\n if (this.props.showLoading) {\r\n loadingMessage = ()\r\n }\r\n\r\n let errorMessage = \"\";\r\n if (this.props.showError) {\r\n errorMessage = (
    {this.props.ErrorMessage}
    )\r\n }\r\n\r\n return (\r\n
    \r\n {successMessage}\r\n {loadingMessage}\r\n {errorMessage}\r\n
    \r\n );\r\n }\r\n};\r\n\r\nSavingMessageControl.propTypes = {\r\n showSuccess: PropTypes.bool.isRequired,\r\n showLoading: PropTypes.bool.isRequired,\r\n showError: PropTypes.bool.isRequired,\r\n}\r\n\r\nexport default EnterpriseContactDirectory;","import React, { Component, } from 'react';\r\nimport { DataLoadingSpinner } from '../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport * as apiCalls from '../requests/api_calls';\r\nimport _ from 'lodash';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport * as config from '../requests/config';\r\nimport { headerToolTip } from '../components/ellipsisHeaderTooltip';\r\nimport { filtercell } from '../components/dropdownFilter';\r\nimport * as helper from '../scripts/helper';\r\nimport moment from 'moment';\r\n\r\nexport default class VmReport extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n Listings: [],\r\n FullListings: [],\r\n\r\n Sort: [{ field: \"VMLastAccessDateTimeDisplay\", dir: \"desc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n };\r\n\r\n class CustomWrapperCell extends GridCell {\r\n\r\n render() {\r\n let fieldName = this.props.field;\r\n return (\r\n \r\n
    {this.props.dataItem[fieldName]}
    \r\n \r\n )\r\n }\r\n }\r\n\r\n this.wrapper = CustomWrapperCell;\r\n }\r\n\r\n componentDidMount = (props) => {\r\n let { hasVmUsageReport } = sessionStorage;\r\n if (hasVmUsageReport === \"true\") {\r\n this.fetchVm();\r\n } else {\r\n // redirect to dashboard if not enabled\r\n this.props.history.push(\"/\");\r\n }\r\n }\r\n\r\n fetchVm = async () => {\r\n await this.setState({ loading: true });\r\n let path = `vm/VmReportList`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data && data.length > 0) {\r\n data = data.filter((itm) => {\r\n if (itm && itm.UserId) {\r\n itm.UserId = itm.UserId.toString();\r\n }\r\n if (itm && itm.LocationId) {\r\n itm.LocationId = itm.LocationId.toString();\r\n }\r\n if (itm.VMLastAccessDateTime || itm.VMLastAccessDateTime !== null) {\r\n return itm;\r\n }\r\n });\r\n data.forEach(itm => { // convert Escalated boolean to string in order to filter\r\n if (itm.VMLastAccessDateTime) {\r\n itm.VMLastAccessDateTimeDisplay = moment.utc(itm.VMLastAccessDateTime).local().format('MM-DD-YYYY hh:mm:ss A') + ` ${sessionStorage.userTimeZone}`;\r\n }\r\n });\r\n\r\n let sort = this.state.Sort;\r\n //VMLastAccessDateTimeDisplay Sort: [{ field: \"VMLastAccessDateTime\", dir: \"desc\" }],\r\n if (sort[0].field === 'VMLastAccessDateTimeDisplay')\r\n sort = [{ field: \"VMLastAccessDateTime\", dir: sort[0].dir }];\r\n let finalListings = orderBy(data, sort);\r\n\r\n this.setState({ Listings: finalListings, FullListings: finalListings, loading: false });\r\n } else {\r\n this.setState({ Listings: [], FullListings: [], loading: false });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n if (this.state.Listings && this.state.Listings.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n } else {\r\n return

    No Available Usage Data

    \r\n }\r\n }\r\n }\r\n\r\n getVmListings = (filter) => {\r\n let sort = this.state.Sort;\r\n //VMLastAccessDateTimeDisplay Sort: [{ field: \"VMLastAccessDateTime\", dir: \"desc\" }],\r\n if (sort && sort.length > 0)\r\n {\r\n if (sort[0].field === 'VMLastAccessDateTimeDisplay')\r\n sort = [{ field: \"VMLastAccessDateTime\", dir: sort[0].dir }];\r\n return filterBy(orderBy(this.state.Listings, sort), filter);\r\n } else {\r\n return filterBy(this.state.Listings, filter);\r\n }\r\n }\r\n\r\n dropDownOptions = (key) => {\r\n let sort = [{ field: key, dir: \"asc\" }];\r\n let listings = orderBy(this.state.Listings.slice(), sort);\r\n let info = [...listings.map(item => item[key]).filter(helper.onlyUnique)].filter(itm => itm);\r\n return info;\r\n }\r\n\r\n handleFilterChange = async (event) => {\r\n await this.setState({\r\n filter: event.filter\r\n });\r\n }\r\n\r\n sortChange = (event) => {\r\n\r\n let sort = event.sort;\r\n //VMLastAccessDateTimeDisplay Sort: [{ field: \"VMLastAccessDateTime\", dir: \"desc\" }],\r\n if (sort && sort.length > 0)\r\n {\r\n if (sort[0].field === 'VMLastAccessDateTimeDisplay')\r\n sort = [{ field: \"VMLastAccessDateTime\", dir: sort[0].dir }];\r\n\r\n this.setState({\r\n Listings: orderBy(this.state.Listings, sort),\r\n Sort: event.sort\r\n });\r\n } else {\r\n this.setState({Sort: []});\r\n }\r\n }\r\n\r\n exportVmBtn = () => {\r\n if (this.state.Listings.length > 0) {\r\n return (\r\n
    \r\n
    \r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n \r\n \r\n
    \r\n \r\n this.exportVmReport()} >Export VM Usage Report\r\n
    \r\n )\r\n } else return null;\r\n }\r\n\r\n exportVmReport = () => {\r\n this.refs.downloadCsv.submit();\r\n this.refs.exportBtn.text = 'Downloading...';\r\n setTimeout(() => {\r\n this.refs.exportBtn.text = 'Export VM Usage Report';\r\n }, 2000);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Voicemail Usage Report

    \r\n
    \r\n
    \r\n
    \r\n {this.exportVmBtn()}\r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n};","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport _ from 'lodash';\r\nimport SaveStatus from '../../../components/save_status';\r\nimport * as helper from '../../../scripts/helper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\n\r\nexport default class ManageTrunkGroupUsers extends Component {\r\n initialState = (props = null) => {\r\n return {\r\n //TrunkGroupId: 0,\r\n //TrunkUserId: 0,\r\n //LocationAccountNumber: '',\r\n GroupId: this.props.GroupId,\r\n EnterpriseTrunkName: this.props.EnterpriseTrunkName,\r\n loading: false,\r\n saving: false,\r\n error: false,\r\n statusMessage: '',\r\n showModal: false,\r\n DIDAssigned: [],\r\n DIDUnassigned: [],\r\n DIDPending: [],\r\n SelectedAssigned: [],\r\n SelectedUnassigned: [],\r\n SelectedPending: [],\r\n EnterpriseTrunkOptions: this.props.EnterpriseTrunkOptions,\r\n TrunkGroups: props ? props.TrunkGroups : []\r\n };\r\n }\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = this.initialState();\r\n }\r\n\r\n componentWillReceiveProps = () => {\r\n let { EnterpriseTrunkName, EnterpriseTrunkOptions } = this.state;\r\n if (EnterpriseTrunkName !== this.props.EnterpriseTrunkName) {\r\n this.setState({\r\n EnterpriseTrunkName: this.props.EnterpriseTrunkName,\r\n });\r\n }\r\n if (EnterpriseTrunkOptions !== this.props.EnterpriseTrunkOptions) {\r\n this.setState({\r\n EnterpriseTrunkOptions: this.props.EnterpriseTrunkOptions,\r\n });\r\n }\r\n }\r\n\r\n fetchAvailableTrunkUsers = async () => {\r\n try {\r\n //await this.setState({ loading: true });\r\n let path = `admin/GetEnterpriseEnterpriseTrunkAvailableUserList?EnterpriseTrunkName=${this.state.EnterpriseTrunkName}`;\r\n let DIDs = await apiCalls.fetchData(path).then(data => data);\r\n\r\n //let assignedDIDs = [];\r\n let unAssignedDIDs = [];\r\n DIDs.map((item) => {\r\n let DIDEntry = {\r\n isSelected: false,\r\n Status: 'Unassigned',\r\n ServiceNumber: item.Phone_Number,\r\n UserId: item.UserId\r\n }\r\n unAssignedDIDs.push(DIDEntry);\r\n });\r\n await this.setState({\r\n //DIDAssigned: assignedDIDs,\r\n DIDUnassigned: unAssignedDIDs,\r\n loading: false,\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n this.setState({\r\n loading: false,\r\n //DIDAssigned: [],\r\n DIDUnassigned: [],\r\n });\r\n }\r\n }\r\n\r\n fetchAssignedUsers = async () => {\r\n try {\r\n //await this.setState({ loading: true });\r\n let path = `admin/GetEnterpriseEnterpriseTrunkUserList?EnterpriseTrunkName=${this.state.EnterpriseTrunkName}`;\r\n let DIDs = await apiCalls.fetchData(path).then(data => data);\r\n\r\n let assignedDIDs = [];\r\n //let unAssignedDIDs = [];\r\n DIDs.map((item) => {\r\n let DIDEntry = {\r\n isSelected: false,\r\n Status: 'Assigned',\r\n ServiceNumber: item.Phone_Number,\r\n UserId: item.UserId\r\n }\r\n assignedDIDs.push(DIDEntry);\r\n });\r\n await this.setState({\r\n DIDAssigned: assignedDIDs,\r\n //DIDUnassigned: unAssignedDIDs,\r\n loading: false,\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n this.setState({\r\n loading: false,\r\n DIDAssigned: [],\r\n //DIDUnassigned: [],\r\n });\r\n }\r\n }\r\n\r\n OpenModal = async () => {\r\n this.setState({ showModal: true, loading: true });\r\n this.fetchAvailableTrunkUsers();\r\n this.fetchAssignedUsers();\r\n }\r\n\r\n CloseModal = () => {\r\n let state = this.initialState();\r\n this.setState({\r\n ...state,\r\n }\r\n , async () => {\r\n try {\r\n this.fetchAvailableTrunkUsers();\r\n this.fetchAssignedUsers();\r\n } catch (error) {\r\n // handle error\r\n console.error(error)\r\n }\r\n });\r\n }\r\n\r\n handleSelection = async (queue, UserId) => {\r\n let newSelectionList = [];\r\n let dynamicDID = 'DID' + queue[0].toUpperCase() + queue.substring(1);\r\n let dynamicSelected = 'Selected' + queue[0].toUpperCase() + queue.substring(1);\r\n let DIDQueue = this.state[dynamicDID].slice();\r\n\r\n let currentItem = null;\r\n currentItem = this.state[dynamicDID].filter(resp => resp.UserId === UserId); // THIS CRUCIAL PARAM MAY CHANGE *******\r\n if (currentItem)\r\n currentItem = currentItem[0];\r\n\r\n let currentItemIdx = _.indexOf(DIDQueue, currentItem); //get before toggling selected status\r\n currentItem.isSelected = !currentItem.isSelected;\r\n newSelectionList = this.state[dynamicSelected].filter(resp => resp.UserId !== currentItem.UserId);\r\n if (currentItem.isSelected)\r\n newSelectionList.push(currentItem);\r\n\r\n DIDQueue[currentItemIdx] = currentItem;\r\n await this.setState({ [dynamicSelected]: newSelectionList, [dynamicDID]: DIDQueue });\r\n }\r\n\r\n handleTransition = async (actionName) => {\r\n let { DIDAssigned, DIDPending, DIDUnassigned, SelectedAssigned, SelectedPending, SelectedUnassigned } = this.state;\r\n let newPendingList = DIDPending.slice();\r\n let newAssignedList = DIDAssigned.slice();\r\n let newUnassignedList = DIDUnassigned.slice();\r\n let selectedItems = [];\r\n switch (actionName) {\r\n case 'add':\r\n SelectedUnassigned.map((record, idx) => {\r\n let newRecord = {\r\n UserId: record.UserId,\r\n ServiceNumber: record.ServiceNumber,\r\n Status: 'Add',\r\n isSelected: false\r\n };\r\n newPendingList.push(newRecord);\r\n newUnassignedList = newUnassignedList.filter(resp => resp.UserId !== record.UserId);\r\n });\r\n SelectedUnassigned = [];\r\n break;\r\n case 'undoAdd':\r\n SelectedPending.map((record, idx) => {\r\n if (record.Status === 'Add') {\r\n let newRecord = {\r\n UserId: record.UserId,\r\n ServiceNumber: record.ServiceNumber,\r\n Status: 'Unassigned',\r\n isSelected: false\r\n }\r\n newUnassignedList.push(newRecord);\r\n newPendingList = newPendingList.filter(resp => resp.UserId !== record.UserId);\r\n } else selectedItems.push(record);\r\n\r\n });\r\n SelectedPending = selectedItems;\r\n break;\r\n case 'remove':\r\n SelectedAssigned.map((record, idx) => {\r\n let newRecord = {\r\n UserId: record.UserId,\r\n ServiceNumber: record.ServiceNumber,\r\n Status: 'Remove',\r\n isSelected: false\r\n }\r\n newPendingList.push(newRecord);\r\n newAssignedList = newAssignedList.filter(resp => resp.UserId !== record.UserId);\r\n });\r\n SelectedAssigned = [];\r\n break;\r\n case 'undoRemove':\r\n\r\n SelectedPending.map((record, idx) => {\r\n if (record.Status === 'Remove') {\r\n let newRecord = {\r\n UserId: record.UserId,\r\n ServiceNumber: record.ServiceNumber,\r\n Status: 'Assigned',\r\n isSelected: false\r\n }\r\n newAssignedList.push(newRecord);\r\n newPendingList = newPendingList.filter(resp => resp.UserId !== record.UserId);\r\n } else selectedItems.push(record);\r\n });\r\n SelectedPending = selectedItems;\r\n break;\r\n }\r\n await this.setState({\r\n SelectedAssigned: SelectedAssigned,\r\n SelectedPending: SelectedPending,\r\n SelectedUnassigned: SelectedAssigned,\r\n DIDAssigned: newAssignedList,\r\n DIDPending: newPendingList,\r\n DIDUnassigned: newUnassignedList\r\n });\r\n }\r\n\r\n formatDids = (queue, arr = []) => {\r\n if (arr && arr.length > 0) {\r\n return arr.map((itm, index) => {\r\n let itemClass = itm.isSelected === true ? 'selectedItem' : '';\r\n let label = itm.ServiceNumber;\r\n if (queue === 'pending')\r\n label += ' (' + itm.Status + ')';\r\n return { this.handleSelection(queue, itm.UserId); }}\r\n >{label}\r\n })\r\n }\r\n }\r\n\r\n didField = (queue, arr = []) => {\r\n return (\r\n
    \r\n {this.formatDids(queue, arr)}\r\n
    \r\n )\r\n }\r\n\r\n SubmitChanges = async () => {\r\n try {\r\n if (this.state.DIDPending.length === 0) return; //end process if nothing selected\r\n let apiPath = 'admin/AddEnterpriseEnterpriseTrunkUserList';\r\n let reqBody = {};\r\n let statusMessage = '';\r\n let bError = false;\r\n let bPartialSuccess = false;\r\n let pending = this.state.DIDPending.slice();\r\n let arrAssigned = pending.filter(resp => resp.Status === 'Add').map((record, idx) => {\r\n return record.UserId;\r\n });\r\n let arrUnassigned = pending.filter(resp => resp.Status === 'Remove').map((record, idx) => {\r\n return record.UserId;\r\n });\r\n if (arrAssigned && arrAssigned.length > 0) {\r\n reqBody = {\r\n EnterpriseTrunkName: this.state.EnterpriseTrunkName,\r\n UserIdList: arrAssigned\r\n }\r\n\r\n await this.setState({ saving: true });\r\n let responseAssigns = await apiCalls.post(apiPath, 'POST', JSON.stringify(reqBody)).then((data) => data).catch(err => console.error(err));\r\n // if (helper.IsJsonString(responseAssigns.message)) {\r\n // let messageObj = JSON.parse(responseAssigns.message);\r\n // if (messageObj.MPOErrorList && messageObj.MPOErrorList.length > 0) {\r\n // statusMessage += this.displayErrors(messageObj.MPOErrorList);\r\n // bError = true;\r\n // }\r\n // } else if (responseAssigns.ok) {\r\n // statusMessage = 'All DIDs marked for assignment have updated successfully';\r\n // bPartialSuccess = true;\r\n // }\r\n if (responseAssigns.ok) {\r\n statusMessage = 'All DIDs marked for assignment have updated successfully';\r\n bPartialSuccess = true;\r\n } else {\r\n statusMessage = 'An error occurred during the process';\r\n bError = true;\r\n }\r\n }\r\n if (arrUnassigned && arrUnassigned.length > 0) {\r\n apiPath = 'admin/DeleteEnterpriseEnterpriseTrunkUserList';\r\n if (!this.state.saving)\r\n await this.setState({ saving: true });\r\n reqBody = {\r\n EnterpriseTrunkName: this.state.EnterpriseTrunkName,\r\n UserIdList: arrUnassigned\r\n }\r\n let responseUnassigns = await apiCalls.post(apiPath, 'DELETE', JSON.stringify(reqBody)).then((assignData) => assignData).catch(err => console.error(err));\r\n\r\n if (responseUnassigns.ok) {\r\n statusMessage = 'All DIDs marked for assignment have updated successfully';\r\n bPartialSuccess = true;\r\n } else {\r\n statusMessage = 'An error occurred during the process';\r\n bError = true;\r\n }\r\n }\r\n if (!bError)\r\n statusMessage = 'All DIDs marked for assignment and unassignment have updated successfully'\r\n else if (bError && !bPartialSuccess)\r\n statusMessage = 'All DIDs marked for assignment and/or unassignment have failed\\n' + statusMessage;\r\n\r\n await this.setState({ saving: false, statusMessage: statusMessage, error: bError });\r\n }\r\n catch (ex) {\r\n this.setState({\r\n saving: false,\r\n error: true,\r\n statusMessage: 'An error occurred: ' + ex.toString(),\r\n });\r\n }\r\n }\r\n\r\n displayErrors = (ErrorList) => {\r\n let errorMsg = '';\r\n ErrorList.map((err, idx) => {\r\n if (err.MPOResultText && err.MPOResultText.length > 0) {\r\n err.MPOResultText.map((rt, idx2) => {\r\n errorMsg = errorMsg === '' ? rt.ErrorMessage : '\\n' + rt.ErrorMessage;\r\n });\r\n } else\r\n errorMsg = errorMsg === '' ? err.APIError : '\\n' + err.APIError;\r\n });\r\n return errorMsg;\r\n }\r\n\r\n ClearSaveStatusModal = async () => {\r\n let selectedTrunk = this.state.TrunkUserId;\r\n let TrunkGroup = this.state.TrunkGroups.filter(resp => resp.UserId === selectedTrunk);\r\n TrunkGroup = TrunkGroup[0];\r\n\r\n //let selectedText = e.target.selectedText;\r\n //let TrunkGroupId =\r\n await this.setState({ error: false, statusMessage: '', loading: true, DIDAssigned: [], DIDPending: [], DIDUnassigned: [], SelectedAssigned: [], SelectedPending: [], SelectedUnassigned: [] });\r\n this.fetchAssignedUsers();\r\n this.fetchAvailableTrunkUsers();\r\n }\r\n\r\n savingOrConfirming = () => this.state.saving || this.state.statusMessage;\r\n\r\n handleSelectChange = async (e) => {\r\n let { value } = e.target;\r\n if (value !== this.state.EnterpriseTrunkName) {\r\n await this.setState({\r\n EnterpriseTrunkName: value,\r\n loading: true,\r\n });\r\n this.fetchAvailableTrunkUsers();\r\n this.fetchAssignedUsers();\r\n }\r\n }\r\n\r\n modalBody = () => {\r\n if (this.state.loading === true) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n
    \r\n Trunk ID:\r\n \r\n
    \r\n
    \r\n
    \r\n Available DID(s)\r\n
    \r\n {this.didField('unassigned', this.state.DIDUnassigned)}\r\n
    \r\n
    \r\n \r\n
    \r\n Pending DID(s)\r\n
    \r\n {this.didField('pending', this.state.DIDPending)}\r\n
    \r\n
    \r\n \r\n
    \r\n Assigned DID(s)\r\n
    \r\n {this.didField('assigned', this.state.DIDAssigned)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n render = () => {\r\n return (\r\n \r\n \r\n this.OpenModal()}>Manage Associated DIDs\r\n \r\n \r\n \r\n Enterprise Trunk Management\r\n \r\n \r\n {this.modalBody()}\r\n \r\n \r\n
    \r\n When assigning DIDs to a trunk or unassigning from a trunk,  DIDs are held in the Pending DID(s) bucket until user submits the order. Once an order is submitted, changes are committed immediately.\r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport * as config from '../../requests/config';\r\nimport * as settings from '../../scripts/settings';\r\nimport * as _ from 'lodash';\r\nimport * as utility from '../../utility/utility';\r\nimport { Modal } from 'react-bootstrap';\r\nimport ManageTrunkGroupUsers from './components/manage_trunk_users';\r\nimport * as helper from '../../scripts/helper';\r\nimport { ComboBox } from '@progress/kendo-react-dropdowns';\r\n\r\nexport default class EnterpriseTrunking extends Component {\r\n constructor() {\r\n super();\r\n\r\n // https://localhost:44316/enterprise-trunking\r\n\r\n this.state = {\r\n loading: false,\r\n EnterpriseTrunksAvailable: [],\r\n CurrentTrunk: \"\",\r\n RoutingType: \"\",\r\n TrunkDetails: null,\r\n OriginalDetails: null,\r\n Listings: [],\r\n OriginalListings: [],\r\n showConfirmationModal: false,\r\n Submission: false,\r\n submitError: false,\r\n errorMsg: \"\",\r\n EditName: false,\r\n TrunkOptions: [],\r\n };\r\n\r\n const transitionToManageTrunkGroup = this.transitionToManageTrunkGroup.bind(this);\r\n const updateInputValue = this.updateInputValue.bind(this);\r\n const updateTrunkStatus = this.updateTrunkStatus.bind(this);\r\n const getOriginalListings = this.getOriginalListings.bind(this);\r\n\r\n class ManageTrunkStatusCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let { IsAssigned } = this.props.dataItem; // TODO: add params and create transistion function\r\n let RoutingType = getOriginalListings()[1];\r\n return (\r\n \r\n { updateTrunkStatus(this.props.dataItem, 'IsAssigned') }}\r\n className=\"a btn\"\r\n disabled={RoutingType === \"ordered\" ? true : false}\r\n >{IsAssigned ? 'Assigned' : 'Available'}\r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n class ManageTrunkCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let { GroupId, TrunkGroupName } = this.props.dataItem;\r\n let original = getOriginalListings()[0];\r\n original = original.filter(itm => itm.TrunkGroupName === this.props.dataItem.TrunkGroupName)[0]\r\n\r\n if (original.IsAssigned) {\r\n return (\r\n \r\n { transitionToManageTrunkGroup(GroupId, TrunkGroupName) }}\r\n className=\"icon btn\">\r\n \r\n \r\n \r\n \r\n \r\n )\r\n } else {\r\n return \r\n }\r\n }\r\n }\r\n\r\n class DataCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let { IsAssigned, Priority, Weight } = this.props.dataItem;\r\n if (IsAssigned) {\r\n return (\r\n \r\n updateInputValue(this.props.dataItem, this.props.field, e)}\r\n style={{\r\n width: '20%',\r\n display: 'inline-block',\r\n textAlign: 'center',\r\n }}\r\n type=\"number\"\r\n min=\"1\"\r\n max={this.props.field === \"Priority\" ? \"10\" : \"65536\"}\r\n />\r\n \r\n )\r\n } else {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n class SelectServiceLink extends GridCell {\r\n render() {\r\n let item = this.props.dataItem;\r\n let path = '/iframe_page/MSP_SUBSCRIBER/' + item.GroupId + '/' + item.TrunkGroupName;\r\n return (\r\n \r\n \r\n {item.TrunkGroupName}\r\n \r\n \r\n );\r\n }\r\n }\r\n this.selectServiceLink = SelectServiceLink;\r\n this.ManageTrunkCell = ManageTrunkCell;\r\n this.ManageTrunkStatusCell = ManageTrunkStatusCell;\r\n this.DataCell = DataCell;\r\n }\r\n\r\n componentDidMount() {\r\n if (sessionStorage.hasEntTrunking === \"true\") {\r\n this.fetchEnterpriseTrunks();\r\n } else {\r\n this.props.history.push(\"/\");\r\n }\r\n }\r\n\r\n getOriginalListings = () => {\r\n let list = [this.state.OriginalListings, this.state.RoutingType];\r\n return list;\r\n }\r\n\r\n updateTrunkStatus = async (productItem, field, e) => {\r\n if (this.state.RoutingType === \"ordered\") {\r\n return;\r\n } else {\r\n let value = !productItem[field]\r\n productItem[field] = value;\r\n let existingArray = this.state.Listings;\r\n let index = _.findIndex(existingArray, s => s.TrunkGroupName === productItem.TrunkGroupName);\r\n let newOptions = this.state.Listings.slice();\r\n newOptions[index] = productItem;\r\n this.state.TrunkDetails.TrunkGroupAssignments = newOptions;\r\n await this.setState({ Listings: newOptions, TrunkDetails: this.state.TrunkDetails });\r\n // console.log('ds', this.state.Listings);\r\n // console.log('check deets', this.state.TrunkDetails);\r\n }\r\n }\r\n\r\n updateInputValue = async (productItem, field, e) => {\r\n let value = e.target.value === \"\" ? 0 : parseInt(e.target.value);\r\n productItem[field] = value;\r\n let TrunkDetails = { ...this.state.TrunkDetails };\r\n let index = _.findIndex(TrunkDetails.TrunkGroupAssignments, s => s.TrunkGroupName === productItem.TrunkGroupName);\r\n TrunkDetails.TrunkGroupAssignments[index] = productItem;\r\n await this.setState({ TrunkDetails });\r\n //console.log('current deets', this.state.TrunkDetails);\r\n }\r\n\r\n fetchEnterpriseTrunks = async () => {\r\n let { TrunkDetails } = this.state;\r\n await this.setState({ loading: true });\r\n let path = \"admin/GetEnterpriseTrunks\";\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n let copy = JSON.parse(JSON.stringify(data));\r\n let options = copy.map((itm, idx) => {\r\n return \r\n });\r\n //let options = copy.map((itm, idx) => itm.EnterpriseTrunk);\r\n let trunkOption = !TrunkDetails ? data[0].EnterpriseTrunk : TrunkDetails.EnterpriseTrunkName;\r\n let trunkRouting = data.filter(itm => itm.EnterpriseTrunk === trunkOption)[0].RoutingType;\r\n //console.log('finder', trunkOption, trunkRouting);\r\n this.setState({\r\n EnterpriseTrunksAvailable: data,\r\n CurrentTrunk: trunkOption,\r\n RoutingType: trunkRouting,\r\n TrunkOptions: options,\r\n loading: false,\r\n });\r\n this.fetchTrunkDetails(trunkOption);\r\n this.fetchAvailableTrunkGroups(trunkOption);\r\n } else {\r\n this.setState({\r\n EnterpriseTrunksAvailable: [],\r\n CurrentTrunk: \"\",\r\n RoutingType: \"\",\r\n TrunkOptions: [],\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchTrunkDetails = async (enterpriseTrunk) => {\r\n await this.setState({ loading: true });\r\n if (this.state.CurrentTrunk) {\r\n let path = `admin/GetEnterpriseTrunkDetails?EnterpriseTrunkName=${enterpriseTrunk}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n let copy = JSON.parse(JSON.stringify(data));\r\n this.setState({\r\n TrunkDetails: data,\r\n OriginalDetails: copy,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n TrunkDetails: [],\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n }\r\n\r\n fetchAvailableTrunkGroups = async (EnterpriseTrunkName) => {\r\n await this.setState({ loading: true });\r\n let path = `admin/GetAvailableTrunkGroups?EnterpriseTrunkName=${EnterpriseTrunkName}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n //console.log('trunks', data);\r\n let copy = JSON.parse(JSON.stringify(data));\r\n this.setState({\r\n Listings: data,\r\n OriginalListings: copy,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n Listings: [],\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n transitionToManageTrunkGroup = (groupId, trunkGroupName) => {\r\n this.props.history.push(`/enterprise-trunk-group/${groupId}/${trunkGroupName}`)\r\n }\r\n\r\n gridContent = () => {\r\n if (this.state.Listings && this.state.Listings.length > 0) {\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 } else {\r\n return

    No Available Usage Data

    \r\n }\r\n }\r\n\r\n dataDropDown = (options, val) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n handleSelectChange = async (e, key) => {\r\n let { value } = e.target;\r\n let routingType = this.state.EnterpriseTrunksAvailable.filter(itm => itm.EnterpriseTrunk === value)[0].RoutingType;\r\n //console.log('---HERE---', x);\r\n if (value !== this.state.CurrentTrunk) {\r\n await this.setState({\r\n CurrentTrunk: value,\r\n RoutingType: routingType,\r\n EditName: false,\r\n });\r\n this.fetchTrunkDetails(this.state.CurrentTrunk);\r\n this.fetchAvailableTrunkGroups(this.state.CurrentTrunk);\r\n }\r\n //console.log('current trunk', this.state.CurrentTrunk);\r\n }\r\n\r\n inputDataField = (val, key, type = 'text') => {\r\n return (\r\n this.handleInputChange(e, key)}\r\n />\r\n )\r\n }\r\n\r\n editEnterpriseTrunkField = (val, key) => {\r\n if (!this.state.EditName) {\r\n return (\r\n \r\n  \r\n this.setState({ EditName: !this.state.EditName })}\r\n >[Edit]\r\n \r\n )\r\n } else {\r\n return (\r\n \r\n  \r\n {this.inputDataField(val, key)}\r\n  \r\n {\r\n let TrunkDetails = { ...this.state.TrunkDetails };\r\n TrunkDetails[key] = this.state.CurrentTrunk;\r\n await this.setState({ TrunkDetails, EditName: !this.state.EditName });\r\n //this.setState({ EditName: !this.state.EditName })\r\n }}\r\n >[X]\r\n \r\n )\r\n }\r\n }\r\n\r\n trunkDataRow = (label, field, editField = null) => {\r\n return (\r\n
    \r\n {label}: \r\n {field}\r\n {this.state.TrunkDetails.AllowTrunkNameChange === true ? editField : null}\r\n
    \r\n )\r\n }\r\n\r\n routeExhaustionAction = (val, forwardAddress = \"\") => {\r\n return (\r\n
    \r\n {/* this.handleInputChange(e, 'RerouteExhaustAction')}\r\n > */}\r\n\r\n Route Exhaustion Action\r\n \r\n this.handleInputChange(e, 'RerouteExhaustAction')} />\r\n \r\n
    \r\n this.handleInputChange(e, 'RerouteExhaustAction')} />\r\n \r\n
    \r\n this.handleInputChange(e, 'RouteExhaustionForwardAddress')}\r\n maxLength=\"30\"\r\n />\r\n\r\n
    \r\n {/* */}\r\n \r\n\r\n )\r\n }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let TrunkDetails = { ...this.state.TrunkDetails };\r\n TrunkDetails[key] = value;\r\n await this.setState({ TrunkDetails });\r\n }\r\n\r\n saveEnterpriseTrunk = async () => {\r\n let { TrunkDetails } = this.state;\r\n let apiPath = `admin/UpdateEnterpriseTrunkDetails`;\r\n let dto = {\r\n //OldEnterpriseTrunkName: TrunkDetails.OldEnterpriseTrunkName ? TrunkDetails.OldEnterpriseTrunkName : TrunkDetails.EnterpriseTrunkName,\r\n OldEnterpriseTrunkName: this.state.CurrentTrunk,\r\n EnterpriseTrunkName: this.state.EditName ? TrunkDetails.EnterpriseTrunkName : this.state.CurrentTrunk,\r\n MaxNumRerouteAttempts: parseInt(TrunkDetails.MaxNumRerouteAttempts),\r\n MaxNumRerouteWithPriority: parseInt(TrunkDetails.MaxNumRerouteWithPriority),\r\n RerouteExhaustAction: parseInt(TrunkDetails.RerouteExhaustAction),\r\n RouteExhaustionForwardAddress: parseInt(TrunkDetails.RerouteExhaustAction) == 1 && TrunkDetails.RouteExhaustionForwardAddress != '' && TrunkDetails.RouteExhaustionForwardAddress != null\r\n ? TrunkDetails.RouteExhaustionForwardAddress.toString() : null,\r\n EnableCapacityManagement: TrunkDetails.EnableCapacityManagement,\r\n MaxActiveCalls: TrunkDetails.MaxActiveCalls,\r\n CapacityExceededInitialAlarm: TrunkDetails.CapacityExceededInitialAlarm,\r\n CapacityExceededOffsetValue: TrunkDetails.CapacityExceededOffsetValue,\r\n TrunkGroupAssignments: TrunkDetails.TrunkGroupAssignments,\r\n };\r\n //console.log('DTO', dto);\r\n //console.log('JSON DTO', JSON.stringify(dto));\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(dto)).then(res => res).catch(err => console.error(err));\r\n if (response) {\r\n //console.log('res', response);\r\n if (response.ok) {\r\n await this.setState({\r\n Submission: true,\r\n submitError: false,\r\n EditName: false,\r\n });\r\n } else {\r\n let assignedTrunks = helper.filterNestedObject('IsAssigned', true, TrunkDetails.TrunkGroupAssignments) || [];\r\n //console.log('hereeee', assignedTrunks);\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n EditName: false,\r\n errorMsg: (helper.filterNestedObject('Priority', 0, assignedTrunks) && helper.filterNestedObject('Priority', 0, assignedTrunks).length > 0) || (helper.filterNestedObject('Weight', 0, assignedTrunks) && helper.filterNestedObject('Weight', 0, assignedTrunks).length > 0) ? \"Please provide a priority & weight (minimum of 1) for the desired trunk group assignment.\" : response.message,\r\n });\r\n }\r\n this.fetchEnterpriseTrunks();\r\n await this.setState({ showConfirmationModal: false });\r\n //console.log('update ent trunk res', response);\r\n //this.componentDidMount();\r\n }\r\n }\r\n\r\n undoEnterpriseTrunk = () => {\r\n this.setState({ EditName: false });\r\n this.fetchTrunkDetails(this.state.CurrentTrunk);\r\n this.fetchAvailableTrunkGroups(this.state.CurrentTrunk);\r\n }\r\n\r\n cardContent = () => {\r\n let { CurrentTrunk, TrunkDetails, loading, TrunkOptions, RoutingType } = this.state;\r\n\r\n if (!loading && CurrentTrunk && TrunkDetails) {\r\n let {\r\n CapacityExceededInitialAlarm,\r\n CapacityExceededOffsetValue,\r\n Enable,\r\n EnterpriseTrunkName,\r\n MaxActiveCalls,\r\n MaxNumRerouteAttempts,\r\n MaxNumRerouteWithPriority,\r\n OldEnterpriseTrunkName,\r\n RerouteExhaustAction,\r\n RouteExhaustionForwardAddress,\r\n TrunkGroupAssignments\r\n } = TrunkDetails;\r\n //console.log(\"routing type\", RoutingType);\r\n return (\r\n
    \r\n
    \r\n {this.trunkDataRow(\"Enterprise Trunk Name\", this.dataDropDown(TrunkOptions, CurrentTrunk), this.editEnterpriseTrunkField(EnterpriseTrunkName, 'EnterpriseTrunkName'))}\r\n {this.trunkDataRow(\"Routing Type\", this.inputDataField(RoutingType, 'RoutingType'))}\r\n {this.trunkDataRow(\"Max # of Reroute Attempts (max 10)\", this.inputDataField(MaxNumRerouteAttempts, 'MaxNumRerouteAttempts', 'number'))}\r\n {this.state.RoutingType === \"ordered\" ? null : this.trunkDataRow(\"Max # of Reroute Attempts within a Priority (max 10)\", this.inputDataField(MaxNumRerouteWithPriority, 'MaxNumRerouteWithPriority', 'number'))}\r\n {this.routeExhaustionAction(RerouteExhaustAction, RouteExhaustionForwardAddress)}\r\n
    \r\n
    \r\n * Trunk Group Weight must be an Integer between 1 and 65536
    \r\n * Trunk Group Priority must be an Integer between 1 and 10\r\n {this.gridContent()}\r\n
    \r\n
    \r\n )\r\n } else {\r\n return \r\n }\r\n }\r\n\r\n submissionMsg = () => {\r\n if (this.state.Submission) {\r\n if (this.state.submitError) {\r\n return {this.state.errorMsg && this.state.errorMsg != \"\" ? this.state.errorMsg : \"Submission Failure: Changes were not processed!\"}\r\n } else {\r\n return Submission Sucess: Changes were processed!\r\n }\r\n }\r\n };\r\n\r\n enterpriseTrunkUpdateBtns = () => {\r\n let { TrunkDetails, OriginalDetails, Listings, OriginalListings } = this.state;\r\n if (!TrunkDetails) {\r\n return;\r\n } else {\r\n if (\r\n parseInt(TrunkDetails.MaxNumRerouteAttempts) === OriginalDetails.MaxNumRerouteAttempts &&\r\n parseInt(TrunkDetails.MaxNumRerouteWithPriority) === OriginalDetails.MaxNumRerouteWithPriority &&\r\n parseInt(TrunkDetails.RerouteExhaustAction) === OriginalDetails.RerouteExhaustAction &&\r\n TrunkDetails.RouteExhaustionForwardAddress === OriginalDetails.RouteExhaustionForwardAddress &&\r\n TrunkDetails.EnterpriseTrunkName === OriginalDetails.EnterpriseTrunkName &&\r\n //!this.state.EditName &&\r\n utility.arraysEqual(Listings, OriginalListings) === true\r\n ) {\r\n return;\r\n } else {\r\n return (\r\n \r\n this.setState({ showConfirmationModal: true })} //OPEN CONFIRMATION BOX\r\n >Save\r\n Cancel\r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n rowItems = () => {\r\n return (\r\n \r\n {/* {this.enterpriseTrunkUpdateBtns()} */}\r\n \r\n\r\n \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.enterpriseTrunkUpdateBtns()}\r\n

    Enterprise Trunking {this.submissionMsg()}

    \r\n
    \r\n
    \r\n
    \r\n {this.rowItems()}\r\n
    \r\n
    \r\n \r\n \r\n Are you sure you want to save changes?\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n};","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport * as config from '../../requests/config';\r\nimport * as settings from '../../scripts/settings';\r\nimport { Modal } from 'react-bootstrap';\r\n\r\nexport default class ManageEntTrunkGroup extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n TrunkGroupDetails: null,\r\n OriginalDetails: null,\r\n showConfirmationModal: false,\r\n DoaminList: [],\r\n DepartmentList: [],\r\n errorMsg: \"\",\r\n Submission: false,\r\n submitError: false,\r\n }\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchTrunkGroup();\r\n };\r\n\r\n fetchDepartments = async (acctNum) => {\r\n await this.setState({ loading: true });\r\n let path = `admin/GetGroupDepartmentList?locationAccountNumber=${acctNum}&IncludeEnterpriseDepartments=true`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n let copy = JSON.parse(JSON.stringify(data));\r\n copy = copy.map(itm => itm.Name);\r\n this.setState({\r\n DepartmentList: copy,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n DepartmentList: data,\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchDomains = async (acctNum) => {\r\n await this.setState({ loading: true });\r\n let path = `admin/GetGroupDomainAssignedList?locationAccountNumber=${acctNum}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n let copy = JSON.parse(JSON.stringify(data));\r\n copy = copy.map(itm => itm.Domain);\r\n this.setState({\r\n DoaminList: copy,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n DoaminList: data,\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchTrunkGroup = async () => {\r\n await this.setState({ loading: true });\r\n let { groupId, trunkGroupName } = this.props.match.params;\r\n let path = `admin/GetEnterpriseTrunkGroupInstance?groupId=${groupId}&trunkGroupName=${trunkGroupName}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n let copy = JSON.parse(JSON.stringify(data));\r\n this.setState({\r\n TrunkGroupDetails: data,\r\n OriginalDetails: copy,\r\n loading: false,\r\n });\r\n this.fetchDomains(data.GroupId);\r\n this.fetchDepartments(data.GroupId);\r\n } else {\r\n this.setState({\r\n TrunkGroupDetails: {},\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n radioDataField = (val, key, type = \"radio\", readOnly = false) => {\r\n return (\r\n
    \r\n this.handleInputChange(e, key, type)}\r\n disabled={readOnly === true ? true : false}\r\n />\r\n
    \r\n this.handleInputChange(e, key, type)}\r\n disabled={readOnly === true ? true : false}\r\n />\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n dataDropDown = (val, key, options = [], readOnly = false) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n additionalDropField = (activateField, val, key, options = []) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n additionalInputFeld = (activateField, val, key) => {\r\n return (\r\n \r\n this.handleInputChange(e, key)}\r\n disabled={activateField === true ? false : true}\r\n maxLength={key === \"TrunkGroupPrefix\" ? \"15\" : \"none\"}\r\n />\r\n \r\n )\r\n }\r\n\r\n inputDataField = (val, key, type = 'text', readOnly = false) => {\r\n if (type === \"text\" || type === \"number\") {\r\n return (\r\n this.handleInputChange(e, key, type)}\r\n disabled={readOnly === true ? true : false}\r\n maxLength={key === \"NewAuthenticationPassword\" || key === \"AuthenticationUserName\" || key === \"OTGDTGIdentity\" ? \"30\" : \"none\"}\r\n />\r\n )\r\n } else {\r\n return (\r\n this.handleInputChange(e, key, type)}\r\n disabled={readOnly === true ? true : false}\r\n />\r\n )\r\n }\r\n }\r\n\r\n trunkGroupDataRow = (label, field, additionalFeld = null) => {\r\n return (\r\n \r\n {label}: \r\n {field}\r\n {!additionalFeld ? null :

    {additionalFeld}
    }\r\n \r\n )\r\n }\r\n\r\n\r\n handleInputChange = async (e, key, type = 'text') => {\r\n let value = type === 'checkbox' ? e.target.checked : e.target.value;\r\n if ((key === 'PeeringDomain' || key === 'Department') && value === 'None') {\r\n value = null;\r\n }\r\n let TrunkGroupDetails = { ...this.state.TrunkGroupDetails };\r\n TrunkGroupDetails[key] = value;\r\n await this.setState({ TrunkGroupDetails });\r\n }\r\n\r\n cardContent = () => {\r\n let { loading, TrunkGroupDetails, DoaminList, DepartmentList } = this.state;\r\n if (!loading && TrunkGroupDetails != null) {\r\n let { AccessDevice,\r\n AllowCallsDirectlyToTrunkGroupWithDTGIdentity,\r\n AllowCallsDirectlyToTrunkGroupWithTrunkIdentity,\r\n AllowUnscreenedCalls,\r\n AllowUnscreenedEmergencyCalls,\r\n AuthenticationUserName,\r\n CallingLineIdentitySourceForScreenedTrunkGroupCallsPolicy,\r\n Department,\r\n EnableAuthentication,\r\n EnableNetworkAddressIdentity,\r\n EnableTrunkGroupPrefix,\r\n GroupId,\r\n IncludeDTGIdentityForCallsToTrunkGroup,\r\n IncludeOTGIdentityForCallsFromTrunkGroup,\r\n IncludeTrunkIdentityForCallsFromTrunkGroup,\r\n IncludeTrunkIdentityForCallsToTrunkGroup,\r\n MaximumActiveCallsAllowed,\r\n MaximumActiveIncomingCallsAllowed,\r\n MaximumActiveOutgoingCallsAllowed,\r\n NewAuthenticationPassword,\r\n NewSipAuthenticationPassword,\r\n NewTrunkGroupName,\r\n OTGDTGIdentity,\r\n PeeringDomain,\r\n PilotUserCallOptimizationPolicy,\r\n PilotUserCallingLineIdentityForExternalCallsUsagePolicy,\r\n PilotUserCallingLineIdentityUsageForEmergencyCallsPolicy,\r\n PilotUserChargeNumberUsagePolicy,\r\n PilotUserId,\r\n RouteToPeeringDomain,\r\n SupportConnectedIdentityPolicy,\r\n TrunkGroupIdentity,\r\n TrunkGroupName,\r\n TrunkGroupPrefix,\r\n TrunkGroupUserLookupPolicy,\r\n UseSystemCLIDSourceForScreenedCallsPolicy,\r\n UseSystemSupportConnectedIdentityPolicy,\r\n UseSystemUserLookupPolicy,\r\n } = TrunkGroupDetails;\r\n return (\r\n
    \r\n {this.trunkGroupDataRow('* Name', this.inputDataField(TrunkGroupName, 'TrunkGroupName', 'text', true))}\r\n {this.trunkGroupDataRow('Department', this.dataDropDown(Department, 'Department', DepartmentList))}\r\n {this.trunkGroupDataRow('* Maximum Active Calls Allowed', this.inputDataField(MaximumActiveCallsAllowed, 'MaximumActiveCallsAllowed', 'number', true))}\r\n {this.trunkGroupDataRow('Maximum Incoming Calls Allowed', this.inputDataField(MaximumActiveIncomingCallsAllowed, 'MaximumActiveIncomingCallsAllowed', 'number', true))}\r\n {this.trunkGroupDataRow('Maximum Outgoing Calls Allowed', this.inputDataField(MaximumActiveOutgoingCallsAllowed, 'MaximumActiveOutgoingCallsAllowed', 'number', true))}\r\n\r\n {this.trunkGroupDataRow('Enable Authentication', this.inputDataField(EnableAuthentication, 'EnableAuthentication', 'checkbox'))}\r\n {this.trunkGroupDataRow('Authentication User Name', this.inputDataField(AuthenticationUserName, 'AuthenticationUserName'))}\r\n {this.trunkGroupDataRow('Type New Authentication Password', this.inputDataField(NewSipAuthenticationPassword, 'NewAuthenticationPassword'))}\r\n {/* {this.trunkGroupDataRow('Re-type New Authentication Password', this.inputDataField(''))} */}\r\n {this.trunkGroupDataRow('Trunk Group Identity', this.inputDataField(TrunkGroupIdentity, 'TrunkGroupIdentity', 'text', true))}\r\n {this.trunkGroupDataRow('OTG/DTG Identity', this.inputDataField(OTGDTGIdentity, 'OTGDTGIdentity'))}\r\n {this.trunkGroupDataRow('Enable Trunk Group Prefix', this.inputDataField(EnableTrunkGroupPrefix, 'EnableTrunkGroupPrefix', 'checkbox'), this.additionalInputFeld(EnableTrunkGroupPrefix, TrunkGroupPrefix, 'TrunkGroupPrefix'))}\r\n\r\n {this.trunkGroupDataRow('Allow calls directly to trunk group with trunk identity', this.inputDataField(AllowCallsDirectlyToTrunkGroupWithTrunkIdentity, 'AllowCallsDirectlyToTrunkGroupWithTrunkIdentity', 'checkbox'))}\r\n {this.trunkGroupDataRow('Allow calls directly to trunk group with DTG identity', this.inputDataField(AllowCallsDirectlyToTrunkGroupWithDTGIdentity, 'AllowCallsDirectlyToTrunkGroupWithDTGIdentity', 'checkbox'))}\r\n {this.trunkGroupDataRow('Include trunk identity for call to trunk group', this.inputDataField(IncludeTrunkIdentityForCallsToTrunkGroup, 'IncludeTrunkIdentityForCallsToTrunkGroup', 'checkbox'))}\r\n {this.trunkGroupDataRow('Include DTG identity for call to trunk group', this.inputDataField(IncludeDTGIdentityForCallsToTrunkGroup, 'IncludeDTGIdentityForCallsToTrunkGroup', 'checkbox'))}\r\n {this.trunkGroupDataRow('Enable network address identity', this.inputDataField(EnableNetworkAddressIdentity, 'EnableNetworkAddressIdentity', 'checkbox'))}\r\n {this.trunkGroupDataRow('Allow unscreened calls', this.inputDataField(AllowUnscreenedCalls, 'AllowUnscreenedCalls', 'checkbox'))}\r\n {this.trunkGroupDataRow('Allow unscreened emergency calls', this.inputDataField(AllowUnscreenedEmergencyCalls, 'AllowUnscreenedEmergencyCalls', 'checkbox'))}\r\n {this.trunkGroupDataRow('Route to peering domain', this.inputDataField(RouteToPeeringDomain, 'RouteToPeeringDomain', 'checkbox', true))}\r\n {this.trunkGroupDataRow('Peering Domain', this.dataDropDown(PeeringDomain, \"PeeringDomain\", DoaminList, true))}\r\n {/* Radio */}\r\n {/* {this.trunkGroupDataRow('Pilot User Call Optimization Policy', () => {\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 {this.trunkGroupDataRow('Trunk Group User Lookup Policy', this.radioDataField(UseSystemUserLookupPolicy, 'UseSystemUserLookupPolicy'), this.additionalDropField(UseSystemUserLookupPolicy, TrunkGroupUserLookupPolicy, 'TrunkGroupUserLookupPolicy', TrunkGroupUserLookupPolicyOptions))}\r\n {this.trunkGroupDataRow('Calling Line Identity Source For Screened Trunk Group Calls Policy', this.radioDataField(UseSystemCLIDSourceForScreenedCallsPolicy, 'UseSystemCLIDSourceForScreenedCallsPolicy'), this.additionalDropField(UseSystemCLIDSourceForScreenedCallsPolicy, CallingLineIdentitySourceForScreenedTrunkGroupCallsPolicy, 'CallingLineIdentitySourceForScreenedTrunkGroupCallsPolicy', TrunkGroupCLIDSourceForScreenedCallsPolicyOptions))}\r\n {this.trunkGroupDataRow('Support Connected Identity Policy', this.radioDataField(UseSystemSupportConnectedIdentityPolicy, 'UseSystemSupportConnectedIdentityPolicy'), this.additionalDropField(UseSystemSupportConnectedIdentityPolicy, SupportConnectedIdentityPolicy, 'SupportConnectedIdentityPolicy', TrunkGroupSupportConnectedIdentityPolicyOptions))}\r\n\r\n {this.trunkGroupDataRow('Pilot User Calling Line Identity for External Calls Usage Policy', this.dataDropDown(PilotUserCallingLineIdentityForExternalCallsUsagePolicy, \"PilotUserCallingLineIdentityForExternalCallsUsagePolicy\", TrunkGroupPilotUserCallingLineIdentityUsagePolicyOptions))}\r\n {this.trunkGroupDataRow('Pilot User Calling Line Identity Usage for Emergency Calls Policy', this.dataDropDown(PilotUserCallingLineIdentityUsageForEmergencyCallsPolicy, \"PilotUserCallingLineIdentityUsageForEmergencyCallsPolicy\", TrunkGroupPilotUserCallingLineIdentityUsagePolicyOptions))}\r\n {this.trunkGroupDataRow('Pilot User Charge Number Usage Policy', this.dataDropDown(PilotUserChargeNumberUsagePolicy, \"PilotUserChargeNumberUsagePolicy\", TrunkGroupPilotUserCallingLineIdentityUsagePolicyOptions))}\r\n {/*
    \r\n {this.gridContent()}\r\n
    */}\r\n
    \r\n )\r\n } else {\r\n return \r\n }\r\n }\r\n\r\n saveTrunkGroup = async () => {\r\n let { TrunkGroupDetails } = this.state;\r\n let apiPath = `admin/UpdateEnterpriseTrunkGroupInstance`;\r\n let dto = {\r\n AllowCallsDirectlyToTrunkGroupWithDTGIdentity: TrunkGroupDetails.AllowCallsDirectlyToTrunkGroupWithDTGIdentity,\r\n AllowCallsDirectlyToTrunkGroupWithTrunkIdentity: TrunkGroupDetails.AllowCallsDirectlyToTrunkGroupWithTrunkIdentity,\r\n AllowUnscreenedCalls: TrunkGroupDetails.AllowUnscreenedCalls,\r\n AllowUnscreenedEmergencyCalls: TrunkGroupDetails.AllowUnscreenedEmergencyCalls,\r\n AuthenticationUserName: TrunkGroupDetails.AuthenticationUserName,\r\n CallingLineIdentitySourceForScreenedTrunkGroupCallsPolicy: parseInt(TrunkGroupDetails.CallingLineIdentitySourceForScreenedTrunkGroupCallsPolicy),\r\n Department: TrunkGroupDetails.Department === \"None\" ? null : TrunkGroupDetails.Department,\r\n EnableAuthentication: TrunkGroupDetails.EnableAuthentication,\r\n EnableNetworkAddressIdentity: TrunkGroupDetails.EnableNetworkAddressIdentity,\r\n EnableTrunkGroupPrefix: TrunkGroupDetails.EnableTrunkGroupPrefix,\r\n GroupId: TrunkGroupDetails.GroupId,\r\n IncludeDTGIdentityForCallsToTrunkGroup: TrunkGroupDetails.IncludeDTGIdentityForCallsToTrunkGroup,\r\n IncludeOTGIdentityForCallsFromTrunkGroup: TrunkGroupDetails.IncludeOTGIdentityForCallsFromTrunkGroup,\r\n IncludeTrunkIdentityForCallsFromTrunkGroup: TrunkGroupDetails.IncludeTrunkIdentityForCallsFromTrunkGroup,\r\n IncludeTrunkIdentityForCallsToTrunkGroup: TrunkGroupDetails.IncludeTrunkIdentityForCallsToTrunkGroup,\r\n MaximumActiveCallsAllowed: parseInt(TrunkGroupDetails.MaximumActiveCallsAllowed),\r\n MaximumActiveIncomingCallsAllowed: parseInt(TrunkGroupDetails.MaximumActiveIncomingCallsAllowed),\r\n MaximumActiveOutgoingCallsAllowed: parseInt(TrunkGroupDetails.MaximumActiveOutgoingCallsAllowed),\r\n NewAuthenticationPassword: TrunkGroupDetails.NewAuthenticationPassword,\r\n NewSipAuthenticationPassword: TrunkGroupDetails.NewAuthenticationPassword,\r\n //NewSipAuthenticationPassword: TrunkGroupDetails.NewSipAuthenticationPassword,\r\n NewTrunkGroupName: TrunkGroupDetails.NewTrunkGroupName,\r\n OTGDTGIdentity: TrunkGroupDetails.OTGDTGIdentity,\r\n PeeringDomain: TrunkGroupDetails.PeeringDomain === \"None\" ? null : TrunkGroupDetails.PeeringDomain,\r\n PilotUserCallOptimizationPolicy: parseInt(TrunkGroupDetails.PilotUserCallOptimizationPolicy),\r\n PilotUserCallingLineIdentityForExternalCallsUsagePolicy: parseInt(TrunkGroupDetails.PilotUserCallingLineIdentityForExternalCallsUsagePolicy),\r\n PilotUserCallingLineIdentityUsageForEmergencyCallsPolicy: parseInt(TrunkGroupDetails.PilotUserCallingLineIdentityUsageForEmergencyCallsPolicy),\r\n PilotUserChargeNumberUsagePolicy: parseInt(TrunkGroupDetails.PilotUserChargeNumberUsagePolicy),\r\n PilotUserId: TrunkGroupDetails.PilotUserId,\r\n RouteToPeeringDomain: TrunkGroupDetails.RouteToPeeringDomain,\r\n SupportConnectedIdentityPolicy: parseInt(TrunkGroupDetails.SupportConnectedIdentityPolicy),\r\n TrunkGroupIdentity: TrunkGroupDetails.TrunkGroupIdentity,\r\n TrunkGroupName: TrunkGroupDetails.TrunkGroupName,\r\n TrunkGroupPrefix: TrunkGroupDetails.TrunkGroupPrefix,\r\n TrunkGroupUserLookupPolicy: parseInt(TrunkGroupDetails.TrunkGroupUserLookupPolicy),\r\n UseSystemCLIDSourceForScreenedCallsPolicy: TrunkGroupDetails.UseSystemCLIDSourceForScreenedCallsPolicy === \"true\" ? true : false,\r\n UseSystemSupportConnectedIdentityPolicy: TrunkGroupDetails.UseSystemSupportConnectedIdentityPolicy === \"true\" ? true : false,\r\n UseSystemUserLookupPolicy: TrunkGroupDetails.UseSystemUserLookupPolicy === \"true\" ? true : false,\r\n };\r\n //console.log('dto', JSON.stringify(dto));\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(dto)).then(res => res).catch(err => console.error(err));\r\n if (response) {\r\n this.fetchTrunkGroup();\r\n await this.setState({ showConfirmationModal: false });\r\n //console.log('response', response);\r\n if (response.ok) {\r\n await this.setState({\r\n Submission: true,\r\n submitError: false,\r\n errorMsg: response.message,\r\n });\r\n } else {\r\n let msg = response.message;\r\n // if username is present but no password\r\n if (dto.AuthenticationUserName && !dto.NewAuthenticationPassword) {\r\n msg = \"Submission Failure: Both authentication Username and Password are required.\";\r\n }\r\n // if password is present but no username\r\n if (!dto.AuthenticationUserName && dto.NewAuthenticationPassword) {\r\n msg = \"Submission Failure: Both authentication Username and Password are required.\";\r\n }\r\n // if password is present but does not meet min character limit\r\n if (dto.NewAuthenticationPassword && dto.NewAuthenticationPassword.length < 3) {\r\n msg = \"Submission Failure: Password needs to be between 3 to 30 characters.\";\r\n }\r\n // if OTG/DTG identity is empty\r\n if(!dto.OTGDTGIdentity) {\r\n msg = \"Submission Failure: OTG / DTG Identity is empty.\";\r\n }\r\n // if trunk group prefix enabled but field is empty\r\n if(dto.EnableTrunkGroupPrefix && !dto.TrunkGroupPrefix) {\r\n msg = \"Submission Failure: Prefix is required when Trunk Group Prefix is enabled.\";\r\n }\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n errorMsg: msg,\r\n });\r\n }\r\n }\r\n }\r\n\r\n trunkGroupUpdateBtns = () => {\r\n let { TrunkGroupDetails, OriginalDetails } = this.state;\r\n if (\r\n TrunkGroupDetails.AllowCallsDirectlyToTrunkGroupWithDTGIdentity === OriginalDetails.AllowCallsDirectlyToTrunkGroupWithDTGIdentity &&\r\n TrunkGroupDetails.AllowCallsDirectlyToTrunkGroupWithTrunkIdentity === OriginalDetails.AllowCallsDirectlyToTrunkGroupWithTrunkIdentity &&\r\n TrunkGroupDetails.AllowUnscreenedCalls === OriginalDetails.AllowUnscreenedCalls &&\r\n TrunkGroupDetails.AllowUnscreenedEmergencyCalls === OriginalDetails.AllowUnscreenedEmergencyCalls &&\r\n TrunkGroupDetails.AuthenticationUserName === OriginalDetails.AuthenticationUserName &&\r\n parseInt(TrunkGroupDetails.CallingLineIdentitySourceForScreenedTrunkGroupCallsPolicy) === OriginalDetails.CallingLineIdentitySourceForScreenedTrunkGroupCallsPolicy &&\r\n TrunkGroupDetails.Department === OriginalDetails.Department &&\r\n TrunkGroupDetails.EnableAuthentication === OriginalDetails.EnableAuthentication &&\r\n TrunkGroupDetails.EnableNetworkAddressIdentity === OriginalDetails.EnableNetworkAddressIdentity &&\r\n TrunkGroupDetails.EnableTrunkGroupPrefix === OriginalDetails.EnableTrunkGroupPrefix &&\r\n TrunkGroupDetails.GroupId === OriginalDetails.GroupId &&\r\n TrunkGroupDetails.IncludeDTGIdentityForCallsToTrunkGroup === OriginalDetails.IncludeDTGIdentityForCallsToTrunkGroup &&\r\n TrunkGroupDetails.IncludeOTGIdentityForCallsFromTrunkGroup === OriginalDetails.IncludeOTGIdentityForCallsFromTrunkGroup &&\r\n TrunkGroupDetails.IncludeTrunkIdentityForCallsFromTrunkGroup === OriginalDetails.IncludeTrunkIdentityForCallsFromTrunkGroup &&\r\n TrunkGroupDetails.IncludeTrunkIdentityForCallsToTrunkGroup === OriginalDetails.IncludeTrunkIdentityForCallsToTrunkGroup &&\r\n parseInt(TrunkGroupDetails.MaximumActiveCallsAllowed) === OriginalDetails.MaximumActiveCallsAllowed &&\r\n parseInt(TrunkGroupDetails.MaximumActiveIncomingCallsAllowed) === OriginalDetails.MaximumActiveIncomingCallsAllowed &&\r\n parseInt(TrunkGroupDetails.MaximumActiveOutgoingCallsAllowed) === OriginalDetails.MaximumActiveOutgoingCallsAllowed &&\r\n //TrunkGroupDetails.NewAuthenticationPassword === OriginalDetails.NewAuthenticationPassword &&\r\n TrunkGroupDetails.NewSipAuthenticationPassword === OriginalDetails.NewSipAuthenticationPassword &&\r\n TrunkGroupDetails.NewAuthenticationPassword === OriginalDetails.NewAuthenticationPassword &&\r\n TrunkGroupDetails.NewTrunkGroupName === OriginalDetails.NewTrunkGroupName &&\r\n TrunkGroupDetails.OTGDTGIdentity === OriginalDetails.OTGDTGIdentity &&\r\n TrunkGroupDetails.PeeringDomain === OriginalDetails.PeeringDomain &&\r\n parseInt(TrunkGroupDetails.PilotUserCallOptimizationPolicy) === OriginalDetails.PilotUserCallOptimizationPolicy &&\r\n parseInt(TrunkGroupDetails.PilotUserCallingLineIdentityForExternalCallsUsagePolicy) === OriginalDetails.PilotUserCallingLineIdentityForExternalCallsUsagePolicy &&\r\n parseInt(TrunkGroupDetails.PilotUserCallingLineIdentityUsageForEmergencyCallsPolicy) === OriginalDetails.PilotUserCallingLineIdentityUsageForEmergencyCallsPolicy &&\r\n parseInt(TrunkGroupDetails.PilotUserChargeNumberUsagePolicy) === OriginalDetails.PilotUserChargeNumberUsagePolicy &&\r\n TrunkGroupDetails.PilotUserId === OriginalDetails.PilotUserId &&\r\n TrunkGroupDetails.RouteToPeeringDomain === OriginalDetails.RouteToPeeringDomain &&\r\n parseInt(TrunkGroupDetails.SupportConnectedIdentityPolicy) === OriginalDetails.SupportConnectedIdentityPolicy &&\r\n TrunkGroupDetails.TrunkGroupIdentity === OriginalDetails.TrunkGroupIdentity &&\r\n TrunkGroupDetails.TrunkGroupName === OriginalDetails.TrunkGroupName &&\r\n TrunkGroupDetails.TrunkGroupPrefix === OriginalDetails.TrunkGroupPrefix &&\r\n parseInt(TrunkGroupDetails.TrunkGroupUserLookupPolicy) === OriginalDetails.TrunkGroupUserLookupPolicy &&\r\n TrunkGroupDetails.UseSystemCLIDSourceForScreenedCallsPolicy === OriginalDetails.UseSystemCLIDSourceForScreenedCallsPolicy &&\r\n TrunkGroupDetails.UseSystemSupportConnectedIdentityPolicy === OriginalDetails.UseSystemSupportConnectedIdentityPolicy &&\r\n TrunkGroupDetails.UseSystemUserLookupPolicy === OriginalDetails.UseSystemUserLookupPolicy\r\n )\r\n return;\r\n else {\r\n return (\r\n \r\n this.setState({ showConfirmationModal: true })}\r\n disabled={TrunkGroupDetails.AllowCallsDirectlyToTrunkGroupWithDTGIdentity === OriginalDetails.AllowCallsDirectlyToTrunkGroupWithDTGIdentity &&\r\n TrunkGroupDetails.AllowCallsDirectlyToTrunkGroupWithTrunkIdentity === OriginalDetails.AllowCallsDirectlyToTrunkGroupWithTrunkIdentity &&\r\n TrunkGroupDetails.AllowUnscreenedCalls === OriginalDetails.AllowUnscreenedCalls &&\r\n TrunkGroupDetails.AllowUnscreenedEmergencyCalls === OriginalDetails.AllowUnscreenedEmergencyCalls &&\r\n TrunkGroupDetails.AuthenticationUserName === OriginalDetails.AuthenticationUserName &&\r\n parseInt(TrunkGroupDetails.CallingLineIdentitySourceForScreenedTrunkGroupCallsPolicy) === OriginalDetails.CallingLineIdentitySourceForScreenedTrunkGroupCallsPolicy &&\r\n TrunkGroupDetails.Department === OriginalDetails.Department &&\r\n TrunkGroupDetails.EnableAuthentication === OriginalDetails.EnableAuthentication &&\r\n TrunkGroupDetails.EnableNetworkAddressIdentity === OriginalDetails.EnableNetworkAddressIdentity &&\r\n TrunkGroupDetails.EnableTrunkGroupPrefix === OriginalDetails.EnableTrunkGroupPrefix &&\r\n TrunkGroupDetails.GroupId === OriginalDetails.GroupId &&\r\n TrunkGroupDetails.IncludeDTGIdentityForCallsToTrunkGroup === OriginalDetails.IncludeDTGIdentityForCallsToTrunkGroup &&\r\n TrunkGroupDetails.IncludeOTGIdentityForCallsFromTrunkGroup === OriginalDetails.IncludeOTGIdentityForCallsFromTrunkGroup &&\r\n TrunkGroupDetails.IncludeTrunkIdentityForCallsFromTrunkGroup === OriginalDetails.IncludeTrunkIdentityForCallsFromTrunkGroup &&\r\n TrunkGroupDetails.IncludeTrunkIdentityForCallsToTrunkGroup === OriginalDetails.IncludeTrunkIdentityForCallsToTrunkGroup &&\r\n parseInt(TrunkGroupDetails.MaximumActiveCallsAllowed) === OriginalDetails.MaximumActiveCallsAllowed &&\r\n parseInt(TrunkGroupDetails.MaximumActiveIncomingCallsAllowed) === OriginalDetails.MaximumActiveIncomingCallsAllowed &&\r\n parseInt(TrunkGroupDetails.MaximumActiveOutgoingCallsAllowed) === OriginalDetails.MaximumActiveOutgoingCallsAllowed &&\r\n //TrunkGroupDetails.NewAuthenticationPassword === OriginalDetails.NewAuthenticationPassword &&\r\n TrunkGroupDetails.NewSipAuthenticationPassword === OriginalDetails.NewSipAuthenticationPassword &&\r\n TrunkGroupDetails.NewAuthenticationPassword === OriginalDetails.NewAuthenticationPassword &&\r\n TrunkGroupDetails.NewTrunkGroupName === OriginalDetails.NewTrunkGroupName &&\r\n TrunkGroupDetails.OTGDTGIdentity === OriginalDetails.OTGDTGIdentity &&\r\n TrunkGroupDetails.PeeringDomain === OriginalDetails.PeeringDomain &&\r\n parseInt(TrunkGroupDetails.PilotUserCallOptimizationPolicy) === OriginalDetails.PilotUserCallOptimizationPolicy &&\r\n parseInt(TrunkGroupDetails.PilotUserCallingLineIdentityForExternalCallsUsagePolicy) === OriginalDetails.PilotUserCallingLineIdentityForExternalCallsUsagePolicy &&\r\n parseInt(TrunkGroupDetails.PilotUserCallingLineIdentityUsageForEmergencyCallsPolicy) === OriginalDetails.PilotUserCallingLineIdentityUsageForEmergencyCallsPolicy &&\r\n parseInt(TrunkGroupDetails.PilotUserChargeNumberUsagePolicy) === OriginalDetails.PilotUserChargeNumberUsagePolicy &&\r\n TrunkGroupDetails.PilotUserId === OriginalDetails.PilotUserId &&\r\n TrunkGroupDetails.RouteToPeeringDomain === OriginalDetails.RouteToPeeringDomain &&\r\n parseInt(TrunkGroupDetails.SupportConnectedIdentityPolicy) === OriginalDetails.SupportConnectedIdentityPolicy &&\r\n TrunkGroupDetails.TrunkGroupIdentity === OriginalDetails.TrunkGroupIdentity &&\r\n TrunkGroupDetails.TrunkGroupName === OriginalDetails.TrunkGroupName &&\r\n TrunkGroupDetails.TrunkGroupPrefix === OriginalDetails.TrunkGroupPrefix &&\r\n parseInt(TrunkGroupDetails.TrunkGroupUserLookupPolicy) === OriginalDetails.TrunkGroupUserLookupPolicy &&\r\n TrunkGroupDetails.UseSystemCLIDSourceForScreenedCallsPolicy === OriginalDetails.UseSystemCLIDSourceForScreenedCallsPolicy &&\r\n TrunkGroupDetails.UseSystemSupportConnectedIdentityPolicy === OriginalDetails.UseSystemSupportConnectedIdentityPolicy &&\r\n TrunkGroupDetails.UseSystemUserLookupPolicy === OriginalDetails.UseSystemUserLookupPolicy ? true : false}\r\n >Save\r\n Cancel\r\n \r\n )\r\n }\r\n }\r\n\r\n submissionMsg = () => {\r\n if (this.state.Submission) {\r\n if (this.state.submitError) {\r\n return {this.state.errorMsg && this.state.errorMsg != \"\" ? this.state.errorMsg : \"Submission Failure: Changes were not processed!\"}\r\n } else {\r\n return Submission Sucess: Changes were processed!\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.state.TrunkGroupDetails ? this.trunkGroupUpdateBtns() : null}\r\n Manage Trunk Group {this.submissionMsg()}\r\n
    \r\n \r\n \r\n Are you sure you want to save changes?\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nvar TrunkGroupPilotUserCallOptimizationPolicyOptions = [\r\n \"Optimize For User Services\",\r\n \"Optimize For High Call Volume\",\r\n];\r\nvar TrunkGroupUserLookupPolicyOptions = [\r\n \"Basic\",\r\n \"Extended\",\r\n];\r\nvar TrunkGroupCLIDSourceForScreenedCallsPolicyOptions = [\r\n \"Profile Name Profile Number\",\r\n \"Received Name Profile Number\",\r\n \"Received Name Received Number\",\r\n];\r\nvar TrunkGroupSupportConnectedIdentityPolicyOptions = [\r\n \"Enabled\",\r\n \"Disabled\",\r\n];\r\nvar TrunkGroupPilotUserCallingLineIdentityUsagePolicyOptions = [\r\n \"All Originating Calls\",\r\n \"Unscreened Originating Calls\",\r\n \"No Calls\"\r\n];\r\nvar TrunkGroupPilotUserChargeNumberUsagePolicyOptions = [\r\n \"All Originating Calls\",\r\n \"Unscreened Originating Calls\",\r\n \"No Calls\"\r\n];","import React, { Component } from 'react';\r\nimport * as settings from '../../../scripts/settings';\r\nimport * as helper from '../../../scripts/helper';\r\nimport moment from 'moment';\r\nimport * as icons from '../../../scripts/icons';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { withRouter, Link } from 'react-router-dom';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { ComboBox } from '@progress/kendo-react-dropdowns';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\n\r\nexport default class UserSearch extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n searchTerm: null,\r\n Services: [],\r\n showResults: false,\r\n }\r\n }\r\n fetchServices = (apiPath = null) => {\r\n if (!apiPath) apiPath = this.apiPathWithParams();\r\n this.setState({ loading: true });\r\n apiCalls.fetchData(apiPath).then(async (data) => {\r\n if (data !== null) {\r\n let filteredArr = data.filter(itm => !JSON.parse(sessionStorage.UserIdArr).includes(itm.UserId));\r\n //console.log(\"REEE\", filteredArr);\r\n this.setState({\r\n loading: false,\r\n Services: filteredArr,\r\n resultsMsg: null,\r\n //showResults: true,\r\n });\r\n } else if (data === null) {\r\n this.setState({ Services: [], loading: false, resultsMsg: settings.noResultsMsg });\r\n };\r\n });\r\n }\r\n\r\n paramsSeparator = (apiPath) => apiPath.indexOf('?') >= 0 ? '&' : '?';\r\n\r\n apiPathWithParams = () => {\r\n let { locationAccFilter, searchTerm } = this.state;\r\n //let path = 'admin/Services';\r\n let path = 'admin/UserServices';\r\n //if (locationAccFilter) path += '?LocationAccountNumber=' + locationAccFilter;\r\n //if (viewFilter) path += this.paramsSeparator(path) + 'view=' + viewFilter;\r\n if (searchTerm) path += this.paramsSeparator(path) + 'term=' + searchTerm;\r\n return path;\r\n }\r\n\r\n searchServices = (event) => {\r\n let searchText = event.target.value.trim();\r\n if (searchText !== '') {\r\n this.setState({ searchTerm: searchText, showResults: true, })\r\n } else {\r\n this.setState({ searchTerm: null, showResults: false })\r\n }\r\n this.delayedSearch();\r\n }\r\n\r\n delayedSearch = () => {\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => this.fetchServices(), settings.searchDelay);\r\n }\r\n\r\n noSearchResults = () => {\r\n let { showResults, Services } = this.state;\r\n if (\r\n showResults &&\r\n Services &&\r\n Services.length === 0\r\n ) {\r\n return (\r\n
    \r\n
    {settings.noResultsMsg}
    \r\n
    \r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n serviceResults = () => {\r\n let { showResults, Services } = this.state;\r\n if (\r\n showResults &&\r\n Services &&\r\n Services.length > 0\r\n ) {\r\n return (\r\n
    \r\n
    MSP Users
    \r\n {Services.map((item, index) => this.serviceItem(item, index))}\r\n
    \r\n )\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n handleUserChange = (userId) => {\r\n this.props.onSelectUser(userId);\r\n }\r\n\r\n serviceItem = (item, index) => {\r\n return (\r\n
    \r\n
    {\r\n //console.log(\"use this user\", item.UserId);\r\n this.setState({ searchTerm: item.Username, showResults: false, });\r\n this.handleUserChange(item.UserId);\r\n }}\r\n >\r\n {item.FirstName} {item.LastName} {item.Username}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n let divStyle = { margin: '1%', };\r\n let labelStyle = { display: 'inline-block', width: '30%', };\r\n let inputStyle = { width: '70%', display: 'inline-block', height: '34px', fontSize: '12px' };\r\n return (\r\n \r\n
    { e.preventDefault() }}>\r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n {this.serviceResults()}\r\n {this.noSearchResults()}\r\n
    \r\n \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport _ from 'lodash';\r\nimport SaveStatus from '../../../components/save_status';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport UserSearch from './user_search';\r\nimport * as macdHelper from '../../macd/components/macd_helper';\r\nexport default class ManageADUser extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isAssigned: false,\r\n loading: false,\r\n Submission: false,\r\n submitError: false,\r\n showConfirmationModal: false,\r\n UserId: this.props.location.state.UserId,\r\n AzureObjId: this.props.location.state.AzureObjId,\r\n UserDetails: {\r\n EnterpriseId: sessionStorage.enterpriseId,\r\n LocationId: null,\r\n UserId: null,\r\n AzureObjectId: this.props.location.state.AzureObjId,\r\n UserPrincipalName: null,\r\n DisplayName: null,\r\n AccountEnabled: false, // verify\r\n Country: null,\r\n City: null,\r\n State: null,\r\n PostalCode: null,\r\n StreetAddress: null,\r\n CompanyName: null,\r\n Department: null,\r\n FacsimileTelephoneNumber: null,\r\n GivenName: null,\r\n Surname: null,\r\n Mail: null,\r\n MailNickName: null,\r\n Mobile: null,\r\n OtherMails: null,\r\n TelephoneNumber: null,\r\n IsDeleted: false\r\n },\r\n LocationList: sessionStorage.locationList ? JSON.parse(sessionStorage.locationList) : [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.fecthAdUser(this.state.UserId);\r\n }\r\n\r\n componentWillReceiveProps = () => {\r\n let { UserId } = this.state;\r\n if (UserId !== this.props.location.state.UserId) {\r\n this.setState({ UserId: this.props.location.state.UserId });\r\n }\r\n }\r\n\r\n fecthAdUser = async (userId) => {\r\n await this.setState({ loading: true });\r\n let path = `admin/GetAzureADUser?MSPUserId=${userId}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n this.setState({\r\n UserDetails: data,\r\n isAssigned: true,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n inputDataField = (val, key, inputStyle, onChangeFunc, type = 'text', readOnly) => {\r\n return (\r\n onChangeFunc(e, key)}\r\n disabled={readOnly}\r\n />\r\n )\r\n }\r\n\r\n dataRow = (label, field, divStyleObj, labelStyleObj) => {\r\n return (\r\n
    \r\n {label}: \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n dataDropDown = (locations, key, val, inputStyle) => {\r\n return (\r\n this.handleInputChange(e, key)}\r\n value={val}\r\n >\r\n {/* {options} */}\r\n \r\n {locations.map((itm, idx) => {\r\n return \r\n })}\r\n \r\n )\r\n }\r\n\r\n cardContent = () => {\r\n let { loading, LocationList, UserDetails } = this.state;\r\n if (loading) {\r\n return (\r\n \r\n );\r\n } else {\r\n let {\r\n EnterpriseId,\r\n LocationId,\r\n UserId,\r\n AzureObjectId,\r\n UserPrincipalName,\r\n DisplayName,\r\n AccountEnabled,\r\n Country,\r\n City,\r\n State,\r\n PostalCode,\r\n StreetAddress,\r\n CompanyName,\r\n Department,\r\n FacsimileTelephoneNumber,\r\n GivenName,\r\n Surname,\r\n Mail,\r\n MailNickName,\r\n Mobile,\r\n OtherMails,\r\n TelephoneNumber,\r\n IsDeleted,\r\n } = UserDetails;\r\n let divStyle = { margin: \"1%\", };\r\n let labelStyle = { display: 'inline-block', width: '30%', };\r\n let inputStyle = { width: '70%', display: 'inline-block', };\r\n return (\r\n
    \r\n {this.dataRow(\"Location\", this.dataDropDown(LocationList, \"LocationId\", LocationId, inputStyle), divStyle, labelStyle)}\r\n {/* {this.dataRow(\"Select Location\", this.inputDataField(\"TEST IGNORE\", 'LocationId', inputStyle, this.handleInputChange), divStyle, labelStyle)} */}\r\n {}\r\n {this.dataRow(\"User Principal Name\", this.inputDataField(UserPrincipalName, 'UserPrincipalName', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Department\", this.inputDataField(Department, 'Department', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Fax #\", this.inputDataField(FacsimileTelephoneNumber, 'FacsimileTelephoneNumber', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Given Name\", this.inputDataField(GivenName, 'GivenName', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Surname\", this.inputDataField(Surname, 'Surname', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Mail\", this.inputDataField(Mail, 'Mail', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Mobile\", this.inputDataField(Mobile, 'Mobile', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Telephone #\", this.inputDataField(TelephoneNumber, 'TelephoneNumber', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Active\", this.inputDataField(IsDeleted === true ? \"Yes\" : \"No\", 'IsDeleted', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n\r\n
    \r\n )\r\n }\r\n }\r\n\r\n handleUserChange = async (id) => {\r\n let UserDetails = { ...this.state.UserDetails };\r\n UserDetails[\"UserId\"] = id;\r\n await this.setState({ UserDetails });\r\n //console.log(\"UserDetails\", UserDetails);\r\n }\r\n\r\n inputCheck = (val) => {\r\n return (\r\n this.handleInputChange(e, key)}\r\n //disabled={readOnly === true ? true : false}\r\n />\r\n );\r\n }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let UserDetails = { ...this.state.UserDetails };\r\n UserDetails[key] = value;\r\n await this.setState({ UserDetails });\r\n //console.log(\"UserDetails\", UserDetails); // inserted AD Information\r\n }\r\n\r\n saveAdUserConfiguaration = async () => {\r\n let path = 'admin/UpdateAzureADUser';\r\n let dto = this.state.UserDetails;\r\n //console.log(\"DTO verification\", dto);\r\n // let response = await apiCalls.post(path, 'POST', JSON.stringify(dto)).then(response => response).catch(err => console.error(err));\r\n // if (response) {\r\n // if (response.ok) {\r\n // await this.setState({\r\n // Submission: true,\r\n // submitError: false,\r\n // showConfirmationModal: false,\r\n // });\r\n // } else {\r\n // await this.setState({\r\n // Submission: true,\r\n // submitError: true,\r\n // showConfirmationModal: false,\r\n // });\r\n // }\r\n // this.fecthAdUser(dto.UserId);\r\n // }\r\n }\r\n\r\n // loadAddServices = () => {\r\n // this.props.history.push(macdHelper.AddEditPage());\r\n // }\r\n\r\n submissionMsg = () => {\r\n if (this.state.Submission) {\r\n if (this.state.submitError) {\r\n return {this.state.errorMsg && this.state.errorMsg != \"\" ? this.state.errorMsg : \"Submission Failure: Changes were not processed!\"}\r\n } else {\r\n return Submission Sucess: Changes were processed!\r\n }\r\n }\r\n };\r\n\r\n render = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Update External User {this.submissionMsg()}

    \r\n {/* \r\n this.setState({ showConfirmationModal: true })}\r\n className=\"a btn\"\r\n >{this.state.isAssigned ? \"Update User\" : \"Assign User\"}\r\n Add Service\r\n */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Are you sure you want to save changes?\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport * as config from '../../requests/config';\r\nimport * as settings from '../../scripts/settings';\r\nimport * as utility from '../../utility/utility';\r\n\r\nexport default class AdConfig extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n EnterpriseId: sessionStorage.enterpriseId,\r\n Submission: false,\r\n submitError: false,\r\n hasConnector: false,\r\n FeatureEnabled: sessionStorage.hasActiveDirectory == \"true\" ? true : false, // find way to discern value (tbl.Enterprise)... hardcoded for now 9/24/20\r\n CurrentAdSystem: this.props.AdSystem, // find way to discern value (tbl.Enterprise)... hardcoded for now 9/24/20\r\n ConnectorInfo: this.props.ConnectorInfo,\r\n showConfirmationModal: false,\r\n //\r\n hasConnector: true,\r\n //Loading: this.props.Loading,\r\n };\r\n }\r\n\r\n componentWillReceiveProps() {\r\n if (this.props.ConnectorInfo !== this.state.ConnectorInfo) {\r\n this.setState({ ConnectorInfo: this.props.ConnectorInfo });\r\n }\r\n }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let ConnectorInfo = { ...this.state.ConnectorInfo };\r\n ConnectorInfo[key] = value;\r\n await this.setState({ ConnectorInfo });\r\n //console.log(\"ConnectorInfo\", ConnectorInfo); // inserted AD Information\r\n }\r\n\r\n userCreds = () => {\r\n let { ConnectorInfo, CurrentAdSystem, hasConnector } = this.state;\r\n if (ConnectorInfo && ConnectorInfo != null) {\r\n let {\r\n APIToken,\r\n CustomerIdPID,\r\n EnterpriseId,\r\n IdPAuthServer,\r\n IdPDomain,\r\n IdPName,\r\n IdPProtocol,\r\n IdPType,\r\n IdPUserName,\r\n IdPUserPwd,\r\n } = ConnectorInfo;\r\n\r\n if (ConnectorInfo.IdPType === \"Okta\") {\r\n return (\r\n
    \r\n {this.dataRow(\"Domain\", this.inputDataField(IdPDomain, \"IdPDomain\", this.handleInputChange))}\r\n {this.dataRow(\"Token\", this.inputDataField(APIToken, \"APIToken\", this.handleInputChange))}\r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n {this.dataRow(\"User Principal Name\", this.inputDataField(IdPUserName, \"IdPUserName\", this.handleInputChange))}\r\n {this.dataRow(\"Password\", this.inputDataField(IdPUserPwd, \"IdPUserPwd\", this.handleInputChange, false, \"password\"))}\r\n
    \r\n );\r\n }\r\n }\r\n }\r\n\r\n inputDataField = (val, key, onChangeFunc, readOnly = false, type = 'text') => {\r\n return (\r\n onChangeFunc(e, key)}\r\n disabled={readOnly}\r\n />\r\n )\r\n }\r\n\r\n dataRow = (label, field) => {\r\n return (\r\n
    \r\n {label}: \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n cardContent = () => {\r\n let { Loading, ConnectorInfo, FeatureEnabled, CurrentAdSystem } = this.state;\r\n\r\n if (ConnectorInfo && ConnectorInfo != null) {\r\n let {\r\n APIToken,\r\n CustomerIdPID,\r\n EnterpriseId,\r\n IdPAuthServer,\r\n IdPDomain,\r\n IdPName,\r\n IdPProtocol,\r\n IdPType,\r\n IdPUserName,\r\n IdPUserPwd,\r\n } = ConnectorInfo;\r\n //FeatureEnabled = \r\n return (\r\n
    \r\n * Please provide relevant information to enable / disable active directory\r\n
    \r\n {this.dataRow(\"Identity Provider\", this.inputDataField(IdPType, \"IdPType\", this.handleInputChange, true))}\r\n {this.userCreds()}\r\n {/* {this.dataRow(\"Enable Acitve Directory Feature\", this.enableFeatureInput(FeatureEnabled))} */}\r\n {/* {this.dataRow(\"Authentication Method\", this.selectAuthenticationSystem(CurrentAdSystem))} */}\r\n {this.dataRow(\"Authentication Method\", this.inputDataField(IdPProtocol, \"IdPProtocol\", this.handleInputChange, true))}\r\n \r\n
    \r\n {this.submissionMsg()}\r\n
    \r\n );\r\n } else {\r\n return (\r\n

    No Available Data

    \r\n )\r\n }\r\n }\r\n\r\n enableFeatureInput = (val) => {\r\n // params? (val, key, type = 'text')\r\n return (\r\n this.handleInputChange(e, key, type)}\r\n onChange={(e) => {\r\n this.setState({ FeatureEnabled: e.target.checked });\r\n //sessionStorage.setItem(\"hasActiveDirectory\", e.target.checked);\r\n }}\r\n />\r\n );\r\n }\r\n\r\n selectAdSystem = (val) => {\r\n // params? (val, key, options = [], readOnly = false)\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n selectAuthenticationSystem = (val) => {\r\n // params? (val, key, options = [], readOnly = false)\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n handleTransitionToMenu = () => {\r\n this.props.history.push(`/ad-menu/${sessionStorage.enterpriseId}`);\r\n }\r\n\r\n handleSubmit = async () => {\r\n // APIToken,\r\n // CustomerIdPID,\r\n // EnterpriseId,\r\n // IdPAuthServer,\r\n // IdPDomain,\r\n // IdPName,\r\n // IdPProtocol,\r\n // IdPType,\r\n // IdPUserName,\r\n // IdPUserPwd,\r\n let { ConnectorInfo, FeatureEnabled, CurrentAdSystem } = this.state;\r\n let path = \"admin/SaveCustomerIdp\";\r\n // if(ConnectorInfo.APIToken == null) {\r\n // ConnectorInfo.APIToken = \"\"\r\n // }\r\n // if(ConnectorInfo.IdPAuthServer == null) {\r\n // ConnectorInfo.IdPAuthServer = \"\"\r\n // }\r\n // if(ConnectorInfo.IdPDomain == null) {\r\n // ConnectorInfo.IdPDomain = \"\"\r\n // }\r\n // if(ConnectorInfo.IdPName == null) {\r\n // ConnectorInfo.IdPName = \"\"\r\n // }\r\n // if(ConnectorInfo.IdPProtocol == null) {\r\n // ConnectorInfo.IdPProtocol = \"\"\r\n // }\r\n // if(ConnectorInfo.IdPUserName == null) {\r\n // ConnectorInfo.IdPUserName = \"\"\r\n // }\r\n // if(ConnectorInfo.IdPUserPwd == null) {\r\n // ConnectorInfo.IdPUserPwd = \"\"\r\n // }\r\n //console.log(\"JSON DTO\", JSON.stringify(ConnectorInfo));\r\n let response = await apiCalls.post(path, \"POST\", JSON.stringify(ConnectorInfo)).then(data => data).catch(err => console.error(err));\r\n if (response.ok) {\r\n await this.setState({\r\n showConfirmationModal: false,\r\n Submission: true,\r\n submitError: false,\r\n });\r\n } else {\r\n await this.setState({\r\n showConfirmationModal: false,\r\n Submission: true,\r\n submitError: true,\r\n });\r\n }\r\n ///\r\n // if (!FeatureEnabled) {\r\n // sessionStorage.setItem(\"AdSourceSystem\", CurrentAdSystem);\r\n // sessionStorage.setItem(\"hasActiveDirectory\", FeatureEnabled);\r\n // this.updateFeatureStatus();\r\n // await this.setState({ showConfirmationModal: false });\r\n // } else {\r\n // let path = \"admin/UpdateAzureADConnector\";\r\n // if (CurrentAdSystem == \"Okta\") {\r\n // path = \"admin/UpdateOktaADConnector\";\r\n // }\r\n // ConnectorInfo.EnterpriseId = parseInt(sessionStorage.enterpriseId);\r\n // //console.log(\"DTO\", ConnectorInfo);\r\n // let response = await apiCalls.post(path, \"POST\", JSON.stringify(ConnectorInfo)).then(data => data).catch(err => console.error(err));\r\n // if (response.ok) {\r\n // //this.handleTransitionToMenu();\r\n // sessionStorage.setItem(\"AdSourceSystem\", CurrentAdSystem);\r\n // sessionStorage.setItem(\"hasActiveDirectory\", FeatureEnabled);\r\n // await this.setState({\r\n // showConfirmationModal: false,\r\n // Submission: true,\r\n // submitError: false,\r\n // });\r\n // } else {\r\n // await this.setState({\r\n // showConfirmationModal: false,\r\n // Submission: true,\r\n // submitError: true,\r\n // });\r\n // }\r\n // }\r\n }\r\n\r\n updateFeatureStatus = async () => {\r\n let path = \"admin/RemoveEnterpriseADSync\";\r\n let dto = parseInt(sessionStorage.enterpriseId);\r\n //console.log(\"DTO\", dto);\r\n let response = await apiCalls.post(path, \"PUT\", JSON.stringify(dto)).then(data => data).catch(err => console.error(err));\r\n if (response.ok) {\r\n //this.handleTransitionToMenu();\r\n await this.setState({\r\n Submission: true,\r\n submitError: false,\r\n });\r\n } else {\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n });\r\n }\r\n }\r\n\r\n submissionMsg = () => {\r\n if (this.state.Submission) {\r\n if (this.state.submitError) {\r\n return {this.state.errorMsg && this.state.errorMsg != \"\" ? this.state.errorMsg : \"Submission Failure: Changes were not processed!\"}\r\n } else {\r\n return Submission Sucess: Changes were processed!\r\n }\r\n }\r\n };\r\n\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n Are you sure you want to save changes?\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n );\r\n };\r\n}","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport * as config from '../../requests/config';\r\nimport * as settings from '../../scripts/settings';\r\nimport * as helper from '../../scripts/helper';\r\n\r\nexport default class SyncMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n EnterpriseId: sessionStorage.enterpriseId,\r\n //EnterpriseId: props.match.params.enterpriseId,\r\n loading: false,\r\n Submission: false,\r\n submitError: false,\r\n //tab: \"azure\",\r\n UsersList: [],\r\n FullListings: [],\r\n ConnectorInfo: {},\r\n OriginalConnectorInfo: {},\r\n showConfirmationModal: false,\r\n Sort: [{ field: \"UserId\", dir: \"desc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n };\r\n\r\n class ManageUserCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let { UserId, AzureObjectId } = this.props.dataItem;\r\n\r\n //if (UserId) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n // } else {\r\n // return \r\n // }\r\n }\r\n }\r\n\r\n class DataLinkCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n let { LocationId } = this.props.dataItem;\r\n if (LocationId) {\r\n //let locNum = helper.filterNestedObject(\"LocationId\", 4378, JSON.parse(sessionStorage.locationList))[0].LocationAccountNumber;\r\n let locNum = sessionStorage.locationList && JSON.parse(sessionStorage.locationList).length > 0 && helper.filterNestedObject(\"LocationId\", LocationId, JSON.parse(sessionStorage.locationList)) ? helper.filterNestedObject(\"LocationId\", LocationId, JSON.parse(sessionStorage.locationList))[0].LocationAccountNumber : LocationId;\r\n return (\r\n \r\n \r\n {locNum}\r\n \r\n \r\n )\r\n } else {\r\n return \r\n }\r\n }\r\n }\r\n\r\n class UserLinkCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n selectUser = (service) => {\r\n settings.selectService(service.UserId, null);\r\n }\r\n\r\n render() {\r\n let { UserId } = this.props.dataItem;\r\n if (UserId) {\r\n\r\n return (\r\n \r\n { this.selectUser(this.props.dataItem) }}\r\n >\r\n {UserId}\r\n \r\n \r\n )\r\n } else {\r\n return \r\n }\r\n }\r\n }\r\n\r\n this.ManageUserCell = ManageUserCell;\r\n this.DataLinkCell = DataLinkCell;\r\n this.UserLinkCell = UserLinkCell;\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchAdUserList(this.state.EnterpriseId);\r\n }\r\n\r\n alterData = (data) => {\r\n let userIdArr = [];\r\n data.forEach(itm => {\r\n //itm.UserId = itm.UserId.toString();\r\n //itm.LocationId = itm.LocationId.toString();\r\n if(itm.UserId) {\r\n userIdArr.push(itm.UserId);\r\n }\r\n itm.IsDeleted = itm.IsDeleted == true ? \"Yes\" : \"No\"\r\n });\r\n //console.log(\"USERIDS\", userIdArr);\r\n sessionStorage.setItem(\"UserIdArr\", JSON.stringify(userIdArr));\r\n return data;\r\n }\r\n\r\n fetchAdUserList = async (EnterpriseId) => {\r\n await this.setState({ loading: true });\r\n let path = `admin/GetAzureADUserList?EnterpriseId=${EnterpriseId}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n //console.log('ad sync user list', data);\r\n if (data) {\r\n let newData = this.alterData(data);\r\n this.setState({\r\n UsersList: newData,\r\n FullListings: newData,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n UsersList: [],\r\n FullListings: [],\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n\r\n\r\n gridContent = () => {\r\n let { loading, UsersList, Sort } = this.state;\r\n if (!loading) {\r\n if (UsersList && UsersList.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n } else {\r\n return

    No Available Data

    \r\n }\r\n } else {\r\n return \r\n }\r\n }\r\n\r\n handleSortChange = (e) => {\r\n this.setState({\r\n UsersList: orderBy(this.state.UsersList, e.sort),\r\n Sort: e.sort\r\n });\r\n }\r\n\r\n handleFilterChange = async (event) => {\r\n await this.setState({\r\n filter: event.filter\r\n });\r\n }\r\n\r\n openAttachments = () => {\r\n this.refs.fileUploader.click();\r\n }\r\n\r\n addAttachment = async (event) => {\r\n let file = event.target.files[0];\r\n let reader = new FileReader();\r\n reader.addEventListener('loadend', () => {\r\n let body = reader.result.split(',')[1];\r\n let name = file.name;\r\n this.createAttachment(body, name);\r\n }, false);\r\n if (file) {\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n\r\n createAttachment = async (body, name, ticketId) => {\r\n let apiPath = 'admin/UploadIDPUsers';\r\n let attachmentDTO = {\r\n TicketId: this.state.TicketId,\r\n AttachmentBody: body,\r\n FileName: name,\r\n };\r\n await this.setState({ attachmentSubmitted: true });\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(attachmentDTO)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n await this.setState({\r\n Submission: true,\r\n submitError: false,\r\n });\r\n } else {\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n });\r\n }\r\n }\r\n\r\n uploadBtn = () => {\r\n return (\r\n
    \r\n {\r\n event.target.value = null;\r\n }}\r\n />\r\n this.openAttachments()}>Import Users\r\n
    )\r\n\r\n }\r\n exportUsers = () => {\r\n this.refs.downloadCsv.submit();\r\n this.refs.exportBtn.text = 'Downloading...';\r\n setTimeout(() => {\r\n this.refs.exportBtn.text = 'Export Users';\r\n }, 2000);\r\n }\r\n\r\n exportBtn = () => {\r\n if (this.state.UsersList.length > 0) {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n this.exportUsers()}>Export Users\r\n
    \r\n )\r\n } else return null;\r\n }\r\n\r\n cardContent = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    { e.preventDefault() }}>\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.uploadBtn()}\r\n {this.exportBtn()}\r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    \r\n );\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullListings;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'GivenName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Surname', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'UserPrincipalName', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n this.delayedSearch(services);\r\n }\r\n else {\r\n this.delayedSearch(fullDetails);\r\n }\r\n }\r\n\r\n delayedSearch = async (services) => {\r\n await this.setState({ loading: true });\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.setState({ UsersList: services, loading: false });\r\n }, settings.searchDelay);\r\n }\r\n\r\n render() {\r\n return this.cardContent();\r\n };\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { Modal } from 'react-bootstrap';\r\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\r\nimport { Input } from \"@progress/kendo-react-inputs\";\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\n\r\n\r\n\r\nconst EditForm = props => {\r\n const { data: defaultData, customerIdpAppList, onSubmit, isEditMode } = props;\r\n\r\n const [editItem, setEditItem] = useState({});\r\n\r\n useEffect(() => {\r\n setEditItem(defaultData);\r\n }, [props.data]);\r\n\r\n\r\n const handleInputChange = e => {\r\n setEditItem({\r\n ...editItem,\r\n [e.target.name]: e.target.value\r\n })\r\n };\r\n\r\n const handleDropdownChange = e => {\r\n setEditItem({\r\n ...editItem,\r\n \"IdPAppName\": e.target.value?.IdPAppName\r\n })\r\n };\r\n\r\n const handleSubmit = () => {\r\n onSubmit(editItem);\r\n }\r\n\r\n const submissionMsg = () => {\r\n if (props.Submission) {\r\n if (props.SubmitError) {\r\n return {props.ErrorMessage && props.ErrorMessage != \"\" ? props.ErrorMessage : \"Submission Failure: Changes were not processed!\"}\r\n } else {\r\n return Submission Sucess: Changes were processed!\r\n }\r\n }\r\n };\r\n\r\n\r\n return (\r\n \r\n \r\n {isEditMode ? 'Edit' : 'Add New App'}\r\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 {isEditMode ? 'Update' : 'Add'}\r\n \r\n
    \r\n
    \r\n
    \r\n {submissionMsg()}\r\n
    \r\n
    \r\n
    \r\n )\r\n};\r\n\r\nexport default EditForm;","import React, { Component } from 'react';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { Button } from '@progress/kendo-react-buttons';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport EditForm from './components/edit_applist_dialog';\r\n\r\nconst CellEditButton = (props) => {\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nclass AppList extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n AppList: this.props.AppList,\r\n CustomerIdPID: this.props.CustomerIdPID,\r\n loading: false,\r\n Sort: [{ field: \"\", dir: \"desc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n openDialog: false,\r\n isEditMode: false,\r\n editItem: {},\r\n hasEmptyData: []\r\n }\r\n }\r\n\r\n componentWillReceiveProps() {\r\n if (this.props.AppList !== this.state.AppList) {\r\n this.setState({ AppList: this.props.AppList });\r\n }\r\n }\r\n\r\n // handleAddItem = () => {\r\n // let defaultIdpAppName = this.state.hasEmptyData[0]?.IdPAppName || '';\r\n // this.setState({\r\n // openDialog: true,\r\n // isEditMode: false,\r\n // editItem: {\r\n // ConfigJSON: null,\r\n // CustomerIdPID: this.state.this.props.CustomerIdPID,\r\n // IdPAppClientId: \"\",\r\n // IdPAppClientKey: \"\",\r\n // IdPAppName: defaultIdpAppName,\r\n // Jwk: null\r\n // },\r\n // });\r\n // }\r\n\r\n gridContent = () => {\r\n let { Sort, AppList } = this.state;\r\n if (AppList && AppList.length > 0) {\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n } title={headerToolTip(\"Edit\")} sortable={false} filterable={false} width=\"60px\" />\r\n \r\n \r\n )\r\n } else {\r\n return

    No Available Data

    \r\n }\r\n }\r\n\r\n handleSortChange = (e) => {\r\n this.setState({\r\n customerIdpApps: orderBy(this.state.customerIdpApps, e.sort),\r\n Sort: e.sort\r\n });\r\n }\r\n\r\n handleFilterChange = (event) => {\r\n this.setState({\r\n filter: event.filter\r\n });\r\n }\r\n\r\n handleOpenModal = (props) => {\r\n this.setState({\r\n openDialog: true,\r\n isEditMode: true,\r\n editItem: props.dataItem,\r\n });\r\n }\r\n\r\n handleCloseModal = async () => {\r\n if (this.state.Submission) {\r\n await this.props.RefreshData(this.state.CustomerIdPID);\r\n }\r\n this.setState({\r\n openDialog: false,\r\n isEditMode: false,\r\n Submission: false,\r\n SubmitError: false,\r\n ErrorMessage: \"\",\r\n });\r\n }\r\n\r\n updateCustomerIdpData = async (data) => {\r\n let path = 'admin/SaveCustomerIdpApp';\r\n let response = await apiCalls.post(path, 'POST', JSON.stringify(data)).then(data => data).catch(err => console.error(err));\r\n if (response.ok) {\r\n await this.setState({\r\n Submission: true,\r\n SubmitError: false,\r\n ErrorMessage: \"\",\r\n });\r\n } else {\r\n this.setState({\r\n Submission: true,\r\n SubmitError: true,\r\n ErrorMessage: response.message,\r\n });\r\n }\r\n }\r\n\r\n handleSubmit = async (data) => {\r\n let idx = this.state.AppList.findIndex((itm) => itm.IdPAppName === data.IdPAppName);\r\n await this.setState({\r\n AppList: this.state.AppList.splice(idx, 1, data),\r\n });\r\n console.log(\"APP LIST after splice\", this.state.AppList);\r\n await this.updateCustomerIdpData(data);\r\n }\r\n\r\n render() {\r\n let { loading } = this.state;\r\n if (loading) {\r\n return \r\n }\r\n return (\r\n
    \r\n {/*
    \r\n {this.state.hasEmptyData.length > 0 && }\r\n
    */}\r\n {this.gridContent()}\r\n \r\n
    \r\n )\r\n }\r\n}\r\nexport default AppList;\r\n\r\n","import React, { Component, Fragment } from 'react';\r\nimport AdConfig from './ad_config';\r\nimport SyncMenu from './active_directory_menu';\r\nimport AppList from './ad_app_list';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\n\r\nexport default class AdMain extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n loading: false,\r\n tab: \"config\",\r\n }\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchIdPConnector();\r\n }\r\n\r\n fetchIdPConnector = async () => {\r\n await this.setState({ loading: true });\r\n let path = `admin/GetCustomerIdp`;\r\n await apiCalls.fetchData(path).then(async (data) => {\r\n if (data) {\r\n let copy = JSON.parse(JSON.stringify(data[0]));\r\n await this.setState({\r\n ConnectorInfo: data[0],\r\n ConnectorInfoCopy: copy,\r\n CustomerIdPID: copy.CustomerIdPID,\r\n //hasConnector: true,\r\n //loading: false,\r\n });\r\n await this.fetchCustomerIdpApps(copy.CustomerIdPID);\r\n } else {\r\n this.setState({\r\n ConnectorInfo: null,\r\n //loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n\r\n fetchCustomerIdpApps = async (id) => {\r\n let path = `admin/GetCustomerIdpApps?CustomerIdPID=${id}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n this.setState({\r\n AppList: data,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n AppList: [],\r\n loading: false\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n\r\n tabDisplay = () => {\r\n return (\r\n
    \r\n \r\n Configuration\r\n \r\n \r\n App List\r\n \r\n \r\n Data\r\n \r\n
    \r\n );\r\n };\r\n\r\n changeTab = event => {\r\n if (event.target.dataset.act !== this.state.tab) {\r\n this.setState({ tab: event.target.dataset.act });\r\n }\r\n };\r\n\r\n getTab() {\r\n let { tab } = this.state;\r\n switch (tab) {\r\n case \"config\":\r\n return ;\r\n case \"appList\":\r\n return (\r\n \r\n );\r\n case \"data\":\r\n return (\r\n \r\n );\r\n default:\r\n console.log(\"Sorry there isn't a tab named \" + tab + \".\");\r\n }\r\n }\r\n\r\n cardContent = () => {\r\n if (!this.state.loading) {\r\n return (\r\n \r\n {this.tabDisplay()}\r\n
    \r\n
    \r\n {this.getTab()}\r\n
    \r\n
    \r\n
    \r\n )\r\n } else {\r\n return
    \r\n \r\n
    \r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Single Sign On

    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Modal } from 'react-bootstrap';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nexport default class MsTeamsConfig extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n Enterprise: this.props.Enterprise,\r\n Trunk: this.props.Trunk,\r\n MSTeamsConfig: this.props.MSTeamsConfig,\r\n MSTeamsConfigCopy: this.props.MSTeamsConfig,\r\n loading: this.props.loading,\r\n Submission: false,\r\n submitError: false,\r\n completed: false,\r\n msgDetails: \"\",\r\n PrimaryGateWay: this.props.PrimaryGateWay,\r\n SecondaryGateWay: this.props.SecondaryGateWay,\r\n testingCredentials: false,\r\n verify: true,\r\n verified: \"\",\r\n routingType: this.props.routingType,\r\n };\r\n }\r\n\r\n componentWillReceiveProps() {\r\n if (this.props.MsTeamsConfig !== this.state.MsTeamsConfig) {\r\n this.setState({ MSTeamsConfig: this.props.MsTeamsConfig });\r\n }\r\n }\r\n\r\n msTrunkData = () => {\r\n let { MSTeamsConfig, Trunk, Enterprise, PrimaryGateWay, SecondaryGateWay } = this.state;\r\n if (MSTeamsConfig.IsPasswordSaved == 1) {\r\n MSTeamsConfig[\"Password\"] = \"**********\";\r\n MSTeamsConfig[\"PasswordLengthExceeded\"] = false;\r\n }\r\n return (\r\n
    \r\n {this.dataRow(\"Trunk:\", this.inputDataField(Trunk.TrunkName, \"TrunkName\", null, true))}\r\n {this.dataRow(\"User Name:\", this.inputDataField(MSTeamsConfig.UserName, \"UserName\", this.handleInputChange))}\r\n {this.dataRow(\"Password:\", this.inputDataField(MSTeamsConfig.Password, \"Password\", this.handleInputChange, false, \"password\"))}\r\n {/* { this.dataRow(\"Primary FQDN:\", this.inputDataField(PrimaryGateWay, \"PstnPrimaryGateway\", this.handleInputChange, true))}\r\n { this.dataRow(\"Secondary FQDN:\", this.inputDataField(SecondaryGateWay, \"PstnSecondaryGateway\", this.handleInputChange, true))} */}\r\n
    \r\n )\r\n }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let MSTeamsConfig = { ...this.state.MSTeamsConfig };\r\n MSTeamsConfig[key] = value;\r\n if (key == \"Password\") {\r\n var len = value.length;\r\n if(len>=30){\r\n console.log(\"provide password less then 30\")\r\n MSTeamsConfig[\"PasswordLengthExceeded\"] = true;\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n msgDetails: \"**Please enter password less then 30 characters\",\r\n testingCredentials: true,\r\n verify: false,\r\n verified: true\r\n });\r\n \r\n }\r\n else{\r\n MSTeamsConfig[\"PasswordLengthExceeded\"] = false;\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n msgDetails: \"\",\r\n testingCredentials: false,\r\n verify: false,\r\n verified: true\r\n });\r\n }\r\n // set bool to 0 when only password/username form fields are updated; these fields are used as params in web service method that checks credential integrity\r\n MSTeamsConfig[\"IsPasswordSaved\"] = 0\r\n MSTeamsConfig[\"Password\"] = value\r\n }\r\n if (key == \"UserName\") {\r\n MSTeamsConfig[\"IsPasswordSaved\"] = 0\r\n MSTeamsConfig[\"UserName\"] = value\r\n }\r\n await this.setState({ MSTeamsConfig });\r\n //console.log(\"MSTeamsConfig\", MSTeamsConfig); // inserted AD Information\r\n }\r\n\r\n inputDataField = (val, key, onChangeFunc, readOnly = false, type = 'text') => {\r\n return (\r\n onChangeFunc(e, key)}\r\n disabled={readOnly}\r\n />\r\n )\r\n }\r\n\r\n dataRow = (label, field) => {\r\n return (\r\n
    \r\n {label} \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n verifyCredentials = async () => {\r\n let { testingCredentials, Enterprise, MSTeamsConfig } = this.state;\r\n await this.setState({ testingCredentials: true, Submission: false });\r\n let path = `admin/TestCredentialsRoutingForUser`;\r\n let dto = {\r\n UserName: sessionStorage.username,\r\n EnterpriseId: Enterprise,\r\n Usrn: MSTeamsConfig.UserName,//\"gopi@themountgreenteams.com\",\r\n Password: MSTeamsConfig.Password,//\"TheMountGreenTeams*1\",\r\n EnterpriseTrunkId: this.props.EnterpriseTrunkId,\r\n };\r\n // console.log(\"DTO\", dto);\r\n // console.log(\"checking config object\", MSTeamsConfig);\r\n\r\n let resp = await apiCalls.post(path, \"POST\", JSON.stringify(dto)).then(data => data).catch(err => console.error(err));\r\n if (resp.ok) {\r\n if (!resp.message.includes(\"Error\")) {\r\n await this.setState({\r\n Submission: true,\r\n submitError: false,\r\n msgDetails: \"Credentials Sucessfully Verified!\",\r\n testingCredentials: false,\r\n verify: true\r\n });\r\n } else {\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n msgDetails: \"Error in credential verification!\",\r\n testingCredentials: false,\r\n verify: false,\r\n verified: true\r\n });\r\n }\r\n }\r\n }\r\n\r\n checkDisabledBtn = () => {\r\n let { MSTeamsConfig, MSTeamsConfigCopy } = this.state;\r\n if(MSTeamsConfig.PasswordLengthExceeded)\r\n {\r\n return true\r\n }\r\n else{\r\n if (\r\n MSTeamsConfig.UserName == MSTeamsConfigCopy.UserName &&\r\n MSTeamsConfig.Password == MSTeamsConfigCopy.Password &&\r\n MSTeamsConfig.PstnPrimaryGateway == MSTeamsConfigCopy.PstnPrimaryGateway &&\r\n MSTeamsConfig.PstnSecondaryGateway == MSTeamsConfigCopy.PstnSecondaryGateway &&\r\n MSTeamsConfig.MsTeamsMaxConcurrentSessions == MSTeamsConfigCopy.MsTeamsMaxConcurrentSessions \r\n ) {\r\n return true\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n cardContent = () => {\r\n let { loading, MSTeamsConfig } = this.state;\r\n\r\n if (!loading) {\r\n if (MSTeamsConfig) {\r\n return (\r\n
    \r\n \r\n
    \r\n {this.msTrunkData()}\r\n
    \r\n \r\n Verify Credentials\r\n Continue\r\n
    \r\n {/* {this.wizardMsg()} */}\r\n {this.submissionMsg()}\r\n
    \r\n
    \r\n
    \r\n Support Notes\r\n

    The Deployment Wizard helps the Admin initiate the connection to the Microsoft 365 Tenant.\r\n

    Provide the User Name and Password credentials for the Microsoft 365 Tenant and click Save.\r\n

    Note: These credentials must have Admin access and PowerShell® command execution privileges to set up {this.state.routingType}.\r\n

    After the User Name and Password are Saved, click on the Verify Credentials button to test the credentials, and ensure that the Deployment Wizard is able to connect to the Microsoft 365 Tenant.\r\n

    Once the connection is verified, the user list is retrieved from the Microsoft 365 tenant within 15 minutes.\r\n

    When completed and the connection is verified, click Continue to move on to the next step.\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n } else {\r\n return (\r\n

    No Available Data

    \r\n )\r\n }\r\n } else {\r\n return \r\n }\r\n }\r\n\r\n selectTrunk = (val) => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n handleSubmit = async () => {\r\n await this.setState({ configSaving: true });\r\n let { Trunk, MSTeamsConfig } = this.state;\r\n let path = \"admin/UpdateMSTeamsConfig\";\r\n MSTeamsConfig.TrunkId = Trunk.TrunkId;\r\n MSTeamsConfig.IsPasswordSaved = 0;\r\n MSTeamsConfig.LoginName = sessionStorage.username; // added new KVP\r\n //console.log(\"DTO\", MSTeamsConfig);\r\n let resp = await apiCalls.post(path, \"POST\", JSON.stringify(MSTeamsConfig)).then(data => data).catch(err => console.error(err));\r\n if (resp.ok) {\r\n this.props.removeTabRedirectOnSave(false);\r\n if (!resp.message.includes(\"Error\")) {\r\n await this.setState({\r\n showConfirmationModal: false,\r\n Submission: true,\r\n submitError: false,\r\n msgDetails: \"Submission Sucess: Changes were processed!, Credentials Sucessfully Verified!\",\r\n testingCredentials: false,\r\n verify: true,\r\n });\r\n } else {\r\n await this.setState({\r\n showConfirmationModal: false,\r\n Submission: true,\r\n submitError: true,\r\n verified: false,\r\n msgDetails: \"Submission Success!\",\r\n verifyMsgDetails: \"Error in credential verification!\",\r\n testingCredentials: false,\r\n });\r\n }\r\n }\r\n\r\n if (!resp.message.includes(\"Error\")) {\r\n this.props.RefreshData();\r\n }\r\n this.setState({ configSaving: false });\r\n }\r\n\r\n submissionMsg = () => {\r\n if (this.state.Submission) {\r\n if (this.state.submitError && this.state.verified === false) {\r\n return
    {this.state.msgDetails}

    {this.state.verifyMsgDetails}
    \r\n }\r\n else if (this.state.submitError) {\r\n return {this.state.msgDetails}\r\n }\r\n else {\r\n return {this.state.msgDetails}\r\n }\r\n }\r\n if (this.state.testingCredentials) {\r\n return \r\n }\r\n };\r\n\r\n saveAndContinue = () => {\r\n //this.setState({ completed: true });\r\n this.props.Proceed(\"domain\");\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n Are you sure you want to save changes?\r\n \r\n \r\n
    \r\n {!this.state.configSaving ?
    \r\n \r\n \r\n \r\n \r\n
    : }\r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n );\r\n };\r\n}","export const sendErrorMessage = (apiResponse) => {\r\n let { Status, StatusDscription } = JSON.parse(JSON.parse(apiResponse));\r\n if (Status && StatusDscription !== undefined) {\r\n if (Status === \"Error\") {\r\n sessionStorage.setItem(\"MsTeamsStatusDscription\", StatusDscription);\r\n } else {\r\n sessionStorage.removeItem(\"MsTeamsStatusDscription\");\r\n }\r\n }\r\n};\r\n\r\nexport const convertToLocal = (dateTime) =>{\r\n var convertedLocalTime = new Date(dateTime);\r\n var hourOffset = convertedLocalTime.getTimezoneOffset()/60;\r\n convertedLocalTime.setHours(convertedLocalTime.getHours() + hourOffset);\r\n return convertedLocalTime;\r\n };","import * as React from 'react';\r\nimport { Component ,Fragment} from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport * as config from '../../requests/config';\r\nimport * as settings from '../../scripts/settings';\r\nimport * as helper from '../../scripts/helper';\r\nimport FlagIconFactory from 'react-flag-icon-css'\r\nimport { sendErrorMessage, convertToLocal } from './components/utility';\r\n//import FlagIcon from 'react-flag-icon-css'\r\n\r\nconst FlagIcon = FlagIconFactory(React, { useCssModules: false })\r\n\r\nexport default class MsTeamsUserMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n Enterprise: this.props.Enterprise,\r\n Trunk: this.props.Trunk,\r\n loading: false,\r\n Submission: false,\r\n submitError: false,\r\n UsersList: this.props.TeamsUsers,\r\n FullListings: this.props.TeamsUsers,\r\n MSTeamsConfig: this.props.MSTeamsConfig,\r\n showConfirmationModal: false,\r\n Sort: [{ field: \"UserId\", dir: \"desc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n routingType: this.props.routingType,\r\n gridHeight: (window.innerHeight - 180),\r\n modalAction: \"modify\",\r\n DomainList: this.props.DomainList != null ? JSON.parse(this.props.DomainList) : [],\r\n AccountSettings: {\r\n UserPrincipalName: \"\",\r\n Domain: \"\",\r\n JsonParameters: {\r\n NewDisplayName: \"\",\r\n NewDisplayNameSpecified: true,\r\n NewResourceAccountType: 1,\r\n NewResourceAccountTypeSpecified: false,\r\n NewPhoneNumber: \"\",\r\n NewPhoneNumberSpecified: false\r\n },\r\n AccountType: 0,\r\n DisplayName: \"\",\r\n },\r\n page: { skip: 0, take: 200 },\r\n pageSizeValue: 0\r\n };\r\n\r\n const giveStateData = this.giveStateData.bind(this);\r\n\r\n class ManageUserCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n let enterprise = giveStateData()[0];\r\n let trunk = giveStateData()[1];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n class UserLinkCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n selectUser = (service) => {\r\n settings.selectService(service.UserId, service.TelephoneNumber);\r\n }\r\n\r\n render() {\r\n let { TelephoneNumber } = this.props.dataItem;\r\n if (TelephoneNumber) {\r\n\r\n return (\r\n \r\n { this.selectUser(this.props.dataItem) }}\r\n >\r\n {TelephoneNumber}\r\n \r\n \r\n )\r\n } else {\r\n return \r\n }\r\n }\r\n }\r\n\r\n this.ManageUserCell = ManageUserCell;\r\n this.UserLinkCell = UserLinkCell;\r\n }\r\n\r\n giveStateData = () => {\r\n let { Enterprise, Trunk } = this.state;\r\n return [Enterprise, Trunk];\r\n }\r\n\r\n StatusCell = (props) => {\r\n let customClassName = \"\";\r\n\r\n if (props.dataItem.RoutingStatus === 3) {\r\n customClassName = \"dot dot-success\";\r\n }\r\n if (props.dataItem.RoutingStatus === 4) {\r\n customClassName = \"dot dot-error\";\r\n }\r\n if (props.dataItem.RoutingStatus === 2) {\r\n customClassName = \"dot dot-blue\";\r\n }\r\n if (props.dataItem.RoutingStatus === 1) {\r\n customClassName = \"dot dot-yellow\";\r\n }\r\n if (props.dataItem.RoutingStatus !== null && props.dataItem.RoutingStatus !== \"\") {\r\n return (\r\n \r\n \r\n \r\n )\r\n } else {\r\n return (\r\n \r\n )\r\n }\r\n };\r\n\r\n gridContent = () => {\r\n let { MSTeamsConfig, UsersList, Sort } = this.state;\r\n //if (!loading) {\r\n if (UsersList && UsersList.length > 0) {\r\n let columnWidth = '110px';\r\n let columnWidthSm = \"70px\";\r\n let size = \"lg\";\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 let code = props.dataItem.UsageLocation?.trim();\r\n if (code) {\r\n return ()\r\n }\r\n else {\r\n return ();\r\n\r\n }\r\n }\r\n } title={headerToolTip(\"Location\")} />\r\n \r\n \r\n \r\n {MSTeamsConfig.ConfigProcessCompleted ? : null}\r\n \r\n \r\n )\r\n } else {\r\n return

    No Available Data

    \r\n }\r\n }\r\n\r\n pageChange = (event) => {\r\n const targetEvent = event.page.take;\r\n if (targetEvent) {\r\n this.setState({\r\n page: event.page\r\n });\r\n }\r\n else {\r\n this.setState({\r\n page: { skip: 0, take: this.state.UsersList.length }\r\n });\r\n }\r\n };\r\n\r\n handleSortChange = (e) => {\r\n this.setState({\r\n UsersList: orderBy(this.state.UsersList, e.sort),\r\n Sort: e.sort\r\n });\r\n }\r\n\r\n handleFilterChange = async (event) => {\r\n await this.setState({\r\n filter: event.filter\r\n });\r\n }\r\n\r\n exportBtn = () => {\r\n if (this.state.UsersList.length > 0) {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n this.exportUsers()}>Export Users\r\n
    \r\n )\r\n } else return null;\r\n }\r\n\r\n exportUsers = () => {\r\n this.refs.downloadCsv.submit();\r\n this.refs.exportBtn.text = 'Downloading...';\r\n setTimeout(() => {\r\n this.refs.exportBtn.text = 'Export Users';\r\n }, 2000);\r\n }\r\n\r\n openAttachments = () => {\r\n this.refs.fileUploader.click();\r\n }\r\n\r\n addAttachment = async (event) => {\r\n let file = event.target.files[0];\r\n let reader = new FileReader();\r\n reader.addEventListener('loadend', () => {\r\n let body = reader.result.split(',')[1];\r\n let name = file.name;\r\n this.createAttachment(body, name);\r\n }, false);\r\n if (file) {\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n\r\n createAttachment = async (body, name, ticketId) => {\r\n let apiPath = 'admin/UploadMSTeamsUsers';\r\n let attachmentDTO = {\r\n TicketId: this.state.TicketId,\r\n AttachmentBody: body,\r\n FileName: name,\r\n };\r\n await this.setState({ attachmentSubmitted: true });\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(attachmentDTO)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n await this.setState({\r\n Submission: true,\r\n submitError: false,\r\n });\r\n } else {\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n });\r\n }\r\n }\r\n\r\n showStatusLegend = () => {\r\n return (
    \r\n
    {'-'} Provisioned
    \r\n
    {'-'} Provisioned - Incorrect Voice Policy
    \r\n
    {'-'} UnProvisioned With Valid Phone License\r\n
    {'-'} UnProvisioned Missing Valid Phone License\r\n
    )\r\n }\r\n\r\n uploadBtn = () => {\r\n return (\r\n
    \r\n
    \r\n {\r\n event.target.value = null;\r\n }}\r\n />\r\n this.openAttachments()}>Import Users\r\n
    \r\n
    )\r\n\r\n }\r\n\r\n submissionMsg = () => {\r\n if (this.state.Submission) {\r\n if (this.state.submitError) {\r\n return {this.state.errorMsg && this.state.errorMsg != \"\" ? this.state.errorMsg : \"Submission Failure: Changes were not processed!\"}\r\n } else {\r\n return Submission Sucess: Changes were processed!\r\n }\r\n }\r\n };\r\n\r\n manageModal = () => {\r\n let { DisplayName, UserPrincipalName, AccountType, Domain, ErrorMessage } = this.state.AccountSettings;\r\n let options = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n return (\r\n \r\n \r\n {this.state.modalAction[0].toUpperCase() + this.state.modalAction.substring(1)} Resource Account\r\n \r\n {this.state.modalAction === \"delete\" ? null : \r\n
    \r\n {this.dataRow(\"Display Name\", this.inputDataField(DisplayName, \"DisplayName\", this.handleInputChange))}\r\n
    \r\n {this.dataRow(\"Username\", this.usernameField(UserPrincipalName, Domain))}\r\n
    \r\n {this.dataRow(\"Resource Account Type\", this.selectField(AccountType, \"AccountType\", options()))}\r\n {/* {this.dataRow(\"Phone Number\", )} */}\r\n
    \r\n
    }\r\n \r\n
    \r\n {this.state.submittedTicket ? :
    \r\n \r\n \r\n \r\n \r\n
    }\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let AccountSettings = { ...this.state.AccountSettings };\r\n AccountSettings[key] = value;\r\n await this.setState({ AccountSettings });\r\n //console.log(\"AccountSettings\", AccountSettings); // inserted AD Information\r\n }\r\n\r\n dataRow = (label, field) => {\r\n return (\r\n
    \r\n {label} \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n inputDataField = (val, key, onChangeFunc, type = 'text') => {\r\n return (\r\n onChangeFunc(e, key)}\r\n />\r\n )\r\n }\r\n\r\n usernameField = (username, domain) => {\r\n let options = () => {\r\n if (this.state.DomainList && this.state.DomainList.length > 0) {\r\n console.log(\"ITEM\", this.state.DomainList)\r\n return this.state.DomainList.map(itm => {\r\n if (itm && itm.IsVerified) {\r\n return \r\n }\r\n })\r\n } else {\r\n return \r\n }\r\n }\r\n return (\r\n \r\n {this.inputDataField(username, \"UserPrincipalName\", this.handleInputChange)}\r\n {\" @ \"}\r\n {this.selectField(domain, \"Domain\", options())}\r\n \r\n )\r\n }\r\n\r\n\r\n selectField = (val, key, options) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n cardContent = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    { e.preventDefault() }}>\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.showStatusLegend()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.exportBtn()}

    {this.uploadBtn()}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {this.configurationLinks()}\r\n {this.btnGroup()}\r\n
    \r\n
    \r\n {this.manageModal()}\r\n
    {this.gridContent()}
    \r\n \r\n {this.submissionMsg()}\r\n
    \r\n );\r\n }\r\n\r\n btnGroup = () => {\r\n let btn = (description, action) => this.setState({ showConfirmationModal: true, modalAction: action })}>{description}\r\n return (\r\n
    \r\n {btn(\"Add Resource Account\", \"create\")}\r\n {/* {btn(\"Modify\", \"modify\")}\r\n {btn(\"Delete\", \"delete\")} */}\r\n
    \r\n )\r\n }\r\n\r\n \r\n configurationLinks = () => {\r\n let cc = \"https://admin.teams.microsoft.com/call-queues\";\r\n let aa = \"https://admin.teams.microsoft.com/auto-attendants\";\r\n let link = (name, link) => Configure your Teams {name} (opens in new tab)\r\n return (\r\n
    \r\n {link(\"Call Queues\", cc)}\r\n {link(\"Auto Attendants\", aa)}\r\n
    \r\n )\r\n }\r\n\r\n handleManageResourceAccount = async () => {\r\n await this.setState({ submittedTicket: true });\r\n let { loading, Trunk, Enterprise, AccountSettings, modalAction } = this.state;\r\n let path = \"admin/ModifyResourceAccount\"; //modify by default\r\n AccountSettings.Username = sessionStorage.username;\r\n AccountSettings.EnterpriseId = Enterprise;\r\n AccountSettings.TrunkName = Trunk.TrunkName;\r\n // let dto = {\r\n // UserName: sessionStorage.username,//\"prodnewsubsite@momentumtelecom.com\",\r\n // EnterpriseId: Enterprise,\r\n // TrunkName: Trunk.TrunkName,\r\n // UserPrincipalName: \"aa2@NamasteOnlineYogaStudio.onmicrosoft.com\",\r\n // JsonParameters: JSON.stringify({\r\n // \"NewDisplayName\": \"NamasteUpdated\",\r\n // \"NewDisplayNameSpecified\": true,\r\n // \"NewResourceAccountType\": 1,\r\n // \"NewResourceAccountTypeSpecified\": false,\r\n // \"NewPhoneNumber\": \"\",\r\n // \"NewPhoneNumberSpecified\": false\r\n // }),\r\n // };\r\n if (modalAction === \"create\") {\r\n // create functionality\r\n path = \"admin/CreateResourceAccount\";\r\n delete AccountSettings.JsonParameters;\r\n AccountSettings.UserPrincipalName += `@${AccountSettings.Domain}`;\r\n // AccountSettings.AccountType = 1;\r\n // AccountSettings.DisplayName = \"Namaste2\";\r\n }\r\n if (modalAction === \"delete\") {\r\n // delete functionality\r\n path = \"admin/DeleteResourceAccount\";\r\n delete AccountSettings.JsonParameters;\r\n // delete AccountSettings.DisplayName;\r\n // delete AccountSettings.AccountType;\r\n }\r\n let response = await apiCalls.post(path, \"POST\", JSON.stringify(AccountSettings)).then(data => data).catch(err => console.error(err));\r\n if (response) {\r\n this.props.removeTabRedirectOnSave(false);\r\n sendErrorMessage(response.message);\r\n // await this.setState({\r\n // submittedTicket: false,\r\n // });\r\n this.props.RefreshData();\r\n }\r\n console.log(\"DTO\", AccountSettings);\r\n console.log(\"PATH\", path);\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullListings;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'GivenName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'TelephoneNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'StreetAddress', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Surname', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'UserPrincipalName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'AccountType', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n this.delayedSearch(services);\r\n }\r\n else {\r\n this.delayedSearch(fullDetails);\r\n }\r\n }\r\n\r\n delayedSearch = async (services) => {\r\n await this.setState({ loading: true });\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.setState({ UsersList: services, loading: false });\r\n }, settings.searchDelay);\r\n }\r\n\r\n render() {\r\n return this.cardContent();\r\n };\r\n}","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { sendErrorMessage, convertToLocal } from './components/utility';\r\nimport * as apiCalls from '../../requests/api_calls';\r\n\r\nexport default class MsTeamsSetupDomain extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n Enterprise: this.props.Enterprise,\r\n loading: false,\r\n Submission: false,\r\n ErrorMessage: sessionStorage.MsTeamsStatusDscription ? sessionStorage.MsTeamsStatusDscription : \"\",\r\n MSTeamsConfig: this.props.MSTeamsConfig,\r\n Trunk: this.props.Trunk,\r\n PrimaryGateWay: this.props.PrimaryGateWay,\r\n SecondaryGateWay: this.props.SecondaryGateWay,\r\n routingType: this.props.routingType,\r\n };\r\n }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let MSTeamsConfig = { ...this.state.MSTeamsConfig };\r\n MSTeamsConfig[key] = value;\r\n await this.setState({ MSTeamsConfig });\r\n //console.log(\"MSTeamsConfig\", MSTeamsConfig); // inserted AD Information\r\n }\r\n\r\n inputDataField = (val, key, onChangeFunc, readOnly = false, type = 'text') => {\r\n return (\r\n onChangeFunc(e, key)}\r\n disabled={readOnly}\r\n />\r\n )\r\n }\r\n\r\n dataRow = (label, field) => {\r\n return (\r\n
    \r\n {label} \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n cardContent = () => {\r\n // SF TICKET 01056065 ***\r\n let { MSTeamsConfig, Enterprise, PrimaryGateWay, SecondaryGateWay, ErrorMessage, routingType } = this.state;\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    In this Deployment Step:

    \r\n

    The SBC Primary and Secondary FQDN domains will be added to the office 365/MS Teams Tenant for Derived Routing.

    \r\n\r\n \r\n
    \r\n {/* {this.dataRow(\"Primary FQDN:\", this.inputDataField(PrimaryGateWay, \"PstnPrimaryGateway\", this.handleInputChange, true))}\r\n {this.dataRow(\"Secondary FQDN:\", this.inputDataField(SecondaryGateWay, \"PstnSecondaryGateway\", this.handleInputChange, true))} */}\r\n {/* The following domains will be added to Office 365 to support Direct Routing\r\n Domain name 1: \r\n Domain name 2: \r\n Show Button Create Domain (only SHOW THIS BUTTON WHEN MICROSOFT 365 CONNECTION IS SET UP) */}\r\n {this.createDomainBtn()}\r\n Continue\r\n {this.wizardMsg()}\r\n {ErrorMessage !== \"\" ? Error: {ErrorMessage} : null}\r\n
    \r\n
    \r\n
    \r\n Support Notes\r\n

    In this step, the Deployment Wizard will set up the SBC Domains in the Teams Tenant for Derived Routing.\r\n

    Click on the Setup Domain Routing button to add the information to the Microsoft 365 Tenant. Once the green Doamin Created status notification appears (or after deployment is completed) the Admin may elect to click on the View Domain Information for the Derived Routing to review the setup information.\r\n

    When completed and verified, click Continue button to move on to the deployment step.\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n\r\n wizardMsg = () => {\r\n let { IsM365DomainCreated, DomainCreatedOn } = this.state.MSTeamsConfig;\r\n if (IsM365DomainCreated) {\r\n return

    Domain Created: {convertToLocal(DomainCreatedOn).toLocaleString()}
    \r\n } else return
    \r\n }\r\n\r\n saveAndContinue = () => {\r\n //this.setState({ completed: true });\r\n this.props.Proceed(\"dns\");\r\n }\r\n\r\n createDomainBtn = () => {\r\n let { DomainSetupResponse, IsM365DomainCreated, Password, UserName } = this.state.MSTeamsConfig;\r\n if (!IsM365DomainCreated) {\r\n if(UserName === \"\" || UserName === null || Password === \"\" || Password === null){\r\n return \r\n }\r\n else{\r\n return \r\n }\r\n } else {\r\n return \r\n }\r\n }\r\n\r\n createAzureDomain = async () => {\r\n let path = 'admin/CreateMSTeamsDomain';\r\n let { MSTeamsConfig, Trunk, Enterprise } = this.state;\r\n let dto = {\r\n userName: sessionStorage.username,//\"prodnewsubsite@momentumtelecom.com\",\r\n enterpriseId: Enterprise,\r\n trunkName: Trunk.TrunkName,\r\n };\r\n console.log(\"DTO\", dto);\r\n let response = await apiCalls.post(path, \"POST\", JSON.stringify(dto)).then(data => data).catch(err => console.error(err));\r\n if (response) {\r\n sendErrorMessage(response.message);\r\n this.props.RefreshData();\r\n }\r\n }\r\n\r\n formatDsRes = () => {\r\n let { DomainSetupResponse } = this.state.MSTeamsConfig;\r\n if (DomainSetupResponse) {\r\n let parsedResponse = JSON.parse(DomainSetupResponse);\r\n if (parsedResponse.Status && parsedResponse.Status === \"Error\") {\r\n return parsedResponse.StatusDscription;\r\n } else {\r\n return parsedResponse.map((itm, idx) => {\r\n return (\r\n
    \r\n
    Name: {itm.Name}
    \r\n
    Is Verified: {itm.IsVerified ? \"Yes\" : \"No\"}
    \r\n
    Is Default: {itm.IsDefault ? \"Yes\" : \"No\"}
    \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n } else return \"No domain setup response available\";\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n Setup Azure Domains?\r\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 Domain Information\r\n \r\n
    {this.formatDsRes()}
    \r\n {/*
    {this.state.MSTeamsConfig.DomainSetupResponse}
    */}\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n );\r\n };\r\n}","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Modal } from 'react-bootstrap';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport MsTeamsConfig from './msteams_config';\r\nimport { convertToLocal } from './components/utility';\r\n\r\n\r\nexport default class MsTeamsDNS extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n Enterprise: this.props.Enterprise,\r\n loading: true,\r\n Submission: false,\r\n submitError: false,\r\n MSTeamsConfig: this.props.MSTeamsConfig,\r\n Ticket: null,\r\n CustomerName: this.props.CustomerName,\r\n PrimaryGateWay: this.props.PrimaryGateWay,\r\n SecondaryGateWay: this.props.SecondaryGateWay,\r\n routingType: this.props.routingType,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.MSTeamsConfig.IsDNSTicketCreated) {\r\n this.getSubmittedTicket();\r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n getSubmittedTicket = async () => {\r\n await this.setState({ loading: true });\r\n let { DNSTicketID } = this.state.MSTeamsConfig;\r\n let path = `admin/GetMSTeamsTicket?TicketId=${DNSTicketID}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n this.setState({\r\n loading: false,\r\n Ticket: data,\r\n });\r\n } else {\r\n this.setState({\r\n loading: false,\r\n Ticket: null,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let MSTeamsConfig = { ...this.state.MSTeamsConfig };\r\n MSTeamsConfig[key] = value;\r\n await this.setState({ MSTeamsConfig });\r\n //console.log(\"MSTeamsConfig\", MSTeamsConfig); // inserted AD Information\r\n }\r\n\r\n inputDataField = (val, key, onChangeFunc, readOnly = false, type = 'text') => {\r\n return (\r\n onChangeFunc(e, key)}\r\n disabled={readOnly}\r\n />\r\n )\r\n }\r\n\r\n dataRow = (label, field) => {\r\n return (\r\n
    \r\n {label} \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n cardContent = () => {\r\n let { loading, MSTeamsConfig, Ticket } = this.state;\r\n if (!loading) {\r\n let { IsDNSTicketCreated, DNSTicketID, DomainSetupResponse } = MSTeamsConfig;\r\n let createdTicketID = !IsDNSTicketCreated ? \"\" : Ticket!= null ? Ticket.TicketNumber:\"\";\r\n let createdOn = !IsDNSTicketCreated ? \"\" : Ticket!= null ?convertToLocal(Ticket.CreatedDate).toLocaleString():\"\";\r\n let status = !IsDNSTicketCreated ? \"No open ticket\" : Ticket!= null ?Ticket.Status:\"\";\r\n let dnsTicketData = !IsDNSTicketCreated ? \"\" : this.parseDomainSetupResponse();\r\n return (\r\n
    \r\n {/*

    The following represents the request to add DNS records to mymtm.us zone

    */}\r\n \r\n
    \r\n {this.dataRow(\"DNS Ticket ID:\", this.inputDataField(createdTicketID, null, null, true))}\r\n {this.dataRow(\"DNS Ticket Created On:\", this.inputDataField(createdOn, null, null, true))}\r\n {this.dataRow(\"Ticket Status:\", this.inputDataField(status, null, null, true))}\r\n {/* {this.dataRow(\"\", )} */}\r\n {/* {this.dnsBtns()} */}\r\n this.setState({ showConfirmationModal: true })}\r\n disabled={MSTeamsConfig.IsM365DomainCreated == false ? true : false || MSTeamsConfig.IsDNSTicketCompleted ? true : false}\r\n >Create Ticket\r\n Continue\r\n {this.wizardMsg()}\r\n
    \r\n
    \r\n
    \r\n Support Notes\r\n

    In this step, the Deployment Wizard will submit a ticket to the support team containing information, previously collected, requesting an update of DNS entries for the connection to Microsoft 365 Tenant and the provider network.\r\n

    Click the Create Ticket button to submit the setup request to Support.\r\n

    Note the DNS Ticket ID when it is created.\r\n
    The Ticket Status field will update to indicate progress.
    \r\n
    Once Ticket Status = Closed and the green DNS Ticket Completed confirmation with time-stamp displays at the button of the tab, click the Continue button to move to the next deployment step.\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n } else {\r\n return
    \r\n \r\n
    \r\n }\r\n }\r\n\r\n wizardMsg = () => {\r\n if (this.state.Ticket && this.state.Ticket !== null) {\r\n let { IsDNSTicketCreated, IsDNSTicketCompleted } = this.state.MSTeamsConfig;\r\n let { CreatedDate, ClosedDate } = this.state.Ticket;\r\n if (IsDNSTicketCreated && !IsDNSTicketCompleted) {\r\n return

    DNS Ticket Created: {convertToLocal(CreatedDate).toLocaleString()}
    \r\n }\r\n if (IsDNSTicketCreated && IsDNSTicketCompleted) {\r\n return

    \r\n DNS Ticket Created: {convertToLocal(CreatedDate).toLocaleString()}
    \r\n DNS Ticket Completed: {convertToLocal(ClosedDate).toLocaleString()}\r\n
    \r\n }\r\n }\r\n }\r\n\r\n formatDateTime = (dateTime) => {\r\n try {\r\n let date = new Date(dateTime);\r\n if (date instanceof Date) {\r\n let time = date.getTime();\r\n let today = new Date(time);\r\n return `${today.toString()}`;\r\n }\r\n } catch (e) {\r\n return \"\";\r\n }\r\n }\r\n\r\n parseDomainSetupResponse = () => {\r\n let { DomainSetupResponse } = this.state.MSTeamsConfig;\r\n\r\n if (DomainSetupResponse && DomainSetupResponse !== null) {\r\n let parsedArr = JSON.parse(DomainSetupResponse);\r\n if (parsedArr[0].Name.includes(\"PHL\") || parsedArr[0].Name.includes(\"phl\")) {\r\n parsedArr = parsedArr.reverse();\r\n }\r\n let dnsString = `Please add the following A and TXT DNS records to the mymtm.us zone:\\n\\nA record ${parsedArr[0].Name}\\nIP 208.67.12.84\\n\\nTXT name: ${parsedArr[0].Name}\\nTXT value: ${parsedArr[0].domainDnsTxtRecord !== null && parsedArr[0].domainDnsTxtRecord.Text ? parsedArr[0].domainDnsTxtRecord.Text : \"null\"}\\nTTL: ${parsedArr[0].domainDnsTxtRecord !== null && parsedArr[0].domainDnsTxtRecord.Ttl ? parsedArr[0].domainDnsTxtRecord.Ttl : \"null\"} or your provider default.\\n\\nA record ${parsedArr[1].Name}\\nIP 162.244.97.84\\n\\nTXT name: ${parsedArr[1].Name}\\nTXT value: ${parsedArr[0].domainDnsTxtRecord !== null && parsedArr[1].domainDnsTxtRecord.Text ? parsedArr[1].domainDnsTxtRecord.Text : \"null\"}\\nTTL: ${parsedArr[0].domainDnsTxtRecord !== null && parsedArr[1].domainDnsTxtRecord.Ttl ? parsedArr[1].domainDnsTxtRecord.Ttl : \"null\"} or your provider default.`;\r\n return dnsString\r\n } else return \"\";\r\n }\r\n\r\n submitNewTicket = async () => {\r\n await this.setState({ submittedTicket: true });\r\n let apiPath = 'admin/CreateMSTeamsTicket?type=dns';\r\n let ticketDTO = {\r\n LocationAccountNumber: null,\r\n Subject: `Add DNS record to mymtm.us – ${this.state.CustomerName}`,\r\n Description: this.parseDomainSetupResponse(),\r\n Department: \"Systems Engineering\",\r\n Category: null,\r\n SubCategory: null,\r\n OtherCategory: null,\r\n Priority: \"Minor\",\r\n ContactId: \"0030h00002j2iej\", // DATA ADMIN //\"0030h00002UpuW5\", // James\r\n PreferredCommunication: \"\",\r\n };\r\n //console.log(\"TICKET DTO\", ticketDTO);\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(ticketDTO)).then(res => res).catch(err => console.error(err));\r\n if (response) {\r\n this.props.RefreshData();\r\n }\r\n }\r\n\r\n saveAndContinue = () => {\r\n //this.setState({ completed: true });\r\n this.props.Proceed(\"temp\");\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Submit DNS ticket?\r\n \r\n \r\n
    \r\n {this.state.submittedTicket ? :
    \r\n \r\n \r\n \r\n \r\n
    }\r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n
    \r\n );\r\n };\r\n}","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Modal } from 'react-bootstrap';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport { convertToLocal } from './components/utility';\r\nexport default class MsTeamsSBC extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n Enterprise: this.props.Enterprise,\r\n loading: true,\r\n Submission: false,\r\n submitError: false,\r\n MSTeamsConfig: this.props.MSTeamsConfig,\r\n Ticket: null,\r\n CustomerName: this.props.CustomerName,\r\n PrimaryGateWay: this.props.PrimaryGateWay,\r\n SecondaryGateWay: this.props.SecondaryGateWay,\r\n routingType: this.props.routingType,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.MSTeamsConfig.IsSBCTicketCreated) {\r\n this.getSubmittedTicket();\r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n getSubmittedTicket = async () => {\r\n await this.setState({ loading: true });\r\n let { SBCTicketID } = this.state.MSTeamsConfig;\r\n let path = `admin/GetMSTeamsTicket?TicketId=${SBCTicketID}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n this.setState({\r\n loading: false,\r\n Ticket: data,\r\n });\r\n } else {\r\n this.setState({\r\n loading: false,\r\n Ticket: null,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let MSTeamsConfig = { ...this.state.MSTeamsConfig };\r\n MSTeamsConfig[key] = value;\r\n await this.setState({ MSTeamsConfig });\r\n //console.log(\"MSTeamsConfig\", MSTeamsConfig); // inserted AD Information\r\n }\r\n\r\n inputDataField = (val, key, onChangeFunc, readOnly = false, type = 'text') => {\r\n return (\r\n onChangeFunc(e, key)}\r\n disabled={readOnly}\r\n />\r\n )\r\n }\r\n\r\n dataRow = (label, field) => {\r\n return (\r\n
    \r\n {label} \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n cardContent = () => {\r\n let { loading, MSTeamsConfig, Ticket } = this.state;\r\n if (!loading) {\r\n let { IsSBCTicketCreated, SBCTicketID, IsSBCTicketCompleted, SBCTicketCompletedOn } = MSTeamsConfig;\r\n let createdTicketID = !IsSBCTicketCreated ? \"\" : Ticket!= null ? Ticket.TicketNumber:\"\";\r\n let createdOn = !IsSBCTicketCreated ? \"\" : Ticket!= null ?convertToLocal(Ticket.CreatedDate).toLocaleString():\"\";\r\n let status = !IsSBCTicketCreated ? \"No open ticket\" : Ticket!= null ?Ticket.Status:\"\";\r\n let sbcTicketData = !IsSBCTicketCreated ? \"\" : `RPX Account Number: ${this.state.Enterprise}\\nCustomer Name: ${this.state.CustomerName}, LLC\\nRPX Switch Name: ${this.state.MSTeamsConfig.Switch}\\n\\nFQDNs: ${this.state.PrimaryGateWay} and ${this.state.SecondaryGateWay}`;\r\n return (\r\n
    \r\n

    The following represents the request to add MS Teams SBC functionality

    \r\n \r\n
    \r\n {this.dataRow(\"SBC Ticket ID:\", this.inputDataField(createdTicketID, null, null, true))}\r\n {this.dataRow(\"SBC Ticket Created On:\", this.inputDataField(createdOn, null, null, true))}\r\n {this.dataRow(\"Ticket Status:\", this.inputDataField(status, null, null, true))}\r\n {this.dataRow(\"\", )}\r\n {/* {this.sbcBtns()} */}\r\n this.setState({ showConfirmationModal: true })}\r\n disabled={MSTeamsConfig.IsDNSTicketCompleted == false ? true : false || IsSBCTicketCompleted ? true : false}\r\n >Create Ticket\r\n Continue\r\n {this.wizardMsg()}\r\n
    \r\n
    \r\n
    \r\n Support Notes\r\n

    In this step, the Deployment Wizard helps the Admin create and submit a properly formatted ticket to the Support Team requesting set up of routes in the SBC that will handle calls between the Microsoft Teams Tenant and the Network.\r\n

    Click the Create Ticket button to submit the SBC Setup request to Support.\r\n

    When completed and confirmation displays, click Continue to move on to the next step.\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n } else {\r\n return
    \r\n \r\n
    \r\n }\r\n }\r\n\r\n wizardMsg = () => {\r\n if (this.state.Ticket && this.state.Ticket !== null) {\r\n let { IsSBCTicketCreated, IsSBCTicketCompleted } = this.state.MSTeamsConfig;\r\n let { CreatedDate, ClosedDate } = this.state.Ticket;\r\n if (IsSBCTicketCreated && !IsSBCTicketCompleted) {\r\n return

    SBC Ticket Created: {convertToLocal(CreatedDate).toLocaleString()}
    \r\n }\r\n if (IsSBCTicketCreated && IsSBCTicketCompleted) {\r\n return

    \r\n SBC Ticket Created: {convertToLocal(CreatedDate).toLocaleString()}
    \r\n SBC Ticket Completed: {convertToLocal(ClosedDate).toLocaleString()}\r\n
    \r\n }\r\n }\r\n }\r\n\r\n formatDateTime = (dateTime) => {\r\n try {\r\n let date = new Date(dateTime);\r\n if (date instanceof Date) {\r\n let time = date.getTime();\r\n let today = new Date(time);\r\n return `${today.toString()}`;\r\n }\r\n } catch (e) {\r\n return \"\";\r\n }\r\n }\r\n\r\n submitNewTicket = async () => {\r\n await this.setState({ submittedTicket: true });\r\n let apiPath = 'admin/CreateMSTeamsTicket?type=sbc';\r\n let ticketDTO = {\r\n //AccountId: \"0010h00001XhZxcAAF\",\r\n LocationAccountNumber: null,\r\n Subject: `Please add MS Teams SBC functionality for ${this.state.CustomerName} - ${this.state.Enterprise}`,\r\n Description: `RPX Account Number: ${this.state.Enterprise}\\nCustomer Name: ${this.state.CustomerName}, LLC\\nRPX Switch Name: ${this.state.MSTeamsConfig.Switch}\\n\\nFQDNs: ${this.state.PrimaryGateWay} and ${this.state.SecondaryGateWay}`,\r\n Department: \"Voice Operations\",\r\n Category: null,\r\n SubCategory: null,\r\n OtherCategory: null,\r\n Priority: \"Minor\",\r\n ContactId: \"0030h00002j2iej\", // DATA ADMIN //\"0030h00002UpuW5\", // James\r\n PreferredCommunication: \"\",\r\n };\r\n console.log(\"TICKET DTO\", ticketDTO);\r\n\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(ticketDTO)).then(res => res).catch(err => console.error(err));\r\n if (response) {\r\n this.props.RefreshData();\r\n }\r\n }\r\n\r\n saveAndContinue = () => {\r\n //this.setState({ completed: true });\r\n this.props.Proceed(\"dr\");\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Submit SBC ticket?\r\n \r\n \r\n
    \r\n {this.state.submittedTicket ? :
    \r\n \r\n \r\n \r\n \r\n
    }\r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n
    \r\n );\r\n };\r\n}","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { sendErrorMessage, convertToLocal } from './components/utility';\r\nimport * as apiCalls from '../../requests/api_calls';\r\n\r\nexport default class MsTeamsTempUsers extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n\r\n this.state = {\r\n Enterprise: this.props.Enterprise,\r\n MSTeamsConfig: this.props.MSTeamsConfig,\r\n Trunk: this.props.Trunk,\r\n loading: false,\r\n Submission: false,\r\n ErrorMessage: sessionStorage.MsTeamsStatusDscription ? sessionStorage.MsTeamsStatusDscription : \"\",\r\n LicenseType: \"\",\r\n PrimaryGateWay: this.props.PrimaryGateWay,\r\n SecondaryGateWay: this.props.SecondaryGateWay,\r\n routingType: this.props.routingType,\r\n licenses: \"\"\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getLicensType();\r\n }\r\n getLicensType = async () => {\r\n\r\n await this.setState({ loading: true });\r\n\r\n let path = `admin/MsTeamLicense`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n this.setState({\r\n loading: false,\r\n licenses: data,\r\n });\r\n } else {\r\n this.setState({\r\n loading: false,\r\n licenses: null,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let MSTeamsConfig = { ...this.state.MSTeamsConfig };\r\n MSTeamsConfig[key] = value;\r\n await this.setState({ MSTeamsConfig });\r\n //console.log(\"MSTeamsConfig\", MSTeamsConfig); // inserted AD Information\r\n }\r\n\r\n inputDataField = (val, key, onChangeFunc, readOnly = false, type = 'text') => {\r\n return (\r\n onChangeFunc(e, key)}\r\n disabled={readOnly}\r\n />\r\n )\r\n }\r\n\r\n selectLicenseType = (val) => {\r\n // params? (val, key, options = [], readOnly = false)\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n dataRow = (label, field) => {\r\n return (\r\n
    \r\n {label} \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n cardContent = () => {\r\n //IsM365DomainCreated=1\r\n // IsDNSTicketCompleted=1\r\n // Show Message: \r\n // tempuser1@308766235-ATL01.completeuc.com\r\n // tempuser1@308766235-PHL01.completeuc.com\r\n // In a drop down for license, Show SKU for E1, E3, E5 and user will select one. (Add note: Please verify license exists in Microsoft 365)\r\n // On Save. Call MS Teams API\r\n // show Save and Save and Continue as Enabled only when (IsM365DomainCreated=1 && IsDNSTicketCompleted=1)\r\n let { Enterprise, LicenseType, ErrorMessage, MSTeamsConfig } = this.state;\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    This step creates Microsoft Teams Temp User 1 and Temp User 2 using the License Type selected.

    \r\n \r\n
    \r\n {/* {this.dataRow(\"Temp User 1:\", this.inputDataField(MSTeamsConfig.TempUser1, null, this.handleInputChange, true))}\r\n {this.dataRow(\"Temp User 2:\", this.inputDataField(MSTeamsConfig.TempUser2, null, this.handleInputChange, true))}\r\n */}\r\n {this.dataRow(\"License Type:\", this.selectLicenseType(LicenseType))}\r\n
    \r\n {/* this.setState({ showVerifyDomainModal: true })}\r\n //disabled={this.state.MSTeamsConfig.IsTempUsersCreated ? true : false}\r\n >RELOAD */}\r\n { this.setState({ showConfirmationModal: true }) }}\r\n disabled={this.state.MSTeamsConfig.IsTempUserCreatedWithin24Hrs == false &&\r\n this.state.MSTeamsConfig.IsDNSTicketCreated == true &&\r\n this.state.MSTeamsConfig.IsDNSTicketCompleted == true &&\r\n this.state.MSTeamsConfig.IsSBCTicketCreated == true &&\r\n this.state.MSTeamsConfig.IsSBCTicketCompleted == true ? false : true}\r\n >Create Temporary Users\r\n Continue\r\n
    \r\n {this.wizardMsg()}\r\n {ErrorMessage !== \"\" ? Error: {ErrorMessage} : null}\r\n
    \r\n
    \r\n
    \r\n Support Notes\r\n

    In this step, the Deployment Wizard allows the Admin to select the appropriate license type and create Temporary users (as shown in the Temp User 1 and 2 fields) within Microsoft 365 to validate the domain configuration setup.\r\n

    Select the License Type from the drop-down list of options.\r\n

    Click on the Create Temporary Users button.\r\n

    Please wait for 24 business hours to allow Microsoft 365 to replicate the domains across their systems.\r\n

    When completed (and after 24 business hours have elapsed to provide time for propagation through the Microsoft system), click Continue to move on to the next step.\r\n

    Note: A Microsoft 365 Tenant Admin can remove these temporary test users in the Microsoft 365 portal after the {this.state.routingType} setup is completed and it has been verified that it is working.\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n\r\n wizardMsg = () => {\r\n let { IsTempUsersCreated, TempUsersCreatedOn } = this.state.MSTeamsConfig;\r\n if (IsTempUsersCreated) {\r\n return

    \r\n WAIT 24 HOURS FOR REPLICATION ACROSS THE SYSTEM
    \r\n {this.getTimeAfter24Hrs(TempUsersCreatedOn)}
    \r\n Temporary Users Created: {convertToLocal(TempUsersCreatedOn).toLocaleString()}
    \r\n
    \r\n } else return
    \r\n }\r\n\r\n\r\n getTimeAfter24Hrs = (dateTime) => {\r\n try {\r\n let date = convertToLocal(dateTime);\r\n if (date instanceof Date) {\r\n let time = date.getTime();\r\n let tomorrow = new Date(time + 24 * 60 * 60 * 1000);\r\n return `${tomorrow.toLocaleString()}`;\r\n }\r\n } catch (e) {\r\n return \"\";\r\n }\r\n }\r\n\r\n verifyAzureDomains = () => {\r\n let path = 'admin/VerifyAzureDomains';\r\n let { MSTeamsConfig, Trunk, Enterprise } = this.state;\r\n let dto = {\r\n userName: sessionStorage.username,//\"prodnewsubsite@momentumtelecom.com\",\r\n enterpriseId: Enterprise,\r\n trunkName: Trunk.TrunkName,\r\n };\r\n\r\n // let response = await apiCalls.post(path, \"POST\", JSON.stringify(dto)).then(data => data).catch(err => console.error(err));\r\n // if (response.ok) {\r\n // }\r\n this.props.RefreshData();\r\n }\r\n\r\n createTempUsers = async () => {\r\n await this.setState({ submittedTicket: true });\r\n let path = 'admin/CreateMsTeamsTempUsers';\r\n let { MSTeamsConfig, Trunk, Enterprise, LicenseType } = this.state;\r\n let dto = {\r\n userName: sessionStorage.username,//\"prodnewsubsite@momentumtelecom.com\",\r\n enterpriseId: Enterprise,\r\n trunkName: Trunk.TrunkName,\r\n LicenseType,\r\n };\r\n\r\n let response = await apiCalls.post(path, \"POST\", JSON.stringify(dto)).then(data => data).catch(err => console.error(err));\r\n if (response) {\r\n sendErrorMessage(response.message);\r\n this.props.RefreshData();\r\n }\r\n }\r\n\r\n saveAndContinue = () => {\r\n if (!this.state.MSTeamsConfig.IsTempUserCreatedWithin24Hrs) {\r\n this.setState({ completed: true });\r\n this.props.Proceed(\"dr\");\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n Verify Azure Domains?\r\n \r\n \r\n
    \r\n {this.state.submittedTicket ? :
    \r\n \r\n \r\n \r\n \r\n
    }\r\n
    \r\n
    \r\n \r\n \r\n Create Temp Users?\r\n \r\n \r\n
    \r\n {this.state.submittedTicket ? :
    \r\n \r\n \r\n \r\n \r\n
    }\r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n );\r\n };\r\n}","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { sendErrorMessage, convertToLocal } from './components/utility';\r\nimport * as apiCalls from '../../requests/api_calls';\r\n\r\nexport default class MsTeamsDirectRouting extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n Enterprise: this.props.Enterprise,\r\n loading: false,\r\n Submission: false,\r\n ErrorMessage: sessionStorage.MsTeamsStatusDscription ? sessionStorage.MsTeamsStatusDscription : \"\",\r\n Trunk: this.props.Trunk,\r\n MSTeamsConfig: this.props.MSTeamsConfig,\r\n PrimaryGateWay: this.props.PrimaryGateWay,\r\n SecondaryGateWay: this.props.SecondaryGateWay,\r\n routingType: this.props.routingType,\r\n };\r\n }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let MSTeamsConfig = { ...this.state.MSTeamsConfig };\r\n MSTeamsConfig[key] = value;\r\n await this.setState({ MSTeamsConfig });\r\n //console.log(\"MSTeamsConfig\", MSTeamsConfig); // inserted AD Information\r\n }\r\n\r\n inputDataField = (val, key, onChangeFunc, readOnly = false, type = 'text') => {\r\n return (\r\n onChangeFunc(e, key)}\r\n disabled={readOnly}\r\n />\r\n )\r\n }\r\n\r\n dataRow = (label, field) => {\r\n return (\r\n
    \r\n {label} \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n cardContent = () => {\r\n let { Enterprise, MSTeamsConfig, PrimaryGateWay, SecondaryGateWay, ErrorMessage } = this.state;\r\n let sessions = MSTeamsConfig.MsTeamsMaxConcurrentSessions ? MSTeamsConfig.MsTeamsMaxConcurrentSessions : 1000\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Submit the request to setup and enable Derived Routing.

    \r\n \r\n
    \r\n {/* {this.dataRow(\"Primary FQDN\", this.inputDataField(PrimaryGateWay, \"PstnPrimaryGateway\", this.handleInputChange, true))}\r\n {this.dataRow(\"Secondary FQDN\", this.inputDataField(SecondaryGateWay, \"PstnSecondaryGateway\", this.handleInputChange, true))}\r\n {this.dataRow(\"Max Concurrent Sessions\", this.inputDataField(sessions, \"MsTeamsMaxConcurrentSessions\", this.handleInputChange, true))} */}\r\n this.setState({ showConfirmationModal: true })}\r\n disabled={this.state.MSTeamsConfig.IsTempUsersCreated == false ? true : false || this.state.MSTeamsConfig.DirectRouting ? true: false}\r\n >Setup {this.state.routingType}\r\n Continue\r\n {this.wizardMsg()}\r\n {ErrorMessage !== \"\" ? Error: {ErrorMessage} : null}\r\n
    \r\n
    \r\n
    \r\n Support Notes\r\n

    In this step, the Deployment Wizard will enable Derived routing of voice traffic between the Microsoft Teams Tenant and the Voice Network. The fields in the tab are predefined and read-only.\r\n

    Click on the Setup Derived Routing button.\r\n

    Wait 24 hours for this process to be completed.\r\n

    Once this step is complete, Derived routing and TN assignments may be setup for the individual Teams users already added and assigned licenses in the Microsoft Teams Tenant.\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n\r\n wizardMsg = () => {\r\n let { DirectRouting, DirectRoutingTimeStamp } = this.state.MSTeamsConfig;\r\n if (DirectRouting) {\r\n return

    WAIT 24 HOURS FOR REPLICATION ACROSS THE SYSTEM
    \r\n {/* {this.getTimeAfter24Hrs(convertToLocal(DirectRoutingTimeStamp)).toLocaleString()}
    */}\r\n {this.state.routingType} Setup: {convertToLocal(DirectRoutingTimeStamp).toLocaleString()}\r\n
    \r\n } else return
    \r\n }\r\n\r\n getTimeAfter24Hrs = (date) => {\r\n try {\r\n //let date = new Date(dateTime);\r\n if (date instanceof Date) {\r\n let time = date.getTime();\r\n let tomorrow = new Date(time + 24 * 60 * 60 * 1000);\r\n return tomorrow;\r\n }\r\n } catch (e) {\r\n return \"\";\r\n }\r\n }\r\n\r\n setDirectRouting = async () => {\r\n await this.setState({ submittedTicket: true });\r\n let path = 'admin/EnterpriseMsTeamsDirectRouting';\r\n let { MSTeamsConfig, Trunk, Enterprise } = this.state;\r\n let dto = {\r\n userName: sessionStorage.username,//\"prodnewsubsite@momentumtelecom.com\",\r\n enterpriseId: Enterprise,\r\n trunkName: Trunk.TrunkName,\r\n returnOnlyTeamsDomains: true,\r\n };\r\n console.log(\"DTO\", dto);\r\n let response = await apiCalls.post(path, \"POST\", JSON.stringify(dto)).then(data => data).catch(err => console.error(err));\r\n if (response) {\r\n sendErrorMessage(response.message);\r\n this.props.RefreshData();\r\n }\r\n }\r\n\r\n saveAndContinue = () => {\r\n //this.setState({ completed: true });\r\n this.props.Proceed(\"data\");\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n Setup {this.state.routingType} for this Enterprise?\r\n \r\n \r\n
    \r\n {this.state.submittedTicket ? :
    \r\n \r\n \r\n \r\n \r\n
    }\r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n );\r\n };\r\n}","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { sendErrorMessage, convertToLocal } from './components/utility';\r\nimport * as apiCalls from '../../requests/api_calls';\r\n\r\nexport default class MigrationTab extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n Enterprise: this.props.Enterprise,\r\n loading: false,\r\n ErrorMessage: sessionStorage.MsTeamsStatusDscription ? sessionStorage.MsTeamsStatusDscription : \"\",\r\n MSTeamsConfig: this.props.MSTeamsConfig,\r\n routingType: this.props.routingType,\r\n CheckStatus: this.props.CheckStatus,\r\n };\r\n }\r\n\r\n // componentDidMount() {\r\n // this.fetchStatus();\r\n // }\r\n\r\n // fetchStatus = async () => {\r\n // let path = \"admin/IsReadyForDerivedRoutingMigration\";\r\n // await apiCalls.fetchData(path).then((data) => {\r\n // this.setState({\r\n // migrationStatus: data && data == 1 ? true : false,\r\n // });\r\n // }).catch(err => console.error(err));\r\n // }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let MSTeamsConfig = { ...this.state.MSTeamsConfig };\r\n MSTeamsConfig[key] = value;\r\n await this.setState({ MSTeamsConfig });\r\n //console.log(\"MSTeamsConfig\", MSTeamsConfig); // inserted AD Information\r\n }\r\n\r\n inputDataField = (val, key, onChangeFunc, readOnly = false, type = 'text') => {\r\n return (\r\n onChangeFunc(e, key)}\r\n disabled={readOnly}\r\n />\r\n )\r\n }\r\n\r\n dataRow = (label, field) => {\r\n return (\r\n
    \r\n {label} \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n cardContent = () => {\r\n let { MSTeamsConfig, ErrorMessage } = this.state;\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Submit the request to migrate and enable Derived Routing.

    \r\n \r\n
    \r\n {this.migrationBtn()}\r\n {this.wizardMsg()}\r\n {ErrorMessage !== \"\" ? Error: {ErrorMessage} : null}\r\n
    \r\n
    \r\n
    \r\n Support Notes\r\n

    Click the Start Migration Button to start migration of direct routing to derived routing.\r\n

    This process will take up to 30 minutes to complete.\r\n

    Commands needed to run in Microsoft environment for this migration, can be executed while this step is being processed.\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n\r\n migrationBtn = () => {\r\n let { MigrationUpdatedOn, DerivedRoutingMigrationStatus, DerivedRoutingMigrationNotes } = this.state.MSTeamsConfig;\r\n if (DerivedRoutingMigrationStatus && DerivedRoutingMigrationStatus != \"None\") {\r\n return (\r\n Check Status\r\n )\r\n } else {\r\n return (\r\n this.setState({ showConfirmationModal: true })}\r\n disabled={DerivedRoutingMigrationStatus && DerivedRoutingMigrationStatus == \"None\" ? false : true}\r\n >Start Migration\r\n )\r\n }\r\n }\r\n\r\n wizardMsg = () => {\r\n let { CheckStatus } = this.state;\r\n let { MigrationUpdatedOn, DerivedRoutingMigrationStatus, DerivedRoutingMigrationNotes } = this.state.MSTeamsConfig;\r\n //if (DerivedRoutingMigrationStatus && (DerivedRoutingMigrationStatus != \"\" || DerivedRoutingMigrationStatus != null || DerivedRoutingMigrationStatus != undefined)) {\r\n if (CheckStatus) {\r\n return

    \r\n {DerivedRoutingMigrationStatus}
    \r\n {DerivedRoutingMigrationNotes}
    \r\n Updated On: {convertToLocal(MigrationUpdatedOn).toLocaleString()}\r\n
    \r\n } else return
    \r\n }\r\n\r\n migrateToDerivedRouting = async () => {\r\n await this.setState({ submittedTicket: true });\r\n let path = 'admin/StartRPXDerivedRoutingMigration';\r\n // let { MSTeamsConfig, Trunk, Enterprise } = this.state;\r\n // let dto = {\r\n // userName: sessionStorage.username,//\"prodnewsubsite@momentumtelecom.com\",\r\n // enterpriseId: Enterprise,\r\n // trunkName: Trunk.TrunkName,\r\n // returnOnlyTeamsDomains: true,\r\n // };\r\n // console.log(\"DTO\", dto);\r\n let response = await apiCalls.post(path, \"POST\", null).then(data => data).catch(err => console.error(err));\r\n if (response) {\r\n sendErrorMessage(response.message);\r\n this.props.RefreshData();\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n Start migration process for this Enterprise?\r\n \r\n \r\n
    \r\n {this.state.submittedTicket ? :
    \r\n \r\n \r\n \r\n \r\n
    }\r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n );\r\n };\r\n}","import React, { Component } from 'react';\r\nimport * as settings from '../../../scripts/settings';\r\nimport * as helper from '../../../scripts/helper';\r\nimport moment from 'moment';\r\nimport * as icons from '../../../scripts/icons';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { withRouter, Link } from 'react-router-dom';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { ComboBox } from '@progress/kendo-react-dropdowns';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\n\r\nexport default class TNSearch extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n searchTerm: null,\r\n Services: [],\r\n showResults: false,\r\n //loading: true,\r\n }\r\n }\r\n fetchServices = (apiPath = null) => {\r\n //await this.setState({ loading: true });\r\n if (!apiPath) apiPath = this.apiPathWithParams();\r\n apiCalls.fetchData(apiPath).then(async (data) => {\r\n if (data !== null) {\r\n this.setState({\r\n loading: false,\r\n Services: data,\r\n resultsMsg: null,\r\n //showResults: true,\r\n });\r\n } else if (data === null) {\r\n this.setState({ Services: [], loading: false, resultsMsg: settings.noResultsMsg });\r\n };\r\n });\r\n }\r\n\r\n paramsSeparator = (apiPath) => apiPath.indexOf('?') >= 0 ? '&' : '?';\r\n\r\n apiPathWithParams = () => {\r\n let { locationAccFilter, searchTerm } = this.state;\r\n let path = 'admin/MSTeamsServices';\r\n if (searchTerm) path += this.paramsSeparator(path) + 'phoneNumber=' + searchTerm;\r\n return path;\r\n }\r\n\r\n searchServices = (event) => {\r\n let searchText = event.target.value.trim();\r\n if (searchText !== '') {\r\n this.setState({ searchTerm: searchText, showResults: true, loading: true })\r\n } else {\r\n this.setState({ searchTerm: null, showResults: false })\r\n }\r\n this.delayedSearch();\r\n }\r\n\r\n delayedSearch = () => {\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => this.fetchServices(), settings.searchDelay);\r\n }\r\n\r\n serviceResults = () => {\r\n let { showResults, Services, loading } = this.state;\r\n if (showResults) {\r\n if (Services && Services.length > 0 && !loading) {\r\n return (\r\n
    \r\n
    Services
    \r\n {Services.map((item, index) => this.serviceItem(item, index))}\r\n
    \r\n )\r\n } else if (Services && Services.length === 0 && !loading) {\r\n return (\r\n
    \r\n
    {settings.noResultsMsg}
    \r\n
    \r\n );\r\n } else {\r\n return
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n handleUserChange = (tn, ext, locationId, serviceId, userId, street, city, state) => {\r\n this.props.onSelectUser(tn, ext, locationId, serviceId, userId, street, city, state);\r\n }\r\n\r\n serviceItem = (item, index) => {\r\n return (\r\n
    \r\n
    {\r\n //console.log(\"use this user\", item.UserId);\r\n this.setState({ searchTerm: item.ServiceNumber, showResults: false, });\r\n this.handleUserChange(item.ServiceNumber, item.Extension, item.LocationId, item.ServiceId, item.UserId, item.StreetAddress, item.City, item.State);\r\n }}\r\n >\r\n {`${item.FirstName} ${item.LastName} ${item.ServiceNumber}`}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n let divStyle = { margin: '1%', };\r\n let labelStyle = { display: 'inline-block', width: '30%', };\r\n let inputStyle = { width: '70%', display: 'inline-block', height: '34px', fontSize: '12px' };\r\n if (this.props.IsResourceAccount) {\r\n // inputStyle = {\r\n // width: '45%',\r\n // display: 'inline-block',\r\n // }\r\n return (\r\n \r\n
    { e.preventDefault() }}>\r\n \r\n {/* */}\r\n \r\n
    \r\n {this.serviceResults()}\r\n {/* {this.noSearchResults()} */}\r\n
    \r\n \r\n )\r\n }\r\n return (\r\n \r\n
    { e.preventDefault() }}>\r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n {this.serviceResults()}\r\n {/* {this.noSearchResults()} */}\r\n
    \r\n \r\n )\r\n }\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport * as config from '../../requests/config';\r\nimport * as settings from '../../scripts/settings';\r\nimport { sendErrorMessage, convertToLocal } from './components/utility';\r\nimport TNSearch from './components/tn_search';\r\n\r\nexport default class MsTeamsRoutingMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n Enterprise: this.props.Enterprise,\r\n Trunk: this.props.Trunk,\r\n loading: false,\r\n Submission: false,\r\n submitError: false,\r\n ErrorMessage: sessionStorage.MsTeamsStatusDscription ? sessionStorage.MsTeamsStatusDscription : \"\",\r\n UsersList: this.props.TeamsUsers,\r\n FullListings: this.props.TeamsUsers,\r\n MSTeamsConfig: this.props.MSTeamsConfig,\r\n showConfirmationModal: false,\r\n Sort: [{ field: \"UserId\", dir: \"desc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n modalAction: \"modify\",\r\n DomainList: JSON.parse(this.props.DomainList),\r\n AccountSettings: {\r\n UserPrincipalName: \"\",\r\n Domain: \"\",\r\n JsonParameters: {\r\n NewDisplayName: \"\",\r\n NewDisplayNameSpecified: true,\r\n NewResourceAccountType: 1,\r\n NewResourceAccountTypeSpecified: false,\r\n NewPhoneNumber: \"\",\r\n NewPhoneNumberSpecified: false\r\n },\r\n AccountType: 0,\r\n DisplayName: \"\",\r\n }\r\n };\r\n\r\n const giveStateData = this.giveStateData.bind(this);\r\n\r\n class ManageUserCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n //console.log(\"DATA ITEM\", this.props.dataItem);\r\n let enterprise = giveStateData()[0];\r\n let trunk = giveStateData()[1];\r\n //if (UserId) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n // } else {\r\n // return \r\n // }\r\n }\r\n }\r\n\r\n class UserLinkCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n selectUser = (service) => {\r\n //console.log(\"service\", service);\r\n settings.selectService(service.UserId, service.TelephoneNumber);\r\n //settings.selectService(1516118, \"4706321482\");\r\n }\r\n\r\n render() {\r\n let { TelephoneNumber } = this.props.dataItem;\r\n if (TelephoneNumber) {\r\n\r\n return (\r\n \r\n { this.selectUser(this.props.dataItem) }}\r\n >\r\n {TelephoneNumber}\r\n \r\n \r\n )\r\n } else {\r\n return \r\n }\r\n }\r\n }\r\n\r\n this.ManageUserCell = ManageUserCell;\r\n // this.DataLinkCell = DataLinkCell;\r\n this.UserLinkCell = UserLinkCell;\r\n }\r\n\r\n // componentDidMount() {\r\n // this.fetchAzureDomains();\r\n // }\r\n\r\n // fetchAzureDomains = async () => {\r\n // let path = `admin/GetMSTeamsDomain?enterprise=${this.state.Enterprise}&trunkName=${this.state.Trunk.TrunkName}`;\r\n // await apiCalls.fetchData(path).then(data => data).catch(err => console.error(err));\r\n // }\r\n\r\n giveStateData = () => {\r\n let { Enterprise, Trunk } = this.state;\r\n return [Enterprise, Trunk];\r\n }\r\n\r\n gridContent = () => {\r\n let { MSTeamsConfig, UsersList, Sort } = this.state;\r\n //if (!loading) {\r\n if (UsersList && UsersList.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {MSTeamsConfig.IsSBCTicketCompleted && MSTeamsConfig.IsSBCTicketCompleted && MSTeamsConfig.DirectRouting ? : null}\r\n \r\n \r\n )\r\n } else {\r\n return

    No Available Data

    \r\n }\r\n // } else {\r\n // return \r\n // }\r\n }\r\n\r\n handleSortChange = (e) => {\r\n this.setState({\r\n UsersList: orderBy(this.state.UsersList, e.sort),\r\n Sort: e.sort\r\n });\r\n }\r\n\r\n handleFilterChange = async (event) => {\r\n await this.setState({\r\n filter: event.filter\r\n });\r\n }\r\n\r\n exportBtn = () => {\r\n if (this.state.UsersList.length > 0) {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n this.exportUsers()}>Export Users\r\n
    \r\n )\r\n } else return null;\r\n }\r\n\r\n exportUsers = () => {\r\n this.refs.downloadCsv.submit();\r\n this.refs.exportBtn.text = 'Downloading...';\r\n setTimeout(() => {\r\n this.refs.exportBtn.text = 'Export Users';\r\n }, 2000);\r\n }\r\n\r\n openAttachments = () => {\r\n this.refs.fileUploader.click();\r\n }\r\n\r\n addAttachment = async (event) => {\r\n let file = event.target.files[0];\r\n let reader = new FileReader();\r\n reader.addEventListener('loadend', () => {\r\n let body = reader.result.split(',')[1];\r\n let name = file.name;\r\n this.createAttachment(body, name);\r\n }, false);\r\n if (file) {\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n\r\n createAttachment = async (body, name, ticketId) => {\r\n let apiPath = 'admin/UploadMSTeamsUsers';\r\n let attachmentDTO = {\r\n TicketId: this.state.TicketId,\r\n AttachmentBody: body,\r\n FileName: name,\r\n };\r\n await this.setState({ attachmentSubmitted: true });\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(attachmentDTO)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n await this.setState({\r\n Submission: true,\r\n submitError: false,\r\n });\r\n } else {\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n });\r\n }\r\n }\r\n\r\n uploadBtn = () => {\r\n return (\r\n
    \r\n {\r\n event.target.value = null;\r\n }}\r\n />\r\n this.openAttachments()}>Import Users\r\n
    )\r\n\r\n }\r\n\r\n configurationLinks = () => {\r\n let cc = \"https://admin.teams.microsoft.com/call-queues\";\r\n let aa = \"https://admin.teams.microsoft.com/auto-attendants\";\r\n let link = (name, link) => Configure {name} at {link} (opens in new tab)\r\n return (\r\n
    \r\n {link(\"Call Queues\", cc)}\r\n {link(\"Auto Attendants\", aa)}\r\n
    \r\n )\r\n }\r\n\r\n cardContent = () => {\r\n if (this.state.DomainList && this.state.DomainList.length > 0) {\r\n let { ErrorMessage } = this.state;\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    { e.preventDefault() }}>\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.uploadBtn()}\r\n {this.exportBtn()}\r\n
    \r\n
    \r\n {this.manageModal()}\r\n {this.gridContent()}\r\n {this.configurationLinks()}\r\n {this.btnGroup()}\r\n {ErrorMessage !== \"\" ? Error: {ErrorMessage} : null}\r\n
    \r\n );\r\n\r\n } else {\r\n return

    No Available Data

    \r\n }\r\n }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let AccountSettings = { ...this.state.AccountSettings };\r\n AccountSettings[key] = value;\r\n await this.setState({ AccountSettings });\r\n //console.log(\"AccountSettings\", AccountSettings); // inserted AD Information\r\n }\r\n\r\n inputDataField = (val, key, onChangeFunc, type = 'text') => {\r\n return (\r\n onChangeFunc(e, key)}\r\n />\r\n )\r\n }\r\n\r\n selectField = (val, key, options) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n dataRow = (label, field) => {\r\n return (\r\n
    \r\n {label} \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n usernameField = (username, domain) => {\r\n let options = () => {\r\n if (this.state.DomainList && this.state.DomainList.length > 0) {\r\n return this.state.DomainList.map(itm => {\r\n if (itm && itm.IsVerified) {\r\n return \r\n }\r\n })\r\n } else {\r\n return \r\n }\r\n }\r\n return (\r\n \r\n {this.inputDataField(username, \"UserPrincipalName\", this.handleInputChange)}\r\n {\" @ \"}\r\n {this.selectField(domain, \"Domain\", options())}\r\n \r\n )\r\n }\r\n\r\n manageModal = () => {\r\n let { DisplayName, UserPrincipalName, AccountType, Domain, ErrorMessage } = this.state.AccountSettings;\r\n let options = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n return (\r\n \r\n \r\n {this.state.modalAction[0].toUpperCase() + this.state.modalAction.substring(1)} Resource Account\r\n \r\n {this.state.modalAction === \"delete\" ? null : \r\n
    \r\n {this.dataRow(\"Display Name\", this.inputDataField(DisplayName, \"DisplayName\", this.handleInputChange))}\r\n
    \r\n {this.dataRow(\"Username\", this.usernameField(UserPrincipalName, Domain))}\r\n
    \r\n {this.dataRow(\"Resource Account Type\", this.selectField(AccountType, \"AccountType\", options()))}\r\n {/* {this.dataRow(\"Phone Number\", )} */}\r\n
    \r\n
    }\r\n \r\n
    \r\n {this.state.submittedTicket ? :
    \r\n \r\n \r\n \r\n \r\n
    }\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n btnGroup = () => {\r\n let btn = (description, action) => this.setState({ showConfirmationModal: true, modalAction: action })}>{description}\r\n return (\r\n
    \r\n {btn(\"Create Resource Account\", \"create\")}\r\n {/* {btn(\"Modify\", \"modify\")}\r\n {btn(\"Delete\", \"delete\")} */}\r\n
    \r\n )\r\n }\r\n\r\n handleManageResourceAccount = async () => {\r\n await this.setState({ submittedTicket: true });\r\n let { loading, Trunk, Enterprise, AccountSettings, modalAction } = this.state;\r\n let path = \"admin/ModifyResourceAccount\"; //modify by default\r\n AccountSettings.Username = sessionStorage.username;\r\n AccountSettings.EnterpriseId = Enterprise;\r\n AccountSettings.TrunkName = Trunk.TrunkName;\r\n // let dto = {\r\n // UserName: sessionStorage.username,//\"prodnewsubsite@momentumtelecom.com\",\r\n // EnterpriseId: Enterprise,\r\n // TrunkName: Trunk.TrunkName,\r\n // UserPrincipalName: \"aa2@NamasteOnlineYogaStudio.onmicrosoft.com\",\r\n // JsonParameters: JSON.stringify({\r\n // \"NewDisplayName\": \"NamasteUpdated\",\r\n // \"NewDisplayNameSpecified\": true,\r\n // \"NewResourceAccountType\": 1,\r\n // \"NewResourceAccountTypeSpecified\": false,\r\n // \"NewPhoneNumber\": \"\",\r\n // \"NewPhoneNumberSpecified\": false\r\n // }),\r\n // };\r\n if (modalAction === \"create\") {\r\n // create functionality\r\n path = \"admin/CreateResourceAccount\";\r\n delete AccountSettings.JsonParameters;\r\n AccountSettings.UserPrincipalName += `@${AccountSettings.Domain}`;\r\n // AccountSettings.AccountType = 1;\r\n // AccountSettings.DisplayName = \"Namaste2\";\r\n }\r\n if (modalAction === \"delete\") {\r\n // delete functionality\r\n path = \"admin/DeleteResourceAccount\";\r\n delete AccountSettings.JsonParameters;\r\n // delete AccountSettings.DisplayName;\r\n // delete AccountSettings.AccountType;\r\n }\r\n let response = await apiCalls.post(path, \"POST\", JSON.stringify(AccountSettings)).then(data => data).catch(err => console.error(err));\r\n if (response) {\r\n this.props.removeTabRedirectOnSave(false);\r\n sendErrorMessage(response.message);\r\n // await this.setState({\r\n // submittedTicket: false,\r\n // });\r\n this.props.RefreshData();\r\n }\r\n console.log(\"DTO\", AccountSettings);\r\n console.log(\"PATH\", path);\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullListings;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'GivenName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'TelephoneNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'StreetAddress', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Surname', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'UserPrincipalName', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n this.delayedSearch(services);\r\n }\r\n else {\r\n this.delayedSearch(fullDetails);\r\n }\r\n }\r\n\r\n delayedSearch = async (services) => {\r\n await this.setState({ loading: true });\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.setState({ UsersList: services, loading: false });\r\n }, settings.searchDelay);\r\n }\r\n\r\n render() {\r\n return this.cardContent();\r\n };\r\n}","import React, { Component } from \"react\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport { headerToolTip } from \"../../../components/ellipsisHeaderTooltip\";\r\n\r\nexport default class VoiceRoutes extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n Enterprise: this.props.Enterprise,\r\n Trunk: this.props.Trunk,\r\n CurrentTrunk: {},\r\n VoiceRoutesList: this.props.VoiceRoutesList,\r\n gridHeight: window.innerHeight - 200,\r\n Sort: [{ field: \"Identity\", dir: \"desc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n };\r\n }\r\n\r\n async componentDidMount() {}\r\n\r\n handleSortChange = (e) => {\r\n this.setState({\r\n VoiceRoutesList: orderBy(this.state.VoiceRoutesList, e.sort),\r\n Sort: e.sort,\r\n });\r\n };\r\n\r\n gridContent = () => {\r\n let { VoiceRoutesList, Sort } = this.state;\r\n console.log(\"VoiceRoutesList\", VoiceRoutesList);\r\n let priorityColWidth ='105px';\r\n let nameColWidth='200px';\r\n if (VoiceRoutesList && VoiceRoutesList.length > 0) {\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 } else {\r\n return (\r\n

    \r\n No Available Data\r\n

    \r\n );\r\n }\r\n };\r\n\r\n render() {\r\n return this.gridContent();\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { Grid, GridCell, GridColumn as Column } from '@progress/kendo-react-grid';\r\nimport * as apiCalls from \"../../../../src/requests/api_calls\";\r\nimport { Modal } from 'react-bootstrap';\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport { headerToolTip } from \"../../../components/ellipsisHeaderTooltip\";\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\n\r\nexport default class VoicePolicy extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n CurrentTrunk: {},\r\n VoicePoliciesList: this.props.VoicePoliciesList,\r\n gridHeight: window.innerHeight - 200,\r\n Sort: [{ field: \"UsersCount\", dir: \"desc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n showModal: false,\r\n };\r\n\r\n class UserBtn extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n showModal: false,\r\n UsersList: {},\r\n Sort: [{ field: \"DisplayName\", dir: \"desc\" }],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n await this.setState({ loading: true })\r\n console.log(\"logged\", this.props.dataItem.VoiceRoutePolicy)\r\n await this.setState({ loading: true });\r\n let path = `admin/MSTeamsUserPolicy?policyName=${this.props.dataItem.VoiceRoutePolicy}`;\r\n await apiCalls.fetchData(path).then(async (data) => {\r\n if (data) {\r\n console.log(data);\r\n this.setState({\r\n UsersList: data,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n UsersList: [],\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n\r\n }\r\n\r\n handleOpen = () => {\r\n this.componentDidMount();\r\n this.setState({\r\n showModal: true,\r\n\r\n });\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({\r\n showModal: false,\r\n });\r\n };\r\n gridContent = () => {\r\n let loading = this.state.loading;\r\n if (loading) {\r\n return ();\r\n }\r\n let loadingError = this.state.loadingError;\r\n if (loadingError) {\r\n return (
    {loadingError}
    );\r\n }\r\n\r\n let { UsersList, Sort } = this.state;\r\n if (UsersList && UsersList.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n

    \r\n No Available Data\r\n

    \r\n );\r\n }\r\n };\r\n\r\n\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.dataItem.UsersCount}\r\n \r\n \r\n \r\n LIST OF USERS\r\n \r\n \r\n \r\n \r\n {this.gridContent()}\r\n \r\n \r\n \r\n\r\n )\r\n }\r\n }\r\n this.editBtn = UserBtn;\r\n }\r\n\r\n async componentDidMount() { }\r\n\r\n\r\n\r\n handleSortChange = (e) => {\r\n this.setState({\r\n VoicePoliciesList: orderBy(this.state.VoicePoliciesList, e.sort),\r\n Sort: e.sort,\r\n });\r\n };\r\n\r\n StatusCell = (props) => {\r\n let customClassName = \"\";\r\n \r\n if (props.dataItem.Status) {\r\n customClassName = \"dot dot-success\";\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n else{\r\n customClassName = \"dot dot-error\";\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n };\r\n\r\n showStatusLegend = () => {\r\n const derivedMatchingObject = this.state.VoicePoliciesList.find(x => x.VoiceRoutePolicy === 'Momentum_VoicePolicy')\r\n const directMatchingObject = this.state.VoicePoliciesList.find(x => x.VoiceRoutePolicy === 'Momentum-ALL')\r\n if(derivedMatchingObject !== undefined || directMatchingObject !== undefined){\r\n if(derivedMatchingObject.VoiceRoutePolicy === \"Momentum_VoicePolicy\" && derivedMatchingObject.Status===\"true\"){\r\n return (
    \r\n
    {'-'} Momentum Supported Derived Routing Voice Policy
    \r\n
    {'-'} Non Supported Voice Policy
    \r\n
    )\r\n }\r\n if(directMatchingObject.VoiceRoutePolicy === \"Momentum-ALL\" && directMatchingObject.Status===\"true\"){\r\n return (
    \r\n
    {'-'} Momentum Supported Direct Routing Voice Policy
    \r\n
    {'-'} Non Supported Voice Policy
    \r\n
    )\r\n }\r\n }\r\n if(derivedMatchingObject === undefined && directMatchingObject === undefined){\r\n return (
    \r\n {/*
    {'-'}
    */}\r\n
    {'-'} Non Supported Voice Policy
    \r\n
    )\r\n }\r\n // return (
    \r\n //
    {'-'} Users with Correct VoicePolicy
    \r\n //
    {'-'} Users with Incorrect Voice Policy
    \r\n //
    )\r\n }\r\n\r\n gridContent = () => {\r\n let { VoicePoliciesList, Sort } = this.state;\r\n console.log(\"VoiceRoutesList\", VoicePoliciesList);\r\n if (VoicePoliciesList && VoicePoliciesList.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n

    \r\n No Available Data\r\n

    \r\n );\r\n }\r\n };\r\n\r\n cardContent = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {this.showStatusLegend()}\r\n
    \r\n
    \r\n
    {this.gridContent()}
    \r\n
    \r\n );\r\n }\r\n\r\n render() {\r\n //return this.gridContent();\r\n return this.cardContent();\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { Modal } from \"react-bootstrap\";\r\nimport VoiceRoutes from \"./tabs/voice_route\";\r\nimport VoicePolicy from \"./tabs/voice_policy\";\r\n\r\nexport default class MsTeamsTenantInfo extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n Enterprise: this.props.Enterprise,\r\n Trunk: this.props.Trunk,\r\n gridHeight: window.innerHeight - 180,\r\n VoiceRoutesList: this.props.VoiceRoutesList,\r\n VoicePoliciesList: this.props.VoicePoliciesList,\r\n tab: VOICETABS.VoiceRoutes,\r\n tabHasChanges: false\r\n };\r\n this.changeTab = this.changeTab.bind(this);\r\n this.getTab = this.getTab.bind(this);\r\n this.getTab = this.getTab.bind(this);\r\n this.handleTabEdit = this.handleTabEdit.bind(this);\r\n }\r\n\r\n\r\n handleTabEdit = (val) => {\r\n this.setState({ tabHasChanges: val });\r\n }\r\n\r\n changeTab(event) {\r\n if (event.target.dataset.act === 'voicepolicy') {\r\n\r\n this.setState({ tab: VOICETABS.VoicePolicy, tabHasChanges: true })\r\n }\r\n else {\r\n this.setState({ tab: VOICETABS.VoiceRoutes, tabHasChanges: true })\r\n }\r\n }\r\n\r\n getTabDisplay() {\r\n let voiceRoutes =\r\n (\r\n \r\n Voice Routes\r\n \r\n )\r\n let voicePolicy =\r\n (\r\n \r\n Voice Policy\r\n \r\n )\r\n\r\n return (\r\n
    \r\n {voiceRoutes}\r\n {voicePolicy}\r\n
    \r\n );\r\n }\r\n\r\n getTab() {\r\n switch (this.state.tab) {\r\n case VOICETABS.VoiceRoutes:\r\n return (\r\n \r\n );\r\n case VOICETABS.VoicePolicy:\r\n return (\r\n \r\n );\r\n default:\r\n console.log('Sorry there isn\\'t a tab named ' + this.state.tab + '.');\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {this.getTabDisplay()}\r\n
    {this.getTab()}
    \r\n
    \r\n
    \r\n \r\n \r\n Cancel Existing Order?\r\n \r\n \r\n
    \r\n

    \r\n \r\n Continuing this action will cancel existing changes you have\r\n made for a new MACD Order. Are you sure you wish to continue\r\n and lose all changes?\r\n \r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport const VOICEROUTETYPES = {\r\n VoiceRoutes: \"VOICE_ROUTES\",\r\n VoicePolicy: \"VOICE_POLICY\"\r\n}\r\n\r\n\r\n\r\nexport const VOICETABS = {\r\n VoiceRoutes: \"voiceroutes\",\r\n VoicePolicy: \"voicepolicy\"\r\n}","import React, { Component, Fragment } from \"react\";\r\nimport MsTeamsConfig from \"./msteams_config\";\r\nimport MsTeamsUserMenu from \"./msteams_menu\";\r\nimport MsTeamsSetupDomain from \"./msteams_setup_domain\";\r\nimport MsTeamsDNS from \"./msteams_dns\";\r\nimport MsTeamsSBC from \"./msteams_sbc\";\r\nimport MsTeamsTempUsers from \"./msteams_temp\";\r\nimport MsTeamsDirectRouting from \"./msteams_dr\";\r\nimport MigrationTab from \"./migration\";\r\nimport MsTeamsRoutingMenu from './msteams_routing_menu';\r\nimport MsTeamsTenantInfo from \"./msteams_tenantinfo\";\r\nimport { DataLoadingSpinner } from \"../../components/spinners\";\r\nimport * as apiCalls from \"../../requests/api_calls\";\r\nimport { userIsAdmin } from \"../../scripts/helper\";\r\n\r\nexport default class MsTeamsMain extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n Enterprise: sessionStorage.userEnterpriseNumber,\r\n tab: sessionStorage.msteamstabName || \"config\" || \"tenant\",\r\n CurrentTrunk: {},\r\n MSTeamsConfig: null,\r\n MSTeamsConfigCopy: {},\r\n showConfirmationModal: false,\r\n showDirectRoutingModal: false,\r\n Trunks: [],\r\n TeamsUsers: [],\r\n CustomerName: \"\",\r\n DNSTicketDetails: null,\r\n SBCTicketDetails: null,\r\n TabRedirect: true,\r\n showUserList: false,\r\n routingType: sessionStorage.MSTeamsRoutingType == \"DIRECT\" ? \"Direct Routing\" : \"Derived Routing\",\r\n CheckStatus: false,\r\n gridHeight: (window.innerHeight - 180),\r\n VoiceRoutesList:[],\r\n VoicePoliciesList:[]\r\n //routingType: \"Derived Routing\",\r\n //migrationStatus: false,\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n if (userIsAdmin()) {\r\n await this.fetchTrunks();\r\n await this.fetchMSTeamsConfigInfo();\r\n \r\n //await this.fetchStatus();\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (!sessionStorage.msteamstabName && prevState.tab !== this.state.tab)\r\n if (this.state.tab === \"data\") {\r\n await this.setState({ tab: \"data\" });\r\n }\r\n }\r\n\r\n // fetchStatus = async () => {\r\n // let path = \"admin/IsReadyForDerivedRoutingMigration\";\r\n // await apiCalls.fetchData(path).then((data) => {\r\n // this.setState({\r\n // migrationStatus: data && data == 1 ? true : false,\r\n // });\r\n // }).catch(err => console.error(err));\r\n // }\r\n\r\n fetchBillingStat = async () => {\r\n await this.setState({ loading: true });\r\n let path = \"admin/BillingStat\";\r\n await apiCalls\r\n .fetchData(path)\r\n .then((data) => {\r\n if (data) {\r\n this.setState({\r\n CustomerName: data.CustomerName,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n CustomerName: \"\",\r\n loading: false,\r\n });\r\n }\r\n })\r\n .catch((err) => console.error(err));\r\n };\r\n\r\n fetchTrunks = async () => {\r\n await this.setState({ loading: true });\r\n let path = `admin/EnterpriseMSTrunks`;\r\n await apiCalls\r\n .fetchData(path)\r\n .then((data) => {\r\n if (data) {\r\n this.setState({\r\n Trunks: data,\r\n CurrentTrunk: data[0],\r\n });\r\n } else {\r\n this.setState({\r\n Trunks: [],\r\n CurrentTrunk: {},\r\n loading: false,\r\n });\r\n }\r\n })\r\n .catch((err) => console.error(err));\r\n };\r\n\r\n fetchDomainList = async () => {\r\n await this.setState({ loading: true });\r\n let path = `admin/GetMSTeamsDomain?enterprise=${this.state.Enterprise}&trunkName=${this.state.CurrentTrunk.TrunkName}`;\r\n await apiCalls.fetchData(path).then(async (data) => {\r\n if (data) {\r\n //data.DirectRouting = true; // test direct routing rendering\r\n this.setState({\r\n DomainList: data,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n DomainList: [],\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchMSTeamsConfigInfo = async () => {\r\n await this.setState({ loading: true });\r\n let path = `admin/MSTeamsConfig?EnterpriseTrunkId=${this.state.CurrentTrunk.TrunkId}`;\r\n await apiCalls\r\n .fetchData(path)\r\n .then(async (data) => {\r\n if (data) {\r\n let copy = JSON.parse(JSON.stringify(data));\r\n //data.DirectRouting = true; // test Derived routing rendering\r\n this.setState({\r\n MSTeamsConfig: data,\r\n MSTeamsConfigCopy: copy,\r\n PrimaryGateWay: data.PstnPrimaryGateway,\r\n SecondaryGateWay: data.PstnSecondaryGateway,\r\n loading: false,\r\n });\r\n await this.fetchMSTeamsUserList();\r\n await this.fetchDomainList();\r\n await this.fetchBillingStat();\r\n await this.fetchListings();\r\n await this.fetchListingsForVoicePolicies();\r\n if (!sessionStorage.msteamstabName && this.state.TabRedirect) {\r\n if (this.state.MSTeamsConfig.ConfigProcessCompleted) {\r\n this.setState({ tab: \"data\" });\r\n }\r\n }\r\n //this.setState({ loading: false })\r\n } else {\r\n this.setState({\r\n MSTeamsConfig: null,\r\n MSTeamsConfigCopy: null,\r\n PrimaryGateWay: \"\",\r\n SecondaryGateWay: \"\",\r\n loading: false,\r\n });\r\n }\r\n })\r\n .catch((err) => console.error(err));\r\n };\r\n\r\n fetchMSTeamsUserList = async () => {\r\n await this.setState({ loading: true });\r\n let path = `admin/MSTeamsUsers`;\r\n await apiCalls\r\n .fetchData(path)\r\n .then((data) => {\r\n if (data) {\r\n this.setState({\r\n TeamsUsers: data,\r\n FullListings: data,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n TeamsUsers: [],\r\n FullListings: [],\r\n loading: false,\r\n });\r\n }\r\n })\r\n .catch((err) => console.error(err));\r\n };\r\n\r\n fetchListings = async () => {\r\n await this.setState({ loading: true });\r\n let path = `admin/GetCsOnlineVoiceRoute?enterprise=${this.state.Enterprise}&trunkName=${this.state.CurrentTrunk.TrunkName}`;\r\n await apiCalls.fetchData(path).then(async (data) => {\r\n if (data) {\r\n this.setState({\r\n VoiceRoutesList: JSON.parse(data),\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n VoiceRoutesList: [],\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n}\r\n\r\nfetchListingsForVoicePolicies = async () => {\r\n await this.setState({ loading: true });\r\n let path = `admin/GetVoiceRoutePolicies`;\r\n await apiCalls.fetchData(path).then(async (data) => {\r\n if (data) {\r\n this.setState({\r\n VoicePoliciesList: data,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n VoicePoliciesList: [],\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n}\r\n\r\n btnField = (description, tabName) => {\r\n return (\r\n this.changeTab(tabName)}\r\n disabled={this.state.loading}\r\n style={{\r\n padding: \"5px 10px\",\r\n margin: \"2px\",\r\n color: this.state.tab === tabName ? \"black\" : \"#6c8bad\",\r\n borderRadius: \"10px\",\r\n border:\r\n this.state.tab === tabName\r\n ? \"1px solid black\"\r\n : \"1px solid #6c8bad\",\r\n }}\r\n >\r\n {\" \"}\r\n {description}\r\n \r\n );\r\n };\r\n\r\n tabDisplay = () => {\r\n let { loading, MSTeamsConfig } = this.state;\r\n\r\n if (MSTeamsConfig) {\r\n let { ConfigProcessCompleted, AllowManualDerivedRoutingMigration } = MSTeamsConfig;\r\n return (\r\n \r\n {this.btnField(\"Connect to Microsoft 365\", \"config\")}\r\n {this.state.routingType == \"Derived Routing\" ? this.btnField(\"Setup Domain\", \"domain\") : null}\r\n {this.state.routingType == \"Derived Routing\" ? this.btnField(\"DNS Configuration\", \"dns\") : null}\r\n {this.btnField(\"Setup Temp Users\", \"temp\")}\r\n {this.state.routingType == \"Derived Routing\" ? this.btnField(this.state.routingType, \"dr\") : null}\r\n {this.btnField(\"User List\", \"data\")}\r\n {AllowManualDerivedRoutingMigration ? this.btnField(\"Migrate Tenant to Derived Routing\", \"migrate\") : null}\r\n {sessionStorage.RPXLogin === \"true\" ?this.btnField(\"Tenant Info\", \"tenant\"): null}\r\n \r\n );\r\n }\r\n };\r\n\r\n changeTab = (tabName) => {\r\n sessionStorage.setItem('msteamstabName', tabName);\r\n this.setState({ tab: tabName });\r\n };\r\n\r\n proceedToNextTab = (value) => {\r\n this.setState({ tab: value });\r\n };\r\n\r\n removeTabRedirectOnSave = async (value) => {\r\n await this.setState({ TabRedirect: value });\r\n };\r\n\r\n getTab() {\r\n switch (this.state.tab) {\r\n case \"config\":\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n case \"domain\":\r\n return (\r\n \r\n );\r\n case \"dns\":\r\n return (\r\n \r\n );\r\n case \"sbc\":\r\n return (\r\n \r\n );\r\n case \"temp\":\r\n return (\r\n \r\n );\r\n case \"dr\":\r\n return (\r\n \r\n );\r\n case \"data\":\r\n //let userList = this.state.TeamsUsers.filter(itm => itm.ApplicationName === null);;\r\n return (\r\n \r\n );\r\n case \"resource\":\r\n let routingList = this.state.TeamsUsers.filter(itm => itm.ApplicationName !== null);\r\n return (\r\n \r\n );\r\n case \"migrate\":\r\n return (\r\n \r\n );\r\n case \"tenant\":\r\n return (\r\n \r\n );\r\n default:\r\n console.log(\"Sorry there isn't a tab named \" + this.state.tab + \".\");\r\n }\r\n }\r\n\r\n checkStatus = async () => {\r\n await this.fetchMSTeamsConfigInfo();\r\n this.setState({ tab: \"migrate\", CheckStatus: true });\r\n }\r\n\r\n cardContent = () => {\r\n if (!this.state.loading) {\r\n return (\r\n \r\n
    \r\n
    {this.getTab()}
    \r\n
    \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n };\r\n servicesCardInlineStyle = () => {\r\n // offset by 30 to account for missing table headers\r\n if (this.state.loading) return { height: this.state.gridHeight + 100 + 'px' }\r\n }\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Microsoft Teams

    \r\n
    \r\n {this.tabDisplay()}\r\n {this.cardContent()}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { Modal } from 'react-bootstrap';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport _ from 'lodash';\r\nimport SaveStatus from '../../../components/save_status';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport TNSearch from './tn_search';\r\n\r\nexport default class ManageMsTeamsUser extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isAssigned: false,\r\n loading: false,\r\n Submission: false,\r\n SubmitError: false,\r\n showConfirmationModal: false,\r\n showDRModal: false,\r\n TeamsId: this.props.location.state.TeamsId,\r\n UserDetails: this.props.location.state.UserDetails,\r\n OriginalDetails: JSON.parse(JSON.stringify(this.props.location.state.UserDetails)),\r\n Enterprise: this.props.location.state.Enterprise,\r\n Trunk: this.props.location.state.Trunk,\r\n LocationList: sessionStorage.locationList ? JSON.parse(sessionStorage.locationList) : [],\r\n routingType: sessionStorage.MSTeamsRoutingType == \"DIRECT\" ? \"Direct Routing\" : \"Derived Routing\",\r\n //LocationList: JSON.parse(getLocations()),\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n //this.props.refreshDataSource();\r\n }\r\n\r\n componentWillReceiveProps = () => {\r\n let { UserDetails } = this.state;\r\n let dataSource = this.props.location.state.UserDetails;\r\n // if (UserDetails !== this.props.location.state.UserDetails) {\r\n // this.setState({ UserDetails: this.props.location.state.UserDetails });\r\n // }\r\n }\r\n\r\n\r\n inputDataField = (val, key, inputStyle, onChangeFunc, type = 'text', readOnly) => {\r\n return (\r\n onChangeFunc(e, key)}\r\n disabled={readOnly}\r\n />\r\n )\r\n }\r\n\r\n dataRow = (label, field, divStyleObj, labelStyleObj) => {\r\n return (\r\n
    \r\n {label}: \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n dataDropDown = (key, val, inputStyle) => {\r\n return (\r\n this.handleInputChange(e, key)}\r\n value={val}\r\n disabled\r\n >\r\n {/* {options} */}\r\n \r\n {this.state.LocationList.map((itm, idx) => {\r\n return \r\n })}\r\n \r\n )\r\n }\r\n\r\n cardContent = () => {\r\n let { loading, UserDetails } = this.state;\r\n if (loading) {\r\n return (\r\n \r\n );\r\n } else {\r\n let {\r\n AccountEnabled,\r\n City,\r\n CompanyName,\r\n Country,\r\n Department,\r\n DisplayName,\r\n EnterpriseId,\r\n EnterpriseMSTeamsConfigId,\r\n Extension,\r\n FacsimileTelephoneNumber,\r\n GivenName,\r\n IsDeleted,\r\n LocationId,\r\n Mail,\r\n MailNickName,\r\n Mobile,\r\n OtherMails,\r\n PostalCode,\r\n ShowInAddressList,\r\n SipProxyAddress,\r\n State,\r\n StreetAddress,\r\n Surname,\r\n SyncToTeams,\r\n TeamsGroupIds,\r\n TeamsUserId,\r\n TelephoneNumber,\r\n UsageLocation,\r\n UserId,\r\n UserPrincipalName,\r\n UserState,\r\n UserStateChangedOn,\r\n UserType,\r\n } = UserDetails;\r\n let divStyle = { margin: \"1%\", };\r\n let labelStyle = { display: 'inline-block', width: '30%', };\r\n let inputStyle = { width: '70%', display: 'inline-block', };\r\n return (\r\n
    \r\n {}\r\n {this.dataRow(\"Assigned DID / Seat\", this.inputDataField(TelephoneNumber, 'TelephoneNumber', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Extension\", this.inputDataField(Extension, 'Extension', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Location\", this.dataDropDown(\"LocationName\", LocationId, inputStyle), divStyle, labelStyle)}\r\n {this.dataRow(\"First Name\", this.inputDataField(GivenName, 'GivenName', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Last Name\", this.inputDataField(Surname, 'Surname', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"User Principal Name\", this.inputDataField(UserPrincipalName, 'UserPrincipalName', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Street\", this.inputDataField(StreetAddress, 'StreetAddress', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"City\", this.inputDataField(City, 'City', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"State\", this.inputDataField(State, 'State', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"User State Changed On\", this.inputDataField(UserStateChangedOn, 'UserStateChangedOn', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"User State\", this.inputDataField(UserState, 'UserState', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Usage Location\", this.inputDataField(UsageLocation, 'UsageLocation', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Sip Proxy Address\", this.inputDataField(SipProxyAddress, 'SipProxyAddress', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"User Type\", this.inputDataField(UserType, 'UserType', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Other Mails\", this.inputDataField(OtherMails, 'OtherMails', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n
    \r\n )\r\n }\r\n }\r\n\r\n handleUserChange = async (tn, ext, locationId, serviceId, userId, street, city, state) => {\r\n let UserDetails = { ...this.state.UserDetails };\r\n UserDetails[\"LocationId\"] = locationId;\r\n UserDetails[\"ServiceId\"] = serviceId;\r\n UserDetails[\"Extension\"] = ext;\r\n UserDetails[\"UserId\"] = userId;\r\n UserDetails[\"TelephoneNumber\"] = tn;\r\n UserDetails[\"StreetAddress\"] = street;\r\n UserDetails[\"City\"] = city;\r\n UserDetails[\"State\"] = state;\r\n await this.setState({ UserDetails });\r\n //console.log(\"UserDetails\", UserDetails);\r\n }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let UserDetails = { ...this.state.UserDetails };\r\n UserDetails[key] = value;\r\n await this.setState({ UserDetails });\r\n //console.log(\"UserDetails\", UserDetails); // inserted AD Information\r\n }\r\n\r\n configureDR = async () => {\r\n this.setState({ SubmissionLoading: true });\r\n let { UserDetails, OriginalDetails, Trunk, Enterprise } = this.state;\r\n let { UserPrincipalName, TeamsUserId } = UserDetails;\r\n let path = `admin/EnableDirectRoutingForUser?teamsId=${TeamsUserId}`;\r\n let dto = this.state.UserDetails;\r\n // ** required params for web service ** //\r\n dto.UserName = sessionStorage.username;\r\n dto.EnterpriseId = Enterprise;\r\n dto.TrunkName = Trunk.TrunkName;\r\n dto.UserPrincipalName = UserPrincipalName;\r\n dto.PhoneNumber = UserDetails.TelephoneNumber;\r\n if (OriginalDetails.TelephoneNumber) {\r\n path = `admin/DisableDirectRoutingForUser?teamsId=${TeamsUserId}`;\r\n }\r\n //console.log(\"___DTO___\", dto);\r\n let response = await apiCalls.post(path, 'POST', JSON.stringify(dto)).then(response => response).catch(err => console.error(err));\r\n if (response.ok) {\r\n this.sendErrorMessage(response.message);\r\n await this.setState({\r\n Submission: true,\r\n SubmissionLoading: false,\r\n });\r\n } else {\r\n this.setState({\r\n Submission: true,\r\n ErrorMessage: \"An unknown error occurred, please try again.\",\r\n SubmitError: true\r\n });\r\n }\r\n }\r\n\r\n sendErrorMessage = (apiResponse) => {\r\n let { Status, StatusDscription } = JSON.parse(JSON.parse(apiResponse));\r\n if (Status && StatusDscription) {\r\n if (Status === \"Error\") {\r\n this.setState({ ErrorMessage: StatusDscription, SubmitError: true });\r\n } else {\r\n this.setState({ ErrorMessage: \"\" });\r\n }\r\n }\r\n };\r\n\r\n fetchMSTeamsUserList = async () => {\r\n await this.setState({ loading: true });\r\n let path = `admin/MSTeamsUsers`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n let updatedUser = data.filter(user => user.TeamsUserId == this.state.TeamsId)[0];\r\n this.setState({\r\n UserDetails: updatedUser,\r\n OriginalDetails: updatedUser,\r\n showDRModal: false,\r\n loading: false,\r\n Submission: false\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n modalBtns = () => {\r\n if (this.state.Submission) {\r\n return (\r\n
    \r\n {this.state.ErrorMessage !== \"\" ? {this.state.ErrorMessage} : null}\r\n {\r\n if (this.state.SubmitError) {\r\n this.setState({ showDRModal: false, SubmitError: false, Submission: false, ErrorMessage: \"\" });\r\n } else {\r\n this.fetchMSTeamsUserList();\r\n }\r\n }}\r\n >Close\r\n
    \r\n )\r\n } else {\r\n return (\r\n
    \r\n Yes\r\n this.setState({ showDRModal: false })}\r\n >No\r\n
    \r\n )\r\n }\r\n }\r\n\r\n render = () => {\r\n let { UserDetails, OriginalDetails, routingType } = this.state;\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Update Microsoft Teams User

    \r\n \r\n {/* this.setState({ showConfirmationModal: true })}\r\n className=\"a btn\"\r\n >{\"Update User\"} */}\r\n this.setState({ showDRModal: true })}\r\n className=\"a btn\"\r\n >{OriginalDetails.TelephoneNumber ? `Disable ${routingType}` : `Enable ${routingType}`}\r\n < Link\r\n to={{\r\n pathname: `/microsoft-teams`,\r\n state: {\r\n UserDetails: this.state.UserDetails\r\n }\r\n }}\r\n className=\"a btn\">\r\n User List\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {this.state.Submission && !this.state.SubmitError ? \"Changes Saved!\" : \"Are you sure you want to save changes?\"}\r\n \r\n \r\n
    \r\n
    \r\n {this.state.SubmissionLoading ? : this.modalBtns()}\r\n
    \r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React, { Component, Fragment, useRef } from \"react\";\r\nimport * as helper from \"../../scripts/helper\";\r\nimport * as apiCalls from \"../../requests/api_calls\";\r\nimport * as settings from \"../../scripts/settings\";\r\nimport {\r\n Grid,\r\n GridColumn as Column,\r\n GridDetailRow,\r\n GridCell,\r\n} from \"@progress/kendo-react-grid\";\r\nimport EllipsisWithTooltip from \"react-ellipsis-with-tooltip\";\r\nimport { DataLoadingSpinner } from \"../../components/spinners\";\r\nimport { headerToolTip } from \"../../components/ellipsisHeaderTooltip\";\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\nimport { filtercell } from \"../../components/dropdownFilter\";\r\nimport _ from \"lodash\";\r\nimport Popup from \"reactjs-popup\";\r\nimport { userIsAdmin } from \"../../scripts/helper\";\r\nimport { DropDownList } from \"@progress/kendo-react-dropdowns\";\r\nimport { Button } from \"react-bootstrap\";\r\nimport * as config from \"../../requests/config\";\r\nimport { CSVLink, CSVDownload } from \"react-csv\";\r\n\r\nexport const webexemailfilter = [\r\n \"All\",\r\n \"Provisioned\",\r\n \"Pending Email Input\",\r\n \"Pending Email Validation\",\r\n \"Provisioning\",\r\n];\r\nexport default class Webex extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n loading: false,\r\n syncing: false,\r\n lastSyncedDate: \"\",\r\n LocationAccountNumber: \"\",\r\n Term: \"\",\r\n Listings: [],\r\n Sort: [{ field: \"PackageName\", dir: \"asc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n SubmittedId: null,\r\n search: \"\",\r\n directorySyncStatus: \"\",\r\n directorySyncStatusTime: \"\",\r\n disableDirectorySycnButton: false,\r\n disableDirectorySycnButtonStatus: \"\",\r\n\r\n };\r\n\r\n const parentToChildStateAccess = this.parentToChildStateAccess.bind(this);\r\n const updateWebexData = this.updateWebexData.bind(this);\r\n const handleClearFilter = this.handleClearFilter.bind(this);\r\n const handleEmailFilter = this.handleEmailFilter.bind(this);\r\n const searchEmail = this.searchEmail.bind(this);\r\n const handleInputChange = this.handleInputChange.bind(this);\r\n\r\n ///////////////////////////////////////////////////////////////////////////////////\r\n class ClearFilterCell extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n return (\r\n \r\n Clear Filters\r\n \r\n );\r\n }\r\n }\r\n ///////////////////////////////////////////////////////////////////////////////////\r\n class FilterEmailCell extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n FullListings: parentToChildStateAccess()[4],\r\n };\r\n }\r\n\r\n roughDraft = () => {\r\n return (\r\n {\r\n console.log(\"FULL REE\", this.state.FullListings);\r\n let searchText = e.target.value;\r\n let services = filterBy(this.state.FullDetails, {\r\n logic: \"or\",\r\n filters: [\r\n {\r\n field: \"WebExEmail\",\r\n operator: \"contains\",\r\n value: searchText,\r\n ignoreCase: true,\r\n },\r\n ],\r\n });\r\n }}\r\n type=\"text\"\r\n name=\"WebExEmail\"\r\n //value={\"\"}\r\n />\r\n );\r\n };\r\n\r\n cellContent = () => {\r\n return (\r\n \r\n Show Empty\r\n \r\n );\r\n };\r\n\r\n render() {\r\n return this.cellContent();\r\n }\r\n }\r\n ///////////////////////////////////////////////////////////////////////////////////\r\n const DropDownFilter = (data, defaultItem) => {\r\n return class extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n LocationAccountNumber: parentToChildStateAccess()[4],\r\n Term: parentToChildStateAccess()[5],\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n {\r\n //update Location Account Number\r\n this.setState({ LocationAccountNumber: e.target.value });\r\n }}\r\n value={this.state.LocationAccountNumber}\r\n >\r\n \r\n {data.map((item, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n };\r\n };\r\n ///////////////////////////////////////////////////////////////////////////////////\r\n class AddOnCountCell extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n GridItem: this.props.dataItem,\r\n LoadPop: false,\r\n CountAddOnData: [],\r\n };\r\n }\r\n\r\n fetchAddOnList = async (ServiceId) => {\r\n //EnterpriseId, ParentServiceId, PackageName, USOC\r\n await this.setState({ LoadPop: true });\r\n let apiPath = `admin/GetServiceAddonList?ServiceId=${ServiceId}`;\r\n await apiCalls\r\n .fetchData(apiPath)\r\n .then((data) => {\r\n if (data) {\r\n // let addOnContainer = [];\r\n // data.forEach(itm => {\r\n // if (itm) { addOnContainer.push({ IP: itm }); }\r\n // });\r\n this.setState({\r\n CountAddOnData: data,\r\n LoadPop: false,\r\n });\r\n } else {\r\n this.setState({\r\n CountAddOnData: [],\r\n LoadPop: false,\r\n });\r\n }\r\n })\r\n .catch((err) => console.error(err));\r\n };\r\n\r\n loadAddOnList = () => {\r\n if (this.state.LoadPop) {\r\n return ;\r\n } else {\r\n return (\r\n \r\n

    Addon List:

    \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n };\r\n\r\n render() {\r\n //let trunkGroupId = this.props.dataItem.TrunkGroupID;\r\n //let { CountAddOn } = this.state.gridItem;\r\n let { CountAddOn, ServiceId } = this.props.dataItem;\r\n let field = this.props.field;\r\n\r\n if (CountAddOn && CountAddOn > 0 && field === \"CountAddOn\") {\r\n return (\r\n this.setState({ ReadOnly: !this.state.ReadOnly })}\r\n >\r\n (\r\n \r\n {CountAddOn}\r\n \r\n )}\r\n onOpen={() => {\r\n this.fetchAddOnList(ServiceId);\r\n }}\r\n position=\"bottom center\"\r\n closeOnDocumentClick\r\n contentStyle={{\r\n padding: \"20px\",\r\n borderColor: \"unset\",\r\n width: \"250px\",\r\n }}\r\n >\r\n {this.loadAddOnList()}\r\n \r\n \r\n );\r\n } else return {CountAddOn};\r\n }\r\n }\r\n ///////////////////////////////////////////////////////////////////////////////////\r\n class EmailCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n ReadOnly: true,\r\n GridItem: parentToChildStateAccess()[6].filter(\r\n (itm) => itm.ServiceId == this.props.dataItem.ServiceId\r\n )[0],\r\n IsEmailValid: true,\r\n isVisible: \"hidden\",\r\n };\r\n }\r\n\r\n validateEmail = (email) => {\r\n const re =\r\n /^(([^<>()[\\]\\\\.,;:\\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,}))$/;\r\n let result = re.test(String(email).toLowerCase());\r\n if (!result && email != \"\") {\r\n this.setState({ IsEmailValid: false });\r\n } else {\r\n this.setState({ IsEmailValid: true });\r\n }\r\n };\r\n\r\n validationError = () => {\r\n if (this.state.IsEmailValid) {\r\n return;\r\n }\r\n return (\r\n \r\n * Please use a valid email\r\n

    \r\n );\r\n };\r\n\r\n render() {\r\n //console.log(\"DATA ITEM\", this.state.GridItem);\r\n let { WebExEmail } = this.state.GridItem;\r\n\r\n if (!this.state.ReadOnly) {\r\n return (\r\n \r\n {/* \r\n {this.validationError()} */}\r\n {this.props.dataItem.WebExEmail}\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {/* \r\n this.setState({ ReadOnly: !this.state.ReadOnly })\r\n }\r\n style={{\r\n cursor: \"pointer\",\r\n borderRadius: \"0\",\r\n backgroundColor: \"#eee\",\r\n opacity: \"1\",\r\n height: \"34px\",\r\n lineHeight: \"1.42857143\",\r\n }}\r\n type=\"text\"\r\n name={`${this.props.dataItem.WebExEmail}`}\r\n //name=\"WebExEmail\"\r\n value={this.props.dataItem.WebExEmail}\r\n className=\"form-control\"\r\n data-toggle=\"tooltip\"\r\n data-placement=\"bottom\"\r\n title={this.props.dataItem.WebExEmail} //tooltip\r\n autocomplete=\"off\"\r\n /> */}\r\n {this.props.dataItem.WebExEmail}\r\n \r\n );\r\n }\r\n }\r\n }\r\n ///////////////////////////////////////////////////////////////////////////////////\r\n class SubmissionCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n Submission: parentToChildStateAccess()[0],\r\n SubmitError: parentToChildStateAccess()[1],\r\n GridItem: this.props.dataItem,\r\n SubmittedId: parentToChildStateAccess()[2],\r\n DuplicateError: parentToChildStateAccess()[3],\r\n };\r\n }\r\n\r\n async componentWillReceiveProps() {\r\n if (\r\n this.props.dataItem.ServiceId !== this.state.GridItem.ServiceId ||\r\n this.state.Submission !== parentToChildStateAccess()[0] ||\r\n this.state.SubmitError !== parentToChildStateAccess()[1] ||\r\n this.state.SubmittedId !== parentToChildStateAccess()[2] ||\r\n this.state.DuplicateError !== parentToChildStateAccess()[3]\r\n ) {\r\n await this.setState({\r\n GridItem: this.props.dataItem,\r\n Submission: parentToChildStateAccess()[0],\r\n SubmitError: parentToChildStateAccess()[1],\r\n SubmittedId: parentToChildStateAccess()[2],\r\n DuplicateError: parentToChildStateAccess()[3],\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n let { Submission, SubmitError, GridItem, SubmittedId, DuplicateError } =\r\n this.state;\r\n if (this.props.dataItem.ServiceId === SubmittedId) {\r\n if (Submission) {\r\n let successMessage = (\r\n \r\n );\r\n let failureMessage = (\r\n \r\n );\r\n if (!SubmitError && !DuplicateError) {\r\n return {successMessage};\r\n } else if (!SubmitError && DuplicateError) {\r\n // duplicate error but no sumbit error\r\n return (\r\n \r\n \r\n {failureMessage}\r\n \r\n \r\n );\r\n } else if (SubmitError && !DuplicateError) {\r\n // sumbit error but no duplicate error\r\n return (\r\n \r\n \r\n {failureMessage}\r\n \r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n } else return ;\r\n } else return ;\r\n }\r\n }\r\n this.AddOnCountCell = AddOnCountCell;\r\n this.ClearFilterCell = ClearFilterCell;\r\n this.FilterEmailCell = FilterEmailCell;\r\n this.DropDownFilter = DropDownFilter;\r\n this.EmailCell = EmailCell;\r\n this.SubmissionCell = SubmissionCell;\r\n }\r\n\r\n componentDidMount() {\r\n if (userIsAdmin()) {\r\n this.fetchWebexData();\r\n }\r\n this.syncAllUsers(true);\r\n }\r\n\r\n searchEmail = async (event) => {\r\n if (this.state.FullListings && this.state.FullListings.length > 0) {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullListings;\r\n if (searchText !== \"\") {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: \"or\",\r\n filters: [\r\n {\r\n field: \"WebExEmail\",\r\n operator: \"contains\",\r\n value: searchText,\r\n ignoreCase: true,\r\n },\r\n ],\r\n });\r\n //this.delayedSearch(services);\r\n await this.setState({ Listings: services });\r\n //console.log(\"SEARCH\", services);\r\n } else {\r\n //this.delayedSearch(fullDetails);\r\n this.setState({ Listings: fullDetails });\r\n }\r\n }\r\n };\r\n\r\n parentToChildStateAccess = () => {\r\n let {\r\n Submission,\r\n SubmitError,\r\n SubmittedId,\r\n DuplicateError,\r\n LocationAccountNumber,\r\n Term,\r\n FullListings,\r\n } = this.state;\r\n return [\r\n Submission,\r\n SubmitError,\r\n SubmittedId,\r\n DuplicateError,\r\n LocationAccountNumber,\r\n Term,\r\n FullListings,\r\n ];\r\n };\r\n\r\n fetchWebexData = async () => {\r\n await this.setState({ syncing: true });\r\n let { LocationAccountNumber, Term } = this.state;\r\n let path = `admin/GetWebExServiceList?LocationAccountNumber=${LocationAccountNumber}&term=${Term}`;\r\n await apiCalls\r\n .fetchData(path)\r\n .then((data) => {\r\n if (data) {\r\n let lastSyncedDate = new Date().toString();\r\n let copy = JSON.parse(JSON.stringify(data));\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i].WebexEmailValidation === \"provisioned\")\r\n data[i].WebexEmailValidation = \"Provisioned\";\r\n else if (data[i].WebexEmailValidation === \"pending_email_input\")\r\n data[i].WebexEmailValidation = \"Pending Email Input\";\r\n else if (\r\n data[i].WebexEmailValidation === \"pending_email_validation\"\r\n )\r\n data[i].WebexEmailValidation = \"Pending Email Validation\";\r\n else if (data[i].WebexEmailValidation === \"provisioning\")\r\n data[i].WebexEmailValidation = \"Provisioning\";\r\n else {\r\n data[i].WebexEmailValidation;\r\n }\r\n }\r\n //have to remove code till here `sadatla\r\n this.setState({\r\n Listings: data,\r\n FullListings: data,\r\n syncing: false,\r\n lastSyncedDate: lastSyncedDate,\r\n });\r\n } else {\r\n this.setState({\r\n Listings: [],\r\n FullListings: [],\r\n syncing: false,\r\n lastSyncedDate: lastSyncedDate,\r\n });\r\n }\r\n })\r\n .catch((err) =>\r\n console.error(`admin/GetWebExServiceList() failed: ${err}`)\r\n );\r\n };\r\n\r\n onChange = (event) => {\r\n var newList = [];\r\n switch (event.target.value) {\r\n case \"All\":\r\n this.setState({ Listings: this.state.FullListings });\r\n break;\r\n case \"Provisioned\":\r\n newList = this.state.FullListings.filter(\r\n (list) => list.WebexEmailValidation === \"Provisioned\"\r\n );\r\n this.setState({ Listings: newList });\r\n break;\r\n case \"Pending Email Validation\":\r\n newList = this.state.FullListings.filter(\r\n (list) => list.WebexEmailValidation === \"Pending Email Validation\"\r\n );\r\n this.setState({ Listings: newList });\r\n break;\r\n case \"Pending Email Input\":\r\n newList = this.state.FullListings.filter(\r\n (list) => list.WebexEmailValidation === \"Pending Email Input\"\r\n );\r\n this.setState({ Listings: newList });\r\n break;\r\n case \"Provisioning\":\r\n newList = this.state.FullListings.filter(\r\n (list) => list.WebexEmailValidation === \"Provisioning\"\r\n );\r\n this.setState({ Listings: newList });\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n handleInputChange = async (gridId, e, key) => {\r\n let { value } = e.target;\r\n // ** filter current grid item\r\n let listing = this.state.Listings.filter(\r\n (itm) => itm.ServiceId == gridId\r\n )[0];\r\n // ** replace with updated object\r\n listing[key] = value;\r\n await this.setState({ Listings: this.state.Listings });\r\n //console.log(\"GridItem\", this.state.Listings); // inserted AD Information\r\n };\r\n\r\n updateWebexData = async (gridItem) => {\r\n let path = \"admin/UpdateWebExServiceList\";\r\n //console.log(gridItem);\r\n let response = await apiCalls\r\n .post(path, \"POST\", JSON.stringify(gridItem))\r\n .then((data) => data)\r\n .catch((err) =>\r\n console.error(`admin/UpdateWebExServiceList() failed: ${err}`)\r\n );\r\n if (response.ok) {\r\n await this.setState({\r\n Submission: true,\r\n SubmitError: false,\r\n DuplicateError: false,\r\n SubmittedId: gridItem.ServiceId,\r\n });\r\n this.fetchWebexData();\r\n } else {\r\n if (response.message.includes(\"Duplicate\")) {\r\n await this.setState({\r\n Submission: true,\r\n DuplicateError: true,\r\n //SubmittedId: null,\r\n SubmittedId: gridItem.ServiceId,\r\n });\r\n } else {\r\n // an error occurred while trying to submit\r\n await this.setState({\r\n Submission: true,\r\n SubmitError: true,\r\n //SubmittedId: null,\r\n SubmittedId: gridItem.ServiceId,\r\n });\r\n }\r\n }\r\n };\r\n\r\n submissionError = () => {\r\n if (this.state.SubmitError) {\r\n return (\r\n \r\n * Error occurred saving data. Please try again.\r\n \r\n );\r\n } else if (this.state.DuplicateError) {\r\n return * Email already exists.;\r\n } else return;\r\n };\r\n\r\n gridToolBar = () => {\r\n return (\r\n \r\n \r\n Export to Excel\r\n \r\n  \r\n \r\n Export to PDF\r\n \r\n \r\n );\r\n };\r\n\r\n syncWithWebex = async (e, props) => {\r\n let button = document.getElementById(props.dataItem.BroadsoftUserId);\r\n button.innerHTML = \"Refreshing...\";\r\n let path = `admin/GetWebExValidationResponse?BroadsoftUserId=${props.dataItem.BroadsoftUserId}&ServiceId=${props.dataItem.ServiceId}`;\r\n await apiCalls\r\n .fetchData(path)\r\n .then((data) => {\r\n button.innerHTML = \"Refresh Status\";\r\n if (data) {\r\n if (data.status === \"provisioned\") {\r\n var copy = this.state.Listings;\r\n copy.forEach(function (part, index) {\r\n if (part.BroadsoftUserId === props.dataItem.BroadsoftUserId) {\r\n part.WebexEmailValidation = \"Email Validated\";\r\n }\r\n }, copy);\r\n this.setState({\r\n loading: false,\r\n Listings: copy,\r\n });\r\n } else {\r\n this.setState({\r\n loading: false,\r\n });\r\n }\r\n }\r\n console.log(\"apidata\", data);\r\n })\r\n .catch((err) => {\r\n button.innerHTML = \"Refresh Status\";\r\n console.error(`admin/GetWebExServiceList() failed: ${err}`);\r\n });\r\n };\r\n\r\n syncAllUsers = async (enableDirSync) => {\r\n let path = `admin/GetEnterpriseUpdateDirectorySync?logUserName=${sessionStorage.username}&enterpriseId=${sessionStorage.userEnterpriseNumber}&enableDirSync=${enableDirSync}`;\r\n await apiCalls.fetchData(path).then((data) => {\r\n if (data != \"\") {\r\n var date = new Date(data.lastSuccessfulSyncTime);\r\n var toDate = new Date();\r\n const msBetweenDates = Math.abs(date.getTime() - toDate.getTime());\r\n\r\n // 👇️ convert ms to hours min sec ms\r\n const hoursBetweenDates = msBetweenDates / (60 * 60 * 1000);\r\n if (data.status == \"pending_start\" || data.status == \"on_hold\") {\r\n this.setState({\r\n directorySyncStatus: \"In queue to be processed\",\r\n disableDirectorySycnButton: true,\r\n directorySyncStatusTime: \"\"\r\n });\r\n } else if (data.status == \"in_progress\") {\r\n this.setState({\r\n directorySyncStatus: \"Currently being processed\",\r\n disableDirectorySycnButton: true,\r\n directorySyncStatusTime: \"\"\r\n });\r\n } else {\r\n if (data.status == \"complete\") {\r\n if (hoursBetweenDates < 24)\r\n this.setState({\r\n disableDirectorySycnButton: true,\r\n disableDirectorySycnButtonStatus: \"Directory sync can only be executed once per 24 hour period\",\r\n directorySyncStatusTime: date.toString()\r\n })\r\n else\r\n this.setState({\r\n disableDirectorySycnButton: false,\r\n disableDirectorySycnButtonStatus: \"\",\r\n directorySyncStatusTime: date.toString()\r\n\r\n })\r\n }\r\n this.setState({ directorySyncStatus: data.status });\r\n }\r\n }\r\n });\r\n };\r\n ValidationButton = (props) => {\r\n return (\r\n \r\n {props.dataItem.WebexEmailValidation != \"provisioned\" ? (\r\n this.syncWithWebex(e, props)}\r\n >\r\n Refresh Status\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n );\r\n };\r\n\r\n gridContent = () => {\r\n //let { UsersList } = this.state;\r\n if (!this.state.syncing) {\r\n let columnWidth = '140px';\r\n // if (\r\n // this.gridListings(this.state.filter) &&\r\n // this.gridListings(this.state.filter).length > 0\r\n // ) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n };\r\n\r\n sortChange = async (event) => {\r\n await this.setState({\r\n Listings: orderBy(this.state.Listings, event.sort),\r\n Sort: event.sort,\r\n });\r\n };\r\n\r\n filterChange = async (event) => {\r\n await this.setState({\r\n filter: event.filter,\r\n });\r\n };\r\n\r\n handleClearFilter = () => {\r\n let newFilter = {\r\n logic: \"and\",\r\n filters: [],\r\n };\r\n this.setState({ filter: newFilter });\r\n };\r\n\r\n handleEmailFilter = async () => {\r\n let newFilter = {\r\n logic: \"and\",\r\n filters: [\r\n {\r\n field: \"WebExEmail\",\r\n operator: \"contains\",\r\n value: \"matt\",\r\n ignoreCase: true,\r\n },\r\n ],\r\n };\r\n this.setState({ filter: newFilter });\r\n // let services = filterBy(this.state.Listings, {\r\n // logic: 'and',\r\n // filters: [\r\n // { field: 'WebExEmail', operator: 'contains', value: \"Matt\", ignoreCase: true },\r\n\r\n // ]\r\n // });\r\n // console.log(\"SERVICES\", services);\r\n // await this.setState({ Listings: services });\r\n };\r\n\r\n searchListings = (event) => {\r\n if (this.state.FullListings && this.state.FullListings.length > 0) {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullListings;\r\n if (searchText !== \"\") {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: \"or\",\r\n filters: [\r\n {\r\n field: \"LocationName\",\r\n operator: \"contains\",\r\n value: searchText,\r\n ignoreCase: true,\r\n },\r\n {\r\n field: \"WebExLicense\",\r\n operator: \"contains\",\r\n value: searchText,\r\n ignoreCase: true,\r\n },\r\n {\r\n field: \"PackageName\",\r\n operator: \"contains\",\r\n value: searchText,\r\n ignoreCase: true,\r\n },\r\n {\r\n field: \"FirstName\",\r\n operator: \"contains\",\r\n value: searchText,\r\n ignoreCase: true,\r\n },\r\n {\r\n field: \"LastName\",\r\n operator: \"contains\",\r\n value: searchText,\r\n ignoreCase: true,\r\n },\r\n {\r\n field: \"ServiceNumber\",\r\n operator: \"contains\",\r\n value: searchText,\r\n ignoreCase: true,\r\n },\r\n {\r\n field: \"WebExEmail\",\r\n operator: \"contains\",\r\n value: searchText,\r\n ignoreCase: true,\r\n },\r\n ],\r\n });\r\n this.delayedSearch(services);\r\n } else {\r\n this.delayedSearch(fullDetails);\r\n }\r\n }\r\n };\r\n\r\n delayedSearch = async (services) => {\r\n await this.setState({ loading: true });\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.setState({ Listings: services, loading: false });\r\n }, settings.searchDelay);\r\n };\r\n\r\n dropDownOptions = (key) => {\r\n let sort = [{ field: key, dir: \"asc\" }];\r\n let listings = orderBy(this.state.Listings.slice(), sort);\r\n let info = [\r\n ...listings.map((item) => item[key]).filter(helper.onlyUnique),\r\n ].filter((nonEmpty) => nonEmpty);\r\n return info;\r\n };\r\n\r\n gridListings = (filter) => {\r\n return filterBy(orderBy(this.state.Listings, this.state.Sort), filter);\r\n };\r\n\r\n exportBtn = () => {\r\n if (this.state.Listings.length > 0) {\r\n return (\r\n
    \r\n \r\n Export\r\n \r\n
    \r\n );\r\n } else return null;\r\n };\r\n\r\n exportUsers = () => {\r\n this.refs.downloadCsv.submit();\r\n this.refs.exportBtn.text = \"Downloading...\";\r\n setTimeout(() => {\r\n this.refs.exportBtn.text = \"Export Users\";\r\n }, 2000);\r\n };\r\n\r\n openAttachments = () => {\r\n this.refs.fileUploader.click();\r\n };\r\n\r\n addAttachment = async (event) => {\r\n let file = event.target.files[0];\r\n let reader = new FileReader();\r\n reader.addEventListener(\r\n \"loadend\",\r\n () => {\r\n let body = reader.result.split(\",\")[1];\r\n let name = file.name;\r\n this.createAttachment(body, name);\r\n },\r\n false\r\n );\r\n if (file) {\r\n reader.readAsDataURL(file);\r\n }\r\n };\r\n\r\n createAttachment = async (body, name, ticketId) => {\r\n let apiPath = \"admin/UploadWebExUsers\";\r\n let attachmentDTO = {\r\n TicketId: this.state.TicketId,\r\n AttachmentBody: body,\r\n FileName: name,\r\n };\r\n await this.setState({ attachmentSubmitted: true });\r\n let response = await apiCalls\r\n .post(apiPath, \"POST\", JSON.stringify(attachmentDTO))\r\n .then((res) => res)\r\n .catch((err) => console.error(err));\r\n if (response.ok) {\r\n await this.setState({\r\n Submission: true,\r\n submitError: false,\r\n });\r\n } else {\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n });\r\n }\r\n };\r\n\r\n uploadBtn = () => {\r\n return (\r\n \r\n {\r\n event.target.value = null;\r\n }}\r\n />\r\n this.openAttachments()}\r\n >\r\n Import Users\r\n \r\n \r\n );\r\n };\r\n cardContent = () => {\r\n if (!this.state.loading) {\r\n return (\r\n \r\n
    \r\n {/* \r\n * When entering an email address, you can either press [Enter] or\r\n mouse click outside the email field to save your data.\r\n \r\n {this.uploadBtn()}*/}\r\n
    \r\n\r\n <> {this.gridContent()}\r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Webex User List

    \r\n \r\n {/* {this.submissionError()} */}\r\n
    \r\n \r\n \r\n \r\n \r\n {/* \r\n Last Synced Date: \r\n */}\r\n {this.exportBtn()}\r\n\r\n this.syncAllUsers(false)}\r\n disabled={this.state.disableDirectorySycnButton}\r\n style={{\r\n marginTop: \"10px\",\r\n marginBottom: \"3px\",\r\n background: this.state.disableDirectorySycnButton\r\n ? \"darkgray\"\r\n : \"\",\r\n }}\r\n >\r\n Directory Sync\r\n \r\n

    \r\n
    \r\n Last Directory Sync Status: {this.state.directorySyncStatus}\r\n
    \r\n

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

    \r\n
    {this.state.disableDirectorySycnButtonStatus}
    \r\n
    \r\n
    \r\n
    \r\n Review Progress of Webex Activation:\r\n
    Last Webex Status Update:{this.state.lastSyncedDate}
    \r\n
    \r\n {/*
    \r\n {this.gridToolBar()}\r\n \r\n \r\n \r\n
    */}\r\n
    \r\n {/*
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    */}\r\n {this.cardContent()}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport SuperLink from '../../components/super_link';\r\nimport PayModal from '../modals/payModal';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { fetchData } from '../../requests/api_calls';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Link } from 'react-router-dom';\r\nimport { userIsAdmin } from '../../scripts/helper';\r\nimport * as config from '../../requests/config';\r\nimport * as currency from 'currency-formatter'\r\nimport * as session from '../../scripts/session';\r\n\r\nexport default class CircuitsAlerts extends Component {\r\n\r\n constructor() {\r\n super();\r\n this.state = {\r\n loading: true,\r\n downloading: true\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (userIsAdmin()) this.fetchBillingStat('admin/BillingStat');\r\n }\r\n\r\n fetchBillingStat = (apiPath, errorMsg) => {\r\n fetchData(apiPath).then((data) => {\r\n if (data !== null) {\r\n this.loadData(data);\r\n } else {\r\n this.setState({\r\n CustomerAccountNumber: sessionStorage.getItem('userEnterpriseNumber'),\r\n loading: false\r\n })\r\n }\r\n }).catch(ex => {\r\n this.setState({ loading: false });\r\n });\r\n }\r\n\r\n loadData = (data) => {\r\n this.setState({\r\n CustomerAccountNumber: data.CustomerAccountNumber,\r\n CustomerName: data.CustomerName,\r\n AccountNumber: data.AccountNumber,\r\n AccountBalance: currency.format(data.AccountBalance, { code: 'USD' }),\r\n Street1BILL: data.Street1BILL,\r\n Street2BILL: data.Street2BILL,\r\n CityBILL: data.CityBILL,\r\n StateBILL: data.StateBILL,\r\n ZipBILL: data.ZipBILL,\r\n InvoiceAmount: currency.format(data.InvoiceAmount, { code: 'USD' }),\r\n InvoiceDueDate: (new Date(data.InvoiceDueDate)).toLocaleDateString(),\r\n InvoiceURL: data.InvoiceURL.trim(),\r\n InvoiceID: data.InvoiceID,\r\n loading: false\r\n });\r\n }\r\n\r\n addressPartTwoSeparator = () => {\r\n if (this.state.Street2BILL) return
    ;\r\n }\r\n\r\n billingData = () => {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n let address = this.state.CityBILL ? (
    \r\n {this.state.Street1BILL}
    \r\n {this.state.Street2BILL} {this.addressPartTwoSeparator()}\r\n {this.state.CityBILL}, {this.state.StateBILL} {this.state.ZipBILL}\r\n\r\n
    ) : '';\r\n let billingMessage = process.env.REACT_APP_BILLING_MESSAGE;\r\n\r\n return (\r\n
    \r\n
    \r\n {/*

    {this.state.CustomerName}

    */}\r\n

    Alerts Notifications

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n {this.billingData()}\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\n","import React, { useState, useEffect } from \"react\";\r\nimport * as apiCalls from \"../../requests/api_calls\";\r\nimport { Modal } from \"react-bootstrap\";\r\nimport {\r\n Grid,\r\n GridColumn as Column,\r\n GridCell,\r\n} from \"@progress/kendo-react-grid\";\r\nimport \"./circuits.css\";\r\nimport { Button } from \"@progress/kendo-react-buttons\";\r\nimport { Link, withRouter } from \"react-router-dom\";\r\nimport { Item } from \"react-bootstrap/lib/Breadcrumb\";\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\n\r\nfunction CircuitList() {\r\n const [showModal, setShowModal] = useState(false);\r\n const [circuitList, setCircuitList] = useState([\r\n {\r\n LocationAccountNumber: \"\",\r\n LocationName: \"\",\r\n CircuitId: \"\",\r\n CircuitName: \"\",\r\n NIDMAC: \"\",\r\n NotificationEmail: \"\",\r\n CheckMkHostName: \"\",\r\n Status: \"\",\r\n CustomerProductId: \"\",\r\n SpeedDownstream: \"\",\r\n SpeedUpstream: \"\",\r\n TermInMonth: \"\",\r\n },\r\n ]);\r\n const [filteredCircuitList, setFilteredCircuitList] = useState([\r\n {\r\n LocationAccountNumber: \"\",\r\n LocationName: \"\",\r\n CircuitId: \"\",\r\n CircuitName: \"\",\r\n NIDMAC: \"\",\r\n NotificationEmail: \"\",\r\n CheckMkHostName: \"\",\r\n Status: \"\",\r\n CustomerProductId: \"\",\r\n SpeedDownstream: \"\",\r\n SpeedUpstream: \"\",\r\n TermInMonth: \"\",\r\n },\r\n ]);\r\n const [fullListings, setFullListings] = useState([\r\n {\r\n LocationAccountNumber: \"\",\r\n LocationName: \"\",\r\n CircuitId: \"\",\r\n CircuitName: \"\",\r\n NIDMAC: \"\",\r\n NotificationEmail: \"\",\r\n CheckMkHostName: \"\",\r\n Status: \"\",\r\n CustomerProductId: \"\",\r\n SpeedDownstream: \"\",\r\n SpeedUpstream: \"\",\r\n TermInMonth: \"\",\r\n },\r\n ]);\r\n const [loading, setLoading] = useState(false);\r\n const [statusLoading, setStatusLoading] = useState(false);\r\n const [Sort, setSort] = useState([{ field: \"ActiveStatus\", dir: \"asc\" }],)\r\n const [editCircuitItem, setEditCircuitItem] = useState({\r\n CircuitId: \"\",\r\n CircuitName: \"\",\r\n NotificationEmail: \"\",\r\n CustomerProductId: \"\",\r\n SpeedDownstream: \"\",\r\n SpeedUpstream: \"\",\r\n TermInMonth: \"\",\r\n CheckMkHostName: \"\"\r\n });\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n\r\n //making api call\r\n fetchCircuits();\r\n }, []);\r\n\r\n const fetchCircuits = async () => {\r\n let apiPath = \"admin/GetCircuitsList\";\r\n\r\n await apiCalls.fetchData(apiPath).then((data) => {\r\n setLoading(true);\r\n if (data) {\r\n //data.forEach(async (itm) => {\r\n // if (itm.CheckMkHostName && itm.CheckMkHostName !== \"\") {\r\n // let obj = await fetchActiveHosts(itm.CheckMkHostName);\r\n // let tt = JSON.parse(obj).ResultDetail;\r\n // let ti = JSON.parse(tt).state_text;\r\n // if (ti === \"OK\") {\r\n // itm.isActive = true;\r\n // } else {\r\n // itm.isActive = false;\r\n // }\r\n // }\r\n setCircuitList(data);\r\n setFilteredCircuitList(data);\r\n setFullListings(JSON.parse(JSON.stringify(data)));\r\n setLoading(false);\r\n //});\r\n } else {\r\n setLoading(false);\r\n }\r\n });\r\n };\r\n\r\n const fetchActiveHosts = async (hostname) => {\r\n setStatusLoading(true);\r\n let apiPath = `admin/CircuitMonitoring/GetCurrentStatusForHost?hostname=${hostname}`;\r\n return await apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n setStatusLoading(false);\r\n return data;\r\n } else {\r\n setStatusLoading(false);\r\n return null;\r\n }\r\n }).catch(err => console.error(err));\r\n };\r\n\r\n const handleSortChange = (e) => {\r\n setFilteredCircuitList(orderBy(filteredCircuitList, Sort));\r\n setSort(e.sort)\r\n }\r\n\r\n const searchCircuits = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = fullListings;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'CircuitId', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'CircuitName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Address1', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'City', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'State', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Zip', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n delayedSearch(services);\r\n }\r\n else {\r\n delayedSearch(fullDetails);\r\n }\r\n }\r\n\r\n const delayedSearch = async (services) => {\r\n // await setLoading(true)\r\n // if (this.timeout) clearTimeout(this.timeout);\r\n // this.timeout = setTimeout(() => {\r\n //this.setState({ UsersList: services, loading: false });\r\n setFilteredCircuitList(services);\r\n //setLoading(false);\r\n //}, settings.searchDelay);\r\n }\r\n\r\n const InterfaceCell = (props) => {\r\n let { CheckMkHostName } = props.dataItem;\r\n if (CheckMkHostName) {\r\n return (\r\n \r\n {CheckMkHostName}\r\n \r\n )\r\n } else {\r\n return (\r\n N/A\r\n )\r\n }\r\n }\r\n\r\n const SpeedCell = (props) => {\r\n let { SpeedDownstream } = props.dataItem;\r\n if (SpeedDownstream) {\r\n return (\r\n \r\n {SpeedDownstream}\r\n \r\n )\r\n } else {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n const LocationCell = (props) => {\r\n let { Address1, City, State, Zip } = props.dataItem;\r\n if (Address1) {\r\n return (\r\n \r\n {`${Address1}, ${City}, ${State} ${Zip}`}\r\n \r\n )\r\n } else {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n const StatusCell = (props) => {\r\n let customClassName = \"\";\r\n if (props.dataItem.ActiveStatus === \"active\") {\r\n customClassName = \"dot dot-success\";\r\n }\r\n if (props.dataItem.ActiveStatus === \"inactive\") {\r\n customClassName = \"dot dot-error\";\r\n }\r\n // if (statusLoading) {\r\n // return null;\r\n // } else {\r\n if (props.dataItem.CheckMkHostName && props.dataItem.CheckMkHostName !== \"\") {\r\n return (\r\n \r\n \r\n \r\n )\r\n } else {\r\n return (\r\n \r\n )\r\n }\r\n //}\r\n };\r\n\r\n const DataLinkCell = (props) => {\r\n let { CircuitId, CheckMkHostName, CircuitName, DeviceHostName, WANPortAlias, WANPort } = props.dataItem;\r\n if (CircuitId) {\r\n if (CheckMkHostName && CheckMkHostName !== \"\") {\r\n //console.log(\"PROPS\", props);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n\r\n \r\n );\r\n }\r\n } else {\r\n return \r\n }\r\n };\r\n\r\n const onHandleShow = (item) => {\r\n setShowModal(true);\r\n setEditCircuitItem({\r\n ...editCircuitItem,\r\n CircuitId: item.CircuitId,\r\n NIDMAC: item.NIDMAC,\r\n NotificationEmail: item.NotificationEmail,\r\n CircuitName: item.CircuitName,\r\n LocationName: item.LocationName,\r\n CustomerProductId: item.CustomerProductId,\r\n SpeedDownstream: item.SpeedDownstream,\r\n SpeedUpstream: item.SpeedUpstream,\r\n TermInMonth: item.TermInMonth,\r\n CheckMkHostName: item.CheckMkHostName,\r\n });\r\n };\r\n const onHandleClose = () => {\r\n setShowModal(false);\r\n };\r\n\r\n const EditCell = (props) => {\r\n return (\r\n <>\r\n {props.dataItem.NotificationEmail != \"\" && \r\n \r\n onHandleShow(props.dataItem)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n } \r\n );\r\n };\r\n\r\n const openANewTicket = (props) => {\r\n return (\r\n <>\r\n {props.dataItem.NotificationEmail != \"\" && \r\n \r\n \r\n Open Ticket\r\n \r\n \r\n } \r\n );\r\n };\r\n\r\n const editCircuitName = (e) => {\r\n setEditCircuitItem({ ...editCircuitItem, CircuitName: e.target.value });\r\n };\r\n const editDownloadSpeed = (e) => {\r\n //if (typeof parseInt(e.target.value) === \"integer\" && parseInt(e.target.value) > 0 && parseInt(e.target.value) < 1000000) {\r\n setEditCircuitItem({ ...editCircuitItem, SpeedDownstream: e.target.value });\r\n //}\r\n };\r\n const editUploadSpeed = (e) => {\r\n setEditCircuitItem({ ...editCircuitItem, SpeedUpstream: e.target.value });\r\n };\r\n const editCircuitNotification = (e) => {\r\n setEditCircuitItem({\r\n ...editCircuitItem,\r\n NotificationEmail: e.target.value,\r\n });\r\n };\r\n const updateCircuitList = async () => {\r\n //console.log(\"updated list\", editCircuitItem);\r\n var apiPath = \"admin/UpdateCircuitsList\";\r\n let circuitsDTO = {\r\n CustomerProductId: editCircuitItem.CustomerProductId,\r\n CircuitId: editCircuitItem.CircuitId,\r\n CircuitName: editCircuitItem.CircuitName,\r\n NotificationEmail: editCircuitItem.NotificationEmail,\r\n NIDMAC: editCircuitItem.NIDMAC,\r\n LocationName: editCircuitItem.LocationName,\r\n NIDIP: editCircuitItem.NIDIP,\r\n SpeedDownstream: editCircuitItem.SpeedDownstream,\r\n SpeedUpstream: editCircuitItem.SpeedUpstream,\r\n TermInMonth: editCircuitItem.TermInMonth,\r\n CheckMkHostName: editCircuitItem.CheckMkHostName,\r\n };\r\n // console.log(\"DATA\", circuitsDTO);\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(circuitsDTO)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n fetchCircuits();\r\n setShowModal(false);\r\n } else {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const gridContent = () => {\r\n if (loading) {\r\n return
    \r\n } else {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Circuits List

    \r\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 {/* <>REPLACE ADDRESS WITH FORMATTED VERSION */}\r\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

    Summary Widget

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

    {upCircuits}

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

    {downCircuits}

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

    {circuitList.length}

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

    0

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

    Edit Circuit Item

    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\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 return (\r\n <>\r\n {gridContent()}\r\n \r\n );\r\n}\r\n\r\nexport default CircuitList;","import React, { Component, Fragment } from 'react';\r\nimport { Chart } from '@progress/kendo-charts-react-wrapper';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { DatePicker } from '@progress/kendo-dateinputs-react-wrapper';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport moment from 'moment';\r\nimport * as helper from '../../scripts/helper';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport values from \"object.values\";\r\nimport format from 'string-format';\r\n\r\n//fusion chart\r\nimport ReactFC from \"react-fusioncharts\";\r\nimport FusionCharts from \"fusioncharts\";\r\nimport Column2D from \"fusioncharts/fusioncharts.charts\";\r\nimport FusionTheme from \"fusioncharts/themes/fusioncharts.theme.fusion\";\r\nReactFC.fcRoot(FusionCharts, Column2D, FusionTheme);\r\n\r\nconst defaultDaysAgo = 7;\r\nconst custom = 'custom';\r\nconst toDate = 'toDate';\r\nconst fromDate = 'fromDate';\r\nconst type = 'type';\r\nconst status = 'status';\r\nconst view = 'view';\r\nconst calendarFormat = 'M-D-YYYY';\r\nconst yearMonthDay = 'YYYY-MM-DD';\r\nconst loadTime = 500;\r\n\r\n// Graph colors\r\nconst internal_color = \"rgb(68, 87, 111)\";\r\nconst inbound_color = \"rgb(195, 213, 0)\";\r\nconst outlocal_color = \"rgb(255, 158, 21)\";\r\nconst outLD_color = \"rgb(230, 85, 178)\";\r\nconst international_color = \"rgb(255, 83, 70)\";\r\nconst other_color = 'purple';\r\n\r\nconst setFromDate = (totalDays) => {\r\n let daysAgo = totalDays - 1; // offset by one since including today\r\n return moment().subtract(daysAgo, 'days').startOf('day').format(yearMonthDay);\r\n}\r\n\r\nconst today = () => moment().format(yearMonthDay);\r\n\r\nexport default class CircuitsChart extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n filters: {\r\n type: \"ALL_CALLS\",\r\n view: 'CALLS',\r\n status: \"ALL_CALLS\",\r\n fromDate: setFromDate(defaultDaysAgo),\r\n toDate: today(),\r\n dateRangeVisibility: 'hide',\r\n },\r\n dateCounts: {},\r\n apiReturn: false,\r\n loadTimeExpired: false,\r\n legendItem: '',\r\n internalLegend: true,\r\n inboundLegend: true,\r\n outLocalLegend: true,\r\n outLdLegend: true,\r\n internationalLegend: true,\r\n otherLegend: true,\r\n ///\r\n graphData: [],\r\n dateRangeOptions: [],\r\n graphMeasurementsOptions: [],\r\n DateRange: \"-1D:Now\",\r\n Measurement: \"PING.rta\",\r\n XCoords: [],\r\n YCoords: [],\r\n };\r\n this.setDateRange = this.setDateRange.bind(this);\r\n this.setCustomDate = this.setCustomDate.bind(this);\r\n this.setCallFilter = this.setCallFilter.bind(this);\r\n this.handleSetLegend = this.handleSetLegend.bind(this);\r\n };\r\n\r\n componentDidMount() {\r\n //this.fetchDateRange();\r\n //this.fetchGraphMeasurements();\r\n this.fetchGraphData();\r\n }\r\n\r\n fetchDateRange = async () => {\r\n let path = \"Grafana/GetDateRangeForGraph\";\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n //console.log(\"PARSE\", JSON.parse(data));\r\n let parsedData = JSON.parse(data);\r\n let options = parsedData.map(item => )\r\n this.setState({\r\n dateRange: parsedData,\r\n dateRangeOptions: options,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n dateRange: [],\r\n dateRangeOptions: [],\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchGraphData = async () => {\r\n await this.setState({ loading: true });\r\n let host = 'chc-riverside';\r\n //let measurement = 'PING.rta';\r\n //let dateRange = \"-1D:Now\";\r\n let measurementFriendlyName = '';\r\n let maxDataPoints = 20;\r\n let path = `Grafana/GetDataForGraph?host=${host}&measurement=${this.state.Measurement}&dateRange=${this.state.DateRange}&measuremnetFriendlyName=${measurementFriendlyName}&maxDataPoints=${maxDataPoints}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n let parsedData = JSON.parse(JSON.parse(data));\r\n let copy = JSON.parse(JSON.stringify(parsedData));\r\n //let graphData = JSON.parse(parsedData.graphData)[0];\r\n //console.log(graphData);\r\n\r\n // let graphUrl = JSON.parse(parsedData.graphImageUrl);\r\n\r\n console.log(copy.parsedData);\r\n\r\n let datapoints = JSON.parse(copy.graphData)[0].datapoints;\r\n let xCoords = datapoints.map(itm => itm[1]);\r\n let yCoords = datapoints.map(itm => itm[0].toFixed(2));\r\n \r\n this.setState({\r\n graphData: JSON.parse(parsedData.graphData)[0],\r\n graphUrl: parsedData.graphImageUrl,\r\n coords: [xCoords, yCoords],\r\n loading: false,\r\n XCoords: xCoords,\r\n YCoords: yCoords\r\n\r\n });\r\n\r\n \r\n\r\n\r\n } else {\r\n this.setState({\r\n graphData: [],\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n getFusionChartConfig = () => {\r\n \r\n const sampleData = [{\"label\":\"2021-09-09T12:26:40-04:00\",\"value\":33.40},{\"label\":\"2021-09-09T12:28:00-04:00\",\"value\":33.9695},{\"label\":\"2021-09-09T12:29:20-04:00\",\"value\":33.985},{\"label\":\"2021-09-09T12:30:40-04:00\",\"value\":0},{\"label\":\"2021-09-09T12:32:00-04:00\",\"value\":34.007},{\"label\":\"2021-09-09T12:33:20-04:00\",\"value\":33.98},{\"label\":\"2021-09-09T12:34:40-04:00\",\"value\":34.042},{\"label\":\"2021-09-09T12:36:00-04:00\",\"value\":33.956},{\"label\":\"2021-09-09T12:37:20-04:00\",\"value\":33.966},{\"label\":\"2021-09-09T12:38:40-04:00\",\"value\":34.03},{\"label\":\"2021-09-09T12:40:00-04:00\",\"value\":33.982},{\"label\":\"2021-09-09T12:41:20-04:00\",\"value\":34.0045},{\"label\":\"2021-09-09T12:42:40-04:00\",\"value\":33.983},{\"label\":\"2021-09-09T12:44:00-04:00\",\"value\":34.017},{\"label\":\"2021-09-09T12:45:20-04:00\",\"value\":33.906},{\"label\":\"2021-09-09T12:46:40-04:00\",\"value\":34.065},{\"label\":\"2021-09-09T12:48:00-04:00\",\"value\":33.957},{\"label\":\"2021-09-09T12:49:20-04:00\",\"value\":33.966499999999996},{\"label\":\"2021-09-09T12:50:40-04:00\",\"value\":34.121},{\"label\":\"2021-09-09T12:52:00-04:00\",\"value\":33.994},{\"label\":\"2021-09-09T12:53:20-04:00\",\"value\":33.945499999999996},{\"label\":\"2021-09-09T12:54:40-04:00\",\"value\":34.007},{\"label\":\"2021-09-09T12:56:00-04:00\",\"value\":33.992},{\"label\":\"2021-09-09T12:57:20-04:00\",\"value\":33.9705},{\"label\":\"2021-09-09T12:58:40-04:00\",\"value\":33.965},{\"label\":\"2021-09-09T13:00:00-04:00\",\"value\":33.896},{\"label\":\"2021-09-09T13:01:20-04:00\",\"value\":33.921},{\"label\":\"2021-09-09T13:02:40-04:00\",\"value\":33.923},{\"label\":\"2021-09-09T13:04:00-04:00\",\"value\":33.903},{\"label\":\"2021-09-09T13:05:20-04:00\",\"value\":33.972},{\"label\":\"2021-09-09T13:06:40-04:00\",\"value\":33.9},{\"label\":\"2021-09-09T13:08:00-04:00\",\"value\":33.909},{\"label\":\"2021-09-09T13:09:20-04:00\",\"value\":33.973},{\"label\":\"2021-09-09T13:10:40-04:00\",\"value\":33.937},{\"label\":\"2021-09-09T13:12:00-04:00\",\"value\":33.957},{\"label\":\"2021-09-09T13:13:20-04:00\",\"value\":33.9595},{\"label\":\"2021-09-09T13:14:40-04:00\",\"value\":33.978},{\"label\":\"2021-09-09T13:16:00-04:00\",\"value\":34.02},{\"label\":\"2021-09-09T13:17:20-04:00\",\"value\":33.951499999999996},{\"label\":\"2021-09-09T13:18:40-04:00\",\"value\":33.991},{\"label\":\"2021-09-09T13:20:00-04:00\",\"value\":33.955},{\"label\":\"2021-09-09T13:21:20-04:00\",\"value\":33.9925},{\"label\":\"2021-09-09T13:22:40-04:00\",\"value\":33.897},{\"label\":\"2021-09-09T13:24:00-04:00\",\"value\":33.904},{\"label\":\"2021-09-09T13:25:20-04:00\",\"value\":33.9}];\r\n \r\n \r\n var chartConfigs = {\r\n type: \"line\", // The chart type\r\n width: \"100%\", // Width of the chart\r\n height: \"100%\", // Height of the chart\r\n dataFormat: \"json\", // Data type\r\n dataSource: {\r\n \r\n // Chart Configuration\r\n chart: {\r\n //Set the chart caption\r\n caption: \"Ping RTA\",\r\n //Set the chart subcaption\r\n subCaption: \"chc-riverside\",\r\n //Set the x-axis name\r\n xAxisName: \"\",\r\n //Set the y-axis name\r\n yAxisName: \"Milli-Seconds\",\r\n //numberSuffix: \"K\",\r\n //Set the theme for your chart\r\n theme: \"fusion\",\r\n\r\n setAdaptiveYMin: true,\r\n\r\n showLabels: false\r\n },\r\n\r\n data: sampleData\r\n }\r\n \r\n \r\n };\r\n\r\n return chartConfigs;\r\n\r\n }\r\n\r\n\r\n filterCallActivity = () => {\r\n if (this.state.filters.fromDate && this.state.filters.toDate) {\r\n let apiPathAndParams = 'admin/CallActivity' + this.callActivityFilterString();\r\n this.fetchCallActivity(apiPathAndParams);\r\n }\r\n }\r\n\r\n callActivityFilterString = () => {\r\n let filters = this.state.filters;\r\n let filterString = '?CallType=' + filters.type;\r\n filterString += '&CallView=' + filters.view;\r\n filterString += '&CallStatus=' + filters.status;\r\n filterString += '&FromDate=' + moment(filters.fromDate).format(yearMonthDay);\r\n filterString += '&ToDate=' + moment(filters.toDate).format(yearMonthDay);\r\n return filterString\r\n }\r\n\r\n fetchCallActivity = (apiPath, errorMsg) => {\r\n this.setState({ apiReturn: false, loadTimeExpired: false });\r\n this.forcedLoadTime();\r\n apiCalls.fetchData(apiPath).then((data) => {\r\n if (data !== null) {\r\n //console.log(\"This is call activity data\",data)\r\n let count = data.reduce((total, currentValue) => {\r\n return total + currentValue.ALL_CALLS;\r\n }, 0);\r\n //console.log(\"Count value\",count)\r\n sessionStorage.setItem(\"callActivityCount\", count)\r\n this.setState({\r\n callActivity: data,\r\n dateCounts: {\r\n internal: this.mapCallActivity(data, 'INTERNAL'),\r\n inbound: this.mapCallActivity(data, 'INBOUND'),\r\n outboundLocal: this.mapCallActivity(data, 'OUTBOUND_LOCAL'),\r\n outboundLd: this.mapCallActivity(data, 'OUTBOUND_LD'),\r\n international: this.mapCallActivity(data, 'INTERNATIONAL'),\r\n other: this.mapCallActivity(data, 'OTHER'),\r\n },\r\n apiReturn: true\r\n });\r\n } else {\r\n this.setState({\r\n callActivity: null,\r\n apiReturn: true\r\n });\r\n };\r\n }).catch(() => {\r\n this.setState({\r\n callActivity: null,\r\n apiReturn: true\r\n });\r\n }\r\n )\r\n }\r\n\r\n mapCallActivity = (data, propertyName) => {\r\n let startDate = moment(this.state.filters.fromDate);\r\n let endDate = moment(this.state.filters.toDate).add(1, 'days');\r\n let totalDays = endDate.diff(startDate, 'days');\r\n let dates = [];\r\n for (var i = 0; i < totalDays; i++) {\r\n dates.unshift(endDate.subtract(1, 'days').format(yearMonthDay));\r\n }\r\n this.setState({ dates: dates });\r\n return dates.map(date => {\r\n let dataItems = data.filter(item => item.CallDate === date);\r\n let dataItem = null;\r\n if (dataItems.length > 0) dataItem = dataItems[0];\r\n return dataItem ? dataItem[propertyName] : 0;\r\n })\r\n }\r\n\r\n setDateRange = (event) => {\r\n let filters = { ...this.state.filters };\r\n if (event.target.value != custom) {\r\n filters.fromDate = event.target.value;\r\n filters.toDate = today();\r\n filters.dateRangeVisibility = 'hide';\r\n sessionStorage.setItem('CallActivityFilters', JSON.stringify(filters));\r\n this.redrawChart(filters);\r\n } else {\r\n filters.fromDate = event.target.value;\r\n filters.toDate = today();\r\n filters.dateRangeVisibility = 'show';\r\n this.setState({ filters: filters });\r\n }\r\n }\r\n\r\n setCallFilter = (event, filterKey) => {\r\n let filters = { ...this.state.filters };\r\n filters[filterKey] = event.target.value;\r\n sessionStorage.setItem('CallActivityFilters', JSON.stringify(filters));\r\n this.redrawChart(filters);\r\n }\r\n\r\n setCustomDate = (event, filterKey) => {\r\n let filters = { ...this.state.filters };\r\n if (event.sender.value()) {\r\n var date = moment(event.sender.value()).format(\"YYYY-MM-DD\");\r\n } else {\r\n var date = null;\r\n }\r\n filters[filterKey] = date;\r\n sessionStorage.setItem('CallActivityFilters', JSON.stringify(filters));\r\n if (this.validCustomDate(filters, filterKey, date)) this.redrawChart(filters);\r\n }\r\n\r\n validCustomDate = (filters, filterKey, date) => {\r\n let fromDate = moment(filterKey == 'fromDate' ? date : this.state.filters.fromDate);\r\n let toDate = moment(filterKey == 'toDate' ? date : this.state.filters.toDate);\r\n if (date === null) {\r\n this.setState({ filters: filters, errorMsg: 'Both dates must be provided to use a custom date range.' });\r\n } else if (fromDate.isBefore(toDate) || fromDate._i == toDate._i) {\r\n this.setState({ filters: filters, errorMsg: null });\r\n var isValid = true;\r\n } else {\r\n this.setState({ filters: filters, errorMsg: 'The start date must be before the end date.' });\r\n var isValid = false;\r\n }\r\n return isValid;\r\n }\r\n\r\n redrawChart = (filters) => {\r\n this.setState({ filters: filters }, () => {\r\n // make API request after state since needed for API query string\r\n this.filterCallActivity();\r\n });\r\n }\r\n\r\n callCounts = (category) => {\r\n let countsArray = this.state.dateCounts[category];\r\n if (this.noResults()) {\r\n return 0;\r\n } else {\r\n let count = countsArray.reduce((total, value) => total + value)\r\n return helper.numberWithDelimiter(count);\r\n }\r\n }\r\n\r\n maxCount = (data) => {\r\n return Math.max(...data); //* 1.05 // adding 5% buffer\r\n }\r\n\r\n chartSeries = () => {\r\n const chartSeriesConfig = (name, data, color) => ({ name: name, data: data, color: color });\r\n //let coords = this.state.graphData.dataPoints;//this.state.dateCounts;\r\n let { coords } = this.state;\r\n //let { datapoints, tags, target } = this.state.graphData;\r\n let seriesList = [\r\n chartSeriesConfig('', coords[1], \"red\"),\r\n ];\r\n\r\n // if (this.state.legendItem === 'internal') {\r\n // return seriesList.filter(item => item.name === 'Internal');\r\n // } else if (this.state.legendItem === 'inbound') {\r\n // return seriesList.filter(item => item.name === 'Inbound');\r\n // } else if (this.state.legendItem === 'out_local') {\r\n // return seriesList.filter(item => item.name === 'Out Local');\r\n // } else if (this.state.legendItem === 'out_ld') {\r\n // return seriesList.filter(item => item.name === 'Out LD');\r\n // } else if (this.state.legendItem === 'international') {\r\n // return seriesList.filter(item => item.name === 'International');\r\n // } else if (this.state.legendItem === 'other') {\r\n // return seriesList.filter(item => item.name === 'Other');\r\n // } else {\r\n // return seriesList;\r\n // }\r\n\r\n return seriesList;\r\n }\r\n\r\n chartOptions = () => {\r\n // let counts = this.state.dateCounts;\r\n // let dates = this.state.dates;\r\n // if (counts != null && dates != null) {\r\n let options = {\r\n legend: {\r\n visible: false\r\n },\r\n seriesDefaults: {\r\n type: \"line\"\r\n },\r\n series: this.chartSeries(),\r\n chartArea: {\r\n height: 360\r\n },\r\n valueAxis: { // y-coord\r\n min: Math.min(...this.state.coords[1]) === 0 ? 0 : Math.min(...this.state.coords[1]),\r\n max: Math.max(...this.state.coords[1]),\r\n line: {\r\n visible: false\r\n },\r\n minorGridLines: {\r\n visible: true\r\n },\r\n labels: {\r\n rotation: \"auto\",\r\n color: '#b3b1b1'\r\n }\r\n },\r\n categoryAxis: { // x-coord\r\n categories: this.state.coords[0],//dates.map(date => moment(date).format(calendarFormat)),\r\n majorGridLines: {\r\n visible: false\r\n },\r\n color: '#FFF'\r\n },\r\n tooltip: {\r\n visible: true,\r\n format: \"Value: {0:N0}\",\r\n template: \"#= series.name # : #= value # on #= kendo.toString(category) # \"\r\n }\r\n }\r\n return options;\r\n //}\r\n }\r\n\r\n noResults = () => (this.state.callActivity == null || this.state.errorMsg);\r\n\r\n splashDisplay = () => {\r\n if (this.state.graphData && this.state.graphUrl) {\r\n return (\r\n \r\n \r\n

    iframes are not supported by your browser.

    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n fusionChartContent = () => {\r\n \r\n if (!this.state.loading) {\r\n if (!this.state.graphData || this.state.graphData.length === 0) {\r\n return (\r\n

    \r\n {this.state.errorMsg || 'No call activity found with the above filters selected.'}\r\n

    \r\n )\r\n } else return \r\n } else return \r\n // return \r\n }\r\n\r\n chartContent = () => {\r\n if (!this.state.loading) {\r\n if (!this.state.graphData || this.state.graphData.length === 0) {\r\n return (\r\n

    \r\n {this.state.errorMsg || 'No call activity found with the above filters selected.'}\r\n

    \r\n )\r\n } else return \r\n } else return \r\n // return \r\n }\r\n\r\n forcedLoadTime = () => {\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.setState({ loadTimeExpired: true })\r\n }, loadTime);\r\n return true;\r\n }\r\n\r\n handleSetLegend = (legendItem) => {\r\n let legendItems = [{ name: 'internalLegend', legendName: 'internal', value: this.state.internalLegend, selected: legendItem === 'internalLegend' },\r\n { name: 'inboundLegend', legendName: 'inbound', value: this.state.inboundLegend, selected: legendItem === 'inboundLegend' },\r\n { name: 'outLocalLegend', legendName: 'out_local', value: this.state.outLocalLegend, selected: legendItem === 'outLocalLegend' },\r\n { name: 'outLdLegend', legendName: 'out_ld', value: this.state.outLdLegend, selected: legendItem === 'outLdLegend' },\r\n { name: 'internationalLegend', legendName: 'international', value: this.state.internationalLegend, selected: legendItem === 'internationalLegend' },\r\n { name: 'otherLegend', legendName: 'other', value: this.state.internationalLegend, selected: legendItem === 'otherLegend' }\r\n ]\r\n let notSelectedItems = legendItems.filter(resp => resp.selected === false);\r\n let prop1 = notSelectedItems[0], prop2 = notSelectedItems[1], prop3 = notSelectedItems[2], prop4 = notSelectedItems[3], prop5 = notSelectedItems[4]\r\n let selectedItem = legendItems.filter(resp => resp.selected === true)[0].legendName\r\n if (this.state.legendItem === selectedItem)\r\n selectedItem = '';\r\n this.setState({\r\n legendItem: selectedItem,\r\n [prop1.name]: !prop1.value,\r\n [prop2.name]: !prop2.value,\r\n [prop3.name]: !prop3.value,\r\n [prop4.name]: !prop4.value,\r\n [prop5.name]: !prop5.value,\r\n });\r\n }\r\n\r\n callCategoryHyperlink = (category) => {\r\n return (\r\n {\r\n sessionStorage.setItem('EnterpriseCallCategoryFilter', category);\r\n this.props.transition();\r\n }}>{category}\r\n )\r\n }\r\n\r\n handleSetOutLocalLegend = () => {\r\n if (this.state.outLocalLegend) {\r\n this.setState({\r\n internalLegend: !this.state.internalLegend,\r\n inboundLegend: !this.state.inboundLegend,\r\n outLdLegend: !this.state.outLdLegend,\r\n internationalLegend: !this.state.internationalLegend\r\n });\r\n if ((this.state.internalLegend && this.state.inboundLegend && this.state.outLdLegend && this.state.internationalLegend)) this.setState({ legendItem: 'out_local' });\r\n if (!(this.state.internalLegend && this.state.inboundLegend && this.state.outLdLegend && this.state.internationalLegend)) this.setState({ legendItem: '' });\r\n return;\r\n\r\n }\r\n }\r\n\r\n handleSetOutLdLegend = () => {\r\n if (this.state.outLdLegend) {\r\n this.setState({\r\n internalLegend: !this.state.internalLegend,\r\n inboundLegend: !this.state.inboundLegend,\r\n outLocalLegend: !this.state.outLocalLegend,\r\n internationalLegend: !this.state.internationalLegend\r\n });\r\n if ((this.state.internalLegend && this.state.inboundLegend && this.state.outLocalLegend && this.state.internationalLegend)) this.setState({ legendItem: 'out_ld' });\r\n if (!(this.state.internalLegend && this.state.inboundLegend && this.state.outLocalLegend && this.state.internationalLegend)) this.setState({ legendItem: '' });\r\n return;\r\n\r\n }\r\n }\r\n\r\n handleSetInternationalLegend = () => {\r\n if (this.state.internationalLegend) {\r\n this.setState({\r\n internalLegend: !this.state.internalLegend,\r\n inboundLegend: !this.state.inboundLegend,\r\n outLocalLegend: !this.state.outLocalLegend,\r\n outLdLegend: !this.state.outLdLegend\r\n });\r\n if ((this.state.internalLegend && this.state.inboundLegend && this.state.outLocalLegend && this.state.outLdLegend)) this.setState({ legendItem: 'international' });\r\n if (!(this.state.internalLegend && this.state.inboundLegend && this.state.outLocalLegend && this.state.outLdLegend)) this.setState({ legendItem: '' });\r\n return;\r\n\r\n }\r\n }\r\n\r\n handleFilterChange = async (e, key) => {\r\n console.log(\"TARGET\", e.target.value);\r\n console.log(\"KEY\", key);\r\n\r\n let state = { ...this.state };\r\n console.log(\"state\", state);\r\n state[key] = e.target.value;\r\n await this.setState({ state });\r\n console.log(\"AFTER\", state);\r\n this.fetchGraphData();\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n

    Circuits Activity

    \r\n {/* Call Details */}\r\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 await this.setState({ DateRange: e.target.value });\r\n this.fetchGraphData();\r\n }}\r\n value={this.state.DateRange}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n { this.setCustomDate(event, fromDate) }}\r\n />\r\n
    \r\n
    \r\n \r\n { this.setCustomDate(event, toDate) }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.fusionChartContent()}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n};","import React, { Component } from \"react\";\r\nimport { withRouter, Link } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport CircuitsAlerts from \"./circuits_alerts\";\r\nimport CircuitList from \"./circuits_list\";\r\nimport CircuitsChart from \"./circuits_chart\";\r\nimport Masonry from \"react-masonry-component\";\r\nimport * as apiCalls from \"../../requests/api_calls\";\r\n\r\nexport default class CircuitsDashboard extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const CircuitsList = this.CircuitsList.bind(this);\r\n const CircuitsChart = this.CircuitsChart.bind(this);\r\n\r\n let widgets = [\r\n {\r\n toggle: \"showFavServices\",\r\n functionName: CircuitsList,\r\n widgetRow: 0,\r\n widgetColumn: 0,\r\n },\r\n {\r\n toggle: \"showCallChart\",\r\n functionName: CircuitsChart,\r\n widgetRow: 0,\r\n widgetColumn: 0,\r\n },\r\n ];\r\n\r\n this.state = {\r\n showFavServices: true,\r\n showCallChart: true,\r\n widgets: widgets,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n //this.fetchCircuits();\r\n }\r\n\r\n fetchCircuits = async () => {\r\n let path = \"admin/GetCircuitsPermission\";\r\n await apiCalls\r\n .fetchData(path)\r\n .then((data) => data)\r\n .catch((err) => console.error(err));\r\n };\r\n\r\n // componentWillReceiveProps = (props) => {\r\n // let state = this.state;\r\n // if (state.hasTicketing !== props.hasTicketing || state.hasDevices !== props.hasDevices || state.ipTrunkingOnly !== props.ipTrunkingOnly) //in the future this may change if user can customize their dashboard\r\n // this.setState({\r\n // hasTicketing: props.hasTicketing,\r\n // hasDevices: props.hasDevices,\r\n // showFavServices: true,\r\n // showActivityHistory: true,\r\n // showStarredTicketingWidget: ((!props.hasTicketing && state.hasTicketing === false) || props.hasTicketing === 'NONE') ? false : true,\r\n // showQuickView: true,\r\n // showDevices: (props.ipTrunkingOnly !== null && props.ipTrunkingOnly !== undefined && props.ipTrunkingOnly === true) ? false : state.showDevices,\r\n // showCallChart: true,\r\n // showTicketingCountsWidget: ((!props.hasTicketing && state.hasTicketing === false) || props.hasTicketing === 'NONE') ? false : true,\r\n // })\r\n // }\r\n\r\n transitionToCallLogDetails = () => {\r\n this.props.history.push(\"/enterpise_call_logs_all\");\r\n };\r\n\r\n CircuitsList = () => {\r\n return ;\r\n };\r\n\r\n CircuitsChart = () => {\r\n return ;\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n {/* */}\r\n \r\n \r\n {/*
    \r\n \r\n
    */}\r\n \r\n
    \r\n );\r\n }\r\n}","import React, { Component, useEffect, useState } from \"react\";\r\nimport * as d3 from \"d3\";\r\nimport { setAxis } from \"./components/axis\";\r\nimport { setArea } from \"./components/area\";\r\nimport { setTools } from \"./components/tools\";\r\nimport { setLegend } from \"./components/legend\";\r\n\r\nexport const DataViz = (props) => {\r\n const [data1, setData1] = useState(props.data1);\r\n const [data2, setData2] = useState(props.data2);\r\n const [data] = useState(props.data1.concat(props.data2));\r\n const [dateRange] = useState(props.DateRange)\r\n const [summary] = useState(props.summary);\r\n const [hasRendered, setHasRendered] = useState(false);\r\n //\r\n\r\n useEffect(() => {\r\n if (!hasRendered) { // TODO: trigger re-redner on screen resize\r\n drawViz();\r\n setHasRendered(true);\r\n }\r\n }, [data1, data2, data, summary, hasRendered]);\r\n\r\n const drawViz = () => {\r\n const margin = { top: 10, right: 30, bottom: 20, left: 50 };\r\n const width = 600;\r\n const height = 400;\r\n // append the svg object to the body of the page\r\n const svg = d3\r\n .select(`#${props.id}`)\r\n .append(\"svg\")\r\n .style(\"overflow\", \"visible\")\r\n .attr(\"preserveAspectRatio\", \"xMinYMin meet\")\r\n .attr(\"viewBox\", props.aspect)\r\n .append(\"g\")\r\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\r\n // Determine the maximum and minimum values of all the data points\r\n const maxValue = d3.max(data, (d) => +d.y);\r\n const minValue = d3.min(data, d => d.y !== '' && d.y !== null ? +d.y : undefined);\r\n // Set x-scale\r\n const x = d3\r\n .scaleTime()\r\n .domain(\r\n d3.extent(data, function (d) {\r\n return d.x;\r\n })\r\n )\r\n .range([0, width]);\r\n // Set the y-scale\r\n const y = d3\r\n .scaleLinear()\r\n .domain([0, maxValue])\r\n .range([height - margin.bottom - margin.top, 0])\r\n .nice();\r\n // chart options\r\n let chartOptions = {\r\n svg: svg,\r\n data1: data1,\r\n data2: data2,\r\n data: data,\r\n type: props.Type,\r\n width: width,\r\n height: height,\r\n margin: margin,\r\n x: x,\r\n y: y,\r\n id: props.id,\r\n summary: summary,\r\n deviceName: props.DeviceName,\r\n node: props.Node,\r\n color1: \"#77B6EA\",\r\n color2: \"#545454\",\r\n dateRange: dateRange,\r\n axisLabel: props.axisLabel\r\n }\r\n // set chart axis\r\n setAxis(chartOptions);\r\n // set chart areas and gradients\r\n setArea(chartOptions);\r\n // set chart tools\r\n setTools(chartOptions);\r\n // set chart legend\r\n setLegend(chartOptions);\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};","import * as d3 from \"d3\";\r\n\r\nexport const setAxis = (options) => {\r\n let { svg, data1, data2, data, type, height, width, margin, x, y, id, summary, deviceName, node, color1, color2, dateRange, axisLabel } = options;\r\n // Create x-Axis\r\n const xAxis = d3\r\n .axisBottom(x)\r\n .tickFormat(d3.timeFormat('%b %d'))\r\n // Create y-Axis\r\n const yAxis = d3\r\n .axisLeft(y)\r\n .ticks(5)\r\n // Append x-Axis\r\n svg\r\n .append('g')\r\n .attr('class', 'x-axis')\r\n .attr('transform', `translate(0, ${height-30})`)\r\n .call(xAxis)\r\n .selectAll(\"text\")\r\n .attr(\"transform\", \"rotate(-45)\")\r\n .attr(\"dx\", \"-.8em\")\r\n .attr(\"dy\", \".15em\")\r\n .style(\"text-anchor\", \"end\");\r\n // Append y-Axis\r\n svg\r\n .append('g')\r\n .attr('class', 'y-axis')\r\n .call(yAxis);\r\n // Add y-axis label\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"y-axis-label\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"x\", -height / 2)\r\n .attr(\"y\", -margin.left / 1.2)\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .text(axisLabel)\r\n .style(\"fill\", \"black\")\r\n .style(\"font-weight\", \"bold\");\r\n // Add vertical gridlines\r\n svg\r\n .selectAll('.vertical-grid-line')\r\n .data(x.ticks())\r\n .enter()\r\n .append('line')\r\n .attr('class', 'vertical-grid-line')\r\n .attr('x1', d => x(d))\r\n .attr('x2', d => x(d))\r\n .attr('y1', 0)\r\n .attr('y2', height)\r\n .attr('stroke', '#ddd')\r\n .attr('stroke-width', 1)\r\n .attr('stroke-dasharray', '5 5');\r\n // Add horizontal gridlines\r\n svg\r\n .selectAll('.horizontal-grid-line')\r\n .data(y.ticks())\r\n .enter()\r\n .append('line')\r\n .attr('class', 'horizontal-grid-line')\r\n .attr('x1', 0)\r\n .attr('x2', width)\r\n .attr('y1', d => y(d))\r\n .attr('y2', d => y(d))\r\n .attr('stroke', '#ddd')\r\n .attr('stroke-width', 1)\r\n .attr('stroke-dasharray', '5 5');\r\n};","import * as d3 from \"d3\";\r\n\r\nexport const setArea = (options) => {\r\n let { svg, data1, data2, data, type, height, width, margin, x, y, id, summary, deviceName, node, color1, color2, dateRange, axisLabel } = options;\r\n if (dateRange == \"-1d\" || dateRange == \"-2d\") {\r\n // Define the threshold value\r\n const thresholdValue = d3.quantile(data1.map(d => parseFloat(d.y)), 0.95);\r\n // Add the area with data\r\n svg\r\n .append(\"path\")\r\n .datum(data1)\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke\", \"url(#gradient)\")\r\n .attr(\"stroke-width\", 2.5)\r\n .attr(\"d\", d3.line()\r\n .defined((d) => { return d.y !== null; }) // define the data points to include\r\n .x((d) => { return x(d.x); })\r\n .y((d) => { return y(d.y); })\r\n );\r\n // Add gradient to the area with data1\r\n const gradient = svg\r\n .append(\"linearGradient\")\r\n .attr(\"id\", \"gradient\")\r\n .attr(\"gradientUnits\", \"userSpaceOnUse\")\r\n .attr(\"x1\", 0)\r\n .attr(\"y1\", 0)\r\n .attr(\"x2\", 0)\r\n .attr(\"y2\", height)\r\n .selectAll(\"stop\")\r\n .data([\r\n { offset: y(thresholdValue) / height, color: \"violet\" },\r\n { offset: y(thresholdValue) / height, color: color1 }\r\n ])\r\n .join(\"stop\")\r\n .attr(\"offset\", (d) => d.offset)\r\n .attr(\"stop-color\", (d) => d.color);\r\n } else {\r\n // Define the threshold values\r\n const thresholdValue = d3.quantile(data1.map(d => parseFloat(d.y)), 0.95);\r\n // Add the area with data1\r\n svg\r\n .append(\"path\")\r\n .datum(data1)\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke\", \"url(#gradient1)\")\r\n .attr(\"stroke-width\", 2.5)\r\n .attr(\"d\", d3.line()\r\n .defined((d) => { return d.y !== null; }) // define the data points to include\r\n .x((d) => { return x(d.x); })\r\n .y((d) => { return y(d.y); })\r\n );\r\n // Add the area with data2\r\n svg\r\n .append(\"path\")\r\n .datum(data2)\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke\", color2)\r\n .attr(\"stroke-width\", 2.5)\r\n .attr(\"d\", d3.line()\r\n .defined((d) => { return d.y !== null; }) // define the data points to include\r\n .x((d) => { return x(d.x); })\r\n .y((d) => { return y(d.y); })\r\n );\r\n // Add gradient1 to the area with data1\r\n const gradient1 = svg\r\n .append(\"linearGradient\")\r\n .attr(\"id\", \"gradient1\")\r\n .attr(\"gradientUnits\", \"userSpaceOnUse\")\r\n .attr(\"x1\", 0)\r\n .attr(\"y1\", 0)\r\n .attr(\"x2\", 0)\r\n .attr(\"y2\", height)\r\n .selectAll(\"stop\")\r\n .data([\r\n { offset: y(thresholdValue) / height, color: \"violet\" },\r\n { offset: y(thresholdValue) / height, color: color1 }\r\n ])\r\n .join(\"stop\")\r\n .attr(\"offset\", (d) => d.offset)\r\n .attr(\"stop-color\", (d) => d.color);\r\n }\r\n};","import * as d3 from \"d3\";\r\n\r\nexport const setTools = (options) => {\r\n let { svg, data1, data2, data, type, height, width, margin, x, y, id, summary, deviceName, node, color1, color2, dateRange, axisLabel } = options;\r\n // Tooltip element\r\n const tooltip = d3\r\n .select(`#${id}`)\r\n .append(\"div\")\r\n .style(\"opacity\", 0)\r\n .attr(\"class\", \"tooltip\")\r\n .style(\"background-color\", \"white\")\r\n .style(\"border\", \"solid\")\r\n .style(\"border-width\", \"2px\")\r\n .style(\"border-radius\", \"5px\")\r\n .style(\"padding\", \"5px\");\r\n // Add \"dots\" when hovering datapoints\r\n const dots = svg\r\n .selectAll(\"dot\")\r\n .data(data)\r\n .enter()\r\n .append(\"circle\")\r\n .attr(\"cx\", (d) => {\r\n return x(d.x);\r\n })\r\n .attr(\"cy\", (d) => {\r\n return y(d.y);\r\n })\r\n .attr(\"r\", 5)\r\n .attr(\"opacity\", 0) // set the opacity to 0 to make the circles not visible\r\n .attr(\"fill\", \"#69b3a2\")\r\n .on(\"mouseover\", showTooltip)\r\n .on(\"mouseout\", hideTooltip);\r\n // Create the horizontal line for clear y-axis visibility\r\n const horizontalLine = svg\r\n .append(\"line\")\r\n .attr(\"class\", \"horizontal-line\")\r\n .style(\"stroke-dasharray\", \"5, 5\")\r\n .style(\"stroke\", \"black\")\r\n .style(\"opacity\", 0)\r\n .attr(\"y1\", 0)\r\n .attr(\"y2\", 0);\r\n // Create the vertical line for clear x-axis visibility\r\n const verticalLine = svg\r\n .append(\"line\")\r\n .attr(\"class\", \"vertical-line\")\r\n .style(\"stroke-dasharray\", \"5, 5\")\r\n .style(\"stroke\", \"black\")\r\n .style(\"opacity\", 0)\r\n .attr(\"x1\", 0)\r\n .attr(\"x2\", 0)\r\n .attr(\"y1\", 0)\r\n .attr(\"y2\", height);\r\n // Hide tooltip\r\n function hideTooltip() {\r\n d3.select(this).transition().duration(100).style(\"opacity\", 0);\r\n tooltip.style(\"display\", \"none\");\r\n horizontalLine.style(\"opacity\", 0);\r\n verticalLine.style(\"opacity\", 0);\r\n };\r\n // Show tooltip\r\n function showTooltip(d) {\r\n // Get the mouse position relative to the chart container\r\n const [xPos, yPos] = d3.pointer(d);\r\n d3.select(this).transition().duration(100).style(\"opacity\", 0.7);\r\n // Update the position of the horizontal line\r\n horizontalLine\r\n .style(\"opacity\", 1)\r\n .attr(\"x1\", 0)\r\n .attr(\"x2\", width)\r\n .attr(\"y1\", yPos)\r\n .attr(\"y2\", yPos);\r\n // Update the position of the vertical line\r\n verticalLine\r\n .style(\"opacity\", 1)\r\n .attr(\"x1\", xPos)\r\n .attr(\"x2\", xPos)\r\n .attr(\"y1\", 0)\r\n .attr(\"y2\", height);\r\n if (d) {\r\n // Display the tooltip if hovering datapoint\r\n tooltip\r\n .attr(\"pointer-events\", \"none\")\r\n .attr(\"class\", \"tooltip\")\r\n .style(\"opacity\", 1)\r\n .style(\"height\", \"120px\")\r\n .style(\"width\", \"200px\")\r\n .style(\"left\", \"213.554px\")\r\n .style(\"top\", \"9.8574px\")\r\n .style(\"padding\", \"5px\")\r\n .style(\"background\", \"lightgrey\")\r\n .style(\"border\", \"1px solid #2b3d54\")\r\n .style(\"border-radius\", \"5%\")\r\n .style(\"color\", \"#2b3d54\")\r\n .style(\"display\", \"inline-block\")\r\n .html(\r\n `
    Mbps: ${d.target.__data__.y}

    Date: ${d.target.__data__.x}

    Direction: ${d.target.__data__.Field}
    `\r\n );\r\n } else {\r\n tooltip.style(\"opacity\", 0);\r\n }\r\n };\r\n};\r\n","import * as d3 from \"d3\";\r\n\r\nexport const setLegend = (options) => {\r\n let { svg, data1, data2, data, type, height, width, margin, x, y, id, summary, deviceName, node, color1, color2, dateRange, axisLabel } = options;\r\n if (summary) {\r\n // Create legend\r\n let legend = d3\r\n .select(`#${id}-legend`)\r\n .append('div');\r\n let legend_table = legend\r\n .append('p')\r\n .append('table')\r\n .attr('class', 'table table-condensed')\r\n .attr('style', 'width: ' + 100 + '%;');\r\n // Append the legend body\r\n let tbody = legend_table\r\n .append('tbody');\r\n // Append the legend headers\r\n let thead = legend_table\r\n .append('thead');\r\n let column_headers = ['Measurement', 'Min', 'Max', 'Last', '95th'];\r\n let tr = thead.append('tr');\r\n tr.selectAll('td')\r\n .data(column_headers)\r\n .enter()\r\n .append('td')\r\n .append('strong')\r\n .text((d) => { return d; });\r\n // Add rows to legend body\r\n tr = tbody.append('tr');\r\n tr.append('td').text(axisLabel)\r\n tr.append('td').text(summary.min + \" Mbps\");\r\n tr.append('td').text(summary.max + \" Mbps\");\r\n tr.append('td').text(summary.last + \" Mbps\");\r\n tr.append('td').append('div').attr('style', 'background-color: ' + \"violet\" + ';width: 8px; height: 8px; vertial-align: middle; border-radius: 50%');//.text(threshold);\r\n }\r\n};\r\n","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { DataViz } from './d3-line-chart';\r\n\r\nexport default class ExpandCircuitChart extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n\r\n this.state = {\r\n DateRange: this.props.DateRange,\r\n Measurement: this.props.Measurement,\r\n Type: this.props.Type,\r\n AggWindow: this.props.AggWindow,\r\n };\r\n }\r\n\r\n testChart = () => {\r\n if (this.props.DateRange == \"-1d\" || this.props.DateRange == \"-2d\") {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n } else {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n cardContent = () => {\r\n if (this.props.graphData && this.props.graphData.length > 0 && !this.state.loading) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n let { value } = e.target;\r\n let Type = this.state.Type;\r\n let AggWindow = \"D\";\r\n if (Type !== \"upDown\") {\r\n if (value == \"-7d\") {\r\n Type = `${this.state.Measurement}_${this.state.Type},avg_${this.state.Type}`;\r\n AggWindow = \"W\";\r\n } else if (value == \"-30d\") {\r\n Type = `${this.state.Measurement}_${this.state.Type},avg_${this.state.Type}`;\r\n AggWindow = \"M\";\r\n } else if (value == \"-365d\") {\r\n Type = `${this.state.Measurement}_${this.state.Type},avg_${this.state.Type}`;\r\n AggWindow = \"Y\";\r\n } else {\r\n Type = this.props.defaultType;\r\n AggWindow = \"D\";\r\n }\r\n }\r\n await this.setState({ loading: true, DateRange: e.target.value, Type: Type, AggWindow: AggWindow });\r\n await this.props.updateGraphUrl(this.state.DateRange, Type, this.state.AggWindow, this.state.Measurement);\r\n await this.setState({ loading: false });\r\n }}\r\n value={this.state.DateRange}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n {this.state.DateRange === \"-1d\" || this.state.DateRange === \"-2d\" || this.props.Type === \"upDown\" ? null :
    \r\n \r\n
    }\r\n
    \r\n
    \r\n {this.testChart()}\r\n
    \r\n )\r\n } else {\r\n return \r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport FullCircuitsGraph from './full_graph';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { DataViz } from './d3-line-chart';\r\n\r\nexport default class CircuitsGraph extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n\r\n this.state = {\r\n DateRange: this.props.DateRange,\r\n Measurement: this.props.measurement,\r\n Type: this.props.type,\r\n AggWindow: this.props.aggWindow,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.updateGraphUrl(this.state.DateRange, this.state.Type, this.state.AggWindow, this.state.Measurement);\r\n }\r\n\r\n componentWillReceiveProps() {\r\n if (\r\n this.state.DateRange !== this.props.DateRange ||\r\n this.state.Type !== this.props.type ||\r\n this.state.AggWindow !== this.props.aggWindow ||\r\n this.state.Measurement !== this.props.measurement\r\n ) {\r\n this.setState({\r\n DateRange: this.props.DateRange,\r\n Type: this.props.type,\r\n AggWindow: this.props.aggWindow,\r\n Measurement: this.props.measurement\r\n });\r\n }\r\n }\r\n\r\n cardContent = () => {\r\n if (this.props.graphData && this.props.graphData.length > 0 && !this.state.loading) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n let { value } = e.target;\r\n let Type = this.props.type;\r\n let AggWindow = \"D\";\r\n if (Type !== \"upDown\") {\r\n if (value == \"-7d\") {\r\n Type = `${this.state.Measurement}_${this.props.type},avg_${this.props.type}`;\r\n AggWindow = \"W\";\r\n } else if (value == \"-30d\") {\r\n Type = `${this.state.Measurement}_${this.props.type},avg_${this.props.type}`;\r\n AggWindow = \"M\";\r\n } else if (value == \"-365d\") {\r\n Type = `${this.state.Measurement}_${this.props.type},avg_${this.props.type}`;\r\n AggWindow = \"Y\";\r\n } else {\r\n Type = this.props.defaultType;\r\n AggWindow = \"D\";\r\n }\r\n }\r\n await this.setState({ loading: true, DateRange: e.target.value, Type: Type, AggWindow: AggWindow });\r\n await this.props.updateGraphUrl(this.state.DateRange, Type, this.state.AggWindow, this.state.Measurement);\r\n await this.setState({ loading: false });\r\n }}\r\n value={this.state.DateRange}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {this.state.DateRange === \"-1d\" || this.state.DateRange === \"-2d\" || this.props.type === \"upDown\" ? null :
    \r\n \r\n
    }\r\n
    \r\n
    \r\n {this.testChart()}\r\n
    \r\n )\r\n } else {\r\n return \r\n }\r\n }\r\n\r\n testChart = () => {\r\n if (this.state.DateRange == \"-1d\" || this.state.DateRange == \"-2d\") {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n } else {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
    \r\n
    {this.props.GraphTitle}\r\n 0 ? \"pointer\" : \"not-allowed\"\r\n }}\r\n disabled={this.props.graphData && this.props.graphData.length > 0 ? false : true}\r\n onClick={() => {\r\n this.setState({ showModal: true });\r\n }}\r\n >[Expand]\r\n
    \r\n
    \r\n \r\n \r\n {this.props.GraphTitle}\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n {this.cardContent()}\r\n \r\n )\r\n }\r\n}","import React, { Component } from \"react\";\r\nimport * as apiCalls from \"../../../requests/api_calls\";\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport Masonry from \"react-masonry-component\";\r\nimport CircuitsGraph from './graph_component';\r\nimport FullCircuitsGraph from './full_graph';\r\n//import DevicesGraphTest from \"./testDevices\";\r\n\r\nexport default class CircuitsGraphingDashboard extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n CircuitId: this.props.location.state.CircuitId,\r\n CircuitName: this.props.location.state.CircuitName,\r\n HostName: this.props.location.state.HostName,\r\n DeviceHostName: this.props.location.state.DeviceHostName,\r\n WANPortAlias: this.props.location.state.WANPortAlias,\r\n //\r\n dashView: \"\",\r\n rtaField: \"rta\",\r\n plField: \"pl\",\r\n ptaField: \"pta\",\r\n upDownField: \"upDown\",\r\n //\r\n rtaMeasurement: \"max\",\r\n plMeasurement: \"max\",\r\n ptaMeasurement: \"max\",\r\n upDownMeasurement: \"max\",\r\n //\r\n rtaAggWindow: \"D\",\r\n plAggWindow: \"D\",\r\n ptaAggWindow: \"D\",\r\n upDownAggWindow: \"D\",\r\n //\r\n rtaDateRange: \"-1d\",\r\n plDateRange: \"-1d\",\r\n ptaDateRange: \"-1d\",\r\n upDownDateRange: \"-1d\",\r\n }\r\n }\r\n\r\n packageData = (data, range, type = \"\") => {\r\n if (data) {\r\n let graphData = type == \"historical\" ? JSON.parse(data.Body.GetHistoricalUpDownForHostNameResult) : JSON.parse(data.Body.GetGraphInfoForHostSplitRtaResult);\r\n let summary = JSON.parse(graphData.JSONData).summary;\r\n let arr = JSON.parse(graphData.JSONData);\r\n if (range != \"-1d\" && range != \"-2d\") {\r\n if (arr.Avg) {\r\n arr.Avg.forEach((itm) => {\r\n if (itm) {\r\n itm.x = new Date(itm.x);\r\n }\r\n });\r\n } else {\r\n return [[], []]\r\n }\r\n if (arr.Max && !arr.Min) {\r\n if (arr.Max) {\r\n arr.Max.forEach((itm) => {\r\n if (itm) {\r\n itm.x = new Date(itm.x);\r\n }\r\n });\r\n return [arr.Max, arr.Avg, summary];\r\n } else {\r\n return [[], []]\r\n }\r\n } else {\r\n if (arr.Min) {\r\n arr.Min.forEach((itm) => {\r\n if (itm) {\r\n itm.x = new Date(itm.x);\r\n }\r\n });\r\n return [arr.Min, arr.Avg, summary];\r\n } else {\r\n return [[], []]\r\n }\r\n }\r\n } else {\r\n if (arr.data) {\r\n arr.data.forEach((itm) => {\r\n if (itm) {\r\n itm.x = new Date(itm.x);\r\n }\r\n });\r\n return [arr.data, summary];\r\n } else {\r\n return [[], []]\r\n }\r\n }\r\n } else {\r\n return [[], []]\r\n }\r\n };\r\n\r\n fetchGraphData = async (range, field, aggregateWindow) => {\r\n let host = this.props.location.state.HostName;\r\n let path = `admin/CircuitMonitoring/GetDataByHostName?range=${range}&field=${field}&hostname=${host}&aggregateWindow=${aggregateWindow}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n let packagedData = this.packageData(data, range);\r\n if (field == \"rta\" || field == \"max_rta,avg_rta\" || field == \"min_rta,avg_rta\") {\r\n this.setState({\r\n rta: packagedData,\r\n });\r\n return;\r\n } else if (field == \"pl\" || field == \"max_pl,avg_pl\" || field == \"min_pl,avg_pl\") {\r\n this.setState({\r\n pl: packagedData,\r\n });\r\n return;\r\n } else if (field == \"pta\" || field == \"max_pta,avg_pta\" || field == \"min_pta,avg_pta\") {\r\n this.setState({\r\n pta: packagedData,\r\n });\r\n return;\r\n } else {\r\n return;\r\n }\r\n }).catch(err => console.error(err));\r\n };\r\n\r\n fetchUpDownStatus = async (range) => {\r\n let host = this.props.location.state.HostName;\r\n let path = `admin/CircuitMonitoring/GetHistoricalUpDownDataByHostName?hostname=${host}&range=${range}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n let packagedData = this.packageData(data, range, \"historical\");\r\n this.setState({\r\n upDown: packagedData,\r\n });\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n redirectView = async (value) => {\r\n await this.setState({ dashView: value })\r\n }\r\n\r\n updateGraphUrl = async (dateRange = this.state.DateRange, type, aggWindow, measurement) => {\r\n if (type == \"rta\" || type == \"max_rta,avg_rta\" || type == \"min_rta,avg_rta\") {\r\n await this.setState({\r\n rtaDateRange: dateRange,\r\n rtaAggWindow: aggWindow,\r\n rtaMeasurement: measurement,\r\n rta: [],\r\n });\r\n await this.fetchGraphData(dateRange, this.getType(dateRange, \"rta\", this.state.rtaMeasurement), aggWindow);\r\n return;\r\n } else if (type == \"pl\" || type == \"max_pl,avg_pl\" || type == \"min_pl,avg_pl\") {\r\n await this.setState({\r\n plDateRange: dateRange,\r\n plAggWindow: aggWindow,\r\n plMeasurement: measurement,\r\n pl: [],\r\n });\r\n await this.fetchGraphData(dateRange, this.getType(dateRange, \"pl\", this.state.plMeasurement), aggWindow);\r\n return;\r\n } else if (type == \"pta\" || type == \"max_pta,avg_pta\" || type == \"min_pta,avg_pta\") {\r\n await this.setState({\r\n ptaDateRange: dateRange,\r\n ptaAggWindow: aggWindow,\r\n ptaMeasurement: measurement,\r\n pta: [],\r\n });\r\n await this.fetchGraphData(dateRange, this.getType(dateRange, \"pta\", this.state.ptaMeasurement), aggWindow);\r\n return;\r\n } else if (type == \"upDown\") {\r\n await this.setState({\r\n upDownDateRange: dateRange,\r\n upDownAggWindow: aggWindow,\r\n upDownMeasurement: measurement,\r\n upDown: [],\r\n });\r\n await this.fetchUpDownStatus(dateRange);\r\n return;\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n getType = (dateRange, val, measurement) => {\r\n if (dateRange == \"-1d\" || dateRange == \"-2d\") {\r\n return val;\r\n } else {\r\n return `${measurement}_${val},avg_${val}`;\r\n }\r\n }\r\n\r\n // deviceGraphs = () => {\r\n // if (this.state.CircuitId && this.state.HostName && this.state.DeviceHostName && this.state.WANPortAlias) {\r\n // return (\r\n // \r\n // )\r\n // } else return null;\r\n // }\r\n\r\n render() {\r\n //if (!this.state.loading) {\r\n switch (this.state.dashView) {\r\n default:\r\n return (\r\n
    \r\n
    \r\n
    {`${this.state.CircuitName}`}
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {/* {this.deviceGraphs()} */}\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n //} else return \r\n }\r\n}","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport { post, fetchData } from '../../requests/api_calls';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport { DataLoadingSpinner } from '../spinners';\r\nimport { storedUserRole, userIsAdmin, redirectToLanding } from \"../../scripts/helper\";\r\nimport * as settings from '../../scripts/settings';\r\n\r\nexport default class MFAAdminTool extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n showConfirmation: false,\r\n UserList: [],\r\n Sort: [{ field: \"UserId\", dir: \"desc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n GroupAdminBanner: null,\r\n };\r\n\r\n const openConfirmWindow = this.openConfirmWindow.bind(this);\r\n\r\n class ManageCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n let role = storedUserRole();\r\n let { UserId, VerificationMethod, UserTypeId } = this.props.dataItem;\r\n if (UserId && VerificationMethod) {\r\n if (role === 'GROUP_ADMIN' && UserTypeId === 1107) {\r\n return (\r\n \r\n \r\n {\"Reset MFA\"}\r\n \r\n \r\n )\r\n }\r\n return (\r\n \r\n openConfirmWindow(UserId)}\r\n >\r\n {\"Reset MFA\"}\r\n \r\n \r\n )\r\n } else {\r\n return (\r\n \r\n \r\n {\"Reset MFA\"}\r\n \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n this.ManageCell = ManageCell;\r\n }\r\n\r\n componentDidMount() {\r\n if (userIsAdmin()) {\r\n let role = storedUserRole();\r\n if (role === 'GROUP_ADMIN') {\r\n this.setState({ GroupAdminBanner: sessionStorage.AccountNumber })\r\n }\r\n this.fetchMfaUsers();\r\n } else {\r\n redirectToLanding();\r\n }\r\n }\r\n\r\n openConfirmWindow = (userid) => {\r\n this.setState({\r\n showConfirmation: true,\r\n selectedUser: userid\r\n });\r\n }\r\n\r\n fetchMfaUsers = async () => {\r\n await this.setState({ loading: true });\r\n let path = 'admin/MFAUserSearch';\r\n await fetchData(path)\r\n .then((data) => {\r\n if (data) {\r\n this.setState({\r\n UserList: data,\r\n FullListings: data,\r\n loading: false,\r\n validationError: \"\",\r\n //successMessage: \"\"\r\n });\r\n } else {\r\n this.setState({\r\n UserList: [],\r\n FullListings: [],\r\n loading: false,\r\n validationError: \"\",\r\n successMessage: \"\"\r\n });\r\n }\r\n })\r\n .catch((err) => console.error(err));\r\n }\r\n\r\n resetUserMFA = async (userId) => {\r\n try {\r\n this.setState({ loading: true });\r\n const path = 'admin/ResetUserMFA';\r\n const response = await post(path, \"POST\", JSON.stringify(userId));\r\n if (response.ok) {\r\n this.setState({\r\n loading: false,\r\n showConfirmation: false,\r\n validationError: \"\",\r\n successMessage: \"User's multi-factor authentication has been successfully reset!\",\r\n });\r\n this.fetchMfaUsers();\r\n if (userId === sessionStorage.userId) {\r\n sessionStorage.removeItem(\"verificationMethod\");\r\n }\r\n } else {\r\n console.error(`resetUserMFA(): failed: ${response.message}`);\r\n this.setState({\r\n loading: false,\r\n showConfirmation: false,\r\n validationError: \"Something went wrong while trying to reset user multi-factor authentication.\",\r\n successMessage: \"\",\r\n });\r\n }\r\n } catch (error) {\r\n console.error(`resetUserMFA(): failed: ${error}`);\r\n this.setState({\r\n loading: false,\r\n showConfirmation: false,\r\n validationError: \"Something went wrong while trying to reset user multi-factor authentication.\",\r\n successMessage: \"\",\r\n });\r\n }\r\n }\r\n\r\n errorContent = () => {\r\n if (this.state.successMessage !== \"\") {\r\n return (\r\n

    {this.state.successMessage}

    \r\n )\r\n }\r\n\r\n if (this.state.validationError === \"\") {\r\n return;\r\n } else {\r\n return (\r\n

    {this.state.validationError}

    \r\n )\r\n }\r\n }\r\n\r\n gridContent = () => {\r\n let { UserList, Sort } = this.state;\r\n if (UserList && UserList.length > 0) {\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 } else {\r\n return

    No Available Data

    \r\n }\r\n }\r\n\r\n handleSortChange = (e) => {\r\n this.setState({\r\n UserList: orderBy(this.state.UserList, e.sort),\r\n Sort: e.sort\r\n });\r\n }\r\n\r\n getBodyContent() {\r\n let loading = this.state.loading;\r\n if (loading) {\r\n return ();\r\n } else {\r\n return this.gridContent();\r\n }\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ showConfirmation: false });\r\n }\r\n\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullListings;\r\n\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'AzureUserName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'EmailAddress', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n this.setState({ UserList: services, loading: false });\r\n }\r\n else {\r\n this.setState({ UserList: fullDetails, loading: false });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Manage MFA Users\r\n  {this.state.GroupAdminBanner ? this.state.GroupAdminBanner : null} \r\n

    \r\n
    \r\n
    \r\n
    { e.preventDefault() }}>\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.getBodyContent()}\r\n {this.errorContent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Are you sure you want to reset MFA configuration for this user?\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Modal } from 'react-bootstrap';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nexport default class MsTeamsConfig extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n Enterprise: this.props.Enterprise,\r\n Trunk: this.props.Trunk,\r\n MSTeamsConfig: this.props.MSTeamsConfig,\r\n MSTeamsConfigCopy: this.props.MSTeamsConfig,\r\n loading: this.props.loading,\r\n Submission: false,\r\n submitError: false,\r\n completed: false,\r\n msgDetails: \"\",\r\n PrimaryGateWay: this.props.PrimaryGateWay,\r\n SecondaryGateWay: this.props.SecondaryGateWay,\r\n testingCredentials: false,\r\n verify: true,\r\n verified: \"\",\r\n routingType: this.props.routingType,\r\n OpCnConsent: this.props.OpCnConsent,\r\n };\r\n }\r\n\r\n componentWillReceiveProps() {\r\n if (this.props.MsTeamsConfig !== this.state.MsTeamsConfig) {\r\n this.setState({ MSTeamsConfig: this.props.MsTeamsConfig });\r\n }\r\n }\r\n\r\n msTrunkData = () => {\r\n let { MSTeamsConfig, OpCnConsent, Trunk, Enterprise, PrimaryGateWay, SecondaryGateWay } = this.state;\r\n if (MSTeamsConfig.IsPasswordSaved == 1) {\r\n MSTeamsConfig[\"Password\"] = \"**********\";\r\n MSTeamsConfig[\"PasswordLengthExceeded\"] = false;\r\n }\r\n return (\r\n
    \r\n {/* {this.dataRow(\"Trunk:\", this.inputDataField(Trunk.TrunkName, \"TrunkName\", null, true))} */}\r\n {this.dataRow(\"User Name:\", this.inputDataField(MSTeamsConfig.UserName, \"UserName\", this.handleInputChange))}\r\n {this.dataRow(\"Password:\", this.inputDataField(MSTeamsConfig.Password, \"Password\", this.handleInputChange, false, \"password\"))}\r\n {this.dataRow(\"Tenant ID:\", this.inputDataField(OpCnConsent.TenantId, \"TenantId\", this.handleInputChange))}\r\n {/* { this.dataRow(\"Primary FQDN:\", this.inputDataField(PrimaryGateWay, \"PstnPrimaryGateway\", this.handleInputChange, true))}\r\n { this.dataRow(\"Secondary FQDN:\", this.inputDataField(SecondaryGateWay, \"PstnSecondaryGateway\", this.handleInputChange, true))} */}\r\n
    \r\n )\r\n }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let MSTeamsConfig = { ...this.state.MSTeamsConfig };\r\n MSTeamsConfig[key] = value;\r\n if (key == \"Password\") {\r\n var len = value.length;\r\n if (len >= 30) {\r\n console.log(\"provide password less then 30\")\r\n MSTeamsConfig[\"PasswordLengthExceeded\"] = true;\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n msgDetails: \"**Please enter password less then 30 characters\",\r\n testingCredentials: true,\r\n verify: false,\r\n verified: true\r\n });\r\n\r\n }\r\n else {\r\n MSTeamsConfig[\"PasswordLengthExceeded\"] = false;\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n msgDetails: \"\",\r\n testingCredentials: false,\r\n verify: false,\r\n verified: true\r\n });\r\n }\r\n // set bool to 0 when only password/username form fields are updated; these fields are used as params in web service method that checks credential integrity\r\n MSTeamsConfig[\"IsPasswordSaved\"] = 0\r\n MSTeamsConfig[\"Password\"] = value\r\n }\r\n if (key == \"UserName\") {\r\n MSTeamsConfig[\"IsPasswordSaved\"] = 0\r\n MSTeamsConfig[\"UserName\"] = value\r\n }\r\n await this.setState({ MSTeamsConfig });\r\n //console.log(\"MSTeamsConfig\", MSTeamsConfig); // inserted AD Information\r\n }\r\n\r\n inputDataField = (val, key, onChangeFunc, readOnly = false, type = 'text') => {\r\n return (\r\n onChangeFunc(e, key)}\r\n disabled={readOnly}\r\n />\r\n )\r\n }\r\n\r\n dataRow = (label, field) => {\r\n return (\r\n
    \r\n {label} \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n verifyCredentials = async () => {\r\n let { testingCredentials, Enterprise, MSTeamsConfig } = this.state;\r\n await this.setState({ testingCredentials: true, Submission: false });\r\n let path = `admin/TestCredentialsRoutingForUser`;\r\n let dto = {\r\n UserName: sessionStorage.username,\r\n EnterpriseId: Enterprise,\r\n Usrn: MSTeamsConfig.UserName,//\"gopi@themountgreenteams.com\",\r\n Password: MSTeamsConfig.Password,//\"TheMountGreenTeams*1\",\r\n EnterpriseTrunkId: this.props.EnterpriseTrunkId,\r\n };\r\n\r\n let resp = await apiCalls.post(path, \"POST\", JSON.stringify(dto)).then(data => data).catch(err => console.error(err));\r\n if (resp.ok) {\r\n var teamsCredentialsVerifiedOn = JSON.parse(JSON.parse(resp.message))?.MSTeamsCredentialsVerifiedOn;\r\n if (!resp.message.includes(\"Error\")) {\r\n await this.setState({\r\n Submission: true,\r\n submitError: false,\r\n msgDetails: \"Credentials Sucessfully Verified!\" + \" \" + teamsCredentialsVerifiedOn + \" \" + sessionStorage.userTimeZone,\r\n testingCredentials: false,\r\n verify: true\r\n });\r\n } else {\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n msgDetails: \"Error in credential verification!\",\r\n testingCredentials: false,\r\n verify: false,\r\n verified: true\r\n });\r\n }\r\n }\r\n }\r\n\r\n checkDisabledBtn = () => {\r\n let { MSTeamsConfig, MSTeamsConfigCopy } = this.state;\r\n if (MSTeamsConfig.PasswordLengthExceeded) {\r\n return true\r\n }\r\n else {\r\n if (\r\n MSTeamsConfig.UserName == MSTeamsConfigCopy.UserName &&\r\n MSTeamsConfig.Password == MSTeamsConfigCopy.Password &&\r\n MSTeamsConfig.PstnPrimaryGateway == MSTeamsConfigCopy.PstnPrimaryGateway &&\r\n MSTeamsConfig.PstnSecondaryGateway == MSTeamsConfigCopy.PstnSecondaryGateway &&\r\n MSTeamsConfig.MsTeamsMaxConcurrentSessions == MSTeamsConfigCopy.MsTeamsMaxConcurrentSessions\r\n ) {\r\n return true\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n cardContent = () => {\r\n let { loading, MSTeamsConfig } = this.state;\r\n\r\n if (!loading) {\r\n if (MSTeamsConfig) {\r\n return (\r\n
    \r\n \r\n
    \r\n {this.msTrunkData()}\r\n
    \r\n \r\n Verify Credentials\r\n Continue\r\n {/* window.location.href = 'http://localhost:3000/'}\r\n >Redirect to form */}\r\n\r\n
    \r\n {/* {this.wizardMsg()} */}\r\n {this.submissionMsg()}\r\n
    \r\n
    \r\n
    \r\n Support Notes\r\n

    The Deployment Wizard helps the Admin initiate the connection to the Microsoft 365 Tenant.\r\n

    Provide the User Name and Password credentials for the Microsoft 365 Tenant and click Save.\r\n

    Note: These credentials must have Admin access and PowerShell® command execution privileges to set up {this.state.routingType}.\r\n

    After the User Name and Password are Saved, click on the Verify Credentials button to test the credentials, and ensure that the Deployment Wizard is able to connect to the Microsoft 365 Tenant.\r\n

    Once the connection is verified, the user list is retrieved from the Microsoft 365 tenant within 15 minutes.\r\n

    When completed and the connection is verified, click Continue to move on to the next step.\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n } else {\r\n return (\r\n

    No Available Data

    \r\n )\r\n }\r\n } else {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n selectTrunk = (val) => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n handleSubmit = async () => {\r\n await this.setState({ configSaving: true });\r\n let { Trunk, MSTeamsConfig } = this.state;\r\n let path = \"admin/UpdateMSTeamsConfig\";\r\n MSTeamsConfig.TrunkId = Trunk.TrunkId;\r\n MSTeamsConfig.IsPasswordSaved = 0;\r\n MSTeamsConfig.LoginName = sessionStorage.username; // added new KVP\r\n //console.log(\"DTO\", MSTeamsConfig);\r\n let resp = await apiCalls.post(path, \"POST\", JSON.stringify(MSTeamsConfig)).then(data => data).catch(err => console.error(err));\r\n if (resp.ok) {\r\n this.props.removeTabRedirectOnSave(false);\r\n if (!resp.message.includes(\"Error\")) {\r\n await this.setState({\r\n showConfirmationModal: false,\r\n Submission: true,\r\n submitError: false,\r\n msgDetails: \"Submission Sucess: Changes were processed!, Credentials Sucessfully Verified!\",\r\n testingCredentials: false,\r\n verify: true,\r\n });\r\n } else {\r\n await this.setState({\r\n showConfirmationModal: false,\r\n Submission: true,\r\n submitError: true,\r\n verified: false,\r\n msgDetails: \"Submission Success!\",\r\n verifyMsgDetails: \"Error in credential verification!\",\r\n testingCredentials: false,\r\n });\r\n }\r\n }\r\n\r\n if (!resp.message.includes(\"Error\")) {\r\n this.props.RefreshData();\r\n }\r\n this.setState({ configSaving: false });\r\n }\r\n\r\n submissionMsg = () => {\r\n if (this.state.Submission) {\r\n if (this.state.submitError && this.state.verified === false) {\r\n return
    {this.state.msgDetails}

    {this.state.verifyMsgDetails}
    \r\n }\r\n else if (this.state.submitError) {\r\n return {this.state.msgDetails}\r\n }\r\n else {\r\n return {this.state.msgDetails}\r\n }\r\n }\r\n if (this.state.testingCredentials) {\r\n return \r\n }\r\n };\r\n\r\n saveAndContinue = () => {\r\n this.props.Proceed(\"data\");\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n Are you sure you want to save changes?\r\n \r\n \r\n
    \r\n {!this.state.configSaving ?
    \r\n \r\n \r\n \r\n \r\n
    : }\r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n );\r\n };\r\n}","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport * as config from '../../requests/config';\r\nimport * as settings from '../../scripts/settings';\r\nimport * as helper from '../../scripts/helper';\r\nimport FlagIconFactory from 'react-flag-icon-css'\r\nimport WrappedCell from '../../components/wordWrappedCell';\r\n\r\nconst FlagIcon = FlagIconFactory(React, { useCssModules: false })\r\n\r\nexport default class MsTeamsUserMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n Enterprise: this.props.Enterprise,\r\n Trunk: this.props.Trunk,\r\n loading: false,\r\n Submission: false,\r\n submitError: false,\r\n UsersList: [],\r\n FullListings: [],\r\n MSTeamsConfig: this.props.MSTeamsConfig,\r\n showConfirmationModal: false,\r\n Sort: [{ field: \"TelephoneNumber\", dir: \"desc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n routingType: this.props.routingType,\r\n gridHeight: (window.innerHeight - 180),\r\n OpCnConsent: this.props.OpCnConsent,\r\n page: { skip: 0, take: 200 },\r\n pageSizeValue: 0\r\n };\r\n\r\n const giveStateData = this.giveStateData.bind(this);\r\n\r\n class ManageUserCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n //console.log(\"DATA ITEM\", this.props.dataItem);\r\n let enterprise = giveStateData()[0];\r\n let trunk = giveStateData()[1];\r\n //if (UserId) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n // } else {\r\n // return \r\n // }\r\n }\r\n }\r\n\r\n // class DataLinkCell extends GridCell {\r\n // constructor(props) {\r\n // super(props);\r\n // }\r\n // render() {\r\n // let { LocationId } = this.props.dataItem;\r\n // if (LocationId) {\r\n // //let locNum = helper.filterNestedObject(\"LocationId\", 4378, JSON.parse(sessionStorage.locationList))[0].LocationAccountNumber;\r\n // let locNum = sessionStorage.locationList && JSON.parse(sessionStorage.locationList).length > 0 && helper.filterNestedObject(\"LocationId\", LocationId, JSON.parse(sessionStorage.locationList)) ? helper.filterNestedObject(\"LocationId\", LocationId, JSON.parse(sessionStorage.locationList))[0].LocationAccountNumber : LocationId;\r\n // return (\r\n // \r\n // \r\n // {locNum}\r\n // \r\n // \r\n // )\r\n // } else {\r\n // return \r\n // }\r\n // }\r\n // }\r\n\r\n class UserLinkCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n selectUser = (service) => {\r\n //console.log(\"service\", service);\r\n settings.selectService(service.UserId, service.TelephoneNumber);\r\n //settings.selectService(1516118, \"4706321482\");\r\n }\r\n\r\n render() {\r\n let { TelephoneNumber } = this.props.dataItem;\r\n if (TelephoneNumber) {\r\n\r\n return (\r\n \r\n { this.selectUser(this.props.dataItem) }}\r\n >\r\n {TelephoneNumber}\r\n \r\n \r\n )\r\n } else {\r\n return \r\n }\r\n }\r\n }\r\n\r\n this.ManageUserCell = ManageUserCell;\r\n // this.DataLinkCell = DataLinkCell;\r\n this.UserLinkCell = UserLinkCell;\r\n }\r\n\r\n async componentDidMount() {\r\n await this.fetchMSTeamsUserList();\r\n }\r\n\r\n fetchMSTeamsUserList = async () => {\r\n await this.setState({ loading: true });\r\n let path = `admin/MSTeamsUsers`;\r\n await apiCalls\r\n .fetchData(path)\r\n .then((data) => {\r\n if (data) {\r\n this.setState({\r\n UsersList: data,\r\n FullListings: data,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n UsersList: [],\r\n FullListings: [],\r\n loading: false,\r\n });\r\n }\r\n })\r\n .catch((err) => console.error(err));\r\n };\r\n\r\n giveStateData = () => {\r\n let { Enterprise, Trunk } = this.state;\r\n return [Enterprise, Trunk];\r\n }\r\n\r\n StatusCell = (props) => {\r\n let customClassName = \"\";\r\n\r\n if (props.dataItem.RoutingStatus === 3) {\r\n customClassName = \"dot dot-success\";\r\n }\r\n if (props.dataItem.RoutingStatus === 4) {\r\n customClassName = \"dot dot-error\";\r\n }\r\n if (props.dataItem.RoutingStatus === 2) {\r\n customClassName = \"dot dot-blue\";\r\n }\r\n if (props.dataItem.RoutingStatus === 1) {\r\n customClassName = \"dot dot-yellow\";\r\n }\r\n if (props.dataItem.RoutingStatus !== null && props.dataItem.RoutingStatus !== \"\") {\r\n return (\r\n \r\n \r\n \r\n )\r\n } else {\r\n return (\r\n \r\n )\r\n }\r\n };\r\n\r\n gridContent = () => {\r\n let { MSTeamsConfig, UsersList, Sort } = this.state;\r\n //if (!loading) {\r\n if (UsersList && UsersList.length > 0) {\r\n let columnWidth = '110px';\r\n let columnWidthSm = \"70px\";\r\n let size = \"lg\";\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 let code = props.dataItem.UsageLocation?.trim();\r\n if (code) {\r\n\r\n return ()\r\n }\r\n else {\r\n return ();\r\n\r\n }\r\n }\r\n } title={headerToolTip(\"Usage Location\")} />\r\n \r\n \r\n \r\n \r\n \r\n )\r\n } else {\r\n return

    No Available Data

    \r\n }\r\n // } else {\r\n // return \r\n // }\r\n }\r\n\r\n pageChange = (event) => {\r\n const targetEvent = event.page.take;\r\n if (targetEvent) {\r\n this.setState({\r\n page: event.page\r\n });\r\n }\r\n else {\r\n this.setState({\r\n page: { skip: 0, take: this.state.UsersList.length }\r\n });\r\n }\r\n };\r\n\r\n handleSortChange = (e) => {\r\n this.setState({\r\n UsersList: orderBy(this.state.UsersList, e.sort),\r\n Sort: e.sort\r\n });\r\n }\r\n\r\n handleFilterChange = async (event) => {\r\n await this.setState({\r\n filter: event.filter\r\n });\r\n }\r\n\r\n exportBtn = () => {\r\n if (this.state.UsersList.length > 0) {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n this.exportUsers()}>Export Users\r\n
    \r\n )\r\n } else return null;\r\n }\r\n\r\n exportUsers = () => {\r\n this.refs.downloadCsv.submit();\r\n this.refs.exportBtn.text = 'Downloading...';\r\n setTimeout(() => {\r\n this.refs.exportBtn.text = 'Export Users';\r\n }, 2000);\r\n }\r\n\r\n openAttachments = () => {\r\n this.refs.fileUploader.click();\r\n }\r\n\r\n addAttachment = async (event) => {\r\n let file = event.target.files[0];\r\n let reader = new FileReader();\r\n reader.addEventListener('loadend', () => {\r\n let body = reader.result.split(',')[1];\r\n let name = file.name;\r\n this.createAttachment(body, name);\r\n }, false);\r\n if (file) {\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n\r\n createAttachment = async (body, name, ticketId) => {\r\n let apiPath = 'admin/UploadMSTeamsUsers';\r\n let attachmentDTO = {\r\n TicketId: this.state.TicketId,\r\n AttachmentBody: body,\r\n FileName: name,\r\n };\r\n await this.setState({ attachmentSubmitted: true });\r\n let response = await apiCalls.post(apiPath, 'POST', JSON.stringify(attachmentDTO)).then(res => res).catch(err => console.error(err));\r\n if (response.ok) {\r\n await this.setState({\r\n Submission: true,\r\n submitError: false,\r\n });\r\n } else {\r\n await this.setState({\r\n Submission: true,\r\n submitError: true,\r\n });\r\n }\r\n }\r\n\r\n showStatusLegend = () => {\r\n return (
    \r\n
    {'-'} Provisioned
    \r\n
    {'-'} Provisioned - Incorrect Voice Policy
    \r\n
    {'-'} UnProvisioned With Valid Phone License\r\n
    {'-'} UnProvisioned Missing Valid Phone License\r\n
    )\r\n }\r\n\r\n uploadBtn = () => {\r\n return (\r\n
    \r\n
    \r\n {\r\n event.target.value = null;\r\n }}\r\n />\r\n this.openAttachments()}>Import Users\r\n
    \r\n
    )\r\n\r\n }\r\n\r\n submissionMsg = () => {\r\n if (this.state.Submission) {\r\n if (this.state.submitError) {\r\n return {this.state.errorMsg && this.state.errorMsg != \"\" ? this.state.errorMsg : \"Submission Failure: Changes were not processed!\"}\r\n } else {\r\n return Submission Sucess: Changes were processed!\r\n }\r\n }\r\n };\r\n\r\n cardContent = () => {\r\n if (!this.state.loading) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {this.showStatusLegend()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.exportBtn()}

    {this.uploadBtn()}\r\n
    \r\n
    \r\n
    {this.gridContent()}
    \r\n {this.submissionMsg()}\r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = this.state.FullListings;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'GivenName', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'TelephoneNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'StreetAddress', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'Surname', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'UserPrincipalName', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n this.delayedSearch(services);\r\n }\r\n else {\r\n this.delayedSearch(fullDetails);\r\n }\r\n }\r\n\r\n delayedSearch = async (services) => {\r\n await this.setState({ loading: true });\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.setState({ UsersList: services, loading: false });\r\n }, settings.searchDelay);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    { e.preventDefault() }}>\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n );\r\n };\r\n}","import React, { Component } from \"react\";\r\nimport { Grid, GridColumn as Column } from \"@progress/kendo-react-grid\";\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport { headerToolTip } from \"../../../components/ellipsisHeaderTooltip\";\r\n\r\nexport default class VoiceRoutes extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n Enterprise: this.props.Enterprise,\r\n Trunk: this.props.Trunk,\r\n CurrentTrunk: {},\r\n VoiceRoutesList: this.props.VoiceRoutesList,\r\n gridHeight: window.innerHeight - 200,\r\n Sort: [{ field: \"Identity\", dir: \"desc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n };\r\n }\r\n\r\n async componentDidMount() {}\r\n\r\n handleSortChange = (e) => {\r\n this.setState({\r\n VoiceRoutesList: orderBy(this.state.VoiceRoutesList, e.sort),\r\n Sort: e.sort,\r\n });\r\n };\r\n\r\n gridContent = () => {\r\n let { VoiceRoutesList, Sort } = this.state;\r\n console.log(\"VoiceRoutesList\", VoiceRoutesList);\r\n let priorityColWidth ='105px';\r\n let nameColWidth='200px';\r\n if (VoiceRoutesList && VoiceRoutesList.length > 0) {\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 } else {\r\n return (\r\n

    \r\n No Available Data\r\n

    \r\n );\r\n }\r\n };\r\n\r\n render() {\r\n return this.gridContent();\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { Grid, GridCell, GridColumn as Column } from '@progress/kendo-react-grid';\r\nimport * as apiCalls from \"../../../../src/requests/api_calls\";\r\nimport { Modal } from 'react-bootstrap';\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport { headerToolTip } from \"../../../components/ellipsisHeaderTooltip\";\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\n\r\nexport default class VoicePolicy extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n CurrentTrunk: {},\r\n VoicePoliciesList: this.props.VoicePoliciesList,\r\n gridHeight: window.innerHeight - 200,\r\n Sort: [{ field: \"UsersCount\", dir: \"desc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n showModal: false,\r\n };\r\n\r\n class UserBtn extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n showModal: false,\r\n UsersList: {},\r\n Sort: [{ field: \"DisplayName\", dir: \"desc\" }],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n await this.setState({ loading: true })\r\n console.log(\"logged\", this.props.dataItem.VoiceRoutePolicy)\r\n await this.setState({ loading: true });\r\n let path = `admin/MSTeamsUserPolicy?policyName=${this.props.dataItem.VoiceRoutePolicy}`;\r\n await apiCalls.fetchData(path).then(async (data) => {\r\n if (data) {\r\n console.log(data);\r\n this.setState({\r\n UsersList: data,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n UsersList: [],\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n\r\n }\r\n\r\n handleOpen = () => {\r\n this.componentDidMount();\r\n this.setState({\r\n showModal: true,\r\n\r\n });\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({\r\n showModal: false,\r\n });\r\n };\r\n gridContent = () => {\r\n let loading = this.state.loading;\r\n if (loading) {\r\n return ();\r\n }\r\n let loadingError = this.state.loadingError;\r\n if (loadingError) {\r\n return (
    {loadingError}
    );\r\n }\r\n\r\n let { UsersList, Sort } = this.state;\r\n if (UsersList && UsersList.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n

    \r\n No Available Data\r\n

    \r\n );\r\n }\r\n };\r\n\r\n\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.dataItem.UsersCount}\r\n \r\n \r\n \r\n LIST OF USERS\r\n \r\n \r\n \r\n \r\n {this.gridContent()}\r\n \r\n \r\n \r\n\r\n )\r\n }\r\n }\r\n this.editBtn = UserBtn;\r\n }\r\n\r\n async componentDidMount() { }\r\n\r\n\r\n\r\n handleSortChange = (e) => {\r\n this.setState({\r\n VoicePoliciesList: orderBy(this.state.VoicePoliciesList, e.sort),\r\n Sort: e.sort,\r\n });\r\n };\r\n\r\n StatusCell = (props) => {\r\n let customClassName = \"\";\r\n \r\n if (props.dataItem.Status) {\r\n customClassName = \"dot dot-success\";\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n else{\r\n customClassName = \"dot dot-error\";\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n };\r\n\r\n showStatusLegend = () => {\r\n const derivedMatchingObject = this.state.VoicePoliciesList.find(x => x.VoiceRoutePolicy === 'Momentum_VoicePolicy')\r\n const directMatchingObject = this.state.VoicePoliciesList.find(x => x.VoiceRoutePolicy === 'Momentum-ALL')\r\n if(derivedMatchingObject !== undefined || directMatchingObject !== undefined){\r\n if(derivedMatchingObject.VoiceRoutePolicy === \"Momentum_VoicePolicy\" && derivedMatchingObject.Status===\"true\"){\r\n return (
    \r\n
    {'-'} Momentum Supported Derived Routing Voice Policy
    \r\n
    {'-'} Non Supported Voice Policy
    \r\n
    )\r\n }\r\n if(directMatchingObject.VoiceRoutePolicy === \"Momentum-ALL\" && directMatchingObject.Status===\"true\"){\r\n return (
    \r\n
    {'-'} Momentum Supported Direct Routing Voice Policy
    \r\n
    {'-'} Non Supported Voice Policy
    \r\n
    )\r\n }\r\n }\r\n if(derivedMatchingObject === undefined && directMatchingObject === undefined){\r\n return (
    \r\n {/*
    {'-'}
    */}\r\n
    {'-'} Non Supported Voice Policy
    \r\n
    )\r\n }\r\n // return (
    \r\n //
    {'-'} Users with Correct VoicePolicy
    \r\n //
    {'-'} Users with Incorrect Voice Policy
    \r\n //
    )\r\n }\r\n\r\n gridContent = () => {\r\n let { VoicePoliciesList, Sort } = this.state;\r\n console.log(\"VoiceRoutesList\", VoicePoliciesList);\r\n if (VoicePoliciesList && VoicePoliciesList.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n

    \r\n No Available Data\r\n

    \r\n );\r\n }\r\n };\r\n\r\n cardContent = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {this.showStatusLegend()}\r\n
    \r\n
    \r\n
    {this.gridContent()}
    \r\n
    \r\n );\r\n }\r\n\r\n render() {\r\n //return this.gridContent();\r\n return this.cardContent();\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { Modal } from \"react-bootstrap\";\r\nimport VoiceRoutes from \"./tabs/voice_route\";\r\nimport VoicePolicy from \"./tabs/voice_policy\";\r\n\r\nexport default class MsTeamsTenantInfo extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n Enterprise: this.props.Enterprise,\r\n Trunk: this.props.Trunk,\r\n gridHeight: window.innerHeight - 180,\r\n VoiceRoutesList: this.props.VoiceRoutesList,\r\n VoicePoliciesList: this.props.VoicePoliciesList,\r\n tab: VOICETABS.VoiceRoutes,\r\n tabHasChanges: false\r\n };\r\n this.changeTab = this.changeTab.bind(this);\r\n this.getTab = this.getTab.bind(this);\r\n this.getTab = this.getTab.bind(this);\r\n this.handleTabEdit = this.handleTabEdit.bind(this);\r\n }\r\n\r\n\r\n handleTabEdit = (val) => {\r\n this.setState({ tabHasChanges: val });\r\n }\r\n\r\n changeTab(event) {\r\n if (event.target.dataset.act === 'voicepolicy') {\r\n\r\n this.setState({ tab: VOICETABS.VoicePolicy, tabHasChanges: true })\r\n }\r\n else {\r\n this.setState({ tab: VOICETABS.VoiceRoutes, tabHasChanges: true })\r\n }\r\n }\r\n\r\n getTabDisplay() {\r\n let voiceRoutes =\r\n (\r\n \r\n Voice Routes\r\n \r\n )\r\n let voicePolicy =\r\n (\r\n \r\n Voice Policy\r\n \r\n )\r\n\r\n return (\r\n
    \r\n {voiceRoutes}\r\n {voicePolicy}\r\n
    \r\n );\r\n }\r\n\r\n getTab() {\r\n switch (this.state.tab) {\r\n case VOICETABS.VoiceRoutes:\r\n return (\r\n \r\n );\r\n case VOICETABS.VoicePolicy:\r\n return (\r\n \r\n );\r\n default:\r\n console.log('Sorry there isn\\'t a tab named ' + this.state.tab + '.');\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {this.getTabDisplay()}\r\n
    {this.getTab()}
    \r\n
    \r\n
    \r\n \r\n \r\n Cancel Existing Order?\r\n \r\n \r\n
    \r\n

    \r\n \r\n Continuing this action will cancel existing changes you have\r\n made for a new MACD Order. Are you sure you wish to continue\r\n and lose all changes?\r\n \r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport const VOICEROUTETYPES = {\r\n VoiceRoutes: \"VOICE_ROUTES\",\r\n VoicePolicy: \"VOICE_POLICY\"\r\n}\r\n\r\n\r\n\r\nexport const VOICETABS = {\r\n VoiceRoutes: \"voiceroutes\",\r\n VoicePolicy: \"voicepolicy\"\r\n}","import React, { useEffect, useState, useRef } from \"react\";\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport { DataLoadingSpinner } from \"../../components/spinners\";\r\nimport { orderBy, filterBy } from \"@progress/kendo-data-query\";\r\nimport * as apiCalls from \"../../requests/api_calls\";\r\nimport * as settings from '../../scripts/settings';\r\nimport { Link } from 'react-router-dom';\r\nimport WrappedCell from '../../components/wordWrappedCell';\r\n\r\nexport default function PhoneNumbers(props) {\r\n const [loading, setLoading] = useState(false);\r\n const [gridHeight] = useState(window.innerHeight - 180);\r\n const [phNumList, setPhNumList] = useState([]);\r\n const [FullListings, setFullListings] = useState([]);\r\n const [sort, setSort] = useState([{ field: \"AssignedTo\", dir: \"desc\" }]);\r\n const [Enterprise] = useState(props.Enterprise);\r\n const [Trunk] = useState(props.Trunk);\r\n const searchTermRef = useRef(null);\r\n const timeoutRef = useRef(null);\r\n\r\n useEffect(() => {\r\n fetchPhoneNumbers();\r\n }, [])\r\n\r\n const fetchPhoneNumbers = async () => {\r\n setLoading(true);\r\n let path = `oc/GetOCPhoneNumbers`;\r\n await apiCalls.fetchData(path).then(async (data) => {\r\n setPhNumList(data);\r\n setFullListings(data);\r\n setLoading(false);\r\n }).catch(err => {\r\n setLoading(false);\r\n console.error(err);\r\n return false;\r\n }\r\n );\r\n }\r\n\r\n const mangeUserCell = (props) => {\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 const LocationCell = (props) => {\r\n let { StreetAddress, City, State, Zip } = props.dataItem;\r\n if (StreetAddress) {\r\n return (\r\n \r\n {`${StreetAddress}, ${City}, ${State} ${Zip}`}\r\n \r\n )\r\n } else {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n\r\n const handleSortChange = (e) => {\r\n setPhNumList(orderBy(phNumList, e.sort))\r\n setSort(e.sort)\r\n }\r\n\r\n const gridContent = () => {\r\n if (!loading) {\r\n return (\r\n handleSortChange(e)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n const searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = FullListings;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'ServiceNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'AssignedTo', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n delayedSearch(services);\r\n }\r\n else {\r\n delayedSearch(fullDetails);\r\n }\r\n }\r\n\r\n const delayedSearch = (services) => {\r\n setLoading(true);\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n timeoutRef.current = setTimeout(() => {\r\n setPhNumList(services);\r\n setLoading(false);\r\n }, settings.searchDelay);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    { e.preventDefault() }}>\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {gridContent()}\r\n
    \r\n );\r\n}","import React, { useEffect, useState, useRef } from \"react\";\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport { DataLoadingSpinner } from \"../../components/spinners\";\r\nimport { orderBy } from \"@progress/kendo-data-query\";\r\nimport * as apiCalls from \"../../requests/api_calls\";\r\nimport { Link } from 'react-router-dom';\r\nimport WrappedCell from '../../components/wordWrappedCell';\r\nimport Popup from \"reactjs-popup\";\r\n\r\nexport default function FaxList(props) {\r\n const [loading, setLoading] = useState(false);\r\n const [gridHeight] = useState(window.innerHeight - 180);\r\n const [faxList, setFaxList] = useState([]);\r\n const [FullListings, setFullListings] = useState([]);\r\n const [sort, setSort] = useState([{ field: \"AssignedTo\", dir: \"desc\" }]);\r\n const [Enterprise] = useState(props.Enterprise);\r\n const [Trunk] = useState(props.Trunk);\r\n const searchTermRef = useRef(null);\r\n const timeoutRef = useRef(null);\r\n\r\n useEffect(() => {\r\n fetchFaxList();\r\n }, [])\r\n\r\n const fetchFaxList = async () => {\r\n setLoading(true);\r\n let path = `admin/GetTeamsFaxUserList`;\r\n await apiCalls.fetchData(path).then(async (data) => {\r\n setFaxList(data);\r\n setFullListings(data);\r\n setLoading(false);\r\n }).catch(err => {\r\n setLoading(false);\r\n console.error(err);\r\n return false;\r\n }\r\n );\r\n }\r\n\r\n const mangeUserCell = (props) => {\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 class IPCountCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n LoadPop: false,\r\n UserList: [],\r\n }\r\n }\r\n\r\n fetchAssignedUsers = async (ServiceNumber) => {\r\n await this.setState({ LoadPop: true });\r\n let apiPath = `oc/GetTeamsUserByServiceNumber?ServiceNumber=${ServiceNumber}`;\r\n await apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n // let IPContainer = [];\r\n // data.forEach(itm => {\r\n // if (itm) { IPContainer.push({ IP: itm }); }\r\n // });\r\n this.setState({\r\n UserList: data,\r\n LoadPop: false\r\n });\r\n } else {\r\n this.setState({\r\n UserList: [],\r\n LoadPop: false,\r\n })\r\n }\r\n });\r\n }\r\n\r\n loadAssignedUsers = () => {\r\n if (this.state.LoadPop) {\r\n return \r\n } else {\r\n if (this.state.UserList.length == 0) {\r\n return (\r\n
    \r\n No assigned users\r\n
    \r\n )\r\n } else {\r\n return (\r\n
    \r\n 4 ? '350px' : \"\" }}\r\n data={this.state.UserList}\r\n >\r\n \r\n \r\n \r\n \r\n
    \r\n )\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n // let trunkGroupId = this.props.dataItem.TrunkGroupID;\r\n // let IpCount = this.props.dataItem.IPCount;\r\n // let field = this.props.field;\r\n\r\n //if (IpCount && IpCount > 0 && field === 'IPCount') {\r\n return (\r\n \r\n (\r\n {\"View\"}\r\n )}\r\n onOpen={() => { this.fetchAssignedUsers(this.props.dataItem.ServiceNumber) }}\r\n position=\"bottom center\"\r\n closeOnDocumentClick\r\n contentStyle={{\r\n padding: '20px', border: 'unset', width: '250px',\r\n }}\r\n >\r\n {this.loadAssignedUsers()}\r\n \r\n \r\n )\r\n //} else return {this.props.dataItem.ServiceNumber}\r\n }\r\n }\r\n\r\n const handleSortChange = (e) => {\r\n setPhNumList(orderBy(faxList, e.sort))\r\n setSort(e.sort)\r\n }\r\n\r\n const gridContent = () => {\r\n if (!loading) {\r\n let columnWidth = '125px';\r\n return (\r\n handleSortChange(e)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n const searchListings = (event) => {\r\n let searchText = event.target.value.trim();\r\n let fullDetails = FullListings;\r\n if (searchText !== '') {\r\n searchText = event.target.value;\r\n let services = filterBy(fullDetails, {\r\n logic: 'or',\r\n filters: [\r\n { field: 'ServiceNumber', operator: 'contains', value: searchText, ignoreCase: true },\r\n { field: 'AssignedTo', operator: 'contains', value: searchText, ignoreCase: true },\r\n ]\r\n });\r\n delayedSearch(services);\r\n }\r\n else {\r\n delayedSearch(fullDetails);\r\n }\r\n }\r\n\r\n const delayedSearch = (services) => {\r\n setLoading(true);\r\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\r\n timeoutRef.current = setTimeout(() => {\r\n setPhNumList(services);\r\n setLoading(false);\r\n }, settings.searchDelay);\r\n };\r\n\r\n // return (\r\n //
    \r\n // {/* {gridContent()} */}\r\n //
    \r\n // );\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    { e.preventDefault() }}>\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {gridContent()}\r\n
    \r\n );\r\n}","import React, { Component, Fragment } from \"react\";\r\nimport OC_Terms from \"./terms\";\r\nimport MsTeamsConfig from \"./oc_config\";\r\nimport MsTeamsUserMenu from \"./oc_menu\";\r\nimport MsTeamsTenantInfo from \"./oc_tenantinfo\";\r\nimport PhoneNumbers from \"./phoneNumbers\";\r\nimport { DataLoadingSpinner } from \"../../components/spinners\";\r\nimport * as apiCalls from \"../../requests/api_calls\";\r\nimport { userIsAdmin } from \"../../scripts/helper\";\r\n//import TokenRequestBtn from \"../operator-connect/auth/token-request-btn\";\r\nimport FaxList from \"./fax_list\";\r\n\r\nexport default class OperatorConnectV1Main extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n Enterprise: sessionStorage.userEnterpriseNumber,\r\n tab: \"phoneNumbers\",\r\n CurrentTrunk: {},\r\n MSTeamsConfig: null,\r\n MSTeamsConfigCopy: {},\r\n showConfirmationModal: false,\r\n showDirectRoutingModal: false,\r\n Trunks: [],\r\n TeamsUsers: [],\r\n CustomerName: \"\",\r\n DNSTicketDetails: null,\r\n SBCTicketDetails: null,\r\n TabRedirect: true,\r\n showUserList: false,\r\n routingType: \"Operator Connect\",\r\n CheckStatus: false,\r\n gridHeight: (window.innerHeight - 180),\r\n VoiceRoutesList: [],\r\n VoicePoliciesList: [],\r\n OpCnConsent: null,\r\n FaxList: [],\r\n FullListings: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n if (userIsAdmin()) {\r\n await this.fetchTrunks();\r\n await this.fetchMSTeamsConfigInfo();\r\n await this.hasFaxList();\r\n await this.fetchOperatorConnectConsent();\r\n if (!sessionStorage.msteamstabName) {\r\n // REMOVING CONSENT TAB 6/17/2024 - JP\r\n if (this.state.MSTeamsConfig?.isTeamsUsersSync) {\r\n this.setState({ tab: \"data\", loading: false });\r\n } else {\r\n this.setState({ tab: \"phoneNumbers\", loading: false });\r\n }\r\n\r\n // if (this.state.OpCnConsent?.IsSuccess && this.state.MSTeamsConfig?.isTeamsUsersSync) {\r\n // this.setState({ tab: \"data\", loading: false });\r\n // } else if (!this.state.OpCnConsent?.IsSuccess) {\r\n // this.setState({ tab: \"consent\", loading: false });\r\n // } else if (this.state.OpCnConsent?.IsSuccess && !this.state.MSTeamsConfig?.isTeamsUsersSync) {\r\n // this.setState({ tab: \"config\", loading: false });\r\n // }\r\n } else {\r\n this.setState({ tab: sessionStorage.msteamstabName, loading: false });\r\n }\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (!sessionStorage.msteamstabName && prevState.tab !== this.state.tab) {\r\n if (this.state.tab === \"data\") {\r\n await this.setState({ tab: \"data\" });\r\n }\r\n }\r\n\r\n }\r\n\r\n hasFaxList = async () => {\r\n await this.setState({ loading: true });\r\n let path = \"oc/HasFaxList\";\r\n await apiCalls\r\n .fetchData(path)\r\n .then((data) => {\r\n if (data) {\r\n this.setState({\r\n HasFaxList: data,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n HasFaxList: false,\r\n loading: false,\r\n });\r\n }\r\n })\r\n .catch((err) => console.error(err));\r\n };\r\n\r\n fetchBillingStat = async () => {\r\n await this.setState({ loading: true });\r\n let path = \"admin/BillingStat\";\r\n await apiCalls\r\n .fetchData(path)\r\n .then((data) => {\r\n if (data) {\r\n this.setState({\r\n CustomerName: data.CustomerName,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n CustomerName: \"\",\r\n loading: false,\r\n });\r\n }\r\n })\r\n .catch((err) => console.error(err));\r\n };\r\n\r\n fetchOperatorConnectConsent = async () => {\r\n await this.setState({ loading: true });\r\n let path = `oc/GetOperatorConnectConsent?enterpriseId=${sessionStorage?.enterpriseId}`;\r\n await apiCalls.fetchData(path).then(async (data) => {\r\n if (data) {\r\n this.setState({\r\n OpCnConsent: data,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n OpCnConsent: null,\r\n loading: false,\r\n });\r\n }\r\n }).catch((err) => {\r\n this.setState({\r\n OpCnConsent: null,\r\n loading: false,\r\n });\r\n }\r\n );\r\n }\r\n\r\n fetchTrunks = async () => {\r\n await this.setState({ loading: true });\r\n let path = `admin/EnterpriseMSTrunks`;\r\n await apiCalls\r\n .fetchData(path)\r\n .then((data) => {\r\n if (data) {\r\n this.setState({\r\n Trunks: data,\r\n CurrentTrunk: data[0],\r\n });\r\n } else {\r\n this.setState({\r\n Trunks: [],\r\n CurrentTrunk: {},\r\n loading: false,\r\n });\r\n }\r\n })\r\n .catch((err) => console.error(err));\r\n };\r\n\r\n fetchDomainList = async () => {\r\n await this.setState({ loading: true });\r\n let path = `admin/GetMSTeamsDomain?enterprise=${this.state.Enterprise}&trunkName=${this.state.CurrentTrunk.TrunkName}`;\r\n await apiCalls.fetchData(path).then(async (data) => {\r\n if (data) {\r\n this.setState({\r\n DomainList: data,\r\n loading: false,\r\n });\r\n } else {\r\n this.setState({\r\n DomainList: [],\r\n loading: false,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n fetchMSTeamsConfigInfo = async () => {\r\n await this.setState({ loading: true });\r\n let path = `admin/MSTeamsConfig?EnterpriseTrunkId=${this.state.CurrentTrunk.TrunkId}`;\r\n await apiCalls\r\n .fetchData(path)\r\n .then(async (data) => {\r\n if (data) {\r\n let copy = JSON.parse(JSON.stringify(data));\r\n this.setState({\r\n MSTeamsConfig: data,\r\n MSTeamsConfigCopy: copy,\r\n PrimaryGateWay: data.PstnPrimaryGateway,\r\n SecondaryGateWay: data.PstnSecondaryGateway,\r\n loading: false,\r\n });\r\n //await this.fetchMSTeamsUserList();\r\n await this.fetchDomainList();\r\n await this.fetchBillingStat();\r\n //await this.fetchListings();\r\n //await this.fetchListingsForVoicePolicies();\r\n if (!sessionStorage.msteamstabName && this.state.TabRedirect) {\r\n if (this.state.MSTeamsConfig.ConfigProcessCompleted) {\r\n this.setState({ tab: \"data\" });\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n MSTeamsConfig: null,\r\n MSTeamsConfigCopy: null,\r\n PrimaryGateWay: \"\",\r\n SecondaryGateWay: \"\",\r\n loading: false,\r\n });\r\n }\r\n })\r\n .catch((err) => console.error(err));\r\n };\r\n\r\n btnField = (description, tabName, disabledCondition) => {\r\n return (\r\n this.changeTab(tabName)}\r\n disabled={disabledCondition}\r\n style={{\r\n cursor: disabledCondition ? \"not-allowed\" : \"pointer\",\r\n padding: \"5px 10px\",\r\n margin: \"2px\",\r\n color: this.state.tab === tabName ? \"black\" : \"#6c8bad\",\r\n borderRadius: \"10px\",\r\n border:\r\n this.state.tab === tabName\r\n ? \"1px solid black\"\r\n : \"1px solid #6c8bad\",\r\n }}\r\n >\r\n {\" \"}\r\n {description}\r\n \r\n );\r\n };\r\n\r\n tabDisplay = () => {\r\n let { MSTeamsConfig } = this.state;\r\n if (MSTeamsConfig) {\r\n return (\r\n \r\n {this.btnField(\"Phone Number\", \"phoneNumbers\", this.state.loading)}\r\n {/* {this.btnField(\"Consent\", \"consent\", this.state.loading)} */}\r\n {this.btnField(\"Connect to Microsoft 365\", \"config\", this.state.loading)}\r\n {this.btnField(\"User List\", \"data\", this.state.loading)}\r\n {this.state.HasFaxList ? this.btnField(\"Fax List\", \"fax\", this.state.loading) : null}\r\n {/*{sessionStorage.RPXLogin === \"true\" ? this.btnField(\"Tenant Info\", \"tenant\", this.state.loading || this.state.OpCnConsent == null ? true : false) : null}*/}\r\n \r\n );\r\n }\r\n };\r\n\r\n changeTab = (tabName) => {\r\n sessionStorage.setItem('msteamstabName', tabName);\r\n this.setState({ tab: tabName });\r\n };\r\n\r\n proceedToNextTab = (value) => {\r\n this.setState({ tab: value });\r\n };\r\n\r\n removeTabRedirectOnSave = async (value) => {\r\n await this.setState({ TabRedirect: value });\r\n };\r\n\r\n getTab() {\r\n switch (this.state.tab) {\r\n // case \"consent\":\r\n // return (\r\n //
    \r\n // \r\n //
    \r\n // );\r\n case \"config\":\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n case \"data\":\r\n return (\r\n \r\n );\r\n // case \"tenant\":\r\n // return (\r\n // \r\n // );\r\n case \"phoneNumbers\":\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n case \"fax\":\r\n return (\r\n \r\n );\r\n default:\r\n console.log(\"Sorry there isn't a tab named \" + this.state.tab + \".\");\r\n }\r\n }\r\n\r\n checkStatus = async () => {\r\n await this.fetchMSTeamsConfigInfo();\r\n this.setState({ tab: \"migrate\", CheckStatus: true });\r\n }\r\n\r\n cardContent = () => {\r\n if (!this.state.loading) {\r\n return (\r\n \r\n
    \r\n
    {this.getTab()}
    \r\n
    \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n };\r\n servicesCardInlineStyle = () => {\r\n // offset by 30 to account for missing table headers\r\n if (this.state.loading) return { height: this.state.gridHeight + 100 + 'px' }\r\n }\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Operator Connect

    \r\n {/* */}\r\n
    \r\n {this.tabDisplay()}\r\n {this.cardContent()}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport * as settings from '../../../scripts/settings';\r\nimport * as helper from '../../../scripts/helper';\r\nimport moment from 'moment';\r\nimport * as icons from '../../../scripts/icons';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { withRouter, Link } from 'react-router-dom';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { ComboBox } from '@progress/kendo-react-dropdowns';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\n\r\nexport default class TNSearch extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n searchTerm: null,\r\n Services: [],\r\n showResults: false,\r\n //loading: true,\r\n }\r\n }\r\n fetchServices = (apiPath = null) => {\r\n //await this.setState({ loading: true });\r\n if (!apiPath) apiPath = this.apiPathWithParams();\r\n apiCalls.fetchData(apiPath).then(async (data) => {\r\n if (data !== null) {\r\n this.setState({\r\n loading: false,\r\n Services: data,\r\n resultsMsg: null,\r\n //showResults: true,\r\n });\r\n } else if (data === null) {\r\n this.setState({ Services: [], loading: false, resultsMsg: settings.noResultsMsg });\r\n };\r\n });\r\n }\r\n\r\n paramsSeparator = (apiPath) => apiPath.indexOf('?') >= 0 ? '&' : '?';\r\n\r\n apiPathWithParams = () => {\r\n let { locationAccFilter, searchTerm } = this.state;\r\n let path = 'oc/GetAvailableOCServices';\r\n if (searchTerm) path += this.paramsSeparator(path) + 'phoneNumber=' + searchTerm;\r\n return path;\r\n }\r\n\r\n searchServices = (event) => {\r\n let searchText = event.target.value.trim();\r\n if (searchText !== '') {\r\n this.setState({ searchTerm: searchText, showResults: true, loading: true })\r\n } else {\r\n this.setState({ searchTerm: null, showResults: false })\r\n }\r\n this.delayedSearch();\r\n }\r\n\r\n delayedSearch = () => {\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => this.fetchServices(), settings.searchDelay);\r\n }\r\n\r\n serviceResults = () => {\r\n let { showResults, Services, loading } = this.state;\r\n if (showResults) {\r\n if (Services && Services.length > 0 && !loading) {\r\n return (\r\n
    \r\n
    Services
    \r\n {Services.map((item, index) => this.serviceItem(item, index))}\r\n
    \r\n )\r\n } else if (Services && Services.length === 0 && !loading) {\r\n return (\r\n
    \r\n
    {settings.noResultsMsg}
    \r\n
    \r\n );\r\n } else {\r\n return
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n handleUserChange = (tn, ext, locationId, serviceId, userId, street, city, state) => {\r\n this.props.onSelectUser(tn, ext, locationId, serviceId, userId, street, city, state);\r\n }\r\n\r\n serviceItem = (item, index) => {\r\n return (\r\n
    \r\n
    {\r\n //console.log(\"use this user\", item.UserId);\r\n this.setState({ searchTerm: item.ServiceNumber, showResults: false, });\r\n this.handleUserChange(item.ServiceNumber, item.Extension, item.LocationId, item.ServiceId, item.UserId, item.StreetAddress, item.City, item.State);\r\n }}\r\n >\r\n {`${item.FirstName} ${item.LastName} ${item.ServiceNumber} - ${item.AvailableUsages}`}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n let divStyle = { margin: '1%', };\r\n let labelStyle = { display: 'inline-block', width: '30%', };\r\n let inputStyle = { width: '70%', display: 'inline-block', height: '34px', fontSize: '12px' };\r\n if (this.props.IsResourceAccount) {\r\n // inputStyle = {\r\n // width: '45%',\r\n // display: 'inline-block',\r\n // }\r\n return (\r\n \r\n
    { e.preventDefault() }}>\r\n \r\n {/* */}\r\n \r\n
    \r\n {this.serviceResults()}\r\n {/* {this.noSearchResults()} */}\r\n
    \r\n \r\n )\r\n }\r\n return (\r\n \r\n
    { e.preventDefault() }}>\r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n {this.serviceResults()}\r\n {/* {this.noSearchResults()} */}\r\n
    \r\n \r\n )\r\n }\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Modal } from 'react-bootstrap';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport _ from 'lodash';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport TNSearch from './tn_search';\r\n\r\nexport default class ManageOCTeamsUser extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isAssigned: false,\r\n loading: false,\r\n Submission: false,\r\n SubmitError: false,\r\n showConfirmationModal: false,\r\n showDRModal: false,\r\n TeamsId: this.props.location.state.TeamsId,\r\n UserDetails: null,\r\n OriginalDetails: null,\r\n Enterprise: this.props.location.state.Enterprise,\r\n Trunk: this.props.location.state.Trunk,\r\n LocationList: sessionStorage.locationList ? JSON.parse(sessionStorage.locationList) : [],\r\n routingType: sessionStorage.MSTeamsRoutingType == \"DIRECT\" ? \"Direct Routing\" : \"Derived Routing\",\r\n //LocationList: JSON.parse(getLocations()),\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n await this.getTeamsUserByTeamsId();\r\n }\r\n\r\n inputDataField = (val, key, inputStyle, onChangeFunc, type = 'text', readOnly) => {\r\n return (\r\n onChangeFunc(e, key)}\r\n disabled={readOnly}\r\n />\r\n )\r\n }\r\n\r\n dataRow = (label, field, divStyleObj, labelStyleObj) => {\r\n return (\r\n
    \r\n {label}: \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n dataDropDown = (key, val, inputStyle) => {\r\n return (\r\n this.handleInputChange(e, key)}\r\n value={val}\r\n disabled\r\n >\r\n {/* {options} */}\r\n \r\n {this.state.LocationList.map((itm, idx) => {\r\n return \r\n })}\r\n \r\n )\r\n }\r\n\r\n cardContent = () => {\r\n let { loading, UserDetails } = this.state;\r\n if (loading || UserDetails == null) {\r\n return (\r\n \r\n );\r\n } else {\r\n let divStyle = { margin: \"1%\", };\r\n let labelStyle = { display: 'inline-block', width: '30%', };\r\n let inputStyle = { width: '70%', display: 'inline-block', };\r\n return (\r\n
    \r\n {}\r\n {this.dataRow(\"Assigned DID / Seat\", this.inputDataField(UserDetails?.TelephoneNumber, 'TelephoneNumber', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Extension\", this.inputDataField(UserDetails?.Extension, 'Extension', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Location\", this.dataDropDown(\"LocationName\", UserDetails?.LocationId, inputStyle), divStyle, labelStyle)}\r\n {this.dataRow(\"First Name\", this.inputDataField(UserDetails?.GivenName, 'GivenName', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Last Name\", this.inputDataField(UserDetails?.Surname, 'Surname', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"User Principal Name\", this.inputDataField(UserDetails?.UserPrincipalName, 'UserPrincipalName', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Street\", this.inputDataField(UserDetails?.StreetAddress, 'StreetAddress', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"City\", this.inputDataField(UserDetails?.City, 'City', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"State\", this.inputDataField(UserDetails?.State, 'State', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"User State Changed On\", this.inputDataField(UserDetails?.UserStateChangedOn, 'UserStateChangedOn', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"User State\", this.inputDataField(UserDetails?.UserState, 'UserState', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Usage Location\", this.inputDataField(UserDetails?.UsageLocation, 'UsageLocation', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Sip Proxy Address\", this.inputDataField(UserDetails?.SipProxyAddress, 'SipProxyAddress', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"User Type\", this.inputDataField(UserDetails?.AccountType, 'AccountType', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Other Mails\", this.inputDataField(UserDetails?.OtherMails, 'OtherMails', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n
    \r\n )\r\n }\r\n }\r\n\r\n handleUserChange = async (tn, ext, locationId, serviceId, userId, street, city, state) => {\r\n let UserDetails = { ...this.state.UserDetails };\r\n UserDetails[\"LocationId\"] = locationId;\r\n UserDetails[\"ServiceId\"] = serviceId;\r\n UserDetails[\"Extension\"] = ext;\r\n UserDetails[\"UserId\"] = userId;\r\n UserDetails[\"TelephoneNumber\"] = tn;\r\n UserDetails[\"StreetAddress\"] = street;\r\n UserDetails[\"City\"] = city;\r\n UserDetails[\"State\"] = state;\r\n await this.setState({ UserDetails });\r\n //console.log(\"UserDetails\", UserDetails);\r\n }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let UserDetails = { ...this.state.UserDetails };\r\n UserDetails[key] = value;\r\n await this.setState({ UserDetails });\r\n //console.log(\"UserDetails\", UserDetails); // inserted AD Information\r\n }\r\n\r\n configureDR = async () => {\r\n this.setState({ SubmissionLoading: true });\r\n let { UserDetails, OriginalDetails, Trunk, Enterprise } = this.state;\r\n let { UserPrincipalName, TeamsUserId } = UserDetails;\r\n let path = `admin/EnableDirectRoutingForUser?teamsId=${TeamsUserId}`;\r\n let dto = this.state.UserDetails;\r\n // ** required params for web service ** //\r\n dto.UserName = sessionStorage.username;\r\n dto.EnterpriseId = Enterprise;\r\n dto.TrunkName = Trunk.TrunkName;\r\n dto.UserPrincipalName = UserPrincipalName;\r\n dto.PhoneNumber = UserDetails.TelephoneNumber;\r\n if (OriginalDetails.TelephoneNumber) {\r\n path = `admin/DisableDirectRoutingForUser?teamsId=${TeamsUserId}`;\r\n }\r\n //console.log(\"___DTO___\", dto);\r\n let response = await apiCalls.post(path, 'POST', JSON.stringify(dto)).then(response => response).catch(err => console.error(err));\r\n if (response.ok) {\r\n this.sendErrorMessage(response.message);\r\n await this.setState({\r\n Submission: true,\r\n SubmissionLoading: false,\r\n });\r\n } else {\r\n this.setState({\r\n Submission: true,\r\n ErrorMessage: \"An unknown error occurred, please try again.\",\r\n SubmitError: true\r\n });\r\n }\r\n }\r\n\r\n getTeamsUserByTeamsId = async () => {\r\n await this.setState({ loading: true });\r\n let path = `oc/GetTeamsUserByTeamsId`;\r\n await apiCalls.post(path, \"POST\", JSON.stringify(this.state.TeamsId)).then(data => {\r\n if (data) {\r\n let result = JSON.parse(data.message)[0]\r\n let copy = JSON.parse(JSON.stringify(result))\r\n this.setState({\r\n UserDetails: result,\r\n OriginalDetails: copy,\r\n });\r\n } else {\r\n this.setState({\r\n UserDetails: null,\r\n OriginalDetails: null,\r\n });\r\n }\r\n }).catch(err => console.error(err)).finally(() => {\r\n this.setState({\r\n loading: false,\r\n SubmitError: false,\r\n Submission: false,\r\n });\r\n });\r\n }\r\n\r\n sendErrorMessage = (apiResponse) => {\r\n let { Status, StatusDscription } = JSON.parse(JSON.parse(apiResponse));\r\n if (Status && StatusDscription) {\r\n if (Status === \"Error\") {\r\n this.setState({ ErrorMessage: StatusDscription, SubmitError: true });\r\n } else {\r\n this.setState({ ErrorMessage: \"\" });\r\n }\r\n }\r\n };\r\n\r\n modalBtns = () => {\r\n if (this.state.Submission) {\r\n return (\r\n
    \r\n {this.state.ErrorMessage !== \"\" ? {this.state.ErrorMessage} : null}\r\n {\r\n if (this.state.SubmitError) {\r\n this.setState({ showDRModal: false, SubmitError: false, Submission: false, ErrorMessage: \"\" });\r\n } else {\r\n await this.setState({ showDRModal: false, ErrorMessage: \"\" });\r\n this.getTeamsUserByTeamsId();\r\n }\r\n }}\r\n >Close\r\n
    \r\n )\r\n } else {\r\n return (\r\n
    \r\n Yes\r\n this.setState({ showDRModal: false })}\r\n >No\r\n
    \r\n )\r\n }\r\n }\r\n\r\n render = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Update Operator Connect User

    \r\n \r\n this.setState({ showDRModal: true })}\r\n className=\"a btn\"\r\n >{this.state.OriginalDetails?.TelephoneNumber ? `Disable User Routing` : `Enable User Routing`}\r\n < Link\r\n to={{\r\n pathname: `/operator-connectv1`,\r\n }}\r\n className=\"a btn\">\r\n {'User List'}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {this.state.Submission && !this.state.SubmitError ? \"Changes Saved!\" : \"Are you sure you want to save changes?\"}\r\n \r\n \r\n
    \r\n
    \r\n {this.state.SubmissionLoading ? : this.modalBtns()}\r\n
    \r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport * as settings from '../../../scripts/settings';\r\nimport * as helper from '../../../scripts/helper';\r\nimport moment from 'moment';\r\nimport * as icons from '../../../scripts/icons';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { withRouter, Link } from 'react-router-dom';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { ComboBox } from '@progress/kendo-react-dropdowns';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\n\r\nexport default class UserSearch extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n searchTerm: null,\r\n Services: [],\r\n showResults: false,\r\n //loading: true,\r\n }\r\n }\r\n fetchServices = (apiPath = null) => {\r\n //await this.setState({ loading: true });\r\n if (!apiPath) apiPath = this.apiPathWithParams();\r\n apiCalls.fetchData(apiPath).then(async (data) => {\r\n if (data !== null) {\r\n this.setState({\r\n loading: false,\r\n Services: data,\r\n resultsMsg: null,\r\n //showResults: true,\r\n });\r\n } else if (data === null) {\r\n this.setState({ Services: [], loading: false, resultsMsg: settings.noResultsMsg });\r\n };\r\n });\r\n }\r\n\r\n paramsSeparator = (apiPath) => apiPath.indexOf('?') >= 0 ? '&' : '?';\r\n\r\n apiPathWithParams = () => {\r\n let { searchTerm } = this.state;\r\n let path = 'oc/GetAvailableOCUsers';\r\n if (searchTerm) path += this.paramsSeparator(path) + 'searchText=' + searchTerm;\r\n return path;\r\n }\r\n\r\n searchServices = (event) => {\r\n let searchText = event.target.value.trim();\r\n if (searchText !== '') {\r\n this.setState({ searchTerm: searchText, showResults: true, loading: true })\r\n } else {\r\n this.setState({ searchTerm: null, showResults: false })\r\n }\r\n this.delayedSearch();\r\n }\r\n\r\n delayedSearch = () => {\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => this.fetchServices(), settings.searchDelay);\r\n }\r\n\r\n serviceResults = () => {\r\n let { showResults, Services, loading } = this.state;\r\n if (showResults) {\r\n if (Services && Services.length > 0 && !loading) {\r\n return (\r\n
    \r\n
    Services
    \r\n {Services.map((item, index) => this.serviceItem(item, index))}\r\n
    \r\n )\r\n } else if (Services && Services.length === 0 && !loading) {\r\n return (\r\n
    \r\n
    {settings.noResultsMsg}
    \r\n
    \r\n );\r\n } else {\r\n return
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n handleUserChange = (user) => {\r\n this.props.onSelectUser(user);\r\n }\r\n\r\n serviceItem = (item, index) => {\r\n return (\r\n
    \r\n
    {\r\n this.setState({ searchTerm: item.DisplayName, showResults: false, });\r\n this.handleUserChange(item);\r\n }}\r\n >\r\n {`${item.DisplayName} - ${item.UserPrincipalName} - ${item.AccountType}`}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n let divStyle = { margin: '1%', };\r\n let labelStyle = { display: 'inline-block', width: '30%', };\r\n let inputStyle = { width: '70%', display: 'inline-block', height: '34px', fontSize: '12px' };\r\n // if (this.props.IsResourceAccount) {\r\n // return (\r\n // \r\n //
    { e.preventDefault() }}>\r\n // \r\n // \r\n //
    \r\n // {this.serviceResults()}\r\n //
    \r\n // \r\n // )\r\n // }\r\n\r\n return (\r\n \r\n
    { e.preventDefault() }}>\r\n \r\n \r\n \r\n
    \r\n {this.serviceResults()}\r\n
    \r\n \r\n )\r\n }\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { Modal } from 'react-bootstrap';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport _ from 'lodash';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport UserSearch from './user_search';\r\n\r\nexport default class ManageOCTeamsPhone extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isAssigned: false,\r\n loading: false,\r\n Submission: false,\r\n SubmitError: false,\r\n showConfirmationModal: false,\r\n showDRModal: false,\r\n ServiceNumber: this.props.location.state.ServiceNumber,\r\n PhoneDetails: null,\r\n OriginalDetails: null,\r\n Enterprise: this.props.location.state.Enterprise,\r\n Trunk: this.props.location.state.Trunk,\r\n LocationList: sessionStorage.locationList ? JSON.parse(sessionStorage.locationList) : [],\r\n SelectedUser: null\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n await this.fetchPhoneDetails();\r\n }\r\n\r\n inputDataField = (val, key, inputStyle, onChangeFunc, type = 'text', readOnly) => {\r\n return (\r\n onChangeFunc(e, key)}\r\n disabled={readOnly}\r\n />\r\n )\r\n }\r\n\r\n dataRow = (label, field, divStyleObj, labelStyleObj) => {\r\n return (\r\n
    \r\n {label}: \r\n {field}\r\n
    \r\n )\r\n }\r\n\r\n dataDropDown = (key, val, inputStyle) => {\r\n return (\r\n this.handleInputChange(e, key)}\r\n value={val}\r\n disabled\r\n >\r\n {/* {options} */}\r\n \r\n {this.state.LocationList.map((itm, idx) => {\r\n return \r\n })}\r\n \r\n )\r\n }\r\n\r\n cardContent = () => {\r\n let { loading, PhoneDetails, SelectedUser } = this.state;\r\n if (loading || PhoneDetails == null) {\r\n return (\r\n \r\n );\r\n } else {\r\n let divStyle = { margin: \"1%\", };\r\n let labelStyle = { display: 'inline-block', width: '30%', };\r\n let inputStyle = { width: '70%', display: 'inline-block', };\r\n return (\r\n
    \r\n {}\r\n {this.dataRow(\"Assigned DID / Seat\", this.inputDataField(PhoneDetails?.ServiceNumber, 'TelephoneNumber', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Extension\", this.inputDataField(PhoneDetails?.Extension, 'Extension', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Location\", this.inputDataField(PhoneDetails?.LocationName, 'LocationName', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"First Name\", this.inputDataField(SelectedUser?.GivenName, 'GivenName', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Last Name\", this.inputDataField(SelectedUser?.Surname, 'Surname', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"User Principal Name\", this.inputDataField(SelectedUser?.UserPrincipalName, 'UserPrincipalName', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Street\", this.inputDataField(PhoneDetails?.StreetAddress, 'StreetAddress', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"City\", this.inputDataField(PhoneDetails?.City, 'City', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"State\", this.inputDataField(PhoneDetails?.State, 'State', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"User State Changed On\", this.inputDataField(SelectedUser?.UserStateChangedOn, 'UserStateChangedOn', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"User State\", this.inputDataField(SelectedUser?.UserState, 'UserState', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Usage Location\", this.inputDataField(SelectedUser?.UsageLocation, 'UsageLocation', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Sip Proxy Address\", this.inputDataField(SelectedUser?.SipProxyAddress, 'SipProxyAddress', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"User Type\", this.inputDataField(SelectedUser?.AccountType, 'AccountType', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n {this.dataRow(\"Other Mails\", this.inputDataField(SelectedUser?.OtherMails, 'OtherMails', inputStyle, this.handleInputChange, \"text\", true), divStyle, labelStyle)}\r\n
    \r\n )\r\n }\r\n }\r\n\r\n handleUserChange = async (user) => {\r\n let PhoneDetails = { ...this.state.PhoneDetails };\r\n PhoneDetails[\"TeamsUserId\"] = user.TeamsUserId;\r\n PhoneDetails[\"AssignedTo\"] = user.UserPrincipalName;\r\n PhoneDetails[\"FirstName\"] = user.GivenName;\r\n PhoneDetails[\"LastName\"] = user.Surname;\r\n user[\"LocationId\"] = this.state.PhoneDetails.LocationId;\r\n user[\"ServiceId\"] = this.state.PhoneDetails.ServiceId;\r\n user[\"Extension\"] = this.state.PhoneDetails.Extension;\r\n user[\"UserId\"] = user.UserId;\r\n user[\"TelephoneNumber\"] = this.state.PhoneDetails.ServiceNumber;\r\n user[\"StreetAddress\"] = this.state.PhoneDetails.StreetAddress;\r\n user[\"City\"] = this.state.PhoneDetails.City;\r\n user[\"State\"] = this.state.PhoneDetails.State;\r\n await this.setState({ SelectedUser: user, PhoneDetails: PhoneDetails });\r\n //console.log(\"UserDetails\", UserDetails);\r\n }\r\n\r\n handleInputChange = async (e, key) => {\r\n let { value } = e.target;\r\n let PhoneDetails = { ...this.state.PhoneDetails };\r\n PhoneDetails[key] = value;\r\n await this.setState({ PhoneDetails });\r\n //console.log(\"UserDetails\", UserDetails); // inserted AD Information\r\n }\r\n\r\n configureDR = async () => {\r\n this.setState({ SubmissionLoading: true });\r\n if (this.state.PhoneDetails.TeamsUserId !== \"\" && this.state.PhoneDetails.TeamsUserId !== null && this.state.SelectedUser !== null) {\r\n let { SelectedUser, Enterprise, Trunk, PhoneDetails, OriginalDetails } = this.state;\r\n let { UserPrincipalName, TeamsUserId } = SelectedUser;\r\n let path = `admin/EnableDirectRoutingForUser?teamsId=${TeamsUserId}`;\r\n let dto = this.state.SelectedUser;\r\n // ** required params for web service ** //\r\n dto.UserName = sessionStorage.username;\r\n dto.EnterpriseId = Enterprise;\r\n dto.TrunkName = Trunk.TrunkName;\r\n dto.UserPrincipalName = UserPrincipalName;\r\n dto.PhoneNumber = PhoneDetails.ServiceNumber;\r\n if (OriginalDetails.TeamsUserId) {\r\n path = `admin/DisableDirectRoutingForUser?teamsId=${TeamsUserId}`;\r\n this.setState({ SelectedUser: null });\r\n }\r\n //console.log(\"___DTO___\", dto);\r\n let response = await apiCalls.post(path, 'POST', JSON.stringify(dto)).then(response => response).catch(err => console.error(err));\r\n if (response.ok) {\r\n this.sendErrorMessage(response.message);\r\n await this.setState({\r\n Submission: true,\r\n SubmissionLoading: false,\r\n });\r\n } else {\r\n this.setState({\r\n Submission: true,\r\n ErrorMessage: \"An unknown error occurred, please try again.\",\r\n SubmitError: true,\r\n SubmissionLoading: false,\r\n });\r\n }\r\n } else {\r\n this.setState({\r\n Submission: true,\r\n ErrorMessage: \"Please Select a User before attempting to enable phone number routing.\",\r\n SubmitError: true,\r\n SubmissionLoading: false,\r\n });\r\n }\r\n }\r\n\r\n sendErrorMessage = (apiResponse) => {\r\n let { Status, StatusDscription } = JSON.parse(JSON.parse(apiResponse));\r\n if (Status && StatusDscription) {\r\n if (Status === \"Error\") {\r\n this.setState({ ErrorMessage: StatusDscription, SubmitError: true });\r\n } else {\r\n this.setState({ ErrorMessage: \"\" });\r\n }\r\n }\r\n };\r\n\r\n fetchPhoneDetails = async () => {\r\n await this.setState({ loading: true });\r\n let path = `oc/GetTeamsPhoneByServiceNumber?phoneNumber=${this.state.ServiceNumber}`;\r\n await apiCalls.fetchData(path).then(async (data) => {\r\n if (data) {\r\n let copy = JSON.parse(JSON.stringify(data[0]));\r\n this.setState({\r\n PhoneDetails: data[0],\r\n OriginalDetails: copy,\r\n });\r\n await this.getTeamsUserByTeamsId();\r\n } else {\r\n this.setState({\r\n PhoneDetails: null,\r\n OriginalDetails: null,\r\n });\r\n }\r\n }).catch(err => console.error(err)).finally(() => {\r\n this.setState({\r\n loading: false,\r\n SubmitError: false,\r\n Submission: false,\r\n });\r\n });\r\n }\r\n\r\n getTeamsUserByTeamsId = async () => {\r\n if (this.state.PhoneDetails.TeamsUserId !== \"\" && this.state.PhoneDetails.TeamsUserId !== null) {\r\n await this.setState({ loading: true });\r\n let path = `oc/GetTeamsUserByTeamsId`;\r\n await apiCalls.post(path, \"POST\", JSON.stringify(this.state.PhoneDetails.TeamsUserId)).then(data => {\r\n if (data) {\r\n this.setState({\r\n SelectedUser: JSON.parse(data.message)[0],\r\n showDRModal: false,\r\n });\r\n } else {\r\n this.setState({\r\n SelectedUser: null,\r\n showDRModal: false,\r\n });\r\n }\r\n }).catch(err => console.error(err)).finally(() => {\r\n this.setState({\r\n loading: false,\r\n SubmitError: false,\r\n Submission: false,\r\n });\r\n });\r\n }\r\n }\r\n\r\n modalBtns = () => {\r\n if (this.state.Submission) {\r\n return (\r\n
    \r\n {this.state.ErrorMessage !== \"\" ? {this.state.ErrorMessage} : null}\r\n {\r\n if (this.state.SubmitError) {\r\n this.setState({ showDRModal: false, SubmitError: false, Submission: false, ErrorMessage: \"\" });\r\n } else {\r\n await this.setState({ showDRModal: false, ErrorMessage: \"\" });\r\n this.fetchPhoneDetails();\r\n }\r\n }}\r\n >Close\r\n
    \r\n )\r\n } else {\r\n return (\r\n
    \r\n Yes\r\n this.setState({ showDRModal: false })}\r\n >No\r\n
    \r\n )\r\n }\r\n }\r\n\r\n render = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Update Operator Connect Service Number

    \r\n \r\n this.setState({ showDRModal: true })}\r\n className=\"a btn\"\r\n >{this.state.OriginalDetails?.TeamsUserId ? `Disable Phone Routing` : `Enable Phone Routing`}\r\n < Link\r\n to={{\r\n pathname: `/operator-connectv1`,\r\n }}\r\n className=\"a btn\">\r\n {'Phone List'}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {this.state.Submission && !this.state.SubmitError ? \"Changes Saved!\" : \"Are you sure you want to save changes?\"}\r\n \r\n \r\n
    \r\n
    \r\n {this.state.SubmissionLoading ? : this.modalBtns()}\r\n
    \r\n
    \r\n
    \r\n {this.cardContent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React, { Component } from \"react\";\r\nimport { Route, Link, withRouter, Redirect, Switch } from \"react-router-dom\";\r\nimport Dashboard from \"./../dashboard\";\r\nimport CallRecordingMain from \"./../callRecording/callRecording\";\r\nimport services from \"./../services\";\r\nimport sips from \"./../sips\";\r\nimport admin from \"./../admin\";\r\nimport Profile from \"./../profile\";\r\nimport BillingMain from \"../billing/billing_main\";\r\nimport contactCenter from \"./../contact_center\";\r\nimport contactCenterSettings from \"./../contact_center_settings\";\r\nimport locations from \"./../locations/index\";\r\nimport location_detail from \"./../locations/location_details\";\r\nimport devices from \"./../devices/index\";\r\nimport Macd from \"./../macd/macd\";\r\nimport MacdAll from \"./../macd/macd_all\";\r\nimport MacdAdd from \"./../macd/macd_add\";\r\nimport MacdReview from \"./../macd/macd_review\";\r\nimport MacdConfirm from \"./../macd/macd_confirm\";\r\nimport MacdUser from \"./../macd/macd_user\";\r\nimport EnterpriseSettings from \"./../enterprise_settings\";\r\nimport momentumLogo from \"./../../images/momentum_logo_white.png\";\r\nimport IframeSettings from \"./../iframe_page\";\r\nimport Support from \"./../support\";\r\nimport Training from \"./../training\";\r\nimport call_logs_all from \"./../call_logs_all\";\r\nimport voicemail_all from \"./../voicemails/voicemail_all\";\r\nimport ApiStatuses from \"./../../tests/api/statuses\";\r\nimport user_settings from \"./../user_settings\";\r\nimport \"./../../css/bootstrap.css\";\r\nimport \"./../../css/app.css\";\r\nimport MyServices from \"./../navigation/my_services\";\r\nimport AdminMenu from \"./../navigation/admin_menu\";\r\nimport HelpCenter from \"./../navigation/help_center\";\r\nimport * as session from \"../../scripts/session\";\r\nimport {\r\n userIsAdmin,\r\n homePageUrl,\r\n shouldApplyCustomizations,\r\n userIsSuperAdmin,\r\n} from \"./../../scripts/helper\";\r\nimport { isNewSession } from \"./../../scripts/session\";\r\nimport \"@progress/kendo-ui\";\r\nimport { connect } from \"react-redux\";\r\nimport dropDownMenu from \"./../../components/dropdown_menu\";\r\nimport GlobalSearch from \"./../../components/global_search\";\r\nimport IpTrunking from \"../ipTrunking/ipTrunk\";\r\nimport ManageTrunkGroup from \"../ipTrunking/manageTrunkGroup\";\r\nimport unMatchedPath from \"./../../components/unmatched_path\";\r\nimport IPCallLogsLocation from \"../ipTrunking/components/ip_call_logs_location\";\r\nimport IPCallLogsDetailed from \"../ipTrunking/components/call_logs_detailed\";\r\nimport EnterpriseCallLogsAll from \"../enterprise_call_logs_all\";\r\nimport AllTickets from \"../ticketing/ticketing_all\";\r\nimport DetailedTicket from \"../ticketing/detailed_ticket_view\";\r\nimport NewTicket from \"../ticketing/new_ticket\";\r\nimport _ from \"lodash\";\r\nimport DocumentRepository from \"../document_repository\";\r\nimport EnterpriseContactDirectory from \"../enterprise_contact_directory\";\r\nimport VmReport from \"../vm_report\";\r\nimport EnterpriseTrunking from \"../EnterpriseTrunking/enterprise_trunking\";\r\nimport ManageEntTrunkGroup from \"../EnterpriseTrunking/manage_trunk_group\";\r\nimport ManageADUser from \"../activeDirectory/components/manage_user_config\";\r\nimport AdMain from \"../activeDirectory/ad_main\";\r\nimport MsTeamsMain from \"../microsoftTeams/msteams_main\";\r\nimport ManageMsTeamsUser from \"../microsoftTeams/components/manage_user_config\";\r\nimport { checkBillingAccount } from \"../../utility/utility\";\r\nimport Webex from \"../webex/main\";\r\nimport CircuitsDashboard from \"../circuitsMonitoring/dashboard\";\r\nimport CircuitsGraphingDashboard from \"../circuitsMonitoring/graphing/graphing_dash\";\r\nimport MFAAdminTool from \"../../components/mfa/mfaAdminTool\";\r\nimport OperatorConnectV1Main from \"../operator-connect-v1/oc_main\";\r\nimport ManageOCTeamsUser from \"../operator-connect-v1/components/manage_user_config\";\r\nimport ManageOCTeamsPhone from \"../operator-connect-v1/components/manage_phone_config\";\r\n\r\n//routes only retail can access\r\nclass ProtectedWholesaleRoute extends Component {\r\n hasAccessToComponent = () => {\r\n const isWholesale = session.IsWholesale();\r\n const { match: { params: { page = \"\" } = {} } = {} } = this.props;\r\n const retailPages = [\r\n \"/billing\",\r\n \"/training\",\r\n \"/support\",\r\n \"/tickets_all\",\r\n \"/ticket\",\r\n \"/new_ticket\",\r\n ];\r\n return (\r\n !isWholesale ||\r\n (isWholesale && _.indexOf(retailPages, this.props.path) < 0)\r\n );\r\n };\r\n\r\n render() {\r\n const { component: Component, ...props } = this.props;\r\n return (\r\n \r\n this.hasAccessToComponent() ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n );\r\n }\r\n}\r\n//routes only wholesale can access\r\nclass ProtectedRetailRoute extends Component {\r\n hasAccessToComponent = () => {\r\n return session.IsWholesale();\r\n };\r\n\r\n render() {\r\n const { component: Component, ...props } = this.props;\r\n return (\r\n \r\n this.hasAccessToComponent() ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n );\r\n }\r\n}\r\n\r\nclass ProtectedSuperAdminRoute extends Component {\r\n render() {\r\n const isSuperAdmin = userIsSuperAdmin();\r\n const { component: Component, ...props } = this.props;\r\n return (\r\n \r\n isSuperAdmin ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n );\r\n }\r\n}\r\n\r\nclass Sidebar extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n userServices: [],\r\n loading: true,\r\n sideBarLogo: null,\r\n };\r\n }\r\n\r\n updateSidebarLogo = () => {\r\n const { sideBarLogo: existingLogo } = this.state;\r\n const { logo: incomingLogo } = this.props;\r\n\r\n if (!shouldApplyCustomizations()) {\r\n this.setState({ sideBarLogo: momentumLogo });\r\n } else if (incomingLogo && existingLogo != incomingLogo) {\r\n this.setState({ sideBarLogo: incomingLogo });\r\n }\r\n };\r\n\r\n componentDidMount() {\r\n let homepage = homePageUrl();\r\n //debugger;\r\n if (isNewSession() || checkBillingAccount()) {\r\n this.props.history.push(homepage);\r\n }\r\n this.updateSidebarLogo();\r\n }\r\n\r\n apiTests = () => {\r\n let env = process.env.REACT_APP_ENVIRONMENT;\r\n if (env === \"development\" || env === \"staging\") {\r\n return ;\r\n }\r\n };\r\n\r\n sideBarClassName = () => {\r\n return this.props.showSideBar ? \"sidebar\" : \"sidebar visible\";\r\n };\r\n\r\n devicesRoute = () => {\r\n if (this.props.hasDevices)\r\n return ;\r\n };\r\n\r\n render() {\r\n const { sideBarLogo } = this.state;\r\n return (\r\n
    \r\n
    \r\n \r\n \"Logo\"\r\n \r\n {dropDownMenu()}\r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n } />\r\n } />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.devicesRoute()}\r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n {this.apiTests()}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n showSideBar: state.reducer.showSideBar,\r\n hasDevices: state.reducer.hasDevices,\r\n smallLogo: state.reducer.customSmallLogo,\r\n largeLogo: state.reducer.customLargeLogo,\r\n };\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps)(Sidebar));\r\n","import React, { Component } from 'react';\nimport { version } from './../requests/config';\n\nexport default class Footer extends Component {\n render() {\n return (\n
    \n
    {version}
    \n
    \n )\n }\n}","import React, { Component } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport * as config from \"../requests/config\";\r\nimport * as helper from \"../scripts/helper\";\r\nimport * as session from \"../scripts/session\";\r\nimport { parse } from \"query-string\";\r\nimport momentumLogoWhite from \"../images/momentum_logo_white.png\";\r\nimport { DataLoadingSpinner } from \"../components/spinners\";\r\nimport \"@progress/kendo-theme-default/dist/all.css\";\r\nimport \"../css/bootstrap.css\";\r\nimport \"../css/app.css\";\r\nimport \"../css/spinner.css\";\r\n\r\nclass Login extends Component {\r\n constructor() {\r\n super();\r\n this.loadingLogo = null;\r\n this.state = {\r\n loading: true,\r\n Logo: momentumLogoWhite,\r\n auth: null,\r\n componentMounted: false,\r\n loginHint: ''\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n const domain = helper.getDomain();\r\n helper.setSiteTitleFromDomain();\r\n if (helper.IsWholesaleDomain(domain)) {\r\n // this.getCustomizations(domain); \r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n let loginHint = '';\r\n if (helper.urlIncludes(\"username=\")) {\r\n loginHint = \"&login_hint=\" + parse(window.location.search).username;\r\n sessionStorage.setItem('loginUserName', parse(window.location.search).username);\r\n // strip params to initiate login from /session with no params (to match Azure whitelist)\r\n // this.props.history.push(\"/session\");\r\n }\r\n if (localStorage.mspLoginData) {\r\n this.setState({\r\n loading: false\r\n })\r\n }\r\n this.setState({ loginHint: loginHint, componentMounted: true });\r\n }\r\n\r\n render() {\r\n const domain = helper.getDomain();\r\n\r\n // if (localStorage.mspLoginData) {\r\n // this.setState({\r\n // loading: false\r\n // })\r\n // }\r\n\r\n if (this.state.loading || this.state.componentMounted !== true) {\r\n return null;\r\n }\r\n if (this.props.loginError === \"Login_In_Progress: Error during login call - login is already in progress.\") {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n if (this.props.loginError) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    {this.props.loginError}

    \r\n
    {this.props.loginErrorDescription}
    \r\n
    \r\n \r\n Restart Login\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n else if (this.props.redirecting) {\r\n session.transitionTimeout();\r\n // const loadingLogo = helper.IsWholesaleDomain(domain)\r\n // ? this.loadingLogo\r\n // : momentumLogoWhite;\r\n // const imageAltText = helper.IsWholesaleDomain(domain)\r\n // ? \"Logo\"\r\n // : \"Momentum Telecom Logo\";\r\n\r\n return (\r\n
    \r\n {/* {imageAltText} */}\r\n \r\n
    \r\n );\r\n }\r\n else if (helper.atLoginPath()) {\r\n const { auth: customAuth } = this.state;\r\n customAuth ? config.loginUser(this.props.mspLoginData, customAuth) : config.loginUser(this.props.mspLoginData);\r\n return
    \r\n }\r\n else {\r\n helper.redirectToLogin();\r\n return
    \r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n redirecting: helper.toBoolean(state.reducer.redirecting),\r\n restartSession: helper.toBoolean(state.reducer.restartSession),\r\n loginError: state.reducer.loginError,\r\n loginErrorDescription: state.reducer.loginErrorDescription,\r\n mspLoginData: state.reducer.mspLoginData\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps)(withRouter(Login));","import React, { Component } from 'react';\r\nimport { FullStory } from 'react-fullstory-component';\r\nimport { toBoolean } from './helper';\r\nimport { isRpxSession, isTestSession } from './session';\r\n\r\nconst sessionIsLogged = () => toBoolean(process.env.REACT_APP_FS_SESSION);\r\n\r\nconst settings = {\r\n host: 'www.fullstory.com',\r\n orgKey: process.env.REACT_APP_FULLSTORY_ORG_ID\r\n};\r\n\r\nconst sessionId = () => sessionStorage.userEmail + '-' + sessionStorage.sessionStart;\r\n\r\nconst customData = () => {\r\n let data = {\r\n time: new Date(),\r\n email: sessionStorage.userEmail,\r\n role: sessionStorage.userRole,\r\n userId: sessionStorage.userId,\r\n userFullName: sessionStorage.userFullName,\r\n userEnterpriseNumber: sessionStorage.userEnterpriseNumber\r\n }\r\n if (isRpxSession()) {\r\n data.emulation = 1;\r\n data.emulationUserName = sessionStorage.emulatedUser;\r\n\r\n }\r\n\r\n if (isTestSession()) data.automatedTest = 1;\r\n\r\n return data;\r\n}\r\n\r\nclass FullStoryScript extends Component {\r\n\r\n render() {\r\n if (sessionIsLogged()) {\r\n return ;\r\n } else {\r\n return null // prevents render error\r\n }\r\n }\r\n}\r\n\r\nexport default FullStoryScript;","import React, { Component, Fragment } from 'react';\r\nimport PropTypes from 'prop-types'\r\n\r\nclass CountdownTimer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {countdown: props.countdown}\r\n this.title = document.title;\r\n }\r\n\r\n componentDidMount() {\r\n this.onCountdown();\r\n }\r\n\r\n componentDidUpdate() {\r\n this.onCountdown();\r\n }\r\n\r\n componentWillUnmount() {\r\n document.title = this.title;\r\n }\r\n\r\n displayTitleTimer = () => {\r\n if (this.props.showInTitle)\r\n document.title = this.getFormattedTime() + ' ' + this.title;\r\n }\r\n\r\n onCountdown = () => {\r\n let ms = 1000;\r\n this.displayTitleTimer();\r\n if (this.state.countdown === 0)\r\n this.props.timeoutAction();\r\n else {\r\n if (this.timeout) \r\n clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.setState({countdown: (this.state.countdown - ms)});\r\n }, ms);\r\n }\r\n }\r\n\r\n pad = (num, size = 2) => {\r\n let formattedNum = String(num);\r\n while (formattedNum.length < size)\r\n formattedNum = '0' + formattedNum;\r\n return formattedNum;\r\n }\r\n\r\n getMinutes = () => {\r\n let minutes = this.state.countdown / 1000 / 60;\r\n return this.pad((minutes < 1 ? 0 : minutes), 1);\r\n }\r\n\r\n getSeconds = () => {\r\n let seconds = this.state.countdown / 1000;\r\n while (seconds >= 60)\r\n seconds -= 60;\r\n return this.pad((seconds < 1 ? 0 : seconds));\r\n }\r\n\r\n getFormattedTime = () => {\r\n return this.getMinutes() + ':' + this.getSeconds();\r\n }\r\n\r\n render() {\r\n return (
    {this.getFormattedTime()}
    );\r\n }\r\n}\r\n\r\nCountdownTimer.propTypes = {\r\n countdown: PropTypes.number,\r\n timeoutAction: PropTypes.func,\r\n showInTitle: PropTypes.bool\r\n}\r\n\r\nexport default CountdownTimer;","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types'\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport CountdownTimer from '../../components/countdownTimer';\r\n\r\nclass IdleWarningModal extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n Session expiration due to inactivity\r\n \r\n \r\n
    \r\n Your session will expire in
    !\r\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\nIdleWarningModal.propTypes = {\r\n onCancelLogout: PropTypes.func,\r\n onLogout: PropTypes.func,\r\n countdown: PropTypes.number\r\n}\r\n\r\nexport default IdleWarningModal;","import React, { Component, Fragment } from 'react';\r\nimport PropTypes from 'prop-types'\r\nimport IdleTimer from 'react-idle-timer';\r\nimport {logout} from '../scripts/session'\r\nimport { store } from '../store/store';\r\nimport * as actions from '../store/actions';\r\nimport IdleWarningModal from '../containers/modals/idleWarningModal'\r\n\r\nclass IdleLogout extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {displayWarning : false};\r\n } \r\n\r\n resetLogout = () => {\r\n this.setState({displayWarning : false})\r\n store.dispatch({ type: actions.REFRESH_TOKEN });\r\n }\r\n\r\n logout = () => {\r\n logout();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.state.displayWarning ? (\r\n \r\n ) : (\r\n { this.idleTimer = ref}}\r\n element={document}\r\n idleAction={() => this.setState({displayWarning : true})}\r\n timeout={this.props.logoutTime - this.props.logoutDelay}/>\r\n )}\r\n \r\n );\r\n } \r\n}\r\n\r\n\r\nIdleLogout.propTypes = {\r\n logoutTime: PropTypes.number,\r\n logoutDelay: PropTypes.number,\r\n};\r\n\r\nIdleLogout.defaultProps = {\r\n logoutTime: (20 * 60 * 1000),\r\n logoutDelay: (60 * 1000)\r\n};\r\n\r\nexport default IdleLogout;","'use strict';\r\n\r\n// Object.defineProperty(exports, \"__esModule\", {\r\n// value: true\r\n// });\r\n\r\nvar _react = require('react');\r\n\r\nvar _react2 = _interopRequireDefault(_react);\r\n\r\nvar _propTypes = require('prop-types');\r\n\r\nvar _propTypes2 = _interopRequireDefault(_propTypes);\r\n\r\nvar _reactStyleProptype = require('react-style-proptype');\r\n\r\nvar _reactStyleProptype2 = _interopRequireDefault(_reactStyleProptype);\r\n\r\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\r\n\r\nexport default class Timer extends _react.Component {\r\n\r\n constructor(props, ...args) {\r\n super(props, ...args);\r\n this.timerId = null;\r\n this.prevTime = null;\r\n this.state = { remaining: props.remaining };\r\n }\r\n\r\n getChildContext() {\r\n return { remaining: this.state.remaining };\r\n }\r\n\r\n componentDidMount() {\r\n this.timerId = setInterval(this.handleTick.bind(this), this.props.interval);\r\n this.prevTime = Date.now();\r\n }\r\n\r\n componentWillUnmount() {\r\n this.clearTimer();\r\n }\r\n\r\n clearTimer() {\r\n clearInterval(this.timerId);\r\n this.timerId = null;\r\n this.prevTime = null;\r\n }\r\n\r\n handleTick() {\r\n const currentTime = Date.now();\r\n const elapsed = currentTime - this.prevTime;\r\n const nextRemaining = this.state.remaining - elapsed;\r\n if (nextRemaining <= 0) {\r\n if (this.props.afterComplete !== null) {\r\n this.props.afterComplete();\r\n }\r\n this.clearTimer();\r\n this.setState({ remaining: 0 });\r\n } else {\r\n if (this.props.afterTick !== null) {\r\n this.props.afterTick(nextRemaining);\r\n }\r\n this.prevTime = currentTime;\r\n this.setState({ remaining: nextRemaining });\r\n }\r\n }\r\n\r\n render() {\r\n const { style, children } = this.props;\r\n return _react2.default.createElement(\r\n 'div',\r\n { style: style },\r\n children\r\n );\r\n }\r\n}\r\n//exports.default = Timer;\r\nTimer.propTypes = {\r\n interval: _propTypes2.default.number, // msec\r\n remaining: _propTypes2.default.number.isRequired, // msec\r\n afterTick: _propTypes2.default.func, // callback after each ticks\r\n afterComplete: _propTypes2.default.func, // callback after remaining <= 0\r\n style: _reactStyleProptype2.default, // container style object\r\n children: _propTypes2.default.node // children react element node\r\n};\r\nTimer.defaultProps = {\r\n interval: 1000,\r\n afterTick: null,\r\n afterComplete: null,\r\n style: {},\r\n children: null\r\n};\r\nTimer.childContextTypes = {\r\n remaining: _propTypes2.default.number\r\n};\r\n\r\n// 'use strict';\r\n\r\n// var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n\r\n// function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n\r\n// function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\r\n\r\n// function _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\r\n\r\n// Object.defineProperty(exports, \"__esModule\", {\r\n// value: true\r\n// });\r\n\r\n// var _react = require('react');\r\n\r\n// var _react2 = _interopRequireDefault(_react);\r\n\r\n// var _propTypes = require('prop-types');\r\n\r\n// var _propTypes2 = _interopRequireDefault(_propTypes);\r\n\r\n// var _reactStyleProptype = require('react-style-proptype');\r\n\r\n// var _reactStyleProptype2 = _interopRequireDefault(_reactStyleProptype);\r\n\r\n// function _interopRequireDefault(obj) {\r\n// return obj && obj.__esModule ? obj : { default: obj };\r\n// }\r\n\r\n// var Timer = function (_react$Component) {\r\n// _inherits(Timer, _react$Component);\r\n\r\n// function Timer(props) {\r\n// var _ref;\r\n\r\n// _classCallCheck(this, Timer);\r\n\r\n// for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\r\n// args[_key - 1] = arguments[_key];\r\n// }\r\n\r\n// var _this = _possibleConstructorReturn(this, (_ref = Timer.__proto__ || Object.getPrototypeOf(Timer)).call.apply(_ref, [this, props].concat(args)));\r\n\r\n// _this.timerId = null;\r\n// _this.prevTime = null;\r\n// _this.state = { remaining: props.remaining };\r\n// return _this;\r\n// }\r\n\r\n// _createClass(Timer, [{\r\n// key: 'getChildContext',\r\n// value: function getChildContext() {\r\n// return { remaining: this.state.remaining };\r\n// }\r\n// }, {\r\n// key: 'componentDidMount',\r\n// value: function componentDidMount() {\r\n// this.timerId = setInterval(this.handleTick.bind(this), this.props.interval);\r\n// this.prevTime = Date.now();\r\n// }\r\n// }, {\r\n// key: 'componentWillUnmount',\r\n// value: function componentWillUnmount() {\r\n// this.clearTimer();\r\n// }\r\n// }, {\r\n// key: 'clearTimer',\r\n// value: function clearTimer() {\r\n// clearInterval(this.timerId);\r\n// this.timerId = null;\r\n// this.prevTime = null;\r\n// }\r\n// }, {\r\n// key: 'handleTick',\r\n// value: function handleTick() {\r\n// var currentTime = Date.now();\r\n// var elapsed = currentTime - this.prevTime;\r\n// var nextRemaining = this.state.remaining - elapsed;\r\n// if (nextRemaining <= 0) {\r\n// if (this.props.afterComplete !== null) {\r\n// this.props.afterComplete();\r\n// }\r\n// this.clearTimer();\r\n// this.setState({ remaining: 0 });\r\n// } else {\r\n// if (this.props.afterTick !== null) {\r\n// this.props.afterTick(nextRemaining);\r\n// }\r\n// this.prevTime = currentTime;\r\n// this.setState({ remaining: nextRemaining });\r\n// }\r\n// }\r\n// }, {\r\n// key: 'render',\r\n// value: function render() {\r\n// var _props = this.props;\r\n// var style = _props.style;\r\n// var children = _props.children;\r\n\r\n// return _react2.default.createElement('div', { style: style }, children);\r\n// }\r\n// }]);\r\n\r\n// return Timer;\r\n// }(_react.Component);\r\n\r\n// exports.default = Timer;\r\n// Timer.propTypes = {\r\n// interval: _propTypes2.default.number, // msec\r\n// remaining: _propTypes2.default.number.isRequired, // msec\r\n// afterTick: _propTypes2.default.func, // callback after each ticks\r\n// afterComplete: _propTypes2.default.func, // callback after remaining <= 0\r\n// style: _reactStyleProptype2.default, // container style object\r\n// children: _propTypes2.default.node // children react element node\r\n// };\r\n// Timer.defaultProps = {\r\n// interval: 1000,\r\n// afterTick: null,\r\n// afterComplete: null,\r\n// style: {},\r\n// children: null\r\n// };\r\n// Timer.childContextTypes = {\r\n// remaining: _propTypes2.default.number\r\n// };","import React, { Component } from 'react';\nimport { Modal } from 'react-bootstrap';\nimport { toBoolean } from './../../scripts/helper';\n\nconst showTests = () => toBoolean(process.env.REACT_APP_SHOW_TESTS);\n\nclass TestResultModal extends Component {\n\n constructor(props) {\n super(props);\n\n this.handleShow = this.handleShow.bind(this);\n this.handleClose = this.handleClose.bind(this);\n this.state = { showModal: false };\n }\n\n handleClose() {\n this.setState({ showModal: false });\n }\n\n handleShow() {\n this.setState({ showModal: true });\n }\n\n componentDidMount() {\n\n }\n\n render() {\n if (showTests()) {\n return (\n \n \n \n \n \n \n \n

    \n

    \n
    \n
    \n
    \n )\n } else return null\n }\n\n};\n\nexport default TestResultModal;\n","import React, { Component } from 'react';\r\nimport _ from 'lodash';\r\nimport * as helper from '../../scripts/helper'\r\nimport { customFetch } from '../../requests/api_calls'\r\nimport * as config from '../../requests/config'\r\nimport { parse } from \"query-string\";\r\nimport { render } from 'react-dom';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\n\r\nexport default class SupportLinks extends Component {\r\n constructor(props) {\r\n super(props);\r\n let serviceProviderId = parse(window.location.search).ServiceProviderId;\r\n if (!serviceProviderId)\r\n serviceProviderId = '';\r\n\r\n this.state = {\r\n loading: true,\r\n DownloadLinks: [],\r\n ServiceProviderId: serviceProviderId,\r\n HostName: helper.getDomain()\r\n }\r\n\r\n this.getDownloadLinksForProvider = this.getDownloadLinksForProvider.bind(this);\r\n }\r\n \r\n \r\n componentDidMount() {\r\n this.getDownloadLinksForProvider();\r\n }\r\n\r\n getDownloadLinksForProvider = async() => {\r\n let apiPath = `${config.baseApiUrl}usr/GetDocumentsSupport?ServiceProviderId=${this.state.ServiceProviderId}&HostName=${encodeURI(this.state.HostName)}`;\r\n const auth = \"Basic \" + btoa(\"msp\" + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n const apiHeaders = {\"Content-Type\": \"application/json\", Accept: \"application/json\", Authorization: auth};\r\n try {\r\n let documentResults = await customFetch(apiPath, apiHeaders);\r\n this.setState({DownloadLinks: documentResults});\r\n } catch (e) {\r\n console.log('Pre login customization call failed');\r\n } finally\r\n {\r\n this.setState({loading: false});\r\n }\r\n }\r\n\r\n getDownloads = () => {\r\n if (this.state.DownloadLinks > 0)\r\n {\r\n return (\r\n
    \r\n {this.state.DownloadLinks.map((file, idx) => {\r\n \r\n return (\r\n
    \r\n \r\n \r\n {file.URL}\r\n \r\n \r\n
    \r\n )\r\n })}\r\n
    \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n render() {\r\n if (this.state.loading)\r\n {\r\n return (\r\n
    \r\n
    \r\n

    Help & Support

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n
    \r\n

    Help & Support

    \r\n
    \r\n
    \r\n {this.getDownloads()}\r\n
    \r\n
    \r\n );\r\n }\r\n \r\n }\r\n};\r\n","import React, { Component } from \"react\";\r\nimport { DataLoadingSpinner } from \"../../components/spinners\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport \"@progress/kendo-theme-default/dist/all.css\";\r\nimport \"../../css/bootstrap.css\";\r\nimport \"../../css/app.css\";\r\nimport \"../../css/spinner.css\";\r\nimport \"../../css/msp_login.css\";\r\nimport * as helper from \"../../scripts/helper\";\r\nimport * as config from \"../../requests/config\";\r\nimport * as session from \"../../scripts/session\";\r\nimport momentumLogoWhite from \"../../images/momentum_logo.png\";\r\nimport { connect } from \"react-redux\";\r\nimport validator from \"validator\";\r\n\r\n\r\n\r\n\r\nclass MyLogin extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n Logo: momentumLogoWhite,\r\n loginEmail: '',\r\n loginError: \"\",\r\n contactError: \"\",\r\n UserData: null,\r\n isNetworkError: false,\r\n isInvalidUser: false,\r\n isRetail: true,\r\n };\r\n\r\n }\r\n\r\n getCustomizations = async currentUrl => {\r\n const b2cResults = await helper.getB2CConfigResults(currentUrl);\r\n //console.log(\"b2c\", b2cResults);\r\n this.loadingLogo = helper.IsWholesaleDomain(currentUrl)\r\n ? this.loadingLogo\r\n : momentumLogoWhite;\r\n const customAuthPolicy = this.preProcessCustomizations(b2cResults);\r\n\r\n await this.setState({ auth: customAuthPolicy, loading: false });\r\n };\r\n\r\n preProcessCustomizations = b2cResults => {\r\n let customAuthPolicy = config.auth;\r\n\r\n if (b2cResults) {\r\n let authority =\r\n config.authorityUrl +\r\n b2cResults.B2CPolicy\r\n\r\n customAuthPolicy = {\r\n clientId: b2cResults.B2CClientId,\r\n authority: authority,\r\n b2cScopes: []\r\n };\r\n let { LogoSmall, LogoLarge, VendorName, BrowserIcon } = b2cResults;\r\n this.loadingLogo = LogoLarge;\r\n helper.updateFavicon(BrowserIcon);\r\n if (!helper.isDigitalServicesDomain()) {\r\n helper.setTitle(VendorName);\r\n }\r\n //if (b2cResults && b2cResults != null && b2cResults.VendorId != -1) {\r\n if (b2cResults && b2cResults != null) {\r\n this.setState({ isRetail: false });\r\n }\r\n }\r\n return customAuthPolicy;\r\n };\r\n\r\n async componentDidMount() {\r\n //this.props.history.push(\"\\session\");\r\n const domain = await helper.getDomain();\r\n this.getCustomizations(domain);\r\n }\r\n\r\n handleSubmit = async () => {\r\n // SB 7/25/2021: new env variable\r\n const validEmail = validator.isEmail(this.state.loginEmail);\r\n if (validEmail === false) {\r\n this.setState({ loginError: \"Invalid User Id\", contactError: \"\" })\r\n return;\r\n }\r\n let { auth } = this.state;\r\n sessionStorage.setItem(\"CustomAuthClientId\", auth.clientId);\r\n sessionStorage.setItem(\"CustomAuthUrl\", auth.authority);\r\n const appName = process.env.REACT_APP_NAME;\r\n // added new var for contact error if retail only\r\n let contactMsg = this.state.isRetail ? \" Please contact Support at techs@momentumtelecom.com or 888-538-3960.\" : \" The login process failed. Please contact your account manager.\";\r\n await helper.checkIsUserValid(this.state.loginEmail, appName).then(async (response) => {\r\n this.setState({\r\n isNetworkError: false,\r\n });\r\n if (response) {\r\n sessionStorage.setItem(\"LoggedUser\", response.LoginName);\r\n await this.setState({ UserData: response, loginError: \"\" });\r\n // LOGIN USER\r\n await auth ? config.loginUser(response, auth) : config.loginUser(response);\r\n } else {\r\n this.setState({ loginError: \"The login process failed.\", contactError: contactMsg });\r\n return;\r\n }\r\n }).catch(async err => {\r\n console.log(err);\r\n this.setState({\r\n isNetworkError: Boolean(err.message),\r\n loginError: \"Unable to reach server\",\r\n contactError: \"\"\r\n });\r\n });\r\n }\r\n\r\n handleLoginEmailChange = (event) => {\r\n this.setState({ loginEmail: event.target.value });\r\n }\r\n\r\n formInput = () => {\r\n return (\r\n
    \r\n \r\n\r\n
    \r\n

    \r\n

    \r\n\r\n \r\n
    \r\n )\r\n }\r\n\r\n loginForm = () => {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Sign in with your existing account

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

    {this.state.loginError}

    \r\n

    {this.state.contactError}

    \r\n
    \r\n
    \r\n {this.formInput()}\r\n
    \r\n
    \r\n Sign in\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n loginContainer = () => {\r\n if (sessionStorage.loginError || this.props.loginError) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    {this.props.loginError}

    \r\n
    {this.props.loginErrorDescription}
    \r\n
    \r\n \r\n Restart Login\r\n \r\n
    \r\n
    \r\n );\r\n } else if (sessionStorage.redirecting || this.props.redirecting) {\r\n // REDIRECTING\r\n session.transitionTimeout();\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (helper.atLoginPath()) {\r\n // LOGIN USER\r\n return this.loginForm();\r\n }\r\n else {\r\n helper.redirectToLogin();\r\n return;\r\n }\r\n }\r\n\r\n render() {\r\n return this.loginContainer();\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n redirecting: helper.toBoolean(state.reducer.redirecting),\r\n restartSession: helper.toBoolean(state.reducer.restartSession),\r\n loginError: state.reducer.loginError,\r\n loginErrorDescription: state.reducer.loginErrorDescription,\r\n };\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps)(MyLogin));","import React, { Component } from \"react\";\r\nimport { DataLoadingSpinner } from \"../../components/spinners\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport \"@progress/kendo-theme-default/dist/all.css\";\r\nimport \"../../css/bootstrap.css\";\r\nimport \"../../css/app.css\";\r\nimport \"../../css/spinner.css\";\r\nimport \"../../css/msp_resetpassword.css\";\r\nimport * as helper from \"../../scripts/helper\";\r\nimport * as config from \"../../requests/config\";\r\nimport momentumLogoWhite from \"../../images/momentum_logo.png\";\r\nimport { connect } from \"react-redux\";\r\n\r\nclass ForgotPassword extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n Email: '',\r\n Error: \"\",\r\n Logo: momentumLogoWhite,\r\n validationError: \"\",\r\n isNetworkError: false,\r\n isInvalidUser: true,\r\n message: \"\",\r\n isMailSent: false,\r\n ProviderId: \"\",\r\n };\r\n }\r\n getCustomizations = async currentUrl => {\r\n const queryParams = new URLSearchParams(window.location.search);\r\n this.state.Email = queryParams.get(\"login_hint\");\r\n this.state.ProviderId = queryParams.get(\"ProviderId\");\r\n const b2cResults = await helper.getB2CConfigResults(currentUrl);\r\n this.loadingLogo = helper.IsWholesaleDomain(currentUrl)\r\n ? this.loadingLogo\r\n : momentumLogoWhite;\r\n const customAuthPolicy = this.preProcessCustomizations(b2cResults);\r\n\r\n await this.setState({ auth: customAuthPolicy, loading: false });\r\n };\r\n\r\n preProcessCustomizations = b2cResults => {\r\n let customAuthPolicy = config.auth;\r\n\r\n if (b2cResults) {\r\n const authority =\r\n config.authorityUrl +\r\n b2cResults.B2CPolicy +\r\n config.defaultXPolicyConfig;\r\n customAuthPolicy = {\r\n clientId: b2cResults.B2CClientId,\r\n authority: authority,\r\n b2cScopes: []\r\n };\r\n const { LogoSmall, LogoLarge, VendorName, BrowserIcon } = b2cResults;\r\n this.loadingLogo = LogoLarge;\r\n helper.updateFavicon(BrowserIcon);\r\n if (!helper.isDigitalServicesDomain()) {\r\n helper.setTitle(VendorName);\r\n }\r\n }\r\n return customAuthPolicy;\r\n };\r\n\r\n componentDidMount() {\r\n // this.props.history.push(\"\\session\");\r\n const domain = helper.getDomain();\r\n this.getCustomizations(domain);\r\n }\r\n\r\n handleOnSave = () => {\r\n this.setState({ message: \"\" });\r\n if (!this.state.Email) {\r\n this.setState({ Error: \"Email is missing.\", validationError: \" Please contact your account manager.\" });\r\n return;\r\n }\r\n else {\r\n let state = { ...this.state };\r\n state.savingLoading = true;\r\n state.savingShowSuccess = false;\r\n this.setState(state);\r\n\r\n let headers = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n\r\n\r\n //let apiUrl = \"admin/GetPasswordResetLink\";\r\n\r\n helper.SendResetPasswordLink(this.state.Email).then((response) => {\r\n if (response == null) {\r\n this.setState({ Error: \"The reset password process could not proceed: No email on file.\", validationError: \"Please contact your System Administrator for password assistance. \", isMailSent: false });\r\n return;\r\n }\r\n else {\r\n this.setState({\r\n isNetworkError: false,\r\n message: \"The mail has been successfully sent to your email. Please click the link in your email to reset the password.\",\r\n isMailSent: true\r\n });\r\n if (response) {\r\n this.setState({ Error: \"\" });\r\n }\r\n }\r\n }).catch(async err => {\r\n console.log(err);\r\n this.setState({\r\n isNetworkError: Boolean(err.message),\r\n Error: \"Unable to reach server\",\r\n validationError: \"\",\r\n isMailSent: false\r\n });\r\n });\r\n }\r\n }\r\n handleOnBack = () => {\r\n helper.redirectToLogin();\r\n return;\r\n }\r\n\r\n handleLoginEmailChange = (event) => {\r\n if (this.state.ProviderId === 18129 || this.state.ProviderId === \"18129\") {\r\n this.setState({ Email: event.target.value });\r\n } else return;\r\n }\r\n\r\n sendLinkForm = () => {\r\n let state = this.state;\r\n // const queryParams = new URLSearchParams(window.location.search);\r\n // state.Email = queryParams.get(\"login_hint\");\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n

    Forgot Password

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

    A link to reset your password will be sent to the email address associated with the user name below.

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

    {this.state.Error}

    \r\n

    {this.state.validationError}

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {this.getResponseMessage()}\r\n {!this.state.isMailSent ?
    \r\n Send\r\n
    : null}\r\n Back\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n getResponseMessage = () => {\r\n if (this.state.message) {\r\n return (
    {this.state.message}
    )\r\n }\r\n return \"\";\r\n }\r\n sendLinkContainer = () => {\r\n if (this.state.isInvalidUser) {\r\n return this.sendLinkForm();\r\n }\r\n else {\r\n helper.redirectToLogin();\r\n return;\r\n }\r\n }\r\n\r\n render() {\r\n return this.sendLinkContainer();\r\n }\r\n}\r\nconst mapStateToProps = state => {\r\n return {\r\n redirecting: helper.toBoolean(state.reducer.redirecting),\r\n restartSession: helper.toBoolean(state.reducer.restartSession),\r\n loginError: state.reducer.loginError,\r\n loginErrorDescription: state.reducer.loginErrorDescription,\r\n };\r\n};\r\nexport default withRouter(connect(mapStateToProps)(ForgotPassword));","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { fetchData, post } from '../../../requests/api_calls';\r\nimport * as session from \"../../../scripts/session\";\r\nimport { store } from '../../../store/store';\r\nimport * as actions from \"../../../store/actions\";\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\n\r\nexport default class MFAValidateModal extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n //this.inputRef = React.createRef();\r\n\r\n this.state = {\r\n showModal: true,\r\n pinCode: '',\r\n validationError: \"\",\r\n isOktaPushEnabled: sessionStorage.getItem(\"IsOktaPushEnabled\") == \"true\" ? true : false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getMFADetails();\r\n //this.inputRef.current.focus();\r\n }\r\n\r\n getMFADetails = async () => {\r\n try {\r\n const verificationMethod = sessionStorage.getItem('verificationMethod');\r\n if (verificationMethod && verificationMethod == \"sms\") {\r\n let path = 'usr/ValidateTwoStepSmsConfig';\r\n await post(path, \"POST\");\r\n }\r\n if (this.state.isOktaPushEnabled) {\r\n this.onSendPushNotification();\r\n }\r\n } catch (error) {\r\n console.log(\"no MFA details or error MFA fetching details\")\r\n }\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({ showModal: false });\r\n };\r\n\r\n onSubmitAuthPinCode = async () => {\r\n try {\r\n const response = await post('usr/ValidateTwoStepVerificationConfig', 'POST', this.state.pinCode);\r\n if (response.ok) {\r\n this.setState({ validationError: \"\" });\r\n store.dispatch({ type: actions.VALIDATE_MFA });\r\n this.handleClose();\r\n } else {\r\n console.log(`onSubmitAuthPinCode failed: ${response.message}`);\r\n this.setState({ validationError: `Authentication PIN validation failed. The code entered is invalid or has expired.` });\r\n }\r\n } catch (error) {\r\n console.log(`onSubmitAuthPinCode failed: ${error}`);\r\n this.setState({ validationError: \"Something went wrong while attempting to validate the pin.\" });\r\n }\r\n };\r\n\r\n onSendPushNotification = async () => {\r\n await this.setState({ validationError: \"\", oktaFailed: false });\r\n try {\r\n let path = \"usr/SendOktaPushNotification?isConfigure=false\";\r\n const response = await post(path, 'POST');\r\n if (response.ok) {\r\n //this.setState({ validationError: \"\", oktaFailed: false });\r\n store.dispatch({ type: actions.VALIDATE_MFA });\r\n this.handleClose();\r\n } else {\r\n console.log(`onSendPushNotification failed: ${response.message}`);\r\n this.setState({ validationError: `Okta push notification failed.`, oktaFailed: true });\r\n }\r\n } catch (error) {\r\n console.log(`onSendPushNotification failed: ${error}`);\r\n this.setState({ validationError: \"Something went wrong while attempting to validate the push notification.\", oktaFailed: true });\r\n }\r\n }\r\n\r\n errorContent = () => {\r\n if (this.state.validationError === \"\") {\r\n return;\r\n } else {\r\n return (\r\n

    {this.state.validationError}

    \r\n )\r\n }\r\n }\r\n\r\n getBodyContent() {\r\n if (this.state.isOktaPushEnabled) {\r\n if (this.state.oktaFailed) {\r\n return (\r\n
    \r\n
    \r\n \r\n Resend push notification\r\n \r\n
    \r\n
    \r\n \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 return (\r\n
    \r\n
    \r\n \r\n this.setState({ pinCode: e.target.value })}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n this.onSubmitAuthPinCode();\r\n }\r\n }}\r\n autoFocus\r\n />\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
    \r\n \r\n Multi-Factor Authentication\r\n \r\n \r\n {this.getBodyContent()}\r\n {this.errorContent()}\r\n \r\n
    \r\n
    \r\n\r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as EmailValidator from 'email-validator';\r\nimport { post, fetchData, JSONToFormUrlEndcodedString } from '../../../requests/api_calls'\r\nimport { store } from '../../../store/store';\r\nimport * as actions from \"../../../store/actions\";\r\nimport * as session from '../../../scripts/session';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { Switch } from '@progress/kendo-react-inputs';\r\n\r\nexport default class MFAAuthModal extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n email: '',\r\n showGrabEmailForm: false,\r\n showModal: true,\r\n loading: false,\r\n loadingQR: false,\r\n loadingError: '',\r\n qrImageUrl: '',\r\n qrKey: '',\r\n pinCode: '',\r\n phoneNumber: '',\r\n storedPhoneNumber: '',\r\n verificationMethod: sessionStorage.verificationMethod,\r\n validationError: \"\",\r\n successMessage: \"\",\r\n isTextMessageOn: false,\r\n isAuthAppOn: false,\r\n onSuccessSMS: false,\r\n onSuccessSubmitPinCode: false,\r\n isOktaPushEnabled: false,\r\n oktaId: \"\",\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n await this.setState({ loading: true })\r\n const userEmail = await fetchData('usr/GetUserEmailMFA').then(data => data).catch(err => console.error(err));\r\n if (userEmail) {\r\n if (sessionStorage.verificationMethod && sessionStorage.verificationMethod != \"\") {\r\n let method = sessionStorage.verificationMethod;\r\n await this.setState({ verificationMethod: method });\r\n if (method == \"sms\") {\r\n this.setState({ isTextMessageOn: true });\r\n }\r\n if (method == \"authApp\") {\r\n let isOkta = sessionStorage.IsOktaPushEnabled == \"true\" ? true : false;\r\n if (!isOkta) {\r\n this.getQRImageUrl();\r\n }\r\n await this.setState({ isAuthAppOn: true, isOktaPushEnabled: isOkta });\r\n }\r\n }\r\n await this.setState({ loading: false });\r\n } else {\r\n this.setState({ showGrabEmailForm: true, loading: false });\r\n }\r\n }\r\n\r\n handleOpen = () => {\r\n this.componentDidMount();\r\n this.setState({\r\n showModal: true,\r\n });\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({\r\n showModal: false,\r\n successMessage: \"\",\r\n validationError: \"\",\r\n pinCode: \"\",\r\n verificationMethod: \"\",\r\n isTextMessageOn: false,\r\n isAuthAppOn: false,\r\n onSuccessSMS: false,\r\n onSuccessSubmitPinCode: false,\r\n oktaId: \"\",\r\n isOktaPushEnabled: false\r\n });\r\n };\r\n\r\n fetchUserEmail = async () => {\r\n try {\r\n await this.setState({ loading: true });\r\n const path = 'usr/GetUserEmailMFA';\r\n const response = await fetchData(path);\r\n if (response.ok) {\r\n await this.setState({ email: response });\r\n } else {\r\n console.error(`fetchUserEmail(): failed: ${response.message}`);\r\n this.setState({ validationError: \"Something went wrong while retrieving email.\", successMessage: \"\", loading: false });\r\n }\r\n } catch (error) {\r\n console.error(`fetchUserEmail(): failed: ${error}`);\r\n this.setState({ validationError: \"Something went wrong while retrieving email.\", successMessage: \"\", loading: false });\r\n }\r\n }\r\n\r\n getQRImageUrl = async () => {\r\n await this.setState({ loadingQR: true });\r\n try {\r\n const apiPath = 'usr/GetQRImageUrl';\r\n const tsv = await fetchData(apiPath);\r\n this.setState({ loadingQR: false, qrImageUrl: tsv.qrImageUrl, qrKey: tsv.keyCode });\r\n } catch (e) {\r\n console.error('Failed request. Not able to get QR Image Url', e);\r\n this.setState({ loadingQR: false, validationError: \"Something went wrong while retrieving the QR code.\", isOktaPushEnabled: false });\r\n }\r\n };\r\n\r\n getOktaQRImageUrl = async () => {\r\n await this.setState({ loadingQR: true });\r\n try {\r\n const apiOktaPath = 'usr/GetOktaPushQRImage';\r\n const tsv = await fetchData(apiOktaPath);\r\n this.setState({ loadingQR: false, qrOktaImageUrl: tsv.qrImageUrl, qrKey: tsv.keyCode });\r\n } catch (e) {\r\n console.error('Failed request. Not able to get QR Image Url', e);\r\n this.setState({ loadingQR: false, validationError: \"Something went wrong while retrieving the QR code.\", isOktaPushEnabled: false });\r\n }\r\n };\r\n\r\n enableOktaPush = async () => {\r\n await this.setState({ isOktaPushEnabled: true, loadingQR: true, confirmOktaVerify: false });\r\n this.getOktaQRImageUrl();\r\n }\r\n\r\n submitPhoneNumber = async () => {\r\n try {\r\n this.setState({ loading: true, storedPhoneNumber: this.state.phoneNumber });\r\n const path = 'usr/ValidateTwoStepSmsConfig';\r\n const response = await post(path, \"POST\", JSON.stringify(this.getTFAUserData()));\r\n if (response.ok) {\r\n this.setState({ loading: false, onSuccessSMS: true, validationError: \"\", successMessage: \"You will receive an SMS code shortly to confirm your MFA configuration. Once received, input into the textbox at the bottom and click 'Save'!\", loading: false });\r\n } else {\r\n console.error(`submitPhoneNumber(): failed: ${response.message}`);\r\n this.setState({ loading: false, onSuccessSMS: false, validationError: \"Something went wrong while sending the SMS code.\", successMessage: \"\", loading: false });\r\n }\r\n } catch (error) {\r\n console.error(`submitPhoneNumber(): failed: ${error}`);\r\n this.setState({ loading: false, onSuccessSMS: false, validationError: \"Something went wrong while sending the SMS code.\", successMessage: \"\", loading: false });\r\n }\r\n }\r\n\r\n getTFAUserData = () => {\r\n const { qrKey, pinCode, verificationMethod, phoneNumber, storedPhoneNumber, isOktaPushEnabled, oktaId } = this.state;\r\n return {\r\n Key: qrKey,\r\n Code: pinCode,\r\n VerificationMethod: verificationMethod,\r\n EnableOktaPush: isOktaPushEnabled,\r\n Mobile: storedPhoneNumber,\r\n OktaId: oktaId\r\n //Email: \"\",\r\n };\r\n };\r\n\r\n onSubmitAuthPinCode = async () => {\r\n try {\r\n await this.setState({ loading: true, successMessage: \"\", validationError: \"\" })\r\n let path = \"usr/SaveTwoStepVerification\";\r\n const response = await post(path, 'POST', JSON.stringify(this.getTFAUserData()));\r\n if (response.ok) {\r\n this.setState({ validationError: \"\", onSuccessSubmitPinCode: true });\r\n store.dispatch({ type: actions.VALIDATE_MFA });\r\n sessionStorage.setItem('verificationMethod', this.state.verificationMethod);\r\n sessionStorage.setItem('IsOktaPushEnabled', false);\r\n this.setState({ loading: false, successMessage: \"Success! You may continue with your current session. All login attempts from here on will require an access code.\", validationError: \"\" });\r\n } else {\r\n console.log(`onSubmitAuthPinCode(): failed: ${response.message}`);\r\n this.setState({ loading: false, validationError: `Something went wrong while saving the configuration: ${response.message}`, successMessage: \"\" });\r\n }\r\n } catch (error) {\r\n console.error(`onSubmitAuthPinCode(): failed: ${error}`);\r\n this.setState({ loading: false, validationError: `Something went wrong while saving the configuration: ${error}`, successMessage: \"\" });\r\n }\r\n };\r\n\r\n onSendPushNotification = async () => {\r\n try {\r\n await this.setState({ loading: true, successMessage: \"\", validationError: \"\" })\r\n let path = \"usr/SendOktaPushNotification?isConfigure=true\";\r\n const response = await post(path, 'POST', JSON.stringify(this.getTFAUserData()));\r\n if (response.ok) {\r\n this.setState({ validationError: \"\", onSuccessSubmitPinCode: true });\r\n store.dispatch({ type: actions.VALIDATE_MFA });\r\n sessionStorage.setItem('verificationMethod', this.state.verificationMethod);\r\n sessionStorage.setItem('IsOktaPushEnabled', true);\r\n this.setState({\r\n loading: false,\r\n successMessage: \"Your push request was successful!.\",\r\n validationError: \"\",\r\n qrOktaImageUrl: \"\"\r\n });\r\n } else {\r\n console.log(`onSendPushNotification(): failed: ${response.message}`);\r\n this.setState({ loading: false, validationError: `Something went wrong while saving the configuration: ${response.message}`, successMessage: \"\" });\r\n }\r\n } catch (error) {\r\n console.error(`onSendPushNotification(): failed: ${error}`);\r\n this.setState({ loading: false, validationError: `Something went wrong while saving the configuration: ${error}`, successMessage: \"\" });\r\n }\r\n }\r\n\r\n validateEmail(email) {\r\n if (email && !EmailValidator.validate(email.trim()))\r\n return (
    '{email.trim()}' Not a valid email
    );\r\n }\r\n\r\n errorContent = () => {\r\n if (this.state.successMessage !== \"\") {\r\n return (\r\n

    {this.state.successMessage}

    \r\n )\r\n }\r\n\r\n if (this.state.validationError === \"\") {\r\n return;\r\n } else {\r\n return (\r\n

    {this.state.validationError}

    \r\n )\r\n }\r\n }\r\n\r\n sendEmailValidate = async (email) => {\r\n try {\r\n await this.setState({ loading: true });\r\n let path = `usr/ValidateTwoStepEmail?p_email=${email}`;\r\n const response = await fetchData(path);\r\n if (response === 200) {\r\n this.setState({ loading: false, validationError: \"\", successMessage: \"Success! You will receive a verification link to your chosen email and will be automatically logged out shortly.\" });\r\n setTimeout(() => {\r\n session.logout();\r\n }, 8000);\r\n } else {\r\n console.log(`sendEmailValidate failed: ${response.message}`);\r\n this.setState({ loading: false, validationError: \"Something went wrong while sending the email link.\", successMessage: \"\" });\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n this.setState({ loading: false, validationError: \"Something went wrong while sending the email link.\", successMessage: \"\" });\r\n }\r\n }\r\n\r\n getQRImageContent() {\r\n const { qrImageUrl, loadingQR, isOktaPushEnabled, qrOktaImageUrl } = this.state;\r\n\r\n if (loadingQR) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n if (qrImageUrl && !loadingQR && !isOktaPushEnabled) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (qrOktaImageUrl && !loadingQR && isOktaPushEnabled) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getBodyContent() {\r\n let loading = this.state.loading;\r\n if (loading) {\r\n return ();\r\n }\r\n\r\n let loadingError = this.state.loadingError;\r\n if (loadingError) {\r\n return (
    {loadingError}
    );\r\n }\r\n\r\n if (this.state.showGrabEmailForm) {\r\n return (\r\n
    \r\n
    \r\n \r\n this.setState({ email: e.target.value })}\r\n autoFocus\r\n />\r\n {this.validateEmail(this.state.email)}\r\n {\r\n this.sendEmailValidate(this.state.email);\r\n }}\r\n >Validate Email\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n if (this.state.confirmOktaVerify && !this.state.isOktaPushEnabled) {\r\n return (\r\n
    \r\n

    Are you sure you want to enable Okta Verify? You will need to re-scan the generated QR code to enable. Any previous enrollments will be removed.

    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n

    \r\n Add an extra layer of security to block unauthorized access and protect your account.\r\n

    \r\n

    MFA verification options:

    \r\n {sessionStorage.MfaAllowSms == \"true\" ?
    \r\n
    \r\n

    Text Message

    \r\n {\r\n this.setState({ isAuthAppOn: false, isTextMessageOn: true, verificationMethod: 'sms', isOktaPushEnabled: false });\r\n }}\r\n //disabled={sessionStorage.verificationMethod && sessionStorage.verificationMethod != \"\" ? true : false}\r\n />\r\n
    \r\n {this.state.isTextMessageOn && (<>\r\n

    Provide your phone number to get a SMS code to enable the authentication:

    \r\n
    \r\n <>\r\n this.setState({ phoneNumber: removePhoneFormatting(e.target.value) })}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n this.submitPhoneNumber();\r\n }\r\n }}\r\n placeholder={\"Enter your mobile device number!\"}\r\n autoFocus\r\n //disabled={sessionStorage.verificationMethod && sessionStorage.verificationMethod != \"\" ? true : false}\r\n />\r\n Submit\r\n \r\n
    \r\n )}\r\n
    : null}\r\n {sessionStorage.MfaAllowAuthApp == \"true\" ?
    \r\n
    \r\n

    Authenticator app code

    \r\n {\r\n if (this.state.isOktaPushEnabled) {\r\n this.setState({ isTextMessageOn: false, isAuthAppOn: true, verificationMethod: 'authApp' });\r\n } else {\r\n this.getQRImageUrl();\r\n this.setState({ isTextMessageOn: false, isAuthAppOn: true, verificationMethod: 'authApp' });\r\n }\r\n }}\r\n //disabled={sessionStorage.verificationMethod && sessionStorage.verificationMethod != \"\" ? true : false}\r\n />\r\n
    \r\n {this.state.isAuthAppOn ? <>\r\n
    \r\n

    Scan the QR code and enter the pin generated by Okta, Google or Microsoft authenticator app to confirm it's you.

    \r\n {/*
    \r\n \r\n
    */}\r\n {this.getQRImageContent()}\r\n
    \r\n : null}\r\n
    : null}\r\n
    \r\n {/* {this.state.isAuthAppOn && this.state.isOktaPushEnabled && this.state.qrOktaImageUrl && !this.state.loadingQR ?\r\n <>\r\n

    After you scan your QR code, press the button to send the push notification

    \r\n
    \r\n \r\n Send push notification\r\n \r\n
    \r\n \r\n : null} */}\r\n {!this.state.isOktaPushEnabled && (this.state.isTextMessageOn || this.state.isAuthAppOn) ? <>\r\n \r\n this.setState({ pinCode: e.target.value })}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n this.onSubmitAuthPinCode();\r\n }\r\n }}\r\n autoFocus\r\n //disabled={sessionStorage.verificationMethod && sessionStorage.verificationMethod != \"\" ? true : false}\r\n />\r\n
    \r\n \r\n Save\r\n \r\n \r\n
    \r\n : null}\r\n {this.state.isOktaPushEnabled ?
    \r\n \r\n
    : null}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n getMethod = () => {\r\n if (sessionStorage.verificationMethod == 'authApp') {\r\n if (sessionStorage.IsOktaPushEnabled == \"true\") {\r\n return \"Okta Verify\";\r\n } else {\r\n return \"Authenticator App\";\r\n }\r\n }\r\n\r\n if (sessionStorage.verificationMethod == 'sms') {\r\n return \"SMS\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n render() {\r\n const modalVerbiage = () => {\r\n if (sessionStorage.verificationMethod && (sessionStorage.verificationMethod !== \"\" || sessionStorage.verificationMethod !== null || sessionStorage.verificationMethod !== undefined)) {\r\n return \"Manage Multi-factor Authentication\"\r\n } else {\r\n return \"Enable Multi-factor Authentication\"\r\n }\r\n }\r\n return (\r\n <>\r\n \r\n \r\n \r\n Enable Multi-factor Authentication\r\n \r\n {/* */}\r\n \r\n \r\n {this.getBodyContent()}\r\n {this.errorContent()}\r\n {sessionStorage.verificationMethod && sessionStorage.verificationMethod != \"\"\r\n ?

    {`MFA is currently enabled for this account: ${this.getMethod()}`}

    \r\n : null\r\n }\r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nfunction isNumericInput(event) {\r\n const key = event.keyCode;\r\n return ((key >= 48 && key <= 57) || // Allow number line\r\n (key >= 96 && key <= 105) // Allow number pad\r\n );\r\n};\r\n\r\nfunction isModifierKey(event) {\r\n const key = event.keyCode;\r\n return (event.shiftKey === true || key === 35 || key === 36) || // Allow Shift, Home, End\r\n (key === 8 || key === 9 || key === 13 || key === 46) || // Allow Backspace, Tab, Enter, Delete\r\n (key > 36 && key < 41) || // Allow left, up, right, down\r\n (\r\n // Allow Ctrl/Command + A,C,V,X,Z\r\n (event.ctrlKey === true || event.metaKey === true) &&\r\n (key === 65 || key === 67 || key === 86 || key === 88 || key === 90)\r\n )\r\n};\r\n\r\nfunction enforceFormat(event) {\r\n // Input must be of a valid number format or a modifier key, and not longer than ten digits\r\n if (!isNumericInput(event) && !isModifierKey(event)) {\r\n event.preventDefault();\r\n }\r\n};\r\n\r\nfunction formatToPhone(event) {\r\n if (isModifierKey(event)) { return; }\r\n\r\n const input = event.target.value.replace(/\\D/g, '').substring(0, 10); // First ten digits of input only\r\n const areaCode = input.substring(0, 3);\r\n const middle = input.substring(3, 6);\r\n const last = input.substring(6, 10);\r\n\r\n if (input.length > 6) { event.target.value = `(${areaCode}) ${middle} - ${last}`; }\r\n else if (input.length > 3) { event.target.value = `(${areaCode}) ${middle}`; }\r\n else if (input.length > 0) { event.target.value = `(${areaCode}`; }\r\n};\r\n\r\nfunction removePhoneFormatting(phoneNumber) {\r\n return phoneNumber.replace(/\\D/g, '');\r\n}","import React, { Component } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { tokenUpdater } from \"./scripts/session\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport Navbar from \"./containers/navigation/navbar\";\r\nimport Sidebar from \"./containers/navigation/sidebar\";\r\nimport Footer from \"./components/footer\";\r\nimport Login from \"./containers/login\";\r\nimport FullStoryScript from \"./scripts/full_story\";\r\nimport * as helper from \"./scripts/helper\";\r\nimport * as session from \"./scripts/session\";\r\nimport * as config from \"./requests/config\";\r\nimport * as apiCalls from \"./requests/api_calls\";\r\nimport * as settings from \"./scripts/settings\";\r\nimport IdleLogout from \"./components/idle_logout\";\r\nimport \"prop-types\";\r\nimport Timer from \"./thirdparty/react-timer-component/lib/Timer\";\r\nimport { parse } from \"query-string\";\r\nimport { DataLoadingSpinner } from \"./components/spinners\";\r\nimport momentumLogoWhite from \"./images/momentum_logo_white.png\";\r\nimport momentumLogoSidebar from \"./images/momentum_logo.png\";\r\nimport TestResultModal from \"./containers/modals/testResultModal\";\r\nimport cssVars from \"css-vars-ponyfill\";\r\nimport { tokenRepo } from './store/redux';\r\nimport SupportLinksPage from './containers/noAuth/supportLinks'\r\nimport * as actions from \"./store/actions\";\r\nimport MyLogin from \"./containers/login/login\";\r\nimport ResetPassword from \"./containers/login/resetPassword\";\r\nimport ForgotPassword from \"./containers/login/forgotPassword\";\r\nimport MFAValidateModal from \"./containers/login/modals/validateMFAmodal\";\r\nimport ValidateMfaEmail from \"./containers/login/mfaEmailValidateRedirect\";\r\nimport MFAAuthModal from \"./containers/login/modals/mfaModal\";\r\n\r\nclass App extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.wholesaleIndicatorFound = false;\r\n this.sideBarLogo = null;\r\n this.loadingLogo = null;\r\n this.loadingAltText = null;\r\n this.state = {\r\n RPXLoginFail: false,\r\n rpxLogin: false,\r\n rpxLoginDetailsRetrieved: false,\r\n key: 1,\r\n customTheme: true,\r\n customThemeLoaded: false,\r\n faviconApplied: false,\r\n rpxLogo: null,\r\n loadingLogo: null,\r\n loadingLogoAltText: '',\r\n loadingAccessToken: true,\r\n isMspLogin: false,\r\n validMfa: false,\r\n };\r\n }\r\n\r\n processCustomizations = async () => {\r\n this.wholesaleIndicatorFound = true;\r\n try {\r\n let hostName = window.location.host === 'localhost:44316' ? process.env.REACT_APP_TEST_DOMAIN : window.location.host;\r\n let customizations = await config.retrieveCustomConfigs(hostName);\r\n let LogoLarge, LogoSmall, VendorId;\r\n if (!customizations) {\r\n const staticJSONPrefix = helper.getJSONFilePrefix();\r\n if (staticJSONPrefix) {\r\n const filename = `${staticJSONPrefix}-UI-${process.env.REACT_APP_ENVIRONMENT}`;\r\n try {\r\n customizations = await import(`../public/data/UISettings/${filename}`);\r\n } catch (e) {\r\n console.log('Error parsing JSON file');\r\n }\r\n }\r\n }\r\n LogoLarge = customizations.LogoLarge;\r\n VendorId = customizations.VendorId;\r\n LogoSmall = customizations.LogoSmall;\r\n\r\n this.loadingLogo = LogoLarge || momentumLogoWhite;\r\n this.sideBarLogo = LogoSmall || momentumLogoSidebar;\r\n helper.storeCustomImages(this.sideBarLogo, this.loadingLogo);\r\n this.loadingAltText = LogoLarge ? 'Logo' : 'Momentum Telecom Logo';\r\n const isApplied = await helper.processWholesaleCustomizations(customizations, this.sideBarLogo, this.loadingLogo);\r\n if (!customizations.CSS)\r\n await this.SetDefaultCSS();\r\n if (isApplied) {\r\n this.setState({ customTheme: true, customThemeLoaded: true });\r\n } else {\r\n this.setDefaultLogos();\r\n }\r\n } catch (e) {\r\n this.setDefaultLogos();\r\n }\r\n this.reducerMethod(actions.UI_SKINS_APPLIED);\r\n };\r\n\r\n setDefaultLogos = () => {\r\n this.sideBarLogo = momentumLogoSidebar;\r\n this.loadingLogo = momentumLogoWhite;\r\n this.loadingAltText = 'Momentum Telecom Logo';\r\n helper.storeCustomImages(null, this.loadingLogo);\r\n this.setState({ customTheme: false });\r\n }\r\n\r\n checkWholesale = async () => {\r\n const { customTheme } = this.state;\r\n\r\n if (helper.shouldApplyCustomizations()) {\r\n this.processCustomizations();\r\n } else if (customTheme) {\r\n this.loadingLogo = momentumLogoWhite;\r\n this.setState({ customTheme: false });\r\n } else {\r\n this.SetDefaultCSS();\r\n }\r\n };\r\n\r\n SetDefaultCSS = async () => {\r\n //for internet explorer have to apply polyfills or will end up with no styling\r\n const filename = `Retail-CSS.json`;\r\n const styles = await import(`../public/data/UISettings/${filename}`);\r\n let variables = {};\r\n\r\n Object.keys(styles).forEach(style => {\r\n let val = styles[style];\r\n variables[`--theme-${style}`] = val;\r\n });\r\n\r\n cssVars({ variables });\r\n }\r\n componentDidUpdate() {\r\n if (!this.wholesaleIndicatorFound) {\r\n this.checkWholesale();\r\n }\r\n }\r\n\r\n componentWillReceiveProps(props) {\r\n if (props.loadingAccessToken !== this.state.loadingAccessToken\r\n || props.loggedIn !== this.state.loggedIn\r\n || props.beta_access_denied !== this.state.beta_access_denied\r\n || props.isMspLogin !== this.state.isMspLogin\r\n || props.validMfa !== this.state.validMfa) {\r\n this.setState({\r\n loadingAccessToken: props.loadingAccessToken,\r\n loggedIn: props.loggedIn,\r\n requestToken: props.requestToken,\r\n beta_access_denied: props.beta_access_denied,\r\n isMspLogin: props.isMspLogin,\r\n validMfa: props.validMfa\r\n });\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n try {\r\n if (!helper.urlIncludes(\"ext_authenticate\") && !sessionStorage.getItem('loggingOut') && !sessionStorage.getItem('emulatedUser')) {\r\n this.reducerMethod();\r\n } else {\r\n this.setState({ loadingAccessToken: false });\r\n }\r\n } catch (error) {\r\n console.log('Error componentWillMount: ' + error.toString());\r\n } finally {\r\n // ///////////////////////////////\r\n // console.log(\"----GetEnterpriseLevelMFA----START\");\r\n // apiCalls.fetchData('admin/GetEnterpriseLevelMFA').then(data => {\r\n // console.log(\"----GetEnterpriseLevelMFA\", data);\r\n // this.setState({ MFAOption: data });\r\n // }).catch(err => console.error(err));\r\n // ///////////////////////////////\r\n this.checkWholesale();\r\n helper.checkPageTitle();\r\n if (helper.urlIncludes(\"ext_authenticate\")) {\r\n this.authorizeRpxSession();\r\n this.retrieveRpxLogo();\r\n }\r\n }\r\n }\r\n\r\n reducerMethod = (actionName = '') => this.props.tokenRepo(actionName);\r\n\r\n retrieveRpxLogo = async () => {\r\n const b2cResults = await helper.getB2CConfigResults(helper.getDomain());\r\n if (b2cResults) {\r\n const { LogoLarge, VendorId } = b2cResults;\r\n helper.storeVendorId(VendorId);\r\n this.setState({ rpxLogo: LogoLarge });\r\n } else {\r\n this.SetDefaultCSS();\r\n }\r\n };\r\n\r\n authorizeRpxSession = async e => {\r\n try {\r\n\r\n let encryptedParams = parse(window.location.search).params;\r\n let emulationUserParam = parse(window.location.search).EUN;\r\n let userParam = decodeURIComponent(parse(window.location.search).UN);\r\n let uidParam = parse(window.location.search).EUID;\r\n let ipParam = parse(window.location.search).IP;\r\n if (ipParam && ipParam.toString() === '1')\r\n sessionStorage.setItem('IPTrunkEmulation', true);\r\n //retrieve details for fullstory -> sessionStorage.userEmail + '-' + sessionStorage.sessionStart\r\n sessionStorage.setItem('sessionStart', new Date().getTime());\r\n sessionStorage.setItem('RPXLogin', true);\r\n sessionStorage.setItem('emulatedUser', emulationUserParam);\r\n sessionStorage.setItem('userEmail', userParam);\r\n sessionStorage.setItem('userId', uidParam);\r\n await this.setState({ rpxLoginDetailsRetrieved: true });\r\n const rpxParams = {\r\n params: encryptedParams,\r\n EUN: emulationUserParam,\r\n UN: userParam,\r\n EUID: uidParam\r\n }\r\n config.loginRPXUser(rpxParams).then(null, rejected => {\r\n if (rejected == 'token not valid') {\r\n //window.location.reload();\r\n this.authorizeRpxSession();\r\n console.log('Called AzurToekn api call again on failure');\r\n }\r\n else {\r\n this.setState({ RPXLoginFail: true });\r\n }\r\n console.log(rejected);\r\n });\r\n } catch (error) {\r\n this.setState({ RPXLoginFail: true });\r\n console.log(error);\r\n }\r\n };\r\n\r\n onIdle = () => session.logout();\r\n\r\n updateToken = e => {\r\n setTimeout(() => {\r\n tokenUpdater(true);\r\n this.setState({ ...this.state, key: this.state.key + 1 });\r\n }, 3000);\r\n };\r\n\r\n render() {\r\n let tokenIsValid = (sessionStorage.tokenIsValid || false);\r\n let domain = helper.getDomain();\r\n //if (this.state.RPXLoginFail)\r\n let loginErrorHTML = (\r\n
    \r\n
    \r\n
    \r\n

    Error

    \r\n
    Login Failed
    \r\n
    \r\n \r\n Restart Login\r\n \r\n
    \r\n
    \r\n );\r\n const { rpxLogo } = this.state;\r\n\r\n let RPXLogo = (\r\n
    \r\n Logo\r\n \r\n
    \r\n );\r\n if (helper.urlIncludes(\"ext_authenticate\")) {\r\n if (this.state.rpxLoginDetailsRetrieved === true) {\r\n if (this.state.RPXLoginFail)\r\n return (\r\n
    \r\n \r\n {loginErrorHTML}\r\n
    \r\n );\r\n else if (rpxLogo) {\r\n return (\r\n
    \r\n \r\n {RPXLogo}\r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n } else {\r\n if (this.state.RPXLoginFail) {\r\n return (\r\n { loginErrorHTML }\r\n );\r\n } else if (rpxLogo) {\r\n { RPXLogo }\r\n } else return null;\r\n }\r\n } else if (this.props.beta_access_denied) {\r\n let primaryUrl = helper.getProductionUrl();\r\n return (\r\n
    \r\n {/* */}\r\n
    \r\n
    \r\n

    Access to Beta Denied

    \r\n
    \r\n This account has not been granted access to the Beta\r\n Environment. Click on the link below to be redirected to the\r\n Cloud Services Portal\r\n
    \r\n
    \r\n \r\n Subscriber Portal\r\n \r\n
    \r\n \r\n Login with another account\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n } else if (this.props.loggedIn || sessionStorage.loggedIn && tokenIsValid) {\r\n if (\r\n (this.state.customTheme && this.state.customThemeLoaded) ||\r\n !this.state.customTheme\r\n ) {\r\n // ** Start MFA code\r\n // read enterprise option; if set to 'Mandatory' (and no verification type) open MFA modal\r\n if (sessionStorage.enableMFA == \"true\" && sessionStorage.MFAOption === \"Mandatory\" &&\r\n !sessionStorage.verificationMethod &&\r\n (!sessionStorage.validMfa || config.decryptKey(sessionStorage.validMfa) == false)) {\r\n if (!sessionStorage.RPXLogin || sessionStorage.RPXLogin == false || sessionStorage.RPXLogin == \"false\") {\r\n return \r\n }\r\n }\r\n if (sessionStorage.enableMFA == \"true\" && sessionStorage.verificationMethod && (!sessionStorage.validMfa || config.decryptKey(sessionStorage.validMfa) == false)) {\r\n // disable for users emulating from RPX\r\n if (!sessionStorage.RPXLogin || sessionStorage.RPXLogin == false || sessionStorage.RPXLogin == \"false\") {\r\n return \r\n }\r\n }\r\n\r\n // ** End MFA code\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n {((helper.shouldApplyCustomizations() && this.sideBarLogo) || !helper.shouldApplyCustomizations())\r\n && \r\n }\r\n
    \r\n
    \r\n
    \r\n {tokenUpdater(this.props.requestToken)}\r\n
    \r\n );\r\n } else {\r\n const loadingLogo = session.customLogoLarge() || momentumLogoWhite;\r\n return (\r\n
    \r\n {/* {this.loadingAltText} */}\r\n {/* */}\r\n \r\n
    \r\n );\r\n }\r\n } else if (helper.atSupportLinksPath() && !helper.isRetailDomain(domain)) {\r\n if (\r\n (this.state.customTheme && this.state.customThemeLoaded) ||\r\n !this.state.customTheme\r\n ) {\r\n return (\r\n
    \r\n \r\n
    \r\n {/* {((helper.shouldApplyCustomizations() && this.sideBarLogo) || !helper.shouldApplyCustomizations())\r\n && \r\n } */}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n } else {\r\n const loadingLogo = session.customLogoLarge() || momentumLogoWhite;\r\n return (\r\n
    \r\n {/* {this.loadingAltText} */}\r\n {/* */}\r\n \r\n
    \r\n );\r\n }\r\n }\r\n else if (!this.state.loadingAccessToken && !tokenIsValid) {\r\n if (window.location.pathname == '/forgotpassword') {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n else if (window.location.pathname == '/resetpassword') {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n else if (window.location.pathname == '/ValidateTwoStepEmail') {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n else {\r\n // session.logout()\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n }\r\n else {\r\n const loadingLogo = session.customLogoLarge() || momentumLogoWhite;\r\n return (\r\n
    \r\n {/* */}\r\n {this.loadingAltText}\r\n \r\n
    \r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n loadingAccessToken: state.reducer.loadingAccessToken,\r\n loggedIn: state.reducer.loggedIn,\r\n requestToken: state.reducer.requestToken,\r\n beta_access_denied: helper.toBoolean(state.reducer.beta_access_denied),\r\n rpxLogin: state.reducer.rpxLogin,\r\n isMspLogin: state.reducer.isMspLogin,\r\n redirecting: helper.toBoolean(state.reducer.redirecting),\r\n validMfa: state.reducer.validMfa,\r\n };\r\n};\r\nconst mapDispatchToProps = { tokenRepo };\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(App);","// In production, we register a service worker to serve assets from local cache.\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 the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\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 default function register() {\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);\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/facebookincubator/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. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\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) {\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 if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').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);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\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","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { Provider } from \"react-redux\";\r\nimport { store } from \"./store/store\";\r\nimport \"./index.css\";\r\nimport App from \"./App\";\r\nimport { unregister } from \"./registerServiceWorker\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\nunregister();\r\n","import * as config from \"./config\";\r\nimport * as settings from \"./../scripts/settings\";\r\nimport * as actions from \"./../store/actions\";\r\nimport { store } from '../store/store';\r\nimport * as session from '../scripts/session';\r\n\r\nexport const customFetch = async (apiPath, customHeaders, isJson = false ) => \r\n{\r\n \r\n return await fetch(apiPath, {method: \"GET\", headers: customHeaders})\r\n .then(response => {\r\n if (response.ok) {\r\n return isJson ? response.json() : response.text();\r\n } else {\r\n logResponseToConsole(response, apiPath);\r\n return null;\r\n }\r\n })\r\n .catch(error => {\r\n console.log(\"error: \" + error);\r\n return Promise.reject(error);\r\n });\r\n}\r\n\r\nexport const putDataWithCustomHeader = async (apiPath,body, customHeaders, isJson = false ) => \r\n{\r\n return await fetch(apiPath, {method: \"PUT\",body: body, headers: customHeaders})\r\n .then(response => {\r\n if (response.ok) {\r\n return isJson ? response.json() : response.text();\r\n } else {\r\n logResponseToConsole(response, apiPath);\r\n return response.status;\r\n }\r\n })\r\n .catch(error => {\r\n console.log(\"error: \" + error);\r\n return Promise.reject(error);\r\n });\r\n}\r\n\r\nexport const fetchData = async (apiPath, useHeaderWithTokenPolicy = false, autoRetry = true) => {\r\n \r\n \r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n if (useHeaderWithTokenPolicy) {\r\n \r\n const response = await checkForToken();\r\n \r\n if (response === \"timeout\") {\r\n return null;\r\n }\r\n }\r\n\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n headers: useHeaderWithTokenPolicy\r\n ? headersWithTokenAndPolicy()\r\n : config.headers()\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n return response.json();\r\n } else if (response.status === settings.unauthorized) {\r\n return autoRetry ? \r\n refreshTokenAndRetry(apiPath) :\r\n null;\r\n } else {\r\n logResponseToConsole(response, apiPath);\r\n return null;\r\n }\r\n })\r\n .catch(error => {\r\n console.log(\"error: \" + error);\r\n return Promise.reject(error);\r\n });\r\n};\r\n\r\nconst logResponseToConsole = (response, apiPath) => {\r\n if (response.status !== 404) {\r\n console.log(\"response: \" + response.status);\r\n console.log(\"API path: \" + apiPath);\r\n console.log(response);\r\n }\r\n};\r\n\r\nconst headersWithTokenAndPolicy = () => {\r\n return {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n};\r\n\r\nexport const postData = async (apiPath, body, headers = {\r\n 'Content-Type': 'application/x-www-form-urlencoded', \r\n 'Accept': 'application/json'\r\n } ) => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: \"POST\",\r\n body: JSONToFormUrlEndcodedString(body),\r\n headers: headersWithTokenAndPolicy()\r\n })\r\n .then(response => {\r\n return response.text().then(e => {\r\n return Promise.resolve({ ok: response.ok, message: e });\r\n });\r\n })\r\n .catch(error => {\r\n return Promise.reject(error);\r\n });\r\n};\r\n\r\nexport const postDataWithCustomHeader = async (apiPath, body, headers = null ) => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: \"POST\",\r\n body: JSONToFormUrlEndcodedString(body),\r\n headers: headers ? headers : headersWithTokenAndPolicy()\r\n }).then( response => {\r\n return response.text().then(e=>{\r\n return Promise.resolve({ok: response.ok, message: e});\r\n });\r\n }).catch(error => {\r\n return Promise.reject(error);\r\n });\r\n}\r\n\r\nexport const post = async (apiPath, method, data) => {\r\n //return await fetch(\"https://localhost:44330/api/\" + apiPath, {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: method,\r\n body: data,\r\n headers: headersWithTokenAndPolicy()\r\n }).then( response => {\r\n return response.text().then(e=>{\r\n return Promise.resolve({ok: response.ok, message: e});\r\n });\r\n }).catch(error => {\r\n return Promise.reject(error);\r\n });\r\n}\r\n\r\nexport const postSubmit = async (apiPath, body, includeToken = true, headers = null ) => {\r\n let defaultSubmitHeader = {\r\n 'Content-Type': 'application/x-www-form-urlencoded', \r\n 'Accept': 'text/html'\r\n };\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n let postHeader = {}; \r\n let formHeader = headers ? headers : defaultSubmitHeader;\r\n if (includeToken)\r\n postHeader = {\r\n \"Accept\": formHeader.Accept,\r\n \"Content-Type\": formHeader[\"Content-Type\"],\r\n Authorization: \"Bearer \" + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n else\r\n postHeader = {\r\n Accept: formHeader.Accept,\r\n \"Content-Type\": formHeader[\"Content-Type\"]\r\n };\r\n\r\n //postHeader = JSON.stringify(postHeader);\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: \"POST\",\r\n body: JSONToFormUrlEndcodedString(body),\r\n headers: postHeader\r\n })\r\n .then(response => {\r\n return response.text().then(e => {\r\n return Promise.resolve({ ok: response.ok, message: e });\r\n });\r\n })\r\n .catch(error => {\r\n return Promise.reject(error);\r\n });\r\n};\r\n\r\nexport const send = async (apiPath, method, data) => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: method,\r\n body: data,\r\n headers: headersWithTokenAndPolicy()\r\n })\r\n .then(response => {\r\n return response.text().then(e => {\r\n return Promise.resolve({ ok: response.ok, message: e });\r\n });\r\n })\r\n .catch(error => {\r\n return Promise.reject(error);\r\n });\r\n};\r\n\r\nexport const JSONToFormUrlEndcodedString = obj => {\r\n let formBody = [];\r\n for (let property in obj) {\r\n let encodedKey = encodeURIComponent(property);\r\n let encodedValue = encodeURIComponent(obj[property]);\r\n formBody.push(encodedKey + \"=\" + encodedValue);\r\n }\r\n return formBody.join(\"&\");\r\n};\r\n\r\nexport const saveFavoriteService = async item => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n let favService = JSON.stringify({ ServiceId: item.ServiceId });\r\n return await fetch(config.baseApiUrl + \"admin/FavoriteServices\", {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy(),\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\"\r\n },\r\n body: favService\r\n }).then(response => {\r\n if (response.ok) {\r\n return response.json();\r\n } else {\r\n console.log(\"statusText\", response.statusText);\r\n }\r\n });\r\n};\r\n\r\nexport const unfavoriteService = async item => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n let params = \"?id=\" + item.FavoriteServiceId;\r\n return await fetch(config.baseApiUrl + \"admin/FavoriteServices\" + params, {\r\n method: \"DELETE\",\r\n headers: config.headers()\r\n }).then(response => {\r\n if (response.ok) {\r\n return response.json();\r\n } else {\r\n console.log(\"statusText\", response.statusText);\r\n }\r\n });\r\n};\r\n\r\nexport const refreshRCListForMACDConfig = async (gridItem, selectedState) => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(\r\n config.baseApiUrl + \"admin/macd/GetRCListByState?RCState=\" + selectedState,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy(),\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\"\r\n }\r\n }\r\n ).then(response => {\r\n if (response.ok) {\r\n return response.json();\r\n } else {\r\n console.log(\"statusText\", response.statusText);\r\n }\r\n });\r\n};\r\n\r\nconst refreshTokenAndRetry = async apiPath => {\r\n requestNewToken();\r\n return checkForNewToken()\r\n .then(response => {})\r\n .then(data => {\r\n return fetchData(apiPath);\r\n });\r\n};\r\n\r\nconst requestNewToken = () => {\r\n // update redux store to show a token request is pending\r\n let action = { type: actions.REFRESH_TOKEN };\r\n store.dispatch(action);\r\n};\r\n\r\nconst checkForNewToken = apiPath => {\r\n return new Promise(resolve => tokenCheckInterval(resolve));\r\n};\r\n\r\nconst tokenCheckInterval = resolve => {\r\n let i = 0;\r\n let expiredToken = sessionStorage.accessToken;\r\n let interval = setInterval(() => {\r\n i++;\r\n if (expiredToken !== sessionStorage.accessToken) {\r\n console.log(\"token updated\");\r\n clearInterval(interval);\r\n resolve(\"ok\");\r\n } else if (i > 60) {\r\n // timeout after 1 minute\r\n // console.log('token request timed out');\r\n clearInterval(interval);\r\n resolve(\"abort\");\r\n }\r\n }, 1000);\r\n};\r\n\r\nexport const checkForToken = (token = 'accessToken') => {\r\n const accessTokenPromise = new Promise(async resolve => {\r\n // await sessionStorage.accessToken;\r\n await sessionStorage[token];\r\n resolve(\"ok\");\r\n });\r\n const timeout = new Promise((resolve, reject) => {\r\n setTimeout(() => {\r\n resolve(\"timeout\");\r\n }, 1000 * 60);\r\n });\r\n\r\n return Promise.race([accessTokenPromise, timeout]);\r\n};\r\n","import React, { Component } from 'react';\r\nimport './../css/spinner.css';\r\n\r\nexport class DataLoadingSpinner extends Component {\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}","import moment from \"moment\";\r\nimport * as session from \"../scripts/session\";\r\nimport * as apiCalls from '../requests/api_calls';\r\nimport * as config from '../requests/config';\r\nimport cssVars from \"css-vars-ponyfill\";\r\n\r\nexport const inProduction = () => process.env.NODE_ENV === \"production\";\r\n\r\nexport const atRootPath = () => window.location.pathname === \"/\";\r\n\r\nexport const atLoginPath = () => window.location.pathname === \"/session\";\r\n\r\nexport const atSupportLinksPath = () => window.location.pathname === \"/supportLinks\";\r\n\r\nexport const atDevicesPath = () => window.location.pathname === \"/devices\";\r\n\r\nexport const redirectHome = () => window.location.replace(\"/\");\r\n\r\nexport const redirectToLanding = () => window.location.replace(homePageUrl());\r\n\r\nexport const redirectToLogin = () => window.location.replace(\"/session\");\r\n\r\nexport const storedUserRole = () => sessionStorage.userRole;\r\n\r\nexport const urlIncludes = string => {\r\n return window.location.href.toLowerCase().indexOf(string) > -1;\r\n};\r\n\r\nexport const getDomain = () => {\r\n return window.location.hostname.match(/localhost/)\r\n ? process.env.REACT_APP_TEST_DOMAIN\r\n : window.location.hostname;\r\n};\r\n\r\nexport const isRetailDomain = domain => {\r\n return domain && domain.match(/momentumtelecom\\.com/i);\r\n};\r\n\r\nexport const isDigitalServicesDomain = domain => {\r\n return domain && domain.match(/mydigitalservices\\.com/i);\r\n};\r\n\r\nexport const IsWholesaleDomain = (domain = null) => {\r\n if (domain) {\r\n return !domain.match(/momentumtelecom\\.com/);\r\n }\r\n return !urlIncludes(\"momentumtelecom.com\");\r\n};\r\n\r\nexport const shouldApplyCustomizations = () => {\r\n const isWholesaleDomain = IsWholesaleDomain(getDomain());\r\n const isWholesaleUser = session.IsWholesale();\r\n\r\n return isWholesaleDomain && isWholesaleUser;\r\n};\r\n\r\nexport const getJSONFilePrefix = () => {\r\n const domain = getDomain();\r\n if (!domain) {\r\n return null;\r\n }\r\n\r\n if (domain.match(/mydigitalservices.com/i)) {\r\n return 'MyDigitalServices';\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport const getProductionUrl = () => {\r\n if (urlIncludes(\"momentumtelecom\"))\r\n return \"https://portal.momentumtelecom.com\";\r\n else return \"https://portal.mydigitalservices.com\";\r\n};\r\n\r\nexport const toBoolean = string => {\r\n if (string) {\r\n return string.toString() === true.toString();\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport const userHasNoServices = (service) => {\r\n return service.UserId > 0 && (service.ServiceId === 0 || service.ServiceId === null);\r\n}\r\n\r\nexport const numberWithDelimiter = (number) => {\r\n return number.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n};\r\n\r\nexport const userIsAdmin = () => {\r\n let role = storedUserRole();\r\n if (role === 'SUPER_ADMIN' || role === 'ALLGROUP_ADMIN' || role === 'GROUP_ADMIN')\r\n return true;\r\n else\r\n return false\r\n}\r\n\r\nexport const userIsSuperAdmin = () => {\r\n return storedUserRole() === 'SUPER_ADMIN'\r\n}\r\n\r\nexport const selectedUserIsAdmin = (role) => {\r\n if (role === 'SUPER_ADMIN' || role === 'ALLGROUP_ADMIN' || role === 'GROUP_ADMIN')\r\n return true;\r\n else\r\n return false\r\n}\r\n\r\nexport const userIsContactManager = () => {\r\n let role = storedUserRole();\r\n if (role === 'CC_ADMIN')\r\n return true;\r\n else\r\n return false;\r\n}\r\n\r\nexport const homePageUrl = () => {\r\n if (userIsAdmin()) {\r\n return '/admin'\r\n } else {\r\n return '/'\r\n }\r\n};\r\n\r\nexport const titleCasePhrase = (string) => {\r\n return string.split('_').map(word => titleCaseWord(word)).join(' ');\r\n}\r\n\r\nexport const titleCaseWord = (string) => {\r\n return string.charAt(0).toUpperCase() + string.substr(1).toLowerCase();\r\n}\r\n\r\nexport const isBlank = (service, sortField) => {\r\n let value = service[sortField] ? service[sortField].toString().trim() : null;\r\n return Boolean(value) == false;\r\n}\r\n\r\nexport const registrationLastUpdated = () => {\r\n // sends current time as time of last update\r\n return 'Registration status updated: ' + moment().format('M-DD-YYYY hh:mm:ss A');\r\n}\r\n\r\nexport const blanksAfterZ = (sortedSet, sort) => {\r\n let sortField = sort[0].field;\r\n let dir = sort[0].dir;\r\n let fieldBlanks = sortedSet.filter(service => isBlank(service, sortField));\r\n let fieldNonBlanks = sortedSet.filter(service => isBlank(service, sortField) == false);\r\n if (dir == 'asc') {\r\n return fieldNonBlanks.concat(fieldBlanks);\r\n } else {\r\n return fieldBlanks.concat(fieldNonBlanks);\r\n }\r\n}\r\n\r\nexport const StripHtml = (msg) => {\r\n if (msg == null || msg == undefined || msg === '') {\r\n return msg;\r\n } else {\r\n var doc = new DOMParser().parseFromString(msg, 'text/html');\r\n return doc.body.textContent;\r\n }\r\n}\r\n\r\nexport const filterNestedObject = (key, param, data) => {\r\n let filters = {};\r\n filters[key] = [param];\r\n let filteredData = data.filter(a => Object.keys(filters).every(b => filters[b].some(c => c == a[b])));\r\n if (filteredData && filteredData.length > 0) return filteredData;\r\n};\r\n\r\nexport const onlyUnique = (val, index, self) => {\r\n return self.indexOf(val) === index;\r\n};\r\nexport const devicePerms = () => {\r\n return sessionStorage.DevicePerms ? JSON.parse(sessionStorage.DevicePerms) : {};\r\n};\r\n\r\nexport const showEditGroupFqdnBtn = () =>\r\n devicePerms().Setup_GroupLevelFQDN === 1;\r\n\r\nexport const showEditGroupVlanBtn = () =>\r\n devicePerms().Set_GroupVLANID === 1;\r\n\r\nexport const convertToLocalTime = dateVal => {\r\n let offset = -5;\r\n if (isDST(dateVal))\r\n //if daylight savings time add an hour. database is eastern time\r\n offset += 1;\r\n offset *= -60;\r\n let offsetDiffMin = parseInt(offset - new Date().getTimezoneOffset());\r\n let convertedVal = new Date(dateVal);\r\n //return moment(convertedVal).add(offsetDiffMin, 'm');\r\n let test = convertedVal.setMinutes(convertedVal.getMinutes() + offsetDiffMin);\r\n return new Date(test);\r\n};\r\n\r\nDate.prototype.stdTimezoneOffset = dateVal => {\r\n var fy = dateVal.getFullYear();\r\n if (!Date.prototype.stdTimezoneOffset.cache.hasOwnProperty(fy)) {\r\n var maxOffset = new Date(fy, 0, 1).getTimezoneOffset();\r\n var monthsTestOrder = [6, 7, 5, 8, 4, 9, 3, 10, 2, 11, 1];\r\n\r\n for (var mi = 0; mi < 12; mi++) {\r\n var offset = new Date(fy, monthsTestOrder[mi], 1).getTimezoneOffset();\r\n if (offset !== maxOffset) {\r\n maxOffset = Math.max(maxOffset, offset);\r\n break;\r\n }\r\n }\r\n Date.prototype.stdTimezoneOffset.cache[fy] = maxOffset;\r\n }\r\n return Date.prototype.stdTimezoneOffset.cache[fy];\r\n};\r\n\r\nDate.prototype.stdTimezoneOffset.cache = {};\r\n\r\nexport const isDST = dateVal => {\r\n var dt = new Date(dateVal);\r\n return dt.getTimezoneOffset() < dt.stdTimezoneOffset(dt);\r\n};\r\n\r\nexport const StringReplaceAll = (stringValue, str1, str2, ignore) => {\r\n let test = stringValue.replace(new RegExp(str1.replace(/([\\/\\,\\!\\\\\\^\\$\\{\\}\\[\\]\\(\\)\\.\\*\\+\\?\\|\\<\\>\\-\\&])/g, \"\\\\$&\"), (ignore ? \"gi\" : \"g\")), (typeof (str2) == \"string\") ? str2.replace(/\\$/g, \"$$$$\") : str2);\r\n return test;\r\n};\r\n\r\nexport const ValidateIPaddress = (ipaddress) => {\r\n let regExp = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\r\n if (regExp.test(ipaddress)) {\r\n //console.log('valid');\r\n return true;\r\n } else {\r\n //console.log(\"You have entered an invalid IP address!\");\r\n return false;\r\n }\r\n}\r\n\r\nexport const processWholesaleCustomizations = async (customizations, LogoSmall, LogoLarge) => {\r\n\r\n const { BrowserIcon, VendorId, CSS } = customizations;\r\n const storeCustomImageResult = await storeCustomImages(LogoSmall, LogoLarge);\r\n\r\n if (!(VendorId === -1 && sessionStorage.getItem('vendorId') !== -1))\r\n storeVendorId(VendorId);\r\n\r\n updateSiteTheme(CSS);\r\n updateFavicon(BrowserIcon);\r\n return storeCustomImageResult;\r\n};\r\n\r\nconst updateSiteTheme = CSS => {\r\n if (!CSS || typeof CSS !== \"string\") {\r\n return false;\r\n }\r\n\r\n try {\r\n const tempReplacementStr = CSS.replace(\r\n /\\\"Arial Narrow Bold\\\"/,\r\n \"Arial Narrow Bold\"\r\n );\r\n const styles = JSON.parse(tempReplacementStr);\r\n let variables = {};\r\n\r\n Object.keys(styles).forEach(style => {\r\n let val = styles[style];\r\n variables[`--theme-${style}`] = val;\r\n });\r\n\r\n //added after implementation need to do lookup and set to 'previous' values\r\n if (!variables[\"--theme-profile_text\"] || variables[\"--theme-profile_text\"] === undefined)\r\n variables['--theme-profile_text'] = variables['--theme-nav_text'];\r\n if (!variables[\"--theme-nav_header_text\"] || variables[\"--theme-nav_header_text\"] === undefined)\r\n variables['--theme-nav_header_text'] = variables['--theme-nav_text'];\r\n if (!variables[\"--theme-primary_button_text\"] || variables[\"--theme-primary_button_text\"] === undefined)\r\n variables['--theme-primary_button_text'] = variables['--theme-linktext'];\r\n\r\n cssVars({ variables });\r\n } catch (e) {\r\n console.log(\"Error processing custom styles\");\r\n return false;\r\n }\r\n};\r\n\r\nexport const storeCustomImages = async (\r\n customSmallLogo = null,\r\n customLargeLogo = null\r\n) => {\r\n if (customSmallLogo || customLargeLogo) {\r\n const existingCustomSmallLogo = await session.customLogoSmall();\r\n const existingCustomLargeLogo = await session.customLogoLarge();\r\n\r\n if (!existingCustomSmallLogo && customSmallLogo) {\r\n sessionStorage.setItem(\"customLogoSmall\", customSmallLogo);\r\n }\r\n\r\n if (!existingCustomLargeLogo && customLargeLogo) {\r\n sessionStorage.setItem(\"customLogoLarge\", customLargeLogo);\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nexport const storeVendorId = vendorId => {\r\n sessionStorage.setItem(\"vendorId\", vendorId);\r\n return true;\r\n};\r\n\r\nexport const updateFavicon = logo => {\r\n if (logo) {\r\n const favicon = document.querySelector('link[rel=\"shortcut icon\"]');\r\n if (favicon) {\r\n favicon.setAttribute(\"type\", \"image/png\");\r\n favicon.setAttribute(\"href\", logo);\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nexport const setSiteTitleFromDomain = () => {\r\n const domain = getDomain();\r\n let titleBarText = \"\";\r\n if (!domain) {\r\n return;\r\n }\r\n\r\n if (isRetailDomain(domain)) {\r\n titleBarText = \"Momentum Telecom\";\r\n } else if (isDigitalServicesDomain(domain)) {\r\n titleBarText = \"My Digital Services\";\r\n }\r\n\r\n setTitle(titleBarText);\r\n};\r\n\r\nexport const checkPageTitle = () => {\r\n const currentTitle = document.querySelector('title');\r\n\r\n if (!currentTitle || currentTitle === '') {\r\n setSiteTitleFromDomain();\r\n }\r\n};\r\n\r\nexport const setTitle = title => {\r\n const titleEl = document.querySelector(\"title\");\r\n\r\n if (titleEl) {\r\n titleEl.text = title || '';\r\n }\r\n};\r\n\r\nexport const getB2CConfigResults = async currentUrl => {\r\n const staticJSONPrefix = getJSONFilePrefix();\r\n let b2cResults;\r\n if (staticJSONPrefix) {\r\n const filename = `${staticJSONPrefix}-UI-${process.env.REACT_APP_ENVIRONMENT}`;\r\n try {\r\n b2cResults = await import(`../../public/data/UISettings/${filename}`);\r\n } catch (e) {\r\n console.log('Error parsing JSON file');\r\n }\r\n } else {\r\n const apiPath = config.baseApiUrl + \"usr/WLGetB2CConfig?HostName=\" + encodeURI(currentUrl);\r\n const auth = \"Basic \" + btoa(\"msp\" + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n const apiHeaders = { \"Content-Type\": \"application/json\", Accept: \"application/json\", Authorization: auth };\r\n try {\r\n b2cResults = await apiCalls.customFetch(apiPath, apiHeaders);\r\n b2cResults = JSON.parse(b2cResults);\r\n } catch (e) {\r\n console.log('Pre login customization call failed');\r\n }\r\n }\r\n return b2cResults;\r\n}\r\n\r\n\r\n// SB 7/22/2021: remove, not used\r\n// export const OKTAConfig = async Username => {\r\n// let OKTAConfigResults;\r\n//\r\n// const apiPath = config.baseApiUrl + \"usr/OKTAConfig?Username=\" + encodeURI(Username);\r\n// const auth = \"Basic \" + btoa(Username + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n//\r\n// const apiHeaders = {\r\n// \"Accept\": \"application/json\",\r\n// \"Content-Type\": \"application/json;charset=UTF-8\",\r\n// Authorization: auth };\r\n// try {\r\n// OKTAConfigResults = await apiCalls.customFetch(apiPath, apiHeaders);\r\n// } catch (e) {\r\n// console.log('Pre login customization call failed');\r\n// }\r\n//\r\n// return OKTAConfigResults;\r\n// }\r\n\r\nexport const ValueOfBuildingTag = \"BLDG\";\r\nexport const ValueOfFloorTag = \"FLR\";\r\nexport const streetTypes = [\"ACRES\", \"ALY\", \"ANX\", \"ARC\", \"AVE\", \"BAY\", \"BCH\", \"BLF\", \"BLVD\", \"BND\",\r\n \"BR\", \"BRG\", \"BRK\", \"BTM\", \"BYP\", \"BYU\", \"C\", \"CHASE\", \"CIR\", \"CLB\", \"CLF\",\r\n \"CMN\", \"CMNS\", \"COR\", \"CORS\", \"CP\", \"CPE\", \"CRES\", \"CRK\", \"CRSE\", \"CRSG\",\r\n \"CRST\", \"CSWY\", \"CT\", \"CTR\", \"CTS\", \"CURV\", \"CV\", \"CYN\", \"DL\", \"DM\", \"DR\",\r\n \"Dr.\", \"DRS\", \"DV\", \"E\", \"END\", \"EST\", \"ESTS\", \"EXPWY\", \"EXPY\", \"EXT\", \"FLD\",\r\n \"FLDS\", \"FLS\", \"FLTS\", \"FOX\", \"FRG\", \"FRK\", \"FRST\", \"FRY\", \"FWY\", \"GDN\",\r\n \"GDNS\", \"GLN\", \"GRN\", \"GRV\", \"GTWY\", \"HBR\", \"HL\", \"HLS\", \"HOLW\", \"HT\", \"HTS\",\r\n \"HVN\", \"HWY\", \"INLT\", \"IS\", \"ISL\", \"ISLE\", \"JCT\", \"KNL\", \"KNLS\", \"KY\", \"LA\",\r\n \"LAND\", \"LDG\", \"LGT\", \"LK\", \"LKS\", \"LN\", \"LNDG\", \"LOOP\", \"LP\", \"MALL\", \"MDW\",\r\n \"MDWS\", \"MEWS\", \"ML\", \"MNR\", \"MNRS\", \"MT\", \"MTN\", \"NCK\", \"NE\", \"NK\", \"OAKS\",\r\n \"ORCH\", \"OVAL\", \"OVERLOOK\", \"PARK\", \"PASS\", \"PATH\", \"PIKE\", \"PINEY\", \"PK\",\r\n \"PKE\", \"PKWY\", \"PL\", \"PLAZ\", \"PLN\", \"PLZ\", \"PNE\", \"PNES\", \"PR\", \"PRT\", \"PT\",\r\n \"PTS\", \"RADL\", \"RAMP\", \"RD\", \"RD EXT\", \"RDG\", \"RDGS\", \"RDS\", \"RISE\", \"RIV\",\r\n \"RNCH\", \"ROW\", \"RPDS\", \"RST\", \"RTE\", \"RUN\", \"S\", \"SHL\", \"SHLS\", \"SHR\", \"SHRS\",\r\n \"SMT\", \"SPG\", \"SPGS\", \"SPUR\", \"SQ\", \"SQS\", \"ST\", \"ST EXT\", \"ST.\", \"STA\",\r\n \"STEET\", \"STRM\", \"STS\", \"TER\", \"TOP\", \"TPKE\", \"TRAK\", \"TRC\", \"TRCE\", \"TRL\",\r\n \"TURN\", \"TURNKPIKE\", \"UN\", \"UP\", \"VIA\", \"VIS\", \"VL\", \"VLG\", \"VLY\", \"VW\", \"W\",\r\n \"WALK\", \"WALL\", \"WAY\", \"WAYS\", \"WK\", \"WL\", \"WLS\", \"WOODS\", \"WYND\", \"XING\"]\r\n\r\nexport const CreateFullStreet1 = (address) => {\r\n\r\n let Result = \"\";\r\n if (address) {\r\n if (address.StreetNumber && address.StreetNumber.trim() !== '')\r\n Result += \" \" + address.StreetNumber.trim();\r\n // else if (address.HouseNumber && address.HouseNumber.trim() !== '')\r\n // Result += \" \" + address.HouseNumber.trim();\r\n\r\n if (address.StreetPrefix && address.StreetPrefix.trim())\r\n Result += \" \" + address.StreetPrefix.trim();\r\n\r\n if (address.StreetName && address.StreetName.trim())\r\n Result += \" \" + address.StreetName.trim();\r\n\r\n if (address.StreetType && address.StreetType.trim())\r\n Result += \" \" + address.StreetType.trim();\r\n\r\n if (address.StreetSuffix && address.StreetSuffix.trim())\r\n Result += \" \" + address.StreetSuffix.trim();\r\n }\r\n //console.log(\"trim\", Result.trim());\r\n return Result.trim();\r\n}\r\n\r\nexport const CreateFullStreet2 = (address) => {\r\n let Result = \"\";\r\n if (address) {\r\n if (address.UnitValue)\r\n Result = address.Unit.trim() + \" \" + address.UnitValue.trim();\r\n\r\n if (address.FloorValue && address.FloorValue.trim())\r\n Result = ValueOfFloorTag + \" \" + address.FloorValue.trim() + \" \" + Result;\r\n\r\n if (address.StructureNum && address.StructureNum.trim())\r\n Result = ValueOfBuildingTag + \" \" + address.StructureNum.trim() + \" \" + Result;\r\n }\r\n\r\n\r\n return Result;\r\n}\r\n\r\nexport function generateUUID() { // Public Domain/MIT\r\n var d = new Date().getTime();\r\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\r\n d += performance.now(); //use high-precision timer if available\r\n }\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n}\r\n\r\nexport function IsJsonString(str) {\r\n try {\r\n JSON.parse(str);\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\n// SB 08/18/2021: added arg. 'AppName'\r\nexport const checkIsUserValid = (Username, AppName) => {\r\n const apiPath = config.baseApiUrl + \"usr/OKTAConfig?Username=\" + encodeURI(Username) + \"&AppName=\" + encodeURI(AppName);\r\n const auth = \"Basic \" + btoa(Username + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n\r\n return apiCalls.customFetch(apiPath, {\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json;charset=UTF-8\",\r\n Authorization: auth\r\n }, true);\r\n}\r\n\r\nexport const SendResetPasswordLink = (Username) => {\r\n const apiPath = config.baseApiUrl + \"admin/GetPasswordResetLink?AzureUserName=\" + encodeURI(Username);\r\n const auth = \"Basic \" + btoa(Username + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n\r\n return apiCalls.customFetch(apiPath, {\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json;charset=UTF-8\",\r\n Authorization: auth\r\n }, true);\r\n}\r\n\r\nexport const ValidateResetPassword = (Url, password, userName) => {\r\n let resetPasswordDTO = {\r\n resetUrl: Url,\r\n newPassword: password\r\n }\r\n const auth = \"Basic \" + btoa(userName + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n const apiPath = config.baseApiUrl + \"admin/VerifyPasswordResetLink?resetUrl=\" + encodeURI(Url);\r\n return apiCalls.putDataWithCustomHeader(apiPath, JSON.stringify(resetPasswordDTO), {\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json;charset=UTF-8\",\r\n Authorization: auth\r\n }, true);\r\n}\r\n\r\nexport const VerifyTwoStepEmail = (Url, email, userName) => {\r\n let emailDTO = {\r\n resetUrl: Url,\r\n EmailAddress: email\r\n }\r\n const auth = \"Basic \" + btoa(userName + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n const apiPath = config.baseApiUrl + \"admin/VerifyTwoStepEmail?resetUrl=\" + encodeURI(Url);\r\n return apiCalls.putDataWithCustomHeader(apiPath, JSON.stringify(emailDTO), {\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json;charset=UTF-8\",\r\n Authorization: auth\r\n }, true);\r\n}","import * as Msal from \"msal\";\r\nimport * as session from \"./../scripts/session\";\r\nimport * as settings from \"./../scripts/settings\";\r\nimport * as actions from \"./../store/actions\";\r\nimport { store } from \"../store/store\";\r\nimport { fetchData, customFetch } from \"./../requests/api_calls\";\r\nimport * as moment from \"moment\";\r\nimport * as helper from '../scripts/helper';\r\nimport jwtDecode from \"jwt-decode\";\r\n\r\nconst currentTime = new Date().getTime();\r\n\r\nexport const IMAGE_URL_PREFIX = 'data:image/png;base64,';\r\n\r\nexport const baseUrl = process.env.REACT_APP_MSA_URL;\r\n\r\nexport const baseApiUrl = process.env.REACT_APP_MSA_API_URL;\r\n\r\nexport const baseMSPUrl = process.env.REACT_APP_MSP_URL;\r\n\r\nexport const defaultXpolicy = process.env.REACT_APP_MSA_XPOLICY;\r\n\r\nexport const defaultXPolicyConfig = process.env.REACT_APP_MSA_XPOLICY_CONFIG;\r\n\r\nexport const clientId = process.env.REACT_APP_MSA_CLIENT_ID;\r\n\r\nexport const authorityUrl = process.env.REACT_APP_MSA_AUTHORITY_URL;\r\n\r\nexport const authority = authorityUrl + defaultXpolicy;\r\n\r\nexport const version = process.env.REACT_APP_VERSION;\r\n\r\nconst b2c_scope_read = process.env.REACT_APP_MSA_B2C_SCOPES_URL + \"read\";\r\nconst b2c_scope_write = process.env.REACT_APP_MSA_B2C_SCOPES_URL + \"write\";\r\nexport const b2cScopes = [b2c_scope_read, b2c_scope_write];\r\n\r\nexport const auth = {\r\n clientId: clientId,\r\n authority: authority,\r\n b2cScopes: b2cScopes\r\n};\r\n\r\nexport const storedAccessToken = () => {\r\n return sessionStorage.accessToken;\r\n};\r\n\r\nexport const storedUserEmail = () => {\r\n return sessionStorage.userEmail;\r\n};\r\n\r\nexport const storedAccountNumber = () => {\r\n return sessionStorage.AccountNumber;\r\n};\r\n\r\nexport const storedXPolicy = () => {\r\n return sessionStorage.xpolicy;\r\n};\r\n\r\nexport const serviceId = () => {\r\n if (sessionStorage.ServiceId) return parseInt(sessionStorage.ServiceId);\r\n return -1;\r\n};\r\n\r\nexport const headers = () => {\r\n return {\r\n Authorization: \"Bearer \" + storedAccessToken(),\r\n 'X-Policy': storedXPolicy()\r\n };\r\n};\r\n\r\nexport const expirationRemainingDelta = () => {\r\n var expiration = moment.unix(sessionStorage.expiration);\r\n let currentMil = moment();\r\n let duration = moment.duration(expiration.diff(currentMil));\r\n let finalDuration = duration.asMilliseconds() - (60 * 1000 * 3);\r\n return finalDuration; //3 minutes before expiration run tokenUpdater\r\n};\r\n\r\nexport const loginRPXUser = async encParam => {\r\n let auth =\r\n \"Basic \" +\r\n btoa(\"Emulated User\" + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n let url = baseApiUrl + \"auth/AzureToken\";\r\n let azureTokenResult = await fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n Authorization: auth\r\n },\r\n body: JSON.stringify(encParam)\r\n });\r\n if (!azureTokenResult.ok) return Promise.reject(\"token not valid\");\r\n\r\n let rpxData = await azureTokenResult.json();\r\n return storeRPXToken(rpxData);\r\n};\r\n\r\nexport const storeRPXToken = async rpxData => {\r\n //sessionStorage.clear();\r\n //don't wanna clear all sessionStorage just everything not sending to FS\r\n sessionStorage.removeItem('accessToken');\r\n sessionStorage.removeItem('refreshToken');\r\n sessionStorage.removeItem('xpolicy');\r\n sessionStorage.removeItem('userGivenName');\r\n sessionStorage.removeItem('redirecting');\r\n sessionStorage.removeItem('tokenIsValid');\r\n sessionStorage.removeItem('expiration');\r\n sessionStorage.removeItem(\"userFullName\");\r\n sessionStorage.removeItem(\"username\");\r\n sessionStorage.removeItem(\"userEnterpriseNumber\");\r\n sessionStorage.removeItem(\"userRole\");\r\n sessionStorage.removeItem(\"userType\");\r\n sessionStorage.removeItem(\"userTypeId\");\r\n sessionStorage.removeItem(\"IsWholesale\");\r\n sessionStorage.removeItem(\"userHasServices\");\r\n sessionStorage.removeItem(\"userReadPermission\");\r\n sessionStorage.removeItem(\"userWritePermission\");\r\n sessionStorage.removeItem(\"userTimeZone\");\r\n sessionStorage.removeItem(\"beta_access_denied\");\r\n\r\n let accessToken = rpxData.access_token;\r\n let refreshToken = rpxData.refresh_token;\r\n\r\n let decodedToken = jwtDecode(accessToken);\r\n sessionStorage.setItem(\"accessToken\", accessToken);\r\n sessionStorage.setItem(\"refreshToken\", refreshToken);\r\n sessionStorage.setItem(\"xpolicy\", decodedToken.tfp);\r\n sessionStorage.setItem(\"userGivenName\", decodedToken.given_name);\r\n sessionStorage.setItem(\"redirecting\", false);\r\n sessionStorage.setItem(\"tokenIsValid\", true);\r\n sessionStorage.setItem(\"expiration\", decodedToken.exp);\r\n\r\n await refreshTokenIfExpired(decodedToken.exp);\r\n\r\n let data = await fetchData(\"usr/PrincipalUser\");\r\n if (data === null) return Promise.reject(\"principal user not found\");\r\n\r\n helper.storeVendorId(data.Reseller.CompanyInfo.SalesGroupId)\r\n setUserPropsToSessionStorage(data);\r\n sessionStorage.setItem(\"loggedIn\", true);\r\n\r\n if (rpxData.page === \"MSP_GROUP\") {\r\n if (sessionStorage.IPTrunkEmulation) {\r\n //Go to IP Trunking Page\r\n sessionStorage.setItem('hasIpTrunk', true);\r\n window.location.replace('/ip_trunking');\r\n } else {\r\n window.location.replace(\"/iframe_page/MSP_GROUP/\" + rpxData.LocationID);\r\n }\r\n }\r\n else if (rpxData.page === \"MSP_SUBSCRIBER\") {\r\n let service = await fetchData(\r\n \"usr/MyServices?DirectoryNumber=\" + rpxData.tn\r\n );\r\n if (service) {\r\n settings.setService(service[0]);\r\n }\r\n if (sessionStorage.IPTrunkEmulation) {\r\n //Go to User Dashboard\r\n sessionStorage.setItem('hasIpTrunk', true);\r\n window.location.replace('/dashboard');\r\n } else {\r\n window.location.replace(\r\n \"/iframe_page/MSP_SUBSCRIBER/\" + rpxData.LocationID + \"/\" + rpxData.tn\r\n );\r\n }\r\n sessionStorage.removeItem('IPTrunkEmulation');\r\n }\r\n return Promise.resolve(\"\");\r\n};\r\n\r\nexport const loginUser = (data = {}, customPolicy = null) => {\r\n sessionStorage.setItem(\"redirecting\", true);\r\n try {\r\n if (customPolicy) {\r\n clientApp.authority = customPolicy.authority;\r\n clientApp.clientId = customPolicy.clientId;\r\n }\r\n\r\n // SB: 7/25/2021: added IdPAppClientId\r\n let DomainHint = '';\r\n if (data.IsExternalUser === true) {\r\n DomainHint = data.EnterpriseId + '-' + data.IdPApp.IdPAppClientId;\r\n }\r\n\r\n const queryString = {\r\n // SB: set domain_hint only for ext. users\r\n // SB: 7/22/2021 - domain_hint is now in format EnterpriseId-IdPAppClientId\r\n domain_hint: DomainHint,\r\n ProviderId: data.ProviderId,\r\n EnterpriseId: data.EnterpriseId\r\n };\r\n\r\n clientApp.loginRedirect({\r\n scopes: b2cScopes,\r\n loginHint: data.LoginName,\r\n extraQueryParameters: queryString,\r\n });\r\n }\r\n catch (error) {\r\n console.log('loginUser Error: ' + error);\r\n settings.saveLoginError(error);\r\n }\r\n};\r\n\r\n// (1) Create MSAL Instance\r\n// const msalConfig = {\r\n// auth: {\r\n// clientId: clientId,\r\n// authority: authority,\r\n// validateAuthority: false,\r\n// }\r\n// }\r\nconst msalConfig = {\r\n auth: {\r\n clientId: clientId, // This is the ONLY mandatory field that you need to supply.\r\n authority: authority, // Use a sign-up/sign-in user-flow as a default authority\r\n validateAuthority: false,\r\n redirectUri: window.location.origin, // Points to window.location.origin. You must register this URI on Azure Portal/App Registration.\r\n // postLogoutRedirectUri: window.location.origin, // Indicates the page to navigate after logout.\r\n // navigateToLoginRequestUrl: false, // If \"true\", will navigate back to the original request location before processing the auth code response.\r\n },\r\n cache: {\r\n cacheLocation: \"sessionStorage\", // Configures cache location. \"sessionStorage\" is more secure, but \"localStorage\" gives you SSO between tabs.\r\n storeAuthStateInCookie: true, // Set this to \"true\" if you are having issues on IE11 or Edge\r\n }\r\n};\r\nexport const clientApp = new Msal.UserAgentApplication(msalConfig, { loadFrameTimeout: 30000 });\r\n// (2) Acquire Access Token using Login Redirect\r\nclientApp.handleRedirectCallback(async () => {\r\n clientApp.authority = sessionStorage.CustomAuthUrl;\r\n clientApp.clientId = sessionStorage.CustomAuthClientId;\r\n clientApp.config.auth.authority = sessionStorage.CustomAuthUrl;\r\n clientApp.config.auth.clientId = sessionStorage.CustomAuthClientId;\r\n // handle redirect response or error\r\n // if the user is already logged in you can acquire a token\r\n if (clientApp.getAccount()) {\r\n await clientApp.acquireTokenSilent({\r\n scopes: b2cScopes,\r\n loginHint: sessionStorage.loggedUser,\r\n }).then(async (response) => {\r\n sessionStorage.setItem(\"tokenResponse\", JSON.stringify(response));\r\n await storeToken(response.accessToken);\r\n await saveUserProperties();\r\n }).catch(acquireTokenError => {\r\n try {\r\n clientApp.acquireTokenRedirect({\r\n scopes: b2cScopes,\r\n loginHint: sessionStorage.loggedUser,\r\n });\r\n } catch (error) {\r\n console.log(`A loging error occurred on the second attempt to acquire token: --> ${error}`);\r\n settings.saveLoginError(acquireTokenError);\r\n }\r\n });\r\n } else {\r\n // user is not logged in, you will need to log them in to acquire a token\r\n console.log(\"USER IS NOT LOGGED IN\");\r\n }\r\n});\r\n\r\n// export const clientApp = new Msal.UserAgentApplication({\r\n// auth: {\r\n// clientId: auth.clientId,\r\n// authority: auth.authority,\r\n// validateAuthority: false,\r\n// }\r\n// });\r\n\r\n// clientApp.handleRedirectCallback(async (error, response) => {\r\n// sessionStorage.setItem('isloadingAccessToken', false);\r\n// if (error) {\r\n// let { errorMessage } = error;\r\n// settings.saveLoginError(errorMessage);\r\n// } else {\r\n// if (clientApp.getAccount()) {\r\n// var tokenRequest = {\r\n// scopes: b2cScopes\r\n// };\r\n// await clientApp.acquireTokenSilent(tokenRequest)\r\n// .then(async response => {\r\n// await storeToken(response.accessToken);\r\n// await saveUserProperties();\r\n// })\r\n// .catch(err => {\r\n// session.logout()\r\n// });\r\n// }\r\n// else {\r\n// // user is not logged in, you will need to log them in to acquire a token\r\n// session.logout()\r\n// }\r\n// }\r\n// });\r\n\r\n//used to retrieve existing session thru async redux\r\nexport const tokenSaveUserProperties = async (accessToken, rpxEmulation = false) => {\r\n try {\r\n //console.log(\"accessToken\", accessToken);\r\n //using a custom fetch call because for whatever reason accessToken refuses to be translated from local to session prior to this call being made\r\n //custom fetch allows me to set a custom set of headers and the custom url\r\n let customHeader = {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + accessToken,\r\n 'X-Policy': storedXPolicy()\r\n };\r\n let apiPath = baseApiUrl + '/usr/PrincipalUser';\r\n await customFetch(apiPath, customHeader, true).then(data => {\r\n if (data) {\r\n //need to read data to see if current environment is beta & if user is allowed to beta\r\n let env = process.env.REACT_APP_ENVIRONMENT;\r\n if (env === \"staging\" && (!data.BetaAllowed || data.BetaAllowed === false) && (!data.IsWholesSale || data.IsWholeSale === false)) {\r\n sessionStorage.setItem(\"beta_access_denied\", true);\r\n store.dispatch({ type: actions.REDIRECT_BETA_ACCESS });\r\n } else {\r\n // set redux store to loggedIn:true, redirecting:false\r\n storeToken(accessToken, rpxEmulation);\r\n setUserPropsToSessionStorage(data);\r\n store.dispatch({ type: actions.LOGIN_USER });\r\n store.dispatch({ type: actions.RECEIVE_TOKEN, accessToken: accessToken });\r\n }\r\n } else {\r\n session.logout();\r\n //store.dispatch({type: actions.START_LOGIN});\r\n }\r\n }).catch((exc) => {\r\n console.log('error tokenSaveUserProperties: ' + exc);\r\n session.logout();\r\n //store.dispatch({type: actions.START_LOGIN});\r\n });\r\n }\r\n catch (ex) {\r\n console.log('error2 tokenSaveUserProperties: ' + ex);\r\n }\r\n};\r\n\r\nexport const storeToken = async (accessToken, rpxEmulation = false) => {\r\n\r\n let decodedToken = jwtDecode(accessToken);\r\n\r\n store.dispatch({ type: actions.RECEIVE_TOKEN, accessToken: accessToken });\r\n sessionStorage.setItem(\"accessToken\", accessToken);\r\n sessionStorage.setItem(\"refreshToken\", \"\");\r\n sessionStorage.setItem(\"xpolicy\", decodedToken.tfp);\r\n sessionStorage.setItem(\"userGivenName\", decodedToken.given_name);\r\n sessionStorage.setItem(\"expiration\", decodedToken.exp);\r\n sessionStorage.setItem(\"loggedIn\", true);\r\n sessionStorage.setItem(\"RPXLogin\", rpxEmulation);\r\n // if (!rpxEmulation)\r\n // sessionStorage.removeItem('emulatedUser');\r\n\r\n sessionStorage.setItem(\"redirecting\", false);\r\n sessionStorage.setItem(\"tokenIsValid\", true);\r\n sessionStorage.setItem(\"sessionStart\", currentTime);\r\n\r\n};\r\n\r\nconst saveUserProperties = async () => {\r\n try {\r\n fetchData(\"usr/PrincipalUser\").then(data => {\r\n if (data) {\r\n //need to read data to see if current environment is beta & if user is allowed to beta\r\n let env = process.env.REACT_APP_ENVIRONMENT;\r\n if (env === \"staging\" && (!data.BetaAllowed || data.BetaAllowed === false) && (!data.IsWholesSale || data.IsWholeSale === false)) { //&& data.BetaAllowed === false && data.IsWholeSale === false) {\r\n sessionStorage.setItem(\"beta_access_denied\", true);\r\n store.dispatch({ type: actions.REDIRECT_BETA_ACCESS });\r\n } else {\r\n // set redux store to loggedIn:true, redirecting:false\r\n setUserPropsToSessionStorage(data);\r\n store.dispatch({ type: actions.LOGIN_USER });\r\n }\r\n } else {\r\n //error so nothing is returned from PrincipalUser. Need to logout because user experience will be blank\r\n session.logout();\r\n }\r\n }).catch((exc) => {\r\n console.log(exc);\r\n session.logout();\r\n });\r\n } catch (ex) {\r\n session.logout();\r\n }\r\n};\r\n\r\nexport function encryptKey(value) { // encrypting specific user identity property to avoid bypass by manipulating session storage\r\n // Generate a random key\r\n const key = new Uint8Array(16);\r\n window.crypto.getRandomValues(key);\r\n // Encrypt the value using the Substitution Cipher algorithm\r\n let encryptedValue = \"\";\r\n for (let i = 0; i < value.length; i++) {\r\n const charCode = value.charCodeAt(i) ^ key[i % key.length];\r\n encryptedValue += String.fromCharCode(charCode);\r\n }\r\n // Convert the key to a regular array before stringifying\r\n let output = [encryptedValue, Array.from(key)];\r\n return JSON.stringify(output);\r\n}\r\n\r\nexport function decryptKey(arr) {\r\n try {\r\n arr = JSON.parse(arr);\r\n // Convert the key back to a Uint8Array after parsing\r\n let encryptedValue = arr[0];\r\n let key = new Uint8Array(arr[1]);\r\n let decryptedValue = \"\";\r\n for (let i = 0; i < encryptedValue.length; i++) {\r\n const charCode = encryptedValue.charCodeAt(i) ^ key[i % key.length];\r\n decryptedValue += String.fromCharCode(charCode);\r\n }\r\n if (decryptedValue == sessionStorage.userId) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n}\r\n\r\nconst setUserPropsToSessionStorage = data => {\r\n sessionStorage.setItem(\"MSTeamsRoutingType\", data.MSTeamsRoutingType); // (10/127/2022) * added for MS Teams configuration\r\n sessionStorage.setItem(\"VoipSwitch\", data.VoipSwitch);\r\n sessionStorage.setItem(\"userFullName\", data.Name);\r\n sessionStorage.setItem(\"userEmail\", data.Email);\r\n sessionStorage.setItem(\"userId\", data.UserId);\r\n sessionStorage.setItem(\"enterpriseId\", data.EnterpriseId);\r\n sessionStorage.setItem(\"enterpriseType\", data.EnterpriseType); // (9/18/2020) * added for AD Sync User List retrieval\r\n sessionStorage.setItem(\"username\", data.Username);\r\n sessionStorage.setItem(\"userEnterpriseNumber\", data.EnterpriseNumber);\r\n sessionStorage.setItem(\"userRole\", data.Role);\r\n sessionStorage.setItem(\"userType\", data.UserType);\r\n sessionStorage.setItem(\"userTypeId\", data.UserTypeId);\r\n sessionStorage.setItem(\"IsWholesale\", data.IsWholesale);\r\n sessionStorage.setItem(\"userHasServices\", data.HasServices);\r\n sessionStorage.setItem(\"userReadPermission\", data.ReadPermission);\r\n sessionStorage.setItem(\"userWritePermission\", data.WritePermission);\r\n sessionStorage.setItem(\"userTimeZone\", data.TZAbbr);\r\n sessionStorage.setItem(\"beta_access_denied\", false);\r\n sessionStorage.setItem(\"salesGroupId\", data.Reseller.CompanyInfo.SalesGroupId);\r\n sessionStorage.setItem(\"serviceProviderName\", data.Reseller.CompanyInfo.ServiceProviderName);\r\n sessionStorage.setItem(\"enableMFA\", data.EnableMFA);\r\n sessionStorage.setItem(\"verificationMethod\", data.VerificationMethod); // TSV\r\n sessionStorage.setItem(\"MFAOption\", data.MFAOption); // TSV\r\n sessionStorage.setItem(\"IsOktaPushEnabled\", data.IsOktaPushEnabled);\r\n sessionStorage.setItem(\"MfaAllowAuthApp\", data.MfaAllowAuthApp);\r\n sessionStorage.setItem(\"MfaAllowSms\", data.MfaAllowSms);\r\n sessionStorage.setItem(\"AccountNumber\", data.AccountNumber);\r\n};\r\n\r\nconst refreshTokenIfExpired = async expInSecs => {\r\n let currentTime = Date.now();\r\n let expInMillisecs = parseInt(expInSecs) * 1000;\r\n if (expInMillisecs < currentTime) session.rpxTokenUpdater();\r\n};\r\n\r\nexport const retrieveCustomConfigs = async (HostName) => {\r\n return await fetchData(\"usr/WLGetUIConfig?HostName=\" + HostName, true, false);\r\n};","import * as actions from './actions';\r\nimport * as helper from './../scripts/helper';\r\nimport * as config from './../requests/config';\r\nimport * as settings from './../scripts/settings';\r\nconst initialState = () => {\r\n return {\r\n loggedIn: sessionStorage.loggedIn && sessionStorage.loggedIn.toString().toLowerCase() === 'true' ? true : false,\r\n tokenIsValid: sessionStorage.tokenIsValid && sessionStorage.tokenIsValid.toString().toLowerCase() === 'true' ? true : false,\r\n redirecting: sessionStorage.redirecting && sessionStorage.redirecting.toString().toLowerCase() === 'true' ? true : false,\r\n requestToken: false,\r\n serviceLoading: true,\r\n restartSession: sessionStorage.restartSession && sessionStorage.restartSession.toString().toLowerCase() === 'true' ? true : false,\r\n hasDevices: sessionStorage.hasDevices && sessionStorage.hasDevices.toString().toLowerCase() === 'true' ? true : false,\r\n // MJ: Pascal Case used below to align with API payloads\r\n ServiceId: sessionStorage.ServiceId,\r\n ServiceNumber: sessionStorage.ServiceNumber,\r\n UserId: sessionStorage.UserId,\r\n PBXUserID: sessionStorage.PBXUserID,\r\n AccountNumber: sessionStorage.AccountNumber,\r\n DirectoryNumber: sessionStorage.DirectoryNumber,\r\n LocationAccountNumber: sessionStorage.LocationAccountNumber,\r\n LocationAddress: sessionStorage.LocationAddress,\r\n beta_access_denied: sessionStorage.beta_access_denied,\r\n loadingAccessToken: true,\r\n isSelectedServiceIpTrunking: false,\r\n themes_loaded: false,\r\n permissionsRetrieved: false,\r\n isMspLogin: (sessionStorage.isMspLogin && sessionStorage.isMspLogin.toString() === 'true' ? true : false) || false,\r\n mspLoginData: {},\r\n //validMfa: sessionStorage.validMfa && sessionStorage.validMfa.toString().toLowerCase() === 'true' ? true : false,\r\n validMfa: null,\r\n // cl_call_type: action.cl_call_type,\r\n // cl_status_type: action.cl_status_type,\r\n // cl_call_category: action.cl_call_category,\r\n // cl_from_date: action.cl_from_date,\r\n // cl_to_date: action.cl_to_date\r\n }\r\n}\r\n\r\nconst reducer = (state = initialState(), action) => {\r\n // set and use constants in store/actions.js to avoid silently failing typo errors\r\n switch (action.type) {\r\n // set when login button is clicked\r\n case actions.REDIRECTING:\r\n return {\r\n ...state,\r\n redirecting: true,\r\n }\r\n case actions.START_LOGIN:\r\n sessionStorage.setItem('timer', settings.loginTimeout);\r\n return {\r\n ...state,\r\n loggedIn: false,\r\n loadingAccessToken: false,\r\n }\r\n case actions.LOGIN_USER:\r\n // set after authentication has completed to load dashboard\r\n return {\r\n ...state,\r\n loggedIn: true,\r\n tokenIsValid: true,\r\n redirecting: false,\r\n }\r\n case actions.VALIDATE_MFA:\r\n let key = config.encryptKey(sessionStorage.userId);\r\n sessionStorage.setItem('validMfa', key);\r\n return {\r\n ...state,\r\n validMfa: key,\r\n }\r\n case actions.TOKEN_LOADED:\r\n return {\r\n ...state,\r\n loadingAccessToken: false\r\n }\r\n case actions.RECEIVE_TOKEN:\r\n sessionStorage.removeItem('loggingOut');\r\n localStorage.setItem('accessToken', action.accessToken);\r\n return {\r\n ...state,\r\n loadingAccessToken: false\r\n }\r\n case actions.IP_TRUNKING_ONLY_SET:\r\n return {\r\n ...state,\r\n isIpTrunkingOnly: sessionStorage.isIpTrunkingOnly && sessionStorage.isIpTrunkingOnly.toString().toLowerCase() === 'true' ? true : false\r\n }\r\n case actions.PERMISSIONS_UPDATED:\r\n return {\r\n ...state,\r\n hasTrunking: sessionStorage.hasTrunk && sessionStorage.hasTrunk.toString().toLowerCase() === 'true' ? true : false,\r\n hasContactCenter: sessionStorage.hasContactCenter && sessionStorage.hasContactCenter.toString().toLowerCase() === 'true' ? true : false,\r\n hasMacd: sessionStorage.MacdPerms && JSON.stringify(sessionStorage.MacdPerms).indexOf(1) >= 0 ? true : false,\r\n hasDevices: sessionStorage.hasDevices && sessionStorage.hasDevices.toString().toLowerCase() === 'true' ? true : false,\r\n hasIpTrunk: sessionStorage.hasIpTrunk && sessionStorage.hasIpTrunk.toString().toLowerCase() === 'true' ? true : false,\r\n hasTicketing: sessionStorage.hasTicketing,\r\n hasVmUsageReport: sessionStorage.hasVmUsageReport && sessionStorage.hasVmUsageReport.toString().toLowerCase() === 'true' ? true : false,\r\n permissionsRetrieved: true\r\n };\r\n case actions.RESTART_SESSION:\r\n // set after authentication fails and the the retry button is clicked\r\n return {\r\n ...state,\r\n restartSession: true\r\n }\r\n case actions.SAVE_LOGIN_ERROR:\r\n // save error message returned from calling clientApp.loginRedirect()\r\n return {\r\n ...state,\r\n loginError: action.loginError,\r\n loginErrorDescription: action.loginErrorDescription\r\n }\r\n case actions.REFRESH_TOKEN:\r\n // set if API call receivs a 401 (unauthorized) response so token refresh is attempted\r\n return {\r\n ...state,\r\n requestToken: true\r\n }\r\n case actions.UPDATE_TOKEN_STATUS:\r\n return {\r\n ...state,\r\n tokenIsValid: action.tokenIsValid\r\n }\r\n case actions.SET_LOCATION:\r\n // set in devices component in admin dashboard\r\n return {\r\n ...state,\r\n LocationAddress: action.LocationAddress,\r\n LocationAccountNumber: action.LocationAccountNumber\r\n }\r\n case actions.SET_QUICK_VIEW_LOCATION:\r\n // set in devices component in admin dashboard\r\n return {\r\n ...state,\r\n QuickViewLocationAccountNumber: action.QuickViewLocationAccountNumber\r\n }\r\n case actions.SERVICE_SELECTED:\r\n return {\r\n ...state,\r\n serviceLoading: true,\r\n ServiceNumber: action.ServiceNumber,\r\n PBXUserID: action.PBXUserID,\r\n Extension: action.Extension,\r\n SelectedUserId: action.SelectedUserId\r\n }\r\n case actions.SET_SERVICE:\r\n // set in services & users table when a service number is clicked\r\n return {\r\n ...state,\r\n serviceLoading: false,\r\n ServiceId: action.ServiceId,\r\n ServiceNumber: action.ServiceNumber,\r\n PBXUserID: action.PBXUserID,\r\n SelectedUserId: action.SelectedUserId,\r\n AccountNumber: action.AccountNumber,\r\n DirectoryNumber: action.DirectoryNumber,\r\n Extension: action.Extension,\r\n LocationAccountNumber: action.LocationAccountNumber,\r\n isSelectedServiceIpTrunking: action.isSelectedServiceIpTrunking ? action.isSelectedServiceIpTrunking : false\r\n }\r\n case actions.SERVICES_SET:\r\n return {\r\n ...state,\r\n serviceLoading: false\r\n }\r\n case actions.SERVICES_SET:\r\n return {\r\n ...state,\r\n serviceLoading: false\r\n }\r\n case actions.TOGGLE_SIDEBAR:\r\n // set in services & users table when a service number is clicked\r\n return {\r\n ...state,\r\n showSideBar: !state.showSideBar,\r\n }\r\n case actions.REDIRECT_BETA_ACCESS:\r\n return {\r\n ...state,\r\n beta_access_denied: true\r\n }\r\n\r\n case actions.RECEIVE_CUSTOM_IMAGE:\r\n return {\r\n ...state,\r\n customSmallLogo: action.customSmallLogo,\r\n customLargeLogo: action.customLargeLogo,\r\n }\r\n case actions.SET_CALL_LOGS_FILTER:\r\n return {\r\n ...state,\r\n cl_call_type: action.cl_call_type,\r\n cl_status_type: action.cl_status_type,\r\n cl_call_category: action.cl_call_category,\r\n cl_from_date: action.cl_from_date,\r\n cl_to_date: action.cl_to_date,\r\n cl_date_type: action.cl_date_type\r\n }\r\n case actions.SET_SUBSCRIBER_CALL_LOGS_FILTER:\r\n return {\r\n ...state,\r\n usercl_call_type: action.usercl_call_type,\r\n usercl_status_type: action.usercl_status_type,\r\n usercl_call_category: action.usercl_call_category,\r\n usercl_date_type: action.usercl_date_type,\r\n usercl_from_date: action.usercl_from_date,\r\n usercl_to_date: action.usercl_to_date\r\n }\r\n case actions.UI_SKINS_APPLIED:\r\n return {\r\n ...state,\r\n themes_loaded: true\r\n }\r\n case actions.SET_MSP_LOGIN_DATA:\r\n return {\r\n ...state,\r\n isMspLogin: true,\r\n mspLoginData: { ...action.data }\r\n }\r\n }\r\n\r\n return state;\r\n}\r\n\r\nexport default reducer;","import { combineReducers } from 'redux';\r\nimport reducer from './reducer';\r\nimport * as config from './../requests/config';\r\nimport * as actions from './../store/actions';\r\nimport jwtDecode from \"jwt-decode\";\r\n\r\nexport const reducers = combineReducers({ reducer });\r\n \r\nconst initialState = () => {\r\n return {\r\n }\r\n}\r\n\r\nexport const tokenRepo = (actionType = '', data = {}) => async dispatch => {\r\n try {\r\n \r\n switch(actionType)\r\n {\r\n case actions.UI_SKINS_APPLIED:\r\n dispatch({type: actions.UI_SKINS_APPLIED});\r\n case actions.SET_MSP_LOGIN_DATA:\r\n dispatch({ type: actions.SET_MSP_LOGIN_DATA, data: { ...data }});\r\n default:\r\n let TokenObj = sessionStorage.getItem('accessToken') ? sessionStorage.getItem('accessToken') : (localStorage.getItem('accessToken') ? localStorage.getItem('accessToken') : null);\r\n try\r\n {\r\n if (TokenObj !== null && TokenObj !== 'undefined') {\r\n\r\n let decodedToken = jwtDecode(TokenObj);\r\n let currentTime = new Date();\r\n let expirationOnCurrentToken = decodedToken.exp;\r\n const d = new Date(0);\r\n d.setUTCSeconds(expirationOnCurrentToken);\r\n if (currentTime > d) {\r\n dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n dispatch({type: actions.TOKEN_LOADED});\r\n }\r\n else {\r\n await dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: true});\r\n await config.tokenSaveUserProperties(TokenObj);\r\n }\r\n } else {\r\n dispatch({type: actions.TOKEN_LOADED})\r\n }\r\n } catch (ex) {\r\n console.log('tokenRepo error:' + ex);\r\n dispatch({type: actions.TOKEN_LOADED})\r\n }\r\n }\r\n } catch (error) {\r\n console.error('tokenRepo error: ' + error);\r\n dispatch({ type: actions.TOKEN_LOADED });\r\n }\r\n}","var map = {\n\t\"./DriveUC-UI-development\": [\n\t\t490,\n\t\t0\n\t],\n\t\"./DriveUC-UI-development.json\": [\n\t\t490,\n\t\t0\n\t],\n\t\"./DriveUC-UI-production\": [\n\t\t491,\n\t\t1\n\t],\n\t\"./DriveUC-UI-production.json\": [\n\t\t491,\n\t\t1\n\t],\n\t\"./DriveUC-UI-staging\": [\n\t\t492,\n\t\t2\n\t],\n\t\"./DriveUC-UI-staging.json\": [\n\t\t492,\n\t\t2\n\t],\n\t\"./MyDigitalServices-UI-development\": [\n\t\t493,\n\t\t3\n\t],\n\t\"./MyDigitalServices-UI-development.json\": [\n\t\t493,\n\t\t3\n\t],\n\t\"./MyDigitalServices-UI-production\": [\n\t\t494,\n\t\t4\n\t],\n\t\"./MyDigitalServices-UI-production.json\": [\n\t\t494,\n\t\t4\n\t],\n\t\"./MyDigitalServices-UI-staging\": [\n\t\t495,\n\t\t5\n\t],\n\t\"./MyDigitalServices-UI-staging.json\": [\n\t\t495,\n\t\t5\n\t],\n\t\"./Retail-CSS\": [\n\t\t496,\n\t\t6\n\t],\n\t\"./Retail-CSS.json\": [\n\t\t496,\n\t\t6\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 3);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 227;\nmodule.exports = webpackAsyncContext;","import { store } from '../store/store';\r\nimport * as actions from './../store/actions';\r\nimport entries from 'object.entries';\r\nimport moment from 'moment';\r\nexport const searchDelay = 1000;\r\nexport const unauthorized = 401;\r\nexport const loginTimeout = 1000 * 30;\r\nexport const redirectTimeout = 1000 * 10;\r\nexport const noResultsMsg = 'No results for the search term provided.';\r\nexport const signInPageButtonLabel = process.env.REACT_APP_SIGNIN_PAGE_BTN_LABEL;\r\nexport const idleLogoutTime = 1000 * 60 * 20;\r\nexport const idleLogoutWarning = 1000 * 60;\r\n\r\nexport const saveLoginError = (errorMsg, errorDescription='') => {\r\n let actionParams = {\r\n loginError: errorMsg.toString(),\r\n loginErrorDescription: errorDescription.toString()\r\n }\r\n store.dispatch({type: actions.SAVE_LOGIN_ERROR, ...actionParams});\r\n saveToSessionStorage(actionParams);\r\n}\r\n\r\nexport const setLocation = (locationAccountNumber, locationAddress) => {\r\n let actionParams = {\r\n LocationAccountNumber: locationAccountNumber, \r\n LocationAddress: locationAddress,\r\n }\r\n store.dispatch({type: actions.SET_LOCATION, ...actionParams});\r\n saveToSessionStorage(actionParams);\r\n}\r\n\r\nexport const setQuickViewLocation = (locationAccountNumber) => {\r\n let actionParams = {\r\n QuickViewLocationAccountNumber: locationAccountNumber\r\n }\r\n //QUICK FIX FOR QUICK VIEW NOT LOADING BECAUSE OF VALUE IS ALREADY DISPATCH\r\n store.dispatch({type: actions.SET_QUICK_VIEW_LOCATION, ...{}});\r\n\r\n store.dispatch({type: actions.SET_QUICK_VIEW_LOCATION, ...actionParams});\r\n}\r\n\r\nexport const selectService = (userId, serviceNumber, pbxUserId = null, extension=null) => {\r\n // triggers call to MyServices to retrieve remaining service properties\r\n let actionParams = {SelectedUserId: userId, ServiceNumber: serviceNumber, PBXUserID: pbxUserId, Extension: extension};\r\n store.dispatch({type: actions.SERVICE_SELECTED, ...actionParams});\r\n saveToSessionStorage(actionParams);\r\n}\r\n\r\nexport const setService = (service) => {\r\n let actionParams = {};\r\n if (service) \r\n actionParams = {\r\n ServiceId: service.ServiceId,\r\n ServiceNumber: service.ServiceNumber, \r\n SelectedUserId: service.UserId,\r\n AccountNumber: service.LocationAccountNumber,\r\n DirectoryNumber:service.DirectoryNumber,\r\n PBXUserID: service.PBXUserID,\r\n Extension:service.Extension,\r\n isSelectedServiceIpTrunking: service.IsIPTrunking,\r\n //reset date filters on call logs when selected user/service changes\r\n usercl_call_type: \"1\",\r\n usercl_status_type: \"1\",\r\n usercl_call_category: \"1\",\r\n usercl_date_type: \"1\",\r\n usercl_from_date: moment(Date.now()).startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n usercl_to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\")\r\n };\r\n else\r\n actionParams = {\r\n ServiceId: 0,\r\n ServiceNumber: '', \r\n SelectedUserId: sessionStorage.SelectedUserId,\r\n AccountNumber: sessionStorage.userEnterpriseNumber,\r\n DirectoryNumber:'',\r\n PBXUserID: '',\r\n Extension: '',\r\n isSelectedServiceIpTrunking: false,\r\n //reset date filters on call logs when selected user/service changes\r\n usercl_call_type: \"1\",\r\n usercl_status_type: \"1\",\r\n usercl_call_category: \"1\",\r\n usercl_date_type: \"1\",\r\n usercl_from_date: moment(Date.now()).startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n usercl_to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\")\r\n };\r\n saveToSessionStorage(actionParams);\r\n store.dispatch({type: actions.SET_SERVICE, ...actionParams});\r\n}\r\n\r\nexport const setCLFilters = (cl_call_type, cl_status_type, cl_call_category, cl_date_type, cl_from_date, cl_to_date, user = null) => {\r\n let actionParams = {};\r\n if (user)\r\n {\r\n actionParams = {\r\n usercl_call_type: cl_call_type,\r\n usercl_status_type: cl_status_type,\r\n usercl_call_category: cl_call_category,\r\n usercl_date_type: cl_date_type,\r\n usercl_from_date: cl_from_date,\r\n usercl_to_date: cl_to_date\r\n }\r\n store.dispatch({type: actions.SET_SUBSCRIBER_CALL_LOGS_FILTER, ...actionParams});\r\n saveToSessionStorage(actionParams);\r\n } else {\r\n actionParams = {\r\n cl_call_type: cl_call_type,\r\n cl_status_type: cl_status_type,\r\n cl_call_category: cl_call_category,\r\n cl_date_type: cl_date_type,\r\n cl_from_date: cl_from_date,\r\n cl_to_date: cl_to_date\r\n }\r\n store.dispatch({type: actions.SET_CALL_LOGS_FILTER, ...actionParams});\r\n saveToSessionStorage(actionParams);\r\n }\r\n}\r\n\r\nconst sameServiceSelected = (serviceNumber) => {\r\n return sessionStorage.ServiceNumber === serviceNumber\r\n}\r\n\r\nconst saveToSessionStorage = (actionParams) => {\r\n // save action params to local storage so they persist across page loads\r\n entries(actionParams).map(([key, value]) => {\r\n if (value === undefined || value === null) {\r\n sessionStorage.removeItem(key);\r\n } else {\r\n sessionStorage.setItem(key, value);\r\n }\r\n });\r\n}\r\n\r\nexport const setGlobalSearchValue = (value) => {\r\n let actionParams = {\r\n GlobalSearch: value\r\n }\r\n saveToSessionStorage(actionParams);\r\n}\r\n\r\nexport const getGlobalSearchValue = () => {\r\n return sessionStorage.getItem(\"GlobalSearch\");\r\n}","import * as config from \"./../requests/config\";\r\nimport * as settings from \"./settings\";\r\nimport * as helper from \"./helper\";\r\nimport jwtDecode from \"jwt-decode\";\r\n\r\nexport const loggedIn = () => {\r\n return sessionStorage.loggedIn ? true : null;\r\n};\r\n\r\nexport const storedAccessToken = () => sessionStorage.accessToken;\r\n\r\nexport const urlEncodedToken = () => {\r\n return encodeURI(sessionStorage.accessToken);\r\n}\r\n\r\nexport const getEnterpriseId = () => { return sessionStorage.userEnterpriseNumber; };\r\n\r\nexport const getExpirationForEmb = () => {\r\n let d = new Date(0);\r\n d.setUTCMilliseconds(sessionStorage.expiration * 1000);\r\n let month = d.getMonth();\r\n if (month === 12)\r\n month = 1;\r\n else\r\n month += 1;\r\n let minutes = d.getMinutes();\r\n if (minutes < 10)\r\n minutes = '0' + minutes.toString();\r\n let formattedDate = month.toString() + '/' + d.getDate() + \"/\" + d.getFullYear() + \" \" + d.getHours() + \":\" + minutes;\r\n return formattedDate; //may need to be URIEncoded too\r\n};\r\n\r\nexport const storedXPolicy = () => sessionStorage.xpolicy;\r\n\r\nexport const tokenIsValid = () => {\r\n //console.log('valid token check from ' + methodName);\r\n if (sessionStorage.accessToken) {\r\n\r\n let decodedToken = jwtDecode(sessionStorage.accessToken);\r\n let currentTime = new Date();\r\n let expirationOnCurrentToken = decodedToken.exp;\r\n const d = new Date(0);\r\n d.setUTCSeconds(expirationOnCurrentToken);\r\n\r\n if (currentTime > d) {\r\n sessionStorage.setItem('tokenIsValid', false);\r\n return false;\r\n }\r\n else if (sessionStorage.tokenIsValid) {\r\n return sessionStorage.tokenIsValid && sessionStorage.tokenIsValid.toString().toLowerCase() === 'true' ? true : false;\r\n }\r\n else {\r\n console.log('token is invalid because it is not in sessionStorage')\r\n return false;\r\n }\r\n }\r\n return false;\r\n\r\n}\r\n\r\nexport const isNewSession = () => helper.atLoginPath() && loggedIn();\r\n\r\nexport const isTestSession = () => helper.toBoolean(sessionStorage.testSession);\r\n\r\nexport const isRpxSession = () => helper.toBoolean(sessionStorage.RPXLogin);\r\n\r\nexport const storedUserType = () => sessionStorage.UserType;\r\n\r\nexport const IsWholesale = () => sessionStorage.IsWholesale === \"true\";\r\n\r\nexport const customLogoSmall = () => sessionStorage.customLogoSmall;\r\n\r\nexport const customLogoLarge = () => sessionStorage.customLogoLarge;\r\n\r\nexport const storedVendorId = () => sessionStorage.vendorId;\r\n\r\nexport const tokenUpdater = requestToken => {\r\n if (!sessionStorage.loggedIn) return false;\r\n if (requestToken) {\r\n if (isRpxSession()) {\r\n rpxTokenUpdater();\r\n } else {\r\n silenTokenUpdater();\r\n }\r\n }\r\n};\r\n\r\nexport const parsedUsername = () => {\r\n if (sessionStorage.username) return sessionStorage.username;\r\n //if (sessionStorage.username) {\r\n //return sessionStorage.username.split('@')[0];\r\n};\r\n\r\nexport const parsedEmulatedUser = () => {\r\n if (sessionStorage.username) return sessionStorage.emulatedUser;\r\n};\r\n\r\nexport const silenTokenUpdater = async () => {\r\n let rpxEmulation = sessionStorage.getItem('emulatedUser') ? true : false;\r\n await config.clientApp.acquireTokenSilent({\r\n scopes: config.b2cScopes,\r\n loginHint: sessionStorage.loggedUser,\r\n }).then(async (response) => {\r\n await config.storeToken(response.accessToken, rpxEmulation); // stores in sessionStorage\r\n }).catch(acquireTokenError => {\r\n // could also check if err instance of InteractionRequiredAuthError if you can import the class.\r\n try {\r\n config.clientApp.acquireTokenRedirect({\r\n scopes: config.b2cScopes,\r\n loginHint: sessionStorage.loggedUser,\r\n });\r\n } catch (error) {\r\n console.log(`A loging error occurred on the second attempt to acquire token: --> ${error}`);\r\n settings.saveLoginError(acquireTokenError);\r\n }\r\n });\r\n};\r\n\r\nexport const rpxTokenUpdater = () => {\r\n let body = JSON.stringify(sessionStorage.refreshToken);\r\n let auth =\r\n \"Basic \" +\r\n btoa(\r\n sessionStorage.emulatedUser + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD\r\n );\r\n let url = config.baseApiUrl + \"auth/RefreshAzureToken\";\r\n //let localurl = \"https://localhost:44330/api/auth/RefreshAzureToken\";\r\n fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n Authorization: auth\r\n },\r\n body: body\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n response.json().then(json => {\r\n json.EmulatorUsername = sessionStorage.emulatedUser;\r\n config.storeRPXToken(json);\r\n });\r\n } else {\r\n }\r\n })\r\n .catch(message => {\r\n if (message.status === 401) {\r\n console.log(\"rpxTokenUpdater->error\");\r\n console.log(message.status);\r\n }\r\n\r\n logout();\r\n });\r\n};\r\n\r\nexport const logout = () => {\r\n let username = '';\r\n if (sessionStorage.username)\r\n username = sessionStorage.username;\r\n else if (sessionStorage.loginUserName)\r\n username = sessionStorage.loginUserName;\r\n\r\n let redirectUri = encodeURIComponent(window.location.protocol + \"//\" + window.location.host + \"/session\");\r\n\r\n if (username !== '')\r\n redirectUri += '?username=' + username;\r\n\r\n sessionStorage.clear();\r\n //institute something here to say i am logged out on this tab\r\n sessionStorage.setItem('loggingOut', true);\r\n //localStorage.removeItem('accessToken');\r\n //config.clientApp.logout();\r\n localStorage.clear();\r\n // setting xpolicy\r\n let object = {\r\n tenant:\r\n process.env.REACT_APP_ENVIRONMENT === \"development\"\r\n ? \"gomomentumdev.onmicrosoft.com\"\r\n : \"momentumbrain.onmicrosoft.com\",\r\n // policy: \"B2C_1_SignIn\",\r\n policy: storedXPolicy() === undefined ? process.env.REACT_APP_MSA_XPOLICY : storedXPolicy(),\r\n post_logout_redirect_uri: redirectUri,\r\n url: process.env.REACT_APP_ENVIRONMENT === \"development\"\r\n ? \"https://gomomentumdev.b2clogin.com/\"\r\n : \"https://momentumbrain.b2clogin.com/\"\r\n };\r\n let newLocation = object.url +\r\n object.tenant +\r\n \"/oauth2/logout?p=\" +\r\n object.policy +\r\n \"&post_logout_redirect_uri=\" +\r\n object.post_logout_redirect_uri;\r\n\r\n window.location = newLocation;\r\n};\r\n\r\n\r\nexport const transitionTimeout = () => {\r\n // prevents redirect page from getting hung\r\n setTimeout(() => {\r\n if (stillRedirecting()) {\r\n sessionStorage.removeItem(\"timer\");\r\n logout();\r\n }\r\n }, redirectTimer());\r\n};\r\n\r\nconst stillRedirecting = () => helper.toBoolean(sessionStorage.redirecting);\r\n\r\nconst redirectTimer = () => {\r\n if (window.location.href.indexOf(\"#state=\") !== -1) {\r\n // appended to url if redirected from MS login page\r\n async () => await sessionStorage.setItem(\"timer\", settings.loginTimeout);\r\n return settings.loginTimeout;\r\n } else {\r\n return sessionStorage.timer || settings.redirectTimeout;\r\n }\r\n};\r\n","export const UPDATE_TOKEN_STATUS = 'UPDATE_TOKEN_STATUS';\nexport const LOGIN_USER = 'LOGIN_USER';\nexport const RESTART_SESSION = 'RESTART_SESSION';\nexport const SAVE_LOGIN_ERROR = 'SAVE_LOGIN_ERROR';\nexport const REFRESH_TOKEN = 'REFRESH_TOKEN';\nexport const REDIRECTING = 'REDIRECTING';\nexport const SET_LOCATION = 'SET_LOCATION';\nexport const SET_QUICK_VIEW_LOCATION = 'SET_QUICK_VIEW_LOCATION';\nexport const SERVICE_SELECTED = 'SERVICE_SELECTED';\nexport const SET_SERVICE = 'SET_SERVICE';\nexport const SERVICES_SET = 'SERVICES_SET';\nexport const TOGGLE_SIDEBAR = 'TOGGLE_SIDEBAR';\nexport const REDIRECT_BETA_ACCESS = 'REDIRECT_BETA_ACCESS';\nexport const RECEIVE_TOKEN = 'RECEIVE_TOKEN';\nexport const TOKEN_LOADED = 'TOKEN_LOADED';\nexport const START_LOGIN = 'START_LOGIN';\nexport const PERMISSIONS_UPDATED = 'PERMISSIONS_UPDATED';\nexport const RECEIVE_CUSTOM_IMAGE = 'RECEIVE_CUSTOM_IMAGE';\nexport const SET_CALL_LOGS_FILTER = 'SET_CALL_LOGS_FILTER';\nexport const SET_SUBSCRIBER_CALL_LOGS_FILTER = 'SET_SUBSCRIBER_CALL_LOGS_FILTER';\nexport const UI_SKINS_APPLIED = 'UI_SKINS_APPLIED';\nexport const IP_TRUNKING_ONLY_SET = 'IP_TRUNKING_ONLY_SET';\nexport const SET_MSP_LOGIN_DATA = 'SET_MSP_LOGIN_DATA';\nexport const VALIDATE_MFA = 'VALIDATE_MFA';","import { applyMiddleware, createStore } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport { reducers } from './redux';\r\n\r\nexport function configureStore(initialState = {}) {\r\n const store = createStore(reducers, initialState, applyMiddleware(thunk));\r\n return store;\r\n }\r\n\r\nexport const store = configureStore();","import React, { Component } from \"react\";\r\nimport { DataLoadingSpinner } from \"../../components/spinners\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport \"@progress/kendo-theme-default/dist/all.css\";\r\nimport \"../../css/bootstrap.css\";\r\nimport \"../../css/app.css\";\r\nimport \"../../css/spinner.css\";\r\nimport \"../../css/msp_resetpassword.css\";\r\nimport * as helper from \"../../scripts/helper\";\r\nimport * as config from \"../../requests/config\";\r\nimport momentumLogoWhite from \"../../images/momentum_logo.png\";\r\nimport { connect } from \"react-redux\";\r\n\r\n\r\nconst Password1 = \"Password1\", Password2 = \"Password2\";\r\n\r\nclass ResetPassword extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n Email: '',\r\n Error: \"\",\r\n validationError: \"\",\r\n Logo: momentumLogoWhite,\r\n password1: '',\r\n password2: '',\r\n isNetworkError: false,\r\n isInvalidUser: true,\r\n isShowBackButton:false\r\n };\r\n }\r\n\r\n getCustomizations = async currentUrl => {\r\n const b2cResults = await helper.getB2CConfigResults(currentUrl);\r\n this.loadingLogo = helper.IsWholesaleDomain(currentUrl)\r\n ? this.loadingLogo\r\n : momentumLogoWhite;\r\n const customAuthPolicy = this.preProcessCustomizations(b2cResults);\r\n\r\n await this.setState({ auth: customAuthPolicy, loading: false });\r\n };\r\n\r\n preProcessCustomizations = b2cResults => {\r\n let customAuthPolicy = config.auth;\r\n if (b2cResults) {\r\n const authority =\r\n config.authorityUrl +\r\n b2cResults.B2CPolicy +\r\n config.defaultXPolicyConfig;\r\n customAuthPolicy = {\r\n clientId: b2cResults.B2CClientId,\r\n authority: authority,\r\n b2cScopes: []\r\n };\r\n const { LogoSmall, LogoLarge, VendorName, BrowserIcon } = b2cResults;\r\n this.loadingLogo = LogoLarge;\r\n helper.updateFavicon(BrowserIcon);\r\n if (!helper.isDigitalServicesDomain()) {\r\n helper.setTitle(VendorName);\r\n }\r\n }\r\n return customAuthPolicy;\r\n };\r\n\r\n componentDidMount() {\r\n // this.props.history.push(\"\\session\");\r\n const domain = helper.getDomain();\r\n this.getCustomizations(domain);\r\n }\r\n\r\n handleOnChange = (type, event) => {\r\n let state = { ...this.state };\r\n\r\n switch (type) {\r\n case Password1:\r\n state.password1 = event.target.value;\r\n break;\r\n case Password2:\r\n state.password2 = event.target.value;\r\n break;\r\n }\r\n if (state.password1.length > 0 && state.password1.length < 8) {\r\n state.valid = false;\r\n state.validMessage = 'Password must be at least 8 characters long';\r\n } else if (!this.ValidPassword(state.password1)) {\r\n state.valid = false;\r\n state.validMessage = 'The password must contain at least 1 number or special character, at least 1 lower case letter, and at least 1 upper case letter';\r\n }\r\n else if ((state.password1 && state.password2 && state.password1 !== state.password2) || (state.password1 && !state.password2) || (!state.password1 && state.password2)) {\r\n state.valid = false;\r\n state.validMessage = \"The password is not the same\";\r\n } else if (state.password1 && state.password2 && state.password1 === state.password2) {\r\n state.valid = true;\r\n state.validMessage = \"\";\r\n }\r\n this.setState(state);\r\n }\r\n\r\n ValidPassword = (pw) => {\r\n //var reg = /^.*(?=.{8,})(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).*/;\r\n var reg = /^.*(?=.{8,})(?=.*([\\d]|[!@#$%^&*{}_+=\\[\\]:;'\",<.>/?_`~\\\\\\|-]))(?=.*[a-z])(?=.*[A-Z]).*/;\r\n var test = reg.test(pw);\r\n return test;\r\n }\r\n decode = (value) => {\r\n let base64ToString = new Buffer.from(value, \"base64\").toString();\r\n return base64ToString;\r\n }\r\n handleOnBack = () => {\r\n helper.redirectToLogin();\r\n return;\r\n }\r\n\r\n handleOnSave = () => {\r\n if (!this.state.valid) {\r\n return;\r\n }\r\n else {\r\n let state = { ...this.state };\r\n state.savingLoading = true;\r\n state.savingShowSuccess = false;\r\n this.setState(state);\r\n //new Buffer.from(window.location.search.replace('?token=',''), \"base64\").toString().split(',')[2].replace('userName=','')\r\n var token = new URLSearchParams(window.location.search).get(\"token\");\r\n var decodedToken = this.decode(token);\r\n var userName = '';\r\n var params = decodedToken.split(',');\r\n for (var index = 0; index < params.length; index++) {\r\n if (params[index].startsWith('userName=')) {\r\n userName = params[index].replace('userName=', '');\r\n break;\r\n }\r\n }\r\n helper.ValidateResetPassword(window.location.href, state.password1, userName).then((response) => {\r\n if (response == null) {\r\n this.setState({ Error: \"Token link has expired.\", validationError: \"Please click Back to go to Login page.\",isShowBackButton:true });\r\n \r\n return;\r\n }\r\n else {\r\n this.setState({\r\n isNetworkError: false,\r\n });\r\n if (response) {\r\n var responseCode = parseInt(response);\r\n if (responseCode == 500) {\r\n this.setState({ Error: \"An internal server error has occurred.\", validationError: \"Please return to the Sign In page and try Forgot Password again. Contact your Administrator if the error persists.\" });\r\n return;\r\n }\r\n else if (responseCode == 401) {\r\n this.setState({ Error: \"The token cannot be decoded.\", validationError: \"Please check the url.\" });\r\n return;\r\n }\r\n else if (responseCode == 406) {\r\n this.setState({ Error: \"Token link has expired.\", validationError: \"Please click Back to go to Login page.\",isShowBackButton:true });\r\n return;\r\n }\r\n else {\r\n this.setState({ Error: \"\" });\r\n }\r\n }\r\n helper.redirectToLogin();\r\n return;\r\n }\r\n }).catch(async err => {\r\n console.log(err);\r\n this.setState({\r\n isNetworkError: Boolean(err.message),\r\n Error: \"Unable to reach server\",\r\n validationError: \"\"\r\n });\r\n });\r\n }\r\n }\r\n resetForm = () => {\r\n let state = this.state;\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n

    Reset Password

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

    We recommend you choose a strong password to protect your online profile. The password length must be at least 8 characters. The password must contain at least 1 number or special character, at least 1 lower case letter, and at least 1 upper case letter.

    \r\n

    Avoid using passwords that can be easily guessed such as your name, telephone number, social security number, or account number.

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

    {this.state.Error}

    \r\n

    {this.state.validationError}

    \r\n
    \r\n {this.resetFormInner()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n resetFormInner = () =>{\r\n if(this.state.isShowBackButton){\r\n return (
    \r\n {this.getValidationError()}\r\n
    \r\n
    \r\n Back\r\n
    \r\n
    );\r\n }\r\n else {\r\n return (
    \r\n
    \r\n \r\n { this.handleOnChange(Password1, x) }} />\r\n
    \r\n
    \r\n \r\n { this.handleOnChange(Password2, x) }} />\r\n
    \r\n {this.getValidationError()}\r\n
    \r\n
    \r\n Save\r\n
    \r\n
    );\r\n }\r\n }\r\n getValidationError = () => {\r\n if (!this.state.valid && this.state.validMessage) {\r\n return (
    {this.state.validMessage}
    )\r\n }\r\n return \"\";\r\n }\r\n resetContainer = () => {\r\n if (this.state.isInvalidUser) {\r\n return this.resetForm();\r\n }\r\n else {\r\n helper.redirectToLogin();\r\n return;\r\n }\r\n }\r\n\r\n render() {\r\n return this.resetContainer();\r\n }\r\n}\r\nconst mapStateToProps = state => {\r\n return {\r\n redirecting: helper.toBoolean(state.reducer.redirecting),\r\n restartSession: helper.toBoolean(state.reducer.restartSession),\r\n loginError: state.reducer.loginError,\r\n loginErrorDescription: state.reducer.loginErrorDescription,\r\n };\r\n};\r\nexport default withRouter(connect(mapStateToProps)(ResetPassword));","import React, { Component } from \"react\";\r\nimport { DataLoadingSpinner } from \"../../components/spinners\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport \"@progress/kendo-theme-default/dist/all.css\";\r\nimport \"../../css/bootstrap.css\";\r\nimport \"../../css/app.css\";\r\nimport \"../../css/spinner.css\";\r\nimport \"../../css/msp_validateEmail.css\";\r\nimport * as helper from \"../../scripts/helper\";\r\nimport * as config from \"../../requests/config\";\r\nimport momentumLogoWhite from \"../../images/momentum_logo.png\";\r\nimport { connect } from \"react-redux\";\r\n\r\nclass ValidateMfaEmail extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n email: '',\r\n Error: \"\",\r\n validationError: \"\",\r\n Logo: momentumLogoWhite,\r\n password1: '',\r\n password2: '',\r\n isNetworkError: false,\r\n isInvalidUser: true,\r\n isShowBackButton: false\r\n };\r\n }\r\n\r\n getCustomizations = async currentUrl => {\r\n const b2cResults = await helper.getB2CConfigResults(currentUrl);\r\n this.loadingLogo = helper.IsWholesaleDomain(currentUrl)\r\n ? this.loadingLogo\r\n : momentumLogoWhite;\r\n const customAuthPolicy = this.preProcessCustomizations(b2cResults);\r\n\r\n await this.setState({ auth: customAuthPolicy, loading: false });\r\n };\r\n\r\n preProcessCustomizations = b2cResults => {\r\n let customAuthPolicy = config.auth;\r\n if (b2cResults) {\r\n const authority =\r\n config.authorityUrl +\r\n b2cResults.B2CPolicy +\r\n config.defaultXPolicyConfig;\r\n customAuthPolicy = {\r\n clientId: b2cResults.B2CClientId,\r\n authority: authority,\r\n b2cScopes: []\r\n };\r\n const { LogoSmall, LogoLarge, VendorName, BrowserIcon } = b2cResults;\r\n this.loadingLogo = LogoLarge;\r\n helper.updateFavicon(BrowserIcon);\r\n if (!helper.isDigitalServicesDomain()) {\r\n helper.setTitle(VendorName);\r\n }\r\n }\r\n return customAuthPolicy;\r\n };\r\n\r\n componentDidMount() {\r\n const domain = helper.getDomain();\r\n this.getCustomizations(domain);\r\n var p_email = new URLSearchParams(window.location.search).get(\"email\");\r\n this.setState({ email: p_email })\r\n }\r\n\r\n handleOnChange = (type, event) => {\r\n let state = { ...this.state };\r\n state.email = event.target.value;\r\n this.setState(state);\r\n }\r\n\r\n // ValidPassword = (pw) => {\r\n // var reg = /^.*(?=.{8,})(?=.*([\\d]|[!@#$%^&*{}_+=\\[\\]:;'\",<.>/?_`~\\\\\\|-]))(?=.*[a-z])(?=.*[A-Z]).*/;\r\n // var test = reg.test(pw);\r\n // return test;\r\n // }\r\n decode = (value) => {\r\n let base64ToString = new Buffer.from(value, \"base64\").toString();\r\n return base64ToString;\r\n }\r\n\r\n handleOnBack = () => {\r\n helper.redirectToLogin();\r\n return;\r\n }\r\n\r\n handleOnSave = () => {\r\n let state = { ...this.state };\r\n state.savingLoading = true;\r\n state.savingShowSuccess = false;\r\n this.setState(state);\r\n var token = new URLSearchParams(window.location.search).get(\"token\");\r\n var decodedToken = this.decode(token);\r\n var userName = '';\r\n var params = decodedToken.split(',');\r\n for (var index = 0; index < params.length; index++) {\r\n if (params[index].startsWith('userName=')) {\r\n userName = params[index].replace('userName=', '');\r\n break;\r\n }\r\n }\r\n helper.VerifyTwoStepEmail(window.location.href, state.email, userName).then((response) => {\r\n if (response == null) {\r\n this.setState({ Error: \"Token link has expired.\", validationError: \"Please click Back to go to Login page.\", isShowBackButton: true });\r\n return;\r\n }\r\n else {\r\n this.setState({\r\n isNetworkError: false,\r\n });\r\n if (response) {\r\n var responseCode = parseInt(response);\r\n if (responseCode == 500) {\r\n this.setState({ Error: \"An internal server error has occurred.\", validationError: \"Please return to the Sign In page and try again. Contact your Administrator if the error persists.\" });\r\n return;\r\n }\r\n else if (responseCode == 401) {\r\n this.setState({ Error: \"The token cannot be decoded.\", validationError: \"Please check the url.\" });\r\n return;\r\n }\r\n else if (responseCode == 406) {\r\n this.setState({ Error: \"Token link has expired.\", validationError: \"Please click Back to go to Login page.\", isShowBackButton: true });\r\n return;\r\n } else {\r\n this.setState({ Error: \"\" });\r\n }\r\n }\r\n this.setState({ Error: \"\", validationError: \"\", successMessage: \"Success! You may now login and continue with MFA configuration\" });\r\n setTimeout(() => {\r\n helper.redirectToLogin();\r\n }, 3000);\r\n return;\r\n }\r\n }).catch(async err => {\r\n console.log(err);\r\n this.setState({\r\n isNetworkError: Boolean(err.message),\r\n Error: \"Unable to reach server\",\r\n validationError: \"\"\r\n });\r\n });\r\n }\r\n\r\n resetForm = () => {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n

    MFA Email Validation

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

    After email validation, you can log back in to configure MFA for your account.

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

    {this.state.Error}

    \r\n

    {this.state.validationError}

    \r\n {this.state.successMessage && this.state.successMessage !== \"\" ?
    \r\n

    {this.state.successMessage}

    \r\n
    : null}\r\n
    \r\n {this.resetFormInner()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n resetFormInner = () => {\r\n if (this.state.isShowBackButton) {\r\n return (
    \r\n {this.getValidationError()}\r\n
    \r\n
    \r\n Back\r\n
    \r\n
    );\r\n }\r\n else {\r\n return (
    \r\n
    \r\n \r\n \r\n
    \r\n {this.getValidationError()}\r\n
    \r\n
    \r\n Verify MFA Email\r\n
    \r\n
    );\r\n }\r\n }\r\n\r\n getValidationError = () => {\r\n if (!this.state.valid && this.state.validMessage) {\r\n return (
    {this.state.validMessage}
    )\r\n }\r\n return \"\";\r\n }\r\n\r\n resetContainer = () => {\r\n if (this.state.isInvalidUser) {\r\n return this.resetForm();\r\n }\r\n else {\r\n helper.redirectToLogin();\r\n return;\r\n }\r\n }\r\n\r\n render() {\r\n return this.resetContainer();\r\n }\r\n}\r\nconst mapStateToProps = state => {\r\n return {\r\n redirecting: helper.toBoolean(state.reducer.redirecting),\r\n restartSession: helper.toBoolean(state.reducer.restartSession),\r\n loginError: state.reducer.loginError,\r\n loginErrorDescription: state.reducer.loginErrorDescription,\r\n };\r\n};\r\n\r\nexport default withRouter(connect(mapStateToProps)(ValidateMfaEmail));","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAABmwAAAZsBqMTCdgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKzSURBVEiJtVbNTxNBHH07u+z2w3bbggqSkHg02gKN1JhiQjzIxWiiUePBgzdjJByMQr0YxZMJGuNHOBE10cBB5ebVkJgaQWxKNfwDCrW20JbFstvOekD7te3umMg7zey893u/mZ35zXDLx/t1WIDIHog9feC9PhCXDACg+SxKmTTU2BxoLmsVAoLZoBQKw3nqPMR9foCQxiRKoX5dhPL6BTbnok1jcY1mxHd0Qr5yHWIgaJlpNdTYPLKP7qKUXDaMGdKUDvWj7cHkP5sAgNhzEG0Pn0IKhc2NxEAQ3tExcHZHw0B64Rfyk4+RezIOml1ryOHsDngjdwyJlo34jk54RscAoflvU169hPJmChtvZ6DMTDWfmiDAM3IbfPseo5E8HAFxuZuLAZSS3yvt5W+mXOKWIQ/fqDWSQmGI+7tNhQDASbaqDmfJFw90Q+o7XDFynjhjKQIAzmavtB1OJs3f2IS4ZYj+XjajHa5ym3i8TBrRHwRxuUHEQLD5YawDqTLiZTYj8DxEfy8Iv3M3m6DOiHVGAMDvagch3lZmQe3S+Zh1xNcKwrJ7yoJqI9nDrAM4CDTzk5kudO0FCAEntEDo7GLW0XQKQimVZM/L7oB94NjWwTapIPUopZLAyrlBnWqqvl2gmqqvnB3Uia4o0L7E2ZdhLQO6nmfma4kY9A1lqzKsTz9jEm3ORfHj4mmkLpxEITrLpFmffg7gTwlSFz9jc+GjpagQnQWKRehFDYX376wT+/QBaiJWMQKA3MQ90HzOVGgLD4ATJXAtLbAfOWrKpbkschP3y/2aq1wMBOG7NW66o3RFga7TmjNlQLGIzM2rUOML5U81RU6NLyAdGQJdzTSNwTmdpiZ0NYN0ZKjGxGAEANpSAumRywYiC9TYPNLXLkFbShgTNHvXbftzqx7/4wH5G/bxSF1Mzn/dAAAAAElFTkSuQmCC\""],"sourceRoot":""}