{"version":3,"sources":["images/m_logo.svg","utility/utility.js","components/global_search.js","constants/urls.js","components/ellipsisHeaderTooltip.js","components/mfa/tooltip.js","components/dropdown_menu.js","E911retail.pdf","E911WL.pdf","containers/login/modals/loginModals.js","containers/modals/termsAndConditionsModal.js","containers/navigation/navbar.js","containers/voicemails/voicemail.js","containers/modals/voicemailSettingsModal.js","containers/voicemailSettingsButton.js","containers/modals/manageGreetingsModal.js","containers/manageGreetingsButton.js","components/save_status.js","containers/voicemails/modals/messageDepositButton.js","containers/modals/voicemailBlockModal.js","containers/modals/voicemailDeleteModal.js","containers/voicemails/modals/pinResetModal.js","components/infopop.js","components/long_switch.js","containers/voicemails/card.js","components/bs_call_logs_tab.js","components/sansay_call_logs_tab.js","components/fax_call_logs_tab.js","containers/call_logs.js","containers/basic_features.js","containers/profile/modals/e911Modal.js","containers/profile_info.js","containers/applications.js","components/wordWrappedCell.js","containers/profile/modals/addEditUserContactModal.js","containers/user_contact_widget.js","containers/dashboard.js","containers/callRecording/voiceUserSettings.js","containers/callRecording/callRecordingUsers.js","containers/callRecording/callRecording.js","scripts/icons.js","components/service_selector.js","components/deviceStatuses.js","containers/modals/servicesChangePasswordModal.js","containers/modals/servicesResetSettingsModal.js","constants/filters.js","components/ServiceMACClickPop.js","components/macAddressCell.js","containers/services.js","containers/sips.js","components/super_link.js","images/credit-card-logos.png","containers/modals/payModal.js","images/check_one.gif","images/check_two.gif","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/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","CR_MODAL","fetchEnterpriseCallRecordingPopUpCount","apiCalls","showCRModal","ShowedCount","err","error","saveEnterpriseCallRecordingPopUpCount","response","ok","setItem","submitted","callRecordingModal","emulatedUser","show","onHide","backdrop","Header","Title","Body","Footer","TCFlag","UserID","TC_MODAL","fetchEnterpriseTerms","showTCModal","fetchingData","fetchUserTerms","termsAndConditionsDisplay","modalStyles","window","location","indexOf","float","fontSize","marginRight","marginTop","handleOpenModal","saveTermsAndConditions","path","storedUserRole","dto","JSON","stringify","splashDisplay","src","IsWholesale","E911MSAWs","E911MSARetail","termsAndConditionsModal","cngAltevaDctAccount","checked","e","marginLeft","disabled","modalOrder","CallRecordingModalLoaded","NavBar","toggleSidebar","action","actions","store","dispatch","finalLogo","customLogoSmall","logo","alt","connect","isLoading","reducer","themes_loaded","Voicemail","selected","handledSelectChanged","content","position","handlePlay","phone","datetime","handleDownload","handleShowSendModal","VoicemailSettingsModal","validateEmail","setting","email_is_valid","EmailValidator","email","validateEmails","emailsArray","split","cnt","handleShow","handleClose","changeForward","showModal","forwardValue","model","loading_error","voice_messaging","onHandleChangeOnOffValue","send_all_calls_to_vm","send_busy_calls_to_vm","send_unanswered_calls_to_vm","name","defaultValue","forward_to_email","processing","onHandleChangeForward","getForwardOption","notify_me_email_when_new_messages_arrive","onHandleChangeEmail","email_carbon_copy_message","transfer_on_0_to_phone_number","phone_number","onHandleChangePhone","placeholder","waiting_indicator","onHandleChangeWaitingIndicator","VoicemailSettingsButton","changeOnOffValue","updateSetting","changeEmailValue","api","changeWaitingIndicator","changePhoneNumber","handleSave","saving_loading","saving_show_success","PostData","AccountNumber","DirectoryNumber","isActive","alwaysRedirectToVoiceMail","busyRedirectToVoiceMail","noAnswerRedirectToVoiceMail","voiceMessageDeliveryEmailAddress","usePhoneMessageWaitingIndicator","sendVoiceMessageNotifyEmail","voiceMessageNotifyEmailAddress","sendCarbonCopyVoiceMessage","voiceMessageCarbonCopyEmailAddress","transferOnZeroToPhoneNumber","transferPhoneNumber","body","headers","config","post","saving_error_message","OnVMSettingChange","getNewState","getSaveButton","forwardToEmailValid","notifyMeEmailValid","emailCarbonCopyValid","enableSave","enable","click","getSaveMessage","transitionName","transitionAppear","transitionAppearTimeout","transitionEnter","transitionEnterTimeout","transitionLeave","forward_value","ServiceNumber","PBXUserID","outOfPrimaryZoneRedirectToVoiceMail","format","newState","toString","closeButton","busy_greetings","busy_greetings_personal_greetings","no_answer_greeting","no_answer_greetings_personal_greeting","alternate_no_answer_greetings_1_name","alternate_no_answer_greetings_2_name","alternate_no_answer_greetings_3_name","alternate_no_answer_greetings_1_audio","alternate_no_answer_greetings_2_audio","alternate_no_answer_greetings_3_audio","number_of_rings_before_greeting","auto_login_to_voice_portal_when_calling_from_my_phone","ManageGreetingsModal","changeAlternateName","alternate_obj","changeAlternateAudio","audio","audio_selected","handleChanges","newModel","Model","busy_greeting","alternate_1","alternate_2","alternate_3","auto_login","onHandleChangeModel","getBusyPersonalGreeting","audio_files","x","audio_name","is_group","getDropdownRequiredError","noAnswerUnavailable","getTexboxRequiredError","validate","requiredElem","audio_files_selection_enable","ManageGreetingsButton","getDefaultModel","manage_available","saving_enable","error_message","getAudioById","filtered","filter","IsModelValid","isValid","postData","BusyAnnouncementSelection","parseInt","BusyPersonalAudioFile","selectedAudio","AudioName","FileType","file_type","IsGroup","noAnswerAnnouncementSelection","NoAnswerPersonalAudioFile","GreetingName","NoAnswerNumberOfRings","VoicePortalAutoLogin","handleChangeState","getAudioFileID","audioFile","result","getModel","AudioFileList","NoAnswerAnnouncementSelection","saveStatus","saving","savingMessage","SavingMessage","textAlign","statusMessage","statusClass","okBtnClass","hideOkBtn","parentCallBack","messageDeposit","fetchUserVoiceMessagingUserGetGreeting","voipSwitch","userid","accountNumber","directoryNumber","serviceNumber","pBXUserID","userGetGreeting","modalBody","handleInputChange","handleSubmit","VoipSwitch","requestData","uvmg","ErrorMessage","openModal","closeModal","disableMessageDepositField","extendedAwayDisableMessageDepositField","defaultChecked","dialogClassName","modalContent","color","LeftMargin","VoicemailBlockModal","handleYes","renderResult","errorComponent","successComponent","countWithError","saveResult","BlockedNumberAlreadyExist","ErrorBlocking","countSuccess","Blocked","rowNumber","BlockedNumber","Criteria","errorMessage","showError","prevProps","confirmationMsg","showSuccess","showLoading","SuccessMessage","SuccessTransitionClass","SavingMessageControl","loadingMessage","SaveButton","VoicemailDeleteModal","PinResetModal","GeneratePin","returnString","newNumber","Math","floor","random","generateNewPin","pin","PIN","newPin","handleResetPin","ResetPin","access_token","x_policy","postDataWithCustomHeader","saving_show_error","msg","isCustom","successMessage","InfoPop","LongSwitch","hasInfo","info","label","on","Voicemails","initialState","voicemail_switch","visible","show_success","show_error","vm_settings","voicemails","voicemail_count","voicemail_fetch_error","activevm","account_number","directory_number","filename","sendModal","emailText","emailTextValid","delete","block","show_dialog","save_result","vm","voicemails_data","vmLocal","Location","refs","downloadSubmit","submit","playSubmit","onHandleVoicemail","apiUrl","fetchVoiceMails","handleVMSettingChange","vmSetting","enableUserMessaging","basicData","filterService","ServiceName","IsActiveSpecified","loadSettings","vmOnOffApi","errorMsg","loadData","sortedByDate","all_voicemails","slice","sort","Date","DateTimeLocal","voicemailsTable","getBlockAndDeleteRow","getVoiceMails","getFetchVoiceMailError","getVoiceMailAction","Extension","handleHideSendModal","handleSend","handleChangeEmailText","selected_voicemails","forEach","element","FileName","newdeletedvms","newvoicemails","push","selected_block_numbers","FromPhone","BlockNumbers","parse","ToEmail","playUrl","saveUrl","voiceCount","getVoiceMailOnOff","method","default","sendModalLoading","vmLength","colSpan","selectedVMcount","handleBlockVM","handleBlockModalShow","handleBlockModalClose","handleDeleteVM","handleDeleteModalShow","match","vm_switch","BSCallLogsTab","searchStatus","BSCallLogs","padding","sortListings","logs","returnObj","sortedSet","orderBy","helper","sortChange","Sort","gridContent","colWidth","isWidget","scrollable","sortable","allowUnsort","mode","onSortChange","field","LocationAccountNumber","BsLogs","skip","SansayCallLogsTab","SansayCallLogs","smallColWidth","SansayLogs","FaxCallLogsTab","FaxCallLogs","CallLogs","UpdateStoreAndListings","call_type","status_type","call_category","date_type","from_date","to_date","fetchCallLogs","getApiUrl","selectedTab","tab","undefined","isIpTrunking","FDRCallLogs","revisedData","isIPTrunking","isFax","idx","Release_Time","Start_Time","StartTime","extension","ext","callLogFilter","htmlSelect","paddingRight","usercl_call_category","usercl_call_type","usercl_status_type","usercl_date_type","usercl_from_date","moment","now","startOf","usercl_to_date","endOf","handleCallType","handleStatusType","handleDate","handleChangeFromDate","handleChangeToDate","from","sender","_oldText","isSameOrAfter","isSameOrBefore","subtract","nextProps","newProps","callLogsLink","change","getTab","finalToDate","newOptions","BasicFeatures","anynomous_call_rejection","details","assigned_service","bargein_exempt","caller_id","call_waiting","connected_line_id_restrictions","do_not_disturb","music_on_hold","outbound_caller_id_block","fetchAssignedServices","enableBasicFeature","setDisableAll","setLoadingToFalse","mainDiv","feature","service","getService","IsActive","setBasicFeature","serviceName","filterData","fetchBasicFeatures","Method","SettingValue","onChangeBasic","bodyJson","setToFalseAllSuccessAndError","viewMoreLink","sn","pbx","substr","iframeUrl","renderBasicFeatureControl","enableFeatures","getBasicFeatureItem","emptyMessage","key","emptye911Address","savingLoading","savingShowSuccess","savingErrorMessage","savingShowError","showAddress","StructureNum","City","ElevationNum","State","UnitType","UnitNum","ZipCode","StreetName","HouseNumber","StreetNumber","PostDirectional","PreDirectional","StreetType","StreetSuffix","Street1","Street2","PhoneNumber","Address1","Address2","DirectionPrefix","DirectionSuffix","ElevationType","StructureType","County","e911Modal","fetch911List","existingList911","list911","elist911Loading","fetch911Address","e911Address","existinge911Address","e911AddressLoading","getE911List","addresses","e99Address","addressLine1","getAddressLine1","addressLine2","getAddressLine2","align","handleToggleEditList911","editableAddress","addressForm","getList911Addresses","handleToggleEdit911Addresses","Building","handleOnChange","fieldName","listType","newList911","existing911List","address","save911InList","indexInList","showHideStatus","save911AddressesInList","newList","newExistingList","e911InList","resp","listIdx","_","addressFind","indexInArray","saveElement","closeElement","showUser911","E911ButtonText","list911Address","labelClassName","ProfileInfo","fetch_error","profile","hasE911","fetchProfileInfo","b911","HasE911","getProfileApiUrl","profileURL","PBXUserId","getName","IsAdmin","getAdminProfile","getRegularProfile","getCompany","Designation","E911Street1","E911Street2","E911City","E911State","E911Zip","department","Department","Email","enterpriseID","ParentAccountNumber","groupID","emapID","ImapID","networkClass","NetworkCOS","portalLoginUsername","PortalUsername","groupEmailMobilePagerYahooId","Mobile","Pager","YahooId","e911AddressSection","phoneModel","DeviceModel","macAddress","DeviceMAC","language","Language","timezone","TimeZone","temporarilyUpdate911ServiceAddress","passwordRecovery","userID","SVCStreet1","SVCStreet2","SVCCity","SVCState","SVCZip","FirstName","LastName","CallingLineFirstName","CallingLineLastName","CustomerName","Applications","hasCallRecording","HasCallRecordingService","updateApplication","applications","params","app","appInfo","el","ApplicatoinName","appList","numberClasses","numClassesIndex","toLowerCase","open","ApplicationURL","WrappedCell","dataItem","GridCell","AddEditEnterpriseContact","getBlankContactDetails","UserId","SelectedUserId","EnterpriseId","TN","OldName","Name","OldSpeedDialCode","SpeedDialCode","isAdd","ContactDetails","SpeedDialEnabled","handleOnStateChange","callUpdateFromModal","newContactModel","UpdateParentFromModal","adding","handleOnSave","verb","res","saveResultsMessage","getModalButtons","getEditViewButton","minWidth","formatSpeedDialOption","itm","toggleSpeedDial","toggleSetting","SpeedDialCodes","margin","speedDialSetting","current","existing","codes","AddEditMode","newSpeedDials","CanEdit","enabled","maxLength","Mask","Button","ContactTextField","mask","UserContactWidget","provideSpeedDialCodes","fetchContactDetails","codeAdds","contact","fetchSpeedDial","Contacts","ContactsCopy","adds","searchContacts","fullDetails","contacts","filterBy","logic","filters","operator","ignoreCase","handleDeleteItem","productItem","showDeletePrompt","selectedDeleteItem","handleCancelDelete","handleConfirmedDelete","SpeedDialList","newContacts","newContactsCopy","updateFromModal","speedDialValues","oldContact","oldContactCopy","idxOldContact","idxOldContactCopy","uploadBtn","accept","addAttachment","openAttachments","file","files","reader","FileReader","addEventListener","createAttachment","readAsDataURL","ticketId","attachmentDTO","TicketId","AttachmentBody","attachmentSubmitted","Submission","submitError","fileUploader","gridHeight","cell","ContactEditButton","filterable","ContactDeleteButton","fill","xmlns","fillRule","clipRule","Dashboard","enterpriseDirectory","showEnterpriseContacts","profileInfo","adminProfile","voicemail","callLogs","basicFeatures","showBasicFeatures","renderColumns","columnObj","column1","column2","column3","iCountNextColumn","iCountActiveWidgets","widgets","stateLookup","toggle","pushFunction","functionName","selectedColumn","widgetColumn","columnWidgets","f","showCallLogs","disableImagesLoaded","updateOnEachImageLoad","enableResizableChildren","widgetRow","isSelectedServiceIpTrunking","serviceLoading","showProfileInfo","showVoicemail","showApplications","atRootPath","redirectToLanding","VoiceUserSettings","showConfirmModal","Loading","fetchDataForModalvalues","ErrorMsg","RefreshDataSource","requests","fetchCallRecordingSettings","fetchCallRecordingValue","Promise","all","dataArray","copy","displayCallRecordingConnectField","og_displayCallRecordingConnectField","Settings","SettingsCopy","sumbitVoiceSettings","pauseResumeNotificationField","recordCallRepeatWarningToneTimerSecondsField","recordingOptionField","recordingSetting","UserName","username","Entity","RecordingSetting","DisplayCallRecordingConnectFieldDTO","AccessToCallRecording","Failed","dataRow","recordRadioDataField","val","pauseResumeRadioDataField","inputDataField","callWarningTone","enableTone","secondsTone","min","formButtons","enableCallRecordingAnnouncementField","enableRecordCallRepeatWarningToneField","enableVoiceMailRecordingField","PropertyChanged","isVoiceMessagingAssigned","isVoiceMessagingAssignedField","left","top","hasCallRecordingMenu","paddingTop","cardContent","CallRecordingUsers","UsersList","handleSortChange","editGridHeader","VoiceSettings","handleFilterChange","searchListings","FullListings","services","dir","LinkCell","MiaRecUser","EmulationRedirectURL","MiaRecLoginUrl","encodeURIComponent","onSubmit","preventDefault","CallRecordingMain","fetchCallRecordingUrl","Link","fetchUserLists","tabDisplay","changeTab","tabName","dashboard","locations","servicesAndUsers","devices","trunking","enterpriseSettings","contactCenter","billing","star","historyBtn","ticketing","documents","y","addressBook","entTrunk","class","msTeams","callRecording","webex","circuits","circuitsMap","mfa","ServiceSelector","setServiceAndRedirect","history","serviceNumberValue","userHasNoServices","Username","PackageName","fieldValue","ServiceId","HasProfile","withRouter","DeviceStatuses","realtimeRegistrationStatus","updated","updateStatus","checkRegistration","exportBtn","Services","exportUsers","downloadCsv","text","deviceStatus","textLeft","serviceFilters","USER_FAV","DEVICE_REGISTERED","DEVICE_UNREGISTERED","DEVICE_ASSIGNED","DEVICE_UNASSIGNED","UNASSIGNED","ALL_SERVICES_USERS","ALL_SERVICES","ALL_USERS","IP_TRUNK_ASSIGNED_DID","filterList","REGISTERED","UNREGISTERED","ASSIGNED","AssignedDIDTrunkID","filterLabel","join","ServiceMACClickPop","showMacs","macListings","mac","sortedData","sortServices","MACListings","popupHeight","macAddressCell","DevCount","MacAddressCell","fieldClass","DevRegistered","MAC","EditBtn","editBtn","onOpen","closeOnDocumentClick","contentStyle","border","parseViewFilter","search","view","viewFilter","parseServiceIdFile","AssignedDIDServiceId","TrunkGroupServiceId","paramsSeparator","returnState","locationAddress","serviceUserFilter","locationAccFilter","useFilter","deviceCount","isTogglingStatus","innerHeight","handleResize","newLocationParams","newLocation","prevLocation","newSearchTermParams","newSearchTerm","prevSearchTerm","filteredGridContent","didArr","ServiceType","apiPathWithParams","filteredData","resultsMsg","replacedValues","favs","IsFav","nonFavs","concat","Object","assign","isToggingStatus","UserType","activeFilters","clearFilter","searchServices","filterServices","starAlt","starClass","handleEnter","keyCode","toggleFavoriteStatus","updatedItem","replaceServices","unfavorite","saveFavorite","updateService","newFavServiceId","newIsFavState","FavoriteServiceId","newServices","findIndex","s","registrationUpdated","icons","favBtn","serviceTypeCell","serviceSelector","resultsMessage","servicesCardInlineStyle","servicesContent","filterChange","pageChange","FavoriteButton","cursorType","cursor","onKeyUp","ServiceTypeCell","collabPath","removeEventListener","newApiParams","page","LocationAddress","locationAccountNumber","fetchSips","sips","searchSips","PilotUserId","PilotDID","selectServiceLink","editSettingsButton","sipsContent","SelectServiceLink","textClass","PilotRegistered","EditSettingsButton","TrunkGroupID","FilterServices","nextContext","curFilter","sortSips","SuperLink","url","PayModal","setSchedule","setStep","step","recurValue","dataset","getStep","CCLogos","max","getSchedule","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","isSuperAdmin","userIsSuperAdmin","DialingFirstName","DialingLastName","Timezone","NetworkClassOfService","Country","Zip","EditProfileModal","currentUser","CurrentUserProfile","admin","isAdmin","GroupName","IMAPID","ServiceProviderId","GroupId","ID","AlternatePhone","States","Languages","Timezones","Departments","NetworkClassOfServices","valid","fetchAdminProfileInfo","fetchUserProfileInfo","splice","getSaveBody","CustomerProductId","DepartmentName","NCOS","IMAP_ID","handleSaveNew","updateProfilePage","updateByProps","editAvailableApi","getModalBodyContent","getAdminForm","getBroadsoftUserForm","getUserForm","headerValues","GetHeaderValues","stateDropDownOptions","ProfileTextField","maxlength","ProfileDropdownField","Password1","Password2","ChangePasswordModal","password1","password2","validMessage","ValidPassword","pw","test","Password","getValidationError","getBtn","superlink","PasswordEmail","ServiceAndCpniEmail","ChangeEmailModal","isValidEmail","fetchEmail","changeEmail","ChangeEmail","ce","loadingError","passwordEmail","serviceAndCpniEmail","changeUserEmailApi","getBodyContent","ChangeEmailValues","GetEmailValues","MFAAuthModal","handleOpen","validationError","pinCode","verificationMethod","isTextMessageOn","isAuthAppOn","onSuccessSMS","onSuccessSubmitPinCode","oktaId","isOktaPushEnabled","fetchUserEmail","getQRImageUrl","loadingQR","tsv","qrImageUrl","qrKey","getOktaQRImageUrl","qrOktaImageUrl","enableOktaPush","confirmOktaVerify","submitPhoneNumber","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","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","hasBillingAdminPermission","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","BillingAdminPermission","ShowVoiceMailReport","ShowEnterpriseTrunk","ShowActiveDirectory","MSTeamsRoutingType","EnterpriseType","IsWebExAllowed","ipTrunkTest","IsIPTrunking","serviceChangesLink","menuLink","icon","trunkingLink","LocationsLink","devicesLink","contactCenterLink","userIsContactManager","billingLink","ipTrunkingLink","ticketingLink","documentsLink","addressBookLink","entTrunkLink","adLink","msTeamsLink","ShowCallRecordingLink","userTypeIdViewOnly","every","includes","callRecordingLink","showCallRecordingLink","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","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","toLocaleString","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","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","rpxParams","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.f3049f38.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;","export default __webpack_public_path__ + \"static/media/E911retail.5abf1f79.pdf\";","export default __webpack_public_path__ + \"static/media/E911WL.a09f85fb.pdf\";","import React, { Component, Fragment } from \"react\";\r\nimport { Modal } from 'react-bootstrap';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport { storedUserRole } from '../../../scripts/helper';\r\n\r\nexport default class CR_MODAL extends Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n //showCRModal: getTCValue() ? false : true,\r\n loading: false,\r\n //TCFlag: getTCValue(),\r\n showCRModal: false,\r\n TCFlag: \"\",\r\n submitted: false,\r\n UserID: sessionStorage.userId,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n // if (storedUserRole() === 'SUPER_ADMIN') {\r\n // this.fetchEnterpriseTerms();\r\n // } else {\r\n // this.fetchUserTerms();\r\n // }\r\n this.fetchEnterpriseCallRecordingPopUpCount();\r\n }\r\n\r\n fetchEnterpriseCallRecordingPopUpCount = async () => {\r\n let path = \"admin/GetEnterpriseCallRecordingPopUp\";\r\n await apiCalls.fetchData(path).then(data => {\r\n if (data) {\r\n this.setState({\r\n //showCRModal: data[0].TCFlag == true ? false : true,\r\n showCRModal: data[0].ShowedCount >= 3 ? false : true,\r\n //ShowedCount: data[0].ShowedCount,\r\n });\r\n }\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n saveEnterpriseCallRecordingPopUpCount = async () => {\r\n await this.setState({ loading: true });\r\n //let path = storedUserRole() === 'SUPER_ADMIN' ? \"admin/UpdateEnterpriseTC\" : `usr/UpdateServiceTC?userId=${this.state.UserID}`;\r\n let path = \"admin/SaveEnterpriseCallRecordingPopUpCount\";\r\n\r\n //console.log(\"DTO\", dto);\r\n let response = await apiCalls.post(path, \"POST\").then(data => data).catch(err => console.error(err));\r\n if (response.ok) {\r\n sessionStorage.setItem(\"CallRecordingModalLoaded\", true);\r\n this.setState({ loading: false, showCRModal: false, submitted: true });\r\n } else {\r\n console.log(response);\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n callRecordingModal = () => {\r\n let { emulatedUser } = sessionStorage;\r\n if (!emulatedUser || emulatedUser == \"false\") {\r\n // no visibility when user emulates from RPX\r\n return (\r\n \r\n \r\n Your new and enhanced Momentum Call Recording platform is coming soon!\r\n \r\n \r\n
    \r\n {/*

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

    */}\r\n

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

    \r\n

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

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

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

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

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

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

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

    \n Reset Voicemail Pin

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

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

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

    \r\n No recent voicemails\r\n

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

    Voicemail

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

    Voicemail {voiceCount}

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

    Call Logs

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

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

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

    Basic Features

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

    No basic features options

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

    No address

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

    No address

    \r\n
    \r\n );\r\n }\r\n if (editableAddress.showAddress) {\r\n addresses.push((this.addressForm(addresses.length, editableAddress, i, \"911List\")));\r\n }\r\n else {\r\n addresses.push();\r\n }\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {addresses}\r\n \r\n
    Phone NumberAddressStatus
    );\r\n }\r\n\r\n getList911Addresses = () => {\r\n if (this.state.e911AddressLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n if (!this.state.existinge911Address) {\r\n return (\r\n
    \r\n

    No address

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

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

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

    Profile

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

    {this.getName()}

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

    No applications are available.

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

    Applications

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

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

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

    {this.getName()}

    */}\r\n

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

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

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

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

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

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

    No Available Data

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

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

    No Available Data

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

    No Available Data

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

    Call Recording

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

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

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

    MAC Addresses:

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

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

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

    Trunking {this.state.sips.length}

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

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

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

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

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

    {this.state.CustomerName}

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

    Favorite Services

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

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

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

    Call Activity

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

    Quick View

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

    Quick View

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

    {this.state.CountLocations}

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

    {this.state.CountServicesUsers || 0}

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

    {this.state.CountDevices}

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

    {count}

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

    {count}

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

    {count}

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

    {this.state.linesUnregistered}

    \n
    \n
    \n

    {this.state.devicesProvisioned}

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

    Devices

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

    Activity History

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

    No Available Ticketing Data

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

    Support Tickets

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

    No Available Tickets

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

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

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

    No Available Usage Data

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

    Voicemail Usage Report

    \r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    \r\n {!this.state.loading ?
    \r\n Full Report\r\n
    : null}\r\n
    \r\n
    \r\n )\r\n }else{\r\n return null\r\n }\r\n }\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n hasVmUsageReport: state.reducer.hasVmUsageReport\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(VmReport);","import React, { Component } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport * as apiCalls from \"./../../requests/api_calls\";\r\nimport { DataLoadingSpinner } from \"./../../components/spinners\";\r\n\r\nexport default class CircuitCard extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n CircuitList: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchCircuits();\r\n }\r\n\r\n fetchCircuits = async () => {\r\n let apiPath = \"admin/GetCircuitsList\";\r\n //await this.setState({ loading: true });\r\n await apiCalls.fetchData(apiPath).then((data) => {\r\n //setLoading(true);\r\n if (data) {\r\n data.forEach(async (itm) => {\r\n if (itm.CheckMkHostName && itm.CheckMkHostName !== \"\") {\r\n let obj = await this.fetchActiveHosts(itm.CheckMkHostName);\r\n let tt = JSON.parse(obj).ResultDetail;\r\n let ti = JSON.parse(tt).state_text;\r\n if (ti === \"OK\") {\r\n itm.isActive = true;\r\n } else {\r\n itm.isActive = false;\r\n }\r\n }\r\n this.setState({\r\n loading: false,\r\n CircuitList: data,\r\n });\r\n });\r\n } else {\r\n this.setState({ loading: false, CircuitList: null });\r\n }\r\n });\r\n // setTimeout(() => {\r\n // this.setState({ loading: false });\r\n // }, 3000);\r\n };\r\n\r\n fetchActiveHosts = async (hostname) => {\r\n let apiPath = `admin/CircuitMonitoring/GetCurrentStatusForHost?hostname=${hostname}`;\r\n return await apiCalls.fetchData(apiPath).then(data => data).catch(err => console.error(err));\r\n };\r\n\r\n\r\n cardContent = () => {\r\n let { loading, CircuitList } = this.state;\r\n if (loading) {\r\n return (\r\n\r\n
    \r\n \r\n
    \r\n\r\n );\r\n } else {\r\n if (CircuitList) {\r\n let upCircuits = CircuitList.filter(itm => itm.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\nimport { userIsSuperAdmin } from '../scripts/helper';\r\n\r\nclass Admin extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const favServices = this.favServices.bind(this);\r\n const activityHistory = this.activityHistory.bind(this);\r\n const starredTickets = this.starredTickets.bind(this);\r\n const quickView = this.quickView.bind(this);\r\n const devices = this.devices.bind(this);\r\n const callChart = this.callChart.bind(this);\r\n const ticketingCount = this.ticketingCount.bind(this);\r\n\r\n let widgets = [\r\n { toggle: 'showFavServices', functionName: favServices, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showActivityHistory', functionName: activityHistory, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showStarredTicketingWidget', functionName: starredTickets, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showQuickView', functionName: quickView, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showDevices', functionName: devices, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showCallChart', functionName: callChart, widgetRow: 0, widgetColumn: 0 },\r\n { toggle: 'showTicketingCountsWidget', functionName: ticketingCount, widgetRow: 0, widgetColumn: 0 }\r\n ];\r\n\r\n let ipTrunkingOnly = sessionStorage.isIpTrunkingOnly !== null && sessionStorage.isIpTrunkingOnly !== undefined ? sessionStorage.isIpTrunkingOnly : false;\r\n\r\n this.state = {\r\n hasTicketing: sessionStorage.hasTicketing ? sessionStorage.hasTicketing : 'NONE',\r\n hasDevices: false,\r\n ipTrunkingOnly: ipTrunkingOnly,\r\n showFavServices: true,\r\n showActivityHistory: true,\r\n showStarredTicketingWidget: true,\r\n showQuickView: true,\r\n showDevices: ipTrunkingOnly ? false : true,\r\n showCallChart: true,\r\n showTicketingCountsWidget: true,\r\n widgets: widgets\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n //this.fetchTermsAndConditions();\r\n }\r\n\r\n // fetchTermsAndConditions = async () => {\r\n // let path = \"admin/EnterpriseTC\";\r\n // await fetchData(path).then(data => {\r\n // if (data) {\r\n // sessionStorage.setItem('entTCFlag', data[0].TCFlag);\r\n // }\r\n // }).catch(err => console.error(err));\r\n // }\r\n\r\n componentWillReceiveProps = (props) => {\r\n let state = this.state;\r\n if (state.hasTicketing !== props.hasTicketing || state.hasDevices !== props.hasDevices || state.ipTrunkingOnly !== props.ipTrunkingOnly) //in the future this may change if user can customize their dashboard\r\n this.setState({\r\n hasTicketing: props.hasTicketing,\r\n hasDevices: props.hasDevices,\r\n showFavServices: true,\r\n showActivityHistory: true,\r\n showStarredTicketingWidget: ((!props.hasTicketing && state.hasTicketing === false) || props.hasTicketing === 'NONE') ? false : true,\r\n showQuickView: true,\r\n showDevices: (props.ipTrunkingOnly !== null && props.ipTrunkingOnly !== undefined && props.ipTrunkingOnly === true) ? false : state.showDevices,\r\n showCallChart: true,\r\n showTicketingCountsWidget: ((!props.hasTicketing && state.hasTicketing === false) || props.hasTicketing === 'NONE') ? false : true,\r\n })\r\n }\r\n\r\n transitionToTicketDetail = (ticketId) => {\r\n this.props.history.push(`/ticket/${ticketId}`);\r\n }\r\n\r\n transitionToNewTicket = () => {\r\n this.props.history.push('/new_ticket');\r\n }\r\n\r\n transitionToAllTickets = () => {\r\n this.props.history.push('/tickets_all');\r\n }\r\n\r\n transitionToCallLogDetails = () => {\r\n this.props.history.push('/enterpise_call_logs_all');\r\n }\r\n\r\n transitionToVmReport = () => {\r\n this.props.history.push(`/vm_report_full`);\r\n }\r\n\r\n favServices = () => {\r\n return (\r\n \r\n );\r\n }\r\n\r\n activityHistory = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n starredTickets = () => {\r\n if (this.state.hasTicketing && this.state.hasTicketing !== 'NONE')\r\n return (\r\n \r\n );\r\n return null;\r\n }\r\n\r\n quickView = () => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n devices = () => {\r\n return (\r\n \r\n );\r\n }\r\n callChart = () => {\r\n return (\r\n \r\n )\r\n }\r\n ticketingCount = () => {\r\n if (this.state.hasTicketing && this.state.hasTicketing !== 'NONE')\r\n return (\r\n \r\n );\r\n return null;\r\n }\r\n\r\n vmReport = () => {\r\n let { hasVmUsageReport } = sessionStorage;\r\n if (hasVmUsageReport === \"true\") {\r\n return (\r\n \r\n )\r\n } else return;\r\n\r\n }\r\n\r\n\r\n render() {\r\n let hasTicketing = this.state.hasTicketing ? (this.state.hasTicketing !== 'NONE' ? true : false) : false;\r\n let hasDevices = this.state.showDevices; //todo: this.state.hasDevices could be incorporated if Device checkbox in rpx is not checked?\r\n const isSuperAdmin = userIsSuperAdmin();\r\n\r\n // Adding isSuperAdmin check to limit BillingCard to SUPER_ADMIN users\r\n // Remove or modify if content of this first section changes\r\n if (checkBillingAccount() && isSuperAdmin) { // only show billing widget for select Alteva, CNG & DCT accounts\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n } else {\r\n return (\r\n
    \r\n {isSuperAdmin && sessionStorage.userEnterpriseNumber !== \"3904000825\" && }\r\n \r\n
    \r\n \r\n \r\n {hasTicketing ? : null}\r\n {sessionStorage.enterpriseType === 'VOICE' ? null : }\r\n
    \r\n
    \r\n \r\n {hasDevices ? : null}\r\n {this.vmReport()}\r\n
    \r\n
    \r\n \r\n {hasTicketing ? : null}\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n hasTicketing: state.reducer.hasTicketing,\r\n hasDevices: state.reducer.hasDevices,\r\n ipTrunkingOnly: state.reducer.isIpTrunkingOnly\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(withRouter(Admin));","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { fetchData, post } from '../../../requests/api_calls';\r\nimport format from 'string-format';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport ReactCSSTransitionGroup from 'react-addons-css-transition-group'; // ES6\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport * as config from '../../../requests/config';\r\nimport * as EmailValidator from 'email-validator';\r\n\r\nconst ServiceNumber = \"ServiceNumber\",\r\n PBXUserID = \"PBXUserID\",\r\n EnterpriseId = \"EnterpriseId\",\r\n UserId = \"UserId\",\r\n IMAPID = \"IMAPID\",\r\n DialingFirstName = \"DialingFirstName\",\r\n DialingLastName = \"DialingLastName\",\r\n FirstName = \"FirstName \",\r\n LastName = \"LastName \",\r\n Title = \"Title\",\r\n Department = \"Department\",\r\n Language= \"Language\",\r\n Location=\"Location\",\r\n Timezone= \"Timezone\",\r\n NetworkClassOfService = \"NetworkClassofService\",\r\n AlternatePhone = \"AlternatePhone\",\r\n Email = \"Email\",\r\n Address1 = \"Address1\",\r\n Address2 = \"Address2\",\r\n City = \"City\",\r\n State = \"State\",\r\n Country = \"Country\",\r\n Zip = \"Zip\";\r\n\r\nclass EditProfileModal extends Component {\r\n\r\n initialState=(props)=>{\r\n return {\r\n visible: false,\r\n showModal: false,\r\n loading: true, \r\n loading_error: \"\",\r\n saving_loading: false,\r\n saving_show_success: false,\r\n saving_error_message: \"\",\r\n saving_show_error: false,\r\n currentUser: props.CurrentUserProfile,\r\n admin: props.isAdmin,\r\n GroupName: props.GroupName,\r\n ServiceNumber: props.ServiceNumber,\r\n hasE911: props.HasE911,\r\n isIPTrunking: sessionStorage.isSelectedServiceIpTrunking && sessionStorage.isSelectedServiceIpTrunking.toString() === 'true' ? true : false,\r\n profile:{\r\n PBXUserID: props.PBXUserID,\r\n EnterpriseId: props.ParentAccountNumber, \r\n UserId: props.PBXUserID,\r\n IMAPID: \"\",\r\n CallingLineFirstName: \"\",\r\n CallingLineLastName: \"\",\r\n DialingFirstName: \"\",\r\n DialingLastName: \"\",\r\n YahooId: \"\",\r\n FirstName: \"\",\r\n LastName: \"\",\r\n Title: \"\",\r\n Department: {\r\n ServiceProviderId: \"\",\r\n GroupId: \"\",\r\n Name: \"\"\r\n },\r\n Language: {\r\n ID: \"\",\r\n Name: \"\"\r\n },\r\n Timezone: {\r\n ID: \"\",\r\n Name: \"\"\r\n },\r\n NetworkClassOfService: {\r\n ID: \"\",\r\n Name: \"\"\r\n },\r\n AlternatePhone: \"\",\r\n Email: \"\",\r\n Address1: \"\",\r\n Address2: \"\",\r\n City: \"\",\r\n State: {\r\n ID: \"\",\r\n Name: \"\"\r\n },\r\n Country: \"\",\r\n Zip: \"Zip\",\r\n States:[],\r\n Languages:[],\r\n Timezones:[],\r\n Departments:[],\r\n NetworkClassOfServices:[]\r\n },\r\n valid: true\r\n }\r\n }\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.updateByProps = this.updateByProps.bind(this);\r\n this.state = this.initialState(props);\r\n }\r\n\r\n handleClose() {\r\n let state = {...this.state};\r\n state.showModal = false;\r\n this.setState(state);\r\n }\r\n\r\n handleShow() {\r\n let state = {...this.state};\r\n state.showModal = true;\r\n state.loading = true;\r\n state.saving_show_error = false;\r\n state.saving_loading= false;\r\n state.saving_show_success= false;\r\n state.saving_error_message= \"\";\r\n this.setState(state);\r\n this.fetchProfileInfo();\r\n }\r\n\r\n fetchProfileInfo=()=>{\r\n var apiUrl = ''\r\n if(this.state.currentUser && this.state.admin){\r\n apiUrl = \"admin/GetAdminProfileEdit\";\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 * as session from \"../scripts/session\";\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\n if (iframekey === 'MSP_PAYMENT' && (session.IsWholesale() ||\n sessionStorage.userEnterpriseNumber === \"3904000825\" ||\n sessionStorage.hasBillingAdminPermission == \"false\")\n ) {\n this.props.history.push(\"/\");\n }\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, userIsSuperAdmin } from \"./../../scripts/helper\";\r\nimport * as actions from \"./../../store/actions\";\r\nimport * as icons from \"./../../scripts/icons\";\r\nimport * as session from \"../../scripts/session\";\r\nimport { checkBillingAccount } from \"../../utility/utility\";\r\n\r\nconst IsWholesaleUser = session.IsWholesale();\r\n\r\nclass AdminMenu extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n permissions: {},\r\n hasTrunking: false,\r\n hasContactCenter: false,\r\n hasMacd: false,\r\n hasDevices: false,\r\n hasIpTrunk: false,\r\n hasTicketing: \"NONE\",\r\n hasVmUsageReport: false,\r\n Header: \"Admin Tools\",\r\n hasAtLeastOneAdminLink: false,\r\n permissionsRetrieved: false,\r\n };\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 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 if (data) {\r\n sessionStorage.setItem(\"hasBillingAdminPermission\", data.BillingAdminPermission == 1 ? true : false);\r\n }\r\n // Start Ticketing\r\n // Returns \"NONE\", \"READONLY\", or \"FULL\". ***\r\n // I did some quick testing with new ticketing permission.\r\n // For a SuperAdmin all works as before.\r\n // But, for a user login you should probably call the new API to get permission, and if not \"NONE\" you should add the ticketing menu to the left menu bar.\r\n // Then enable update/create/delete operations on tickets only of the permission is \"FULL\".\r\n if (data && !IsWholesaleUser) {\r\n sessionStorage.setItem(\"hasTicketing\", data.TicketingPermission);\r\n }\r\n //End Ticketing\r\n sessionStorage.setItem(\"hasMacd\", data.AllowMACDs == 1 ? true : false)\r\n // Start VM Usage Report\r\n sessionStorage.setItem(\r\n \"hasVmUsageReport\",\r\n data.ShowVoiceMailReport == 1 ? true : false\r\n );\r\n\r\n // End VM Usage Report\r\n\r\n //Start Ent Trunking\r\n sessionStorage.setItem(\r\n \"hasEntTrunking\",\r\n data.ShowEnterpriseTrunk === 1 ? true : false\r\n );\r\n\r\n sessionStorage.setItem(\r\n \"hasActiveDirectory\",\r\n data.ShowActiveDirectory === 1 ? true : false\r\n );\r\n\r\n //End AD Sync\r\n sessionStorage.setItem(\r\n \"hasTeams\",\r\n data.MSTeamsRoutingType == \"NONE\" ? false : true\r\n );\r\n\r\n sessionStorage.setItem(\r\n \"hasCallRecordingMenu\",\r\n data.HasCallRecordingMenu == 1 ? true : false\r\n );\r\n sessionStorage.setItem(\r\n \"hasCallRecordingService\",\r\n data.HasCallRecordingService == 1 ? true : false\r\n );\r\n\r\n sessionStorage.setItem(\r\n \"hasCircuits\",\r\n data.EnterpriseType === \"VOICE\" ? false : true\r\n );\r\n\r\n sessionStorage.setItem(\r\n \"hasWebEx\",\r\n data.IsWebExAllowed == 1 ? true : false\r\n );\r\n\r\n // Start Locations\r\n await fetchData(\"admin/Locations\")\r\n .then((locations) => {\r\n //\r\n sessionStorage.setItem(\"locationList\", JSON.stringify(locations));\r\n //\r\n let ipTrunkTest = locations.filter((resp) => resp.IsIPTrunking === false);\r\n if (!ipTrunkTest || ipTrunkTest.length === 0) {\r\n sessionStorage.setItem(\"isIpTrunkingOnly\", true);\r\n }\r\n store.dispatch({ type: actions.IP_TRUNKING_ONLY_SET });\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n store.dispatch({ type: actions.IP_TRUNKING_ONLY_SET });\r\n });\r\n //End Locations\r\n })\r\n .catch((err) => console.error(err));\r\n store.dispatch({ type: actions.PERMISSIONS_UPDATED });\r\n };\r\n\r\n serviceChangesLink = () => {\r\n if (this.state.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 sessionStorage.userEnterpriseNumber !== \"3904000825\" &&\r\n this.state.permissions.BillingAdminPermission == 1\r\n ) {\r\n return this.menuLink(\r\n \"/iframe_page/MSP_PAYMENT\",\r\n icons.billing,\r\n \"Billing\"\r\n );\r\n } else return null;\r\n };\r\n\r\n ipTrunkingLink = () => {\r\n if (this.state.permissions.HasIpTrunking) {\r\n return this.menuLink(\"/ip_trunking\", icons.trunking, \"IP Trunking\");\r\n }\r\n };\r\n\r\n ticketingLink = () => {\r\n if (\r\n this.state.permissions.TicketingPermission && this.state.permissions.TicketingPermission !== \"NONE\" &&\r\n (this.state.permissions.EnterpriseType === \"DATA\" || this.state.permissions.EnterpriseType === \"VOICE\" || this.state.permissions.EnterpriseType === \"MIXED\")\r\n ) {\r\n return this.menuLink(\"/tickets_all\", icons.ticketing, \"Support Tickets\");\r\n }\r\n };\r\n\r\n documentsLink = () => {\r\n if (sessionStorage.IsWholesale === \"true\") {\r\n return this.menuLink(\"/documents\", icons.documents, \"Documents\");\r\n } else return;\r\n };\r\n\r\n addressBookLink = () => {\r\n if (\r\n sessionStorage.IsWholesale === \"true\" &&\r\n this.state.permissionsRetrieved &&\r\n !sessionStorage.isIpTrunkingOnly\r\n ) {\r\n return this.menuLink(\r\n \"/enterprise_contact_directory\",\r\n icons.addressBook,\r\n \"Contact Directory\"\r\n );\r\n } else return;\r\n };\r\n\r\n entTrunkLink = () => {\r\n if (this.state.permissions.ShowEnterpriseTrunk) {\r\n return this.menuLink(\r\n \"/enterprise-trunking\",\r\n icons.entTrunk,\r\n \"Enterprise Trunking\"\r\n );\r\n } else return;\r\n };\r\n\r\n adLink = () => {\r\n if (this.state.permissions.ShowActiveDirectory) {\r\n return this.menuLink(\r\n `/active-directory`,\r\n icons.addressBook,\r\n \"Single Sign On\"\r\n );\r\n } else return;\r\n };\r\n\r\n msTeamsLink = () => {\r\n if (this.state.permissions.MSTeamsRoutingType && 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 showCallRecordingLink = this.ShowCallRecordingLink();\r\n if ((showCallRecordingLink === true || showCallRecordingLink === \"true\") && this.state.permissions.HasCallRecordingMenu)\r\n return this.menuLink(\r\n `/call-recording`,\r\n icons.callRecording,\r\n \"Call Recording\"\r\n );\r\n };\r\n\r\n webExLink = () => {\r\n if (this.state.permissions.IsWebExAllowed) {\r\n return this.menuLink(`/webex`, icons.webex, \"WebEx\");\r\n }\r\n };\r\n\r\n circuitsMonitioringLink = () => {\r\n if (this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"VOICE\") {\r\n return this.menuLink(`/circuits-monitoring`, icons.circuits, \"Circuits\");\r\n }\r\n };\r\n\r\n circuitDevicesLink = () => {\r\n if (this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"VOICE\") {\r\n return this.menuLink(\r\n `/circuit-devices`,\r\n icons.circuits,\r\n \"Circuit Devices\"\r\n );\r\n }\r\n };\r\n\r\n circuitMapLink = () => {\r\n if (this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"VOICE\") {\r\n return this.menuLink(\r\n \"/service-locations\",\r\n icons.circuitsMap,\r\n \"Service Locations\"\r\n )\r\n }\r\n }\r\n\r\n mfaAdminTool = () => {\r\n if (sessionStorage.enableMFA === \"true\" &&\r\n ( // super admins\r\n sessionStorage.userTypeId === \"1107\" ||\r\n sessionStorage.userTypeId === \"1105\" ||\r\n sessionStorage.userTypeId === \"1104\" ||\r\n sessionStorage.userTypeId === \"1103\" ||\r\n sessionStorage.userTypeId === \"1102\" ||\r\n // group admins\r\n sessionStorage.userTypeId === \"1106\" ||\r\n sessionStorage.userTypeId === \"1109\" ||\r\n sessionStorage.userTypeId === \"1114\" ||\r\n sessionStorage.userTypeId === \"1115\" ||\r\n sessionStorage.userTypeId === \"1116\")\r\n ) {\r\n return this.menuLink(\r\n \"/manage-mfa-configuration\",\r\n icons.mfa,\r\n \"Manage MFA\"\r\n )\r\n }\r\n }\r\n\r\n 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.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 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 } from \"react\";\r\nimport * as apiCalls from \"../../../requests/api_calls\";\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\nimport Masonry from \"react-masonry-component\";\r\nimport CircuitsGraph from './graph_component';\r\nimport FullCircuitsGraph from './full_graph';\r\n//import DevicesGraphTest from \"./testDevices\";\r\n\r\nexport default class CircuitsGraphingDashboard extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n CircuitId: this.props.location.state.CircuitId,\r\n CircuitName: this.props.location.state.CircuitName,\r\n HostName: this.props.location.state.HostName,\r\n DeviceHostName: this.props.location.state.DeviceHostName,\r\n WANPortAlias: this.props.location.state.WANPortAlias,\r\n //\r\n dashView: \"\",\r\n rtaField: \"rta\",\r\n plField: \"pl\",\r\n ptaField: \"pta\",\r\n upDownField: \"upDown\",\r\n //\r\n rtaMeasurement: \"max\",\r\n plMeasurement: \"max\",\r\n ptaMeasurement: \"max\",\r\n upDownMeasurement: \"max\",\r\n //\r\n rtaAggWindow: \"D\",\r\n plAggWindow: \"D\",\r\n ptaAggWindow: \"D\",\r\n upDownAggWindow: \"D\",\r\n //\r\n rtaDateRange: \"-1d\",\r\n plDateRange: \"-1d\",\r\n ptaDateRange: \"-1d\",\r\n upDownDateRange: \"-1d\",\r\n }\r\n }\r\n\r\n packageData = (data, range, type = \"\") => {\r\n if (data) {\r\n let graphData = type == \"historical\" ? JSON.parse(data.Body.GetHistoricalUpDownForHostNameResult) : JSON.parse(data.Body.GetGraphInfoForHostSplitRtaResult);\r\n let summary = JSON.parse(graphData.JSONData).summary;\r\n let arr = JSON.parse(graphData.JSONData);\r\n if (range != \"-1d\" && range != \"-2d\") {\r\n if (arr.Avg) {\r\n arr.Avg.forEach((itm) => {\r\n if (itm) {\r\n itm.x = new Date(itm.x);\r\n }\r\n });\r\n } else {\r\n return [[], []]\r\n }\r\n if (arr.Max && !arr.Min) {\r\n if (arr.Max) {\r\n arr.Max.forEach((itm) => {\r\n if (itm) {\r\n itm.x = new Date(itm.x);\r\n }\r\n });\r\n return [arr.Max, arr.Avg, summary];\r\n } else {\r\n return [[], []]\r\n }\r\n } else {\r\n if (arr.Min) {\r\n arr.Min.forEach((itm) => {\r\n if (itm) {\r\n itm.x = new Date(itm.x);\r\n }\r\n });\r\n return [arr.Min, arr.Avg, summary];\r\n } else {\r\n return [[], []]\r\n }\r\n }\r\n } else {\r\n if (arr.data) {\r\n arr.data.forEach((itm) => {\r\n if (itm) {\r\n itm.x = new Date(itm.x);\r\n }\r\n });\r\n return [arr.data, summary];\r\n } else {\r\n return [[], []]\r\n }\r\n }\r\n } else {\r\n return [[], []]\r\n }\r\n };\r\n\r\n fetchGraphData = async (range, field, aggregateWindow) => {\r\n let host = this.props.location.state.HostName;\r\n let path = `admin/CircuitMonitoring/GetDataByHostName?range=${range}&field=${field}&hostname=${host}&aggregateWindow=${aggregateWindow}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n let packagedData = this.packageData(data, range);\r\n if (field == \"rta\" || field == \"max_rta,avg_rta\" || field == \"min_rta,avg_rta\") {\r\n this.setState({\r\n rta: packagedData,\r\n });\r\n return;\r\n } else if (field == \"pl\" || field == \"max_pl,avg_pl\" || field == \"min_pl,avg_pl\") {\r\n this.setState({\r\n pl: packagedData,\r\n });\r\n return;\r\n } else if (field == \"pta\" || field == \"max_pta,avg_pta\" || field == \"min_pta,avg_pta\") {\r\n this.setState({\r\n pta: packagedData,\r\n });\r\n return;\r\n } else {\r\n return;\r\n }\r\n }).catch(err => console.error(err));\r\n };\r\n\r\n fetchUpDownStatus = async (range) => {\r\n let host = this.props.location.state.HostName;\r\n let path = `admin/CircuitMonitoring/GetHistoricalUpDownDataByHostName?hostname=${host}&range=${range}`;\r\n await apiCalls.fetchData(path).then(data => {\r\n let packagedData = this.packageData(data, range, \"historical\");\r\n this.setState({\r\n upDown: packagedData,\r\n });\r\n }).catch(err => console.error(err));\r\n }\r\n\r\n redirectView = async (value) => {\r\n await this.setState({ dashView: value })\r\n }\r\n\r\n updateGraphUrl = async (dateRange = this.state.DateRange, type, aggWindow, measurement) => {\r\n if (type == \"rta\" || type == \"max_rta,avg_rta\" || type == \"min_rta,avg_rta\") {\r\n await this.setState({\r\n rtaDateRange: dateRange,\r\n rtaAggWindow: aggWindow,\r\n rtaMeasurement: measurement,\r\n rta: [],\r\n });\r\n await this.fetchGraphData(dateRange, this.getType(dateRange, \"rta\", this.state.rtaMeasurement), aggWindow);\r\n return;\r\n } else if (type == \"pl\" || type == \"max_pl,avg_pl\" || type == \"min_pl,avg_pl\") {\r\n await this.setState({\r\n plDateRange: dateRange,\r\n plAggWindow: aggWindow,\r\n plMeasurement: measurement,\r\n pl: [],\r\n });\r\n await this.fetchGraphData(dateRange, this.getType(dateRange, \"pl\", this.state.plMeasurement), aggWindow);\r\n return;\r\n } else if (type == \"pta\" || type == \"max_pta,avg_pta\" || type == \"min_pta,avg_pta\") {\r\n await this.setState({\r\n ptaDateRange: dateRange,\r\n ptaAggWindow: aggWindow,\r\n ptaMeasurement: measurement,\r\n pta: [],\r\n });\r\n await this.fetchGraphData(dateRange, this.getType(dateRange, \"pta\", this.state.ptaMeasurement), aggWindow);\r\n return;\r\n } else if (type == \"upDown\") {\r\n await this.setState({\r\n upDownDateRange: dateRange,\r\n upDownAggWindow: aggWindow,\r\n upDownMeasurement: measurement,\r\n upDown: [],\r\n });\r\n await this.fetchUpDownStatus(dateRange);\r\n return;\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n getType = (dateRange, val, measurement) => {\r\n if (dateRange == \"-1d\" || dateRange == \"-2d\") {\r\n return val;\r\n } else {\r\n return `${measurement}_${val},avg_${val}`;\r\n }\r\n }\r\n\r\n // deviceGraphs = () => {\r\n // if (this.state.CircuitId && this.state.HostName && this.state.DeviceHostName && this.state.WANPortAlias) {\r\n // return (\r\n // \r\n // )\r\n // } else return null;\r\n // }\r\n\r\n render() {\r\n //if (!this.state.loading) {\r\n switch (this.state.dashView) {\r\n default:\r\n return (\r\n
    \r\n
    \r\n
    {`${this.state.CircuitName}`}
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {/* {this.deviceGraphs()} */}\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n //} else return \r\n }\r\n}","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { headerToolTip } from '../../components/ellipsisHeaderTooltip';\r\nimport { post, fetchData } from '../../requests/api_calls';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport { DataLoadingSpinner } from '../spinners';\r\nimport { storedUserRole, userIsAdmin, redirectToLanding } from \"../../scripts/helper\";\r\nimport * as settings from '../../scripts/settings';\r\n\r\nexport default class MFAAdminTool extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n showConfirmation: false,\r\n UserList: [],\r\n Sort: [{ field: \"UserId\", dir: \"desc\" }],\r\n filter: { logic: \"and\", filters: [] },\r\n GroupAdminBanner: null,\r\n };\r\n\r\n const openConfirmWindow = this.openConfirmWindow.bind(this);\r\n\r\n class ManageCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n let role = storedUserRole();\r\n let { UserId, VerificationMethod, UserTypeId } = this.props.dataItem;\r\n if (UserId && VerificationMethod) {\r\n if (role === 'GROUP_ADMIN' && UserTypeId === 1107) {\r\n return (\r\n \r\n \r\n {\"Reset MFA\"}\r\n \r\n \r\n )\r\n }\r\n return (\r\n \r\n openConfirmWindow(UserId)}\r\n >\r\n {\"Reset MFA\"}\r\n \r\n \r\n )\r\n } else {\r\n return (\r\n \r\n \r\n {\"Reset MFA\"}\r\n \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n this.ManageCell = ManageCell;\r\n }\r\n\r\n componentDidMount() {\r\n if (userIsAdmin()) {\r\n let role = storedUserRole();\r\n if (role === 'GROUP_ADMIN') {\r\n this.setState({ GroupAdminBanner: sessionStorage.AccountNumber })\r\n }\r\n this.fetchMfaUsers();\r\n } else {\r\n redirectToLanding();\r\n }\r\n }\r\n\r\n openConfirmWindow = (userid) => {\r\n this.setState({\r\n showConfirmation: true,\r\n selectedUser: userid\r\n });\r\n }\r\n\r\n fetchMfaUsers = async () => {\r\n await this.setState({ loading: true });\r\n let path = 'admin/MFAUserSearch';\r\n await fetchData(path)\r\n .then((data) => {\r\n if (data) {\r\n this.setState({\r\n UserList: data,\r\n FullListings: data,\r\n loading: false,\r\n validationError: \"\",\r\n //successMessage: \"\"\r\n });\r\n } else {\r\n this.setState({\r\n UserList: [],\r\n FullListings: [],\r\n loading: false,\r\n validationError: \"\",\r\n successMessage: \"\"\r\n });\r\n }\r\n })\r\n .catch((err) => console.error(err));\r\n }\r\n\r\n resetUserMFA = async (userId) => {\r\n try {\r\n this.setState({ loading: true });\r\n const path = 'admin/ResetUserMFA';\r\n const response = await post(path, \"POST\", JSON.stringify(userId));\r\n if (response.ok) {\r\n this.setState({\r\n loading: false,\r\n showConfirmation: false,\r\n validationError: \"\",\r\n successMessage: \"User's multi-factor authentication has been successfully reset!\",\r\n });\r\n this.fetchMfaUsers();\r\n if (userId === sessionStorage.userId) {\r\n sessionStorage.removeItem(\"verificationMethod\");\r\n }\r\n } else {\r\n console.error(`resetUserMFA(): failed: ${response.message}`);\r\n this.setState({\r\n loading: false,\r\n showConfirmation: false,\r\n validationError: \"Something went wrong while trying to reset user multi-factor authentication.\",\r\n successMessage: \"\",\r\n });\r\n }\r\n } catch (error) {\r\n console.error(`resetUserMFA(): failed: ${error}`);\r\n this.setState({\r\n loading: false,\r\n showConfirmation: false,\r\n validationError: \"Something went wrong while trying to reset user multi-factor authentication.\",\r\n successMessage: \"\",\r\n });\r\n }\r\n }\r\n\r\n errorContent = () => {\r\n if (this.state.successMessage !== \"\") {\r\n return (\r\n

    {this.state.successMessage}

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

    {this.state.validationError}

    \r\n )\r\n }\r\n }\r\n\r\n gridContent = () => {\r\n let { UserList, Sort } = this.state;\r\n if (UserList && UserList.length > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n } else {\r\n return

    No Available Data

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

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

    \r\n
    \r\n
    \r\n
    { e.preventDefault() }}>\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.getBodyContent()}\r\n {this.errorContent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Are you sure you want to reset MFA configuration for this user?\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n}","import React, { Component } from \"react\";\r\nimport { 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 {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 const rpxParams = {\r\n params: encryptedParams,\r\n EUN: emulationUserParam,\r\n UN: userParam,\r\n EUID: uidParam\r\n }\r\n config.loginRPXUser(rpxParams).then(null, rejected => {\r\n if (rejected == 'token not valid') {\r\n //window.location.reload();\r\n this.authorizeRpxSession();\r\n console.log('Called AzurToekn api call again on failure');\r\n }\r\n else {\r\n this.setState({ RPXLoginFail: true });\r\n }\r\n console.log(rejected);\r\n });\r\n } catch (error) {\r\n this.setState({ RPXLoginFail: true });\r\n console.log(error);\r\n }\r\n };\r\n\r\n onIdle = () => session.logout();\r\n\r\n updateToken = e => {\r\n setTimeout(() => {\r\n tokenUpdater(true);\r\n this.setState({ ...this.state, key: this.state.key + 1 });\r\n }, 3000);\r\n };\r\n\r\n render() {\r\n let tokenIsValid = (sessionStorage.tokenIsValid || false);\r\n let domain = helper.getDomain();\r\n //if (this.state.RPXLoginFail)\r\n let loginErrorHTML = (\r\n
    \r\n
    \r\n
    \r\n

    Error

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

    Access to Beta Denied

    \r\n
    \r\n This account has not been granted access to the Beta\r\n Environment. Click on the link below to be redirected to the\r\n Cloud Services Portal\r\n
    \r\n
    \r\n \r\n Subscriber Portal\r\n \r\n
    \r\n \r\n Login with another account\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n } else if (this.props.loggedIn || sessionStorage.loggedIn && tokenIsValid) {\r\n if (\r\n (this.state.customTheme && this.state.customThemeLoaded) ||\r\n !this.state.customTheme\r\n ) {\r\n // ** Start MFA code\r\n // read enterprise option; if set to 'Mandatory' (and no verification type) open MFA modal\r\n if (sessionStorage.enableMFA == \"true\" && sessionStorage.MFAOption === \"Mandatory\" &&\r\n !sessionStorage.verificationMethod &&\r\n (!sessionStorage.validMfa || config.decryptKey(sessionStorage.validMfa) == false)) {\r\n if (!sessionStorage.RPXLogin || sessionStorage.RPXLogin == false || sessionStorage.RPXLogin == \"false\") {\r\n return \r\n }\r\n }\r\n if (sessionStorage.enableMFA == \"true\" && sessionStorage.verificationMethod && (!sessionStorage.validMfa || config.decryptKey(sessionStorage.validMfa) == false)) {\r\n // disable for users emulating from RPX\r\n if (!sessionStorage.RPXLogin || sessionStorage.RPXLogin == false || sessionStorage.RPXLogin == \"false\") {\r\n return \r\n }\r\n }\r\n\r\n // ** End MFA code\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n {((helper.shouldApplyCustomizations() && this.sideBarLogo) || !helper.shouldApplyCustomizations())\r\n && \r\n }\r\n
    \r\n
    \r\n
    \r\n {tokenUpdater(this.props.requestToken)}\r\n
    \r\n );\r\n } else {\r\n const loadingLogo = session.customLogoLarge() || momentumLogoWhite;\r\n return (\r\n
    \r\n {/* {this.loadingAltText} */}\r\n {/* */}\r\n \r\n
    \r\n );\r\n }\r\n } else if (helper.atSupportLinksPath() && !helper.isRetailDomain(domain)) {\r\n if (\r\n (this.state.customTheme && this.state.customThemeLoaded) ||\r\n !this.state.customTheme\r\n ) {\r\n return (\r\n
    \r\n \r\n
    \r\n {/* {((helper.shouldApplyCustomizations() && this.sideBarLogo) || !helper.shouldApplyCustomizations())\r\n && \r\n } */}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n } else {\r\n const loadingLogo = session.customLogoLarge() || momentumLogoWhite;\r\n return (\r\n
    \r\n {/* {this.loadingAltText} */}\r\n {/* */}\r\n \r\n
    \r\n );\r\n }\r\n }\r\n else if (!this.state.loadingAccessToken && !tokenIsValid) {\r\n if (window.location.pathname == '/forgotpassword') {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n else if (window.location.pathname == '/resetpassword') {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n else if (window.location.pathname == '/ValidateTwoStepEmail') {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n else {\r\n // session.logout()\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n }\r\n else {\r\n const loadingLogo = session.customLogoLarge() || momentumLogoWhite;\r\n return (\r\n
    \r\n {/* */}\r\n {this.loadingAltText}\r\n \r\n
    \r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n loadingAccessToken: state.reducer.loadingAccessToken,\r\n loggedIn: state.reducer.loggedIn,\r\n requestToken: state.reducer.requestToken,\r\n beta_access_denied: helper.toBoolean(state.reducer.beta_access_denied),\r\n rpxLogin: state.reducer.rpxLogin,\r\n isMspLogin: state.reducer.isMspLogin,\r\n redirecting: helper.toBoolean(state.reducer.redirecting),\r\n validMfa: state.reducer.validMfa,\r\n };\r\n};\r\nconst mapDispatchToProps = { tokenRepo };\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(App);","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { Provider } from \"react-redux\";\r\nimport { store } from \"./store/store\";\r\nimport \"./index.css\";\r\nimport App from \"./App\";\r\nimport { unregister } from \"./registerServiceWorker\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\nunregister();\r\n","import * as config from \"./config\";\r\nimport * as settings from \"./../scripts/settings\";\r\nimport * as actions from \"./../store/actions\";\r\nimport { store } from '../store/store';\r\nimport * as session from '../scripts/session';\r\n\r\nexport const customFetch = async (apiPath, customHeaders, isJson = false ) => \r\n{\r\n \r\n return await fetch(apiPath, {method: \"GET\", headers: customHeaders})\r\n .then(response => {\r\n if (response.ok) {\r\n return isJson ? response.json() : response.text();\r\n } else {\r\n logResponseToConsole(response, apiPath);\r\n return null;\r\n }\r\n })\r\n .catch(error => {\r\n console.log(\"error: \" + error);\r\n return Promise.reject(error);\r\n });\r\n}\r\n\r\nexport const putDataWithCustomHeader = async (apiPath,body, customHeaders, isJson = false ) => \r\n{\r\n return await fetch(apiPath, {method: \"PUT\",body: body, headers: customHeaders})\r\n .then(response => {\r\n if (response.ok) {\r\n return isJson ? response.json() : response.text();\r\n } else {\r\n logResponseToConsole(response, apiPath);\r\n return response.status;\r\n }\r\n })\r\n .catch(error => {\r\n console.log(\"error: \" + error);\r\n return Promise.reject(error);\r\n });\r\n}\r\n\r\nexport const fetchData = async (apiPath, useHeaderWithTokenPolicy = false, autoRetry = true) => {\r\n \r\n \r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n if (useHeaderWithTokenPolicy) {\r\n \r\n const response = await checkForToken();\r\n \r\n if (response === \"timeout\") {\r\n return null;\r\n }\r\n }\r\n\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n headers: useHeaderWithTokenPolicy\r\n ? headersWithTokenAndPolicy()\r\n : config.headers()\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n return response.json();\r\n } else if (response.status === settings.unauthorized) {\r\n return autoRetry ? \r\n refreshTokenAndRetry(apiPath) :\r\n null;\r\n } else {\r\n logResponseToConsole(response, apiPath);\r\n return null;\r\n }\r\n })\r\n .catch(error => {\r\n console.log(\"error: \" + error);\r\n return Promise.reject(error);\r\n });\r\n};\r\n\r\nconst logResponseToConsole = (response, apiPath) => {\r\n if (response.status !== 404) {\r\n console.log(\"response: \" + response.status);\r\n console.log(\"API path: \" + apiPath);\r\n console.log(response);\r\n }\r\n};\r\n\r\nconst headersWithTokenAndPolicy = () => {\r\n return {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n};\r\n\r\nexport const postData = async (apiPath, body, headers = {\r\n 'Content-Type': 'application/x-www-form-urlencoded', \r\n 'Accept': 'application/json'\r\n } ) => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: \"POST\",\r\n body: JSONToFormUrlEndcodedString(body),\r\n headers: headersWithTokenAndPolicy()\r\n })\r\n .then(response => {\r\n return response.text().then(e => {\r\n return Promise.resolve({ ok: response.ok, message: e });\r\n });\r\n })\r\n .catch(error => {\r\n return Promise.reject(error);\r\n });\r\n};\r\n\r\nexport const postDataWithCustomHeader = async (apiPath, body, headers = null ) => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: \"POST\",\r\n body: JSONToFormUrlEndcodedString(body),\r\n headers: headers ? headers : headersWithTokenAndPolicy()\r\n }).then( response => {\r\n return response.text().then(e=>{\r\n return Promise.resolve({ok: response.ok, message: e});\r\n });\r\n }).catch(error => {\r\n return Promise.reject(error);\r\n });\r\n}\r\n\r\nexport const post = async (apiPath, method, data) => {\r\n //return await fetch(\"https://localhost:44330/api/\" + apiPath, {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: method,\r\n body: data,\r\n headers: headersWithTokenAndPolicy()\r\n }).then( response => {\r\n return response.text().then(e=>{\r\n return Promise.resolve({ok: response.ok, message: e});\r\n });\r\n }).catch(error => {\r\n return Promise.reject(error);\r\n });\r\n}\r\n\r\nexport const postSubmit = async (apiPath, body, includeToken = true, headers = null ) => {\r\n let defaultSubmitHeader = {\r\n 'Content-Type': 'application/x-www-form-urlencoded', \r\n 'Accept': 'text/html'\r\n };\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n let postHeader = {}; \r\n let formHeader = headers ? headers : defaultSubmitHeader;\r\n if (includeToken)\r\n postHeader = {\r\n \"Accept\": formHeader.Accept,\r\n \"Content-Type\": formHeader[\"Content-Type\"],\r\n Authorization: \"Bearer \" + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n else\r\n postHeader = {\r\n Accept: formHeader.Accept,\r\n \"Content-Type\": formHeader[\"Content-Type\"]\r\n };\r\n\r\n //postHeader = JSON.stringify(postHeader);\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: \"POST\",\r\n body: JSONToFormUrlEndcodedString(body),\r\n headers: postHeader\r\n })\r\n .then(response => {\r\n return response.text().then(e => {\r\n return Promise.resolve({ ok: response.ok, message: e });\r\n });\r\n })\r\n .catch(error => {\r\n return Promise.reject(error);\r\n });\r\n};\r\n\r\nexport const send = async (apiPath, method, data) => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: method,\r\n body: data,\r\n headers: headersWithTokenAndPolicy()\r\n })\r\n .then(response => {\r\n return response.text().then(e => {\r\n return Promise.resolve({ ok: response.ok, message: e });\r\n });\r\n })\r\n .catch(error => {\r\n return Promise.reject(error);\r\n });\r\n};\r\n\r\nexport const JSONToFormUrlEndcodedString = obj => {\r\n let formBody = [];\r\n for (let property in obj) {\r\n let encodedKey = encodeURIComponent(property);\r\n let encodedValue = encodeURIComponent(obj[property]);\r\n formBody.push(encodedKey + \"=\" + encodedValue);\r\n }\r\n return formBody.join(\"&\");\r\n};\r\n\r\nexport const saveFavoriteService = async item => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n let favService = JSON.stringify({ ServiceId: item.ServiceId });\r\n return await fetch(config.baseApiUrl + \"admin/FavoriteServices\", {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy(),\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\"\r\n },\r\n body: favService\r\n }).then(response => {\r\n if (response.ok) {\r\n return response.json();\r\n } else {\r\n console.log(\"statusText\", response.statusText);\r\n }\r\n });\r\n};\r\n\r\nexport const unfavoriteService = async item => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n let params = \"?id=\" + item.FavoriteServiceId;\r\n return await fetch(config.baseApiUrl + \"admin/FavoriteServices\" + params, {\r\n method: \"DELETE\",\r\n headers: config.headers()\r\n }).then(response => {\r\n if (response.ok) {\r\n return response.json();\r\n } else {\r\n console.log(\"statusText\", response.statusText);\r\n }\r\n });\r\n};\r\n\r\nexport const refreshRCListForMACDConfig = async (gridItem, selectedState) => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(\r\n config.baseApiUrl + \"admin/macd/GetRCListByState?RCState=\" + selectedState,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy(),\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\"\r\n }\r\n }\r\n ).then(response => {\r\n if (response.ok) {\r\n return response.json();\r\n } else {\r\n console.log(\"statusText\", response.statusText);\r\n }\r\n });\r\n};\r\n\r\nconst refreshTokenAndRetry = async apiPath => {\r\n requestNewToken();\r\n return checkForNewToken()\r\n .then(response => {})\r\n .then(data => {\r\n return fetchData(apiPath);\r\n });\r\n};\r\n\r\nconst requestNewToken = () => {\r\n // update redux store to show a token request is pending\r\n let action = { type: actions.REFRESH_TOKEN };\r\n store.dispatch(action);\r\n};\r\n\r\nconst checkForNewToken = apiPath => {\r\n return new Promise(resolve => tokenCheckInterval(resolve));\r\n};\r\n\r\nconst tokenCheckInterval = resolve => {\r\n let i = 0;\r\n let expiredToken = sessionStorage.accessToken;\r\n let interval = setInterval(() => {\r\n i++;\r\n if (expiredToken !== sessionStorage.accessToken) {\r\n console.log(\"token updated\");\r\n clearInterval(interval);\r\n resolve(\"ok\");\r\n } else if (i > 60) {\r\n // timeout after 1 minute\r\n // console.log('token request timed out');\r\n clearInterval(interval);\r\n resolve(\"abort\");\r\n }\r\n }, 1000);\r\n};\r\n\r\nexport const checkForToken = (token = 'accessToken') => {\r\n const accessTokenPromise = new Promise(async resolve => {\r\n // await sessionStorage.accessToken;\r\n await sessionStorage[token];\r\n resolve(\"ok\");\r\n });\r\n const timeout = new Promise((resolve, reject) => {\r\n setTimeout(() => {\r\n resolve(\"timeout\");\r\n }, 1000 * 60);\r\n });\r\n\r\n return Promise.race([accessTokenPromise, timeout]);\r\n};\r\n","import moment from \"moment\";\r\nimport * as session from \"../scripts/session\";\r\nimport * as apiCalls from '../requests/api_calls';\r\nimport * as config from '../requests/config';\r\nimport cssVars from \"css-vars-ponyfill\";\r\n\r\nexport const inProduction = () => process.env.NODE_ENV === \"production\";\r\n\r\nexport const atRootPath = () => window.location.pathname === \"/\";\r\n\r\nexport const atLoginPath = () => window.location.pathname === \"/session\";\r\n\r\nexport const atSupportLinksPath = () => window.location.pathname === \"/supportLinks\";\r\n\r\nexport const atDevicesPath = () => window.location.pathname === \"/devices\";\r\n\r\nexport const redirectHome = () => window.location.replace(\"/\");\r\n\r\nexport const redirectToLanding = () => window.location.replace(homePageUrl());\r\n\r\nexport const redirectToLogin = () => window.location.replace(\"/session\");\r\n\r\nexport const storedUserRole = () => sessionStorage.userRole;\r\n\r\nexport const urlIncludes = string => {\r\n return window.location.href.toLowerCase().indexOf(string) > -1;\r\n};\r\n\r\nexport const getDomain = () => {\r\n return window.location.hostname.match(/localhost/)\r\n ? process.env.REACT_APP_TEST_DOMAIN\r\n : window.location.hostname;\r\n};\r\n\r\nexport const isRetailDomain = domain => {\r\n return domain && domain.match(/momentumtelecom\\.com/i);\r\n};\r\n\r\nexport const isDigitalServicesDomain = domain => {\r\n return domain && domain.match(/mydigitalservices\\.com/i);\r\n};\r\n\r\nexport const IsWholesaleDomain = (domain = null) => {\r\n if (domain) {\r\n return !domain.match(/momentumtelecom\\.com/);\r\n }\r\n return !urlIncludes(\"momentumtelecom.com\");\r\n};\r\n\r\nexport const shouldApplyCustomizations = () => {\r\n const isWholesaleDomain = IsWholesaleDomain(getDomain());\r\n const isWholesaleUser = session.IsWholesale();\r\n\r\n return isWholesaleDomain && isWholesaleUser;\r\n};\r\n\r\nexport const getJSONFilePrefix = () => {\r\n const domain = getDomain();\r\n if (!domain) {\r\n return null;\r\n }\r\n\r\n if (domain.match(/mydigitalservices.com/i)) {\r\n return 'MyDigitalServices';\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport const getProductionUrl = () => {\r\n if (urlIncludes(\"momentumtelecom\"))\r\n return \"https://portal.momentumtelecom.com\";\r\n else return \"https://portal.mydigitalservices.com\";\r\n};\r\n\r\nexport const toBoolean = string => {\r\n if (string) {\r\n return string.toString() === true.toString();\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport const userHasNoServices = (service) => {\r\n return service.UserId > 0 && (service.ServiceId === 0 || service.ServiceId === null);\r\n}\r\n\r\nexport const numberWithDelimiter = (number) => {\r\n return number.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n};\r\n\r\nexport const userIsAdmin = () => {\r\n let role = storedUserRole();\r\n if (role === 'SUPER_ADMIN' || role === 'ALLGROUP_ADMIN' || role === 'GROUP_ADMIN')\r\n return true;\r\n else\r\n return false\r\n}\r\n\r\nexport const userIsSuperAdmin = () => {\r\n return storedUserRole() === 'SUPER_ADMIN'\r\n}\r\n\r\nexport const selectedUserIsAdmin = (role) => {\r\n if (role === 'SUPER_ADMIN' || role === 'ALLGROUP_ADMIN' || role === 'GROUP_ADMIN')\r\n return true;\r\n else\r\n return false\r\n}\r\n\r\nexport const userIsContactManager = () => {\r\n let role = storedUserRole();\r\n if (role === 'CC_ADMIN')\r\n return true;\r\n else\r\n return false;\r\n}\r\n\r\nexport const homePageUrl = () => {\r\n if (userIsAdmin()) {\r\n return '/admin'\r\n } else {\r\n return '/'\r\n }\r\n};\r\n\r\nexport const titleCasePhrase = (string) => {\r\n return string.split('_').map(word => titleCaseWord(word)).join(' ');\r\n}\r\n\r\nexport const titleCaseWord = (string) => {\r\n return string.charAt(0).toUpperCase() + string.substr(1).toLowerCase();\r\n}\r\n\r\nexport const isBlank = (service, sortField) => {\r\n let value = service[sortField] ? service[sortField].toString().trim() : null;\r\n return Boolean(value) == false;\r\n}\r\n\r\nexport const registrationLastUpdated = () => {\r\n // sends current time as time of last update\r\n return 'Registration status updated: ' + moment().format('M-DD-YYYY hh:mm:ss A');\r\n}\r\n\r\nexport const blanksAfterZ = (sortedSet, sort) => {\r\n let sortField = sort[0].field;\r\n let dir = sort[0].dir;\r\n let fieldBlanks = sortedSet.filter(service => isBlank(service, sortField));\r\n let fieldNonBlanks = sortedSet.filter(service => isBlank(service, sortField) == false);\r\n if (dir == 'asc') {\r\n return fieldNonBlanks.concat(fieldBlanks);\r\n } else {\r\n return fieldBlanks.concat(fieldNonBlanks);\r\n }\r\n}\r\n\r\nexport const StripHtml = (msg) => {\r\n if (msg == null || msg == undefined || msg === '') {\r\n return msg;\r\n } else {\r\n var doc = new DOMParser().parseFromString(msg, 'text/html');\r\n return doc.body.textContent;\r\n }\r\n}\r\n\r\nexport const filterNestedObject = (key, param, data) => {\r\n let filters = {};\r\n filters[key] = [param];\r\n let filteredData = data.filter(a => Object.keys(filters).every(b => filters[b].some(c => c == a[b])));\r\n if (filteredData && filteredData.length > 0) return filteredData;\r\n};\r\n\r\nexport const onlyUnique = (val, index, self) => {\r\n return self.indexOf(val) === index;\r\n};\r\nexport const devicePerms = () => {\r\n return sessionStorage.DevicePerms ? JSON.parse(sessionStorage.DevicePerms) : {};\r\n};\r\n\r\nexport const showEditGroupFqdnBtn = () =>\r\n devicePerms().Setup_GroupLevelFQDN === 1;\r\n\r\nexport const showEditGroupVlanBtn = () =>\r\n devicePerms().Set_GroupVLANID === 1;\r\n\r\nexport const convertToLocalTime = dateVal => {\r\n let offset = -5;\r\n if (isDST(dateVal))\r\n //if daylight savings time add an hour. database is eastern time\r\n offset += 1;\r\n offset *= -60;\r\n let offsetDiffMin = parseInt(offset - new Date().getTimezoneOffset());\r\n let convertedVal = new Date(dateVal);\r\n //return moment(convertedVal).add(offsetDiffMin, 'm');\r\n let test = convertedVal.setMinutes(convertedVal.getMinutes() + offsetDiffMin);\r\n return new Date(test);\r\n};\r\n\r\nDate.prototype.stdTimezoneOffset = dateVal => {\r\n var fy = dateVal.getFullYear();\r\n if (!Date.prototype.stdTimezoneOffset.cache.hasOwnProperty(fy)) {\r\n var maxOffset = new Date(fy, 0, 1).getTimezoneOffset();\r\n var monthsTestOrder = [6, 7, 5, 8, 4, 9, 3, 10, 2, 11, 1];\r\n\r\n for (var mi = 0; mi < 12; mi++) {\r\n var offset = new Date(fy, monthsTestOrder[mi], 1).getTimezoneOffset();\r\n if (offset !== maxOffset) {\r\n maxOffset = Math.max(maxOffset, offset);\r\n break;\r\n }\r\n }\r\n Date.prototype.stdTimezoneOffset.cache[fy] = maxOffset;\r\n }\r\n return Date.prototype.stdTimezoneOffset.cache[fy];\r\n};\r\n\r\nDate.prototype.stdTimezoneOffset.cache = {};\r\n\r\nexport const isDST = dateVal => {\r\n var dt = new Date(dateVal);\r\n return dt.getTimezoneOffset() < dt.stdTimezoneOffset(dt);\r\n};\r\n\r\nexport const StringReplaceAll = (stringValue, str1, str2, ignore) => {\r\n let test = stringValue.replace(new RegExp(str1.replace(/([\\/\\,\\!\\\\\\^\\$\\{\\}\\[\\]\\(\\)\\.\\*\\+\\?\\|\\<\\>\\-\\&])/g, \"\\\\$&\"), (ignore ? \"gi\" : \"g\")), (typeof (str2) == \"string\") ? str2.replace(/\\$/g, \"$$$$\") : str2);\r\n return test;\r\n};\r\n\r\nexport const ValidateIPaddress = (ipaddress) => {\r\n let regExp = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\r\n if (regExp.test(ipaddress)) {\r\n //console.log('valid');\r\n return true;\r\n } else {\r\n //console.log(\"You have entered an invalid IP address!\");\r\n return false;\r\n }\r\n}\r\n\r\nexport const processWholesaleCustomizations = async (customizations, LogoSmall, LogoLarge) => {\r\n\r\n const { BrowserIcon, VendorId, CSS } = customizations;\r\n const storeCustomImageResult = await storeCustomImages(LogoSmall, LogoLarge);\r\n\r\n if (!(VendorId === -1 && sessionStorage.getItem('vendorId') !== -1))\r\n storeVendorId(VendorId);\r\n\r\n updateSiteTheme(CSS);\r\n updateFavicon(BrowserIcon);\r\n return storeCustomImageResult;\r\n};\r\n\r\nconst updateSiteTheme = CSS => {\r\n if (!CSS || typeof CSS !== \"string\") {\r\n return false;\r\n }\r\n\r\n try {\r\n const tempReplacementStr = CSS.replace(\r\n /\\\"Arial Narrow Bold\\\"/,\r\n \"Arial Narrow Bold\"\r\n );\r\n const styles = JSON.parse(tempReplacementStr);\r\n let variables = {};\r\n\r\n Object.keys(styles).forEach(style => {\r\n let val = styles[style];\r\n variables[`--theme-${style}`] = val;\r\n });\r\n\r\n //added after implementation need to do lookup and set to 'previous' values\r\n if (!variables[\"--theme-profile_text\"] || variables[\"--theme-profile_text\"] === undefined)\r\n variables['--theme-profile_text'] = variables['--theme-nav_text'];\r\n if (!variables[\"--theme-nav_header_text\"] || variables[\"--theme-nav_header_text\"] === undefined)\r\n variables['--theme-nav_header_text'] = variables['--theme-nav_text'];\r\n if (!variables[\"--theme-primary_button_text\"] || variables[\"--theme-primary_button_text\"] === undefined)\r\n variables['--theme-primary_button_text'] = variables['--theme-linktext'];\r\n\r\n cssVars({ variables });\r\n } catch (e) {\r\n console.log(\"Error processing custom styles\");\r\n return false;\r\n }\r\n};\r\n\r\nexport const storeCustomImages = async (\r\n customSmallLogo = null,\r\n customLargeLogo = null\r\n) => {\r\n if (customSmallLogo || customLargeLogo) {\r\n const existingCustomSmallLogo = await session.customLogoSmall();\r\n const existingCustomLargeLogo = await session.customLogoLarge();\r\n\r\n if (!existingCustomSmallLogo && customSmallLogo) {\r\n sessionStorage.setItem(\"customLogoSmall\", customSmallLogo);\r\n }\r\n\r\n if (!existingCustomLargeLogo && customLargeLogo) {\r\n sessionStorage.setItem(\"customLogoLarge\", customLargeLogo);\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nexport const storeVendorId = vendorId => {\r\n sessionStorage.setItem(\"vendorId\", vendorId);\r\n return true;\r\n};\r\n\r\nexport const updateFavicon = logo => {\r\n if (logo) {\r\n const favicon = document.querySelector('link[rel=\"shortcut icon\"]');\r\n if (favicon) {\r\n favicon.setAttribute(\"type\", \"image/png\");\r\n favicon.setAttribute(\"href\", logo);\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nexport const setSiteTitleFromDomain = () => {\r\n const domain = getDomain();\r\n let titleBarText = \"\";\r\n if (!domain) {\r\n return;\r\n }\r\n\r\n if (isRetailDomain(domain)) {\r\n titleBarText = \"Momentum Telecom\";\r\n } else if (isDigitalServicesDomain(domain)) {\r\n titleBarText = \"My Digital Services\";\r\n }\r\n\r\n setTitle(titleBarText);\r\n};\r\n\r\nexport const checkPageTitle = () => {\r\n const currentTitle = document.querySelector('title');\r\n\r\n if (!currentTitle || currentTitle === '') {\r\n setSiteTitleFromDomain();\r\n }\r\n};\r\n\r\nexport const setTitle = title => {\r\n const titleEl = document.querySelector(\"title\");\r\n\r\n if (titleEl) {\r\n titleEl.text = title || '';\r\n }\r\n};\r\n\r\nexport const getB2CConfigResults = async currentUrl => {\r\n const staticJSONPrefix = getJSONFilePrefix();\r\n let b2cResults;\r\n if (staticJSONPrefix) {\r\n const filename = `${staticJSONPrefix}-UI-${process.env.REACT_APP_ENVIRONMENT}`;\r\n try {\r\n b2cResults = await import(`../../public/data/UISettings/${filename}`);\r\n } catch (e) {\r\n console.log('Error parsing JSON file');\r\n }\r\n } else {\r\n const apiPath = config.baseApiUrl + \"usr/WLGetB2CConfig?HostName=\" + encodeURI(currentUrl);\r\n const auth = \"Basic \" + btoa(\"msp\" + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n const apiHeaders = { \"Content-Type\": \"application/json\", Accept: \"application/json\", Authorization: auth };\r\n try {\r\n b2cResults = await apiCalls.customFetch(apiPath, apiHeaders);\r\n b2cResults = JSON.parse(b2cResults);\r\n } catch (e) {\r\n console.log('Pre login customization call failed');\r\n }\r\n }\r\n return b2cResults;\r\n}\r\n\r\n\r\n// SB 7/22/2021: remove, not used\r\n// export const OKTAConfig = async Username => {\r\n// let OKTAConfigResults;\r\n//\r\n// const apiPath = config.baseApiUrl + \"usr/OKTAConfig?Username=\" + encodeURI(Username);\r\n// const auth = \"Basic \" + btoa(Username + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n//\r\n// const apiHeaders = {\r\n// \"Accept\": \"application/json\",\r\n// \"Content-Type\": \"application/json;charset=UTF-8\",\r\n// Authorization: auth };\r\n// try {\r\n// OKTAConfigResults = await apiCalls.customFetch(apiPath, apiHeaders);\r\n// } catch (e) {\r\n// console.log('Pre login customization call failed');\r\n// }\r\n//\r\n// return OKTAConfigResults;\r\n// }\r\n\r\nexport const ValueOfBuildingTag = \"BLDG\";\r\nexport const ValueOfFloorTag = \"FLR\";\r\nexport const streetTypes = [\"ACRES\", \"ALY\", \"ANX\", \"ARC\", \"AVE\", \"BAY\", \"BCH\", \"BLF\", \"BLVD\", \"BND\",\r\n \"BR\", \"BRG\", \"BRK\", \"BTM\", \"BYP\", \"BYU\", \"C\", \"CHASE\", \"CIR\", \"CLB\", \"CLF\",\r\n \"CMN\", \"CMNS\", \"COR\", \"CORS\", \"CP\", \"CPE\", \"CRES\", \"CRK\", \"CRSE\", \"CRSG\",\r\n \"CRST\", \"CSWY\", \"CT\", \"CTR\", \"CTS\", \"CURV\", \"CV\", \"CYN\", \"DL\", \"DM\", \"DR\",\r\n \"Dr.\", \"DRS\", \"DV\", \"E\", \"END\", \"EST\", \"ESTS\", \"EXPWY\", \"EXPY\", \"EXT\", \"FLD\",\r\n \"FLDS\", \"FLS\", \"FLTS\", \"FOX\", \"FRG\", \"FRK\", \"FRST\", \"FRY\", \"FWY\", \"GDN\",\r\n \"GDNS\", \"GLN\", \"GRN\", \"GRV\", \"GTWY\", \"HBR\", \"HL\", \"HLS\", \"HOLW\", \"HT\", \"HTS\",\r\n \"HVN\", \"HWY\", \"INLT\", \"IS\", \"ISL\", \"ISLE\", \"JCT\", \"KNL\", \"KNLS\", \"KY\", \"LA\",\r\n \"LAND\", \"LDG\", \"LGT\", \"LK\", \"LKS\", \"LN\", \"LNDG\", \"LOOP\", \"LP\", \"MALL\", \"MDW\",\r\n \"MDWS\", \"MEWS\", \"ML\", \"MNR\", \"MNRS\", \"MT\", \"MTN\", \"NCK\", \"NE\", \"NK\", \"OAKS\",\r\n \"ORCH\", \"OVAL\", \"OVERLOOK\", \"PARK\", \"PASS\", \"PATH\", \"PIKE\", \"PINEY\", \"PK\",\r\n \"PKE\", \"PKWY\", \"PL\", \"PLAZ\", \"PLN\", \"PLZ\", \"PNE\", \"PNES\", \"PR\", \"PRT\", \"PT\",\r\n \"PTS\", \"RADL\", \"RAMP\", \"RD\", \"RD EXT\", \"RDG\", \"RDGS\", \"RDS\", \"RISE\", \"RIV\",\r\n \"RNCH\", \"ROW\", \"RPDS\", \"RST\", \"RTE\", \"RUN\", \"S\", \"SHL\", \"SHLS\", \"SHR\", \"SHRS\",\r\n \"SMT\", \"SPG\", \"SPGS\", \"SPUR\", \"SQ\", \"SQS\", \"ST\", \"ST EXT\", \"ST.\", \"STA\",\r\n \"STEET\", \"STRM\", \"STS\", \"TER\", \"TOP\", \"TPKE\", \"TRAK\", \"TRC\", \"TRCE\", \"TRL\",\r\n \"TURN\", \"TURNKPIKE\", \"UN\", \"UP\", \"VIA\", \"VIS\", \"VL\", \"VLG\", \"VLY\", \"VW\", \"W\",\r\n \"WALK\", \"WALL\", \"WAY\", \"WAYS\", \"WK\", \"WL\", \"WLS\", \"WOODS\", \"WYND\", \"XING\"]\r\n\r\nexport const CreateFullStreet1 = (address) => {\r\n\r\n let Result = \"\";\r\n if (address) {\r\n if (address.StreetNumber && address.StreetNumber.trim() !== '')\r\n Result += \" \" + address.StreetNumber.trim();\r\n // else if (address.HouseNumber && address.HouseNumber.trim() !== '')\r\n // Result += \" \" + address.HouseNumber.trim();\r\n\r\n if (address.StreetPrefix && address.StreetPrefix.trim())\r\n Result += \" \" + address.StreetPrefix.trim();\r\n\r\n if (address.StreetName && address.StreetName.trim())\r\n Result += \" \" + address.StreetName.trim();\r\n\r\n if (address.StreetType && address.StreetType.trim())\r\n Result += \" \" + address.StreetType.trim();\r\n\r\n if (address.StreetSuffix && address.StreetSuffix.trim())\r\n Result += \" \" + address.StreetSuffix.trim();\r\n }\r\n //console.log(\"trim\", Result.trim());\r\n return Result.trim();\r\n}\r\n\r\nexport const CreateFullStreet2 = (address) => {\r\n let Result = \"\";\r\n if (address) {\r\n if (address.UnitValue)\r\n Result = address.Unit.trim() + \" \" + address.UnitValue.trim();\r\n\r\n if (address.FloorValue && address.FloorValue.trim())\r\n Result = ValueOfFloorTag + \" \" + address.FloorValue.trim() + \" \" + Result;\r\n\r\n if (address.StructureNum && address.StructureNum.trim())\r\n Result = ValueOfBuildingTag + \" \" + address.StructureNum.trim() + \" \" + Result;\r\n }\r\n\r\n\r\n return Result;\r\n}\r\n\r\nexport function generateUUID() { // Public Domain/MIT\r\n var d = new Date().getTime();\r\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\r\n d += performance.now(); //use high-precision timer if available\r\n }\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n}\r\n\r\nexport function IsJsonString(str) {\r\n try {\r\n JSON.parse(str);\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\n// SB 08/18/2021: added arg. 'AppName'\r\nexport const checkIsUserValid = (Username, AppName) => {\r\n const apiPath = config.baseApiUrl + \"usr/OKTAConfig?Username=\" + encodeURI(Username) + \"&AppName=\" + encodeURI(AppName);\r\n const auth = \"Basic \" + btoa(Username + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n\r\n return apiCalls.customFetch(apiPath, {\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json;charset=UTF-8\",\r\n Authorization: auth\r\n }, true);\r\n}\r\n\r\nexport const SendResetPasswordLink = (Username) => {\r\n const apiPath = config.baseApiUrl + \"admin/GetPasswordResetLink?AzureUserName=\" + encodeURI(Username);\r\n const auth = \"Basic \" + btoa(Username + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n\r\n return apiCalls.customFetch(apiPath, {\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json;charset=UTF-8\",\r\n Authorization: auth\r\n }, true);\r\n}\r\n\r\nexport const ValidateResetPassword = (Url, password, userName) => {\r\n let resetPasswordDTO = {\r\n resetUrl: Url,\r\n newPassword: password\r\n }\r\n const auth = \"Basic \" + btoa(userName + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n const apiPath = config.baseApiUrl + \"admin/VerifyPasswordResetLink?resetUrl=\" + encodeURI(Url);\r\n return apiCalls.putDataWithCustomHeader(apiPath, JSON.stringify(resetPasswordDTO), {\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json;charset=UTF-8\",\r\n Authorization: auth\r\n }, true);\r\n}\r\n\r\nexport const VerifyTwoStepEmail = (Url, email, userName) => {\r\n let emailDTO = {\r\n resetUrl: Url,\r\n EmailAddress: email\r\n }\r\n const auth = \"Basic \" + btoa(userName + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n const apiPath = config.baseApiUrl + \"admin/VerifyTwoStepEmail?resetUrl=\" + encodeURI(Url);\r\n return apiCalls.putDataWithCustomHeader(apiPath, JSON.stringify(emailDTO), {\r\n \"Accept\": \"application/json\",\r\n \"Content-Type\": \"application/json;charset=UTF-8\",\r\n Authorization: auth\r\n }, true);\r\n}","import 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":""}