{"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","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","images/check_one.gif","images/check_two.gif","E911retail.pdf","E911WL.pdf","containers/login/modals/loginModals.js","containers/modals/termsAndConditionsModal.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_chart.js","containers/modals/payManageModal.js","containers/billing.js","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/modals/agentDefaultSettingModal.js","containers/modals/agentUnavailableCodesModal.js","containers/modals/callDispositionCodesModal.js","containers/modals/centerRoutingPoliciesModal.js","containers/modals/anywhereModal.js","containers/modals/remoteOfficeModal.js","containers/modals/preAlertModal.js","containers/modals/customRingbackModal.js","containers/modals/virtualNumberModal.js","containers/enterprise_settings.js","containers/enterprise_settings_alt.js","images/momentum_logo.svg","containers/locations/modals/fQDNSetupModal.js","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/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/clientAppModal.js","containers/modals/voicemailToTextModal.js","containers/modals/distributionListModal.js","containers/voicemailSettingsRow.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/msteams_menu.js","containers/microsoftTeams/components/utility.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/tabs/voice_route.js","containers/microsoftTeams/tabs/voice_policy.js","containers/microsoftTeams/msteams_tenantinfo.js","containers/microsoftTeams/msteams_main.js","containers/microsoftTeams/components/tn_search.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/circuitDevices/graphing/d3-line-chart.js","containers/circuitDevices/graphing/components/axis.js","containers/circuitDevices/graphing/components/area.js","containers/circuitDevices/graphing/components/tools.js","containers/circuitDevices/graphing/components/legend.js","containers/circuitDevices/graphing/full_device_graph.js","containers/circuitDevices/graphing/device_graph_component.js","containers/circuitsMonitoring/graphing/testDevices.js","containers/circuitsMonitoring/graphing/graphing_dash.js","components/mfa/mfaAdminTool.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","scripts/helper.js","components/spinners.js","store/reducer.js","store/redux.js","../public/data/UISettings lazy /^/.*$/ groupOptions: {} namespace object","requests/config.js","scripts/settings.js","scripts/session.js","store/actions.js","store/store.js","containers/login/resetPassword.js","containers/login/mfaEmailValidateRedirect.js","images/momentum_logo_white.svg","images/warn-icon.png"],"names":["arraysEqual","a","b","length","i","Priority","Weight","IsAssigned","checkBillingAccount","account","sessionStorage","userEnterpriseNumber","userType","userTypeId","sp","serviceProviderName","startsWith","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","NavBar","toggleSidebar","action","actions","store","dispatch","finalLogo","customLogoSmall","logo","src","alt","connect","isLoading","reducer","themes_loaded","Voicemail","checked","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","e","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","JSON","stringify","headers","config","post","response","ok","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","show","onHide","Header","closeButton","Title","Body","Footer","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","disabled","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","result","getModel","AudioFileList","NoAnswerAnnouncementSelection","saveStatus","saving","savingMessage","SavingMessage","fontSize","textAlign","error","statusMessage","statusClass","okBtnClass","hideOkBtn","parentCallBack","messageDeposit","fetchUserVoiceMessagingUserGetGreeting","voipSwitch","userid","accountNumber","directoryNumber","serviceNumber","pBXUserID","path","apiCalls","userGetGreeting","err","modalBody","handleInputChange","handleSubmit","VoipSwitch","requestData","dto","uvmg","ErrorMessage","openModal","closeModal","marginTop","disableMessageDepositField","extendedAwayDisableMessageDepositField","defaultChecked","dialogClassName","modalContent","color","LeftMargin","VoicemailBlockModal","handleYes","renderResult","errorComponent","successComponent","countWithError","saveResult","BlockedNumberAlreadyExist","ErrorBlocking","countSuccess","Blocked","rowNumber","BlockedNumber","Criteria","errorMessage","showError","prevProps","confirmationMsg","showSuccess","showLoading","SuccessMessage","SuccessTransitionClass","SavingMessageControl","loadingMessage","SaveButton","VoicemailDeleteModal","PinResetModal","GeneratePin","returnString","newNumber","Math","floor","random","indexOf","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","float","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","location","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","emulatedUser","toLowerCase","window","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","IsWholesale","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","backdrop","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","mfa","ekg","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","PayModal","setSchedule","setStep","step","recurValue","dataset","getStep","CCLogos","max","getSchedule","CR_MODAL","fetchEnterpriseCallRecordingPopUpCount","showCRModal","ShowedCount","saveEnterpriseCallRecordingPopUpCount","setItem","submitted","callRecordingModal","TCFlag","UserID","TC_MODAL","fetchEnterpriseTerms","showTCModal","fetchingData","fetchUserTerms","termsAndConditionsDisplay","modalStyles","marginRight","handleOpenModal","saveTermsAndConditions","storedUserRole","splashDisplay","E911MSAWs","E911MSARetail","termsAndConditionsModal","cngAltevaDctAccount","marginLeft","modalOrder","CallRecordingModalLoaded","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","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","CheckMkHostName","fetchActiveHosts","obj","tt","ResultDetail","ti","state_text","CircuitList","hostname","upCircuits","downCircuits","textDecorationLine","Admin","componentWillReceiveProps","hasDevices","ipTrunkingOnly","showFavServices","showActivityHistory","showStarredTicketingWidget","showQuickView","showDevices","showCallChart","showTicketingCountsWidget","transitionToCallLogDetails","favServices","activityHistory","starredTickets","quickView","callChart","ticketingCount","vmReport","isIpTrunkingOnly","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","getTFAUserData","phoneNumber","Key","Code","VerificationMethod","EnableOktaPush","OktaId","onSubmitAuthPinCode","onSendPushNotification","errorContent","sendEmailValidate","getMethod","IsOktaPushEnabled","showGrabEmailForm","isOkta","justifyContent","autoFocus","MfaAllowSms","alignItems","onKeyDown","enforceFormat","formatToPhone","replace","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","axisCrossingValue","BillingChart","PayManageModal","Masonry","require","Billing","showNoResultsMessage","InvoicePaid","toLocaleString","minimumFractionDigits","bill_stat","InvoiceDate","InvoiceName","EditContactCenterModal","ContactCenter","LocationAnnouncementRepositoryModal","AudioUpload","changeRecurs","handleAddAudioNumber","numberOfAudioCount","numberOfAudioLimit","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","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","keys","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","background","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","Error","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","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","document","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","LineTypeServices","CurrentPartNum","NewList","CurrentPartDesc","restrictedUsocs","restrictedItem","origOption","updateNewLineType","itmInArray","originalItm","validationMessages","delIdx","show_trm_num_textbox","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","children","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","getMonth","getDate","getFullYear","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","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","DueDate","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","AgentDefaultSettingModal","changeEnableGuardTime","changeForceUnavailable3","checkForceUnavailable3","enableGuardTime","AgentUnavailableCodesModal","CallDispositionCodesModal","CenterRoutingPoliciesModal","AcceptanceModal","RemoteOfficeModal","PreAlertModal","CustomRingbackModal","VirtualNumberModal","EnterpriseSettings","EnterpriseSettingsAlt","FQDNSetupModal","showClearForm","validFqdn","delayedValidation","showInvalidFqdnClass","verifyValidFqdnClass","saveOnEnter","saveNewFqdn","updatedFqdns","removeFqdn","removedFqdn","closeSavingMessage","fqdnsTable","fqdnRow","displayTimedStatus","timer","IframeSettings","updatePageIframe","setInterval","submitform","iframeChecker","ReactDom","findDOMNode","iframe","contentDocument","clearInterval","getiFrameTitle","iframekey","getEnterpriseSetting","getGroupSetting","showBillingMessage","user","getAccount","actionUrl","locationAccNumber","VendorId","loggedIn","Support","archive","callCenter","collaborate","incontact","ivr","receptionist","skypeForBus","voiceAnalytics","Training","CallLogsAll","CallStatus","handleCallCategory","exportSansayBtn","trunkId","exportCallLogs","exportBsBtn","exportFaxBtn","newParams","VoiceMailAll","header","apiMethods","AnnouncementRepositoryModal","deleteable","deleteRow","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","ClientAppModal","VoicemailToTextModal","DistributionListModal","handleAddList","numberOfListCount","numberOfListLimit","listCountReachLimit","VoicemailSettingsRow","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","hasContactCenter","hasTrunking","hasMacd","permissionsRetrieved","buildSubscriberPermissions","hasAtLeastOneAdminLink","accNum","permissions","AllowMACDs","NEPSSettings","NepsPermitted","TicketingPermission","HasCallRecordingMenu","HasContactCenter","buildPermissions","permsObj","MACDSettings","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","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","includes","callRecordingLink","webExLink","circuitsMonitioringLink","circuitDevicesLink","circuitMapLink","mfaAdminTool","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","messageObj","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","homePageUrl","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","bsSize","closeLabel","AffectedServicesModal","fetchServiceList","CombinedTypes","serviceList","savedServices","selectService","SelectServiceCell","ExtensionCell","assignServices","affectedServices","AffectedCircuitsModal","CircuitId","CircuitName","RedirectedFromCircuitsSaved","Circuits","FullCircuits","circuitsList","savedCircuits","DataLinkCell","NameCell","assignCircuits","object","affectedCircuits","circuits","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","TypeListOptions","CategoryOptions","SelectedLocation","formGroupDropDown","SelectedMixedType","renderMandatorySymbol","selectOptions","SelectedContact","ShowTextBoxesForContactDetails","SelectedPriority","SelectedCategory","ContactName","ContactEmail","ContactPhone","SelectedCommMethod","handleTicketSubject","TicketSubject","handleTicketSubjectRFC","handleTicketDescription","TicketDescription","renderModelButtons","redirectedFromCircuitsList","storeAffectedCircuitsRedirectedFromCircuits","renderContent","newTicketContent","rfc","ticketCircuitSubject","locationRfc","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","submissionMsg","enterpriseTrunkUpdateBtns","utility","rowItems","original","right","hasEntTrunking","ManageEntTrunkGroup","fetchDepartments","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","useEffect","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","msgDetails","testingCredentials","verify","verified","verifyCredentials","Usrn","EnterpriseTrunkId","checkDisabledBtn","MSTeamsConfigCopy","PasswordLengthExceeded","PstnPrimaryGateway","PstnSecondaryGateway","MsTeamsMaxConcurrentSessions","saveAndContinue","textDecoration","selectTrunk","targetTrunk","Trunks","fetchMSTeamsConfigInfo","configSaving","LoginName","removeTabRedirectOnSave","verifyMsgDetails","Proceed","MsTeamsUserMenu","giveStateData","StatusCell","customClassName","RoutingStatus","columnWidthSm","ConfigProcessCompleted","showStatusLegend","TeamsUsers","enterprise","TeamsId","TeamsUserId","sendErrorMessage","apiResponse","StatusDscription","convertToLocal","dateTime","convertedLocalTime","hourOffset","getTimezoneOffset","setHours","getHours","MsTeamsSetupDomain","createDomainBtn","wizardMsg","IsM365DomainCreated","DomainCreatedOn","DomainSetupResponse","showDomainInfo","createAzureDomain","userName","trunkName","formatDsRes","parsedResponse","IsVerified","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","VoiceRoutes","VoiceRoutesList","nameColWidth","VoicePolicy","VoicePoliciesList","derivedMatchingObject","VoiceRoutePolicy","directMatchingObject","UserBtn","UsersCount","MsTeamsTenantInfo","VOICETABS","voiceRoutes","voicePolicy","MsTeamsMain","fetchTrunks","fetchDomainList","DomainList","fetchMSTeamsUserList","fetchListingsForVoicePolicies","msteamstabName","TabRedirect","btnField","AllowManualDerivedRoutingMigration","proceedToNextTab","checkStatus","showDirectRoutingModal","DNSTicketDetails","SBCTicketDetails","showUserList","prevState","TNSearch","serviceId","street","city","IsResourceAccount","ManageMsTeamsUser","EnterpriseMSTeamsConfigId","SipProxyAddress","ShowInAddressList","SyncToTeams","TeamsGroupIds","UsageLocation","UserState","UserStateChangedOn","configureDR","SubmissionLoading","updatedUser","showDRModal","modalBtns","webexemailfilter","Webex","searchEmail","parentToChildStateAccess","SubmittedId","DuplicateError","fetchWebexData","syncing","lastSyncedDate","WebexEmailValidation","gridId","updateWebexData","gridItem","submissionError","gridToolBar","syncWithWebex","getElementById","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","String","WebExEmail","SubmissionCell","failureMessage","DropDownFilter","setShowModal","NIDMAC","NotificationEmail","SpeedDownstream","SpeedUpstream","TermInMonth","setCircuitList","filteredCircuitList","setFilteredCircuitList","setLoading","statusLoading","setStatusLoading","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","domain","range","nice","Type","deviceName","DeviceName","node","Node","color1","color2","axisLabel","xAxis","tickFormat","yAxis","ticks","call","selectAll","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","thresholdValue1","thresholdValue2","direction","legendMeasurement","outlierColor","ExpandDeviceChart","DeviceChart","upperCaseFirstLetter","charAt","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","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","size","formattedNum","getMinutes","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","createElement","propTypes","number","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","Boolean","handleLoginEmailChange","formInput","pattern","loginForm","loginContainer","isInvalidUser","ForgotPassword","queryParams","URLSearchParams","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","rejected","RPXLoginFail","onIdle","updateToken","tokenUpdater","rpxLogin","faviconApplied","loadingLogoAltText","loadingAccessToken","isMspLogin","validMfa","beta_access_denied","requestToken","tokenIsValid","loginErrorHTML","RPXLogo","primaryUrl","mapDispatchToProps","ReactDOM","StrictMode","navigator","serviceWorker","ready","registration","unregister","customHeaders","isJson","fetch","json","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","atLoginPath","atSupportLinksPath","redirectToLogin","urlIncludes","getDomain","isRetailDomain","isDigitalServicesDomain","IsWholesaleDomain","isWholesaleDomain","isWholesaleUser","getJSONFilePrefix","getProductionUrl","numberWithDelimiter","isBlank","sortField","blanksAfterZ","fieldBlanks","fieldNonBlanks","StripHtml","DOMParser","parseFromString","textContent","filterNestedObject","param","some","c","devicePerms","showEditGroupFqdnBtn","Setup_GroupLevelFQDN","showEditGroupVlanBtn","Set_GroupVLANID","convertToLocalTime","dateVal","isDST","offsetDiffMin","convertedVal","setMinutes","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","DataLoadingSpinner","hasTrunk","QuickViewLocationAccountNumber","cl_call_type","cl_status_type","cl_call_category","cl_from_date","cl_to_date","cl_date_type","reducers","combineReducers","actionType","TokenObj","decodedToken","jwtDecode","expirationOnCurrentToken","exp","setUTCSeconds","webpackAsyncContext","req","__webpack_require__","ids","t","module","exports","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","tfp","given_name","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","searchDelay","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","month","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.ac99b93c.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\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\nexport 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 (arr[i].Priority < 1 || arr[i].Priority > 10 || Number.isInteger(arr[i].Priority) === false) {\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\nexport 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 (account.startsWith(\"390\") && userType === \"1107\" && (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\nexport 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\nexport const grabLocations = async () => {\r\n let list = await JSON.parse(sessionStorage.locationList);\r\n return list;\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;","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';\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 {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","export default \"data:image/gif;base64,R0lGODlhgQFDAPcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAALu7S+PjXP//e83Med7ehP39mLu7cPn5mOzslN/fmdHRlrGxhf/6Zv/6bP/9lf/5kf/7mYiCNv/3mdLDVP3teP/oZv/uiEM9I//smf/gfYl8U97Mmf/hmf/Sa//ai76YTP/Mg+7Mmf/Umf/QlP/QmeS2icyjev///yH5BAEAAP8ALAAAAACBAUMAAAj/AAUgGIDgmoAEAgkevHKtBcMrCa4ZbCFRosOGBQMlYNiiYMWDIAeKHJAQQUiCChEiHGlyJUmXLEGibHnSJMqSIGGerJmyZE+eMVXiFCoy51CgPYnONFoUZlKfNJ1GrbkzKFSqSpsinSrVaNevTJfqzNrzqdOEBoUKTcu0RceZA1qsTOBWgNuBbum+PdgirFahUHta7atV8FOeJa2yQLl4YOMBLEA+joyQMOSEkzFLZrzZcefLCDN7Ds159NWsQP2KxWpXM2nHCi1Hhm06c2XMpUELEH356V+BrFd6PZqA8snHJQ16Tqk8KcOK0KNLn069uvXr2LNr3869u/fv4MOL/x9Pvrx5iRqpLr32tC9bsL/j+56v1ar8+qvt0/fLH7X/1PDlJyB+BKpGk34EGlYgWQfux2BwpxEnIYIKKmgghCOBZNlQbA2UHFwNJhjihWMBGKFV/WFIX4UjghXgVPelWOKMJzqoIow2WvWihf/ReB+PN5JYI46FiTTSNSy5xJZxXE1oo4/DIWhUYLNBlpttu3H2mm4jGYfll1q2ZppsuHlG22VnVgnmmJqlWSaaVpoZp268dfmZl2GSuaWaYa6pG5luurnnnZ/R9JhJpjUX2UzvBdYkhUQauOKPv0m12oM9Ohnik5peupVZEfoIYpQggqqjo5JGmilLpnpKaasxrv86KXMnKcmaob5R1ZeoU7mWpZx4AstfUSIepdioJUIKZEwxErtfsV01q5C0myLK5VIiLosti8YiixO1JlLIZG4mNZocqVKqZSKv3Kp7qou3wuqqp5iuay+8yZaq6lb8ukvvkKkKWe/Anz7K4rz7sisSe012mB9IhG5pbbB0hqnwrMbJ1ufGwjqVsa9+fiyomHOKXPKbakb8K5x8sjmyxo6Zk8A5LaCjFW8Um4wlzH+i7CvPLbOssp+4OquoALRmC62Elu6bbrcthooqWRCjppCAVatH04oJdZu1Ul1TjZBqMv1W9kHm8EMOP+gotLY59ahjDzvwxHPOQPDscxhCnmb/HdNNKI7dFeCG7fQf4X97aLZLQDV6W6NNuobOPuXoQ44+58RNOeXiZH6O5fqwY4/clXsOejn7qMP55eR0HncL6sQtTjlwC+B5C5mrMzvosatDkOexm+Ph2EVd7WxL5ojDeklxg+65APXAnXo9ny/PEtzCoy4A6/r0fvr0viMAN+bUxz23AJtbClwCm65vbUvfgFTP9ODQ0w483Ggz0DzuxONOOKhjWTnioTfj5OR9X8NRYlZzwLCURCfDM1HAFEeQwEFIAA77UKxyAg536KMc4kBHPdChvA+GcIQtSBs5HhPCBKADd5abHedE+ELhDUB5/ADh5G6oIRsqbx+t89lA/8ShjXM0LVXniMc2PgfCyrWOhjVTmwx1GD0YNjGGk6MizcxhwnJIMW1N/KIURWiOzFAvHPbw1EcGZo540EN0sSOj2hLmqHO441VOQ5iMoOYteJ1qg7ximGGWxMDb8EMbCZDHOxbpD6MocpH38IkgFvmOdUiSktsQnAD8QclGouQKlHyHIMImAEVC5CSTpKQ8BuAOdeCMUAjQBjg28g4sFAULlBxJKN8RSZBwUhAKSUcobenLd8gDIZzc5SoRQElbkgQBwlxHUYQpyp9VxCU7O8cjF3mFmgjTH8bbZSYhpkh5gIMcN7vSnRjDsYrV5krqHNRtXgaydlJMUQNgFIkCcf+NUyayFfJ4JE3kAVAvLFIoBA3oIkdCUC888iAm8UIrHPqOVnhDJPcIKDUjmMh3rGaR8nDoDAjSDnTARCJIUyD75CERLyRkkekg6Dv6QZCQBvQa3mDfQbzRHAGAVKQKmQFAVcINecRUmK24BzcqKg9BXGOZ75DIDNAiiJheY5QSGQBK1zghcsAjpg5tRTqm8o6xGuWqAfUCN1zC0pHaQx8Ii2vUeBUwWVWrrkEiisNslS8E8POU9wAoQbJRS5MENh0CIewp/SFYBCx1sQA9yGNFYlTJssKsLmHsMhVy2KsY0yn74FBzQqQ/LFwVoCKZ6UG2gdOmEBQcRWmFIFzyWZ//MJYV2YDROlrxDgTwNJPgmCQ0n4rTlbSiHwdh6QD46REMSuRMB/KqZVhKU+NQl07XGCmeWCoI2JaDHfzwFbOeabyfAOYsxdPKlIrkNz1Gq0I4EZC5Fkaqvz6kHvXgKTYcY0zI8NQbjXlHIAiCjWvsFzLvcCkLCowNygi4T/2tEii1ixlFcsM21TxTOKK3VYMIKB/lMCoLIqylfjJGEKN8zBWS+isBl+kdrODGOxU5DgGso6wC6Ed/39Hga0SSTPdAUocjktWoxaMeCVEkcokiytW0NilXnUk54CGUshisUpraI6vu+p8/9jHLKtkrSBxGE4YMWCTmCHIkB1LWgczA/8cgafMA3rzmAdQ2yCM1SW2bAkoZo4Sx/VRKbXVS0cL2BB/lQCnxfINIbtC0zTVp6iwFko5rvIMowjRKoZ2JAIbw9gpaqfQybWxp2RJknE9mSVn5wU8iOxdJhqEMPbqBkEq3QponMTACI8KKd4CzJSzlLa4R0A51WKZo7uzZyEIGS5bZU0P1hNg7p62boyXtKX9ViTZY8N/UykMgBc6zT5f53zh/OwH69RCkUaLjqxplG4vkLd8QwNIrdHsmj7R0U+6G0ncJgIApNWbVWBvohKRS1wIo8Fiv4VIBTLIV+s6GU+P9DogFGZgD6QdPJSKIpmR3KSy9xjbckVVFFwwd7f9oCSijilmftsIflV5KvJ9KEG60grcsH4g+4mFDIuVIrpzaMtB7pckj2vUgjmsN5BTCzzODpMA5Rdqd4cxms6o5zlanup2P6ctWsCLqUlEsMnk7ZziPxRuGponJB4UAcsAWJYMWQKUFsd+wKBIhEB/IU4XSD2zU8s3nXiqn/7sSqGf0GmNVSHEN/lRpxoO5z+0Jb/ZBjz9t49aRqfSAWZqyBHBjxeDkpyVZsNt1RAYfZbvW0vo6rXZd5XipUe+q2lusDC5MQA/56x2hHpoI/zfAgdjpk0e8Sm7jFPggGcfNTQ9LFyNA4TMQ9ei1lOHL4KPDEapHOBiT4Nb44xqs4Fj/gZFO9zcLYpzA1+9sHqx3ri8G8ZRRJGbgvBiWfnt/HeZUO/hR3o/TG6f34FTYQFM70VqVlhMfR3lDlyJe1oACcy8CgC6tciMMExaEVBT21U/4UHaRhBByRmdYZ1j+t3UIgWdwh1kE5WdEYlqJ92bRIQ9bxhBcdxDu4Fw2eCnmoA60xXXMJAi5pRqsgCSvVhEVpxIMkQ5vlmd2hlkMlxyjZlCCs3gRsVmxhH12UnQCoQ35gEpmF3LQgQ3rQ2nFxVIRiBAG9m9IVjTrlWw602w5ozJAA21pMldhuDgrg0/6xCADkADZhjQEZW/ChRKKdA/eEIgRxUuF2FsgQVAzgA2G/ygABtWIjbhkpYSEldZbredbqXZqQnVVgoNycCUQKJUa7VASAueBgiCJUYcArdCIQShuK0FzCLAN9xBVHTcAitSIj/hUI/GK2MBdZYhBF0UQDOcNhDgD8NBqkRcjA8APJcVjM+BUPEgQtMZS39B2bdeIEpEOtOZTqegNQ6UO7BBa/oJlW5ZS5OVzhpNlxhMv4fIvFCKKZcNXnTIQ+GBzFUGF2RCE21gS+CgRo+Z5EAeQ+BYdmPWPgvBrRmGCItENUWVRgmMOiFYlJgGBkJYAUQUdUecFFTEDudUTvGhn1wCRiRVygtCBSEeFwVURo4SAdSYd7rArwXhseSIA+pANBP/XeCSEOuzADeDAkdzADvYTDhx3BXXjDuKwDk7VePDADuIgh3BhMhlCh4hBlYxzRKvhevGRV7ZHjBKoFfugDfPQE9QDD0PZP/gjOuwQDmiZDfAwN2zpP+HQDkP5lj15lHNZl/cTlGfpP9zgDkPJDvFwl35pl3MJD/VwjfriF+RAD0i2M/XUMSvzhvN0MpU5GXTIegYTOvEwmG7UDuSTRWrDD3BjUqZJOaRJPR+EmjLzjlyWV/0Cm0YXL3gkI0lnhhhyEoHQdjl0Qugwmq0DRlMUQvwnPjm0D3K0Ni+0Q0+ZAOaQQr25NsGJQr95GavTm3IUQC0RfIChFTBDDlfwRnP/AzrwgBJmSZfgEA/wcD9zM5gggQ/asJ71I5jp2T/zGQ/goD/aIJjyaT/0gJbuiRD5MCBMRxWsMi4sEQgy05qUMhzQFnwyeSzy0YbyNJmRyYZu6IbPRm3GYW0tMVoB43QEc47lKC9RQ6JZtpuTMiV8uDlJ0XMgMZqoQw7kKDXRozZ6s2Wt6UIuNJov+hc9p6JC53M0IaSuGaL1gqKaqWVftkFDWjAPaHRi5h5aBhIqiqC6AUE9EYd6eFcoKqGQwZ2qYRxE4XTpZBrYBJVkiirOgqWHwhMUE3zCYhpXuBtiGqGgUo45IaeSx05tuhnS5i2QwkevOV5e6npLOl/ESKBT/3FmP+eAOmFe9TgrOJIeC8ITQupeQ4KoUyM1SioQlgqPnhKqr9lXVtqg5xWMT9qleEVXrJqkmioVFagUFwhffgWmNKEnJIMfnapJr8R2umGltKkgfNp5EdIXgToYP9MmfXqml9FeYvoqxlGgpnp0fLil34KtCWKsv2qhHDo08WShl6mmLxGMi4F0qsoo3cFP59Gu48Gu3gGv7jqv2yGv4GGv5YGv9Lqv/AoeX+mayyWbAGNXWrmiTmGkRyem1hqbg7qwrLebR0oWCCuwWjGxO1KoBis1FxuxAEuHyupH9EGqBYuqhMqkdCQSItqx6QGyq+epGduwIaGwYAYVKbuxX/8hsyxrskBCIzlLsB77qPNBFFEytDILSGHosEcbEugiJCaRqUETNMW6rNDlMxKjpuTaptsCJpaqtHoqtE4rRCfjJluLL0krHF0bLv/qLkN7tmbLFEsboUtbopUysUZLMGT7qTDLh7GZFRa7t/ayNP62qjWBsw+IsiYqqihbuF9mtxrbuJ/KuK8KgSNxG21rH8LKthPSGW4LJfChuULRGEZxpdsSKYR7jt6ZrZsyrTThE1mDrIsWGbS3XIbCtZ1ypcOSibcLsVUrt7RLhwjaGm0Lup8Lp7T7u3AbGsQbvLkCEwDQvM77vNAbvQAQCNJbvdZ7vdibvdprvdS7vdDbvd7/G77iO77cS77fa77XC77ou77s277u+77nC7/yy77qG771O7/4q733O777S7/5+78AHMDk278CXMAEjL0HXMD5m8D6i78MrMAQHMH+K8EQ/MDSa8EUvL4YXL7zu8EZ/MEg/LweHMLiO8LNa8IknL0oLMIOnMIu/MLxC8Pwi8IrLMMxjL41XL05bMM8jMM97L40/MMa3L47HL1FLMRIjMBJ7MMDvMT8S8Qt7MRSPMOBUMVWfMVYnMVavMVc3MVe/MVVbL5gPMZkXMZmfMVEfMZgPMVs3MZu/MZwHMdyPMd0XMd2fMd4nMd6vMd83Md+/MfPuwLhK8iAXMdWcMiEXMJW/1DI2ovIfbwCh7zIVoDBKxAIiczIb1zJhxwIi6y/nbwCl4zJ0VvJlpy/k0zCk2wFkAwAp7y9rSzKmczJrNy9kNzJh9y8qjzJsnzLudzJAADJwAzIkQy+tdy8xczKqozLtizIlnzLpJzMHyzLzjvJwazMhFzMlQzK0AzLU8zJ1DzLpDzLv2zJpMzMi1zFqTzOmxzKe8zJlYzL7jzLyezNu0y92VzO5PzNH5zNz5vKp6zJ7wzQoGzJ0szNUvzM3SvL2fzPpSzNslzP07vI/OzHmvzNBS3N/PzODH3OAy3JR0y+Ew3P4LzQBO3LpPzRBl3A/PzQgkzSJ3zOnfzQHh3R4//Mznlc0e580Z9cyqccxtM70OYsziCsyf1sz9Trz6pc0Klcyiktxfl81CUtz1XMzA0N0+LszwXNx9J8yqksyF0d0US91ORc1fIcwl090/fszR6tykD9yk2NxMG8yr98y9YMzbwsyXhtzOv8x9Ac13R9zI5c117t1bbsy/scycg81y2N2HMt0Y5t2G8Ny9qM0pFd2Za9xDZ90jZ92c672Xjs2Zz9wnS9za5M2W8c2KSdvSH9w6MN2tLr1qFtw+Wc2OEL2wadzqvtyXA91bTtvbYd2y980ontzGydy9psy82cyI4MzJCdx7rMzNqszKxczMut1p3N1Lk81FY83I6tzcD/DNjJPc3JzNzATcEEXcwKPdabzMk8Tc9ArdG83cfDDN9Bjc72bdQEDdU0jc6uDcDnfcvp3dG6/M1Y/d5QzdTlrcAkDeAebeBB3cruTc25rceIzN5Avd9o3dBeXdKQTL0+vc/N7M00LeFj/eAJvc4k3t8JDr8rLdPjDM4/PeInjtQdruJyzMtT/c4YLs4r3eDozOAh3OJWTd8xDtERTeP6vOIK3N5rneNGbeLrXNEtjeB8DOHqnc4QbdFR3dVBHcJMLtVjXdMyHuXePOU2ruTsK9eJXcurHMzJzMtsrtfELczXvNPUnddt3sud7ch0fdji3dh5PtjDHeeN7dho7r0BAQEAOw==\"","export default \"data:image/gif;base64,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\"","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?userId=${this.state.UserID}`;\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 { IsWholesale, userType, userTypeId, RPXLogin } = sessionStorage;\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 // let modalStyles = {\r\n // float: \"right\",\r\n // fontSize: \"12px\",\r\n // height: \"10px\",\r\n // marginRight: \"35px\"\r\n // //display: \"inline\"\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?userId=${this.state.UserID}`;\r\n let { TCFlag } = this.state;\r\n if (!TCFlag) {\r\n return;\r\n }\r\n let dto = { TCFlag };\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.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 )\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';\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\nimport TC_MODAL from '../modals/termsAndConditionsModal';\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 {}\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.isActive == true).length;\r\n let downCircuits = CircuitList.filter(itm => itm.isActive == false).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

    {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\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\r\n if (checkBillingAccount()) { // 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 \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\";\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 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 });\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, 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: phoneNumber,\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 && this.state.PBXUserID !== undefined\r\n && sessionStorage.enableMFA == \"true\") {\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 from 'react';\r\nimport { Chart } from '@progress/kendo-charts-react-wrapper';\r\n\r\nconst chartOptions = {\r\n // title: {\r\n // text: \"Site Visitors Stats \\n /thousands/\"\r\n // },\r\n legend: {\r\n visible: false\r\n },\r\n seriesDefaults: {\r\n type: \"column\"\r\n },\r\n series: [{\r\n name: \"Billing\",\r\n data: [27, 35, 14, 19, 34, 40, 10, 5, 2,],\r\n color: \"#00b5e1\"\r\n }],\r\n valueAxis: {\r\n line: {\r\n visible: false\r\n },\r\n axisCrossingValue: 0\r\n },\r\n categoryAxis: {\r\n categories: [new Date(\"01/05\"), new Date(\"01/06\"), new Date(\"01/07\"), new Date(\"01/08\"), new Date(\"01/09\"), new Date(\"01/010\"), new Date(\"01/11\")],\r\n line: {\r\n visible: false\r\n },\r\n labels: {\r\n }\r\n },\r\n tooltip: {\r\n visible: false,\r\n // template: \" #= series.name #: #= value # \"\r\n // template: \"${series.name} - ${value}\"\r\n }\r\n};\r\n\r\n\r\n\r\n\r\nconst BillingChart = () => (\r\n\t
    \r\n\t\t\r\n\t
    \r\n)\r\n\r\nexport default BillingChart;","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 PayManageModal 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 \t\tManage Payments (only if payment setup)\r\n\r\n \r\n\r\n \r\n \r\n Manage Payments\r\n \r\n \r\n
    \r\n\t

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Earum omnis facere, ex quasi. Atque officiis distinctio, nulla officia perspiciatis dolores.

    \r\n \t
    \r\n \t\r\n\t\t\t
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default PayManageModal;\r\n","import React, { Component } from 'react';\r\nimport SuperLink from './../components/super_link';\r\nimport BillingChart from './billing_chart';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { fetchData } from './../requests/api_calls';\r\nimport PayModal from './modals/payModal';\r\nimport PayManageModal from './modals/payManageModal';\r\n\r\nvar Masonry = require('react-masonry-component');\r\n\r\nclass Billing extends Component {\r\n constructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n bill_stat: {\r\n\t\t\t\tCustomerName:\"\",\r\n\t\t\t\tCustomerAccountNumber:\"\",\r\n\t\t\t\tStreet1BILL:\"\",\r\n\t\t\t\tStreet2BILL:\"\",\r\n\t\t\t\tCityBILL:\"\",\r\n\t\t\t\tStateBILL:\"\",\r\n\t\t\t\tZipBILL:\"\",\r\n\t\t\t\tInvoiceID:\"\",\r\n\t\t\t\tInvoiceDate:\"\",\r\n\t\t\t\tInvoiceDueDate:\"\",\r\n\t\t\t\tInvoiceAmount:\"\",\r\n\t\t\t\tInvoicePaid:\"\",\r\n\t\t\t\tInvoiceName:\"\",\r\n\t\t\t\tInvoiceURL:\"\",\r\n\t\t\t},\r\n };\r\n }\r\n\tcomponentDidMount() {\r\n 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 if (data === null) {\r\n this.showNoResultsMessage(errorMsg);\r\n };\r\n });\r\n }\r\n\t\r\n loadData = (data) => {\r\n\t\tdata.InvoiceAmount = data.InvoicePaid? 0: data.InvoiceAmount.toLocaleString(undefined, { minimumFractionDigits: 2 });\r\n\t\tdata.InvoiceDueDate = (new Date(data.InvoiceDueDate)).toLocaleDateString();\r\n this.setState({bill_stat: data});\r\n }\r\n\r\n render() {\r\n return (\r\n\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\t
    \r\n\t\t\t\t\t\t\t

    Billing

    \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

    {this.state.bill_stat.CustomerName}

    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\tAccount Number: {this.state.bill_stat.CustomerAccountNumber}\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\tBilling Address:
    \r\n\t\t\t\t\t\t\t\t{this.state.bill_stat.Street1BILL}
    \r\n\t\t\t\t\t\t\t\t{this.state.bill_stat.CityBILL}, {this.state.bill_stat.StateBILL} {this.state.bill_stat.ZipBILL} \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\tEdit Billing Address\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\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
    \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\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

    Current Payment

    \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\tTotal Amount Due:\r\n\t\t\t\t\t\t\t\t

    ${this.state.bill_stat.InvoiceAmount}

    \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\tDue On:\r\n\t\t\t\t\t\t\t\t

    {this.state.bill_stat.InvoiceDueDate}

    \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\tPast Due:\r\n\t\t\t\t\t\t\t\t

    $0.00

    \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\tRecent Billing Activity:
    \r\n\t\t\t\t\t\t\t\tPrevious Balance: $165.75
    \r\n\t\t\t\t\t\t\t\tPayment - 901: 165.75
    \r\n\t\t\t\t\t\t\t\tTotal Balance Forward: $0.00\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
    \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\t

    Statements

    \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\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\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\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    Billing PeriodAmount DueStatusConfirmationView Bill
    08/02 - 9/01$166.75Paid5AGD153492
    08/02 - 9/01$166.75Paid5AGD153492
    08/02 - 9/01$166.75Paid5AGD153492
    08/02 - 9/01$166.75Paid5AGD153492
    08/02 - 9/01$166.75Paid5AGD153492
    08/02 - 9/01$166.75Paid5AGD153492
    08/02 - 9/01$166.75Paid5AGD153492
    \r\n\t\t\t\t\t\t\t
    \r\n\t\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
    \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\t

    Balance History

    \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\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\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
    \r\n\t\t\t\r\n\t\t
    \r\n );\r\n }\r\n}\r\n\r\n\r\nexport default Billing;","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 };\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 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 //default maxlength is 524288\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 }\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 if (!changedItems || changedItems.length === 0) 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 === \"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.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 \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 \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;\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\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 _ from 'lodash';\r\n\r\nclass AgentDefaultSettingModal 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.changeEnableGuardTime = this.changeEnableGuardTime.bind(this);\r\n this.changeForceUnavailable3 = this.changeForceUnavailable3.bind(this);\r\n this.state = { showModal:false, checkForceUnavailable3:false, enableGuardTime:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({...this.state, showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({...this.state, showModal: true });\r\n }\r\n\r\n changeEnableGuardTime(event){\r\n this.setState({...this.state, enableGuardTime: event.checked });\r\n }\r\n\r\n changeForceUnavailable3(event){\r\n this.setState({...this.state, checkForceUnavailable3: event.checked });\r\n }\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 Agent Default Settings\r\n \r\n \r\n \r\n \r\n Agent Default Settings\r\n \r\n \r\n
    \r\n

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laudantium magni id aliquid, sint blanditiis delectus esse ullam, eligendi recusandae ratione tempore ipsa illum error hic.

    \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
    \r\n \r\n \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\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\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, { 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 _ from 'lodash';\r\n\r\nclass AgentUnavailableCodesModal 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.changeEnableGuardTime = this.changeEnableGuardTime.bind(this);\r\n this.changeForceUnavailable3 = this.changeForceUnavailable3.bind(this);\r\n this.state = { showModal:false, checkForceUnavailable3:false, enableGuardTime:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({...this.state, showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({...this.state, showModal: true });\r\n }\r\n\r\n changeEnableGuardTime(event){\r\n this.setState({...this.state, enableGuardTime: event.checked });\r\n }\r\n\r\n changeForceUnavailable3(event){\r\n this.setState({...this.state, checkForceUnavailable3: event.checked });\r\n }\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 Agent Unavailable Codes\r\n \r\n \r\n \r\n \r\n Agent Unavailable Codes\r\n \r\n \r\n
    \r\n

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laudantium magni id aliquid, sint blanditiis delectus esse ullam, eligendi recusandae ratione tempore ipsa illum error hic.

    \r\n
    \r\n \r\n Enable Agent Unavailable 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 Force use of Agent Codes Unavailable\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    ActiveCodeDescriptionEdit
    \r\n \r\n Active1Lorem ipsum dolor sit amet, consectetur adipisicing eli\r\n \r\n
    \r\n
    \r\n Delete Code\r\n
    \r\n \r\n Activate 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 Active1Lorem ipsum dolor sit amet, consectetur adipisicing eli\r\n \r\n
    \r\n
    \r\n Delete Code\r\n
    \r\n \r\n Activate 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\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, { 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 _ from 'lodash';\r\n\r\nclass CallDispositionCodesModal 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({...this.state, showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({...this.state, 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 Codes\r\n \r\n \r\n \r\n \r\n Call Disposition Codes\r\n \r\n \r\n
    \r\n

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laudantium magni id aliquid, sint blanditiis delectus esse ullam, eligendi recusandae ratione tempore ipsa illum error hic.

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    ActiveCodeDescriptionEdit
    \r\n \r\n Active1Lorem ipsum dolor sit amet, consectetur adipisicing eli\r\n \r\n
    \r\n
    \r\n Delete Call Disposition Code\r\n
    \r\n \r\n Activate Call Disposition 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 Active1Lorem ipsum dolor sit amet, consectetur adipisicing eli\r\n \r\n
    \r\n
    \r\n Delete Call Disposition Code\r\n
    \r\n \r\n Activate Call Disposition 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\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 { Switch } from '@progress/kendo-inputs-react-wrapper';\r\nimport _ from 'lodash';\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 = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({...this.state, showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({...this.state, 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 Contact Center Routing Policies\r\n \r\n \r\n \r\n \r\n Contact Center Routing Policies\r\n \r\n \r\n
    \r\n

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laudantium magni id aliquid, sint blanditiis delectus esse ullam, eligendi recusandae ratione tempore ipsa illum error hic.

    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Contact Center NamePriority
    \r\n Call Center 123322\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\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","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\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\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 _ 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\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 from 'react';\r\nimport DepartmentModal from './modals/departmentModal';\r\nimport EnterpriseDirectoryModal from './modals/enterpriseDirectoryModal';\r\nimport ScheduleModal from './modals/scheduleModal';\r\nimport AgentDefaultSettingModal from './modals/agentDefaultSettingModal';\r\nimport AgentUnavailableCodesModal from './modals/agentUnavailableCodesModal';\r\nimport CallDispositionCodesModal from './modals/callDispositionCodesModal';\r\nimport CenterRoutingPoliciesModal from './modals/centerRoutingPoliciesModal';\r\nimport AnywhereModal from './modals/anywhereModal';\r\nimport GroupFqdnModal from './locations/modals/groupFqdnModal';\r\nimport RemoteOfficeModal from './modals/remoteOfficeModal';\r\nimport PreAlertModal from './modals/preAlertModal';\r\nimport CustomRingbackModal from './modals/customRingbackModal';\r\nimport VirtualNumberModal from './modals/virtualNumberModal';\r\n\r\nconst EnterpriseSettings = () => (\r\n \t
    \r\n\t\t
    \r\n\t\t\t

    Enterprise Settings

    \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
    \r\n\t\t
    \r\n\t
    \r\n)\r\n\r\nexport default EnterpriseSettings;","import React from 'react';\r\nimport DepartmentModal from './modals/departmentModal';\r\nimport ScheduleModal from './modals/scheduleModal';\r\nimport AgentDefaultSettingModal from './modals/agentDefaultSettingModal';\r\nimport AgentUnavailableCodesModal from './modals/agentUnavailableCodesModal';\r\nimport CallDispositionCodesModal from './modals/callDispositionCodesModal';\r\nimport CenterRoutingPoliciesModal from './modals/centerRoutingPoliciesModal';\r\n\r\nconst EnterpriseSettingsAlt = () => (\r\n \t
    \r\n\t\t
    \r\n\t\t\t

    Enterprise Settings

    \r\n\t\t\t
    \r\n\t\t\t\t
    Departments Edit Settings
    \r\n\t\t\t\t
    Enterprise Directory Edit Settings
    \r\n\t\t\t\t
    Time Schedules Edit Settings
    \r\n\t\t\t
    \r\n\t\t\t

    Contact Center

    \r\n\t\t\t
    \r\n\t\t\t\t
    Agent Default Settings Edit Settings
    \r\n\t\t\t\t
    Agent Unavailable Codes Edit Settings
    \r\n\t\t\t\t
    Call Disposition Codes Edit Settings
    \r\n\t\t\t\t
    Contact Center Routing Policies Edit Settings
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n)\r\n\r\nexport default EnterpriseSettingsAlt;\r\n\t\t\t\t// ","export default __webpack_public_path__ + \"static/media/momentum_logo.feb8e192.svg\";","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, { 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 { fetchData } from \"./../requests/api_calls\";\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\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 }\n componentWillReceiveProps() {\n if (!this.state.loading)\n this.setState({ loading: true })\n }\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 }\n else if (this.state.loading) {\n this.setState({ loading: false })\n }\n }\n\n componentDidMount() {\n var user = config.clientApp.getAccount();\n let iframekey = this.props.match.params.page;\n if (iframekey === 'MSP_PAYMENT' && process.env.REACT_APP_BILLING_MESSAGE && process.env.REACT_APP_BILLING_MESSAGE !== '')\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\n }, 2000);\n } catch (e) {\n }\n clearInterval(timeout);\n }, 1000);\n\n\n }\n\n handleSubmit() {\n console.log(\"handleSubmit\");\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 if (this.state.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 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 // console.log(this.props.match.params.page)\n if (this.props.match.params.page === \"MSP_ENTERPRISE\") {\n return
    \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\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\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 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 } 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\nimport * as apiCalls from \"../../requests/api_calls\";\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 };\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 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 });\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 console.log(\"build permissions...\");\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 await this.setState({\r\n permissions: data,\r\n hasMacd: data.AllowMACDs == 1 ? true : false,\r\n hasDevices: data.NEPSSettings.NepsPermitted,\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 // 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.permissions.AllowMACDs) {\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 (!process.env.REACT_APP_BILLING_MESSAGE ||\r\n process.env.REACT_APP_BILLING_MESSAGE === \"\")\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 && 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 } 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 val = this.ShowCallRecordingLink();\r\n if ((val === true || val === \"true\") &&\r\n (sessionStorage.hasCallRecordingMenu === \"true\" ||\r\n sessionStorage.hasCallRecordingMenu === true)\r\n )\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.ekg, \"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.ekg,\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 \"/circuit-map\",\r\n icons.ekg,\r\n \"Circuit Map\"\r\n )\r\n }\r\n }\r\n\r\n mfaAdminTool = () => {\r\n if (sessionStorage.enableMFA === \"true\" &&\r\n (sessionStorage.userTypeId === \"1107\" ||\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 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 \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.contactCenterLink()}\r\n {this.billingLink()}\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.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"VOICE\" &&\r\n this.circuitDevicesLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"VOICE\" &&\r\n this.circuitMapLink()} */}\r\n {this.mfaAdminTool()}\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 {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 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 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 ];\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 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 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\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 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 const rfc = this.state.redirectedFromCircuitsList !== null ? true : false;\r\n if (rfc) {\r\n var circuitName = this.state.redirectedFromCircuitsList[0].CircuitName;\r\n var ticketCircuitSubject = circuitName + '- Trouble Ticket'\r\n var locationRfc = this.state.redirectedFromCircuitsList[0].SelectedLocation;\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.formGroupDropDown('Contact', 'Contact', this.state.SelectedContact, this.state.ContactOptions)}\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 } = this.state;\r\n if (this.state.TicketDescription === \"\") {\r\n this.setState({ submittedTicket: false, ticketSubFailed: true });\r\n }\r\n let apiPath = 'admin/CreateTicket';\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 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 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 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 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}","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 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 };\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 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 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 {MSTeamsConfig.ConfigProcessCompleted ? : 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 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 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
    {this.gridContent()}
    \r\n {this.submissionMsg()}\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 this.cardContent();\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 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 { 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\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 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 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.state.routingType == \"Direct Routing\" ? this.btnField(\"SBC Configuration\", \"sbc\") : null} */}\r\n {this.state.routingType == \"Derived Routing\" ? this.btnField(\"Setup Temp Users\", \"temp\") : null}\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 \"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 } 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\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: \"isActive\", dir: \"desc\" }],)\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 = \"dot dot-error\";\r\n if (props.dataItem.isActive) {\r\n customClassName = \"dot dot-success\";\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, 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 [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, hasRendered]);\r\n\r\n const drawViz = () => {\r\n const margin = { top: 10, right: 30, bottom: 20, left: 50 };\r\n const width = 800;\r\n const height = 200;\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.value);\r\n const minValue = d3.min(data, d => d.value !== '' && d.value !== null ? +d.value : 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.date;\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 data: data,\r\n data1: data1,\r\n data2: data2,\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: \"#44576f\",\r\n color2: \"#1e93b0\",\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, } = 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})`) // change this line\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 // Set the y-axis text\r\n const yAxisText = () => {\r\n if (type === \"avg\") {\r\n return \"Average Bandwith (Mbps)\";\r\n } else if (type === \"min\") {\r\n return \"Minimum Bandwith (Mbps)\";\r\n } else {\r\n return \"Maximum Bandwith (Mbps)\";\r\n }\r\n }\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(yAxisText())\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, } = options;\r\n if (summary && summary.length > 0) {\r\n // Define the threshold value\r\n const thresholdValue1 = d3.quantile(data1.map(d => parseFloat(d.value)), 0.95);\r\n const thresholdValue2 = d3.quantile(data2.map(d => parseFloat(d.value)), 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.value !== null; }) // define the data points to include\r\n .x((d) => { return x(d.date); })\r\n .y((d) => { return y(d.value); })\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\", \"url(#gradient2)\")\r\n .attr(\"stroke-width\", 2.5)\r\n .attr(\"d\", d3.line()\r\n .defined((d) => { return d.value !== null; }) // define the data points to include\r\n .x((d) => { return x(d.date); })\r\n .y((d) => { return y(d.value); })\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(thresholdValue1) / height, color: \"violet\" },\r\n { offset: y(thresholdValue1) / 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 // Add gradient2 to the area with data2\r\n const gradient2 = svg\r\n .append(\"linearGradient\")\r\n .attr(\"id\", \"gradient2\")\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(thresholdValue2) / height, color: \"#05fc58\" },\r\n { offset: y(thresholdValue2) / height, color: color2 }\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 } = 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.date);\r\n })\r\n .attr(\"cy\", (d) => {\r\n return y(d.value);\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\", xPos + margin.left - 80 + \"px\")\r\n .style(\"top\", yPos + margin.top - 10 + \"px\")\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__.value}

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

    Direction: ${d.target.__data__.direction}
    `\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 } = 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: ' + 700 + 'px;');\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 = ['', 'Host', '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 for (let i = 0; i < summary.length; ++i) {\r\n if (summary[i]) {\r\n let color = i === 0 ? color1 : color2;\r\n let device = deviceName && deviceName !== \"\" ? deviceName : node;//props.HostName;\r\n let legendMeasurement = i === 0 ? \"Throughput Received\" : \"Throughput Transmitted\";\r\n let legendField = `latency (${type})`;\r\n let outlierColor = i === 0 ? \"violet\" : \"#05fc58\";\r\n //let threshold = i === 0 ? thresholdValue1 : thresholdValue2;\r\n tr = tbody.append('tr');\r\n tr.append('td').append('div').attr('style', 'background-color: ' + color + ';width: 8px; height: 8px; vertial-align: middle;');\r\n tr.append('td').text(device);\r\n tr.append('td').text(legendMeasurement)\r\n // tr.append('td').text(legendField);\r\n tr.append('td').text(summary[i].min + \" Mbps\");\r\n tr.append('td').text(summary[i].max + \" Mbps\");\r\n tr.append('td').text(summary[i].last + \" Mbps\");\r\n tr.append('td').append('div').attr('style', 'background-color: ' + outlierColor + ';width: 8px; height: 8px; vertial-align: middle; border-radius: 50%');//.text(threshold);\r\n }\r\n }\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 ExpandDeviceChart 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 Type: this.props.Type,\r\n AggWindow: this.props.AggWindow,\r\n Node: this.props.Node\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 AggWindow = \"D\";\r\n if (value == \"-7d\") {\r\n AggWindow = \"W\";\r\n } else if (value == \"-30d\") {\r\n AggWindow = \"M\";\r\n } else if (value == \"-365d\") {\r\n AggWindow = \"Y\";\r\n } else {\r\n AggWindow = \"D\"; // FOR NOW CHANGED TO WEEK AGGREGATE WINDOW, AS NO DATA IN D (5 minute increments)\r\n }\r\n //\r\n await this.setState({ loading: true, DateRange: value, AggWindow: AggWindow });\r\n await this.props.updateGraphUrl(value, AggWindow, this.state.Type);\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.AggWindow !== \"D\" ?\r\n
    \r\n {\r\n let { value } = e.target;\r\n let AggWindow = \"D\";\r\n if (value == \"AVG\") {\r\n this.setState({ Type: 'avg' });\r\n }\r\n else if (value == \"MIN\") {\r\n this.setState({ Type: 'min' });\r\n } else {\r\n this.setState({ Type: 'max' });\r\n }\r\n await this.setState({ loading: true, Type: value });\r\n await this.props.updateGraphUrl(this.state.DateRange, this.state.AggWindow, this.state.Type);\r\n await this.setState({ loading: false });\r\n }}\r\n value={this.state.Type}\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 } 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 { DataLoadingSpinner } from '../../../components/spinners';\r\nimport { DataViz } from './d3-line-chart';\r\nimport { Modal } from 'react-bootstrap';\r\nimport ExpandDeviceChart from \"./full_device_graph\";\r\n\r\nexport default class DeviceChart extends Component {// thack@crownbattery.com 3100003461-01\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n DateRange: this.props.DateRange,\r\n Type: this.props.type,\r\n AggWindow: this.props.aggWindow,\r\n Node: this.props.Node\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.props.updateGraphUrl(this.state.DateRange, this.state.AggWindow, this.state.Type, this.state.Node);\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.Node !== this.props.Node\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 Node: this.props.Node\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 AggWindow = \"D\";\r\n if (value == \"-7d\") {\r\n AggWindow = \"W\";\r\n } else if (value == \"-30d\") {\r\n AggWindow = \"M\";\r\n } else if (value == \"-365d\") {\r\n AggWindow = \"Y\";\r\n } else {\r\n AggWindow = \"D\"; // FOR NOW CHANGED TO WEEK AGGREGATE WINDOW, AS NO DATA IN D (5 minute increments)\r\n }\r\n //\r\n await this.setState({ loading: true, DateRange: value, AggWindow: AggWindow });\r\n await this.props.updateGraphUrl(value, AggWindow, this.state.Type);\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.AggWindow !== \"D\" ?\r\n
    \r\n {\r\n let { value } = e.target;\r\n let AggWindow = \"D\";\r\n if (value == \"AVG\") {\r\n this.setState({ Type: 'avg' });\r\n }\r\n else if (value == \"MIN\") {\r\n this.setState({ Type: 'min' });\r\n } else {\r\n this.setState({ Type: 'max' });\r\n }\r\n await this.setState({ loading: true, Type: value });\r\n await this.props.updateGraphUrl(this.state.DateRange, this.state.AggWindow, this.state.Type);\r\n await this.setState({ loading: false });\r\n }}\r\n value={this.state.Type}\r\n >\r\n \r\n \r\n \r\n \r\n
    : null\r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \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
    {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, { useState, useEffect, Component } from 'react';\r\nimport * as apiCalls from \"../../../requests/api_calls\";\r\nimport DeviceChart from '../../circuitDevices/graphing/device_graph_component';\r\n\r\nexport default class DevicesComp extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n dashView: \"\",\r\n idx: this.props.idx,\r\n HostName: this.props.HostName,\r\n DeviceName: this.props.DeviceName,\r\n CircuitName: this.props.CircuitName,\r\n //\r\n avgData: [],\r\n avgDateRange: \"-1d\",\r\n avgAggWindow: \"D\",\r\n //\r\n maxData: [],\r\n maxDateRange: \"-1d\",\r\n maxAggWindow: \"D\",\r\n //\r\n minData: [],\r\n minDateRange: \"-1d\",\r\n minAggWindow: \"D\",\r\n type: \"\",\r\n //\r\n node: this.props.Node,\r\n }\r\n }\r\n\r\n packageData = (data, type, time, direction = \"\") => {\r\n let arm = [];\r\n let summary = null;\r\n try {\r\n if (data) {\r\n let graphData = JSON.parse(data.Body.GetGraphInfoForDeviceThroughputSplitRtaResult);\r\n let arr = JSON.parse(graphData.JSONData);\r\n summary = JSON.parse(graphData.JSONData).summary;\r\n if (time !== \"D\") {\r\n let parse = upperCaseFirstLetter(type);\r\n arr[`${parse}`].forEach((itm) => {\r\n if (itm) {\r\n if (direction === \"in\") {\r\n arm.push({ date: new Date(itm.x), value: itm.y, direction: \"Throughput Received\" });\r\n } else {\r\n arm.push({ date: new Date(itm.x), value: itm.y, direction: \"Throughput Transmitted\" });\r\n }\r\n }\r\n });\r\n } else {\r\n arr[`data`].forEach((itm) => {\r\n if (itm) {\r\n if (direction === \"in\") {\r\n arm.push({ date: new Date(itm.x), value: itm.y, direction: \"Throughput Received\" });\r\n } else {\r\n arm.push({ date: new Date(itm.x), value: itm.y, direction: \"Throughput Transmitted\" });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n } catch (error) {\r\n console.error(`packageData() error: ${error}`)\r\n }\r\n return [arm, summary];\r\n\r\n }\r\n\r\n fetchGraphData = async (range, host, aggregateWindow, type) => {\r\n let test = `${type}_br`\r\n if (aggregateWindow == \"D\") {\r\n test = \"bandwidth-received\"\r\n }\r\n let brPackage;\r\n let btPackage;\r\n let brSummary;\r\n let btSummary;\r\n // thack@crownbattery.com 3100003461-01\r\n let path = `admin/CircuitDevices/GetGraphInfoForDeviceThroughSplitRta?range=${range}&field=${test}&node=${this.state.node}&hostname=${host}&aggregateWindow=${aggregateWindow}`;\r\n await apiCalls\r\n .fetchData(path).then(data => {\r\n let packagedData = this.packageData(data, type, aggregateWindow, \"in\");\r\n brPackage = packagedData[0];\r\n brSummary = packagedData[1];\r\n })\r\n .catch(err => console.error(err));\r\n test = `${type}_bt`\r\n if (aggregateWindow == \"D\") {\r\n test = \"bandwidth-transmitted\"\r\n }\r\n path = `admin/CircuitDevices/GetGraphInfoForDeviceThroughSplitRta?range=${range}&field=${test}&node=${this.state.node}&hostname=${host}&aggregateWindow=${aggregateWindow}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n let packagedData = this.packageData(data, type, aggregateWindow, \"out\");\r\n btPackage = packagedData[0];\r\n btSummary = packagedData[1];\r\n })\r\n .catch(err => console.error(err));\r\n if (type == \"avg\") {\r\n this.setState({ avgData: [brPackage, btPackage], avgSumm: [brSummary, btSummary] });\r\n }\r\n if (type == \"max\") {\r\n this.setState({ maxData: [brPackage, btPackage], maxSumm: [brSummary, btSummary] });\r\n }\r\n if (type == \"min\") {\r\n this.setState({ minData: [brPackage, btPackage], minSumm: [brSummary, btSummary] });\r\n }\r\n };\r\n\r\n updateGraphUrl = async (dateRange, aggWindow, type) => {\r\n if (type == \"avg\") {\r\n await this.setState({\r\n avgDateRange: dateRange,\r\n avgAggWindow: aggWindow,\r\n type: type,\r\n avgData: [],\r\n });\r\n this.fetchGraphData(this.state.avgDateRange, this.state.HostName, this.state.avgAggWindow, type, this.state.node);\r\n }\r\n if (type == \"max\") {\r\n await this.setState({\r\n maxDateRange: dateRange,\r\n maxAggWindow: aggWindow,\r\n type: type,\r\n maxData: [],\r\n });\r\n this.fetchGraphData(this.state.maxDateRange, this.state.HostName, this.state.maxAggWindow, type, this.state.node);\r\n }\r\n if (type == \"min\") {\r\n await this.setState({\r\n minDateRange: dateRange,\r\n minAggWindow: aggWindow,\r\n type: type,\r\n minData: [],\r\n });\r\n this.fetchGraphData(this.state.minDateRange, this.state.HostName, this.state.minAggWindow, type, this.state.node);\r\n }\r\n }\r\n\r\n displayGraph = () => {\r\n switch (this.state.type) {\r\n case \"max\":\r\n return (\r\n \r\n )\r\n case \"min\":\r\n return (\r\n \r\n )\r\n default:\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return this.displayGraph();\r\n }\r\n}\r\n\r\nfunction upperCaseFirstLetter(string) {\r\n return string.charAt(0).toUpperCase() + string.slice(1);\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\nimport 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 console.log(\"updateGraphUrl\", dateRange, type, aggWindow, measurement)\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 { 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 billing from \"./../billing\";\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 EnterpriseSettingsAlt from \"./../enterprise_settings_alt\";\r\nimport momentumLogo from \"./../../images/momentum_logo.svg\";\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} 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\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 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 (sessionStorage.enterpriseType !== \"DATA\") {\r\n if (isNewSession() || checkBillingAccount()) {\r\n this.props.history.push(homepage);\r\n }\r\n // } else {\r\n // this.props.history.push(\"/circuits-monitoring\");\r\n // }\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 {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.svg\";\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_white.svg\";\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_white.svg\";\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 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 });\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, 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: phoneNumber,\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.svg\";\r\nimport momentumLogoSidebar from \"./images/momentum_logo.svg\";\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 config.loginRPXUser(encryptedParams).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 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 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 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 * 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\t467,\n\t\t0\n\t],\n\t\"./DriveUC-UI-development.json\": [\n\t\t467,\n\t\t0\n\t],\n\t\"./DriveUC-UI-production\": [\n\t\t468,\n\t\t1\n\t],\n\t\"./DriveUC-UI-production.json\": [\n\t\t468,\n\t\t1\n\t],\n\t\"./DriveUC-UI-staging\": [\n\t\t469,\n\t\t2\n\t],\n\t\"./DriveUC-UI-staging.json\": [\n\t\t469,\n\t\t2\n\t],\n\t\"./MyDigitalServices-UI-development\": [\n\t\t470,\n\t\t3\n\t],\n\t\"./MyDigitalServices-UI-development.json\": [\n\t\t470,\n\t\t3\n\t],\n\t\"./MyDigitalServices-UI-production\": [\n\t\t471,\n\t\t4\n\t],\n\t\"./MyDigitalServices-UI-production.json\": [\n\t\t471,\n\t\t4\n\t],\n\t\"./MyDigitalServices-UI-staging\": [\n\t\t472,\n\t\t5\n\t],\n\t\"./MyDigitalServices-UI-staging.json\": [\n\t\t472,\n\t\t5\n\t],\n\t\"./Retail-CSS\": [\n\t\t473,\n\t\t6\n\t],\n\t\"./Retail-CSS.json\": [\n\t\t473,\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 = 219;\nmodule.exports = webpackAsyncContext;","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 { 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_white.svg\";\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_white.svg\";\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 __webpack_public_path__ + \"static/media/momentum_logo_white.aa6aa308.svg\";","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":""}