{"version":3,"sources":["images/m_logo.svg","utility/utility.js","components/global_search.js","constants/urls.js","components/ellipsisHeaderTooltip.js","components/mfa/tooltip.js","components/dropdown_menu.js","E911retail.pdf","E911WL.pdf","containers/login/modals/loginModals.js","containers/modals/termsAndConditionsModal.js","containers/navigation/navbar.js","containers/voicemails/voicemail.js","containers/modals/voicemailSettingsModal.js","containers/voicemailSettingsButton.js","containers/modals/manageGreetingsModal.js","containers/manageGreetingsButton.js","components/save_status.js","containers/voicemails/modals/messageDepositButton.js","containers/modals/voicemailBlockModal.js","containers/modals/voicemailDeleteModal.js","containers/voicemails/modals/pinResetModal.js","components/infopop.js","components/long_switch.js","containers/voicemails/card.js","components/bs_call_logs_tab.js","components/sansay_call_logs_tab.js","components/fax_call_logs_tab.js","containers/call_logs.js","containers/basic_features.js","containers/profile/modals/e911Modal.js","containers/profile_info.js","containers/applications.js","components/wordWrappedCell.js","containers/profile/modals/addEditUserContactModal.js","containers/user_contact_widget.js","containers/dashboard.js","containers/callRecording/voiceUserSettings.js","containers/callRecording/callRecordingUsers.js","containers/callRecording/callRecording.js","scripts/icons.js","components/service_selector.js","components/deviceStatuses.js","containers/modals/servicesChangePasswordModal.js","containers/modals/servicesResetSettingsModal.js","constants/filters.js","components/ServiceMACClickPop.js","components/macAddressCell.js","containers/services.js","containers/sips.js","components/super_link.js","images/credit-card-logos.png","containers/modals/payModal.js","containers/admin/billing_card.js","containers/admin/fav_services.js","containers/admin/call_chart.js","containers/admin/quick_view.js","containers/admin/devices.js","containers/admin/activity_history.js","containers/admin/ticket_count_widget.js","components/toolTipCell.js","containers/admin/starred_tickets_widget.js","containers/admin/vm_report_widget.js","containers/admin/circuits_card.js","containers/admin.js","containers/profile/modals/editProfileModal.js","containers/profile/modals/changePasswordModal.js","containers/profile/modals/changeEmailModal.js","components/mfa/mfaModal.js","containers/profile.js","containers/billing/billing_main.jsx","containers/modals/editContactCenterModal.js","containers/contact_center.js","containers/locations/modals/locationAnnouncementRepositoryModal.js","components/audioUpload.js","containers/modals/annoucementsModal.js","containers/modals/agentsModal.js","containers/modals/statsModal.js","containers/modals/supervisorsModal.js","containers/modals/distinctiveRingModal.js","containers/modals/dnisModal.js","containers/modals/queueStatusModal.js","containers/modals/callDispositionCodeModal.js","containers/modals/acdForcedModal.js","containers/modals/acdHolidayModal.js","containers/modals/acdNightModal.js","containers/modals/queueBouncedModal.js","containers/modals/queueComfortModal.js","containers/modals/queueOverflowModal.js","containers/modals/queueStrandedModal.js","containers/modals/weightedModal.js","containers/contact_center_settings.js","containers/locations/modals/E911EmailNotificationModal.js","containers/locations/index.js","containers/locations/modals/locationEditModal.js","containers/locations/modals/locationAccountCodesModal.js","containers/locations/modals/locationAdvancedHuntingModal.js","containers/setPrompts.js","containers/locations/modals/locationAutoAttendantModal.js","containers/setSubmenu.js","containers/locations/modals/locationAutoAttendantTreeModal.js","containers/locations/modals/locationCallParkModal.js","containers/locations/modals/locationCallPickupModal.js","containers/locations/modals/locationConferenceBridgeListModal.js","containers/locations/modals/locationInstantConferenceModal.js","containers/locations/modals/locationMusicOnHoldModal.js","containers/locations/modals/locationSeriesCompletionModal.js","containers/locations/modals/locationManageLinesModal.js","containers/locations/modals/locationCustomContactDirectoryModal.js","containers/locations/modals/locationManageUsersModal.js","containers/locations/modals/locationManageGroupCallingLineIDModal.js","containers/modals/scheduleModal.js","containers/modals/departmentModal.js","containers/modals/enterpriseDirectoryModal.js","containers/locations/locations_helpers.js","containers/locations/modals/groupFqdnModal.js","containers/locations/modals/groupVlanModal.js","containers/locations/location_details.js","containers/devices/devices_helpers.js","containers/devices/components/macFormatsClickPop.js","containers/devices/components/port_settings.js","containers/devices/components/config_switches.js","containers/devices/modals/configureDevicesModal.js","containers/devices/modals/deviceHistoryModal.js","containers/devices/modals/deviceResetModal.js","containers/devices/modals/deviceSettingsModal.js","containers/devices/modals/deviceAddModal.js","containers/devices/modals/deviceEditModal.js","components/serviceTnClickPop.js","containers/devices/components/groupFQDNTab.js","containers/devices/components/groupVLANTab.js","containers/devices/index.js","containers/macd/components/macd_helper.js","containers/macd/modals/orderResultModal.js","containers/macd/components/validationMessagePopup.js","containers/macd/components/validationCell.js","containers/macd/components/macdSearch.js","containers/macd/tabs/blockTab.js","containers/macd/tabs/cnamTab.js","containers/macd/tabs/extensionTab.js","components/infoCell.js","containers/macd/modals/pricebook.js","containers/macd/tabs/lineTab.js","containers/macd/tabs/listingTab.js","components/SavingMessageControlE911.js","components/e911AddressForm.js","containers/macd/tabs/seatTab.js","containers/macd/tabs/virtualTab.js","containers/macd/modals/macd_order.js","containers/macd/components/dropdownFilter.js","containers/macd/components/order_listings.js","containers/macd/tabs/openReqTab.js","containers/macd/tabs/ipTrunkTab.js","containers/macd/macd.js","containers/macd/macd_all.js","components/AddServicesSaveStatus.js","containers/modals/uploadOrderModal.js","containers/macd/modals/configureProductModal.js","containers/macd/macd_add.js","containers/macd/macd_review.js","containers/macd/macd_confirm.js","containers/macd/modals/macdUserModal.js","containers/macd/macd_user.js","containers/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_white.png","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/components/utility.js","containers/microsoftTeams/msteams_menu.js","containers/microsoftTeams/msteams_setup_domain.js","containers/microsoftTeams/msteams_dns.js","containers/microsoftTeams/msteams_sbc.js","containers/microsoftTeams/msteams_temp.js","containers/microsoftTeams/msteams_dr.js","containers/microsoftTeams/migration.js","containers/microsoftTeams/components/tn_search.js","containers/microsoftTeams/msteams_routing_menu.js","containers/microsoftTeams/tabs/voice_route.js","containers/microsoftTeams/tabs/voice_policy.js","containers/microsoftTeams/msteams_tenantinfo.js","containers/microsoftTeams/msteams_main.js","containers/microsoftTeams/components/manage_user_config.js","containers/webex/main.js","containers/circuitsMonitoring/circuits_alerts.js","containers/circuitsMonitoring/circuits_list.js","containers/circuitsMonitoring/circuits_chart.js","containers/circuitsMonitoring/dashboard.js","containers/circuitsMonitoring/graphing/d3-line-chart.js","containers/circuitsMonitoring/graphing/components/axis.js","containers/circuitsMonitoring/graphing/components/area.js","containers/circuitsMonitoring/graphing/components/tools.js","containers/circuitsMonitoring/graphing/components/legend.js","containers/circuitsMonitoring/graphing/full_graph.js","containers/circuitsMonitoring/graphing/graph_component.js","containers/circuitsMonitoring/graphing/graphing_dash.js","components/mfa/mfaAdminTool.js","containers/operator-connect-v1/oc_config.js","containers/operator-connect-v1/oc_menu.js","containers/operator-connect-v1/tabs/voice_route.js","containers/operator-connect-v1/tabs/voice_policy.js","containers/operator-connect-v1/oc_tenantinfo.js","containers/operator-connect-v1/phoneNumbers.js","containers/operator-connect-v1/fax_list.js","containers/operator-connect-v1/oc_main.js","containers/operator-connect-v1/components/tn_search.js","containers/operator-connect-v1/components/manage_user_config.js","containers/operator-connect-v1/components/user_search.js","containers/operator-connect-v1/components/manage_phone_config.js","containers/navigation/sidebar.js","components/footer.js","containers/login.js","scripts/full_story.js","components/countdownTimer.js","containers/modals/idleWarningModal.js","components/idle_logout.js","thirdparty/react-timer-component/lib/Timer.js","containers/modals/testResultModal.js","containers/noAuth/supportLinks.js","containers/login/login.js","containers/login/forgotPassword.js","containers/login/modals/validateMFAmodal.js","containers/login/modals/mfaModal.js","App.js","registerServiceWorker.js","index.js","requests/api_calls.js","scripts/helper.js","components/spinners.js","requests/config.js","store/reducer.js","store/redux.js","../public/data/UISettings lazy /^/.*$/ groupOptions: {} namespace object","scripts/settings.js","scripts/session.js","store/actions.js","store/store.js","containers/login/resetPassword.js","containers/login/mfaEmailValidateRedirect.js","images/momentum_logo.png","images/warn-icon.png"],"names":["arraysEqual","a","b","length","i","Priority","Weight","IsAssigned","checkBillingAccount","account","sessionStorage","userEnterpriseNumber","userType","userTypeId","sp","serviceProviderName","startsWith","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","BillingCard","fetchBillingStat","CustomerAccountNumber","getItem","ex","AccountBalance","currency","code","Street1BILL","Street2BILL","CityBILL","StateBILL","ZipBILL","InvoiceAmount","InvoiceDueDate","toLocaleDateString","InvoiceURL","InvoiceID","invoiceLink","getInvoice","downloadInvoice","invoiceBtn","addressPartTwoSeparator","billingData","process","downloading","enterpriseType","FavServices","pageable","take","total","onPageChange","firstAndLastName","favServicesTable","FirstAndLastName","yearMonthDay","internal_color","inbound_color","outlocal_color","outLD_color","international_color","other_color","setFromDate","totalDays","daysAgo","today","CallChart","filterCallActivity","fromDate","toDate","apiPathAndParams","callActivityFilterString","fetchCallActivity","filterString","status","apiReturn","loadTimeExpired","forcedLoadTime","count","reduce","currentValue","ALL_CALLS","callActivity","dateCounts","internal","mapCallActivity","inbound","outboundLocal","outboundLd","international","other","propertyName","startDate","endDate","add","diff","dates","unshift","date","dataItems","CallDate","setDateRange","dateRangeVisibility","redrawChart","setCallFilter","filterKey","setCustomDate","validCustomDate","isBefore","_i","callCounts","category","countsArray","noResults","maxCount","counts","values","flatCounts","Array","prototype","max","chartOptions","legend","seriesDefaults","series","chartSeries","chartArea","valueAxis","line","minorGridLines","labels","rotation","categoryAxis","categories","majorGridLines","tooltip","template","chartContent","handleSetLegend","legendItem","legendItems","legendName","internalLegend","inboundLegend","outLocalLegend","outLdLegend","internationalLegend","otherLegend","notSelectedItems","prop1","prop2","prop3","prop4","prop5","selectedItem","callCategoryHyperlink","transition","handleSetOutLocalLegend","handleSetOutLdLegend","handleSetInternationalLegend","chartSeriesConfig","seriesList","backgroundColor","evt","QuickView","fetchStats","CountLocations","CountServices","CountUsers","CountDevices","CountServicesUsers","quickViewContent","defaultSelection","Devices","fetchDeviceStats","forcedRefresh","devicesProvisioned","CountProvisioned","devicesRegistered","CountRegistered","devicesUnregistered","CountUnregistered","linesRegistered","CountLinesRegistered","linesUnregistered","CountLinesUnregistered","CountTotal","registrationLastUpdated","previousLocationValue","selectedLocationValue","fetchLocations","locationOptions","locationOption","LocationName","filterLocations","stateChanges","manageBtn","categoryLabel","linkClass","getCount","filterValue","displaySide","devicesSummary","ActivityHistory","fetchHistory","sortedHistory","ActivityDate","historyItemDiv","historyItem","ActivityURL","findServiceByHistoryItem","numOrExt","ServiceNumberOrExtension","utc","fromNow","TicketingCountsWidget","fetchTicketCountData","fetchTicketStats","fetchContactList","options","ContactId","ContactOptions","LocationOptions","parsedList","locationList","TicketStats","isSFIDNull","handleChangeContact","handleChangeLocation","ticketFilterDropDown","paddingBottom","ticketRow","description","borderBottom","marginBottom","fontWeight","setTicketView","transitionToAllTickets","Closed","Escalated","Open","PendingCustomer","Updated","Starred","Total7","paddingLeft","hasTicketing","transitionToNewTicket","Listings","ToolTipCell","StarredTicketingWidget","fetchTicketList","Term","QueryLocator","TicketList","ticket","LastModifiedDate","userTimeZone","columnWidth","DataLink","favoriteTicket","newTickets","updateTicket","transitionToTicketDetail","TicketNumber","listings","VmReport","componentDidMount","hasVmUsageReport","fetchVm","VMLastAccessDateTime","VMLastAccessDateTimeDisplay","local","columnWidthStats","wrapper","hasPermission","CustomWrapperCell","styles","overflowWrap","cellData","transitionToVmReport","CircuitCard","fetchCircuits","CircuitList","upCircuits","ActiveStatus","downCircuits","offlineCircuits","textDecorationLine","Admin","componentWillReceiveProps","hasDevices","ipTrunkingOnly","showFavServices","showActivityHistory","showStarredTicketingWidget","showQuickView","showDevices","showCallChart","showTicketingCountsWidget","transitionToCallLogDetails","favServices","activityHistory","starredTickets","quickView","callChart","ticketingCount","vmReport","isIpTrunkingOnly","isSuperAdmin","userIsSuperAdmin","DialingFirstName","DialingLastName","Timezone","NetworkClassOfService","Country","Zip","EditProfileModal","currentUser","CurrentUserProfile","admin","isAdmin","GroupName","IMAPID","ServiceProviderId","GroupId","ID","AlternatePhone","States","Languages","Timezones","Departments","NetworkClassOfServices","valid","fetchAdminProfileInfo","fetchUserProfileInfo","splice","getSaveBody","CustomerProductId","DepartmentName","NCOS","IMAP_ID","handleSaveNew","updateProfilePage","updateByProps","editAvailableApi","getModalBodyContent","getAdminForm","getBroadsoftUserForm","getUserForm","headerValues","GetHeaderValues","stateDropDownOptions","ProfileTextField","maxlength","ProfileDropdownField","Password1","Password2","ChangePasswordModal","password1","password2","validMessage","ValidPassword","pw","test","Password","getValidationError","getBtn","superlink","PasswordEmail","ServiceAndCpniEmail","ChangeEmailModal","isValidEmail","fetchEmail","changeEmail","ChangeEmail","ce","loadingError","passwordEmail","serviceAndCpniEmail","changeUserEmailApi","getBodyContent","ChangeEmailValues","GetEmailValues","MFAAuthModal","handleOpen","validationError","pinCode","verificationMethod","isTextMessageOn","isAuthAppOn","onSuccessSMS","onSuccessSubmitPinCode","oktaId","isOktaPushEnabled","fetchUserEmail","getQRImageUrl","loadingQR","tsv","qrImageUrl","qrKey","getOktaQRImageUrl","qrOktaImageUrl","enableOktaPush","confirmOktaVerify","submitPhoneNumber","storedPhoneNumber","phoneNumber","getTFAUserData","Key","Code","VerificationMethod","EnableOktaPush","OktaId","onSubmitAuthPinCode","onSendPushNotification","errorContent","sendEmailValidate","getMethod","IsOktaPushEnabled","showGrabEmailForm","isOkta","justifyContent","autoFocus","MfaAllowSms","alignItems","onKeyDown","enforceFormat","formatToPhone","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","BillingMain","availableLocations","setAvailableLocations","customerInfo","setCustomerInfo","billingAddr","setBillingAddr","currentBill","setCurrentBill","paymentHistory","setPaymentHistory","selectStatement","setSelectStatement","invoices","setInvoices","recentInvoices","setRecentInvoices","setLoading","accNum","setAccNum","setURL","invoiceNotFoundData","setInvoiceNotFoundData","currentYear","getFullYear","years","downloadPdfRef2","useRef","iframeRef","modalDisplay","setModalDisplay","downloadCsvRef","isCustomerProfileSectionCollapsed","setIsCustomerProfileSectionCollapsed","isBillsSectionCollapsed","setIsBillsSectionCollapsed","isRecentActivitySectionCollapsed","setIsRecentActivitySectionCollapsed","isCurrentBillingMethodSectionCollapsed","setIsCurrentBillingMethodSectionCollapsed","isStatementsSectionCollapsed","setIsStatementsSectionCollapsed","collapseHeaderSectionStyle","borderTopRightRadius","borderTopLeftRadius","useEffect","hasBillingAdminPermission","getBillingData","handleSetUp","isDefaultPrevented","getURL","RecurringPaymentMethod","Balance","handleProcess","BillingAccountNumber","AvailableBillingLocations","BillingAddress","CurrentBill","Payments","Invoices","invoicesLastMonth","invoice","currentDate","invoiceDate","InvoiceDate","previousMonth","getMonth","previousMonthYear","invoiceDateMonth","invoiceDateYear","getIP","fetch","Error","json","ip","bal","recurringPaymentMethod","returnUrl","amount","pageId","reqParam","billingAccountNumber","clientIP","parsedResponse","NumberWithBrackets","number","isNegative","formattedNumber","toLocaleString","minimumFractionDigits","maximumFractionDigits","exportCallLogs","URLSearchParams","InvoiceId","pattern","exportInvoiceGo","row","col1","col2","noBorder","xs","md","lg","xl","btnStyle","textWrap","borderBottomRightRadius","borderBottomLeftRadius","paddingtop","start","depth","required","BillingModalContent","keys","stroke","strokeWidth","strokeLinecap","strokeLinejoin","background","RecurringPaymentMethodDisplay","CurrentBalance","PastDue","DueDate","sm","pay","PaymentAmount","PaymentDate","borderLeft","bsStyle","bsSize","AmountWithCreditIssued","document","getElementById","testExport2","EditContactCenterModal","ContactCenter","LocationAnnouncementRepositoryModal","AudioUpload","changeRecurs","handleAddAudioNumber","numberOfAudioCount","numberOfAudioLimit","recurValue","audioNumberCountReachLimit","getInputs","times","visibility","AnnoucementsModal","handleSelect","getConfig","onSelect","expandMode","expanded","focused","AgentsModal","autoClose","dataSource","StatsModal","handleAddPhoneNumber","numberOfPhoneCount","numberOfPhoneLimit","SupervisorsModal","DistinctiveRingModal","DNISModal","QueueStatusModal","CallDispositionCodeModal","AcdForcedModal","AcdHolidayModal","changeAction","actionValue","AcdNightModal","QueueBouncedModal","QueueComfortModal","QueueOverflowModal","QueueStrandedModal","ConfigureProductModal","E911EmailNotificationModal","emailAddress","EmailAddress","displayAddress","DisplayEmailAddress","CurrentLocation","EmergencyCallNotificationEmail","IsEmailValid","selectedLocationAccountNumbers","selectedLocations","Locations","saveMessage","DisplayEmail","updateParentArrayItem","SendTestEmail","savingTest","StreetAddress","savingShowTestSuccess","savingShowTestError","testResultsMessage","handleEmailChange","LocationOverride","SelectAllLocations","isSelectAll","isAllLocationsSelected","UpdateSelectedLocations","getCheckBoxHeader","getCheckBoxListing","bChecked","getLocationRows","getLocationsCheckBoxList","getTestResultMessage","LocationOverride911Email","emailDisplay","textDisplay","colspan","LocationLink","locationID","ServiceLink","UserLink","LocationEditButton","getLocations","updateLocationFromModal","updatedLocations","loc","updatedLocation","prefilter","searchLocations","salesGroupId","E911EmailModal","E911Link","locationsContent","Location911Email","StreetSVC","CitySVC","StateSVC","ZipSVC","sortLocations","locationEditModal","LocationAccountCodesModal","LocationAdvancedHuntingModal","SetPrompts","LocationAutoAttendantModal","handleTab","promptValue","dataset","getPromptControl","SetSubmenu","LocationAutoAttendantTreeModal","locationCallPark","largeStep","showButtons","LocationCallPickupModal","LocationConferenceBridgeListModal","LocationInstantConferenceModal","phoneNumberCountReachLimit","LocationMusicOnHoldModal","LocationSeriesCompletionModal","LocationManageLinesModal","LocationCustomContactDirectoryModal","LocationManageUsersModal","LocationManageGroupCallingLineIDModal","ScheduleModal","getRecurMonths","getRecurDays","getRecurWeekOfMonths","getTitle","getInfo","getRecurrentControl","getTime","getRecurEnd","DepartmentModal","getDepartmentSettings","EnterpriseDirectoryModal","savingOrConfirming","footerBtnClass","hideSpinnerDelay","statusMsgDelay","GroupFqdnModal","fetchFqdns","locationAccNum","fqdnList","fqdns","fetchDeviceLocation","currentFqdn","FQDN","newFqdn","EncryptedAudio","TransportProtocol","useTcp","VlanId","useVlanId","help","fqdnsOptions","fqdn","fqdnsOption","setNewFqdn","showErrorStatus","handleUpdateSuccess","parentCallback","handleUpdateError","saveDeviceLocationInput","showSaveStatus","getModalBody","modalClass","GroupVLANModal","setUseVlanId","setVlanId","validateForm","setUseTcp","protocol","setAudioIsEncrypted","validForm","showValidationError","saveGroupVlanSettings","notSavedErrorMsg","vlanIdDivSettings","attr","saveBtnsClass","formClass","addingDevice","invalidMessageClass","showInvalidMacMsg","showRequiredFieldMsgs","invalidFields","showInvalidMessage","invalidSwapMacMsgClass","showInvalidSwapMacMsg","validMacClass","showValidMacMsg","fetchModels","fetchDeviceTns","fetchDeviceSelectOptions","fetchDeviceConfig","fetchDeviceAndTns","deviceProps","fetchDeviceLocationProps","locationProps","deviceTns","LocationFQDN","LocationVLAN","LocationTransportProtocol","LocationEncryptedAudio","TransactionNumbers","fetchModelConfigs","fetchDeviceConfigs","configProps","device","initialFormState","deviceIsAssigned","AssignedTo","onlyUnique","self","tnProps","tn","transactionNums","macAdressFormats","showOn","autoHide","ReactDOMServer","renderToStaticMarkup","spanOptions","Lk","portNum","disableIfTnMissing","disableBlfForFirstPort","propName","disableBlfIfFirstLineisSca","matches","portsConfigured","port","PortNumber","Sca","firstPortIsSca","isDisabled","disableIfNotAvailableForModel","isScaAndNotExecutiveLine","modelConfig","selectedModelConfigs","IsMWIAvailable","ticker","lineTypeTicker","TnComboBox","selectedValue","selectedTn","tnNumbers","newTn","TnAndLine","onChangeCombo","comboPortNum","textField","dataItemKey","onFilterChange","tnOptions","returnVals","availableTns","LineName","portSettingCheckBoxes","isDisabledVal","tooltipText","setStateCallback","portSettings","resize","DisplayName","Span","TCP","switchClass","parentState","VlanClass","encryptedAudioSwitchClass","hideSwitch","modelConfigs","TlsFqdn","protocolSwitchClass","validVlanId","vlanIdValidationClass","EnableVlanIdText","updateVlanField","isNone","finalConfigProps","invalidVlanId","isValidVlan","switchHandler","groupIpTransportProtocolSettings","protocolRadioButton","isSelected","perms","DevicePerms","setProtocol","Audio_Signaling","configSwitches","tcpOrUdp","switchProtocol","enableVlan","CurrentVlanId","setEnableVlan","boxShadow","outline","TextVlanId","vlanId","updateVlanId","UseLineKeysForBLFList","setSideCarOnlyBlfPlacement","isEnabled","newConfigProps","setEncryptedAudio","IsVideoEnabled","setVideoIsEnabled","deviceType","Ports","newDeviceModel","NewMAC","IsFirstPortMWI","invalidMacMsg","enableSwapDevice","showRebootSuccess","showRebootFailure","ConfigureDevicesModal","setOptions","models","deviceModels","setDeviceConfiguration","DeviceType","matchedDeviceConfig","Fqdn","revisedPorts","reviewAndOverrideDisabled","IsVlanAvailable","startingState","unassignedDevices","resetState","matchedNumber","ph","getBlankPort","deviceMatches","DeviceModelKey","handleSwapDevice","handleEnableTransportProtocol","enableTransportProtocol","handleRebootSuccess","pageThis","handleRebootFailure","handleSaveSuccess","loadDevices","showSuccessModal","closeSaveMessage","showErrorAndResetModal","numberOfPorts","NumberOfPorts","noUnassignedDevices","devicesAreAvailable","showUnassignedDevicesLink","showNewMacField","isSwapModelDisabled","unassignedMacOptions","MacAddress","rebootDevice","saveDevice","devicePropsToSend","setInvalidFormMessage","deviceModelSelection","configuredPorts","TlsSrtp","IsSwapOperation","ports","invalidFormMsg","saveButton","invalidFormClass","swapDeviceClass","Assigned","globalHelper","Swap_Device","FqdnSelection","selectedFQDN","IsFQDNAvailable","Setup_FQDN","setFqdn","newDeviceSelector","validateSwapDeviceModel","DevicyType","lineSettingsTable","portSettingRows","setPortSetting","portnum","propname","newPorts","findOrInitializePortsSettings","portIndex","setPhoneOrExt","spanValue","spannedPort","SipAuthenticationId","LineTypeTicker","portClone","portIds","numPorts","apply","portMatches","isExecutive","portId","tns","filterTnsByTicker","usedTNs","isFaxModel","modelName","RegExp","matchingPorts","selectedTnOption","lineIsSpanned","Mwi","lineTicker","MWI","Blf","Cc","IsDelete","spannedPorts","handleMacChange","newMac","newConfig","modelMatches","dev","MakeModel","deviceSelection","handleDeviceSelection","NewMacChange","AssignedToLabel","RequestSentLabel","RequestSent","DeviceHistoryModal","fetchDevicesHistory","devicesHistory","sortHistory","uniqHistory","DeviceResetModal","isAssigned","unassignOrRemoveLabel","showStatus","successMsg","unassign","option","buttonClass","paragraphClass","unassignOrRemoveButton","acqCode","fields","isRpxSession","loadingLocations","initialValue","DeviceSettingsModal","fetchDeviceInfo","assigned","AcquisitionCode","notes","Notes","originalDeviceProps","showOriginalValues","currentDeviceProps","deviceModalOptions","checkFields","clearFormAndCloseModal","showAll","showFailedToSaveForm","postDeviceInput","successAction","p","deviceInputData","newMAC","saveDeviceAndAddNew","setDeviceNotes","fetchDeviceModels","deviceModelOptions","deviceModel","deviceModelOption","acqCodeClass","acqCodeOptions","selectField","fieldType","validateSelectField","selectFieldValue","deviceNotesField","noteFieldValue","newInvalidFields","Set","validateMacField","macAddressFieldValue","instructions","showModalBtn","DeviceAddModal","DeviceEditModal","assignedTo","ServiceNumberClickPop","showTns","portsRevised","newPort","loadTnList","TnCount","GroupFqdnTab","currentLocation","DeviceLocation","loadLocationDetails","currLocation","setLocation","locationValue","retrieveFQDNDetails","FQDNDetails","DeviceLocationDetails","setFQDNList","setDeviceLocationDetails","resetForm","getTabBody","GroupVLANTab","fetchVLANSettings","HistoryBtn","ServiceNumbersClickPop","DevicesList","bShowAll","activeTab","fetchDevices","forceRefresh","setFullListings","devicesCount","fetchDevicesCallback","allDevices","visibleDevices","normalizedData","VideoEnabled","InsertDate","assignedDevices","allDevicesNoFilter","showAssigned","sortDevices","showUnassigned","unassigned","showAllDevices","showGroupFQDN","showVLANSettings","searchDevices","exportDevicesBtn","exportDevices","tabContent","configureBtn","Delete_ExistingDevice","unassignBtn","tabClass","EmptyCell","emptyCell","IsRegistered","RegistrationType","ConfigureBtn","UnassignBtn","currentTab","existingArray","Setup_NewDevice","apiGetMACDPermissions","apiGetUserLevelAddons","loc_acct_num","apiGetUserAvailableAddons","partNum","apiGetUserAssignedAddons","apiPostUnassignedAddons","apiPostAssignedAddons","apiGetLocations","apiGetProductPropertiesWithParams","PartNumber","apiLoadMACDWithParams","OrderId","apiLoadMACDLineItemList","apiLoadMACDLineItemDetailListWithProperties","LineItemId","apiGetTerminatingNumbersWithParams","LocationId","apiAddServicesOrderWithLineItem","apiAddServicesSaveLineItem","apiAddServicesDetailItem","apiUpdateDetailItem","apiUpdateLineItem","apiSavedOrderPathWithParams","apiPricebookPathWithParams","apiGetRCStateList","apiGetDefaultRateCenterDetails","apiGetRCNameByState","abbr","apiDiscardOrder","apiDiscardLineItem","apiDiscardItemDetail","apiDiscardTrunkGroupConfig","apiGetLocationList","apiGetLocationDetails","apiValidateMACD","apiValidateMACDLineItems","apiValidateMACDDetailItems","apiGetMPOLocation","apiUpdateLocation","apiSubmitOrder","apiTerminateOrder","apiGetListingsForChangeExtension","apiUpdateExtension","apiGetChangeLineTypeListings","MomentumAccountNumber","apiSubmitChangeLineType","apiGetChangeListingList","apiSubmitChangeListingList","apiGetChangeSeatType","apiSubmitChangeSeatType","apiGetChangeCnam","apiSubmitChangeCnam","apiGetBlockType","apiSubmitBlockType","apiGetVTNList","apiSubmitVTN","apiRetrieveIPTrunks","apiLoadMACDTrunkItemListWithProperties","apiLoadMACDAddressListWithProperties","apiAddServicesIPTrunkItem","apiUpdateTrunkItem","apiDiscardTrunkItem","apiValidateTrunkItem","IPTrunkConfigId","locationSelectLabel","locationAcctNumber","fetchItemConfig","fetchRateCenterDetailsByServiceAddress","fetchTerminatingNumbers","fetchLocationDetails","fetchRateCenterOptions","StateAbbr","fetchAvailableAddons","locationId","RetrieveOrderDetails","fetchSavedOrder","fetchLocationList","fetchLineItemList","fetchLineItemDetailList","fetchTrunkItemList","fetchOrderAddresses","GetItemValidations","fetchOrderValidation","fetchPricebookDetails","fetchMPOLocation","fetchLineItemValidation","fetchDetailItemValidation","UpdateLineItemInOrder","LineItem","AddDetailItemToOrder","DetailItem","UpdateDetailItemInOrder","RemoveTrunkGroupConfigFromOrder","RemoveDetailItemFromOrder","DetailId","ItemValidations","LineItemErrors","DetailItemValidations","TrunkGroupValidations","OrderValidationErrors","o","ErrorSource","LoadItem","li","PartDescription","MPOLocationId","TerminatingNumbersList","DefaultRateCenterOptions","RCStateOptions","DefaultRCState","DefaultRCName","CatalogItem","IsReadOnly","NewItem","CatalogItemId","MRCAdjustedPrice","MRCDiscountPercent","NRCAdjustedPrice","NRCDiscountPercent","Quantity","NewCount","PartNum","configurationDetails","CatalogTicker","isConfigured","ReadOnly","MapConfigDetails","newCount","configDetailsArray","OrderItem","DBConfigurationDetails","DBTrunkGroupConfigs","TrunkGroupList","AddressItems","ValidateTN","newArray","iCount","trunkItem","trunkLabel","IPTrunkGroupCustomerProductId","LineDescription","ParentDetailId","ParnetDetailId","newEntry","ItemNumber","RCState","RateCenterState","RCName","RateCenterName","LineFirstName","LineLastName","CNAM","ListingType","ListingName","OmitAddress","LineEmail","TerminatingNumber","InventoryTN","AccessCode","IPTrunkGroupID","TrunkId","IPAddress1","IPAddress2","IPAddress3","IPAddress4","IPAddress5","IPAddress6","IPAddress7","IPAddress8","IPAddress9","IPAddress10","IPAddress11","IPAddress12","TrunkDescription","Description","AssociatedTrunkDescription","StartDate","CNAMDelivery","AllowInternational","TechPrefix","GroupPolicy","ServiceStatus","getTollFreeStateOption","RateCenterOptions","getTollFreeCenterOption","Has911","GetE911AddressObject","Temp911AddressId","NewConfigItem","GetBlankE911AddressObject","AddressId","BuildingValue","FloorValue","Unit","UnitValue","addressItem","ErrorMessageDisplayItem","rcStateOption","Abbreviation","NAME","rcNameOption","rc","InventoryAvailable","RCNameAbbr","initialObj","rcCenterOptions","getDefaultColumnConfig","ShowTNFields","ShowTN","ShowCNAM","ShowLineFirst","ShowLineLast","ShowExtension","ExtensionRequired","ShowListingName","ShowListingType","ShowOmitAddress","ShowYPH","ShowDeviceManufacturer","ShowDeviceModel","ShowDeviceMAC","ShowTemporaryNumber","ShowLineEmail","ShowAccessCode","ShowRCFields","ShowTerminatingNumber","IsRequiredStandAlone","ShowTrunkGroupPicker","ShowIPAddresses","ShowTrunkDescription","ShowStartDate","ShowCNAMDelivery","ShowInternational","ShowTechPrefix","ShowGroupPolicy","ShowServiceStatus","ShowE911","ShowDescription","ConfigType","getColumnConfigFromDatabase","prodProps","usoc","columnConfig","has_tn","show_tn_col","show_cnam_col","show_line_name_col","show_extn_col","ext_required","show_list_name_col","show_list_type_col","show_omt_addr_col","show_yph_col","show_dev_manufacturer_col","show_dev_model_col","show_dev_mac_col","show_temp_col","show_line_email_col","show_access_code","show_rc_col","show_trm_num_col","trg_associate","trg_asscoiate","show_trg_ipaddr_col","show_trg_description_col","show_trg_startdate_col","show_trg_cnamdel_col","show_trg_intl_col","show_trg_techprefix_col","show_trg_grppol_col","show_trg_status_col","has_911","show_detail_description_col","config_type","ReviewAndSaveNoConfigItem","ColumnConfig","apiPropertiesPath","pp","reason","apiPathAddDetailItem","newReqBody","detailResponse","detailBody","configuredCheck","newConfigDetails","TrunkItemValidations","errors","bCheck","UnsavedItems","cd","SourceId","AddressValidations","ReviewPageUrl","oid","vs","uri","ConfirmPageUrl","AddEditPage","UserAddOn","AllSearch","DisplayLocationRequiredMsg","GetDBBlockValue","Directory","Operator","International","DomesticLD","GetUIBlockObject","BlockString","splitArray","ConvertListingTypeNumToText","numberString","MACDTYPES","AddServices","AssignAddOn","UnassignAddOn","ChangeSeatType","ChangeLineType","ChangeListing","ChangeCNAM","ChangeExtension","ChangeBlock","ChangeVirtualTerminatingNumber","EditAddOrder","ChangeIPTrunkCpCount","MACDStatus","Processing","Submitted","Deleted","Clarification","OnHold","CheckPermissionsForLinks","macdType","MacdPerms","addServices","assignUserAddons","unassignUserAddons","changeSeatType","changeLineType","changeListing","changeCNAM","changeExtension","changeBlock","changeVnTerminatingNumber","ipTrunkCallPathBurst","MACDTABS","AddOns","AllRequests","OpenRequests","QuantityValidationRules","DependencyList","getIPTrunkGroupOptions","trunks","record","ConcatId","MACDSaveStatus","minHeight","ValidationMessagePopup","ValidationMessage","validationMessage","require","ValidationCell","MacdSearch","SearchFunction","BlockTab","ValidationErrorMessages","TabHasChanges","fetchListings","serviceListings","BlockServices","gridListings","itmInListings","indexOfListing","CancelYesAction","isCancelDialogOpen","closeCancelDialog","handleCancel","changedItems","HasChanges","macdHelper","originalListings","OriginalListings","submittedItems","oldService","OldService","BlockCallDirectoryAssistance","BlockOperatorAssistance","BlockInternationalCalling","BlockDomesticLongDistance","reqBody","validationErrors","responseObject","MPOStatus","MPOErrorList","MPOResultText","finally","locationName","AddonCount","Block","isExtensionOnly","responseData","unformattedResponse","updateBlock","blockServices","originalItem","gridItm","blockItm","idx2","BlockTypeCell","GridHeight","blockDirectoryAssist","blockOperatorAssist","blockInternational","blockLongDistance","disableField","CnamTab","CnamServices","updateInputValue","isNumeric","newValue","ListingsTemp","OldLineEmail","NewLineType","NewCatalogItemId","NewSeatType","NewTypeDescription","EnableCNAM","CnamInputCell","ExtensionTab","isLocationPopulated","onExtensionChange","matchingListingIndex","listing","oldListing","newValInput","querySelector","newListing","NewExtension","checkForChanges","updatedListings","getUpdatedListings","fullListings","IsCancelDialogOpen","triggerRowLevelValidation","CustomerProductIds","allErrors","UpdatedListings","postObject","formPostObject","handleErrors","getListings","searchInput","filteredListings","onSearchInputChange","maxHeight","InputNumericTextCell","hasAddons","readOnly","ShowStatuses","previousProps","currentLocationName","incomingLocationName","orderErrors","errorMessages","extractResponseErrors","triggerOrderLevelValidation","InfoCell","PricebookModal","SetProductSetTypeName","ProductSetTypeName","removedUSOCs","restrictedUSOCS","sd","disabledUSOCEntry","USOC","DisabledMessage","MSP_Visible","ShowListing","Message","sortSearchResults","getSearchResults","products","editable","Editable","button","LineTab","setProductSetTypeName","productSetType","productSetTypeName","termNumberList","TermNumberList","NewLineTypeList","NewLineTypeOptions","NewTypeList","EditLineFirstName","EditLineLastName","EditListingType","EditListingName","EditOmitAddress","EditCNAM","EditTerminatingNumber","EditLineEmail","RenderMandatorySymbol","mandatorySymbol","LineTypeServices","CurrentPartNum","NewList","CurrentPartDesc","restrictedUsocs","restrictedItem","origOption","updateNewLineType","itmInArray","originalItm","validationMessages","delIdx","show_trm_num_textbox","toBeSaved","FirstNametoBeSaved","LastNametoBeSaved","EmailtoBeSaved","ListingNametoBeSaved","CNAMtoBeSaved","enableOmitAddress","enableListingName","listingName","omitAddress","EnableListingName","EnableOmitAddress","updateTerminatingNumber","enableVal","newVal","isNaN","NewLineTypeCell","ListingTypeCell","InputCheckField","InputTextCell","AutoCompleteCell","ReadOnlyStatus","EnableListingType","NewLineTypeOptionsList","AddOnCount","isE911SIPTrunk","termArray","EnableTerminatingNumber","autoCompleteDOM","ListingTab","ListingServices","formattedData","SavingMessageControlE911","AddressFormE911","originalAddress","addressEntry","parentList","parentIndex","validateInComponent","validateTN","displayTopMessage","TopMessage","CustomerId","saveInList","addressObject","GetAddressObject","IsBlankAddress","UpdateEntry","stateoriginalAddress","ToggleEditList","ClearAddress","clearAddress","ResetToDefaultAddress","updatedEntry","SeatTab","SeatTypeServices","selectedSeat","NewSeatList","Address","E911AddressId","showE911Column","e911AddressItem","e911Index","updateNewSeatType","originalData","originalDataSI","newSeatListOptions","showE911Modal","selectedIndex","handleE911AddressUpdate","isSuccess","addressId","saveE911Address","closeE911Modal","updatedAddress","existingItem","newValidationErrorMessages","newListings","idxMessage","e911Width","serviceNumberWidth","SeatTypeSelectCell","E911AddressCell","NewSeatTypeOptionsList","addressDisplay","address1","address2","address3","VirtualTab","VirtualTermServices","newTermNumber","FullTermList","list","NewTermNumber","virtualTermServices","vtnItm","AddonCatalogTicker","AddonCustomerProductId","AddonPartDescription","AddonPartNumber","AddonServiceNumber","AddonUserPackageId","EditTermNumber","InputAutoCompleteField","MacdOrder","fetchOrderDetails","getColumnConfig","MacdType","OrderDetails","LocationDetails","DetailItems","DetailArray","AddressItem","Product","NewProduct","NewPartDesc","ServiceID","SeatType","LineType","CallLimitNew","IPTrunkGroupCallPathsNew","CallLimitOld","IPTrunkGroupCallPaths","neededOrderDetails","E911Address","ShowServiceID","ShowLineName","ShowPrimaryExtension","ShowSeatType","ShowLineType","ShowBlockType","ShowAddonPartNum","ShowTrunkID","ShowCallLimitOld","ShowCallLimitNew","ShowNewProduct","ShowE911Address","ModalClass","ShowCallLimit","ShowLineTypeOld","blockObject","WindowWidth","classNames","filtercell","defaultItem","maxWidth","hasValue","React","MacdOrderListings","ListingPage","searchOrderId","searchMACDType","searchAcctNumber","searchCustomerName","searchCreated","searchCreatedBy","MACDListings","showOk","deleting","isConfirmationDialogOpen","ConfirmationMessage","ConfirmationTitle","tempRecord","fetchSearchResults","orderProcessFlag","CreatedDate","ModifiedDate","Filler","handleViewMACD","MacdTypeName","handleTerminateMACD","terminateMacd","dialogMsg","bFailure","records","r","handleCloneMACD","handleViewMACDNotes","handleViewMACDStatus","handleEditMACD","handleCheckMACDError","ConfirmationYesAction","DeleteMACD","handleDeleteMACD","setGridData","getMACDListings","handleClearFilter","closeConfirmationDialog","dropDownOptions","filterCell","CommandCell","ClearFilterCell","MyCommandCell","flag","ProcessFlag","macdtype","orderSystem","OrderSource","editLink","deleteLink","terminateLink","MacdOrderListingsWithRouter","OpenReqTab","IpTrunkTab","getNewPlanList","NewPlanList","NewQuantity","quantityComparison","quantityIsNan","newPathPlan","newPathCatalogId","inconsistentCatcher","DropdownCell","inputCell","existingPath","finalOptions","Macd","handleTabEdit","tabHasChanges","DisplayCancelOrderConfirmationTab","isCancelConfirmOpen","tmpTab","apiLocationsPathWithParams","LocNum","changeLocation","getLocationName","acctNum","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","getDate","ConfigureClassName","quantity","rcStateOptions","getProductProperties","productData","catalogItemId","defaultRateCenterOptions","defaultRCState","defaultRCName","defaultLineFirstName","defaultLineLastName","defaultCNAM","serviceAddressRCState","serviceAddressRCName","serviceAddressRCNameOptions","TerminatingNumbers","TNDefaultDiv","CurrentDetailId","CurrentItemNumber","SaveQueue","tmpQuantity","DisplayValidationModal","SaveMessage","updating","ProductName","IPTrunkGroupOptions","IPTrunkGroups","RemovalError","getReadOnlyStatus","fetchProductProperties","fetchRcNameList","rcState","configDetails","postProductUpdate","SaveAll","closing","waitingOnTempUpdate","handleQuantityUpdate","completeModalClose","errorList","CycleThruSaveQueue","promises","SaveLineItemDetail","ConfigurationDetailArray","cda","detailId","detailMessages","lie","trunkError","LineMessages","SipsError","arrSaveQueue","responses","DetailItemsFromQueue","latestSave","updateStateValue","updateRCValue","getTrunkGroupOptions","updateTrunkGroupSelection","selectedTrunkGroup","IsNew","updateDropdownColumnSelection","selection","handleUpdateDate","ServiceDateProp","clearListingName","saveQueue","productConfigs","pc","RemoveNewTrunkGroup","lineItemResponse","lineItemFromDB","ci","AddItemToSaveQueue","ConfigItem","saveItm","Number","responseBody","itmToUpdate","idxItem","SaveTrunkGroup","TrunkGroupSaveResponse","TrunkGroupDetails","UpdateTrunkGroups","postBody","Direction","IsSuccess","ErrorDisplay","htmlContents","gridHTML","getGrid","dynamicColumn","editVal","classTitle","columnArray","Show911","RCStateCell","RCNameCell","TrunkGroupPickerCell","InputDateField","GroupPolicyColumn","ServiceStatusColumn","handleDefaultLineFirstNameChange","handleDefaultLineLastNameChange","handleDefaultLineCNAMChange","defaultLineCNAM","SetRCToDefaultByServiceAddress","rcName","rcNameOptions","refreshDefaultRCName","rateCenterArray","ApplyDefaultLineNames","firstName","lastName","ApplyDefaultCNAM","cnam","ApplyDefaultRCValues","ResetRCValues","displayValidationModal","closeValidationModal","delayedUpdate","handleRemoveItem","RemoveItemFromOrder","showActionButtons","OrderItemIdx","displayTNDetails","bSave","isReadOnly","close","trunkGroupArray","finalArray","blankEntry","groupPolicyOptions","statusOptions","editID","NPANXXLookup","ClearRCValues","MacdAdd","orderId","productSearchText","loadingAddedProducts","loadingPB","SelectedLocationId","SelectedLocationName","RemoveItemId","isConfirmSaveDialogOpen","RetrieveSavedOrder","RefreshCatalog","loadingSO","StateOrderDetails","LineItems","TrunkItems","momentumAcctNum","selectedLocation","toUpperCase","fetchIPTrunks","LoadItemConfigs","pricebookDetails","catalogItm","detailItemErrorArray","div","detailItem","lineItemErrorArray","lineError","existingTrunkGroups","originalOrderDetails","fetchRcStateList","Details","fullPricebookDetails","LineItemRemoved","newTrunkGroups","newTrunkGroupOptions","array","itmToRemove","find","quantityRules","removedTrunkGroups","rd","RemoveTrunkGroupsFromDB","otherUSOCs","dependentOrderItems","ReviewAndRefreshQuantityDependencies","productCard","product","updateOrderItemFromModal","ipTrunks","newIPTrunks","configDetailIds","ipt","CallPathId","ipTrunkOptions","RemoveTrunkGroups","ProductItem","arrayIdx","updatedTrunk","newTrunk","dependencyRules","obj","existingLineItem","bShowError","IsAdd","existingTrunks","newTrunkEntry","trunkOptions","trunk","idxCD","AreTrunkGroupAssociationsValid","pricebook","pricebookItem","dbLineItem","ActivationCharge","parseFloat","BasePrice","UpdateNeeded","handleCancelClick","CancelOrderConfirmation","SaveAddItemToOrder","IsContinue","Redirect","bCreate","reqLineItem","LineItemSaveData","messageBody","NewOrderId","setConfigs","Order","AddLineItemToState","tempLocationId","tempLocationName","creating","RateCenterDetails","serviceAddress","ServiceAddress","revisedTerminatingNumbers","AdrState","defaultRCOptions","refreshDefaults","OrderDetailArray","bConfigured","isChange","showCancelAndContinue","handleContinueClick","disabledUSOCs","sortPricebookDetails","setupLocations","defaultOption","confirmLocationChange","nativeEvent","selectedText","existingTrunkEntry","CallPathCustomerProductId","trunkGroupDetailRecord","callPath","handleAddProduct","MyAddCell","fullCatalog","idxCatalog","existingProducts","arrayPC","productOptions","AddedProducts","MacdReview","maxDate","setDate","submitting","isConfirmSubmitDialogOpen","MaxServiceDate","ServiceDateError","updateServiceDate","ServiceDateUpdateMessage","OrderLocationErrors","DisabledUSOCs","ShippingAddress","bReadOnly","trunkGroups","LoadClosedSupportingData","LoadSupportingData","MPOLocationDetails","ServiceDate","RequestDueDate","DateErrorMsg","sortOrderDetails","getCustomerId","ServiceDateContent","serviceDate","handleUpdateServiceDate","errorLine","CheckConfigurations","ServiceDateVal","reqObject","responseMsg","handleSubmitClick","SubmitOrder","bIsConfigured","ns","ValidationMessages","redirectToConfirm","DisplayOrderLocationErrors","ole","getIPTrunks","getIPTrunkOptions","handleBackClick","updateTrunkGroups","removeTrunkGroups","TrunksGroups","TrunkGroupOptions","MacdConfirm","ListingArr","LoadLocationData","LocationListDetails","LocationFromList","AddressLine1","AddressLine2","Listing","LoadLocationsForAccount","exportOrderDetailsBtn","exportOrder","print","MacdUserModal","orderSubmitted","userListings","gridCopy","gridData","postCompleted","isAssign","AvailableCount","countAvailable","AssignedCount","countAssigned","selectedForAction","getChangedItems","IsSelected","remaining","correspondingBSSavedItems","initialItems","assignedArr","unassignedArr","savedToBroadSoft","BSSaved","postAddons","changedItemsCopy","originalList","assignReq","Addon","parentAddon","unassignReq","BSAssigned","BSStatus","BSAssignedServices","BSUnassigned","BSUnassignedServices","BSErrors","BSErrorList","MPOError","successfulPost","fetchUserAddons","updateConfiguredVal","refresh","handleCounts","users","overflowY","confirmationYesAction","Fragment","APIError","MyActions","selectedVal","countRemaining","updateConfiguredValues","borderColor","MacdUser","productListings","handleRefreshAfterSubmission","fetchUserLevelAddonList","getCurrentLocation","CountCell","remainingCount","CountRemaining","CountAvailable","CountAssigned","assignBtn","assignedCount","MyCountCell","AgentDefaultSettingModal","changeEnableGuardTime","changeForceUnavailable3","checkForceUnavailable3","enableGuardTime","AgentUnavailableCodesModal","CallDispositionCodesModal","CenterRoutingPoliciesModal","AcceptanceModal","RemoteOfficeModal","PreAlertModal","CustomRingbackModal","VirtualNumberModal","EnterpriseSettings","EnterpriseSettingsAlt","FQDNSetupModal","showClearForm","validFqdn","delayedValidation","showInvalidFqdnClass","verifyValidFqdnClass","saveOnEnter","saveNewFqdn","updatedFqdns","removeFqdn","removedFqdn","closeSavingMessage","fqdnsTable","fqdnRow","displayTimedStatus","timer","IframeSettings","updatePageIframe","setInterval","submitform","iframeChecker","ReactDom","findDOMNode","iframe","contentDocument","clearInterval","getiFrameTitle","iframekey","getEnterpriseSetting","getGroupSetting","showBillingMessage","user","getAccount","actionUrl","locationAccNumber","VendorId","loggedIn","Support","archive","callCenter","collaborate","incontact","ivr","receptionist","skypeForBus","voiceAnalytics","Training","CallLogsAll","CallStatus","handleCallCategory","exportSansayBtn","trunkId","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","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","operatorConnectLink","HelpCenter","userSelected","newUserId","subscriberSettings","ManageTrunkModal","TrunkGroupId","TrunkCustomerProductId","DIDAssigned","DIDUnassigned","DIDPending","SelectedAssigned","SelectedUnassigned","SelectedPending","TrunkGroups","OpenModal","fetchTrunkGroups","CloseModal","loadTrunks","blankTrunkEntry","trunkGroupOptions","RetrieveDataForAssociations","DIDs","assignedDIDs","unAssignedDIDs","DIDEntry","Status","formatDids","queue","arr","itemClass","handleSelection","didField","newSelectionList","dynamicDID","dynamicSelected","DIDQueue","currentItem","currentItemIdx","handleTransition","actionName","newPendingList","newAssignedList","newUnassignedList","selectedItems","newRecord","SubmitChanges","bError","bPartialSuccess","pending","arrAssigned","arrUnassigned","ServiceCustomerProductIdList","responseAssigns","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","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","getCircuitsList","TypeListOptions","circuit","CircuitsOptions","CategoryOptions","SelectedLocation","formGroupDropDown","SelectedMixedType","renderMandatorySymbol","selectOptions","SelectedContact","ShowTextBoxesForContactDetails","SelectedPriority","SelectedCategory","SelectCircuitsFromList","TicketSubject","ContactName","ContactEmail","ContactPhone","SelectedCommMethod","handleTicketSubject","handleTicketSubjectInternal","handleTicketSubjectRFC","handleTicketDescription","TicketDescription","renderModelButtons","redirectedFromCircuitsList","storeAffectedCircuitsRedirectedFromCircuits","renderContent","newTicketContent","ticketCircuitSubject","rfc","locationRfc","circuitIdRfc","submittedTicket","submitNewTicket","cancelNewTicket","$","hide","newFileIndex","fileIndex","fileParams","circuitsData","submitNewTicketComment","SelectedOtherCategory","SelectedType","LoggedUser","ticketSubFailed","ticketSubjectCircuits","ticketDTO","AccountId","ticketType","newTicketID","ObjectId","showConfirmationModal","handleCancelTicketYes","handleCloseConfirmation","createTextBox","userEmail","DocumentRepository","fetchFiles","userFiles","DocumentType","doc","FileDescription","InsertedDate","UserFiles","AdditionalFiles","additionalFilesGrid","FileDownloadLink","userFilesGrid","URL","DocumentId","canEdit","EnterpriseContactDirectory","EditTitle","DeleteTitle","sortContacts","showAddContactButton","finalListings","getVmListings","exportVmBtn","exportVmReport","ManageTrunkGroupUsers","EnterpriseTrunkName","EnterpriseTrunkOptions","fetchAvailableTrunkUsers","Phone_Number","fetchAssignedUsers","UserIdList","TrunkUserId","handleSelectChange","render","EnterpriseTrunking","getOriginalListings","RoutingType","updateTrunkStatus","TrunkGroupName","TrunkDetails","TrunkGroupAssignments","fetchEnterpriseTrunks","EnterpriseTrunk","trunkOption","trunkRouting","EnterpriseTrunksAvailable","CurrentTrunk","TrunkOptions","fetchTrunkDetails","fetchAvailableTrunkGroups","enterpriseTrunk","OriginalDetails","transitionToManageTrunkGroup","groupId","trunkGroupName","ManageTrunkStatusCell","DataCell","ManageTrunkCell","dataDropDown","routingType","EditName","editEnterpriseTrunkField","trunkDataRow","editField","AllowTrunkNameChange","routeExhaustionAction","forwardAddress","saveEnterpriseTrunk","OldEnterpriseTrunkName","MaxNumRerouteAttempts","MaxNumRerouteWithPriority","RerouteExhaustAction","RouteExhaustionForwardAddress","EnableCapacityManagement","MaxActiveCalls","CapacityExceededInitialAlarm","CapacityExceededOffsetValue","assignedTrunks","undoEnterpriseTrunk","Enable","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","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","sendErrorMessage","apiResponse","StatusDscription","convertToLocal","dateTime","convertedLocalTime","hourOffset","getTimezoneOffset","setHours","getHours","FlagIcon","FlagIconFactory","useCssModules","MsTeamsUserMenu","giveStateData","StatusCell","customClassName","RoutingStatus","buttonCount","pageSizes","pageSizeValue","UsageLocation","size","ConfigProcessCompleted","showStatusLegend","manageModal","AccountSettings","AccountType","modalAction","usernameField","handleManageResourceAccount","domain","DomainList","IsVerified","configurationLinks","btnGroup","JsonParameters","TeamsUsers","NewDisplayName","NewDisplayNameSpecified","NewResourceAccountType","NewResourceAccountTypeSpecified","NewPhoneNumber","NewPhoneNumberSpecified","enterprise","TeamsId","TeamsUserId","MsTeamsSetupDomain","createDomainBtn","wizardMsg","IsM365DomainCreated","DomainCreatedOn","DomainSetupResponse","showDomainInfo","createAzureDomain","userName","trunkName","formatDsRes","IsDefault","MsTeamsStatusDscription","MsTeamsDNS","getSubmittedTicket","DNSTicketID","Ticket","IsDNSTicketCreated","createdTicketID","createdOn","parseDomainSetupResponse","IsDNSTicketCompleted","formatDateTime","time","parsedArr","reverse","domainDnsTxtRecord","Text","Ttl","MsTeamsSBC","SBCTicketID","IsSBCTicketCreated","IsSBCTicketCompleted","SBCTicketCompletedOn","sbcTicketData","Switch","MsTeamsTempUsers","getLicensType","licenses","selectLicenseType","LicenseType","license","ValueId","ValueName","IsTempUserCreatedWithin24Hrs","IsTempUsersCreated","TempUsersCreatedOn","getTimeAfter24Hrs","tomorrow","verifyAzureDomains","createTempUsers","showVerifyDomainModal","MsTeamsDirectRouting","DirectRouting","DirectRoutingTimeStamp","setDirectRouting","returnOnlyTeamsDomains","MigrationTab","migrationBtn","DerivedRoutingMigrationStatus","MigrationUpdatedOn","DerivedRoutingMigrationNotes","CheckConfig","CheckStatus","migrateToDerivedRouting","TNSearch","serviceId","street","city","IsResourceAccount","MsTeamsRoutingMenu","VoiceRoutes","VoiceRoutesList","nameColWidth","VoicePolicy","VoicePoliciesList","derivedMatchingObject","VoiceRoutePolicy","directMatchingObject","UserBtn","UsersCount","MsTeamsTenantInfo","VOICETABS","voiceRoutes","voicePolicy","MsTeamsMain","fetchTrunks","fetchDomainList","fetchMSTeamsUserList","fetchListingsForVoicePolicies","msteamstabName","TabRedirect","btnField","AllowManualDerivedRoutingMigration","proceedToNextTab","checkStatus","showDirectRoutingModal","DNSTicketDetails","SBCTicketDetails","showUserList","prevState","routingList","ApplicationName","ManageMsTeamsUser","EnterpriseMSTeamsConfigId","SipProxyAddress","ShowInAddressList","SyncToTeams","TeamsGroupIds","UserState","UserStateChangedOn","configureDR","SubmissionLoading","updatedUser","showDRModal","modalBtns","webexemailfilter","Webex","searchEmail","parentToChildStateAccess","SubmittedId","DuplicateError","fetchWebexData","syncing","lastSyncedDate","WebexEmailValidation","gridId","updateWebexData","gridItem","submissionError","gridToolBar","syncWithWebex","BroadsoftUserId","innerHTML","part","syncAllUsers","enableDirSync","lastSuccessfulSyncTime","hoursBetweenDates","directorySyncStatus","disableDirectorySycnButton","directorySyncStatusTime","disableDirectorySycnButtonStatus","ValidationButton","EmailCell","handleEmailFilter","newFilter","FilterEmailCell","roughDraft","FullDetails","cellContent","AddOnCountCell","fetchAddOnList","CountAddOnData","loadAddOnList","GridItem","CountAddOn","String","WebExEmail","SubmissionCell","failureMessage","DropDownFilter","setShowModal","NIDMAC","NotificationEmail","CheckMkHostName","SpeedDownstream","SpeedUpstream","TermInMonth","setCircuitList","filteredCircuitList","setFilteredCircuitList","setSort","editCircuitItem","setEditCircuitItem","searchCircuits","SpeedCell","LocationCell","DeviceHostName","WANPortAlias","WANPort","HostName","onHandleClose","EditCell","openANewTicket","redirectedFromCircuits","NIDIP","editCircuitName","editDownloadSpeed","editUploadSpeed","editCircuitNotification","updateCircuitList","circuitsDTO","onRowClick","ReactFC","fcRoot","FusionCharts","Column2D","FusionTheme","CircuitsChart","fetchDateRange","parsedData","Value","dateRange","dateRangeOptions","fetchGraphData","Measurement","DateRange","datapoints","graphData","xCoords","yCoords","toFixed","graphUrl","graphImageUrl","coords","XCoords","YCoords","getFusionChartConfig","dataFormat","chart","caption","subCaption","xAxisName","yAxisName","theme","setAdaptiveYMin","showLabels","frameborder","scrolling","fusionChartContent","graphMeasurementsOptions","CircuitsDashboard","CircuitsList","DataViz","data1","data2","summary","hasRendered","setHasRendered","drawViz","svg","d3","append","aspect","maxValue","range","nice","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","OpCnConsent","TenantId","teamsCredentialsVerifiedOn","MSTeamsCredentialsVerifiedOn","PhoneNumbers","phNumList","setPhNumList","searchTermRef","timeoutRef","fetchPhoneNumbers","mangeUserCell","FaxList","faxList","setFaxList","fetchFaxList","loadAssignedUsers","searchDelay","OperatorConnectV1Main","hasFaxList","HasFaxList","fetchOperatorConnectConsent","disabledCondition","isTeamsUsersSync","AvailableUsages","ManageOCTeamsUser","getTeamsUserByTeamsId","ManageOCTeamsPhone","PhoneDetails","SelectedUser","fetchPhoneDetails","ProtectedWholesaleRoute","hasAccessToComponent","component","ProtectedRetailRoute","Sidebar","updateSidebarLogo","existingLogo","sideBarLogo","incomingLogo","shouldApplyCustomizations","momentumLogo","apiTests","sideBarClassName","showSideBar","devicesRoute","homepage","isNewSession","exact","contactCenterSettings","location_detail","call_logs_all","user_settings","voicemail_all","IpTrunking","unMatchedPath","smallLogo","customSmallLogo","largeLogo","customLargeLogo","version","Login","loadingLogo","Logo","momentumLogoWhite","auth","componentMounted","loginHint","localStorage","mspLoginData","loginError","loginErrorDescription","redirecting","customAuth","restartSession","orgKey","customData","userFullName","emulation","emulationUserName","isTestSession","automatedTest","FullStoryScript","toBoolean","sessionId","sessionStart","custom","CountdownTimer","displayTitleTimer","showInTitle","getFormattedTime","onCountdown","countdown","timeoutAction","pad","num","formattedNum","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","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","loginForm","loginContainer","isInvalidUser","ForgotPassword","queryParams","get","ProviderId","isMailSent","handleOnBack","sendLinkForm","getResponseMessage","sendLinkContainer","MFAValidateModal","getMFADetails","oktaFailed","backdropFilter","App","processCustomizations","wholesaleIndicatorFound","hostName","customizations","staticJSONPrefix","momentumLogoSidebar","loadingAltText","isApplied","CSS","SetDefaultCSS","customTheme","customThemeLoaded","setDefaultLogos","reducerMethod","checkWholesale","variables","cssVars","tokenRepo","retrieveRpxLogo","rpxLogo","authorizeRpxSession","encryptedParams","emulationUserParam","EUN","userParam","decodeURIComponent","UN","uidParam","EUID","ipParam","rpxLoginDetailsRetrieved","rpxParams","rejected","RPXLoginFail","onIdle","updateToken","tokenUpdater","rpxLogin","faviconApplied","loadingLogoAltText","loadingAccessToken","isMspLogin","validMfa","beta_access_denied","requestToken","tokenIsValid","loginErrorHTML","RPXLogo","primaryUrl","mapDispatchToProps","hostname","ReactDOM","StrictMode","navigator","serviceWorker","ready","registration","unregister","customHeaders","isJson","logResponseToConsole","reject","putDataWithCustomHeader","useHeaderWithTokenPolicy","autoRetry","checkForToken","headersWithTokenAndPolicy","refreshTokenAndRetry","JSONToFormUrlEndcodedString","resolve","send","formBody","property","encodedKey","encodedValue","saveFavoriteService","favService","statusText","unfavoriteService","requestNewToken","checkForNewToken","tokenCheckInterval","expiredToken","accessToken","token","accessTokenPromise","race","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","baseUrl","baseApiUrl","defaultXpolicy","REACT_APP_MSP_URL","defaultXPolicyConfig","authorityUrl","storedAccessToken","storedAccountNumber","storedXPolicy","xpolicy","expirationRemainingDelta","expiration","currentMil","asMilliseconds","loginRPXUser","encParam","azureTokenResult","rpxData","storeRPXToken","refreshToken","refresh_token","decodedToken","jwtDecode","tfp","given_name","exp","refreshTokenIfExpired","Reseller","CompanyInfo","SalesGroupId","setUserPropsToSessionStorage","IPTrunkEmulation","LocationID","loginUser","customPolicy","clientApp","DomainHint","IsExternalUser","IdPApp","queryString","domain_hint","loginRedirect","scopes","extraQueryParameters","msalConfig","validateAuthority","redirectUri","origin","cacheLocation","storeAuthStateInCookie","Msal","loadFrameTimeout","handleRedirectCallback","CustomAuthUrl","CustomAuthClientId","acquireTokenSilent","loggedUser","storeToken","saveUserProperties","acquireTokenError","acquireTokenRedirect","tokenSaveUserProperties","rpxEmulation","customHeader","exc","encryptKey","Uint8Array","crypto","getRandomValues","encryptedValue","charCode","charCodeAt","fromCharCode","output","decryptKey","decryptedValue","EnterpriseNumber","HasServices","ReadPermission","WritePermission","TZAbbr","ServiceProviderName","EnableMFA","expInSecs","retrieveCustomConfigs","hasTrunk","QuickViewLocationAccountNumber","cl_call_type","cl_status_type","cl_call_category","cl_from_date","cl_to_date","cl_date_type","reducers","combineReducers","actionType","TokenObj","expirationOnCurrentToken","setUTCSeconds","webpackAsyncContext","req","__webpack_require__","ids","t","module","exports","unauthorized","loginTimeout","redirectTimeout","noResultsMsg","idleLogoutTime","REACT_APP_SIGNIN_PAGE_BTN_LABEL","idleLogoutWarning","saveLoginError","errorDescription","actionParams","saveToSessionStorage","setQuickViewLocation","pbxUserId","setService","setCLFilters","entries","setGlobalSearchValue","getGlobalSearchValue","urlEncodedToken","getEnterpriseId","getExpirationForEmb","setUTCMilliseconds","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.12594af8.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","import React, { Component } from 'react';\r\nimport SuperLink from './../../components/super_link';\r\nimport PayModal from './../modals/payModal';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { fetchData } from './../../requests/api_calls';\r\nimport { DataLoadingSpinner } from './../../components/spinners';\r\nimport { Link } from 'react-router-dom';\r\nimport { userIsAdmin } from './../../scripts/helper';\r\nimport * as config from './../../requests/config';\r\nimport * as currency from 'currency-formatter'\r\nimport * as session from '../../scripts/session';\r\n\r\nclass BillingCard extends Component {\r\n\r\n constructor() {\r\n super();\r\n this.state = {\r\n loading: true,\r\n downloading: true,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (userIsAdmin()) this.fetchBillingStat('admin/BillingStat');\r\n }\r\n\r\n fetchBillingStat = (apiPath, errorMsg) => {\r\n fetchData(apiPath).then((data) => {\r\n if (data !== null) {\r\n this.loadData(data);\r\n } else {\r\n this.setState({\r\n CustomerAccountNumber: sessionStorage.getItem('userEnterpriseNumber'),\r\n loading: false\r\n })\r\n }\r\n }).catch(ex => {\r\n this.setState({ loading: false });\r\n });\r\n }\r\n\r\n loadData = (data) => {\r\n this.setState({\r\n CustomerAccountNumber: data.CustomerAccountNumber,\r\n CustomerName: data.CustomerName,\r\n AccountNumber: data.AccountNumber,\r\n AccountBalance: currency.format(data.AccountBalance, { code: 'USD' }),\r\n Street1BILL: data.Street1BILL,\r\n Street2BILL: data.Street2BILL,\r\n CityBILL: data.CityBILL,\r\n StateBILL: data.StateBILL,\r\n ZipBILL: data.ZipBILL,\r\n InvoiceAmount: currency.format(data.InvoiceAmount, { code: 'USD' }),\r\n InvoiceDueDate: (new Date(data.InvoiceDueDate)).toLocaleDateString(),\r\n InvoiceURL: data.InvoiceURL.trim(),\r\n InvoiceID: data.InvoiceID,\r\n loading: false\r\n });\r\n }\r\n\r\n invoiceLink = () => {\r\n if (this.state.InvoiceID != 0 || this.state.InvoiceURL != \"\") {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n this.getInvoice()} >View Invoice\r\n
    \r\n )\r\n } else null;\r\n }\r\n\r\n getInvoice = () => {\r\n this.refs.downloadInvoice.submit();\r\n this.refs.invoiceBtn.text = 'Downloading...';\r\n setTimeout(() => {\r\n this.refs.invoiceBtn.text = 'View Invoice';\r\n }, 2000);\r\n }\r\n\r\n addressPartTwoSeparator = () => {\r\n if (this.state.Street2BILL) return
    ;\r\n }\r\n\r\n billingData = () => {\r\n if (this.state.loading) {\r\n return \r\n } else {\r\n let address = this.state.CityBILL ? (
    \r\n {this.state.Street1BILL}
    \r\n {this.state.Street2BILL} {this.addressPartTwoSeparator()}\r\n {this.state.CityBILL}, {this.state.StateBILL} {this.state.ZipBILL}\r\n\r\n
    ) : '';\r\n let billingMessage = process.env.REACT_APP_BILLING_MESSAGE;\r\n\r\n return (\r\n
    \r\n
    \r\n

    {this.state.CustomerName}

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

    Favorite Services

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

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

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

    Call Activity

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

    Quick View

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

    Quick View

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

    {this.state.CountLocations}

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

    {this.state.CountServicesUsers || 0}

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

    {this.state.CountDevices}

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

    {count}

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

    {count}

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

    {count}

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

    {this.state.linesUnregistered}

    \n
    \n
    \n

    {this.state.devicesProvisioned}

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

    Devices

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

    Activity History

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

    No Available Ticketing Data

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

    Support Tickets

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

    No Available Tickets

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

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

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

    No Available Usage Data

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

    Voicemail Usage Report

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

    {upCircuits}

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

    {downCircuits}

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

    {offlineCircuits}

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

    {CircuitList.length}

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

    0

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

    No Available Data

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

    Circuit Summary

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

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

    \r\n
    \r\n

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

    \r\n

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

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

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

    \r\n
    \r\n

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

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

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

    \r\n
    \r\n

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

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

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

    \r\n

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

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

    {this.state.successMessage}

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

    {this.state.validationError}

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

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

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

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

    \r\n

    MFA verification options:

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

    Text Message

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

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

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

    Authenticator app code

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

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

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

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

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

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

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

    \r\n

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

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

    Profile

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

    {this.getName()}

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

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

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

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

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

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

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

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

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

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

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

    \r\n Please fill the following information to make a payment. All infromation you enter\r\n must match you checking or saving accounts statement. Funds will be drafted no\r\n earlier than three days before your invoice's due date.\r\n

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

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

    \r\n

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

    \r\n

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

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

    {invoiceNotFoundData}

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

    Billing

    \r\n
    \r\n
    \r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n setModalDisplay(null)}\r\n backdrop=\"static\"\r\n >\r\n {BillingModalContent()}\r\n \r\n\r\n {customerInfo && Object.keys(customerInfo).length > 0 && (\r\n
    \r\n
    \r\n
    \r\n \r\n

    \r\n Customer Profile\r\n \r\n \r\n \r\n \r\n \r\n

    \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n
    \r\n {row(\"Name\", customerInfo)}\r\n {row(\"Account Number\", <>{availableLocations && availableLocations})}\r\n {row(\"Payment\", currentBill?.RecurringPaymentMethodDisplay)}\r\n {row(\r\n \"Billing Address\",\r\n <>\r\n {billingAddr?.Street1BILL}\r\n
    \r\n {billingAddr?.CityBILL}, {billingAddr?.StateBILL}\r\n
    \r\n {billingAddr?.ZipBILL}\r\n ,\r\n true\r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n\r\n {currentBill && Object.keys(currentBill).length > 0 && (\r\n
    \r\n
    \r\n
    \r\n \r\n

    \r\n Bills\r\n \r\n \r\n \r\n \r\n \r\n

    \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n
    \r\n {row(\r\n \"Current Bill:\",\r\n <>{`$${currentBill?.CurrentBalance.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}`}\r\n )}\r\n {row(\r\n \"Past Due:\",\r\n <>{`$${currentBill?.PastDue.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}`}\r\n )}\r\n {row(\r\n \"Amount Due:\",\r\n <>{`$${currentBill?.Balance.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}`}\r\n )}\r\n {row(\r\n \"Due Date:\",\r\n <>{moment(currentBill?.DueDate).format(\"MM/DD/YYYY\")},\r\n true\r\n )}\r\n
    \r\n {\r\n setModalDisplay(\"showDeletePrompt\");\r\n }}\r\n className=\"a btn\"\r\n >\r\n Pay My Bill\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )}\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n

    \r\n Recent Activity\r\n \r\n \r\n \r\n \r\n \r\n

    \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n
    \r\n \r\n {Object.keys(paymentHistory).length > 0 && (\r\n \r\n {paymentHistory.slice(0, 4).map((pay) => (\r\n \r\n Payment of $\r\n {pay.PaymentAmount.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}{\" \"}\r\n on {moment(pay.PaymentDate).format(\"M/D/YYYY h:mm:ss A\")}\r\n
    \r\n

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

    \r\n Current Billing Method\r\n \r\n \r\n \r\n \r\n \r\n

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

    {currentBill?.RecurringPaymentMethodDisplay}

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

    \r\n Statements\r\n \r\n \r\n \r\n \r\n \r\n

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

    View Statements

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

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

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

    Contact Center 12

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

    Announcement repository allows you to manage all the audio announcements

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

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

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

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

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

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

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

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

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

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

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

    Configure the Contact Center DNIS to distribute calls to agents.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Contact Center Active

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

    {locationID}

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

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

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

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

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

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

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

    Provide your customers an automated receptionist that answers the phone with a personalized message providing up to twelve (12) options for connecting to various people, departments, etc. Each Auto Attendant has its own extension or directory number.

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Phone NumberExtension
    20580363816381\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Active?\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {this.getPromptControl()}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n getPromptControl(){\r\n switch(this.state.promptValue){\r\n case \"biz\":\r\n return (\r\n \r\n );\r\n case \"after\":\r\n return (\r\n \r\n );\r\n default:\r\n return (\r\n
    Select a tab to set prompts
    \r\n );\r\n }\r\n }\r\n\r\n};\r\n\r\nexport default LocationAutoAttendantModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport SetPrompts from './setPrompts';\r\n\r\nclass SetSubmenu extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Submenu IDIn Use
    16381\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n};\r\n\r\nexport default SetSubmenu;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport SetPrompts from './../../setPrompts';\r\nimport SetSubmenu from './../../setSubmenu';\r\n\r\nclass LocationAutoAttendantTreeModal extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.handleTab = this.handleTab.bind(this);\r\n this.state = { showModal:false,promptValue: false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n handleTab(event) {\r\n event.preventDefault();\r\n this.setState({promptValue: event.target.dataset.val})\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Auto Attendant Tree\r\n \r\n \r\n \r\n \r\n Auto Attendant Tree\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Phone NumberExtension
    20580363816381\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Active?\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Enable video support\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n Save\r\n Cancel\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n Holiday Prompts\r\n
    \r\n
    \r\n Submenus\r\n
    \r\n
    \r\n
    \r\n {this.getPromptControl()}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n getPromptControl(){\r\n switch(this.state.promptValue){\r\n case \"biz\":\r\n return (\r\n \r\n );\r\n case \"after\":\r\n return (\r\n \r\n );\r\n case \"holiday\":\r\n return (\r\n \r\n );\r\n case \"submenus\":\r\n return (\r\n \r\n );\r\n default:\r\n return (\r\n
    Select a tab to set prompts
    \r\n );\r\n }\r\n }\r\n\r\n\r\n};\r\n\r\nexport default LocationAutoAttendantTreeModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { Slider } from '@progress/kendo-inputs-react-wrapper';\r\nimport { MultiSelect } from '@progress/kendo-dropdowns-react-wrapper';\r\nimport _ from 'lodash';\r\n\r\nclass locationCallPark extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.state = { showModal:false };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n componentDidMount() { \r\n }\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n Call Park\r\n \r\n \r\n \r\n \r\n Call Park\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Group Name
    Meet-Me\r\n \r\n
    \r\n
    \r\n {/*

    No extension is configured for this Call Park. Configure

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

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

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

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

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

    Assign Conference Hosts/Moderators to Conference Bridges

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

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

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

    Play recordings to callers on hold.

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

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

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

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

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

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

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

    WARNING: If you have extension-only seats, without associated telephone numbers and with Call Recording assigned, changing the Group Calling Line ID will cause Call Recording to stop. Please have your administrator contact the service provider and make the appropriate Call Recording configuration changes before changing the Group Calling Line ID.

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default LocationManageGroupCallingLineIDModal;\r\n","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { DateTimePicker } from '@progress/kendo-dateinputs-react-wrapper';\r\n\r\nclass ScheduleModal extends Component {\r\n\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.handleShow = this.handleShow.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.changeRecurs = this.changeRecurs.bind(this);\r\n this.getRecurMonths = this.getRecurMonths.bind(this);\r\n this.getRecurDays = this.getRecurDays.bind(this);\r\n this.getRecurWeekOfMonths = this.getRecurWeekOfMonths.bind(this);\r\n this.state = { showModal: false, recurValue:\"\" };\r\n }\r\n\r\n handleClose() {\r\n this.setState({ showModal: false });\r\n }\r\n\r\n handleShow() {\r\n this.setState({ showModal: true });\r\n }\r\n\r\n changeRecurs(event){\r\n this.setState({recurValue: event.target.value})\r\n }\r\n\r\n\tcomponentDidMount() {\t\t\r\n }\r\n\r\n render() {\r\n \r\n return (\r\n
    \r\n \r\n {this.getTitle()}\r\n \r\n \r\n \r\n \r\n {this.getTitle()}\r\n \r\n \r\n

    {this.getInfo()}

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

    Schedule Name 1

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Event NameRecurring
    Snow DayNo
    \r\n
    \r\n Delete Event\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {this.getRecurrentControl()}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n

    Schedule Name 2

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

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

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

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

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

    Set Group VLAN ID

    \n

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

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

    Set Group IP Transport Protocol for Devices

    \n

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

    \n

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

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

    Set Group Encrypted Audio & Signaling for Devices

    \n

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

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

    Location Feature Settings

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

    There is no device history for this device.

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

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

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

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

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

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

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

    \n {/*\n

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

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

    Telephone Numbers:

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

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


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

    Group FQDN Setup


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

    Set Group VLAN ID

    \r\n

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

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

    Set Group IP Transport Protocol for Devices

    \r\n

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

    \r\n

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

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

    Set Group Encrypted Audio & Signaling for Devices

    \r\n

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

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

    Group VLAN Settings

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

    Devices {this.state.devicesCount || null}

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

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

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

    Are you sure you wish to cancel this order?

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

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

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

    Are you sure you wish to cancel this order?

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

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

    \r\n else {\r\n return (\r\n \r\n {this.state.validationErrors\r\n && \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n {macdHelper.locationSelectLabel(this.state.MomentumAccountNumber)}\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n Cancel Order?\r\n \r\n \r\n

    Are you sure you wish to cancel this order?

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

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

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

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

    \r\n

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

    \r\n

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

    \r\n

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

    \r\n

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

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

    Testing colmn

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

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

    \r\n

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

    \r\n

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

    \r\n

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

    \r\n

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

    \r\n

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

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

    Are you sure you wish to cancel this order?

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

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

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

    Are you sure you wish to cancel this order?

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

    {this.state.TopMessage}

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

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

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

    Are you sure you wish to cancel this order?

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

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

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

    Are you sure you wish to cancel this order?

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

    {this.state.ConfirmationMessage}

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

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

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

    Are you sure you wish to cancel this order?

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

    Service Changes

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

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

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

    All Service Changes

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

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

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

    Configuration Errors:

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

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

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

    Default Rate Center

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

    {this.state.ConfirmationMessage}

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

    {product.PartDescription} {product.PartNum}

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

    {product.PartDescription} {product.PartNum}

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

    Add Services

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

    Add Services

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

    Add Services

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

    {this.state.ConfirmationMessage}

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

    {this.state.resultsMsg}

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

    Configuration Errors:

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

    Order Summary

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

    Order Summary

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

    Order Summary

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

    {this.state.resultsMsg}

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

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

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

    No Qualifiying Products Available to Assign

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

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

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

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

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

    Manage User Add-ons

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.gridContent()}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n}\r\n\r\nexport default MacdUser;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport { Switch } from '@progress/kendo-inputs-react-wrapper';\r\nimport _ 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 \"data:image/png;base64,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\"","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) {\r\n if (this.state.permissions.MSTeamsRoutingType !== \"OPERATOR_CONNECT\" && this.state.permissions.MSTeamsRoutingType !== \"NONE\") {\r\n return this.menuLink(\r\n `/microsoft-teams`,\r\n icons.msTeams,\r\n \"Microsoft Teams\"\r\n );\r\n }\r\n } else return;\r\n };\r\n\r\n ShowCallRecordingLink = () => {\r\n const userTypeIdViewOnly = ['1102', '1103', '1104', '1105', '1107'];\r\n let userTypeId = [sessionStorage.userTypeId];\r\n let val = userTypeId.every(userTypeId => { return userTypeIdViewOnly.includes(userTypeId) });\r\n return val;\r\n }\r\n\r\n callRecordingLink = () => {\r\n const showCallRecordingLink = this.ShowCallRecordingLink();\r\n if ((showCallRecordingLink === true || showCallRecordingLink === \"true\") && this.state.permissions.HasCallRecordingMenu)\r\n return this.menuLink(\r\n `/call-recording`,\r\n icons.callRecording,\r\n \"Call Recording\"\r\n );\r\n };\r\n\r\n webExLink = () => {\r\n if (this.state.permissions.IsWebExAllowed) {\r\n return this.menuLink(`/webex`, icons.webex, \"WebEx\");\r\n }\r\n };\r\n\r\n circuitsMonitioringLink = () => {\r\n if (this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"VOICE\") {\r\n return this.menuLink(`/circuits-monitoring`, icons.circuits, \"Circuits\");\r\n }\r\n };\r\n\r\n circuitDevicesLink = () => {\r\n if (this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"VOICE\") {\r\n return this.menuLink(\r\n `/circuit-devices`,\r\n icons.circuits,\r\n \"Circuit Devices\"\r\n );\r\n }\r\n };\r\n\r\n circuitMapLink = () => {\r\n if (this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"VOICE\") {\r\n return this.menuLink(\r\n \"/service-locations\",\r\n icons.circuitsMap,\r\n \"Service Locations\"\r\n )\r\n }\r\n }\r\n\r\n mfaAdminTool = () => {\r\n if (sessionStorage.enableMFA === \"true\" &&\r\n ( // super admins\r\n sessionStorage.userTypeId === \"1107\" ||\r\n sessionStorage.userTypeId === \"1105\" ||\r\n sessionStorage.userTypeId === \"1104\" ||\r\n sessionStorage.userTypeId === \"1103\" ||\r\n sessionStorage.userTypeId === \"1102\" ||\r\n // group admins\r\n sessionStorage.userTypeId === \"1106\" ||\r\n sessionStorage.userTypeId === \"1109\" ||\r\n sessionStorage.userTypeId === \"1114\" ||\r\n sessionStorage.userTypeId === \"1115\" ||\r\n sessionStorage.userTypeId === \"1116\")\r\n ) {\r\n return this.menuLink(\r\n \"/manage-mfa-configuration\",\r\n icons.mfa,\r\n \"Manage MFA\"\r\n )\r\n }\r\n }\r\n\r\n operatorConnectLink = () => {\r\n //if (sessionStorage.userRole === \"SUPER_ADMIN\" && sessionStorage.userTypeId === \"1107\") {\r\n return this.menuLink(\r\n //\"/operator-connect\",\r\n \"/operator-connectv1\",\r\n icons.mfa,\r\n \"Operator Connect\"\r\n )\r\n //}\r\n }\r\n\r\n render() {\r\n if (userIsAdmin()) {\r\n if (checkBillingAccount()) {\r\n return (\r\n
    \r\n \r\n {this.state.Header}\r\n
    \r\n {this.menuLink(\"/admin\", icons.dashboard, \"Dashboard\")}\r\n {/* {this.billingLink()} */}\r\n {!session.IsWholesale() &&\r\n sessionStorage.userEnterpriseNumber !== \"3904000825\" &&\r\n this.state.permissions.BillingAdminPermission == 1 && this.menuLink(\r\n \"/BillingNew\",\r\n icons.billing,\r\n \"Billing\"\r\n )}\r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n {this.state.Header}\r\n
    \r\n {this.menuLink(\"/admin\", icons.dashboard, \"Dashboard\")}\r\n {this.LocationsLink(\r\n { pathname: \"/locations\", state: {} },\r\n icons.locations,\r\n \"Locations & Groups\"\r\n )}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" &&\r\n this.menuLink(\r\n \"/services\",\r\n icons.servicesAndUsers,\r\n \"Services & Users\"\r\n )}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.devicesLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.trunkingLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" &&\r\n this.menuLink(\r\n \"/iframe_page/MSP_ENTERPRISE\",\r\n icons.enterpriseSettings,\r\n \"Enterprise Settings\"\r\n )}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" &&\r\n this.contactCenterLink()}\r\n {/* {this.billingLink()} */}\r\n {!session.IsWholesale() &&\r\n sessionStorage.userEnterpriseNumber !== \"3904000825\" &&\r\n this.state.permissions.BillingAdminPermission == 1 && this.menuLink(\r\n \"/BillingNew\",\r\n icons.billing,\r\n \"Billing\"\r\n )}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.ipTrunkingLink()}\r\n {this.ticketingLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.documentsLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.addressBookLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.entTrunkLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.adLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.msTeamsLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" &&\r\n this.callRecordingLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" && this.webExLink()}\r\n {this.circuitsMonitioringLink()}\r\n {this.mfaAdminTool()}\r\n {this.state.permissions.MSTeamsRoutingType && this.state.permissions.MSTeamsRoutingType == \"OPERATOR_CONNECT\" && this.operatorConnectLink()}\r\n {this.state.permissions.EnterpriseType && this.state.permissions.EnterpriseType !== \"DATA\" &&\r\n this.serviceChangesLink()}\r\n \r\n );\r\n }\r\n } else {\r\n // test w/ non-admin user\r\n return (\r\n
    \r\n \r\n {this.state.Header}\r\n
    \r\n {!session.IsWholesale() &&\r\n sessionStorage.userEnterpriseNumber !== \"3904000825\" &&\r\n this.state.permissions.BillingAdminPermission == 1 && this.menuLink(\r\n \"/BillingNew\",\r\n icons.billing,\r\n \"Billing\"\r\n )}\r\n {this.contactCenterLink()}\r\n {this.ticketingLink()}\r\n {this.addressBookLink()}\r\n {this.documentsLink()}\r\n {this.callRecordingLink()}\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n LocationAccountNumber: state.reducer.AccountNumber,\r\n hasTrunking: state.reducer.hasTrunking,\r\n hasContactCenter: state.reducer.hasContactCenter,\r\n hasMacd: state.reducer.hasMacd,\r\n hasDevices: state.reducer.hasDevices,\r\n hasIpTrunk: state.reducer.hasIpTrunk,\r\n hasTicketing: state.reducer.hasTicketing,\r\n permissionsRetrieved: state.reducer.permissionsRetrieved,\r\n };\r\n};\r\nexport default connect(mapStateToProps)(AdminMenu);","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { connect } from 'react-redux';\r\nimport { store } from '../../store/store';\r\nimport { userIsAdmin } from './../../scripts/helper';\r\nimport * as settings from './../../scripts/settings';\r\nimport { training_url} from \"../../constants/urls\"\r\nimport {support_url} from \"../../constants/urls\"\r\nimport * as session from \"../../scripts/session\";\r\nimport { checkBillingAccount } from '../../utility/utility';\r\n\r\nclass HelpCenter extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n\r\n userSelected = () => {\r\n // user was selected in another component and updated in redux store\r\n let newUserId = this.props.UserId;\r\n let currentUserId = this.state.UserId;\r\n if (newUserId !== currentUserId) {\r\n // only make a new API call if the selected user has changed\r\n let apiPath = 'usr/MyServices?UserId=' + newUserId;\r\n this.setState({UserId: newUserId})\r\n this.fetchMyServices(apiPath)\r\n }\r\n }\r\n\r\n subscriberSettings = () => {\r\n \tif (this.props.ServiceNumber) {\r\n \t\treturn (\r\n\t \r\n\t Subscriber Settings\r\n\t \r\n \t\t)\r\n \t} else {\r\n\t \treturn null;\r\n \t}\r\n \t\t\r\n }\r\n\r\n render() {\r\n const isWholesale = session.IsWholesale();\r\n if (!isWholesale && !checkBillingAccount()) {\r\n return (\r\n
    \r\n {/*
    Applications
    */}\r\n {/*this.subscriberSettings()*/}\r\n {/* \r\n Support\r\n */}\r\n \r\n Support\r\n \r\n \r\n Training\r\n \r\n
    \r\n ) \r\n } else return null;\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n ServiceNumber: state.reducer.ServiceNumber\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(HelpCenter);","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport { Button } from '@progress/kendo-buttons-react-wrapper';\r\nimport * as apiCalls from '../../../requests/api_calls';\r\nimport _ from 'lodash';\r\nimport SaveStatus from '../../../components/save_status';\r\nimport * as helper from '../../../scripts/helper';\r\nimport { DataLoadingSpinner } from '../../../components/spinners';\r\n\r\nexport default class ManageTrunkModal extends Component {\r\n \r\n initialState = (props = null) => {\r\n return {\r\n TrunkGroupId: 0,\r\n TrunkCustomerProductId: 0,\r\n LocationAccountNumber: '',\r\n loading: false,\r\n saving: false,\r\n error: false,\r\n statusMessage: '',\r\n showModal: false,\r\n DIDAssigned: [],//fakeAssigned,\r\n DIDUnassigned: [],\r\n DIDPending: [],\r\n SelectedAssigned: [],\r\n SelectedUnassigned: [],\r\n SelectedPending: [],\r\n TrunkGroupOptions: [],\r\n TrunkGroups: props ? props.TrunkGroups : []\r\n };\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = this.initialState(props);\r\n this.OpenModal = this.OpenModal.bind(this);\r\n this.CloseModal = this.CloseModal.bind(this);\r\n this.fetchTrunkGroups = this.fetchTrunkGroups.bind(this);\r\n this.RetrieveDataForAssociations = this.RetrieveDataForAssociations.bind(this);\r\n this.SubmitChanges = this.SubmitChanges.bind(this);\r\n this.handleSelection = this.handleSelection.bind(this);\r\n this.handleTransition = this.handleTransition.bind(this);\r\n this.ClearSaveStatusModal = this.ClearSaveStatusModal.bind(this);\r\n }\r\n\r\n // componentWillReceiveProps(props) {\r\n // if ((!this.state.TrunkGroups || this.state.TrunkGroups.length === 0) && props.TrunkGroups && props.TrunkGroups.length > 0)\r\n // {\r\n // this.setState({TrunkGroups: props.TrunkGroups});\r\n // this.setTrunkGroupOptions(props.TrunkGroups);\r\n // }\r\n // }\r\n\r\n OpenModal = async() => {\r\n this.setState({showModal: true, loading: true});\r\n this.fetchTrunkGroups();\r\n }\r\n\r\n CloseModal = () => {\r\n let state = this.initialState();\r\n let {TrunkGroupId, TrunkGroups, TrunkGroupOptions} = this.state;\r\n this.setState({...state, TrunkGroups: TrunkGroups, TrunkGroupOptions: TrunkGroupOptions, TrunkGroupId: TrunkGroupId}\r\n , async () => {\r\n try {\r\n await this.props.loadTrunks();\r\n } catch (e) {\r\n // handle error\r\n }\r\n });\r\n }\r\n\r\n fetchTrunkGroups = async() => {\r\n let apiPath = 'admin/GetIpTrunkGroupList'\r\n let TrunkGroups = await apiCalls.fetchData(apiPath).then((data) => data);\r\n let blankTrunkEntry = {\r\n LocationId: 0,\r\n TrunkGroupID: '',\r\n LineDescription: '- Select Trunk Group -',\r\n LocationAccountNumber: '',\r\n LocationName: '',\r\n CustomerName: '',\r\n CustomerProductId: 0\r\n }\r\n TrunkGroups.unshift(blankTrunkEntry);\r\n let trunkGroupOptions = [];\r\n // let blankOption = (\r\n // \r\n // );\r\n\r\n // trunkGroupOptions.push(blankOption);\r\n if (TrunkGroups && TrunkGroups.length > 0)\r\n {\r\n TrunkGroups.map((record, idx) => {\r\n if (record.CustomerProductId !== 0)\r\n trunkGroupOptions.push((\r\n \r\n )\r\n );\r\n else\r\n trunkGroupOptions.push((\r\n \r\n )\r\n );\r\n });\r\n }\r\n this.setState({TrunkGroupOptions: trunkGroupOptions, TrunkGroups: TrunkGroups, loading: false});\r\n } \r\n\r\n RetrieveDataForAssociations = async(LocationAccountNumber, TrunkGroupID) => {\r\n try\r\n {\r\n await this.setState({loading: true});\r\n let apiPath = `admin/macd/GetIPTrunkAssociation?LocationAccountNumber=${LocationAccountNumber}&TrunkGroupID=${TrunkGroupID}`;\r\n let DIDs = await apiCalls.fetchData(apiPath).then(data => data);\r\n \r\n let assignedDIDs = [];\r\n let unAssignedDIDs = [];\r\n DIDs.map((item) => {\r\n let DIDEntry = {\r\n isSelected: false,\r\n Status: item.TrunkGroupID && item.TrunkGroupID > 0 ? 'Assigned' : 'Unassigned',\r\n ServiceNumber: item.TN,\r\n CustomerProductId: item.CustomerProductId\r\n }\r\n if (DIDEntry.Status === 'Assigned')\r\n assignedDIDs.push(DIDEntry);\r\n else\r\n unAssignedDIDs.push(DIDEntry);\r\n });\r\n\r\n\r\n \r\n \r\n await this.setState({DIDAssigned: assignedDIDs, DIDUnassigned: unAssignedDIDs, loading: false});\r\n }\r\n catch (ex) {\r\n await this.setState({DIDAssigned: [], DIDUnassigned: [], loading: false});\r\n }\r\n }\r\n\r\n formatDids = (queue, arr = []) => {\r\n if (arr && arr.length > 0) {\r\n return arr.map((itm, index) => {\r\n let itemClass = itm.isSelected === true ? 'selectedItem' : '';\r\n let label = itm.ServiceNumber;\r\n if (queue === 'pending')\r\n label += ' (' + itm.Status + ')';\r\n return { this.handleSelection(queue, itm.CustomerProductId);}}\r\n >{label}\r\n })\r\n }\r\n }\r\n\r\n didField = (queue, arr = []) => {\r\n return (\r\n
    \r\n {this.formatDids(queue, arr)}\r\n
    \r\n )\r\n }\r\n\r\n handleSelection = async(queue, CustomerProductId) => {\r\n let newSelectionList = [];\r\n let dynamicDID = 'DID' + queue[0].toUpperCase() + queue.substring(1);\r\n let dynamicSelected = 'Selected' + queue[0].toUpperCase() + queue.substring(1);\r\n let DIDQueue = this.state[dynamicDID].slice();\r\n\r\n let currentItem = null;\r\n currentItem = this.state[dynamicDID].filter(resp => resp.CustomerProductId === CustomerProductId); //from the grids\r\n if (currentItem)\r\n currentItem = currentItem[0];\r\n\r\n let currentItemIdx = _.indexOf(DIDQueue, currentItem); //get before toggling selected status\r\n currentItem.isSelected = !currentItem.isSelected;\r\n newSelectionList = this.state[dynamicSelected].filter(resp => resp.CustomerProductId !== currentItem.CustomerProductId);\r\n if (currentItem.isSelected)\r\n newSelectionList.push(currentItem);\r\n\r\n DIDQueue[currentItemIdx] = currentItem;\r\n await this.setState({ [dynamicSelected]: newSelectionList, [dynamicDID] : DIDQueue });\r\n }\r\n\r\n handleTransition = async(actionName) => {\r\n let {DIDAssigned, DIDPending, DIDUnassigned, SelectedAssigned, SelectedPending, SelectedUnassigned} = this.state;\r\n let newPendingList = DIDPending.slice();\r\n let newAssignedList = DIDAssigned.slice();\r\n let newUnassignedList = DIDUnassigned.slice();\r\n let selectedItems = [];\r\n switch (actionName) {\r\n case 'add':\r\n SelectedUnassigned.map((record, idx) => {\r\n let newRecord = {\r\n CustomerProductId: record.CustomerProductId,\r\n ServiceNumber: record.ServiceNumber,\r\n Status: 'Add',\r\n isSelected: false\r\n };\r\n newPendingList.push(newRecord);\r\n newUnassignedList = newUnassignedList.filter(resp => resp.CustomerProductId !== record.CustomerProductId);\r\n });\r\n SelectedUnassigned = [];\r\n break;\r\n case 'undoAdd':\r\n SelectedPending.map((record, idx) => {\r\n if (record.Status === 'Add')\r\n {\r\n let newRecord = {\r\n CustomerProductId: record.CustomerProductId,\r\n ServiceNumber: record.ServiceNumber,\r\n Status: 'Unassigned',\r\n isSelected: false\r\n }\r\n newUnassignedList.push(newRecord);\r\n newPendingList = newPendingList.filter(resp => resp.CustomerProductId !== record.CustomerProductId);\r\n } else selectedItems.push(record);\r\n\r\n });\r\n SelectedPending = selectedItems;\r\n break;\r\n case 'remove':\r\n SelectedAssigned.map((record, idx) => {\r\n let newRecord = {\r\n CustomerProductId: record.CustomerProductId,\r\n ServiceNumber: record.ServiceNumber,\r\n Status: 'Remove',\r\n isSelected: false\r\n }\r\n newPendingList.push(newRecord);\r\n newAssignedList = newAssignedList.filter(resp => resp.CustomerProductId !== record.CustomerProductId);\r\n });\r\n SelectedAssigned = [];\r\n break;\r\n case 'undoRemove':\r\n\r\n SelectedPending.map((record, idx) => {\r\n if (record.Status === 'Remove')\r\n {\r\n let newRecord = {\r\n CustomerProductId: record.CustomerProductId,\r\n ServiceNumber: record.ServiceNumber,\r\n Status: 'Assigned',\r\n isSelected: false\r\n }\r\n newAssignedList.push(newRecord);\r\n newPendingList = newPendingList.filter(resp => resp.CustomerProductId !== record.CustomerProductId);\r\n } else selectedItems.push(record);\r\n });\r\n SelectedPending = selectedItems;\r\n break;\r\n }\r\n await this.setState({\r\n SelectedAssigned: SelectedAssigned,\r\n SelectedPending: SelectedPending,\r\n SelectedUnassigned: SelectedAssigned,\r\n DIDAssigned: newAssignedList,\r\n DIDPending: newPendingList,\r\n DIDUnassigned: newUnassignedList\r\n });\r\n }\r\n\r\n SubmitChanges = async() => {\r\n try {\r\n if (this.state.DIDPending.length === 0) return; //end process if nothing selected\r\n let apiPath = 'admin/macd/AssociateIPTrunk';\r\n let reqBody = { };\r\n let statusMessage = '';\r\n let bError = false;\r\n let bPartialSuccess = false;\r\n let pending = this.state.DIDPending.slice();\r\n let arrAssigned = pending.filter(resp => resp.Status === 'Add').map((record,idx) => {\r\n return record.CustomerProductId;\r\n });\r\n let arrUnassigned = pending.filter(resp => resp.Status === 'Remove').map((record,idx) => {\r\n return record.CustomerProductId;\r\n });\r\n if (arrAssigned && arrAssigned.length > 0)\r\n {\r\n reqBody = {\r\n TrunkCustomerProductId: this.state.TrunkCustomerProductId,\r\n LocationAccountNumber: this.state.LocationAccountNumber,\r\n ServiceCustomerProductIdList: arrAssigned\r\n }\r\n\r\n await this.setState({saving: true});\r\n let responseAssigns = await apiCalls.post(apiPath, 'PATCH', JSON.stringify(reqBody)).then((data) => data);//.error((message) => {\r\n //bError = true;\r\n //statusMessage = 'An error occurred assigning : ' + message.toString();\r\n //});\r\n if (helper.IsJsonString(responseAssigns.message)) {\r\n let messageObj = JSON.parse(responseAssigns.message);\r\n if (messageObj.MPOErrorList && messageObj.MPOErrorList.length > 0) {\r\n statusMessage += this.displayErrors(messageObj.MPOErrorList);\r\n bError = true;\r\n }\r\n }\r\n else if (responseAssigns.ok) {\r\n statusMessage = 'All DIDs marked for assignment have updated successfully';\r\n bPartialSuccess = true;\r\n }\r\n }\r\n if (arrUnassigned && arrUnassigned.length > 0)\r\n {\r\n apiPath = 'admin/macd/UnassociateIPTrunk';\r\n if (!this.state.saving)\r\n await this.setState({saving: true});\r\n reqBody = {\r\n TrunkCustomerProductId: this.state.TrunkCustomerProductId,\r\n LocationAccountNumber: this.state.LocationAccountNumber,\r\n ServiceCustomerProductIdList: arrUnassigned\r\n }\r\n let responseUnassigns = await apiCalls.post(apiPath, 'PATCH', JSON.stringify(reqBody)).then((assignData) => assignData);//.error((message) => {\r\n //statusMessage += '\\nAn error occurred unassigning : ' + message.toString();\r\n //});\r\n if (helper.IsJsonString(responseUnassigns.message)) {\r\n let messageObj = JSON.parse(responseUnassigns.message);\r\n if (messageObj.MPOErrorList && messageObj.MPOErrorList.length > 0) {\r\n statusMessage += this.displayErrors(messageObj.MPOErrorList);\r\n bError = true;\r\n }\r\n }\r\n else if (responseUnassigns.ok)\r\n {\r\n statusMessage += '\\nAll DIDs marked for unassignment have updated successfully';\r\n bPartialSuccess = true;\r\n }\r\n }\r\n if (!bError)\r\n statusMessage = 'All DIDs marked for assignment and unassignment have updated successfully'\r\n else if (bError && !bPartialSuccess)\r\n statusMessage = 'All DIDs marked for assignment and/or unassignment have failed\\n' + statusMessage;\r\n\r\n await this.setState({saving: false, statusMessage: statusMessage, error: bError});\r\n }\r\n catch (ex) {\r\n this.setState({\r\n saving: false,\r\n error: true,\r\n statusMessage: 'An error occurred: ' + ex.toString(),\r\n });\r\n }\r\n }\r\n\r\n displayErrors = (ErrorList) => {\r\n let errorMsg = '';\r\n ErrorList.map((err, idx) => {\r\n if (err.MPOResultText && err.MPOResultText.length > 0){\r\n err.MPOResultText.map((rt,idx2) => {\r\n errorMsg = errorMsg === '' ? rt.ErrorMessage : '\\n' + rt.ErrorMessage;\r\n });\r\n } else\r\n errorMsg = errorMsg === '' ? err.APIError : '\\n' + err.APIError;\r\n });\r\n return errorMsg;\r\n }\r\n\r\n ClearSaveStatusModal = async() => {\r\n let selectedTrunk = this.state.TrunkCustomerProductId;\r\n let TrunkGroup = this.state.TrunkGroups.filter(resp => resp.CustomerProductId === selectedTrunk);\r\n TrunkGroup = TrunkGroup[0];\r\n \r\n //let selectedText = e.target.selectedText;\r\n //let TrunkGroupId =\r\n await this.setState({error: false, statusMessage: '', loading: true, DIDAssigned: [], DIDPending: [], DIDUnassigned: [], SelectedAssigned: [], SelectedPending: [], SelectedUnassigned: []});\r\n this.RetrieveDataForAssociations(TrunkGroup.LocationAccountNumber, TrunkGroup.TrunkGroupID);\r\n }\r\n\r\n ChangeTrunkGroup = async(e) => {\r\n let selection = parseInt(e.target.value);\r\n \r\n \r\n let TrunkGroup = this.state.TrunkGroups.filter(resp => resp.CustomerProductId === selection);\r\n TrunkGroup = TrunkGroup[0];\r\n \r\n //let selectedText = e.target.selectedText;\r\n //let TrunkGroupId =\r\n await this.setState({\r\n TrunkCustomerProductId: selection, \r\n LocationAccountNumber: TrunkGroup.LocationAccountNumber,\r\n saving: false, \r\n loading: selection > 0 ? true : false, \r\n DIDAssigned: [], DIDPending: [], DIDUnassigned: [], \r\n SelectedAssigned: [], SelectedPending: [], SelectedUnassigned: []\r\n });\r\n if (selection > 0)\r\n this.RetrieveDataForAssociations(TrunkGroup.LocationAccountNumber, TrunkGroup.TrunkGroupID);\r\n }\r\n\r\n savingOrConfirming = () => this.state.saving || this.state.statusMessage;\r\n\r\n modalBody = () => {\r\n if (this.state.loading === true) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n
    \r\n Trunk ID:\r\n \r\n
    \r\n
    \r\n
    \r\n Un-assigned DID(s)\r\n
    \r\n {this.didField('unassigned', this.state.DIDUnassigned)}\r\n
    \r\n
    \r\n
    \r\n { this.handleTransition('add'); }}>{'Assign >'}\r\n {/* SPACING DIV */}\r\n
    \r\n {/* SPACING DIV */}\r\n { this.handleTransition('undoAdd')}}>{'< Undo'}\r\n
    \r\n
    \r\n Pending DID(s)\r\n
    \r\n {this.didField('pending', this.state.DIDPending)}\r\n
    \r\n
    \r\n \r\n
    \r\n Assigned DID(s)\r\n
    \r\n {this.didField('assigned', this.state.DIDAssigned)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n this.OpenModal()}>Manage Associated DIDs\r\n \r\n \r\n \r\n IP Trunk Management\r\n \r\n \r\n {this.modalBody()}\r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n/// IP100 - IP Trunk Group [Node 1=209.134.218.134 - Trunk id=72377 - Product id=1924899]\r\n/// IP100 - IP Trunk Group [Node 1=209.134.220.134 - Trunk id=72378 - Product id=1925144]\r\n// trunk ids under same trunk group share same modal... option to select diff trunk ids in dropdown at the top of the modal\r\n\r\n\r\n//CSAA\r\n// a. 2 Locations with 4 trunks.\r\n//\r\n// i. Location part is TBD as part of implementation\r\n//\r\n// ii. 2 Separate Trunks (2 Ips from ATL and PHX from Momentum each)\r\n//\r\n// iii. Each Trunk will have 750 SIP - Trunk Licenses - Each\r\n//\r\n// iv. Location can have multiple trunks\r\n//\r\n// v. Lowest ID Trunk will be picked first if there are multiple trunks with same IP address\r\n//\r\n// b. 21 DIDs - One Per location","import React, { Component } from 'react';\r\nimport * as apiCalls from '../../requests/api_calls';\r\nimport { DataLoadingSpinner } from '../../components/spinners';\r\nimport { Grid, GridColumn as Column, GridCell } from '@progress/kendo-react-grid';\r\nimport { orderBy } from '@progress/kendo-data-query';\r\nimport { filterBy } from '@progress/kendo-data-query';\r\nimport Popup from \"reactjs-popup\";\r\nimport moment from 'moment';\r\nimport { serviceFilters } from '../../constants/filters.js';\r\nimport { Link } from 'react-router-dom';\r\nimport ManageTrunkModal from './components/manageTrunkModal';\r\nimport * as settings from '../../scripts/settings';\r\nimport WrappedCell from '../../components/wordWrappedCell';\r\nexport default class IPTrunking extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: false,\r\n Listings: [],\r\n FullListings: [],\r\n Sort: [{ field: \"TrunkGroupID\", dir: \"asc\" }],\r\n gridHeight: (window.innerHeight - 200),\r\n }\r\n const transitionToManagePage = this.transitionToManagePage.bind(this);\r\n const transitionToDetailedCallLogs = this.transitionToDetailedCallLogs.bind(this);\r\n this.fetchTrunkList = this.fetchTrunkList.bind(this);\r\n\r\n class IPCountCell extends GridCell {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n LoadPop: false,\r\n IPInfo: [],\r\n }\r\n }\r\n\r\n fetchIpList = async (trunkId) => {\r\n await this.setState({ LoadPop: true });\r\n let apiPath = `admin/GetIpTrunkIPList?TrunkGroupID=${trunkId}`;\r\n await apiCalls.fetchData(apiPath).then(data => {\r\n if (data) {\r\n let IPContainer = [];\r\n data.forEach(itm => {\r\n if (itm) { IPContainer.push({ IP: itm }); }\r\n });\r\n this.setState({\r\n IPInfo: IPContainer,\r\n LoadPop: false\r\n });\r\n } else {\r\n this.setState({\r\n IPInfo: [],\r\n LoadPop: false,\r\n })\r\n }\r\n });\r\n }\r\n\r\n loadIpList = () => {\r\n if (this.state.LoadPop) {\r\n return \r\n } else {\r\n return (\r\n \r\n

    IP Addresses:

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

    No Available Data

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

    IP Trunking

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

    IP Trunking

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

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

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

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

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

    No Available Tickets

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

    No Available Tickets

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

    Support

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

    For immediate assistance please CALL Customer Care

    \r\n

    888.538.3960

    \r\n

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

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

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

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

    No Available Devices

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

    No Available Services & Users

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

    No Available Circuits To Load

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

    New Comment

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

    Emails

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

    Description

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

    Comments

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

    No Available Ticket

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

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

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

    Type

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

    Type

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

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

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

    Additional Files

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

    User Guides

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

    User Files

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

    Documents

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

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

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

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

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

    No Available Usage Data

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

    Voicemail Usage Report

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

    No Available Usage Data

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

    Enterprise Trunking {this.submissionMsg()}

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

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

    Update External User {this.submissionMsg()}

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

    No Available Data

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

    No Available Data

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

    No Available Data

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

    Single Sign On

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

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

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

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

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

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

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

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

    No Available Data

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

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

    No Available Data

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

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

    In this Deployment Step:

    \r\n

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    The following represents the request to add MS Teams SBC functionality

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Submit the request to setup and enable Derived Routing.

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

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

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

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

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

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

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

    Submit the request to migrate and enable Derived Routing.

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

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

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

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

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

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

    No Available Data

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

    No Available Data

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

    \r\n No Available Data\r\n

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

    \r\n No Available Data\r\n

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

    \r\n No Available Data\r\n

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

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

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

    Microsoft Teams

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

    Update Microsoft Teams User

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

    Addon List:

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

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

    Webex User List

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

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

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

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

    {this.state.CustomerName}

    */}\r\n

    Alerts Notifications

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

    Circuits List

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n {/* */}\r\n \r\n {/* */}\r\n \r\n {/* <>REPLACE ADDRESS WITH FORMATTED VERSION */}\r\n {/* */}\r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n {/*
    \r\n
    \r\n
    \r\n

    Summary Widget

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

    {upCircuits}

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

    {downCircuits}

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

    {circuitList.length}

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

    0

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

    Edit Circuit Item

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

    iframes are not supported by your browser.

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

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

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

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

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

    Circuits Activity

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

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

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

    {this.state.successMessage}

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

    {this.state.validationError}

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

    No Available Data

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

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

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

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

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

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

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

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

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

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

    No Available Data

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

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

    No Available Data

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

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

    \r\n No Available Data\r\n

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

    \r\n No Available Data\r\n

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

    \r\n No Available Data\r\n

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

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

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

    Operator Connect

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

    Update Operator Connect User

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

    Update Operator Connect Service Number

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

    {this.props.loginError}

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

    \n

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

    Help & Support

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

    Help & Support

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

    \r\n

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

    Sign in with your existing account

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

    {this.state.loginError}

    \r\n

    {this.state.contactError}

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

    {this.props.loginError}

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

    Forgot Password

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

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

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

    {this.state.Error}

    \r\n

    {this.state.validationError}

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

    {this.state.validationError}

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

    {this.state.successMessage}

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

    {this.state.validationError}

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

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

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

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

    \r\n

    MFA verification options:

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

    Text Message

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

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

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

    Authenticator app code

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

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

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

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

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

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

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

    Error

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

    Access to Beta Denied

    \r\n
    \r\n This account has not been granted access to the Beta\r\n Environment. Click on the link below to be redirected to the\r\n Cloud Services Portal\r\n
    \r\n
    \r\n \r\n Subscriber Portal\r\n \r\n
    \r\n \r\n Login with another account\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n } else if (this.props.loggedIn || sessionStorage.loggedIn && tokenIsValid) {\r\n if (\r\n (this.state.customTheme && this.state.customThemeLoaded) ||\r\n !this.state.customTheme\r\n ) {\r\n // ** Start MFA code\r\n // read enterprise option; if set to 'Mandatory' (and no verification type) open MFA modal\r\n if (sessionStorage.enableMFA == \"true\" && sessionStorage.MFAOption === \"Mandatory\" &&\r\n !sessionStorage.verificationMethod &&\r\n (!sessionStorage.validMfa || config.decryptKey(sessionStorage.validMfa) == false)) {\r\n if (!sessionStorage.RPXLogin || sessionStorage.RPXLogin == false || sessionStorage.RPXLogin == \"false\") {\r\n return \r\n }\r\n }\r\n if (sessionStorage.enableMFA == \"true\" && sessionStorage.verificationMethod && (!sessionStorage.validMfa || config.decryptKey(sessionStorage.validMfa) == false)) {\r\n // disable for users emulating from RPX\r\n if (!sessionStorage.RPXLogin || sessionStorage.RPXLogin == false || sessionStorage.RPXLogin == \"false\") {\r\n return \r\n }\r\n }\r\n\r\n // ** End MFA code\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n {((helper.shouldApplyCustomizations() && this.sideBarLogo) || !helper.shouldApplyCustomizations())\r\n && \r\n }\r\n
    \r\n
    \r\n
    \r\n {tokenUpdater(this.props.requestToken)}\r\n
    \r\n );\r\n } else {\r\n const loadingLogo = session.customLogoLarge() || momentumLogoWhite;\r\n return (\r\n
    \r\n {/* {this.loadingAltText} */}\r\n {/* */}\r\n \r\n
    \r\n );\r\n }\r\n } else if (helper.atSupportLinksPath() && !helper.isRetailDomain(domain)) {\r\n if (\r\n (this.state.customTheme && this.state.customThemeLoaded) ||\r\n !this.state.customTheme\r\n ) {\r\n return (\r\n
    \r\n \r\n
    \r\n {/* {((helper.shouldApplyCustomizations() && this.sideBarLogo) || !helper.shouldApplyCustomizations())\r\n && \r\n } */}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n } else {\r\n const loadingLogo = session.customLogoLarge() || momentumLogoWhite;\r\n return (\r\n
    \r\n {/* {this.loadingAltText} */}\r\n {/* */}\r\n \r\n
    \r\n );\r\n }\r\n }\r\n else if (!this.state.loadingAccessToken && !tokenIsValid) {\r\n if (window.location.pathname == '/forgotpassword') {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n else if (window.location.pathname == '/resetpassword') {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n else if (window.location.pathname == '/ValidateTwoStepEmail') {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n else {\r\n // session.logout()\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n }\r\n else {\r\n const loadingLogo = session.customLogoLarge() || momentumLogoWhite;\r\n return (\r\n
    \r\n {/* */}\r\n {this.loadingAltText}\r\n \r\n
    \r\n );\r\n }\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n loadingAccessToken: state.reducer.loadingAccessToken,\r\n loggedIn: state.reducer.loggedIn,\r\n requestToken: state.reducer.requestToken,\r\n beta_access_denied: helper.toBoolean(state.reducer.beta_access_denied),\r\n rpxLogin: state.reducer.rpxLogin,\r\n isMspLogin: state.reducer.isMspLogin,\r\n redirecting: helper.toBoolean(state.reducer.redirecting),\r\n validMfa: state.reducer.validMfa,\r\n };\r\n};\r\nconst mapDispatchToProps = { tokenRepo };\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(App);","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { Provider } from \"react-redux\";\r\nimport { store } from \"./store/store\";\r\nimport \"./index.css\";\r\nimport App from \"./App\";\r\nimport { unregister } from \"./registerServiceWorker\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\nunregister();\r\n","import * as config from \"./config\";\r\nimport * as settings from \"./../scripts/settings\";\r\nimport * as actions from \"./../store/actions\";\r\nimport { store } from '../store/store';\r\nimport * as session from '../scripts/session';\r\n\r\nexport const customFetch = async (apiPath, customHeaders, isJson = false ) => \r\n{\r\n \r\n return await fetch(apiPath, {method: \"GET\", headers: customHeaders})\r\n .then(response => {\r\n if (response.ok) {\r\n return isJson ? response.json() : response.text();\r\n } else {\r\n logResponseToConsole(response, apiPath);\r\n return null;\r\n }\r\n })\r\n .catch(error => {\r\n console.log(\"error: \" + error);\r\n return Promise.reject(error);\r\n });\r\n}\r\n\r\nexport const putDataWithCustomHeader = async (apiPath,body, customHeaders, isJson = false ) => \r\n{\r\n return await fetch(apiPath, {method: \"PUT\",body: body, headers: customHeaders})\r\n .then(response => {\r\n if (response.ok) {\r\n return isJson ? response.json() : response.text();\r\n } else {\r\n logResponseToConsole(response, apiPath);\r\n return response.status;\r\n }\r\n })\r\n .catch(error => {\r\n console.log(\"error: \" + error);\r\n return Promise.reject(error);\r\n });\r\n}\r\n\r\nexport const fetchData = async (apiPath, useHeaderWithTokenPolicy = false, autoRetry = true) => {\r\n \r\n \r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n if (useHeaderWithTokenPolicy) {\r\n \r\n const response = await checkForToken();\r\n \r\n if (response === \"timeout\") {\r\n return null;\r\n }\r\n }\r\n\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n headers: useHeaderWithTokenPolicy\r\n ? headersWithTokenAndPolicy()\r\n : config.headers()\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n return response.json();\r\n } else if (response.status === settings.unauthorized) {\r\n return autoRetry ? \r\n refreshTokenAndRetry(apiPath) :\r\n null;\r\n } else {\r\n logResponseToConsole(response, apiPath);\r\n return null;\r\n }\r\n })\r\n .catch(error => {\r\n console.log(\"error: \" + error);\r\n return Promise.reject(error);\r\n });\r\n};\r\n\r\nconst logResponseToConsole = (response, apiPath) => {\r\n if (response.status !== 404) {\r\n console.log(\"response: \" + response.status);\r\n console.log(\"API path: \" + apiPath);\r\n console.log(response);\r\n }\r\n};\r\n\r\nconst headersWithTokenAndPolicy = () => {\r\n return {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n};\r\n\r\nexport const postData = async (apiPath, body, headers = {\r\n 'Content-Type': 'application/x-www-form-urlencoded', \r\n 'Accept': 'application/json'\r\n } ) => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: \"POST\",\r\n body: JSONToFormUrlEndcodedString(body),\r\n headers: headersWithTokenAndPolicy()\r\n })\r\n .then(response => {\r\n return response.text().then(e => {\r\n return Promise.resolve({ ok: response.ok, message: e });\r\n });\r\n })\r\n .catch(error => {\r\n return Promise.reject(error);\r\n });\r\n};\r\n\r\nexport const postDataWithCustomHeader = async (apiPath, body, headers = null ) => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: \"POST\",\r\n body: JSONToFormUrlEndcodedString(body),\r\n headers: headers ? headers : headersWithTokenAndPolicy()\r\n }).then( response => {\r\n return response.text().then(e=>{\r\n return Promise.resolve({ok: response.ok, message: e});\r\n });\r\n }).catch(error => {\r\n return Promise.reject(error);\r\n });\r\n}\r\n\r\nexport const post = async (apiPath, method, data) => {\r\n //return await fetch(\"https://localhost:44330/api/\" + apiPath, {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: method,\r\n body: data,\r\n headers: headersWithTokenAndPolicy()\r\n }).then( response => {\r\n return response.text().then(e=>{\r\n return Promise.resolve({ok: response.ok, message: e});\r\n });\r\n }).catch(error => {\r\n return Promise.reject(error);\r\n });\r\n}\r\n\r\nexport const postSubmit = async (apiPath, body, includeToken = true, headers = null ) => {\r\n let defaultSubmitHeader = {\r\n 'Content-Type': 'application/x-www-form-urlencoded', \r\n 'Accept': 'text/html'\r\n };\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n let postHeader = {}; \r\n let formHeader = headers ? headers : defaultSubmitHeader;\r\n if (includeToken)\r\n postHeader = {\r\n \"Accept\": formHeader.Accept,\r\n \"Content-Type\": formHeader[\"Content-Type\"],\r\n Authorization: \"Bearer \" + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy()\r\n };\r\n else\r\n postHeader = {\r\n Accept: formHeader.Accept,\r\n \"Content-Type\": formHeader[\"Content-Type\"]\r\n };\r\n\r\n //postHeader = JSON.stringify(postHeader);\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: \"POST\",\r\n body: JSONToFormUrlEndcodedString(body),\r\n headers: postHeader\r\n })\r\n .then(response => {\r\n return response.text().then(e => {\r\n return Promise.resolve({ ok: response.ok, message: e });\r\n });\r\n })\r\n .catch(error => {\r\n return Promise.reject(error);\r\n });\r\n};\r\n\r\nexport const send = async (apiPath, method, data) => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(config.baseApiUrl + apiPath, {\r\n method: method,\r\n body: data,\r\n headers: headersWithTokenAndPolicy()\r\n })\r\n .then(response => {\r\n return response.text().then(e => {\r\n return Promise.resolve({ ok: response.ok, message: e });\r\n });\r\n })\r\n .catch(error => {\r\n return Promise.reject(error);\r\n });\r\n};\r\n\r\nexport const JSONToFormUrlEndcodedString = obj => {\r\n let formBody = [];\r\n for (let property in obj) {\r\n let encodedKey = encodeURIComponent(property);\r\n let encodedValue = encodeURIComponent(obj[property]);\r\n formBody.push(encodedKey + \"=\" + encodedValue);\r\n }\r\n return formBody.join(\"&\");\r\n};\r\n\r\nexport const saveFavoriteService = async item => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n let favService = JSON.stringify({ ServiceId: item.ServiceId });\r\n return await fetch(config.baseApiUrl + \"admin/FavoriteServices\", {\r\n method: \"POST\",\r\n headers: {\r\n Authorization: \"Bearer \" + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy(),\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\"\r\n },\r\n body: favService\r\n }).then(response => {\r\n if (response.ok) {\r\n return response.json();\r\n } else {\r\n console.log(\"statusText\", response.statusText);\r\n }\r\n });\r\n};\r\n\r\nexport const unfavoriteService = async item => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n let params = \"?id=\" + item.FavoriteServiceId;\r\n return await fetch(config.baseApiUrl + \"admin/FavoriteServices\" + params, {\r\n method: \"DELETE\",\r\n headers: config.headers()\r\n }).then(response => {\r\n if (response.ok) {\r\n return response.json();\r\n } else {\r\n console.log(\"statusText\", response.statusText);\r\n }\r\n });\r\n};\r\n\r\nexport const refreshRCListForMACDConfig = async (gridItem, selectedState) => {\r\n if (!session.tokenIsValid()) {\r\n store.dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n return;\r\n }\r\n return await fetch(\r\n config.baseApiUrl + \"admin/macd/GetRCListByState?RCState=\" + selectedState,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + config.storedAccessToken(),\r\n 'X-Policy': config.storedXPolicy(),\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\"\r\n }\r\n }\r\n ).then(response => {\r\n if (response.ok) {\r\n return response.json();\r\n } else {\r\n console.log(\"statusText\", response.statusText);\r\n }\r\n });\r\n};\r\n\r\nconst refreshTokenAndRetry = async apiPath => {\r\n requestNewToken();\r\n return checkForNewToken()\r\n .then(response => {})\r\n .then(data => {\r\n return fetchData(apiPath);\r\n });\r\n};\r\n\r\nconst requestNewToken = () => {\r\n // update redux store to show a token request is pending\r\n let action = { type: actions.REFRESH_TOKEN };\r\n store.dispatch(action);\r\n};\r\n\r\nconst checkForNewToken = apiPath => {\r\n return new Promise(resolve => tokenCheckInterval(resolve));\r\n};\r\n\r\nconst tokenCheckInterval = resolve => {\r\n let i = 0;\r\n let expiredToken = sessionStorage.accessToken;\r\n let interval = setInterval(() => {\r\n i++;\r\n if (expiredToken !== sessionStorage.accessToken) {\r\n console.log(\"token updated\");\r\n clearInterval(interval);\r\n resolve(\"ok\");\r\n } else if (i > 60) {\r\n // timeout after 1 minute\r\n // console.log('token request timed out');\r\n clearInterval(interval);\r\n resolve(\"abort\");\r\n }\r\n }, 1000);\r\n};\r\n\r\nexport const checkForToken = (token = 'accessToken') => {\r\n const accessTokenPromise = new Promise(async resolve => {\r\n // await sessionStorage.accessToken;\r\n await sessionStorage[token];\r\n resolve(\"ok\");\r\n });\r\n const timeout = new Promise((resolve, reject) => {\r\n setTimeout(() => {\r\n resolve(\"timeout\");\r\n }, 1000 * 60);\r\n });\r\n\r\n return Promise.race([accessTokenPromise, timeout]);\r\n};\r\n","import 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 Msal from \"msal\";\r\nimport * as session from \"./../scripts/session\";\r\nimport * as settings from \"./../scripts/settings\";\r\nimport * as actions from \"./../store/actions\";\r\nimport { store } from \"../store/store\";\r\nimport { fetchData, customFetch } from \"./../requests/api_calls\";\r\nimport * as moment from \"moment\";\r\nimport * as helper from '../scripts/helper';\r\nimport jwtDecode from \"jwt-decode\";\r\n\r\nconst currentTime = new Date().getTime();\r\n\r\nexport const IMAGE_URL_PREFIX = 'data:image/png;base64,';\r\n\r\nexport const baseUrl = process.env.REACT_APP_MSA_URL;\r\n\r\nexport const baseApiUrl = process.env.REACT_APP_MSA_API_URL;\r\n\r\nexport const baseMSPUrl = process.env.REACT_APP_MSP_URL;\r\n\r\nexport const defaultXpolicy = process.env.REACT_APP_MSA_XPOLICY;\r\n\r\nexport const defaultXPolicyConfig = process.env.REACT_APP_MSA_XPOLICY_CONFIG;\r\n\r\nexport const clientId = process.env.REACT_APP_MSA_CLIENT_ID;\r\n\r\nexport const authorityUrl = process.env.REACT_APP_MSA_AUTHORITY_URL;\r\n\r\nexport const authority = authorityUrl + defaultXpolicy;\r\n\r\nexport const version = process.env.REACT_APP_VERSION;\r\n\r\nconst b2c_scope_read = process.env.REACT_APP_MSA_B2C_SCOPES_URL + \"read\";\r\nconst b2c_scope_write = process.env.REACT_APP_MSA_B2C_SCOPES_URL + \"write\";\r\nexport const b2cScopes = [b2c_scope_read, b2c_scope_write];\r\n\r\nexport const auth = {\r\n clientId: clientId,\r\n authority: authority,\r\n b2cScopes: b2cScopes\r\n};\r\n\r\nexport const storedAccessToken = () => {\r\n return sessionStorage.accessToken;\r\n};\r\n\r\nexport const storedUserEmail = () => {\r\n return sessionStorage.userEmail;\r\n};\r\n\r\nexport const storedAccountNumber = () => {\r\n return sessionStorage.AccountNumber;\r\n};\r\n\r\nexport const storedXPolicy = () => {\r\n return sessionStorage.xpolicy;\r\n};\r\n\r\nexport const serviceId = () => {\r\n if (sessionStorage.ServiceId) return parseInt(sessionStorage.ServiceId);\r\n return -1;\r\n};\r\n\r\nexport const headers = () => {\r\n return {\r\n Authorization: \"Bearer \" + storedAccessToken(),\r\n 'X-Policy': storedXPolicy()\r\n };\r\n};\r\n\r\nexport const expirationRemainingDelta = () => {\r\n var expiration = moment.unix(sessionStorage.expiration);\r\n let currentMil = moment();\r\n let duration = moment.duration(expiration.diff(currentMil));\r\n let finalDuration = duration.asMilliseconds() - (60 * 1000 * 3);\r\n return finalDuration; //3 minutes before expiration run tokenUpdater\r\n};\r\n\r\nexport const loginRPXUser = async encParam => {\r\n let auth =\r\n \"Basic \" +\r\n btoa(\"Emulated User\" + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD);\r\n let url = baseApiUrl + \"auth/AzureToken\";\r\n let azureTokenResult = await fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n Authorization: auth\r\n },\r\n body: JSON.stringify(encParam)\r\n });\r\n if (!azureTokenResult.ok) return Promise.reject(\"token not valid\");\r\n\r\n let rpxData = await azureTokenResult.json();\r\n return storeRPXToken(rpxData);\r\n};\r\n\r\nexport const storeRPXToken = async rpxData => {\r\n //sessionStorage.clear();\r\n //don't wanna clear all sessionStorage just everything not sending to FS\r\n sessionStorage.removeItem('accessToken');\r\n sessionStorage.removeItem('refreshToken');\r\n sessionStorage.removeItem('xpolicy');\r\n sessionStorage.removeItem('userGivenName');\r\n sessionStorage.removeItem('redirecting');\r\n sessionStorage.removeItem('tokenIsValid');\r\n sessionStorage.removeItem('expiration');\r\n sessionStorage.removeItem(\"userFullName\");\r\n sessionStorage.removeItem(\"username\");\r\n sessionStorage.removeItem(\"userEnterpriseNumber\");\r\n sessionStorage.removeItem(\"userRole\");\r\n sessionStorage.removeItem(\"userType\");\r\n sessionStorage.removeItem(\"userTypeId\");\r\n sessionStorage.removeItem(\"IsWholesale\");\r\n sessionStorage.removeItem(\"userHasServices\");\r\n sessionStorage.removeItem(\"userReadPermission\");\r\n sessionStorage.removeItem(\"userWritePermission\");\r\n sessionStorage.removeItem(\"userTimeZone\");\r\n sessionStorage.removeItem(\"beta_access_denied\");\r\n\r\n let accessToken = rpxData.access_token;\r\n let refreshToken = rpxData.refresh_token;\r\n\r\n let decodedToken = jwtDecode(accessToken);\r\n sessionStorage.setItem(\"accessToken\", accessToken);\r\n sessionStorage.setItem(\"refreshToken\", refreshToken);\r\n sessionStorage.setItem(\"xpolicy\", decodedToken.tfp);\r\n sessionStorage.setItem(\"userGivenName\", decodedToken.given_name);\r\n sessionStorage.setItem(\"redirecting\", false);\r\n sessionStorage.setItem(\"tokenIsValid\", true);\r\n sessionStorage.setItem(\"expiration\", decodedToken.exp);\r\n\r\n await refreshTokenIfExpired(decodedToken.exp);\r\n\r\n let data = await fetchData(\"usr/PrincipalUser\");\r\n if (data === null) return Promise.reject(\"principal user not found\");\r\n\r\n helper.storeVendorId(data.Reseller.CompanyInfo.SalesGroupId)\r\n setUserPropsToSessionStorage(data);\r\n sessionStorage.setItem(\"loggedIn\", true);\r\n\r\n if (rpxData.page === \"MSP_GROUP\") {\r\n if (sessionStorage.IPTrunkEmulation) {\r\n //Go to IP Trunking Page\r\n sessionStorage.setItem('hasIpTrunk', true);\r\n window.location.replace('/ip_trunking');\r\n } else {\r\n window.location.replace(\"/iframe_page/MSP_GROUP/\" + rpxData.LocationID);\r\n }\r\n }\r\n else if (rpxData.page === \"MSP_SUBSCRIBER\") {\r\n let service = await fetchData(\r\n \"usr/MyServices?DirectoryNumber=\" + rpxData.tn\r\n );\r\n if (service) {\r\n settings.setService(service[0]);\r\n }\r\n if (sessionStorage.IPTrunkEmulation) {\r\n //Go to User Dashboard\r\n sessionStorage.setItem('hasIpTrunk', true);\r\n window.location.replace('/dashboard');\r\n } else {\r\n window.location.replace(\r\n \"/iframe_page/MSP_SUBSCRIBER/\" + rpxData.LocationID + \"/\" + rpxData.tn\r\n );\r\n }\r\n sessionStorage.removeItem('IPTrunkEmulation');\r\n }\r\n return Promise.resolve(\"\");\r\n};\r\n\r\nexport const loginUser = (data = {}, customPolicy = null) => {\r\n sessionStorage.setItem(\"redirecting\", true);\r\n try {\r\n if (customPolicy) {\r\n clientApp.authority = customPolicy.authority;\r\n clientApp.clientId = customPolicy.clientId;\r\n }\r\n\r\n // SB: 7/25/2021: added IdPAppClientId\r\n let DomainHint = '';\r\n if (data.IsExternalUser === true) {\r\n DomainHint = data.EnterpriseId + '-' + data.IdPApp.IdPAppClientId;\r\n }\r\n\r\n const queryString = {\r\n // SB: set domain_hint only for ext. users\r\n // SB: 7/22/2021 - domain_hint is now in format EnterpriseId-IdPAppClientId\r\n domain_hint: DomainHint,\r\n ProviderId: data.ProviderId,\r\n EnterpriseId: data.EnterpriseId\r\n };\r\n\r\n clientApp.loginRedirect({\r\n scopes: b2cScopes,\r\n loginHint: data.LoginName,\r\n extraQueryParameters: queryString,\r\n });\r\n }\r\n catch (error) {\r\n console.log('loginUser Error: ' + error);\r\n settings.saveLoginError(error);\r\n }\r\n};\r\n\r\n// (1) Create MSAL Instance\r\n// const msalConfig = {\r\n// auth: {\r\n// clientId: clientId,\r\n// authority: authority,\r\n// validateAuthority: false,\r\n// }\r\n// }\r\nconst msalConfig = {\r\n auth: {\r\n clientId: clientId, // This is the ONLY mandatory field that you need to supply.\r\n authority: authority, // Use a sign-up/sign-in user-flow as a default authority\r\n validateAuthority: false,\r\n redirectUri: window.location.origin, // Points to window.location.origin. You must register this URI on Azure Portal/App Registration.\r\n // postLogoutRedirectUri: window.location.origin, // Indicates the page to navigate after logout.\r\n // navigateToLoginRequestUrl: false, // If \"true\", will navigate back to the original request location before processing the auth code response.\r\n },\r\n cache: {\r\n cacheLocation: \"sessionStorage\", // Configures cache location. \"sessionStorage\" is more secure, but \"localStorage\" gives you SSO between tabs.\r\n storeAuthStateInCookie: true, // Set this to \"true\" if you are having issues on IE11 or Edge\r\n }\r\n};\r\nexport const clientApp = new Msal.UserAgentApplication(msalConfig, { loadFrameTimeout: 30000 });\r\n// (2) Acquire Access Token using Login Redirect\r\nclientApp.handleRedirectCallback(async () => {\r\n clientApp.authority = sessionStorage.CustomAuthUrl;\r\n clientApp.clientId = sessionStorage.CustomAuthClientId;\r\n clientApp.config.auth.authority = sessionStorage.CustomAuthUrl;\r\n clientApp.config.auth.clientId = sessionStorage.CustomAuthClientId;\r\n // handle redirect response or error\r\n // if the user is already logged in you can acquire a token\r\n if (clientApp.getAccount()) {\r\n await clientApp.acquireTokenSilent({\r\n scopes: b2cScopes,\r\n loginHint: sessionStorage.loggedUser,\r\n }).then(async (response) => {\r\n sessionStorage.setItem(\"tokenResponse\", JSON.stringify(response));\r\n await storeToken(response.accessToken);\r\n await saveUserProperties();\r\n }).catch(acquireTokenError => {\r\n try {\r\n clientApp.acquireTokenRedirect({\r\n scopes: b2cScopes,\r\n loginHint: sessionStorage.loggedUser,\r\n });\r\n } catch (error) {\r\n console.log(`A loging error occurred on the second attempt to acquire token: --> ${error}`);\r\n settings.saveLoginError(acquireTokenError);\r\n }\r\n });\r\n } else {\r\n // user is not logged in, you will need to log them in to acquire a token\r\n console.log(\"USER IS NOT LOGGED IN\");\r\n }\r\n});\r\n\r\n// export const clientApp = new Msal.UserAgentApplication({\r\n// auth: {\r\n// clientId: auth.clientId,\r\n// authority: auth.authority,\r\n// validateAuthority: false,\r\n// }\r\n// });\r\n\r\n// clientApp.handleRedirectCallback(async (error, response) => {\r\n// sessionStorage.setItem('isloadingAccessToken', false);\r\n// if (error) {\r\n// let { errorMessage } = error;\r\n// settings.saveLoginError(errorMessage);\r\n// } else {\r\n// if (clientApp.getAccount()) {\r\n// var tokenRequest = {\r\n// scopes: b2cScopes\r\n// };\r\n// await clientApp.acquireTokenSilent(tokenRequest)\r\n// .then(async response => {\r\n// await storeToken(response.accessToken);\r\n// await saveUserProperties();\r\n// })\r\n// .catch(err => {\r\n// session.logout()\r\n// });\r\n// }\r\n// else {\r\n// // user is not logged in, you will need to log them in to acquire a token\r\n// session.logout()\r\n// }\r\n// }\r\n// });\r\n\r\n//used to retrieve existing session thru async redux\r\nexport const tokenSaveUserProperties = async (accessToken, rpxEmulation = false) => {\r\n try {\r\n //console.log(\"accessToken\", accessToken);\r\n //using a custom fetch call because for whatever reason accessToken refuses to be translated from local to session prior to this call being made\r\n //custom fetch allows me to set a custom set of headers and the custom url\r\n let customHeader = {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + accessToken,\r\n 'X-Policy': storedXPolicy()\r\n };\r\n let apiPath = baseApiUrl + '/usr/PrincipalUser';\r\n await customFetch(apiPath, customHeader, true).then(data => {\r\n if (data) {\r\n //need to read data to see if current environment is beta & if user is allowed to beta\r\n let env = process.env.REACT_APP_ENVIRONMENT;\r\n if (env === \"staging\" && (!data.BetaAllowed || data.BetaAllowed === false) && (!data.IsWholesSale || data.IsWholeSale === false)) {\r\n sessionStorage.setItem(\"beta_access_denied\", true);\r\n store.dispatch({ type: actions.REDIRECT_BETA_ACCESS });\r\n } else {\r\n // set redux store to loggedIn:true, redirecting:false\r\n storeToken(accessToken, rpxEmulation);\r\n setUserPropsToSessionStorage(data);\r\n store.dispatch({ type: actions.LOGIN_USER });\r\n store.dispatch({ type: actions.RECEIVE_TOKEN, accessToken: accessToken });\r\n }\r\n } else {\r\n session.logout();\r\n //store.dispatch({type: actions.START_LOGIN});\r\n }\r\n }).catch((exc) => {\r\n console.log('error tokenSaveUserProperties: ' + exc);\r\n session.logout();\r\n //store.dispatch({type: actions.START_LOGIN});\r\n });\r\n }\r\n catch (ex) {\r\n console.log('error2 tokenSaveUserProperties: ' + ex);\r\n }\r\n};\r\n\r\nexport const storeToken = async (accessToken, rpxEmulation = false) => {\r\n\r\n let decodedToken = jwtDecode(accessToken);\r\n\r\n store.dispatch({ type: actions.RECEIVE_TOKEN, accessToken: accessToken });\r\n sessionStorage.setItem(\"accessToken\", accessToken);\r\n sessionStorage.setItem(\"refreshToken\", \"\");\r\n sessionStorage.setItem(\"xpolicy\", decodedToken.tfp);\r\n sessionStorage.setItem(\"userGivenName\", decodedToken.given_name);\r\n sessionStorage.setItem(\"expiration\", decodedToken.exp);\r\n sessionStorage.setItem(\"loggedIn\", true);\r\n sessionStorage.setItem(\"RPXLogin\", rpxEmulation);\r\n // if (!rpxEmulation)\r\n // sessionStorage.removeItem('emulatedUser');\r\n\r\n sessionStorage.setItem(\"redirecting\", false);\r\n sessionStorage.setItem(\"tokenIsValid\", true);\r\n sessionStorage.setItem(\"sessionStart\", currentTime);\r\n\r\n};\r\n\r\nconst saveUserProperties = async () => {\r\n try {\r\n fetchData(\"usr/PrincipalUser\").then(data => {\r\n if (data) {\r\n //need to read data to see if current environment is beta & if user is allowed to beta\r\n let env = process.env.REACT_APP_ENVIRONMENT;\r\n if (env === \"staging\" && (!data.BetaAllowed || data.BetaAllowed === false) && (!data.IsWholesSale || data.IsWholeSale === false)) { //&& data.BetaAllowed === false && data.IsWholeSale === false) {\r\n sessionStorage.setItem(\"beta_access_denied\", true);\r\n store.dispatch({ type: actions.REDIRECT_BETA_ACCESS });\r\n } else {\r\n // set redux store to loggedIn:true, redirecting:false\r\n setUserPropsToSessionStorage(data);\r\n store.dispatch({ type: actions.LOGIN_USER });\r\n }\r\n } else {\r\n //error so nothing is returned from PrincipalUser. Need to logout because user experience will be blank\r\n session.logout();\r\n }\r\n }).catch((exc) => {\r\n console.log(exc);\r\n session.logout();\r\n });\r\n } catch (ex) {\r\n session.logout();\r\n }\r\n};\r\n\r\nexport function encryptKey(value) { // encrypting specific user identity property to avoid bypass by manipulating session storage\r\n // Generate a random key\r\n const key = new Uint8Array(16);\r\n window.crypto.getRandomValues(key);\r\n // Encrypt the value using the Substitution Cipher algorithm\r\n let encryptedValue = \"\";\r\n for (let i = 0; i < value.length; i++) {\r\n const charCode = value.charCodeAt(i) ^ key[i % key.length];\r\n encryptedValue += String.fromCharCode(charCode);\r\n }\r\n // Convert the key to a regular array before stringifying\r\n let output = [encryptedValue, Array.from(key)];\r\n return JSON.stringify(output);\r\n}\r\n\r\nexport function decryptKey(arr) {\r\n try {\r\n arr = JSON.parse(arr);\r\n // Convert the key back to a Uint8Array after parsing\r\n let encryptedValue = arr[0];\r\n let key = new Uint8Array(arr[1]);\r\n let decryptedValue = \"\";\r\n for (let i = 0; i < encryptedValue.length; i++) {\r\n const charCode = encryptedValue.charCodeAt(i) ^ key[i % key.length];\r\n decryptedValue += String.fromCharCode(charCode);\r\n }\r\n if (decryptedValue == sessionStorage.userId) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n}\r\n\r\nconst setUserPropsToSessionStorage = data => {\r\n sessionStorage.setItem(\"MSTeamsRoutingType\", data.MSTeamsRoutingType); // (10/127/2022) * added for MS Teams configuration\r\n sessionStorage.setItem(\"VoipSwitch\", data.VoipSwitch);\r\n sessionStorage.setItem(\"userFullName\", data.Name);\r\n sessionStorage.setItem(\"userEmail\", data.Email);\r\n sessionStorage.setItem(\"userId\", data.UserId);\r\n sessionStorage.setItem(\"enterpriseId\", data.EnterpriseId);\r\n sessionStorage.setItem(\"enterpriseType\", data.EnterpriseType); // (9/18/2020) * added for AD Sync User List retrieval\r\n sessionStorage.setItem(\"username\", data.Username);\r\n sessionStorage.setItem(\"userEnterpriseNumber\", data.EnterpriseNumber);\r\n sessionStorage.setItem(\"userRole\", data.Role);\r\n sessionStorage.setItem(\"userType\", data.UserType);\r\n sessionStorage.setItem(\"userTypeId\", data.UserTypeId);\r\n sessionStorage.setItem(\"IsWholesale\", data.IsWholesale);\r\n sessionStorage.setItem(\"userHasServices\", data.HasServices);\r\n sessionStorage.setItem(\"userReadPermission\", data.ReadPermission);\r\n sessionStorage.setItem(\"userWritePermission\", data.WritePermission);\r\n sessionStorage.setItem(\"userTimeZone\", data.TZAbbr);\r\n sessionStorage.setItem(\"beta_access_denied\", false);\r\n sessionStorage.setItem(\"salesGroupId\", data.Reseller.CompanyInfo.SalesGroupId);\r\n sessionStorage.setItem(\"serviceProviderName\", data.Reseller.CompanyInfo.ServiceProviderName);\r\n sessionStorage.setItem(\"enableMFA\", data.EnableMFA);\r\n sessionStorage.setItem(\"verificationMethod\", data.VerificationMethod); // TSV\r\n sessionStorage.setItem(\"MFAOption\", data.MFAOption); // TSV\r\n sessionStorage.setItem(\"IsOktaPushEnabled\", data.IsOktaPushEnabled);\r\n sessionStorage.setItem(\"MfaAllowAuthApp\", data.MfaAllowAuthApp);\r\n sessionStorage.setItem(\"MfaAllowSms\", data.MfaAllowSms);\r\n sessionStorage.setItem(\"AccountNumber\", data.AccountNumber);\r\n};\r\n\r\nconst refreshTokenIfExpired = async expInSecs => {\r\n let currentTime = Date.now();\r\n let expInMillisecs = parseInt(expInSecs) * 1000;\r\n if (expInMillisecs < currentTime) session.rpxTokenUpdater();\r\n};\r\n\r\nexport const retrieveCustomConfigs = async (HostName) => {\r\n return await fetchData(\"usr/WLGetUIConfig?HostName=\" + HostName, true, false);\r\n};","import * as actions from './actions';\r\nimport * as helper from './../scripts/helper';\r\nimport * as config from './../requests/config';\r\nimport * as settings from './../scripts/settings';\r\nconst initialState = () => {\r\n return {\r\n loggedIn: sessionStorage.loggedIn && sessionStorage.loggedIn.toString().toLowerCase() === 'true' ? true : false,\r\n tokenIsValid: sessionStorage.tokenIsValid && sessionStorage.tokenIsValid.toString().toLowerCase() === 'true' ? true : false,\r\n redirecting: sessionStorage.redirecting && sessionStorage.redirecting.toString().toLowerCase() === 'true' ? true : false,\r\n requestToken: false,\r\n serviceLoading: true,\r\n restartSession: sessionStorage.restartSession && sessionStorage.restartSession.toString().toLowerCase() === 'true' ? true : false,\r\n hasDevices: sessionStorage.hasDevices && sessionStorage.hasDevices.toString().toLowerCase() === 'true' ? true : false,\r\n // MJ: Pascal Case used below to align with API payloads\r\n ServiceId: sessionStorage.ServiceId,\r\n ServiceNumber: sessionStorage.ServiceNumber,\r\n UserId: sessionStorage.UserId,\r\n PBXUserID: sessionStorage.PBXUserID,\r\n AccountNumber: sessionStorage.AccountNumber,\r\n DirectoryNumber: sessionStorage.DirectoryNumber,\r\n LocationAccountNumber: sessionStorage.LocationAccountNumber,\r\n LocationAddress: sessionStorage.LocationAddress,\r\n beta_access_denied: sessionStorage.beta_access_denied,\r\n loadingAccessToken: true,\r\n isSelectedServiceIpTrunking: false,\r\n themes_loaded: false,\r\n permissionsRetrieved: false,\r\n isMspLogin: (sessionStorage.isMspLogin && sessionStorage.isMspLogin.toString() === 'true' ? true : false) || false,\r\n mspLoginData: {},\r\n //validMfa: sessionStorage.validMfa && sessionStorage.validMfa.toString().toLowerCase() === 'true' ? true : false,\r\n validMfa: null,\r\n // cl_call_type: action.cl_call_type,\r\n // cl_status_type: action.cl_status_type,\r\n // cl_call_category: action.cl_call_category,\r\n // cl_from_date: action.cl_from_date,\r\n // cl_to_date: action.cl_to_date\r\n }\r\n}\r\n\r\nconst reducer = (state = initialState(), action) => {\r\n // set and use constants in store/actions.js to avoid silently failing typo errors\r\n switch (action.type) {\r\n // set when login button is clicked\r\n case actions.REDIRECTING:\r\n return {\r\n ...state,\r\n redirecting: true,\r\n }\r\n case actions.START_LOGIN:\r\n sessionStorage.setItem('timer', settings.loginTimeout);\r\n return {\r\n ...state,\r\n loggedIn: false,\r\n loadingAccessToken: false,\r\n }\r\n case actions.LOGIN_USER:\r\n // set after authentication has completed to load dashboard\r\n return {\r\n ...state,\r\n loggedIn: true,\r\n tokenIsValid: true,\r\n redirecting: false,\r\n }\r\n case actions.VALIDATE_MFA:\r\n let key = config.encryptKey(sessionStorage.userId);\r\n sessionStorage.setItem('validMfa', key);\r\n return {\r\n ...state,\r\n validMfa: key,\r\n }\r\n case actions.TOKEN_LOADED:\r\n return {\r\n ...state,\r\n loadingAccessToken: false\r\n }\r\n case actions.RECEIVE_TOKEN:\r\n sessionStorage.removeItem('loggingOut');\r\n localStorage.setItem('accessToken', action.accessToken);\r\n return {\r\n ...state,\r\n loadingAccessToken: false\r\n }\r\n case actions.IP_TRUNKING_ONLY_SET:\r\n return {\r\n ...state,\r\n isIpTrunkingOnly: sessionStorage.isIpTrunkingOnly && sessionStorage.isIpTrunkingOnly.toString().toLowerCase() === 'true' ? true : false\r\n }\r\n case actions.PERMISSIONS_UPDATED:\r\n return {\r\n ...state,\r\n hasTrunking: sessionStorage.hasTrunk && sessionStorage.hasTrunk.toString().toLowerCase() === 'true' ? true : false,\r\n hasContactCenter: sessionStorage.hasContactCenter && sessionStorage.hasContactCenter.toString().toLowerCase() === 'true' ? true : false,\r\n hasMacd: sessionStorage.MacdPerms && JSON.stringify(sessionStorage.MacdPerms).indexOf(1) >= 0 ? true : false,\r\n hasDevices: sessionStorage.hasDevices && sessionStorage.hasDevices.toString().toLowerCase() === 'true' ? true : false,\r\n hasIpTrunk: sessionStorage.hasIpTrunk && sessionStorage.hasIpTrunk.toString().toLowerCase() === 'true' ? true : false,\r\n hasTicketing: sessionStorage.hasTicketing,\r\n hasVmUsageReport: sessionStorage.hasVmUsageReport && sessionStorage.hasVmUsageReport.toString().toLowerCase() === 'true' ? true : false,\r\n permissionsRetrieved: true\r\n };\r\n case actions.RESTART_SESSION:\r\n // set after authentication fails and the the retry button is clicked\r\n return {\r\n ...state,\r\n restartSession: true\r\n }\r\n case actions.SAVE_LOGIN_ERROR:\r\n // save error message returned from calling clientApp.loginRedirect()\r\n return {\r\n ...state,\r\n loginError: action.loginError,\r\n loginErrorDescription: action.loginErrorDescription\r\n }\r\n case actions.REFRESH_TOKEN:\r\n // set if API call receivs a 401 (unauthorized) response so token refresh is attempted\r\n return {\r\n ...state,\r\n requestToken: true\r\n }\r\n case actions.UPDATE_TOKEN_STATUS:\r\n return {\r\n ...state,\r\n tokenIsValid: action.tokenIsValid\r\n }\r\n case actions.SET_LOCATION:\r\n // set in devices component in admin dashboard\r\n return {\r\n ...state,\r\n LocationAddress: action.LocationAddress,\r\n LocationAccountNumber: action.LocationAccountNumber\r\n }\r\n case actions.SET_QUICK_VIEW_LOCATION:\r\n // set in devices component in admin dashboard\r\n return {\r\n ...state,\r\n QuickViewLocationAccountNumber: action.QuickViewLocationAccountNumber\r\n }\r\n case actions.SERVICE_SELECTED:\r\n return {\r\n ...state,\r\n serviceLoading: true,\r\n ServiceNumber: action.ServiceNumber,\r\n PBXUserID: action.PBXUserID,\r\n Extension: action.Extension,\r\n SelectedUserId: action.SelectedUserId\r\n }\r\n case actions.SET_SERVICE:\r\n // set in services & users table when a service number is clicked\r\n return {\r\n ...state,\r\n serviceLoading: false,\r\n ServiceId: action.ServiceId,\r\n ServiceNumber: action.ServiceNumber,\r\n PBXUserID: action.PBXUserID,\r\n SelectedUserId: action.SelectedUserId,\r\n AccountNumber: action.AccountNumber,\r\n DirectoryNumber: action.DirectoryNumber,\r\n Extension: action.Extension,\r\n LocationAccountNumber: action.LocationAccountNumber,\r\n isSelectedServiceIpTrunking: action.isSelectedServiceIpTrunking ? action.isSelectedServiceIpTrunking : false\r\n }\r\n case actions.SERVICES_SET:\r\n return {\r\n ...state,\r\n serviceLoading: false\r\n }\r\n case actions.SERVICES_SET:\r\n return {\r\n ...state,\r\n serviceLoading: false\r\n }\r\n case actions.TOGGLE_SIDEBAR:\r\n // set in services & users table when a service number is clicked\r\n return {\r\n ...state,\r\n showSideBar: !state.showSideBar,\r\n }\r\n case actions.REDIRECT_BETA_ACCESS:\r\n return {\r\n ...state,\r\n beta_access_denied: true\r\n }\r\n\r\n case actions.RECEIVE_CUSTOM_IMAGE:\r\n return {\r\n ...state,\r\n customSmallLogo: action.customSmallLogo,\r\n customLargeLogo: action.customLargeLogo,\r\n }\r\n case actions.SET_CALL_LOGS_FILTER:\r\n return {\r\n ...state,\r\n cl_call_type: action.cl_call_type,\r\n cl_status_type: action.cl_status_type,\r\n cl_call_category: action.cl_call_category,\r\n cl_from_date: action.cl_from_date,\r\n cl_to_date: action.cl_to_date,\r\n cl_date_type: action.cl_date_type\r\n }\r\n case actions.SET_SUBSCRIBER_CALL_LOGS_FILTER:\r\n return {\r\n ...state,\r\n usercl_call_type: action.usercl_call_type,\r\n usercl_status_type: action.usercl_status_type,\r\n usercl_call_category: action.usercl_call_category,\r\n usercl_date_type: action.usercl_date_type,\r\n usercl_from_date: action.usercl_from_date,\r\n usercl_to_date: action.usercl_to_date\r\n }\r\n case actions.UI_SKINS_APPLIED:\r\n return {\r\n ...state,\r\n themes_loaded: true\r\n }\r\n case actions.SET_MSP_LOGIN_DATA:\r\n return {\r\n ...state,\r\n isMspLogin: true,\r\n mspLoginData: { ...action.data }\r\n }\r\n }\r\n\r\n return state;\r\n}\r\n\r\nexport default reducer;","import { combineReducers } from 'redux';\r\nimport reducer from './reducer';\r\nimport * as config from './../requests/config';\r\nimport * as actions from './../store/actions';\r\nimport jwtDecode from \"jwt-decode\";\r\n\r\nexport const reducers = combineReducers({ reducer });\r\n \r\nconst initialState = () => {\r\n return {\r\n }\r\n}\r\n\r\nexport const tokenRepo = (actionType = '', data = {}) => async dispatch => {\r\n try {\r\n \r\n switch(actionType)\r\n {\r\n case actions.UI_SKINS_APPLIED:\r\n dispatch({type: actions.UI_SKINS_APPLIED});\r\n case actions.SET_MSP_LOGIN_DATA:\r\n dispatch({ type: actions.SET_MSP_LOGIN_DATA, data: { ...data }});\r\n default:\r\n let TokenObj = sessionStorage.getItem('accessToken') ? sessionStorage.getItem('accessToken') : (localStorage.getItem('accessToken') ? localStorage.getItem('accessToken') : null);\r\n try\r\n {\r\n if (TokenObj !== null && TokenObj !== 'undefined') {\r\n\r\n let decodedToken = jwtDecode(TokenObj);\r\n let currentTime = new Date();\r\n let expirationOnCurrentToken = decodedToken.exp;\r\n const d = new Date(0);\r\n d.setUTCSeconds(expirationOnCurrentToken);\r\n if (currentTime > d) {\r\n dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: false});\r\n dispatch({type: actions.TOKEN_LOADED});\r\n }\r\n else {\r\n await dispatch({type: actions.UPDATE_TOKEN_STATUS, tokenIsValid: true});\r\n await config.tokenSaveUserProperties(TokenObj);\r\n }\r\n } else {\r\n dispatch({type: actions.TOKEN_LOADED})\r\n }\r\n } catch (ex) {\r\n console.log('tokenRepo error:' + ex);\r\n dispatch({type: actions.TOKEN_LOADED})\r\n }\r\n }\r\n } catch (error) {\r\n console.error('tokenRepo error: ' + error);\r\n dispatch({ type: actions.TOKEN_LOADED });\r\n }\r\n}","var map = {\n\t\"./DriveUC-UI-development\": [\n\t\t472,\n\t\t0\n\t],\n\t\"./DriveUC-UI-development.json\": [\n\t\t472,\n\t\t0\n\t],\n\t\"./DriveUC-UI-production\": [\n\t\t473,\n\t\t1\n\t],\n\t\"./DriveUC-UI-production.json\": [\n\t\t473,\n\t\t1\n\t],\n\t\"./DriveUC-UI-staging\": [\n\t\t474,\n\t\t2\n\t],\n\t\"./DriveUC-UI-staging.json\": [\n\t\t474,\n\t\t2\n\t],\n\t\"./MyDigitalServices-UI-development\": [\n\t\t475,\n\t\t3\n\t],\n\t\"./MyDigitalServices-UI-development.json\": [\n\t\t475,\n\t\t3\n\t],\n\t\"./MyDigitalServices-UI-production\": [\n\t\t476,\n\t\t4\n\t],\n\t\"./MyDigitalServices-UI-production.json\": [\n\t\t476,\n\t\t4\n\t],\n\t\"./MyDigitalServices-UI-staging\": [\n\t\t477,\n\t\t5\n\t],\n\t\"./MyDigitalServices-UI-staging.json\": [\n\t\t477,\n\t\t5\n\t],\n\t\"./Retail-CSS\": [\n\t\t478,\n\t\t6\n\t],\n\t\"./Retail-CSS.json\": [\n\t\t478,\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 = 221;\nmodule.exports = webpackAsyncContext;","import { store } from '../store/store';\r\nimport * as actions from './../store/actions';\r\nimport entries from 'object.entries';\r\nimport moment from 'moment';\r\nexport const searchDelay = 1000;\r\nexport const unauthorized = 401;\r\nexport const loginTimeout = 1000 * 30;\r\nexport const redirectTimeout = 1000 * 10;\r\nexport const noResultsMsg = 'No results for the search term provided.';\r\nexport const signInPageButtonLabel = process.env.REACT_APP_SIGNIN_PAGE_BTN_LABEL;\r\nexport const idleLogoutTime = 1000 * 60 * 20;\r\nexport const idleLogoutWarning = 1000 * 60;\r\n\r\nexport const saveLoginError = (errorMsg, errorDescription='') => {\r\n let actionParams = {\r\n loginError: errorMsg.toString(),\r\n loginErrorDescription: errorDescription.toString()\r\n }\r\n store.dispatch({type: actions.SAVE_LOGIN_ERROR, ...actionParams});\r\n saveToSessionStorage(actionParams);\r\n}\r\n\r\nexport const setLocation = (locationAccountNumber, locationAddress) => {\r\n let actionParams = {\r\n LocationAccountNumber: locationAccountNumber, \r\n LocationAddress: locationAddress,\r\n }\r\n store.dispatch({type: actions.SET_LOCATION, ...actionParams});\r\n saveToSessionStorage(actionParams);\r\n}\r\n\r\nexport const setQuickViewLocation = (locationAccountNumber) => {\r\n let actionParams = {\r\n QuickViewLocationAccountNumber: locationAccountNumber\r\n }\r\n //QUICK FIX FOR QUICK VIEW NOT LOADING BECAUSE OF VALUE IS ALREADY DISPATCH\r\n store.dispatch({type: actions.SET_QUICK_VIEW_LOCATION, ...{}});\r\n\r\n store.dispatch({type: actions.SET_QUICK_VIEW_LOCATION, ...actionParams});\r\n}\r\n\r\nexport const selectService = (userId, serviceNumber, pbxUserId = null, extension=null) => {\r\n // triggers call to MyServices to retrieve remaining service properties\r\n let actionParams = {SelectedUserId: userId, ServiceNumber: serviceNumber, PBXUserID: pbxUserId, Extension: extension};\r\n store.dispatch({type: actions.SERVICE_SELECTED, ...actionParams});\r\n saveToSessionStorage(actionParams);\r\n}\r\n\r\nexport const setService = (service) => {\r\n let actionParams = {};\r\n if (service) \r\n actionParams = {\r\n ServiceId: service.ServiceId,\r\n ServiceNumber: service.ServiceNumber, \r\n SelectedUserId: service.UserId,\r\n AccountNumber: service.LocationAccountNumber,\r\n DirectoryNumber:service.DirectoryNumber,\r\n PBXUserID: service.PBXUserID,\r\n Extension:service.Extension,\r\n isSelectedServiceIpTrunking: service.IsIPTrunking,\r\n //reset date filters on call logs when selected user/service changes\r\n usercl_call_type: \"1\",\r\n usercl_status_type: \"1\",\r\n usercl_call_category: \"1\",\r\n usercl_date_type: \"1\",\r\n usercl_from_date: moment(Date.now()).startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n usercl_to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\")\r\n };\r\n else\r\n actionParams = {\r\n ServiceId: 0,\r\n ServiceNumber: '', \r\n SelectedUserId: sessionStorage.SelectedUserId,\r\n AccountNumber: sessionStorage.userEnterpriseNumber,\r\n DirectoryNumber:'',\r\n PBXUserID: '',\r\n Extension: '',\r\n isSelectedServiceIpTrunking: false,\r\n //reset date filters on call logs when selected user/service changes\r\n usercl_call_type: \"1\",\r\n usercl_status_type: \"1\",\r\n usercl_call_category: \"1\",\r\n usercl_date_type: \"1\",\r\n usercl_from_date: moment(Date.now()).startOf(\"day\").format(\"YYYY-MM-DD\"),\r\n usercl_to_date: moment(Date.now()).endOf(\"day\").format(\"YYYY-MM-DD\")\r\n };\r\n saveToSessionStorage(actionParams);\r\n store.dispatch({type: actions.SET_SERVICE, ...actionParams});\r\n}\r\n\r\nexport const setCLFilters = (cl_call_type, cl_status_type, cl_call_category, cl_date_type, cl_from_date, cl_to_date, user = null) => {\r\n let actionParams = {};\r\n if (user)\r\n {\r\n actionParams = {\r\n usercl_call_type: cl_call_type,\r\n usercl_status_type: cl_status_type,\r\n usercl_call_category: cl_call_category,\r\n usercl_date_type: cl_date_type,\r\n usercl_from_date: cl_from_date,\r\n usercl_to_date: cl_to_date\r\n }\r\n store.dispatch({type: actions.SET_SUBSCRIBER_CALL_LOGS_FILTER, ...actionParams});\r\n saveToSessionStorage(actionParams);\r\n } else {\r\n actionParams = {\r\n cl_call_type: cl_call_type,\r\n cl_status_type: cl_status_type,\r\n cl_call_category: cl_call_category,\r\n cl_date_type: cl_date_type,\r\n cl_from_date: cl_from_date,\r\n cl_to_date: cl_to_date\r\n }\r\n store.dispatch({type: actions.SET_CALL_LOGS_FILTER, ...actionParams});\r\n saveToSessionStorage(actionParams);\r\n }\r\n}\r\n\r\nconst sameServiceSelected = (serviceNumber) => {\r\n return sessionStorage.ServiceNumber === serviceNumber\r\n}\r\n\r\nconst saveToSessionStorage = (actionParams) => {\r\n // save action params to local storage so they persist across page loads\r\n entries(actionParams).map(([key, value]) => {\r\n if (value === undefined || value === null) {\r\n sessionStorage.removeItem(key);\r\n } else {\r\n sessionStorage.setItem(key, value);\r\n }\r\n });\r\n}\r\n\r\nexport const setGlobalSearchValue = (value) => {\r\n let actionParams = {\r\n GlobalSearch: value\r\n }\r\n saveToSessionStorage(actionParams);\r\n}\r\n\r\nexport const getGlobalSearchValue = () => {\r\n return sessionStorage.getItem(\"GlobalSearch\");\r\n}","import * as config from \"./../requests/config\";\r\nimport * as settings from \"./settings\";\r\nimport * as helper from \"./helper\";\r\nimport jwtDecode from \"jwt-decode\";\r\n\r\nexport const loggedIn = () => {\r\n return sessionStorage.loggedIn ? true : null;\r\n};\r\n\r\nexport const storedAccessToken = () => sessionStorage.accessToken;\r\n\r\nexport const urlEncodedToken = () => {\r\n return encodeURI(sessionStorage.accessToken);\r\n}\r\n\r\nexport const getEnterpriseId = () => { return sessionStorage.userEnterpriseNumber; };\r\n\r\nexport const getExpirationForEmb = () => {\r\n let d = new Date(0);\r\n d.setUTCMilliseconds(sessionStorage.expiration * 1000);\r\n let month = d.getMonth();\r\n if (month === 12)\r\n month = 1;\r\n else\r\n month += 1;\r\n let minutes = d.getMinutes();\r\n if (minutes < 10)\r\n minutes = '0' + minutes.toString();\r\n let formattedDate = month.toString() + '/' + d.getDate() + \"/\" + d.getFullYear() + \" \" + d.getHours() + \":\" + minutes;\r\n return formattedDate; //may need to be URIEncoded too\r\n};\r\n\r\nexport const storedXPolicy = () => sessionStorage.xpolicy;\r\n\r\nexport const tokenIsValid = () => {\r\n //console.log('valid token check from ' + methodName);\r\n if (sessionStorage.accessToken) {\r\n\r\n let decodedToken = jwtDecode(sessionStorage.accessToken);\r\n let currentTime = new Date();\r\n let expirationOnCurrentToken = decodedToken.exp;\r\n const d = new Date(0);\r\n d.setUTCSeconds(expirationOnCurrentToken);\r\n\r\n if (currentTime > d) {\r\n sessionStorage.setItem('tokenIsValid', false);\r\n return false;\r\n }\r\n else if (sessionStorage.tokenIsValid) {\r\n return sessionStorage.tokenIsValid && sessionStorage.tokenIsValid.toString().toLowerCase() === 'true' ? true : false;\r\n }\r\n else {\r\n console.log('token is invalid because it is not in sessionStorage')\r\n return false;\r\n }\r\n }\r\n return false;\r\n\r\n}\r\n\r\nexport const isNewSession = () => helper.atLoginPath() && loggedIn();\r\n\r\nexport const isTestSession = () => helper.toBoolean(sessionStorage.testSession);\r\n\r\nexport const isRpxSession = () => helper.toBoolean(sessionStorage.RPXLogin);\r\n\r\nexport const storedUserType = () => sessionStorage.UserType;\r\n\r\nexport const IsWholesale = () => sessionStorage.IsWholesale === \"true\";\r\n\r\nexport const customLogoSmall = () => sessionStorage.customLogoSmall;\r\n\r\nexport const customLogoLarge = () => sessionStorage.customLogoLarge;\r\n\r\nexport const storedVendorId = () => sessionStorage.vendorId;\r\n\r\nexport const tokenUpdater = requestToken => {\r\n if (!sessionStorage.loggedIn) return false;\r\n if (requestToken) {\r\n if (isRpxSession()) {\r\n rpxTokenUpdater();\r\n } else {\r\n silenTokenUpdater();\r\n }\r\n }\r\n};\r\n\r\nexport const parsedUsername = () => {\r\n if (sessionStorage.username) return sessionStorage.username;\r\n //if (sessionStorage.username) {\r\n //return sessionStorage.username.split('@')[0];\r\n};\r\n\r\nexport const parsedEmulatedUser = () => {\r\n if (sessionStorage.username) return sessionStorage.emulatedUser;\r\n};\r\n\r\nexport const silenTokenUpdater = async () => {\r\n let rpxEmulation = sessionStorage.getItem('emulatedUser') ? true : false;\r\n await config.clientApp.acquireTokenSilent({\r\n scopes: config.b2cScopes,\r\n loginHint: sessionStorage.loggedUser,\r\n }).then(async (response) => {\r\n await config.storeToken(response.accessToken, rpxEmulation); // stores in sessionStorage\r\n }).catch(acquireTokenError => {\r\n // could also check if err instance of InteractionRequiredAuthError if you can import the class.\r\n try {\r\n config.clientApp.acquireTokenRedirect({\r\n scopes: config.b2cScopes,\r\n loginHint: sessionStorage.loggedUser,\r\n });\r\n } catch (error) {\r\n console.log(`A loging error occurred on the second attempt to acquire token: --> ${error}`);\r\n settings.saveLoginError(acquireTokenError);\r\n }\r\n });\r\n};\r\n\r\nexport const rpxTokenUpdater = () => {\r\n let body = JSON.stringify(sessionStorage.refreshToken);\r\n let auth =\r\n \"Basic \" +\r\n btoa(\r\n sessionStorage.emulatedUser + \":\" + process.env.REACT_APP_PRPX_BASIC_PWD\r\n );\r\n let url = config.baseApiUrl + \"auth/RefreshAzureToken\";\r\n //let localurl = \"https://localhost:44330/api/auth/RefreshAzureToken\";\r\n fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n Authorization: auth\r\n },\r\n body: body\r\n })\r\n .then(response => {\r\n if (response.ok) {\r\n response.json().then(json => {\r\n json.EmulatorUsername = sessionStorage.emulatedUser;\r\n config.storeRPXToken(json);\r\n });\r\n } else {\r\n }\r\n })\r\n .catch(message => {\r\n if (message.status === 401) {\r\n console.log(\"rpxTokenUpdater->error\");\r\n console.log(message.status);\r\n }\r\n\r\n logout();\r\n });\r\n};\r\n\r\nexport const logout = () => {\r\n let username = '';\r\n if (sessionStorage.username)\r\n username = sessionStorage.username;\r\n else if (sessionStorage.loginUserName)\r\n username = sessionStorage.loginUserName;\r\n\r\n let redirectUri = encodeURIComponent(window.location.protocol + \"//\" + window.location.host + \"/session\");\r\n\r\n if (username !== '')\r\n redirectUri += '?username=' + username;\r\n\r\n sessionStorage.clear();\r\n //institute something here to say i am logged out on this tab\r\n sessionStorage.setItem('loggingOut', true);\r\n //localStorage.removeItem('accessToken');\r\n //config.clientApp.logout();\r\n localStorage.clear();\r\n // setting xpolicy\r\n let object = {\r\n tenant:\r\n process.env.REACT_APP_ENVIRONMENT === \"development\"\r\n ? \"gomomentumdev.onmicrosoft.com\"\r\n : \"momentumbrain.onmicrosoft.com\",\r\n // policy: \"B2C_1_SignIn\",\r\n policy: storedXPolicy() === undefined ? process.env.REACT_APP_MSA_XPOLICY : storedXPolicy(),\r\n post_logout_redirect_uri: redirectUri,\r\n url: process.env.REACT_APP_ENVIRONMENT === \"development\"\r\n ? \"https://gomomentumdev.b2clogin.com/\"\r\n : \"https://momentumbrain.b2clogin.com/\"\r\n };\r\n let newLocation = object.url +\r\n object.tenant +\r\n \"/oauth2/logout?p=\" +\r\n object.policy +\r\n \"&post_logout_redirect_uri=\" +\r\n object.post_logout_redirect_uri;\r\n\r\n window.location = newLocation;\r\n};\r\n\r\n\r\nexport const transitionTimeout = () => {\r\n // prevents redirect page from getting hung\r\n setTimeout(() => {\r\n if (stillRedirecting()) {\r\n sessionStorage.removeItem(\"timer\");\r\n logout();\r\n }\r\n }, redirectTimer());\r\n};\r\n\r\nconst stillRedirecting = () => helper.toBoolean(sessionStorage.redirecting);\r\n\r\nconst redirectTimer = () => {\r\n if (window.location.href.indexOf(\"#state=\") !== -1) {\r\n // appended to url if redirected from MS login page\r\n async () => await sessionStorage.setItem(\"timer\", settings.loginTimeout);\r\n return settings.loginTimeout;\r\n } else {\r\n return sessionStorage.timer || settings.redirectTimeout;\r\n }\r\n};\r\n","export const UPDATE_TOKEN_STATUS = 'UPDATE_TOKEN_STATUS';\nexport const LOGIN_USER = 'LOGIN_USER';\nexport const RESTART_SESSION = 'RESTART_SESSION';\nexport const SAVE_LOGIN_ERROR = 'SAVE_LOGIN_ERROR';\nexport const REFRESH_TOKEN = 'REFRESH_TOKEN';\nexport const REDIRECTING = 'REDIRECTING';\nexport const SET_LOCATION = 'SET_LOCATION';\nexport const SET_QUICK_VIEW_LOCATION = 'SET_QUICK_VIEW_LOCATION';\nexport const SERVICE_SELECTED = 'SERVICE_SELECTED';\nexport const SET_SERVICE = 'SET_SERVICE';\nexport const SERVICES_SET = 'SERVICES_SET';\nexport const TOGGLE_SIDEBAR = 'TOGGLE_SIDEBAR';\nexport const REDIRECT_BETA_ACCESS = 'REDIRECT_BETA_ACCESS';\nexport const RECEIVE_TOKEN = 'RECEIVE_TOKEN';\nexport const TOKEN_LOADED = 'TOKEN_LOADED';\nexport const START_LOGIN = 'START_LOGIN';\nexport const PERMISSIONS_UPDATED = 'PERMISSIONS_UPDATED';\nexport const RECEIVE_CUSTOM_IMAGE = 'RECEIVE_CUSTOM_IMAGE';\nexport const SET_CALL_LOGS_FILTER = 'SET_CALL_LOGS_FILTER';\nexport const SET_SUBSCRIBER_CALL_LOGS_FILTER = 'SET_SUBSCRIBER_CALL_LOGS_FILTER';\nexport const UI_SKINS_APPLIED = 'UI_SKINS_APPLIED';\nexport const IP_TRUNKING_ONLY_SET = 'IP_TRUNKING_ONLY_SET';\nexport const SET_MSP_LOGIN_DATA = 'SET_MSP_LOGIN_DATA';\nexport const VALIDATE_MFA = 'VALIDATE_MFA';","import { applyMiddleware, createStore } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport { reducers } from './redux';\r\n\r\nexport function configureStore(initialState = {}) {\r\n const store = createStore(reducers, initialState, applyMiddleware(thunk));\r\n return store;\r\n }\r\n\r\nexport const store = configureStore();","import React, { Component } from \"react\";\r\nimport { DataLoadingSpinner } from \"../../components/spinners\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport \"@progress/kendo-theme-default/dist/all.css\";\r\nimport \"../../css/bootstrap.css\";\r\nimport \"../../css/app.css\";\r\nimport \"../../css/spinner.css\";\r\nimport \"../../css/msp_resetpassword.css\";\r\nimport * as helper from \"../../scripts/helper\";\r\nimport * as config from \"../../requests/config\";\r\nimport momentumLogoWhite from \"../../images/momentum_logo.png\";\r\nimport { connect } from \"react-redux\";\r\n\r\n\r\nconst Password1 = \"Password1\", Password2 = \"Password2\";\r\n\r\nclass ResetPassword extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n Email: '',\r\n Error: \"\",\r\n validationError: \"\",\r\n Logo: momentumLogoWhite,\r\n password1: '',\r\n password2: '',\r\n isNetworkError: false,\r\n isInvalidUser: true,\r\n isShowBackButton:false\r\n };\r\n }\r\n\r\n getCustomizations = async currentUrl => {\r\n const b2cResults = await helper.getB2CConfigResults(currentUrl);\r\n this.loadingLogo = helper.IsWholesaleDomain(currentUrl)\r\n ? this.loadingLogo\r\n : momentumLogoWhite;\r\n const customAuthPolicy = this.preProcessCustomizations(b2cResults);\r\n\r\n await this.setState({ auth: customAuthPolicy, loading: false });\r\n };\r\n\r\n preProcessCustomizations = b2cResults => {\r\n let customAuthPolicy = config.auth;\r\n if (b2cResults) {\r\n const authority =\r\n config.authorityUrl +\r\n b2cResults.B2CPolicy +\r\n config.defaultXPolicyConfig;\r\n customAuthPolicy = {\r\n clientId: b2cResults.B2CClientId,\r\n authority: authority,\r\n b2cScopes: []\r\n };\r\n const { LogoSmall, LogoLarge, VendorName, BrowserIcon } = b2cResults;\r\n this.loadingLogo = LogoLarge;\r\n helper.updateFavicon(BrowserIcon);\r\n if (!helper.isDigitalServicesDomain()) {\r\n helper.setTitle(VendorName);\r\n }\r\n }\r\n return customAuthPolicy;\r\n };\r\n\r\n componentDidMount() {\r\n // this.props.history.push(\"\\session\");\r\n const domain = helper.getDomain();\r\n this.getCustomizations(domain);\r\n }\r\n\r\n handleOnChange = (type, event) => {\r\n let state = { ...this.state };\r\n\r\n switch (type) {\r\n case Password1:\r\n state.password1 = event.target.value;\r\n break;\r\n case Password2:\r\n state.password2 = event.target.value;\r\n break;\r\n }\r\n if (state.password1.length > 0 && state.password1.length < 8) {\r\n state.valid = false;\r\n state.validMessage = 'Password must be at least 8 characters long';\r\n } else if (!this.ValidPassword(state.password1)) {\r\n state.valid = false;\r\n state.validMessage = 'The password must contain at least 1 number or special character, at least 1 lower case letter, and at least 1 upper case letter';\r\n }\r\n else if ((state.password1 && state.password2 && state.password1 !== state.password2) || (state.password1 && !state.password2) || (!state.password1 && state.password2)) {\r\n state.valid = false;\r\n state.validMessage = \"The password is not the same\";\r\n } else if (state.password1 && state.password2 && state.password1 === state.password2) {\r\n state.valid = true;\r\n state.validMessage = \"\";\r\n }\r\n this.setState(state);\r\n }\r\n\r\n ValidPassword = (pw) => {\r\n //var reg = /^.*(?=.{8,})(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).*/;\r\n var reg = /^.*(?=.{8,})(?=.*([\\d]|[!@#$%^&*{}_+=\\[\\]:;'\",<.>/?_`~\\\\\\|-]))(?=.*[a-z])(?=.*[A-Z]).*/;\r\n var test = reg.test(pw);\r\n return test;\r\n }\r\n decode = (value) => {\r\n let base64ToString = new Buffer.from(value, \"base64\").toString();\r\n return base64ToString;\r\n }\r\n handleOnBack = () => {\r\n helper.redirectToLogin();\r\n return;\r\n }\r\n\r\n handleOnSave = () => {\r\n if (!this.state.valid) {\r\n return;\r\n }\r\n else {\r\n let state = { ...this.state };\r\n state.savingLoading = true;\r\n state.savingShowSuccess = false;\r\n this.setState(state);\r\n //new Buffer.from(window.location.search.replace('?token=',''), \"base64\").toString().split(',')[2].replace('userName=','')\r\n var token = new URLSearchParams(window.location.search).get(\"token\");\r\n var decodedToken = this.decode(token);\r\n var userName = '';\r\n var params = decodedToken.split(',');\r\n for (var index = 0; index < params.length; index++) {\r\n if (params[index].startsWith('userName=')) {\r\n userName = params[index].replace('userName=', '');\r\n break;\r\n }\r\n }\r\n helper.ValidateResetPassword(window.location.href, state.password1, userName).then((response) => {\r\n if (response == null) {\r\n this.setState({ Error: \"Token link has expired.\", validationError: \"Please click Back to go to Login page.\",isShowBackButton:true });\r\n \r\n return;\r\n }\r\n else {\r\n this.setState({\r\n isNetworkError: false,\r\n });\r\n if (response) {\r\n var responseCode = parseInt(response);\r\n if (responseCode == 500) {\r\n this.setState({ Error: \"An internal server error has occurred.\", validationError: \"Please return to the Sign In page and try Forgot Password again. Contact your Administrator if the error persists.\" });\r\n return;\r\n }\r\n else if (responseCode == 401) {\r\n this.setState({ Error: \"The token cannot be decoded.\", validationError: \"Please check the url.\" });\r\n return;\r\n }\r\n else if (responseCode == 406) {\r\n this.setState({ Error: \"Token link has expired.\", validationError: \"Please click Back to go to Login page.\",isShowBackButton:true });\r\n return;\r\n }\r\n else {\r\n this.setState({ Error: \"\" });\r\n }\r\n }\r\n helper.redirectToLogin();\r\n return;\r\n }\r\n }).catch(async err => {\r\n console.log(err);\r\n this.setState({\r\n isNetworkError: Boolean(err.message),\r\n Error: \"Unable to reach server\",\r\n validationError: \"\"\r\n });\r\n });\r\n }\r\n }\r\n resetForm = () => {\r\n let state = this.state;\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n

    Reset Password

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

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

    \r\n

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

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

    {this.state.Error}

    \r\n

    {this.state.validationError}

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

    MFA Email Validation

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

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

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

    {this.state.Error}

    \r\n

    {this.state.validationError}

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

    {this.state.successMessage}

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